Skip to content

Commit f6ef65f

Browse files
authored
chromium-stable: bump to 108.0.5359.124 (#1)
[skip ci]
1 parent b0a3646 commit f6ef65f

File tree

7 files changed

+478
-0
lines changed

7 files changed

+478
-0
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
--- a/build/install-build-deps.sh
2+
+++ b/build/install-build-deps.sh
3+
@@ -395,6 +395,7 @@
4+
msttcorefonts
5+
python-dev
6+
python-setuptools
7+
+ snapcraft
8+
ttf-dejavu-core
9+
ttf-indic-fonts
10+
ttf-kochi-gothic
11+
@@ -580,9 +581,6 @@
12+
if package_exists libinput-dev; then
13+
dev_list="${dev_list} libinput-dev"
14+
fi
15+
-if package_exists snapcraft; then
16+
- dev_list="${dev_list} snapcraft"
17+
-fi
18+
19+
# Cross-toolchain strip is needed for building the sysroots.
20+
if package_exists binutils-arm-linux-gnueabihf; then
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
https://github.com/chromium/chromium/commit/9f43d823b6b4cdea62f0cc7563ff01f9239b8970
2+
3+
--- a/third_party/crc32c/BUILD.gn
4+
+++ b/third_party/crc32c/BUILD.gn
5+
@@ -122,6 +122,10 @@
6+
"-target-feature",
7+
"-Xclang",
8+
"+crypto",
9+
+ "-Xclang",
10+
+ "-target-feature",
11+
+ "-Xclang",
12+
+ "+aes",
13+
]
14+
} else {
15+
cflags = [ "-march=armv8-a+crc+crypto" ]
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
https://github.com//chromium/chromium/commit/42406b91d36d32a979dad47dd8f0e1974c81c1fa
2+
3+
--- a/build/config/compiler/BUILD.gn
4+
+++ b/build/config/compiler/BUILD.gn
5+
@@ -738,6 +738,12 @@ config("compiler") {
6+
ldflags += [ "-Wl,--no-rosegment" ]
7+
}
8+
9+
+ # TODO(crbug.com/1374347): Cleanup undefined symbol errors caught by
10+
+ # --no-undefined-version.
11+
+ if (use_lld && !is_win && !is_mac && !is_ios) {
12+
+ ldflags += [ "-Wl,--undefined-version" ]
13+
+ }
14+
+
15+
# LLD does call-graph-sorted binary layout by default when profile data is
16+
# present. On Android this increases binary size due to more thinks for long
17+
# jumps. Turn it off by default and enable selectively for targets where it's
Lines changed: 343 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,343 @@
1+
TERMUX_PKG_HOMEPAGE=https://www.chromium.org/Home
2+
TERMUX_PKG_DESCRIPTION="Chromium web browser"
3+
TERMUX_PKG_LICENSE="BSD 3-Clause"
4+
TERMUX_PKG_MAINTAINER="Chongyun Lee <[email protected]>"
5+
_CHROMIUM_VERSION=108.0.5359.124
6+
TERMUX_PKG_VERSION=$_CHROMIUM_VERSION
7+
TERMUX_PKG_SRCURL=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$_CHROMIUM_VERSION.tar.xz)
8+
TERMUX_PKG_SHA256=(d48dfac2a61b14a5d7d2f460b09b70ef3ab88e27b82e3173938cb54eaa612a75)
9+
TERMUX_PKG_DEPENDS="atk, cups, dbus, gtk3, krb5, libc++, libevdev, libxkbcommon, libminizip, libnss, libwayland, libx11, mesa, openssl, pango, pulseaudio, libdrm, libjpeg-turbo, libpng, libwebp, libflac, fontconfig, freetype, zlib, libxml2, libxslt, libopus, libsnappy"
10+
# TODO: Split chromium-common and chromium-headless
11+
# TERMUX_PKG_DEPENDS+=", chromium-common"
12+
# TERMUX_PKG_SUGGESTS="chromium-headless, chromium-driver"
13+
TERMUX_PKG_SUGGESTS="qt5-qtbase"
14+
TERMUX_PKG_BUILD_DEPENDS="qt5-qtbase, qt5-qtbase-cross-tools"
15+
# Chromium doesn't support i686 on Linux.
16+
TERMUX_PKG_BLACKLISTED_ARCHES="i686"
17+
18+
SYSTEM_LIBRARIES=" libdrm fontconfig"
19+
# TERMUX_PKG_DEPENDS="libdrm, fontconfig"
20+
21+
termux_step_post_get_source() {
22+
python $TERMUX_SCRIPTDIR/common-files/apply-chromium-patches.py -v $_CHROMIUM_VERSION
23+
24+
python3 build/linux/unbundle/replace_gn_files.py --system-libraries \
25+
$SYSTEM_LIBRARIES
26+
python3 third_party/libaddressinput/chromium/tools/update-strings.py
27+
}
28+
29+
termux_step_configure() {
30+
cd $TERMUX_PKG_SRCDIR
31+
termux_setup_ninja
32+
termux_setup_nodejs
33+
34+
# Fetch depot_tools
35+
export DEPOT_TOOLS_UPDATE=0
36+
if [ ! -f "$TERMUX_PKG_CACHEDIR/.depot_tools-fetched" ];then
37+
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git $TERMUX_PKG_CACHEDIR/depot_tools
38+
touch "$TERMUX_PKG_CACHEDIR/.depot_tools-fetched"
39+
fi
40+
export PATH="$TERMUX_PKG_CACHEDIR/depot_tools:$PATH"
41+
42+
################################################################
43+
# Please dont use these keys outside of Termux User Repository #
44+
# You can create your own at: #
45+
# http://www.chromium.org/developers/how-tos/api-keys #
46+
################################################################
47+
local _google_api_key _google_default_client_id _google_default_client_secret
48+
eval "$(base64 -d < $TERMUX_PKG_BUILDER_DIR/google-api-keys.base64enc)"
49+
50+
# Remove termux's dummy pkg-config
51+
local _target_pkg_config=$(command -v pkg-config)
52+
local _host_pkg_config="$(cat $_target_pkg_config | grep exec | awk '{print $2}')"
53+
rm -rf $TERMUX_PKG_TMPDIR/host-pkg-config-bin
54+
mkdir -p $TERMUX_PKG_TMPDIR/host-pkg-config-bin
55+
ln -s $_host_pkg_config $TERMUX_PKG_TMPDIR/host-pkg-config-bin/pkg-config
56+
export PATH="$TERMUX_PKG_TMPDIR/host-pkg-config-bin:$PATH"
57+
58+
# For qt build
59+
export PATH="$TERMUX_PREFIX/opt/qt/cross/bin:$PATH"
60+
61+
# Install amd64 rootfs and deps
62+
env -i PATH="$PATH" sudo apt update
63+
env -i PATH="$PATH" sudo apt install lsb-release -yq
64+
env -i PATH="$PATH" sudo apt install libfontconfig1 libffi7 -yq
65+
env -i PATH="$PATH" sudo ./build/install-build-deps.sh --no-syms --no-arm --no-chromeos-fonts --no-nacl --no-prompt --unsupported
66+
build/linux/sysroot_scripts/install-sysroot.py --arch=amd64
67+
local _amd64_sysroot_path="$(pwd)/build/linux/$(ls build/linux | grep 'amd64-sysroot')"
68+
69+
# Link to system tools required by the build
70+
mkdir -p third_party/node/linux/node-linux-x64/bin
71+
ln -sf $(command -v node) third_party/node/linux/node-linux-x64/bin/
72+
ln -sf $(command -v java) third_party/jdk/current/bin/
73+
74+
# Dummy librt.so
75+
# Why not dummy a librt.a? Some of the binaries reference symbols only exists in Android
76+
# for some reason, such as the `chrome_crashpad_handler`, which needs to link with
77+
# libprotobuf_lite.a, but it is hard to remove the usage of `android/log.h` in protobuf.
78+
echo "INPUT(-llog -liconv -landroid-shmem)" > "$TERMUX_PREFIX/lib/librt.so"
79+
80+
# Dummy libpthread.a and libresolv.a
81+
echo '!<arch>' > "$TERMUX_PREFIX/lib/libpthread.a"
82+
echo '!<arch>' > "$TERMUX_PREFIX/lib/libresolv.a"
83+
84+
# Symlink libffi.a to libffi_pic.a
85+
ln -sfr $TERMUX_PREFIX/lib/libffi.a $TERMUX_PREFIX/lib/libffi_pic.a
86+
87+
# Merge sysroots
88+
rm -rf $TERMUX_PKG_TMPDIR/sysroot
89+
mkdir -p $TERMUX_PKG_TMPDIR/sysroot
90+
pushd $TERMUX_PKG_TMPDIR/sysroot
91+
mkdir -p usr/include usr/lib usr/bin
92+
cp -R $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include/* usr/include
93+
cp -R $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/include/$TERMUX_HOST_PLATFORM/* usr/include
94+
cp -R $TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/$TERMUX_PKG_API_LEVEL/* usr/lib/
95+
cp "$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libc++_shared.so" usr/lib/
96+
cp "$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libc++_static.a" usr/lib/
97+
cp "$TERMUX_STANDALONE_TOOLCHAIN/sysroot/usr/lib/$TERMUX_HOST_PLATFORM/libc++abi.a" usr/lib/
98+
cp -Rf $TERMUX_PREFIX/include/* usr/include
99+
cp -Rf $TERMUX_PREFIX/lib/* usr/lib
100+
ln -sf /data ./data
101+
# This is needed to build crashpad
102+
rm -rf $TERMUX_PREFIX/include/spawn.h
103+
# This is needed to build cups
104+
cp -Rf $TERMUX_PREFIX/bin/cups-config usr/bin/
105+
chmod +x usr/bin/cups-config
106+
popd
107+
108+
# Construct args
109+
local _clang_base_path="/usr/lib/llvm-16"
110+
local _host_cc="$_clang_base_path/bin/clang"
111+
local _host_cxx="$_clang_base_path/bin/clang++"
112+
local _target_cpu _target_sysroot="$TERMUX_PKG_TMPDIR/sysroot"
113+
local _v8_toolchain_name _v8_current_cpu _v8_sysroot_path
114+
if [ "$TERMUX_ARCH" = "aarch64" ]; then
115+
_target_cpu="arm64"
116+
_v8_current_cpu="x64"
117+
_v8_sysroot_path="$_amd64_sysroot_path"
118+
_v8_toolchain_name="clang_x64_v8_arm64"
119+
elif [ "$TERMUX_ARCH" = "arm" ]; then
120+
# Install i386 rootfs and deps
121+
env -i PATH="$PATH" sudo apt install libfontconfig1:i386 libffi7:i386 -yq
122+
env -i PATH="$PATH" sudo ./build/install-build-deps.sh --lib32 --no-syms --no-arm --no-chromeos-fonts --no-nacl --no-prompt --unsupported
123+
build/linux/sysroot_scripts/install-sysroot.py --arch=i386
124+
local _i386_sysroot_path="$(pwd)/build/linux/$(ls build/linux | grep 'i386-sysroot')"
125+
_target_cpu="arm"
126+
_v8_current_cpu="x86"
127+
_v8_sysroot_path="$_i386_sysroot_path"
128+
_v8_toolchain_name="clang_x86_v8_arm"
129+
elif [ "$TERMUX_ARCH" = "x86_64" ]; then
130+
_target_cpu="x64"
131+
_v8_current_cpu="x64"
132+
_v8_sysroot_path="$_amd64_sysroot_path"
133+
_v8_toolchain_name="clang_x64"
134+
fi
135+
136+
local _common_args_file=$TERMUX_PKG_TMPDIR/common-args-file
137+
rm -f $_common_args_file
138+
touch $_common_args_file
139+
140+
echo "
141+
# Set google key to disable the warning slogan
142+
# Please DO NOT USE THIS KEY OUTSIDE OF TUR!
143+
google_api_key = \"$_google_api_key\"
144+
google_default_client_id = \"$_google_default_client_id\"
145+
google_default_client_secret = \"$_google_default_client_secret\"
146+
# Do official build to decrease file size
147+
is_official_build = true
148+
is_debug = false
149+
symbol_level = 0
150+
# Use our custom toolchain
151+
use_sysroot = false
152+
target_cpu = \"$_target_cpu\"
153+
target_rpath = \"$TERMUX_PREFIX/lib\"
154+
target_sysroot = \"$_target_sysroot\"
155+
clang_base_path = \"$_clang_base_path\"
156+
custom_toolchain = \"//build/toolchain/linux/unbundle:default\"
157+
host_toolchain = \"$TERMUX_PKG_CACHEDIR/custom-toolchain:host\"
158+
v8_snapshot_toolchain = \"$TERMUX_PKG_CACHEDIR/custom-toolchain:$_v8_toolchain_name\"
159+
clang_use_chrome_plugins = false
160+
dcheck_always_on = false
161+
chrome_pgo_phase = 0
162+
treat_warnings_as_errors = false
163+
# Use system libraries as little as possible
164+
use_system_freetype = false
165+
use_system_libdrm = true
166+
use_system_libffi = true
167+
use_custom_libcxx = false
168+
use_allocator_shim = false
169+
use_allocator = \"none\"
170+
use_nss_certs = true
171+
use_nss_certs = true
172+
use_udev = false
173+
use_ozone = true
174+
ozone_auto_platforms = false
175+
ozone_platform = \"x11\"
176+
ozone_platform_x11 = true
177+
ozone_platform_wayland = true
178+
ozone_platform_headless = true
179+
angle_enable_vulkan = true
180+
angle_enable_swiftshader = true
181+
angle_enable_abseil = false
182+
# Use Chrome-branded ffmpeg for more codecs
183+
is_component_ffmpeg = true
184+
ffmpeg_branding = \"Chrome\"
185+
proprietary_codecs = true
186+
use_gnome_keyring = false
187+
use_qt = true
188+
use_libpci = false
189+
use_alsa = false
190+
use_pulseaudio = true
191+
rtc_use_pipewire = false
192+
use_vaapi_x11 = false
193+
# See comments below
194+
enable_nacl = false
195+
# Host compiler (clang-13) doesn't support LTO well
196+
is_cfi = false
197+
use_cfi_icall = false
198+
use_thin_lto = false
199+
" > $_common_args_file
200+
201+
if [ "$TERMUX_ARCH" = "arm" ]; then
202+
echo "arm_arch = \"armv7-a\"" >> $_common_args_file
203+
echo "arm_float_abi = \"softfp\"" >> $_common_args_file
204+
fi
205+
206+
# Use custom toolchain
207+
mkdir -p $TERMUX_PKG_CACHEDIR/custom-toolchain
208+
cp -f $TERMUX_PKG_BUILDER_DIR/toolchain.gn.in $TERMUX_PKG_CACHEDIR/custom-toolchain/BUILD.gn
209+
sed -i "s|@HOST_CC@|$_host_cc|g
210+
s|@HOST_CXX@|$_host_cxx|g
211+
s|@HOST_LD@|$_host_cxx|g
212+
s|@HOST_AR@|$(command -v llvm-ar)|g
213+
s|@HOST_NM@|$(command -v llvm-nm)|g
214+
s|@HOST_IS_CLANG@|true|g
215+
s|@HOST_USE_GOLD@|false|g
216+
s|@HOST_SYSROOT@|$_amd64_sysroot_path|g
217+
" $TERMUX_PKG_CACHEDIR/custom-toolchain/BUILD.gn
218+
sed -i "s|@V8_CC@|$_host_cc|g
219+
s|@V8_CXX@|$_host_cxx|g
220+
s|@V8_LD@|$_host_cxx|g
221+
s|@V8_AR@|$(command -v llvm-ar)|g
222+
s|@V8_NM@|$(command -v llvm-nm)|g
223+
s|@V8_TOOLCHAIN_NAME@|$_v8_toolchain_name|g
224+
s|@V8_CURRENT_CPU@|$_v8_current_cpu|g
225+
s|@V8_V8_CURRENT_CPU@|$_target_cpu|g
226+
s|@V8_IS_CLANG@|true|g
227+
s|@V8_USE_GOLD@|false|g
228+
s|@V8_SYSROOT@|$_v8_sysroot_path|g
229+
" $TERMUX_PKG_CACHEDIR/custom-toolchain/BUILD.gn
230+
231+
mkdir -p $TERMUX_PKG_BUILDDIR/out/Release
232+
cat $_common_args_file > $TERMUX_PKG_BUILDDIR/out/Release/args.gn
233+
gn gen $TERMUX_PKG_BUILDDIR/out/Release --export-compile-commands
234+
}
235+
236+
termux_step_make() {
237+
cd $TERMUX_PKG_BUILDDIR
238+
ninja -C out/Release chromedriver chrome chrome_crashpad_handler headless_shell -k 0 || bash
239+
}
240+
241+
termux_step_make_install() {
242+
cd $TERMUX_PKG_BUILDDIR
243+
mkdir -p $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME
244+
245+
local normal_files=(
246+
# Binary files
247+
chrome
248+
chrome_crashpad_handler
249+
headless_shell
250+
chromedriver
251+
generate_colors_info
252+
253+
# Resource files
254+
chrome_100_percent.pak
255+
chrome_200_percent.pak
256+
headless_lib_data.pak
257+
headless_lib_strings.pak
258+
resources.pak
259+
260+
# V8 Snapshot data
261+
snapshot_blob.bin
262+
v8_context_snapshot.bin
263+
264+
# ICU Data
265+
icudtl.dat
266+
267+
# Logo
268+
product_logo_48.png
269+
270+
# Scripts
271+
chrome-wrapper
272+
xdg-mime
273+
xdg-settings
274+
275+
# Angle
276+
libEGL.so
277+
libGLESv2.so
278+
279+
# Vulkan
280+
libvulkan.so.1
281+
libVkICD_mock_icd.so
282+
libvk_swiftshader.so
283+
libVkLayer_khronos_validation.so
284+
vk_swiftshader_icd.json
285+
286+
# FFmpeg
287+
libffmpeg.so
288+
289+
# Qt
290+
libqt5_shim.so
291+
)
292+
293+
cp "${normal_files[@]/#/out/Release/}" "$TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/"
294+
295+
cp -Rf out/Release/angledata $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/
296+
cp -Rf out/Release/locales $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/
297+
cp -Rf out/Release/MEIPreload $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/
298+
cp -Rf out/Release/resources $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/
299+
300+
sed "s|@TERMUX_PREFIX@|$TERMUX_PREFIX|g" \
301+
$TERMUX_PKG_BUILDER_DIR/chromium-launcher.sh.in > $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/chromium-launcher.sh
302+
chmod +x $TERMUX_PREFIX/opt/$TERMUX_PKG_NAME/chromium-launcher.sh
303+
}
304+
305+
termux_step_post_make_install() {
306+
# Remove the dummy files
307+
rm $TERMUX_PREFIX/lib/lib{{pthread,resolv,ffi_pic}.a,rt.so}
308+
}
309+
310+
termux_step_post_massage() {
311+
# Except the deb file, we also create a zip file like chromium release
312+
mkdir -p $TERMUX_SCRIPTDIR/output-chromium
313+
314+
pushd $TERMUX_PKG_MASSAGEDIR/$TERMUX_PREFIX/opt/$TERMUX_PKG_NAME
315+
zip -r $TERMUX_SCRIPTDIR/output-chromium/chromium-v$TERMUX_PKG_VERSION-linux-$TERMUX_ARCH.zip ./*
316+
popd
317+
}
318+
# TODO:
319+
# (2) Split packages
320+
321+
# ######################### About system libraries ############################
322+
# We only pick up a few libraries to let chromium link against. Others may
323+
# contain linking error due to the version mismatch between Google-provided
324+
# sysroot and Termux.
325+
# Name in Chromium | libdrm fontconfig
326+
# Name in Termux | libdrm fontconfig
327+
#
328+
# #############################################################################
329+
330+
# ######################### About Native Client ###############################
331+
# When set `enable_nacl = true`, the following error occurs.
332+
# ninja: error: 'native_client/toolchain/linux_x86/pnacl_newlib/bin/arm-nacl-objcopy', needed by 'nacl_irt_arm.nexe', missing and no known rule to make it.
333+
# If we want to enable NaCi, maybe we should build the toolchain of NaCl too.
334+
# But I don't think this is necessary. NaCl existing or not will take little
335+
# influence on Chromium. So I'd like to disable NaCl.
336+
# #############################################################################
337+
338+
# ############################ About Sandbox ##################################
339+
# First, setuid-sandbox is never usable on Termux, beacuse setuid syscall is
340+
# disabled by Android's SELinux. Second, lots of patches are needed to let
341+
# seccomp-bpf sandbox work properly on Android. I've tried many times but I
342+
# can't make it. If your are willing to work on this, feel free to submit a PR.
343+
# #############################################################################

0 commit comments

Comments
 (0)