Pkgfile (4873B)
1 # Description: The Mozilla Firefox browser with Alsa support 2 # URL: https://www.mozilla.com/firefox/ 3 # Maintainer: Emmett1, emmett1 dot 2miligrams at protonmail dot com 4 # Depends on: alsa-lib aom autoconf-2.13 brotli cbindgen dav1d dbus-glib ffmpeg graphite2 libevent libnotify libvpx libwebp libxkbcommon nodejs nss unzip xorg-libxcomposite xorg-libxcursor xorg-libxinerama xorg-libxt zip 5 # Optional: apulse jack pulseaudio pipewire sndio sccache lld wayland 6 7 name=firefox 8 version=140.0.4 9 release=1 10 source=(https://ftp.mozilla.org/pub/$name/releases/$version/source/$name-$version.source.tar.xz 11 firefox.desktop 12 fix-target-detection.patch 13 node-stdout-nonblocking-wrapper) 14 15 build() { 16 chmod a+x $SRC/node-stdout-nonblocking-wrapper 17 18 cd $name-$version 19 20 for p in $SRC/*.patch; do 21 patch -p1 -i $p 22 done 23 24 if [ "$(/usr/bin/python3 -c "import sys; print(sys.stdout.encoding)")" != 'utf-8' ]; then 25 printf "\e[031mError: set an UTF-8 locale to compile this!\033[0m\n" 26 exit 1 27 fi 28 29 prt-get isinst sccache >/dev/null && export RUSTC_WRAPPER='/usr/bin/sccache' 30 mkdir -p "$PKGMK_SOURCE_DIR/rust" 31 export CARGO_HOME="$PKGMK_SOURCE_DIR/rust" 32 33 export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none 34 export MOZBUILD_STATE_PATH=${PWD}/mozbuild 35 36 cat > .mozconfig << EOF 37 export NODEJS="$SRC/node-stdout-nonblocking-wrapper" 38 mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-shared 39 unset MOZ_TELEMETRY_REPORTING 40 ac_add_options --prefix=/usr 41 ac_add_options --libdir=/usr/lib 42 ac_add_options --enable-strip 43 ac_add_options --enable-release 44 ac_add_options --enable-install-strip 45 ac_add_options --enable-official-branding 46 ac_add_options --enable-application=browser 47 ac_add_options --enable-optimize 48 ac_add_options --with-system-ffi 49 ac_add_options --with-system-jpeg 50 ac_add_options --with-system-libvpx 51 ac_add_options --with-system-nspr 52 ac_add_options --with-system-nss 53 ac_add_options --with-system-pixman 54 ac_add_options --without-system-png 55 ac_add_options --with-system-webp 56 ac_add_options --with-system-zlib 57 ac_add_options --without-wasm-sandboxed-libraries 58 ac_add_options --disable-eme 59 ac_add_options --disable-tests 60 ac_add_options --disable-vtune 61 ac_add_options --disable-updater 62 ac_add_options --disable-jemalloc 63 ac_add_options --disable-elf-hack 64 ac_add_options --disable-callgrind 65 ac_add_options --disable-profiling 66 ac_add_options --disable-necko-wifi 67 ac_add_options --disable-crashreporter 68 ac_add_options --disable-accessibility 69 ac_add_options --disable-debug 70 ac_add_options --disable-debug-symbols 71 ac_add_options --disable-parental-controls 72 ac_add_options --disable-system-extension-dirs 73 EOF 74 75 # unicode internationalization 76 prt-get isinst icu >/dev/null && \ 77 echo 'ac_add_options --with-system-icu' >> .mozconfig 78 79 # audio 80 PKGMK_FFAUDIO="alsa" 81 [ -e /usr/lib/libpulse.so -o -e /usr/lib/apulse/libpulse.so ] && PKGMK_FFAUDIO+=",pulseaudio" 82 [ -e /usr/lib/libjack.so ] && PKGMK_FFAUDIO+=",jack" 83 [ -e /usr/lib/libsndio.so ] && PKGMK_FFAUDIO+=",sndio" 84 echo "ac_add_options --enable-audio-backends=${PKGMK_FFAUDIO}" >> .mozconfig 85 86 if prt-get isinst wayland xorg-server >/dev/null ; then 87 echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-x11-wayland' >> .mozconfig 88 elif prt-get isinst wayland 2>/dev/null ; then 89 echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-wayland-only' >> .mozconfig 90 else 91 echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-x11-only' >> .mozconfig 92 fi 93 94 if [ -e '/usr/bin/ccache' ]; then 95 echo 'ac_add_options --enable-ccache' >> .mozconfig 96 PATH=$(echo ${PATH} | awk -v RS=: -v ORS=: '/ccache/ {next} {print}' | sed 's/:*$//') 97 fi 98 99 export CFLAGS="$CFLAGS -w" 100 export CXXFLAGS="$CXXFLAGS -w" 101 export LDFLAGS="$LDFLAGS -Wl,-rpath=/usr/lib/firefox,--enable-new-dtags" 102 103 if prt-get isinst lld >/dev/null; then 104 echo 'ac_add_options --enable-linker=lld' >> .mozconfig 105 export LDFLAGS+=" -Wl,--thinlto-jobs=$((JOBS / 2))" 106 else 107 echo 'ac_add_options --enable-linker=bfd' >> .mozconfig 108 fi 109 110 export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib RUSTFLAGS="-C opt-level=2 $RUSTFLAGS" 111 export MOZ_MAKE_FLAGS="-j ${JOBS-1}" 112 113 # Disable notification when build system has finished 114 export MOZ_NOSPAM=1 115 116 # python/mach/mach/mixin/process.py fails to detect SHELL 117 export SHELL='/bin/bash' 118 119 ./mach build 120 DESTDIR=$PKG ./mach install 121 122 # Remove crap 123 rm -r $PKG/usr/lib/firefox/browser/features || true 124 rm $PKG/usr/lib/firefox/removed-files || true 125 126 install -D -m 0644 $SRC/firefox.desktop $PKG/usr/share/applications/firefox.desktop 127 128 mkdir -p $PKG/etc/revdep.d 129 echo "/usr/lib/firefox" > $PKG/etc/revdep.d/firefox 130 131 mkdir -p $PKG/usr/share/pixmaps 132 ln -s /usr/lib/firefox/browser/chrome/icons/default/default128.png \ 133 $PKG/usr/share/pixmaps/firefox.png 134 }