# Description: The Mozilla Firefox browser with Alsa support # URL: https://www.mozilla.com/firefox/ # Maintainer: John McQuah, jmcquah at disroot dot org # Depends on: alsa-lib aom autoconf-2.13 brotli cbindgen clang dav1d dbus-glib ffmpeg graphite2 libevent libnotify libvpx libwebp libxkbcommon nodejs nss unzip xorg-libxcomposite xorg-libxcursor xorg-libxinerama xorg-libxt zip # Optional: apulse jack pulseaudio pipewire sndio sccache lld wasi-libc++ wayland name=firefox version=125.0.2 release=1 source=(https://ftp.mozilla.org/pub/$name/releases/$version/source/$name-$version.source.tar.xz firefox.desktop icu-linebreak-classes.patch node-stdout-nonblocking-wrapper) build() { cd $name-$version for p in $SRC/*.patch; do patch -p1 -i $p done if [ "$(/usr/bin/python3 -c "import sys; print(sys.stdout.encoding)")" != 'utf-8' ]; then printf "\e[031mError: set an UTF-8 locale to compile this!\033[0m\n" exit 1 fi prt-get isinst sccache && export RUSTC_WRAPPER='/usr/bin/sccache' mkdir -p "$PKGMK_SOURCE_DIR/rust" export CARGO_HOME="$PKGMK_SOURCE_DIR/rust" cat <<- EOF > .mozconfig export NODEJS="$SRC/node-stdout-nonblocking-wrapper" mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-shared unset MOZ_TELEMETRY_REPORTING ac_add_options --prefix=/usr ac_add_options --enable-application=browser ac_add_options --with-system-jpeg ac_add_options --with-system-zlib ac_add_options --with-system-png ac_add_options --with-system-nspr ac_add_options --with-system-nss ac_add_options --with-system-libevent ac_add_options --with-system-libvpx ac_add_options --with-system-webp ac_add_options --enable-av1 ac_add_options --enable-system-ffi ac_add_options --enable-system-pixman ac_add_options --enable-optimize ac_add_options --enable-release ac_add_options --enable-rust-simd ac_add_options --enable-sandbox ac_add_options --enable-official-branding ac_add_options --with-distribution-id=nu.crux ac_add_options --enable-lto=thin ac_add_options --disable-tests ac_add_options --disable-debug-symbols ac_add_options --disable-updater ac_add_options --disable-crashreporter ac_add_options --disable-necko-wifi ac_add_options --disable-parental-controls ac_add_options --disable-elf-hack EOF # audio PKGMK_FFAUDIO="alsa" [ -e /usr/lib/libpulse.so -o -e /usr/lib/apulse/libpulse.so ] && PKGMK_FFAUDIO+=",pulseaudio" [ -e /usr/lib/libjack.so ] && PKGMK_FFAUDIO+=",jack" [ -e /usr/lib/libsndio.so ] && PKGMK_FFAUDIO+=",sndio" echo "ac_add_options --enable-audio-backends=${PKGMK_FFAUDIO}" >> .mozconfig # unicode internationalization prt-get isinst icu 2>/dev/null && echo 'ac_add_options --with-system-icu' >> .mozconfig if prt-get isinst wayland xorg-server 2>/dev/null ; then echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-x11-wayland' >> .mozconfig elif prt-get isinst wayland 2>/dev/null ; then echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-wayland-only' >> .mozconfig else echo 'ac_add_options --enable-default-toolkit=cairo-gtk3-x11-only' >> .mozconfig fi # use llvm linker, if present prt-get isinst lld && \ { echo 'ac_add_options --enable-linker=lld' >> .mozconfig; export LDFLAGS+=" -Wl,--thinlto-jobs=$((JOBS / 2))"; } || \ echo 'ac_add_options --enable-linker=bfd' >> .mozconfig local clangVer=$(/usr/bin/clang -dumpversion) local cruxVer=$(/usr/bin/crux | cut -d' ' -f3) # sandboxed web apps prt-get isinst lld wasi-libc++ && \ echo 'ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot' >> .mozconfig \ || echo 'ac_add_options --without-wasm-sandboxed-libraries' >> .mozconfig if [ -e '/usr/bin/ccache' ]; then echo 'ac_add_options --enable-ccache' >> .mozconfig export OS_CCACHE_COMPILERCHECK="$clangVer $cruxVer" export CCACHE_COMPILERCHECK="string:$OS_CCACHE_COMPILERCHECK" PATH=$(echo ${PATH} | awk -v RS=: -v ORS=: '/ccache/ {next} {print}' | sed 's/:*$//') fi export CC=clang CXX=clang++ AR=llvm-ar NM=llvm-nm RANLIB=llvm-ranlib RUSTFLAGS="-C opt-level=2 $RUSTFLAGS" export MOZ_MAKE_FLAGS="-j ${JOBS-1}" export MOZBUILD_STATE_PATH="$SRC"/mozbuild # Disable notification when build system has finished export MOZ_NOSPAM=1 # Specify the Python environment to use #export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=pip export PIP_NETWORK_INSTALL_RESTRICTED_VIRTUALENVS=mach mkdir $SRC/bin ln -s /usr/bin/pip3 $SRC/bin/pip ln -s /usr/bin/python3 $SRC/bin/python export PATH="$SRC/bin:$PATH" # Show flags set at the beginning echo "Current BINDGEN_CFLAGS:\t${BINDGEN_CFLAGS:-no value set}" echo "Current CFLAGS:\t\t${CFLAGS:-no value set}" echo "Current CXXFLAGS:\t\t${CXXFLAGS:-no value set}" echo "Current LDFLAGS:\t\t${LDFLAGS:-no value set}" echo "Current RUSTFLAGS:\t\t${RUSTFLAGS:-no value set}" # python/mach/mach/mixin/process.py fails to detect SHELL export SHELL='/bin/bash' ./mach build #./mach build toolkit/library/rust DESTDIR=$PKG ./mach install install -d $PKG/usr/share/pixmaps ln -s /usr/lib/firefox/browser/chrome/icons/default/default48.png $PKG/usr/share/pixmaps/firefox.png install -D -m 0644 $SRC/firefox.desktop $PKG/usr/share/applications/firefox.desktop # Remove crap rm -r $PKG/usr/lib/firefox/browser/features rm $PKG/usr/lib/firefox/removed-files install -d $PKG/etc/revdep.d echo "/usr/lib/firefox" > $PKG/etc/revdep.d/firefox }