diff options
author | Andreas Grapentin <andreas@grapentin.org> | 2018-01-31 19:17:50 +0100 |
---|---|---|
committer | Andreas Grapentin <andreas@grapentin.org> | 2018-01-31 21:30:16 +0100 |
commit | 431a78910174d31678e7553ec15bff750d42d96b (patch) | |
tree | a56115183992de1a4bfa6cc26218613b0b8bf686 /libre/icecat/PKGBUILD | |
parent | e6965155b46d5f632a91fadc0ce7e40edc1459c1 (diff) | |
download | abslibre-431a78910174d31678e7553ec15bff750d42d96b.tar.gz abslibre-431a78910174d31678e7553ec15bff750d42d96b.tar.bz2 abslibre-431a78910174d31678e7553ec15bff750d42d96b.zip |
libre/icecat: rebuilt and restructured
Diffstat (limited to 'libre/icecat/PKGBUILD')
-rw-r--r-- | libre/icecat/PKGBUILD | 285 |
1 files changed, 165 insertions, 120 deletions
diff --git a/libre/icecat/PKGBUILD b/libre/icecat/PKGBUILD index 2f7936603..eb7983dd3 100644 --- a/libre/icecat/PKGBUILD +++ b/libre/icecat/PKGBUILD @@ -1,3 +1,7 @@ +# $Id$ +# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> +# Contributor (Arch): Ionut Biru <ibiru@archlinux.org> +# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com> # Maintainer: Andreas Grapentin <andreas@grapentin.org> # Contributor: André Silva <emulatorman@hyperbola.info> # Contributor: Márcio Silva <coadde@hyperbola.info> @@ -5,86 +9,127 @@ # Contributor: Luke Shumaker <lukeshu@sbcglobal.net> # Contributor: fauno <fauno@kiwwwi.com.ar> # Contributor: vando <facundo@esdebian.org> -# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com> # Contributor: Figue <ffigue at gmail> -# Thank you very much to the older contributors: # Contributor: evr <evanroman at gmail> # Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com> -_pgo=false +# parabola changes and rationale: +# - based on the PKGBUILD of iceweasel, sans rebranding + _pkgname=firefox pkgname=icecat _pkgver=52.3.0-gnu1 pkgver=${_pkgver//-/_} -pkgrel=7 - -pkgdesc="GNU IceCat, the standalone web browser based on Mozilla Firefox." -arch=(i686 x86_64 armv7h) +pkgrel=8 +pkgdesc="GNU Icecat - a libre standalone web browser based on Mozilla Firefox." +arch=(x86_64 i686 armv7h) license=(MPL GPL LGPL) -depends=(alsa-lib dbus-glib desktop-file-utils ffmpeg gtk2 gtk3 hicolor-icon-theme hunspell libvpx libxt mime-types mozilla-common nss sqlite startup-notification ttf-font) +url="http://www.gnu.org/software/gnuzilla/" +depends=(gtk3 gtk2 mozilla-common libxt startup-notification mime-types dbus-glib ffmpeg + nss hunspell sqlite ttf-font libpulse libvpx icu) depends_x86_64=("icu>=60" "icu<61") depends_i686=("icu>=60" "icu<61") depends_armv7h=("icu>=60" "icu<61") -makedepends=(autoconf2.13 diffutils gconf imake inetutils libpulse mesa mozilla-searchplugins python2 unzip yasm zip) -options=(!emptydirs !makeflags debug) -replaces=("$_pkgname") -conflicts=("$_pkgname") -provides=("$_pkgname") -if $_pgo; then - makedepends+=(xorg-server-xvfb) - options+=(!ccache) -fi +makedepends=(unzip zip diffutils python2 yasm mesa imake gconf inetutils xorg-server-xvfb + autoconf2.13 rust clang llvm jack mozilla-searchplugins) optdepends=('networkmanager: Location detection via available WiFi networks' 'libnotify: Notification integration' 'upower: Battery API') -url="http://www.gnu.org/software/gnuzilla/" -install=$pkgname.install +options=(!emptydirs !makeflags !strip) +replaces=("$_pkgname") +conflicts=("$_pkgname") source=(http://ftp.gnu.org/gnu/gnuzilla/${_pkgver%-*}/$pkgname-$_pkgver.tar.bz2{,.sig} - mozconfig - libre.patch - gnu_headshadow.png $pkgname.desktop - $pkgname-install-dir.patch - vendor.js + $pkgname-install-dir.patch no-crmf.diff $pkgname-fixed-loading-icon.png - mozilla-8904705.patch - mozilla-8909448.patch + mozilla-8904705.patch mozilla-8909448.patch disable-crypto-hardening-settings.patch disable-spoofSource-referer.patch - no-crmf.patch - no-neon.patch) + gnu_headshadow.png + libre.patch) sha256sums=('699ab2b41d4428ef5e360f3f33d98bc52723315cedac20bb03619846ca895302' 'SKIP' - '04952e0910c7c0d24faaa1ffa486dc3dae9f2c52548ff977858bec08ccb400f3' - '76a657a90371e637e7c4b371b71a15c85acafcece6277455e9ede84ffe104d3e' - '93e3001ce152e1d142619e215a9ef07dd429943b99d21726c25da9ceb31e31cd' '52df9ffeb52166ed4abd9a132ee4a9017b9c4980f0725ba383610ccfb06d4745' '5bdab2de5520fb4d3dbc453d9f73d20e0e077bf652bc780fc17184ba6c718a47' - '977aa49b940f1da049cefa2878a63ac6669a78e63e9d55bb11db7b8f8fb64c33' + 'cf224d69e89f37f92202061669014b99fbf7b1fec38fd8ba9f957711fa095729' '68e3a5b47c6d175cc95b98b069a15205f027cab83af9e075818d38610feb6213' 'dc4feddbf22ea11ae2513c68b7f3fc9047850d055a7f30d31a7ee94d7d5de12a' '8ed42e75b577d57e4b07f1d70137cb8e82f757abb616f1cfea694a041ad5679e' 'bb1fc90d117c4a7810e202d23ff44a2dac11b675336533054b5a70dd8606df38' 'c50043266e69f5844e6dce9ea7193af79587dcaa66806932d7867281a176f03e' - 'cf224d69e89f37f92202061669014b99fbf7b1fec38fd8ba9f957711fa095729' - '6d0c1c9ca28b20d206ce24ca84f4d4e3f5d062a2e9cb7445fcb6c2cfea959b4a') -validpgpkeys=( - 'A57369A8BABC2542B5A0368C3C76EED7D7E04784' # Ruben Rodriguez -) + '93e3001ce152e1d142619e215a9ef07dd429943b99d21726c25da9ceb31e31cd' + '76a657a90371e637e7c4b371b71a15c85acafcece6277455e9ede84ffe104d3e') +validpgpkeys=('A57369A8BABC2542B5A0368C3C76EED7D7E04784') # Ruben Rodriguez prepare() { - export GNU_BUILD="gnuzilla-release" + mkdir path + ln -s /usr/bin/python2 path/python + + cd "$srcdir/$pkgname-${pkgver%_*}" + patch -Np1 -i ../$pkgname-install-dir.patch + + # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991 + patch -Np1 -i ../no-crmf.diff + + cat >.mozconfig <<END +. \$topsrcdir/browser/config/mozconfig + +ac_add_options --prefix=/usr +ac_add_options --enable-release +ac_add_options --enable-gold +ac_add_options --enable-pie +ac_add_options --enable-optimize="-O2" + +ac_add_options --enable-default-toolkit=cairo-gtk3 + +# Branding +ac_add_options --enable-official-branding +ac_add_options --with-app-basename=icecat +ac_add_options --with-app-name=icecat +ac_add_options --enable-update-channel=release +ac_add_options --with-distribution-id=org.gnu + +# System libraries +ac_add_options --with-system-zlib +ac_add_options --with-system-bz2 +ac_add_options --with-system-icu +ac_add_options --with-system-jpeg +ac_add_options --with-system-libvpx +ac_add_options --with-system-nspr +ac_add_options --with-system-nss +ac_add_options --enable-system-hunspell +ac_add_options --enable-system-sqlite +ac_add_options --enable-system-ffi + +# Features +ac_add_options --enable-alsa +ac_add_options --enable-startup-notification +ac_add_options --disable-crashreporter +ac_add_options --disable-updater +ac_add_options --disable-safe-browsing +ac_add_options --disable-url-classifier +ac_add_options --disable-eme +END - mv $pkgname-${pkgver%_*} "$srcdir/$GNU_BUILD" - cd "$srcdir/$GNU_BUILD" + if [[ "$CARCH" == arm* ]]; then + sed -i \ + -e '/enable-gold/s/^/#/' \ + -e '/enable-pie/s/^/#/' \ + -e '/enable-optimize/d' \ + .mozconfig + + cat >> .mozconfig << END +ac_add_options --disable-webrtc +ac_add_options --disable-elf-hack +ac_add_options --enable-optimize="-g -O2 -fno-schedule-insns" +END + fi # Put gnu_headshadow.png in the source code install -m644 "$srcdir/gnu_headshadow.png" \ browser/base/content/abouthome - # Install to /usr/lib/$pkgname - patch -Np1 -i "$srcdir/$pkgname-install-dir.patch" # Patch and remove anything that's left patch -Np1 -i "$srcdir/libre.patch" @@ -92,18 +137,6 @@ prepare() { sed -i '\|abouthome/snippet|d ' browser/base/jar.mn - # Load our build config, disable SafeSearch - cp "$srcdir/mozconfig" .mozconfig - - mkdir "$srcdir/path" - - # WebRTC build tries to execute "python" and expects Python 2 - ln -s /usr/bin/python2 "$srcdir/path/python" - - # Configure script misdetects the preprocessor without an optimization level - # https://bugs.archlinux.org/task/34644 - sed -i '/ac_cpp=/s/$CPPFLAGS/& -O2/' configure - # Fix tab loading icon (doesn't work with libpng 1.6) # https://bugzilla.mozilla.org/show_bug.cgi?id=841734 cp "$srcdir/$pkgname-fixed-loading-icon.png" \ @@ -125,91 +158,103 @@ prepare() { # Disable spoofSource referer since it breaks referer function used by some sites # https://labs.parabola.nu/issues/1073 patch -Np1 -i "$srcdir/disable-spoofSource-referer.patch" - - # https://bugzilla.mozilla.org/show_bug.cgi?id=1371991 - patch -Np1 -i "$srcdir/no-crmf.patch" - - # ARM-specific changes: - if [[ "$CARCH" == arm* ]]; then - sed -i '/ac_add_options --enable-rust/d' .mozconfig - echo "ac_add_options --disable-ion" >> .mozconfig - echo "ac_add_options --disable-elf-hack" >> .mozconfig - echo "ac_add_options --disable-webrtc" >> .mozconfig - - # Disable gold linker, reduce memory consumption at link time - sed -i '/ac_add_options --enable-gold/d' .mozconfig - LDFLAGS+=" -Wl,--no-keep-memory -Wl,--reduce-memory-overheads" - echo "ac_add_options --disable-tests" >> .mozconfig - echo "ac_add_options --disable-debug" >> .mozconfig - - echo "ac_add_options --disable-neon" >> .mozconfig - patch -Np0 -i ../no-neon.patch - fi } build() { - export GNU_BUILD="gnuzilla-release" - - cd "$srcdir/$GNU_BUILD" + cd "$srcdir/$pkgname-${pkgver%_*}" # _FORTIFY_SOURCE causes configure failures CPPFLAGS+=" -O2" - # Hardening - LDFLAGS+=" -Wl,-z,now" - - # GCC 6 - CFLAGS+=" -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2" - CXXFLAGS+=" -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2" - export PATH="$srcdir/path:$PATH" - export PYTHON="/usr/bin/python2" - - if $_pgo; then - # Do PGO - xvfb-run -a -s "-extension GLX -screen 0 1280x1024x24" \ - make -f client.mk build MOZ_PGO=1 - else - make -f client.mk build - fi + + # Do PGO + #xvfb-run -a -n 95 -s "-extension GLX -screen 0 1280x1024x24" \ + # make -f client.mk build MOZ_PGO=1 + make -f client.mk build } package() { - export GNU_BUILD="gnuzilla-release" - - cd "$srcdir/$GNU_BUILD" + cd "$srcdir/$pkgname-${pkgver%_*}" make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install - # fix permissions on extensions folders - chmod 755 "$pkgdir"/usr/lib/$pkgname/browser/extensions/*/icons + _vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" + install -Dm644 /dev/stdin "$_vendorjs" <<END +// Use LANG environment variable to choose locale +pref("intl.locale.matchOS", true); - install -Dm644 ../vendor.js "$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" +// Disable default browser checking. +pref("browser.shell.checkDefaultBrowser", false); + +// Don't disable our bundled extensions in the application directory +pref("extensions.autoDisableScopes", 11); +pref("extensions.shownSelectionUI", true); + +// Disable "alt" as a shortcut key to open full menu bar. Conflicts with "alt" as a modifier +pref("ui.key.menuAccessKeyFocuses", false); + +// Make sure that Firefox Social stuff are empty +pref("social.whitelist", ""); +pref("social.directories", ""); + +// Disable the GeoLocation API for content +pref("geo.enabled", false); + +// Make sure that the request URL of the GeoLocation backend is empty +pref("geo.wifi.uri", ""); + +// Disable the least secure encryption protocols +pref("security.ssl3.ecdhe_ecdsa_rc4_128_sha", false); +pref("security.ssl3.ecdhe_rsa_rc4_128_sha", false); +pref("security.ssl3.rsa_rc4_128_md5", false); +pref("security.ssl3.rsa_rc4_128_sha", false); +END + + _distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini" + install -Dm644 /dev/stdin "$_distini" <<END +[Global] +id=parabola +version=1.0 +about=Icecat for Parabola GNU/Linux-libre + +[Preferences] +app.distributor=parabola +app.distributor.channel=$pkgname +app.partner.parabola=parabola +END - brandingdir=browser/branding/official - icondir="$pkgdir/usr/share/icons/hicolor" for i in 16 22 24 32 48 256; do - install -Dm644 "$brandingdir/default$i.png" \ - "$icondir/${i}x${i}/apps/$pkgname.png" + install -Dm644 "browser/branding/official/default$i.png" \ + "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" done - install -Dm644 "$brandingdir/content/icon64.png" \ - "$icondir/64x64/apps/$pkgname.png" - install -Dm644 "$brandingdir/mozicon128.png" \ - "$icondir/128x128/apps/$pkgname.png" - install -Dm644 "$brandingdir/content/about-logo.png" \ - "$icondir/192x192/apps/$pkgname.png" - install -Dm644 "$brandingdir/content/about-logo@2x.png" \ - "$icondir/384x384/apps/$pkgname.png" - - install -d "$pkgdir/usr/share/applications" - install -m644 "$srcdir/$pkgname.desktop" \ - "$pkgdir/usr/share/applications" + install -Dm644 "browser/branding/official/content/icon64.png" \ + "$pkgdir/usr/share/icons/hicolor/64x64/apps/$pkgname.png" + install -Dm644 "browser/branding/official/mozicon128.png" \ + "$pkgdir/usr/share/icons/hicolor/128x128/apps/$pkgname.png" + install -Dm644 "browser/branding/official/content/about-logo.png" \ + "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png" + install -Dm644 "browser/branding/official/content/about-logo@2x.png" \ + "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png" + + install -Dm644 ../$pkgname.desktop \ + "$pkgdir/usr/share/applications/$pkgname.desktop" + + # fix permissions on extensions folders + chmod 755 "$pkgdir"/usr/lib/$pkgname/browser/extensions/*/icons # Use system-provided dictionaries - rm -rf "$pkgdir/usr/lib/$pkgname/"{dictionaries,hyphenation} - ln -s /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" - ln -s /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" + rm -r "$pkgdir"/usr/lib/$pkgname/dictionaries + ln -Ts /usr/share/hunspell "$pkgdir/usr/lib/$pkgname/dictionaries" + ln -Ts /usr/share/hyphen "$pkgdir/usr/lib/$pkgname/hyphenation" + + # Install a wrapper to avoid confusion about binary path + install -Dm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END +#!/bin/sh +exec /usr/lib/$pkgname/$pkgname "\$@" +END - # Replace duplicate binary with symlink + # Replace duplicate binary with wrapper # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 - ln -sf $pkgname "$pkgdir/usr/lib/$pkgname/$pkgname-bin" + ln -srf "$pkgdir/usr/bin/$pkgname" \ + "$pkgdir/usr/lib/$pkgname/$pkgname-bin" } |