# This is the source.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" # Fix build with glibc 2.43 # https://bugzilla.mozilla.org/show_bug.cgi?id=1999625 patch -Np1 -i "$BPM_WORKDIR"/0001-Patch-glsl-optimizer-to-build-with-glibc-2.43.patch # https://bugzilla.mozilla.org/show_bug.cgi?id=2033279 sed -i 's/b9432f9ed39742015f4bb4c3e75c89a2b9a9eef943dd0fd7cd889fddd1e6d39c/9456ca46168ef86c98399a2536f577ef7be3cdde90c0c51392d8ac48519d3fae/g' third_party/rust/encoding_rs/.cargo-checksum.json patch -Rp1 -i ../rust-build.patch patch -Np1 -i "$BPM_WORKDIR"/0002-Bug-2033279-Make-enable-rust-simd-work-with-Rust-1.9.patch patch -i "$BPM_WORKDIR"/remove-duplicate-gkrust-features.diff "$BPM_SOURCE"/toolkit/library/rust/gkrust-features.mozbuild # Generate mozconfig cat > mozconfig <<-EOF ac_add_options --enable-application=browser mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/librewolf-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 ac_add_options --enable-update-channel=release # Branding ac_add_options --with-app-name=librewolf ac_add_options --with-app-basename=librewolf export MOZ_APP_REMOTINGNAME=Librewolf # 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 --with-unsigned-addon-scopes=app,system ac_add_options --allow-addon-sideload 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 icon files for size in 16 32 48 64 128; do install -Dm644 "$BPM_SOURCE"/browser/branding/librewolf/default"$size".png "$BPM_OUTPUT"/usr/share/icons/hicolor/"$size"x"$size"/apps/librewolf.png done # Install librewolf desktop file install -Dm644 ../librewolf.desktop "$BPM_OUTPUT"/usr/share/applications/librewolf.desktop # Install package license install -Dm644 "$BPM_SOURCE"/LICENSE "$BPM_OUTPUT"/usr/share/licenses/librewolf/LICENSE }