summaryrefslogtreecommitdiff
path: root/PKGBUILD
blob: a3a484a43efe54fac94d24f8c52f3364b21bb55a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# Maintainer: jc_gargma <jc_gargma@iserlohn-fortress.net>
# Maintainer (Arch): Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Aqua-sama <aqua@iserlohn-fortress.net>
# Contributor (Arch): Ionut Biru <ibiru@archlinux.org>
# Contributor (Arch): Jakub Schmidtke <sjakub@gmail.com>

# # I maintain this because:
# Arch version uses eme
# Arch version uses git
# Arch version uses python2
# Arch version uses clang
# Arch version requires signed addons
# Arch version doesn't remove system addons
# Arch version enables debug symbols
# Arch version lacks privacy and security by default

pkgname=firefox
pkgver=69.0
pkgrel=1
pkgdesc="Standalone web browser from mozilla.org"
arch=(x86_64)
license=(MPL GPL LGPL)
url="https://www.mozilla.org/firefox/"
depends=(gtk3 mozilla-common libxt startup-notification mime-types dbus-glib
         ffmpeg ttf-font libpulse alsa-lib
         bzip2 libffi icu libjpeg-turbo libevent libvpx nspr nss pixman libpng sqlite libwebp zlib)
makedepends=(unzip zip diffutils python-setuptools yasm mesa imake inetutils
             xorg-server-xvfb autoconf2.13 rust clang llvm jack gtk2
             python nodejs python-psutil cbindgen nasm python2)
optdepends=('networkmanager: Location detection via available WiFi networks'
            'libnotify: Notification integration'
            'alsa-utils: ALSA support'
            'jack: Jack support'
            'pulseaudio: PulseAudio support'
            'speech-dispatcher: Text-to-Speech'
            'hunspell-en_CA: Spell checking, Canadian English')
options=(!emptydirs !makeflags)
source=("https://archive.mozilla.org/pub/$pkgname/releases/$pkgver/source/$pkgname-$pkgver.source.tar.xz"{,.asc}
        $pkgname.desktop $pkgname-symbolic.svg
        distribution.ini
        mozconfig.in
        mozconfig.common.override
        0001-Use-remoting-name-for-GDK-application-names.patch
        pgo-1.patch
        moz.configure.diff
        package-manifest.diff)
sha256sums=('413c3febdfeb69eade818824eecbdb11eaeda71de229573810afd641ba741ec5'
            'SKIP'
            '54dcf5e1b91db3f586a7e27814552f96578b9d9495b7b10b268e36f64b49d4d1'
            '9a1a572dc88014882d54ba2d3079a1cf5b28fa03c5976ed2cb763c93dabbd797'
            '0ba4d1a619a3a5750a5a48c6bff8c6a69d3aa4be4c303032c5979ab5f68db208'
            '1cc0730e0f0285f45f30feeeee6d7757931b25263b35b041abd71c2e0486210d'
            'dcf70d24eedab79d811974a75663f0e84c5efca420da61fc444ebe311d0cada9'
            'ab07ab26617ff76fce68e07c66b8aa9b96c2d3e5b5517e51a3c3eac2edd88894'
            'a8c15c9d54ef8b360c0932f4ccf5e74954f14e9a9c2a1ae924b6c392075b2b8c'
            'ad8a270e1b2affb098440f82517c3952207b28ebf604fef695dad3e29a5ba30e'
            '927e400d6920b98d2fe7db2b6498f195135909a76e0da49441223956364d8227')
validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353')  # Mozilla Software Releases

prepare() {
#   mkdir mozbuild
  cd ${pkgname}-${pkgver}

  # https://bugzilla.mozilla.org/show_bug.cgi?id=1530052
  patch -Np1 -i ../0001-Use-remoting-name-for-GDK-application-names.patch

  # Apply pgo patches
  patch -p0 $srcdir/${pkgname}-${pkgver}/security/sandbox/linux/moz.build $srcdir/pgo-1.patch

  # Add the custom mozconfig
  cp $srcdir/mozconfig.in $srcdir/${pkgname}-${pkgver}/.mozconfig

  # MOZ_TELEMETRY_REPORTING only applied correctly when set in this override file
  cp $srcdir/mozconfig.common.override $srcdir/${pkgname}-${pkgver}/build/mozconfig.common.override


  # Disable various components at the source level
  #sed -i 's|[;]1|;0|' $srcdir/${pkgname}-${pkgver}/toolkit/components/telemetry/TelemetryStartup.manifest
  sed -i 's/;1/;0/' $srcdir/${pkgname}-${pkgver}/toolkit/components/telemetry/components.conf

  # Patch out health reporting so that MOZ_DATA_REPORTING=0 can be applied.
  patch -p0 $srcdir/${pkgname}-${pkgver}/browser/moz.configure $srcdir/moz.configure.diff

  # Remove @RESPATH@/browser/features/* to prevent system addons from being part of the output package.
  patch -p0 $srcdir/${pkgname}-${pkgver}/browser/installer/package-manifest.in $srcdir/package-manifest.diff

  # Hide mobile promo
  echo ".fxaMobilePromo {  display: none !important; }" >> browser/themes/shared/incontentprefs/preferences.inc.css
  # Hide plugindeprecation-notice
  echo "#plugindeprecation-notice {  display: none !important; }" >> toolkit/mozapps/extensions/content/extensions.css
  # Hide warnings on unsigned extensions
  echo ".warning{display: none!important; } .addon[notification=warning]{background-image: none!important;}" >> toolkit/mozapps/extensions/content/extensions.css


}

build() {
  cd ${pkgname}-${pkgver}

  export MOZ_NOSPAM=1
  export MOZBUILD_STATE_PATH="$srcdir/mozbuild"
  export CFLAGS="$CFLAGS -fstack-protector-all -O3"
  export CXXFLAGS="$CXXFLAGS -fstack-protector-all -O3"
  export LDFLAGS="$LDFLAGS,-fuse-ld=gold"
  # LTO needs more open files
  ulimit -n 4096
  msg2 "Building optimized browser..."
  xvfb-run -a -n 97 -s "-screen 0 1600x1200x24" ./mach build

  msg2 "Building symbol archive..."
  ./mach buildsymbols
}

package() {
  cd ${pkgname}-${pkgver}
  DESTDIR="$pkgdir" ./mach install


  install -Dm644 $srcdir/distribution.ini \
  "$pkgdir/usr/lib/$pkgname/distribution/distribution.ini"

  # don't duplicate the binary, use a symlink instead
  rm "$pkgdir/usr/bin/firefox"
  ln -s "/usr/lib/$pkgname/firefox" "$pkgdir/usr/bin/firefox"


  # icons
  for i in 16 22 24 32 48 64 128 256; do
    install -Dm644 browser/branding/official/default$i.png \
      "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png"
  done
  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-symbolic.svg \
    "$pkgdir/usr/share/icons/hicolor/symbolic/apps/$pkgname-symbolic.svg"

  # install desktop file
  install -Dm644 ../$pkgname.desktop \
    "$pkgdir/usr/share/applications/$pkgname.desktop"

}