# Contributor: Carlo Landmeter # Maintainer: Carlo Landmeter pkgname=chromium pkgver=72.0.3626.121 pkgrel=0 pkgdesc="chromium web browser" url="http://www.chromium.org/" arch="x86_64 armv7 aarch64" 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 cups-dev dbus-glib-dev eudev-dev ffmpeg-dev findutils flac-dev freetype-dev gnutls-dev gperf gtk+3.0-dev gzip harfbuzz-dev hunspell-dev hwdata-usb jpeg-dev jsoncpp-dev krb5-dev libbsd-dev libcap-dev libelf-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 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 secure_getenv.patch chromium-use-alpine-target.patch chromium-gcc-r1.patch media-base.patch musl-crashpad.patch musl-v8-fix-deadlock.patch musl-v8-monotonic-pthread-cont_timedwait.patch gcc8-alignof.patch gcc-fno-delete-null-pointer-checks.patch gcc-arm.patch musl-arm-limits.patch chromium-71.0.3578.98-skia-aarch64-buildfix.patch aarch64-fixes.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 device/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 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=false \ use_sysroot=false \ treat_warnings_as_errors=false \ fatal_linker_warnings=false \ binutils_path=\"/usr/bin\" \ use_gold=false \ use_allocator=\"none\" \ use_allocator_shim=false \ use_vaapi=true \ ) AR="ar" CC="${CC:-gcc}" CXX="${CXX:-g++}" LD="${CXX:-g++}" \ 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=false \ 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=false \ is_component_build=false \ is_debug=$_is_debug \ is_desktop_linux=true \ linux_use_bundled_binutils=false \ proprietary_codecs=true \ remove_webcore_debug_symbols=true \ 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_pulseaudio=false \ use_sysroot=false \ use_system_harfbuzz=true \ ) AR="ar" CC="${CC:-gcc}" CXX="${CXX:-g++}" LD="${CXX:-g++}" 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 22 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="0bbeba7fa662d92ad60fdb56b3a73b79fc40ecb1499bb3b9a50b78ab7900b7a4de83f271c1c299e386dc9f72bfb2cbf71f83a388c6e14e288ab42b2b673fce96 chromium-72.0.3626.121.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 9cd1defffb55cd1290e82b233a623e962775e19f001b26ae8f74330f3467499fd16067d607ca8e2b0b9b8d8988cd7ea2af93df65d7cc3d9299b8bc2b472c712e musl-fixes.patch 90efbc89151c77f32434364dcbaabaf9d9a207f4a77f147cd51b3fe100832fbfb3a9fb665303a79a3d788e400f4f41890de202ccbb7bd1fc6252e33c6e74e429 musl-fixes-breakpad.patch 0aa3176f1021332088740d6e4fe2eadbe375240df0690c8449426a42a674fdf58e8a1fda85ca527dc1b4451e964d54564283fd81e3b7df059f5bcfccb8e07e84 musl-hacks.patch 95ead57f7338649351948d100e32e5ec1eeadb02bffa136ff15c6c515eceb8013c444be092d777c1b62b945bfb83b97778ba4d3a0ccc2d7c2c9a0a8cd8ee0f01 musl-libc++.patch 9b75d6ac720d1b8ddc597f0f472bc400ff866a733f12b3a4cd3e7e18e724549c5f8e056c7e0d0462ef083bff5e677f8cef6b89b22f4740a40ad6398978269373 musl-sandbox.patch 6403abf957e3497c19578c19567582d65846d532e071211421166944614219dad21e31a3589b484836919d7c1e5904d4dd8c6faf40dc514c043fe14a2ff718ef no-execinfo.patch db7f676d3476820c29f234b1f8f17a74e82b72d67fc727c715307734fd238e3cb0f99d8b5320d45f820b62c01163283c4829caa37afd6a9ca7592a54d3c65819 no-mallinfo.patch 6833054ef89da20c0de63faac2f87ff250b5aca3ac785fc404da4a9e03c4e00df9d7da009788e611d113cdf3be2ba50f933d85d6baf20f2df6a3711cceff5152 resolver.patch 6b0812725a0fc562527f3556dc4979fec72d1ba92f26a5e78ff2016c39bb2c155a0ff95fc22101f9c097d14b84182d6615276f4247f60ae7833ab45da8366e6d swiftshader.patch 1b8647ab4081ec27f142eb564841b603dbf4c41118502e43b061d06f8866ebd1418d676457ed9ee0dc0a759e0369a29219bea98e74f687ddcba5d4513ca460ba secure_getenv.patch 246c43a0ab557671119ebc4ecb292925ebfee25312fb50e739a179dc085d23b9623bec2d7baecdd37ebd9318f8770664f20c12de6383def74cd89b7845d149ce chromium-use-alpine-target.patch 6e2bcbed44786c6c0d3beda935269f30fdcdf07c400defa6bf73f8359a60b1d59cc2f80dbc106be651a535635995641321d9e524b18919d3975bd6008a641d59 chromium-gcc-r1.patch 589a7acf149d44db081da2dd24a7769f2b9572a8cc64d2aad78577a64768d3b6fb2bfa02292b5260acd2c4a28c3ae9b82847ff901ce8a21baeca0b46dcda0ca9 media-base.patch 05c1af43038f76014f5f8b605085310414242f2bfad0e3258ddb29a08e7f4307de31b2d551b0a291986cc7d5a01cf3a003ac864216877195bb4310fd33193f0f musl-crashpad.patch 2c22e0d56b2557bafc842043911ecd0f8f70589013aeb7d3e8c7c8a5622bdbfe1f249e7223991ebf6130c7a45c7771a02dcc096dd03c48e2559ea4741147cfce musl-v8-fix-deadlock.patch 6953e83d4034f7a016dd055fed152a8a448f741a4c4f7a8f3b03cc7a4589d3d3c03775f844d76d6d4478ac15c655fee0be7355f0d5062ddc7fa9f6ce4b011116 musl-v8-monotonic-pthread-cont_timedwait.patch 9bfc532fd1e84e30362ac41fcd68253e17ee4cb5e986ceb5bb122e3235e4617e295ce9dddfdfbbd0b9d3e67267096152da2a19e3bb4bb9111c7fdb22fa398872 gcc8-alignof.patch bb0f3dc1ade429a398d487ae190a278948533398c4a1085aeb35ff57fefb90a1e598008ba839423ca0acd30ba4c992950f395dba3b9994d3c7187fe68b9a93d7 gcc-fno-delete-null-pointer-checks.patch 9f4a555b98ca47063fd5a90d119686de09d5c8ecdec2ef936f42cf45d3ba012e91a6455d3d550b3c90da15ca9b085238afd442a21ce47bea571ff356b74620f8 gcc-arm.patch 3bcffb36f28a01d8bb91f1c1ee1e327caebb1e139d4e8772ad15460ee69cb5ea3307a235dc83184a9e09b687882d9617f3a3ce1a7b07cbd6e11b0a5d6a6ace81 musl-arm-limits.patch d4d46ea95ed8d47cd4b09f27d99df61cc6b72b4cb92b865310f245259d5adf02cd136888cd44ad12aeba3fd4d638982437fdf230e817d0188cc5ea76fec82cd1 chromium-71.0.3578.98-skia-aarch64-buildfix.patch 229a0c04ebd7465fabe3268959c386e63ac9e272a0506bb65785f6f9532a9f88bee436287fbcfc63e5fd9d85fb4f68f73a79475b6e6cc53dc58d715d40cd0ed2 aarch64-fixes.patch"