# Contributor: Carlo Landmeter # Maintainer: Natanael Copa pkgname=chromium pkgver=79.0.3945.130 pkgrel=0 pkgdesc="chromium web browser" url="http://www.chromium.org/" arch="x86_64 aarch64 armv7" license="BSD" depends="xdg-utils" depends_dev="" makedepends="$depends_dev alsa-lib-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 libxtst-dev linux-headers mesa-dev mesa-dev minizip-dev ninja nodejs nss-dev openjdk8 opus-dev paxmark pciutils-dev perl python2 re2-dev snappy-dev speex-dev sqlite-dev xdg-utils yasm zlib-dev " install="" # explicit depends for --headless depends="eudev-libs ttf-opensans" options=suid subpackages="$pkgname-chromedriver" source="https://commondatastorage.googleapis.com/chromium-browser-official/$pkgname-$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 chromium-system-harfbuzz.patch create-extra-view-redefinition.patch llvm-remove-unsupported-compiler-warnings.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 musl-arm-limits.patch aarch64-fixes.patch elf-arm.patch " builddir="$srcdir"/$pkgname-$pkgver # secfixes: # 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() { cd "$builddir" local i cd "$builddir" for i in $source; do case $i in *.patch) msg $i; patch -p0 -i "$srcdir"/$i;; esac done # 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 harfbuzz-ng libdrm libevent libjpeg libpng libwebp libxml libxslt opus re2 snappy yasm " 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/pdfium/third_party/freetype/include/pstables.h' \ \! -path './third_party/yasm/run_yasm.py' \ \! -regex '.*\.\(gn\|gni\|isolate\|py\)' \ -delete done # workaround missing files for arm for i in safe_conversions_arm_impl.h safe_math_arm_impl.h; do ln -s ../../../../base/numerics/$i tools/gn/base/numerics/$i done msg "Replacing gyp files" python build/linux/unbundle/replace_gn_files.py --system-libraries \ ${use_system} third_party/libaddressinput/chromium/tools/update-strings.py } _gn_flags() { echo $* } build() { cd "$builddir" ############################################################## # 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 \ binutils_path=\"/usr/bin\" \ 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++}" \ python tools/gn/bootstrap/bootstrap.py -s -v --gn-gen-args "$_c" msg "Configuring build" _c=$(_gn_flags \ clang_use_chrome_plugins=false \ closure_compile=true \ custom_toolchain=\"//build/toolchain/linux/unbundle:default\" \ enable_hangout_services_extension=true \ enable_nacl=false \ enable_nacl_nonsfi=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 \ blink_symbol_level=0 \ symbol_level=0 \ treat_warnings_as_errors=false \ use_allocator=\"none\" \ use_allocator_shim=false \ use_cups=true \ use_custom_libcxx=false \ use_gnome_keyring=false \ use_gold=false \ use_lld=false \ use_jumbo_build=true \ use_pulseaudio=false \ 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" msg "Ninja turtles GO!" # workaround parallel build ninja -C out/Release gen/ui/accessibility/ax_enums.p # build mksnapshot and paxmark it ninja -C out/$_buildtype mksnapshot paxmark -m out/$_buildtype/mksnapshot ninja -C out/$_buildtype v8_context_snapshot_generator paxmark -m out/Release/v8_context_snapshot_generator \ out/Release/obj/tools/v8_context_snapshot/v8_context_snapshot_generator # final link needs lots of file descriptors ulimit -n 2048 # finish rest of the build ninja -C out/$_buildtype chrome chrome_sandbox chromedriver } package() { cd "$builddir"/out/$_buildtype local bin pak # paxmark inside chroot too paxmark -m mksnapshot for bin in chrome chromedriver *.bin; do install -Dm755 $bin "$pkgdir"/usr/lib/$pkgname/$bin done paxmark -m "$pkgdir"/usr/lib/$pkgname/chrome install -Dm4755 chrome_sandbox "$pkgdir"/usr/lib/$pkgname/chrome-sandbox install -m644 icudtl.dat "$pkgdir"/usr/lib/$pkgname/icudtl.dat 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/ # 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="4b5d4769b068f20b8028085a148cbaf31311eeffad0a22c5c0909af273a8e57e077b33cc93331bbeff9165477262eed2e345b2224ac4f76d8bdb79f983596a81 chromium-79.0.3945.130.tar.xz a3bb959c65944ae2fb765725cedcffd743a58bc0c2cd1f1999d15fe79801d00f3474b08b4ed7b48859ed921eb57093d0ad09d90f201d729ed9b8a419a591ed29 pstables-2.8.h b9a810416dd7a8ffc3a5ced85ad9acebda1665bd08a57eec7b189698cc5f74d2c3fd69044e20fcb83297a43214b2772a1312b2c6122ea0eb716abacf39524d60 chromium-launcher.sh f6d962b9e4c22dd42183df3db5d3202dab33eccecafb1bf63ca678147289581262db1e5e64cbe8f9c212beefb0a6717bb8d311e497f56b55fe95b8bab2db493f chromium.conf e182c998a43d22d1c76a86c561619afd1fca8c2be668265ad5e2f81a3806f7a154272cc027a2f8b370fb69446892c69e5967a4be76082325c14245ee7915234c chromium.desktop 2d8237a940ea691bd10b08315429677a587f7ef9692a0cca53bfd066eae82998a6c71f402a8669e9de39f94d7f3280745d1628ea6eac5d76ca7116844d4e0dac google-api.keys 230d1819b9d644ebaa6e194e948d662add8d237a99cc3d6b0f8a2fc2b331b43a3cd0766746f1c76c1a114f1730b40504c532d0c40aafa8cbc45022663cbcc245 default-pthread-stacksize.patch ef31809702ef020e02445ac36857c621cf852dea14c2fdf291ea0700b6fc6d94e3704726a051e95d193aa10fe74ca53a870848fec5f8153fb262f2e184affe7f musl-fixes.patch 90efbc89151c77f32434364dcbaabaf9d9a207f4a77f147cd51b3fe100832fbfb3a9fb665303a79a3d788e400f4f41890de202ccbb7bd1fc6252e33c6e74e429 musl-fixes-breakpad.patch 4640c175657f6a53f8a8d1c6bd2208ec30751d739a086b8f4f49250a88e522441a4919c1e47673cbee54c24c9cc65f18d386071fc4667662e4d13201f0bb7e64 musl-hacks.patch 95ead57f7338649351948d100e32e5ec1eeadb02bffa136ff15c6c515eceb8013c444be092d777c1b62b945bfb83b97778ba4d3a0ccc2d7c2c9a0a8cd8ee0f01 musl-libc++.patch 5bb41c9a17545e2504cbfd760a1c138897ae9241a03ae0fe54632ddff679c273ec61e80946a4cd70ff79f237d1a442ca9e6ff4d2f5b0f6458db9239de2d1d3d7 musl-sandbox.patch 83b4cc042d501bd94ce953d1bc94361adf9d6f0d1fa71c04c5d3688c0befb81fdb6ccf31e6cab6a22d0057db309b473bc6af75535675c61d167035e36dd1d6c6 no-execinfo.patch 396be05301adad9f9c9bb7a807ecb206deef901e4420206f41f74a660a8c0f300a1f210b1d379bed5519cf68bff8ce7c1a9e155651c478e11469c3d253e12155 no-mallinfo.patch 3e424b9bf8e819e7759a76fe6f849f93e6b83de5c8b47cce21984611a69906a50cb4a498b0e69ef71d3f81f556914e6e5a6803ebfd81b42eb62177c654b10215 resolver.patch 84732900f50799ee8d4c9a572a8703c1cd67c6a3b8f8dcf97f308319dcef6ac3d41ea5ddfb2ef4d695bdebdae691e30d5631a8d04e59b931935ba188b0308a61 swiftshader.patch c2c17e405863e07b312d7d37b3e8d02cdebd5decee11b0e6387256f6d90517e052fc82544513a771c59083c0d9aeefbac3ddd3ed09654e302bfdd126e2cc1cc8 chromium-system-harfbuzz.patch 6ca49766db7af5ff12a62f66e0ec873f8d7f8eb2d19a79df55d6688ce2f5a7dd3772305213485b48e579f19072df707e447f7cdfb39578b78a2f936fae6081bf create-extra-view-redefinition.patch 1b6150ab7844ae6b30faba89ae45c216e987c77588cbe2dd50b6de5381d9c0efe760c8375574f94b7ca5c17ebf13a91b627593045d3d7a8bf70c63a30ecbf3ee llvm-remove-unsupported-compiler-warnings.patch 50e2c78bc2e7f343ed97d348bbe34350439ede6a15bf8ea1017eb13c391d4718b00a51db9c2eb40d8398d9733bf1925db42011f3bcbdd7d83329b1c7d534032b chromium-use-alpine-target.patch 589a7acf149d44db081da2dd24a7769f2b9572a8cc64d2aad78577a64768d3b6fb2bfa02292b5260acd2c4a28c3ae9b82847ff901ce8a21baeca0b46dcda0ca9 media-base.patch 05c1af43038f76014f5f8b605085310414242f2bfad0e3258ddb29a08e7f4307de31b2d551b0a291986cc7d5a01cf3a003ac864216877195bb4310fd33193f0f musl-crashpad.patch 6953e83d4034f7a016dd055fed152a8a448f741a4c4f7a8f3b03cc7a4589d3d3c03775f844d76d6d4478ac15c655fee0be7355f0d5062ddc7fa9f6ce4b011116 musl-v8-monotonic-pthread-cont_timedwait.patch 34013a1a960d0f3b20183d03df5be6b36e2eb9b3d3319fa2bcf3c69084968fde0239ad7304c9a6165b3284a2a55a220b3d207889e2b913dc4578268fdede9ea6 nasm.patch bb0f3dc1ade429a398d487ae190a278948533398c4a1085aeb35ff57fefb90a1e598008ba839423ca0acd30ba4c992950f395dba3b9994d3c7187fe68b9a93d7 gcc-fno-delete-null-pointer-checks.patch 91296fcbdfc4b35899e2af949024c7041d85cc64644cf5fe73c8e46a0523b09d1fb8849f315bd212c1ac25caf57553e933cb4eeb8d1856960441d24b2dd20e27 gcc-arm.patch 3bcffb36f28a01d8bb91f1c1ee1e327caebb1e139d4e8772ad15460ee69cb5ea3307a235dc83184a9e09b687882d9617f3a3ce1a7b07cbd6e11b0a5d6a6ace81 musl-arm-limits.patch f0a0fa663fd7a88346d69675a96dfd864364f6ba41d19a5adfbfb0f13fd784b194a60cd2c63edfcc21d6b049628eade690ff803f787dbdd29d84cd8312be4d4a aarch64-fixes.patch 8f5902983f9933ed4ff5607fbe97ea8dfa00f9974c8c5b35f2611d15d2b6ba75970f71f2e307daa2155c5647210c871cf3d081c292369bf6489c802d277570fa elf-arm.patch"