From 4026b8b396d3782e929c07818e4f4291fe510a9e Mon Sep 17 00:00:00 2001 From: Seppia Date: Tue, 27 Feb 2018 20:04:11 +0100 Subject: Updated PKGBUILD according to the new ungoogled-chromium build procedure --- .SRCINFO | 81 +++++++-------- PKGBUILD | 354 +++++++++++++++++++++++++++++++++++++++++++++++---------------- 2 files changed, 299 insertions(+), 136 deletions(-) diff --git a/.SRCINFO b/.SRCINFO index 86d658d..aefdf2e 100644 --- a/.SRCINFO +++ b/.SRCINFO @@ -1,75 +1,66 @@ -# Generated by mksrcinfo v8 -# Mon Mar 20 02:40:02 UTC 2017 pkgbase = ungoogled-chromium pkgdesc = Modifications to Google Chromium for removing Google integration and enhancing privacy, control, and transparency - pkgver = 55.0.2883.95 + pkgver = 64.0.3282.186 pkgrel = 1 url = https://github.com/Eloston/ungoogled-chromium - install = ungoogled-chromium.install arch = x86_64 license = BSD - makedepends = python3 makedepends = python2 makedepends = gperf makedepends = yasm makedepends = mesa makedepends = ninja makedepends = git - makedepends = quilt + makedepends = libva makedepends = clang - makedepends = harfbuzz-icu - makedepends = ffmpeg - depends = gtk2 + makedepends = llvm + makedepends = lld + depends = gtk3 depends = nss depends = alsa-lib depends = xdg-utils - depends = bzip2 - depends = libevent depends = libxss - depends = icu - depends = libexif + depends = libcups depends = libgcrypt depends = ttf-font depends = systemd depends = dbus - depends = flac - depends = snappy - depends = pciutils depends = libpulse - depends = harfbuzz - depends = libsecret - depends = perl - depends = perl-file-basedir + depends = pciutils + depends = json-glib depends = desktop-file-utils depends = hicolor-icon-theme - depends = gconf + depends = libevent + depends = flac + depends = libvpx + depends = icu + depends = opus + depends = minizip + depends = libxslt + depends = re2 + depends = libwebp + depends = libjpeg + depends = snappy + depends = libevent + depends = freetype2 + depends = harfbuzz + optdepends = pepper-flash: support for Flash content optdepends = kdialog: needed for file dialogs in KDE optdepends = gnome-keyring: for storing passwords in GNOME keyring - optdepends = kwalletmanager: for storing passwords in KWallet - optdepends = pepper-flash: for Pepper Flash plugin [AUR] + optdepends = kwallet: for storing passwords in KWallet + optdepends = libva-intel-driver: for hardware video acceleration with Intel GPUs + optdepends = libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs + optdepends = libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs provides = chromium - source = git://github.com/Eloston/ungoogled-chromium - source = ungoogled-chromium.sh - source = ungoogled-chromium.desktop - source = ungoogled-chromium_16.png - source = ungoogled-chromium_22.png - source = ungoogled-chromium_24.png - source = ungoogled-chromium_32.png - source = ungoogled-chromium_48.png - source = ungoogled-chromium_64.png - source = ungoogled-chromium_128.png - source = ungoogled-chromium_256.png - md5sums = SKIP - md5sums = 374877078f924e08afe93b30d0daea09 - md5sums = ccd3505ed32877a6e7e54fbb4f5040c1 - md5sums = 6cd41f6e08eee03c6553603fb0b6ecd7 - md5sums = 227eac16d1e737bed42742840b950d41 - md5sums = 308eb2e0c509e12ecf33165ced9eef0d - md5sums = e9944fe09afc8495a2fbf70db810a219 - md5sums = 17856a060d1fc003447cb7a3f414be7d - md5sums = f2325d8de3d217471f029e8b59a712e3 - md5sums = 811f5de21b882cdb49618de549e017ca - md5sums = c6cf982d5ebece0b9cd64f065acd384a + conflicts = chromium,inox,iridium + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-64.0.3282.186.tar.xz + source = chromium-launcher-5.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v5.tar.gz + source = chromium-64.0.3282.186.txt::https://chromium.googlesource.com/chromium/src.git/+/64.0.3282.186?format=TEXT + source = ungoogled-chromium::git+https://github.com/Eloston/ungoogled-chromium.git + sha256sums = 5fd0218759231ac00cc729235823592f6fd1e4a00ff64780a5fed7ab210f1860 + sha256sums = 4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587 + sha256sums = e73f69942af1ba730a700151973fa6309b0586ff45bf35a7fea43f52b54a9cb5 + sha256sums = SKIP pkgname = ungoogled-chromium diff --git a/PKGBUILD b/PKGBUILD index d5baf09..fd64917 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,106 +1,278 @@ -# Maintainer: Matt Parnell/ilikenwf -# based on chromium-snapshot-bin by det -# Contributors: Ner0, alexwizard, thotypous, jdhore, xduugu, randypenguin, bdheeman, AlK +# Maintainer: Seppia +# Contributors: Eloston +# Derived from official Chromium and Inox PKGBUILDS pkgname=ungoogled-chromium -pkgver=55.0.2883.95 +pkgver=64.0.3282.186 pkgrel=1 +_launcher_ver=5 pkgdesc="Modifications to Google Chromium for removing Google integration and enhancing privacy, control, and transparency" arch=('x86_64') url="https://github.com/Eloston/ungoogled-chromium" license=('BSD') -depends=('gtk2' 'nss' 'alsa-lib' 'xdg-utils' 'bzip2' 'libevent' 'libxss' 'icu' - 'libexif' 'libgcrypt' 'ttf-font' 'systemd' 'dbus' 'flac' 'snappy' - 'pciutils' 'libpulse' 'harfbuzz' 'libsecret' - 'perl' 'perl-file-basedir' 'desktop-file-utils' 'hicolor-icon-theme' - 'gconf') -optdepends=('kdialog: needed for file dialogs in KDE' +depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' + 'ttf-font' 'systemd' 'dbus' 'libpulse' 'pciutils' 'json-glib' + 'desktop-file-utils' 'hicolor-icon-theme' 'libevent') +makedepends=('python2' 'gperf' 'yasm' 'mesa' 'ninja' 'git' 'libva' + 'clang' 'llvm' 'lld') +optdepends=('pepper-flash: support for Flash content' + 'kdialog: needed for file dialogs in KDE' 'gnome-keyring: for storing passwords in GNOME keyring' - 'kwalletmanager: for storing passwords in KWallet' - 'pepper-flash: for Pepper Flash plugin [AUR]') -makedepends=('python3' 'python2' 'gperf' 'yasm' 'mesa' 'ninja' 'git' 'quilt' 'clang' 'harfbuzz-icu' 'ffmpeg') -provides=('chromium') -install=${pkgname}.install -source=("git://github.com/Eloston/ungoogled-chromium" - "${pkgname}.sh" - "${pkgname}.desktop" - "${pkgname}"_{16,22,24,32,48,64,128,256}.png) -md5sums=('SKIP' - '374877078f924e08afe93b30d0daea09' - 'ccd3505ed32877a6e7e54fbb4f5040c1' - '6cd41f6e08eee03c6553603fb0b6ecd7' - '227eac16d1e737bed42742840b950d41' - '308eb2e0c509e12ecf33165ced9eef0d' - 'e9944fe09afc8495a2fbf70db810a219' - '17856a060d1fc003447cb7a3f414be7d' - 'f2325d8de3d217471f029e8b59a712e3' - '811f5de21b882cdb49618de549e017ca' - 'c6cf982d5ebece0b9cd64f065acd384a') - -# don't compress the package - we're just going to uncompress during install in a moment -PKGEXT='.pkg.tar' - -pkgver() { - cd "$srcdir/${pkgname}" - - echo $(grep -oPm1 '([0-9]+\.?)+' version.ini) - pkgrel=$(grep -oP '\=\ [0-9]$' version.ini|sed -e 's/\=\ //g') + 'kwallet: for storing passwords in KWallet' + 'libva-intel-driver: for hardware video acceleration with Intel GPUs' + 'libva-mesa-driver: for hardware video acceleration with AMD/ATI GPUs' + 'libva-vdpau-driver: for hardware video acceleration with NVIDIA GPUs') +provides=("chromium") +conflicts=("chromium","inox","iridium") +source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz + chromium-launcher-$_launcher_ver.tar.gz::https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver.tar.gz + chromium-$pkgver.txt::https://chromium.googlesource.com/chromium/src.git/+/$pkgver?format=TEXT + 'ungoogled-chromium::git+https://github.com/Eloston/ungoogled-chromium.git') +sha256sums=('5fd0218759231ac00cc729235823592f6fd1e4a00ff64780a5fed7ab210f1860' + '4dc3428f2c927955d9ae117f2fb24d098cc6dd67adb760ac9c82b522ec8b0587' + 'e73f69942af1ba730a700151973fa6309b0586ff45bf35a7fea43f52b54a9cb5' + 'SKIP') + +# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py +# Keys are the names in the above script; values are the dependencies in Arch +readonly -A _system_libs=( + #[ffmpeg]=ffmpeg # https://crbug.com/731766 + [flac]=flac + #[fontconfig]=fontconfig # Enable for M65 + #[freetype]=freetype2 # Using 'use_system_freetype=true' until M65 + #[harfbuzz-ng]=harfbuzz # Using 'use_system_harfbuzz=true' until M65 + [icu]=icu + [libdrm]= + [libevent]=libevent + [libjpeg]=libjpeg + #[libpng]=libpng # https://crbug.com/752403#c10 + [libvpx]=libvpx + [libwebp]=libwebp + #[libxml]=libxml2 # https://crbug.com/736026 + [libxslt]=libxslt + [opus]=opus + [re2]=re2 + [snappy]=snappy + [yasm]= + [zlib]=minizip +) +readonly _unwanted_bundled_libs=( + ${!_system_libs[@]} + ${_system_libs[libjpeg]+libjpeg_turbo} + freetype + harfbuzz-ng +) +depends+=(${_system_libs[@]} freetype2 harfbuzz) + +prepare() { + cd "$srcdir/ungoogled-chromium" + + git checkout develop + + msg2 'Processing sources' + python3 buildkit-launcher.py genbun -u "$srcdir/chromium-$pkgver/ungoogled" archlinux + python3 buildkit-launcher.py prubin -u "$srcdir/chromium-$pkgver/ungoogled" -t "$srcdir/chromium-$pkgver" + python3 buildkit-launcher.py subdom -u "$srcdir/chromium-$pkgver/ungoogled" -t "$srcdir/chromium-$pkgver" + cp "$srcdir/chromium-$pkgver/ungoogled/patch_order.list" "$srcdir/chromium-$pkgver/ungoogled/patches/series" + + cd "$srcdir/chromium-$pkgver" + + msg2 'Applying build patches' + # https://crbug.com/710701 + local _chrome_build_hash=$(base64 -d ../chromium-$pkgver.txt | + grep -Po '^parent \K[0-9a-f]{40}$') + if [[ -z $_chrome_build_hash ]]; then + error "Unable to find Chrome build hash." + return 1 + fi + echo "LASTCHANGE=$_chrome_build_hash-" >build/util/LASTCHANGE + + # Apply patches + env QUILT_PATCHES="$srcdir/chromium-$pkgver/ungoogled/patches" quilt push -a + + # Remove compiler flags not supported by our system clang + sed -i \ + -e '/"-Wno-enum-compare-switch"/d' \ + -e '/"-Wno-null-pointer-arithmetic"/d' \ + -e '/"-Wno-tautological-unsigned-zero-compare"/d' \ + -e '/"-Wno-tautological-constant-compare"/d' \ + build/config/compiler/BUILD.gn + + # Use Python 2 + find . -name '*.py' -exec sed -i -r 's|/usr/bin/python$|&2|g' {} + + + # There are still a lot of relative calls which need a workaround + mkdir -p "$srcdir/python2-path" + ln -s /usr/bin/python2 "$srcdir/python2-path/python" + + # Remove bundled libraries for which we will use the system copies; this + # *should* do what the remove_bundled_libraries.py script does, with the + # added benefit of not having to list all the remaining libraries + local _lib + for _lib in ${_unwanted_bundled_libs[@]}; do + 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/freetype/src/src/psnames/pstables.h' \ + \! -path './third_party/yasm/run_yasm.py' \ + \! -regex '.*\.\(gn\|gni\|isolate\)' \ + -delete + done + + python2 build/linux/unbundle/replace_gn_files.py \ + --system-libraries "${!_system_libs[@]}" } build() { - cd "$srcdir/${pkgname}" - - msg "Building...this will take a while..." - /usr/bin/python build.py + make -C chromium-launcher-$_launcher_ver + + cd "$srcdir/chromium-$pkgver" + + if check_buildoption ccache y; then + # Avoid falling back to preprocessor mode when sources contain time macros + export CCACHE_SLOPPINESS=time_macros + fi + + export PATH="$srcdir/python2-path:$PATH" + export TMPDIR="$srcdir/temp" + mkdir -p "$TMPDIR" + + export CC=clang + export CXX=clang++ + export AR=llvm-ar + export NM=llvm-nm + + local _flags=( + 'clang_base_path=getenv("CLANG_BASE_PATH")' + 'clang_use_chrome_plugins=false' + 'custom_toolchain="//build/toolchain/linux/unbundle:default"' + 'enable_ac3_eac3_audio_demuxing=true' + 'enable_google_now=false' + 'enable_hangout_services_extension=false' + 'enable_hevc_demuxing=true' + 'enable_iterator_debugging=false' + 'enable_mdns=false' + 'enable_mse_mpeg2ts_stream_parser=true' + 'enable_nacl=false' + 'enable_nacl_nonsfi=false' + 'enable_one_click_signin=false' + 'enable_reading_list=false' + 'enable_remoting=false' + 'enable_reporting=false' + 'enable_service_discovery=false' + 'enable_swiftshader=false' + 'enable_widevine=true' + 'exclude_unwind_tables=true' + 'fatal_linker_warnings=false' + 'ffmpeg_branding="ChromeOS"' + 'fieldtrial_testing_like_official_build=true' + 'gold_path=""' + 'goma_dir=""' + 'google_api_key=""' + 'google_default_client_id=""' + 'google_default_client_secret=""' + 'host_toolchain="//build/toolchain/linux/unbundle:default"' + 'is_clang=true' + 'is_debug=false' + 'link_pulseaudio=true' + 'linux_use_bundled_binutils=false' + 'optimize_for_size=false' + 'optimize_webui=false' + 'proprietary_codecs=true' + 'remove_webcore_debug_symbols=true' + 'rtc_libvpx_build_vp9=false' + 'safe_browsing_mode=0' + 'symbol_level=0' + 'treat_warnings_as_errors=false' + 'use_allocator="none"' + 'use_cups=true' + 'use_custom_libcxx=false' + 'use_gconf=false' + 'use_gnome_keyring=false' + 'use_gold=true' + 'use_gtk3=true' + 'use_jumbo_build=true' + 'use_kerberos=false' + 'use_lld=true' + 'use_official_google_api_keys=false' + 'use_openh264=false' + 'use_ozone=false' + 'use_pulseaudio=true' + 'use_sysroot=false' + 'use_system_freetype=true' + 'use_system_harfbuzz=true' + 'use_system_lcms2=true' + 'use_system_libjpeg=true' + 'use_system_libpng=true' + 'use_system_zlib=true' + 'use_unofficial_version_number=false' + 'use_vaapi=true' + ) + + if check_option strip y; then + # https://chromium-review.googlesource.com/c/chromium/src/+/712575 + # _flags+=('exclude_unwind_tables=true') + CFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' + CXXFLAGS+=' -fno-unwind-tables -fno-asynchronous-unwind-tables' + CPPFLAGS+=' -DNO_UNWIND_TABLES' + fi + + msg2 'Building GN' + python2 tools/gn/bootstrap/bootstrap.py -s -j 4 --no-clean + msg2 'Configuring Chromium' + out/Release/gn gen out/Release --args="${_flags[*]}" \ + --script-executable=/usr/bin/python2 --fail-on-unused-args + + msg2 'Building Chromium' + ninja -C out/Release chrome chrome_sandbox chromedriver widevinecdmadapter } package() { - cd "$srcdir" - - rm -rf "${pkgname}_${pkgver}-${pkgrel}" &> /dev/null - - msg "Extracting built tarball to properly package..." - if [ -f "${pkgname}/build/${pkgname}_${pkgver}-${pkgrel}_linux_defaultcpu.tar.xz" ]; then - mv "${pkgname}/build/${pkgname}_${pkgver}-${pkgrel}_linux_defaultcpu.tar.xz" "$srcdir" - fi - - tar xf "${pkgname}_${pkgver}-${pkgrel}_linux_defaultcpu.tar.xz" - - msg2 "Creating directory structure..." - install -d "$pkgdir/opt/" - install -d "$pkgdir/usr/bin/" - install -d "$pkgdir/usr/share/applications/" - install -d "$pkgdir/usr/share/man/" - install -d "$pkgdir/usr/share/man1/" - install -d "$pkgdir/usr/share/licenses/${pkgname}/" - install -d "$pkgdir/usr/share/licenses/${pkgname}/" - - msg2 "Moving contents..." - # Main script - install -m755 "${pkgname}.sh" "$pkgdir/usr/bin/${pkgname}" - - # Desktop - install -m644 "${pkgname}.desktop" "$pkgdir/usr/share/applications/" - - # Icons - for i in 16 22 24 32 48 64 128 256; do - install -Dm644 "${pkgname}_${i}.png" "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/${pkgname}.png" - done - - # Man page - install -Dm644 "${pkgname}_${pkgver}-${pkgrel}/chrome.1" "$pkgdir/usr/share/man/man1/${pkgname}.1" - - # License - install -m644 "${pkgname}/LICENSE" "$pkgdir/usr/share/licenses/${pkgname}/" - - msg2 "Installing main directory..." - mv "${pkgname}_${pkgver}-${pkgrel}" "$pkgdir/opt/${pkgname}" - - # thanks seo.disparate - msg2 "Ensuring packaged files are owned by root..." - chown -R root:root "$pkgdir" - - msg2 "Fixing chromium-sandbox name and permissions..." - mv "$pkgdir/opt/$pkgname/chrome_sandbox" "$pkgdir/opt/$pkgname/chrome-sandbox" - chmod 4755 "$pkgdir/opt/$pkgname/chrome-sandbox" + cd chromium-launcher-$_launcher_ver + make PREFIX=/usr DESTDIR="$pkgdir" install + install -Dm644 LICENSE \ + "$pkgdir/usr/share/licenses/chromium/LICENSE.launcher" + + cd "$srcdir/chromium-$pkgver" + + install -D out/Release/chrome "$pkgdir/usr/lib/chromium/chromium" + install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox" + install -D out/Release/chromedriver "$pkgdir/usr/lib/chromium/chromedriver" + ln -s /usr/lib/$pkgname/chromedriver "$pkgdir/usr/bin/chromedriver" + + install -Dm644 chrome/installer/linux/common/desktop.template \ + "$pkgdir/usr/share/applications/chromium.desktop" + install -Dm644 chrome/app/resources/manpage.1.in \ + "$pkgdir/usr/share/man/man1/chromium.1" + sed -i \ + -e "s/@@MENUNAME@@/Chromium/g" \ + -e "s/@@PACKAGE@@/chromium/g" \ + -e "s/@@USR_BIN_SYMLINK_NAME@@/chromium/g" \ + "$pkgdir/usr/share/applications/chromium.desktop" \ + "$pkgdir/usr/share/man/man1/chromium.1" + + cp \ + out/Release/{chrome_{100,200}_percent,resources}.pak \ + out/Release/{*.bin,libwidevinecdmadapter.so} \ + "$pkgdir/usr/lib/chromium/" + install -Dm644 -t "$pkgdir/usr/lib/chromium/locales" out/Release/locales/*.pak + + if [[ -z ${_system_libs[icu]+set} ]]; then + cp out/Release/icudtl.dat "$pkgdir/usr/lib/chromium/" + fi + + 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 + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/chromium/LICENSE" } + +# vim:set ts=2 sw=2 et: -- cgit v1.2.3