# Contributor: Carlo Landmeter # Maintainer: Natanael Copa pkgname=chromium pkgver=86.0.4240.111 pkgrel=0 pkgdesc="Chromium web browser" url="https://www.chromium.org/Home" arch="x86_64 aarch64" # x86: ./v8_context_snapshot_generator segfaults # armv7: /usr/bin/ld: final link failed: memory exhausted when linking chrome license="BSD-3-Clause" depends="xdg-utils" makedepends=" alsa-lib-dev pulseaudio-dev bash binutils-gold bison flex bsd-compat-headers bzip2-dev cairo-dev clang-dev cups-dev dbus-glib-dev elfutils-dev eudev-dev ffmpeg-dev findutils flac-dev freetype-dev gnutls-dev gperf gtk+3.0-dev gzip harfbuzz-dev hunspell-dev hwids-usb jpeg-dev jsoncpp-dev krb5-dev libbsd-dev libcap-dev libevent-dev libexif-dev libgcrypt-dev libgnome-keyring-dev libjpeg-turbo-dev libpng-dev libusb-dev libva-dev libwebp-dev libxcomposite-dev libxcursor-dev libxinerama-dev libxml2-dev libxrandr-dev libxscrnsaver-dev libxslt-dev linux-headers mesa-dev minizip-dev ninja nodejs nss-dev openjdk8 opus-dev pciutils-dev perl python2 re2-dev snappy-dev speex-dev sqlite-dev xcb-proto xdg-utils zlib-dev py2-setuptools " # explicit depends for --headless depends="eudev-libs ttf-opensans" options="suid" subpackages="$pkgname-chromedriver" source="https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz pstables-2.8.h::https://git.savannah.gnu.org/cgit/freetype/freetype2.git/plain/src/psnames/pstables.h?h=VER-2-8 chromium-launcher.sh chromium.conf chromium.desktop google-api.keys default-pthread-stacksize.patch musl-fixes.patch musl-fixes-breakpad.patch musl-hacks.patch musl-libc++.patch musl-sandbox.patch no-execinfo.patch no-mallinfo.patch resolver.patch swiftshader.patch create-extra-view-redefinition.patch chromium-use-alpine-target.patch media-base.patch musl-crashpad.patch musl-v8-monotonic-pthread-cont_timedwait.patch nasm.patch gcc-fno-delete-null-pointer-checks.patch gcc-arm.patch aarch64-fixes.patch elf-arm.patch chromium-size_t-defined.patch check-for-enable-accelerated-video-decode-on-Linux.patch fix-invalid-end-iterator-usage-in-CookieMonster.patch only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch remove-dead-reloc-in-nonalloc-LD-flags.patch xproto-fix-underflow-in-Fp1616ToDouble.patch " # secfixes: # 83.0.4103.116-r0: # - CVE-2020-6505 # - CVE-2020-6506 # - CVE-2020-6507 # - CVE-2020-6509 # 72.0.3626.121-r0: # - CVE-2019-5786 if [ -n "$DEBUG" ]; then _buildtype=Debug _is_debug=true else _buildtype=Release _is_debug=false fi prepare() { patch_args="-p0" default_prepare # https://groups.google.com/a/chromium.org/d/topic/chromium-packagers/9JX1N2nf4PU/discussion touch chrome/test/data/webui/i18n_process_css_test.html # Use the file at run time instead of effectively compiling it in sed 's|//third_party/usb_ids/usb.ids|/usr/share/hwdata/usb.ids|g' \ -i services/device/public/cpp/usb/BUILD.gn mkdir -p third_party/node/linux/node-linux-x64/bin ln -s /usr/bin/node third_party/node/linux/node-linux-x64/bin/ # reusable system library settings local use_system=" ffmpeg flac fontconfig freetype harfbuzz-ng libdrm libevent libjpeg libpng libwebp libxml libxslt opus re2 snappy " for _lib in $use_system libjpeg_turbo; do msg "Removing buildscripts for system provided $_lib" find -type f -path "*third_party/$_lib/*" \ \! -path "*third_party/$_lib/chromium/*" \ \! -path "*third_party/$_lib/google/*" \ \! -path './base/third_party/icu/*' \ \! -path './third_party/libxml/*' \ \! -path './third_party/pdfium/third_party/freetype/include/pstables.h' \ \! -path './third_party/harfbuzz-ng/utils/hb_scoped.h' \ \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ -delete done msg "Replacing gn files" python2 build/linux/unbundle/replace_gn_files.py --system-libraries \ $use_system third_party/libaddressinput/chromium/tools/update-strings.py } _gn_flags() { echo $* } build() { ############################################################## # Please dont use these keys outside of Alpine Linux project # # You can create your own at: # # http://www.chromium.org/developers/how-tos/api-keys # ############################################################## eval "$(base64 -d < $srcdir/google-api.keys)" msg "Bootstrapping GN" local _c=$(_gn_flags is_clang=true \ use_sysroot=false \ treat_warnings_as_errors=false \ fatal_linker_warnings=false \ use_custom_libcxx=false \ use_gold=false \ use_allocator=\"none\" \ use_allocator_shim=false \ use_vaapi=true \ ) # AR="ar" CC="${CC:-gcc}" CXX="${CXX:-g++}" LD="${CXX:-g++}" \ CC="${CC:-clang}" CXX="${CXX:-clang++}" LD="${CXX:-clang++}" \ python2 tools/gn/bootstrap/bootstrap.py -s -v --gn-gen-args "$_c" msg "Configuring build" _c=$(_gn_flags \ blink_symbol_level=0 \ clang_use_chrome_plugins=false \ closure_compile=true \ custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \ enable_hangout_services_extension=true \ enable_nacl_nonsfi=false \ enable_nacl=false \ enable_precompiled_headers=false \ fatal_linker_warnings=false \ ffmpeg_branding=\"Chrome\" \ fieldtrial_testing_like_official_build=true \ gold_path=\"/usr/bin/ld.gold\" \ google_api_key=\"$_google_api_key\" \ google_default_client_id=\"$_google_default_client_id\" \ google_default_client_secret=\"$_google_default_client_secret\" \ host_toolchain=\"//build/toolchain/linux/unbundle:default\" \ icu_use_data_file=true \ is_clang=true \ is_component_build=false \ is_debug=$_is_debug \ is_desktop_linux=true \ linux_use_bundled_binutils=false \ proprietary_codecs=true \ symbol_level=0 \ treat_warnings_as_errors=false \ use_allocator_shim=false \ use_allocator=\"none\" \ use_cups=true \ use_custom_libcxx=false \ use_gnome_keyring=false \ use_gold=false \ use_lld=false \ use_pulseaudio=true \ use_sysroot=false \ use_system_harfbuzz=true \ ) AR="ar" CC="clang" CXX="clang++" LD="clang++" NM=/usr/bin/nm \ out/Release/gn gen out/$_buildtype --args="$_c $_ca" # Make xcbgen available to ui/gfx/x/gen_xproto.py running under Python 2 ln -sf /usr/lib/python3.*/site-packages/xcbgen . export PYTHONPATH="$PWD" msg "Ninja turtles GO!" # build mksnapshot ninja -j ${JOBS} -C out/$_buildtype mksnapshot ninja -j ${JOBS} -C out/$_buildtype v8_context_snapshot_generator if [ "$CARCH" = "x86" ]; then # x86 only - dependency issues compiling obj/chrome/browser/devtools/devtools/cast_handler.o ninja -j ${JOBS} -C out/$_buildtype obj/chrome/common/media_router/mojom/media_router__generator.stamp fi # final link needs lots of file descriptors ulimit -n 2048 # finish rest of the build ninja -j ${JOBS} -C out/$_buildtype chrome chrome_sandbox chromedriver } package() { cd out/$_buildtype local bin pak for bin in chrome chromedriver *.bin; do install -Dm755 $bin "$pkgdir"/usr/lib/$pkgname/$bin done install -Dm755 swiftshader/libEGL.so "$pkgdir"/usr/lib/$pkgname/swiftshader/libEGL.so install -Dm755 swiftshader/libGLESv2.so "$pkgdir"/usr/lib/$pkgname/swiftshader/libGLESv2.so install -Dm4755 chrome_sandbox "$pkgdir"/usr/lib/$pkgname/chrome-sandbox install -m644 icudtl.dat "$pkgdir"/usr/lib/$pkgname/icudtl.dat install -Dm755 xdg-mime "$pkgdir"/usr/lib/$pkgname/xdg-mime install -Dm755 xdg-settings "$pkgdir"/usr/lib/$pkgname/xdg-settings for pak in *.pak; do install -Dm644 $pak "$pkgdir"/usr/lib/$pkgname/$pak done install -Dm755 "$srcdir"/chromium-launcher.sh \ "$pkgdir"/usr/lib/$pkgname/chromium-launcher.sh cp -a locales "$pkgdir"/usr/lib/$pkgname/ cp -a MEIPreload "$pkgdir"/usr/lib/$pkgname/ # It is important that we name the target "chromium-browser", # xdg-utils expect it; bug #355517. mkdir -p "$pkgdir"/usr/bin cd "$pkgdir"/usr/bin ln -sf /usr/lib/$pkgname/chromium-launcher.sh chromium-browser ln -sf /usr/lib/$pkgname/chromedriver "$pkgdir"/usr/bin/ install -Dm644 "$srcdir"/chromium.conf \ "$pkgdir"/etc/chromium/chromium.conf install -Dm644 "$srcdir"/chromium.desktop \ "$pkgdir"/usr/share/applications/chromium.desktop cd "$builddir" for size in 24 48 64 128 256; do install -Dm644 "chrome/app/theme/chromium/product_logo_$size.png" \ "$pkgdir/usr/share/icons/hicolor/"$size"x"$size"/apps/chromium.png" done for size in 16 32; do install -Dm644 "chrome/app/theme/default_100_percent/chromium/product_logo_$size.png" \ "$pkgdir/usr/share/icons/hicolor/"$size"x"$size"/apps/chromium.png" done } chromedriver() { pkgdesc="WebDriver driver for the Chromium Browser" mkdir -p "$subpkgdir"/usr/lib/$pkgname "$subpkgdir"/usr/bin mv "$pkgdir"/usr/lib/$pkgname/chromedriver \ "$subpkgdir"/usr/lib/$pkgname/ mv "$pkgdir"/usr/bin/chromedriver "$subpkgdir"/usr/bin } sha512sums="809bcab82c44976f109f0db0ce0470f88893a0999596b057e82675093f8fa0fc0badae4431a9160b4e94ae09219fa01914cad4b3143cebc530c71d420e7add54 chromium-86.0.4240.111.tar.xz a3bb959c65944ae2fb765725cedcffd743a58bc0c2cd1f1999d15fe79801d00f3474b08b4ed7b48859ed921eb57093d0ad09d90f201d729ed9b8a419a591ed29 pstables-2.8.h b9a810416dd7a8ffc3a5ced85ad9acebda1665bd08a57eec7b189698cc5f74d2c3fd69044e20fcb83297a43214b2772a1312b2c6122ea0eb716abacf39524d60 chromium-launcher.sh f6d962b9e4c22dd42183df3db5d3202dab33eccecafb1bf63ca678147289581262db1e5e64cbe8f9c212beefb0a6717bb8d311e497f56b55fe95b8bab2db493f chromium.conf e182c998a43d22d1c76a86c561619afd1fca8c2be668265ad5e2f81a3806f7a154272cc027a2f8b370fb69446892c69e5967a4be76082325c14245ee7915234c chromium.desktop 2d8237a940ea691bd10b08315429677a587f7ef9692a0cca53bfd066eae82998a6c71f402a8669e9de39f94d7f3280745d1628ea6eac5d76ca7116844d4e0dac google-api.keys b726ef2ecfe7d471e60d67de1e05847d214df6093b41bb2055652a9028327af19a8b10e7175467240f4dfec9e3ae97a6c4666bfd2cd6cb436c54656a085653ae default-pthread-stacksize.patch 4620f7515717eb185339af1f52f40e5c6ccd15b9162986517eb5cf3cbaf29740134f520997e2a1337ea51fd69dc0354b297f6cc4d1555ed546ffdc1dbcb51f5c musl-fixes.patch e8675aff9fccd8b58cc839ef1d9e0e022d66aa94f72baa72e7acf92ceb2691f6a7907cc60ec3a87f894efdd639a3dec7fe702c97d446fcdea99452caec57e002 musl-fixes-breakpad.patch ddacc7ab0374eaa110a392c9d0912c250eb102f060cac284b170902fa9358f8670cbe26676582208d1291662058761e31795ebac75115b38a1e3ad8681895b38 musl-hacks.patch 919f13a2cd65673f267321cf95c5410e65bc5264d6704d0791b25d39111282bedb425bd9824dde3b67422cfb874c86a9383ded686e39cfd4aac239edaf41cfc8 musl-libc++.patch ef43fa90b05e2407b6daa822193121cdeef6ee9068175572f0928f156f186be9c77539dfa06863adfaa25afd498ec1b5081f9e476543616f9472b9033fd921dc musl-sandbox.patch 129ec746fd951ee6d0bf0b4389b7c988523870507de1f92f5706f4eb49039d4a49ed30e92b0634e3ae521fc3e129adc1c6edc7435922fc91658d8c087520c707 no-execinfo.patch 06d6b4c466fa48f2d22c338e20458d8fa50bbbf744468f41bc3c1892e739002b1fbc5c133a37252cec4ff4f804847add6b9c0cc1f84fb276939471c09e467fb6 no-mallinfo.patch f60c89076bbc458e2e38d9dad26027f9604179fd59e0c2b988a86340b9ef78a4c346c84ac3e7e4e70badaff69d71edf49d7b9030e5fadb96afde4f977a98c412 resolver.patch f4265df7532625070c51ac43466e3e0f21e696f90c3b6040ef62a21defa7666203ff8219d9c9a5bebc011024aff300fbcbd941cebd0df59c4bc068d8f290221e swiftshader.patch 5b88c065819a44684ceea87239320f8120cfde0dc2f6dd739a007488dea6608c11584c56f3876a062641c9ca6fa82f43877c547ad470766aec31f5151bb2bdc1 create-extra-view-redefinition.patch cf9970ef403ff7a68bf08c0ba5e681eec459fcb1afb6859e5a80f4874f1b9a656377b4540eeb5208ddec570efa206f147e32718c687fa29ca3acc4fde6e8cbe8 chromium-use-alpine-target.patch 599f5ef338b5797e04436bdc88921c31365d2dea2613d40053be6e774f654e2889efb0c0bd55c2c5044a6805510fbc337da555971169a75d584fac93e18256ac media-base.patch 2e5a83826239849d096aead033eb519338b84e6fbbf58abfcd7cfe40d0b3070b66bcc825ec84406484d73d1a333f1b9d23a8ab44987ab5c8b187076c84cd668b musl-crashpad.patch 556cc2ba28184a75745f13c673605327f5be590be179eb3f941dc0abded854a814e5da1432a28fb8d4dcdcd66ffd4c94ee1a8824d2cd93b632f48e9310dbc3fa musl-v8-monotonic-pthread-cont_timedwait.patch 7957aae04e8ef3badbc98c982ba1acb1b9ef5e665440116c704512f11554d7b64ba3643b7ff7d00476a6686324033b0cf762deb78ce798619226380953b9dc9c nasm.patch 56a357668c0928bc488ccec8f53fd37fccbaefe0a185ceaf067c8c39e0fae3d2b61ca010ccabc785bec0f2e86b19f37cebb3ac344225aa8d7651c822e48c6064 gcc-fno-delete-null-pointer-checks.patch ad4ddc25df7aa1de2038b7adb86d27679ecdb7e3e16c0eec994e947a08c41504b6fb41166f7868ff5f58ce8191c78800cbb91d259c864840fa5af1d7ba5d43a1 gcc-arm.patch cc67d2a77910663e5a1ad5f66606ee2544867aa1fef25e1a1bc355a8db765d5928edb72f158e6a2ece4195c9b62b875dcdcab4e4055e7611edab405e8cfd658e aarch64-fixes.patch 9b1441fe42421ef9ead86a5143bf997d989bd53a8969cdfdf4e0c45f847efc8c1d127e15fb05e2ef5dbefbb228cbdc2849404d74997ca56265599e12e5efd6e4 elf-arm.patch 17ed804782df7161e58cb1c125b2cdee22a63008a240da6d3409a7b7a356dc4bd5971aa61217b7aefcfa130e3e12a753bc0fe96882cde842917cf5d6df46083f chromium-size_t-defined.patch 6bda2c9d622a77d50832b56c36239a2d79eb8dce7825e9cf99b82132d0a6e58ba23e253ec1a71cf6600111afe4c0917d26ba54ab1b6d7ceea5d57bb8e5f8e4c1 check-for-enable-accelerated-video-decode-on-Linux.patch a239bb09ea79875d821a53f8769ef19997c60012dc474139a21f6818a031e77fe16aed6dee9fb8b9fd9411bbaf9901f674de480012badae51ff17e9bea35fd70 fix-invalid-end-iterator-usage-in-CookieMonster.patch a8088aea5e27723b34bec232406a743f93cf4ebcaa7b48bda1669d8a8fbc3083eec4d3921c2ab1e002eb443f74205c7f1e73cd0bb303fa20f0f1a1f255dcbdcb only-fall-back-to-the-i965-driver-if-we-re-on-iHD.patch 862fbd405a06e570891d84634a3aff943f0eb1458308211d7ac98d84a9f57c779deba7e91e4b1efbbce15a8b14734dc86ed625165bf3ce8d31ef67d26ba7cecf remove-dead-reloc-in-nonalloc-LD-flags.patch b425d6ab3da04b6a8d32303d1c39feb9c1be813fac9b38eb53fd5d020ff08b4b3e247897d5b5c5dac3a7a213c5d3eaf3ea2342c97d22089f2c623e28a124f00d xproto-fix-underflow-in-Fp1616ToDouble.patch"