Blob PKGBUILD
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 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 |
# Maintainer: Jan Alexander Steffens (heftig) <heftig@archlinux.org> # Contributor: Ionut Biru <ibiru@archlinux.org> # Contributor: Jakub Schmidtke <sjakub@gmail.com> pkgname=firefox pkgver=129.0.1 pkgrel=2 pkgdesc="Fast, Private & Safe Web Browser" url="https://www.mozilla.org/firefox/" arch=(x86_64) license=(MPL-2.0) depends=( alsa-lib at-spi2-core bash cairo dbus ffmpeg fontconfig freetype2 gcc-libs gdk-pixbuf2 glib2 glibc gtk3 hicolor-icon-theme libpulse libx11 libxcb libxcomposite libxdamage libxext libxfixes libxrandr libxss libxt mime-types nspr nss pango ttf-font ) makedepends=( cbindgen clang diffutils imake inetutils jack lld llvm mesa nasm nodejs python rust unzip wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi xorg-server-xvfb yasm zip sccache ) optdepends=( 'hunspell-en_US: Spell checking, American English' 'libnotify: Notification integration' 'networkmanager: Location detection via available WiFi networks' 'speech-dispatcher: Text-to-Speech' 'xdg-desktop-portal: Screensharing with Wayland' ) options=( !emptydirs !lto !makeflags ) source=( https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc} 0001-always-restore-tabs-pref.patch $pkgname-symbolic.svg $pkgname.desktop org.mozilla.$pkgname.metainfo.xml 0001-Bug-1898476-Wayland-Move-MozContainerSurfaceLock-fro.patch 0002-Bug-1898476-Wayland-Provide-surface-lock-by-GtkCompo.patch 0003-Bug-1898476-Wayland-Lock-Wayland-surface-before-Swap.patch 0004-Bug-1912663-Fix-some-build-issues-with-cbindgen-0.27.patch ) validpgpkeys=( # Mozilla Software Releases <release@mozilla.com> # https://blog.mozilla.org/security/2023/05/11/updated-gpg-key-for-signing-firefox-releases/ 14F26682D0916CDD81E37B6D61B7B526D98F0353 ) sha256sums=('9ddfe823e4c22167a77e47f56a8afde0d9621784a9e4e5dba4906e758175c073' 'SKIP' 'b38b8ddea2cef26229e1033b3a8f6b83d0a24652ddedbbdfbda3a9692e1fd24a' 'a9b8b4a0a1f4a7b4af77d5fc70c2686d624038909263c795ecc81e0aec7711e9' '1f241fdc619f92a914c75aece7c7c717401d7467c9a306458e106b05f34e5044' '58d78ce57b3ee936bc966458d6b20ab142d02a897bbe924b3f26717af0c5bee1' 'f4e1db05768325bce5f38b67263c47b3aa4038cfadbdbf8a9e0cbec061a58c57' '588b0b94fe188c5f0a133a8bfd88d7d60123315e6f509b119728409ff164419f' 'cbe19f6c95d27d50e3b6664907f8d084784162ea35d5d98fadbb91dbb77ef700' 'dd2aba1c02c21b89ceed0713a6aa0241365fe79b1e3a4d21cdcd7231db6fab5e') b2sums=('e3c1a3db5a481839c862bef6ace6f977e601fc85f308980f7d0073a3ab04b5ac611ed3edf3fc4b71c09008e0f54009f78b64e64c5d0cb63c86798138031bfee1' 'SKIP' 'a22eaee217be2ca5cf79ebb7f874643a4c956593e25ba8bf282e5b991b5d1cea6fc317248a8bdbd81b05591b22635e13742f180d278f99b04a442d8e35525686' '63a8dd9d8910f9efb353bed452d8b4b2a2da435857ccee083fc0c557f8c4c1339ca593b463db320f70387a1b63f1a79e709e9d12c69520993e26d85a3d742e34' 'd07557840097dd48a60c51cc5111950781e1c6ce255557693bd11306c7a9258b2a82548329762148f117b2295145f9e66e0483a18e2fe09c5afcffed2e4b8628' '2ce33432f8a73a4f1a412b7a065d3c124e1ca9f6bdf3fad0407e897efc0840f8ef43eeeb1b9bef4a102d9fac0b2c4a2ef205726b817f83fe9c3742d076778b14' '2d4c421aec450c85c25554a8f312df8b74bb184e13fdd631ec7b34abbc3e5b1015fdef8d7ee637638c916f8bdd9cecfcb9c2713055471feb863888fd238e288e' '884183ba979c844a2119dbb28cb1bbe64228b1a1a6b020abea9dfb5bd60487853a1da1012e157b8149f3e89b3d35c76042aa143b28fd55b0120edb03c63f9a81' 'b649c5c3edc4a0319d012ff0c12dbc97f3bb244220c9db5334a921864f57e05506943f50ccd7ee832b881ace642ce294892e25eaa555716d2dcc726f4790c605' 'eb84ee67ce049351e07cfd02f7bd024fb31e041f839c105e3bc15a904632b6c668bca494aa721f0c092172dc45ad2d576c9f6d45f15877f7189e15ab403a45c5') # Google API keys (see http://www.chromium.org/developers/how-tos/api-keys) # Note: These are for Arch Linux use ONLY. For your own distribution, please # get your own set of keys. Feel free to contact foutrelis@archlinux.org for # more information. _google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM prepare() { mkdir mozbuild cd firefox-$pkgver # Backport fixes for NVIDIA crashes # https://gitlab.archlinux.org/archlinux/packaging/packages/firefox/-/issues/7 # https://bugzilla.mozilla.org/show_bug.cgi?id=1898476 patch -Np1 -i ../0001-Bug-1898476-Wayland-Move-MozContainerSurfaceLock-fro.patch patch -Np1 -i ../0002-Bug-1898476-Wayland-Provide-surface-lock-by-GtkCompo.patch patch -Np1 -i ../0003-Bug-1898476-Wayland-Lock-Wayland-surface-before-Swap.patch # Fix build with cinbdgen 0.27.0 # https://bugzilla.mozilla.org/show_bug.cgi?id=1912663 patch -Np1 -i ../0004-Bug-1912663-Fix-some-build-issues-with-cbindgen-0.27.patch echo -n "$_google_api_key" >google-api-key cat >../mozconfig <<END ac_add_options --enable-application=browser mk_add_options MOZ_OBJDIR=${PWD@Q}/obj ac_add_options --prefix=/usr ac_add_options --enable-release ac_add_options --enable-hardening ac_add_options --enable-optimize ac_add_options --enable-rust-simd ac_add_options --enable-linker=lld ac_add_options --disable-install-strip ac_add_options --disable-elf-hack ac_add_options --disable-bootstrap ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot ac_add_options --with-ccache=sccache # Branding ac_add_options --enable-official-branding ac_add_options --enable-update-channel=release ac_add_options --with-distribution-id=org.archlinux ac_add_options --with-unsigned-addon-scopes=app,system ac_add_options --allow-addon-sideload export MOZILLA_OFFICIAL=1 export MOZ_APP_REMOTINGNAME=$pkgname # Keys ac_add_options --with-google-location-service-api-keyfile=${PWD@Q}/google-api-key ac_add_options --with-google-safebrowsing-api-keyfile=${PWD@Q}/google-api-key # System libraries ac_add_options --with-system-nspr ac_add_options --with-system-nss # Features ac_add_options --enable-alsa ac_add_options --enable-jack ac_add_options --enable-crashreporter ac_add_options --disable-updater ac_add_options --disable-tests END patch -Np1 -i ../0001-always-restore-tabs-pref.patch } build() { cd firefox-$pkgver export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip export MOZBUILD_STATE_PATH="$srcdir/mozbuild" export MOZ_BUILD_DATE="$(date -u${SOURCE_DATE_EPOCH:+d @$SOURCE_DATE_EPOCH} +%Y%m%d%H%M%S)" export MOZ_NOSPAM=1 # malloc_usable_size is used in various parts of the codebase CFLAGS="${CFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}" CXXFLAGS="${CXXFLAGS/_FORTIFY_SOURCE=3/_FORTIFY_SOURCE=2}" # Breaks compilation since https://bugzilla.mozilla.org/show_bug.cgi?id=1896066 CFLAGS="${CFLAGS/-fexceptions/}" CXXFLAGS="${CXXFLAGS/-fexceptions/}" # LTO needs more open files ulimit -n 4096 echo "Building optimized browser..." cat >.mozconfig ../mozconfig - <<END #nothing END ./mach build --priority normal } package() { cd firefox-$pkgver DESTDIR="$pkgdir" ./mach install local vendorjs="$pkgdir/usr/lib/$pkgname/browser/defaults/preferences/vendor.js" install -Dvm644 /dev/stdin "$vendorjs" <<END // Use LANG environment variable to choose locale pref("intl.locale.requested", ""); // Use system-provided dictionaries pref("spellchecker.dictionary_path", "/usr/share/hunspell"); // Disable default browser checking. pref("browser.shell.checkDefaultBrowser", false); // Don't disable extensions in the application directory pref("extensions.autoDisableScopes", 11); // Enable GNOME Shell search provider pref("browser.gnome-search-provider.enabled", true); // Patch leaves the setting as off by default pref("browser.sessionstore.always_restore_tabs", true); END local distini="$pkgdir/usr/lib/$pkgname/distribution/distribution.ini" install -Dvm644 /dev/stdin "$distini" <<END [Global] id=archlinux version=1.0 about=Mozilla Firefox for Arch Linux [Preferences] app.distributor=archlinux app.distributor.channel=$pkgname app.partner.archlinux=archlinux END local i theme=official for i in 16 22 24 32 48 64 128 256; do install -Dvm644 browser/branding/$theme/default$i.png \ "$pkgdir/usr/share/icons/hicolor/${i}x${i}/apps/$pkgname.png" done install -Dvm644 browser/branding/$theme/content/about-logo.png \ "$pkgdir/usr/share/icons/hicolor/192x192/apps/$pkgname.png" install -Dvm644 browser/branding/$theme/content/about-logo@2x.png \ "$pkgdir/usr/share/icons/hicolor/384x384/apps/$pkgname.png" install -Dvm644 browser/branding/$theme/content/about-logo.svg \ "$pkgdir/usr/share/icons/hicolor/scalable/apps/$pkgname.svg" install -Dvm644 ../$pkgname-symbolic.svg -t "$pkgdir/usr/share/icons/hicolor/symbolic/apps" install -Dvm644 ../$pkgname.desktop -t "$pkgdir/usr/share/applications" install -Dvm644 ../org.mozilla.$pkgname.metainfo.xml -t "$pkgdir/usr/share/metainfo" # Install a wrapper to avoid confusion about binary path install -Dvm755 /dev/stdin "$pkgdir/usr/bin/$pkgname" <<END #!/bin/sh exec /usr/lib/$pkgname/firefox "\$@" END # Replace duplicate binary with wrapper # https://bugzilla.mozilla.org/show_bug.cgi?id=658850 ln -srfv "$pkgdir/usr/bin/$pkgname" "$pkgdir/usr/lib/$pkgname/firefox-bin" # Use system certificates local nssckbi="$pkgdir/usr/lib/$pkgname/libnssckbi.so" if [[ -e $nssckbi ]]; then ln -srfv "$pkgdir/usr/lib/libnssckbi.so" "$nssckbi" fi local sprovider="$pkgdir/usr/share/gnome-shell/search-providers/$pkgname.search-provider.ini" install -Dvm644 /dev/stdin "$sprovider" <<END [Shell Search Provider] DesktopId=$pkgname.desktop BusName=org.mozilla.${pkgname//-/_}.SearchProvider ObjectPath=/org/mozilla/${pkgname//-/_}/SearchProvider Version=2 END } # vim:set sw=2 sts=-1 et: |