# This is the recipe.sh script. It is executed by BPM in a temporary directory when compiling a source package # BPM Expects the source code to be extracted into the automatically created 'source' directory which can be accessed using $BPM_SOURCE # BPM Expects the output files to be present in the automatically created 'output' directory which can be accessed using $BPM_OUTPUT # The prepare function is executed in the root of the temp directory # This function is used for putting downloaded files to the correct location or applying patches prepare() { cd "$BPM_SOURCE" # Generate mozconfig cat > mozconfig <<-EOF ac_add_options --enable-application=browser mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-build-dir 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 --disable-elf-hack ac_add_options --disable-bootstrap # Branding ac_add_options --enable-official-branding ac_add_options --enable-update-channel=release ac_add_options --with-unsigned-addon-scopes=app,system ac_add_options --allow-addon-sideload export MOZ_APP_REMOTINGNAME=Firefox # System libraries ac_add_options --with-system-nspr ac_add_options --with-system-nss ac_add_options --without-wasm-sandboxed-libraries # Features ac_add_options --enable-alsa ac_add_options --enable-jack ac_add_options --disable-crashreporter ac_add_options --disable-updater ac_add_options --disable-tests EOF } # The build function is executed in the source directory # This function is used to compile the source code build() { export MOZ_NOSPAM=1 export MOZBUILD_STATE_PATH="$BPM_SOURCE"/mozbuild export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none ./mach build } # The package function is executed in the source directory # This function is used to move the compiled files into the output directory package() { export MOZBUILD_STATE_PATH="$BPM_SOURCE"/mozbuild export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=none DESTDIR="$BPM_OUTPUT" ./mach install # Install additional files install -Dm644 "$BPM_WORKDIR"/vendor.js "$BPM_OUTPUT"/usr/lib/firefox/browser/defaults/preferences install -Dm644 "$BPM_WORKDIR"/firefox.desktop "$BPM_OUTPUT"/usr/share/applications/firefox.desktop # Install icon files for size in 16 22 24 32 48 128 256; do install -Dm644 browser/branding/official/default${size}.png "$BPM_OUTPUT"/usr/share/icons/hicolor/${size}x${size}/apps/firefox.png done }