Files
IronFox/scripts/env_common.sh
celenity efde2474fc IronFox v147.0.0.1
ironfox-oss/IronFox!117
____

## Changes

- [Fixed a bug that caused the Android search widget to appear transparent](https://gitlab.com/ironfox-oss/IronFox/-/issues/225).
- [Fixed a bug that prevented the user's real locale from being reflected in certain cases when locale spoofing was disabled](f495970cda).
- [Fixed a crash that occurred upon navigating to certain settings from private browsing](7ac50880c6).
- [Fixed an issue that prevented Gecko preferences from being properly applied for Bundle builds](https://gitlab.com/ironfox-oss/IronFox/-/issues/227).
- [Updated certificate pinning entries](86733dcd35).
- Other minor tweaks and fixes.

MR-author: celenity <celenity@celenity.dev>
Co-authored-by: Weblate <hosted@weblate.org>
Approved-by: celenity <celenity@celenity.dev>
Merged-by: celenity <celenity@celenity.dev>
2026-01-16 04:01:45 +00:00

383 lines
12 KiB
Bash

# Caution: Should not be sourced directly!
# Use 'env_local.sh' or 'env_fdroid.sh' instead.
# Set platform
if [[ "${OSTYPE}" == "darwin"* ]]; then
export IRONFOX_PLATFORM='darwin'
else
export IRONFOX_PLATFORM='linux'
fi
# Set architecture
PLATFORM_ARCH=$(uname -m)
if [[ "${PLATFORM_ARCH}" == 'arm64' ]]; then
export IRONFOX_PLATFORM_ARCH='aarch64'
else
export IRONFOX_PLATFORM_ARCH='x86-64'
fi
# Get our current commit
## (This is ex. displayed at `about:buildconfig` in Gecko/Firefox)
export IRONFOX_REVISION="$(git log -1 --format="%H" | tail -n 1)"
# Outputs directory
if [[ -z ${IRONFOX_OUTPUTS+x} ]]; then
export IRONFOX_OUTPUTS="${outputsdir}"
fi
# Android NDK
if [[ -z ${IRONFOX_ANDROID_NDK+x} ]]; then
export IRONFOX_ANDROID_NDK="${android_ndk_dir}"
fi
export ANDROID_NDK_HOME="${IRONFOX_ANDROID_NDK}"
export ANDROID_NDK_ROOT="${IRONFOX_ANDROID_NDK}"
# Android SDK
if [[ -z ${IRONFOX_ANDROID_SDK+x} ]]; then
export IRONFOX_ANDROID_SDK="${android_sdk_dir}"
fi
export ANDROID_HOME="${IRONFOX_ANDROID_SDK}"
export ANDROID_SDK_ROOT="${IRONFOX_ANDROID_SDK}"
export PATH="${IRONFOX_ANDROID_SDK}/cmdline-tools/latest/bin:${PATH}"
# Application Services
if [[ -z ${IRONFOX_AS+x} ]]; then
export IRONFOX_AS="${application_services}"
fi
# Bundletool
if [[ -z ${IRONFOX_BUNDLETOOl+x} ]]; then
export IRONFOX_BUNDLETOOL="${bundletool}"
fi
# Gecko
if [[ -z ${IRONFOX_GECKO+x} ]]; then
export IRONFOX_GECKO="${mozilla_release}"
fi
## Android Components
export IRONFOX_AC="${IRONFOX_GECKO}/mobile/android/android-components"
## Fenix
export IRONFOX_FENIX="${IRONFOX_GECKO}/mobile/android/fenix"
# Gecko locales
if [[ -z ${IRONFOX_LOCALES+x} ]]; then
export IRONFOX_LOCALES=$(<"${patches}/locales")
fi
# Gecko l10n
if [[ -z ${IRONFOX_L10N_CENTRAL+x} ]]; then
export IRONFOX_L10N_CENTRAL="${l10n_central}"
fi
# Glean
if [[ -z ${IRONFOX_GLEAN+x} ]]; then
export IRONFOX_GLEAN="${glean}"
fi
# GNU make
if [[ -z ${IRONFOX_MAKE+x} ]]; then
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
export IRONFOX_MAKE='gmake'
else
export IRONFOX_MAKE='make'
fi
fi
# GNU sed
if [[ -z ${IRONFOX_SED+x} ]]; then
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
export IRONFOX_SED='gsed'
else
export IRONFOX_SED='sed'
fi
fi
# Gradle
if [[ -z ${IRONFOX_GRADLE+x} ]]; then
export IRONFOX_GRADLE="${gradle}"
fi
if [[ -z ${IRONFOX_GRADLE_CACHE+x} ]]; then
export IRONFOX_GRADLE_CACHE="${builddir}/gradle/cache"
fi
export CACHEDIR="${IRONFOX_GRADLE_CACHE}"
if [[ -z ${IRONFOX_GRADLE_HOME+x} ]]; then
export IRONFOX_GRADLE_HOME="${builddir}/.gradle"
fi
export GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}"
# Home
## (ex. used by our mozconfigs for setting the local Maven repo)
if [[ -z ${IRONFOX_HOME+x} ]]; then
export IRONFOX_HOME="${HOME}"
fi
# Java
if [[ -z ${IRONFOX_JAVA_HOME+x} ]]; then
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
export IRONFOX_JAVA_HOME='/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home'
else
export IRONFOX_JAVA_HOME='/usr/lib/jvm/temurin-17-jdk'
fi
fi
export JAVA_HOME="${IRONFOX_JAVA_HOME}"
export PATH="${IRONFOX_JAVA_HOME}/bin:${PATH}"
# libclang
if [[ -z ${IRONFOX_LIBCLANG+x} ]]; then
if [[ "${IRONFOX_PLATFORM}" == "darwin" ]]; then
export IRONFOX_LIBCLANG="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/lib"
else
export IRONFOX_LIBCLANG="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/musl/lib"
fi
fi
# llvm-profdata
if [[ -z ${IRONFOX_LLVM_PROFDATA+x} ]]; then
export IRONFOX_LLVM_PROFDATA="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/bin/llvm-profdata"
fi
export LLVM_PROFDATA="${IRONFOX_LLVM_PROFDATA}"
# Mach
## https://firefox-source-docs.mozilla.org/mach/usage.html#user-settings
## https://searchfox.org/mozilla-central/rev/f008b9aa/python/mach/mach/telemetry.py#95
## https://searchfox.org/mozilla-central/rev/f008b9aa/python/mach/mach/telemetry.py#284
export DISABLE_TELEMETRY=1
export MACHRC="${patches}/machrc"
export MOZCONFIG="${mozilla_release}/mozconfig"
# microG
if [[ -z ${IRONFOX_GMSCORE+x} ]]; then
export IRONFOX_GMSCORE="${gmscore}"
fi
export GRADLE_MICROG_VERSION_WITHOUT_GIT=1
# mozbuild
if [[ -z ${IRONFOX_MOZBUILD+x} ]]; then
export IRONFOX_MOZBUILD="${builddir}/.mozbuild"
fi
export MOZBUILD_STATE_PATH="${IRONFOX_MOZBUILD}"
# nproc
if [[ -z ${IRONFOX_NPROC+x} ]]; then
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
export IRONFOX_NPROC='sysctl -n hw.logicalcpu'
else
export IRONFOX_NPROC='nproc'
fi
fi
# NSS
if [[ -z ${IRONFOX_NSS_DIR+x} ]]; then
export IRONFOX_NSS_DIR="${application_services}/libs/desktop/${IRONFOX_PLATFORM}-${IRONFOX_PLATFORM_ARCH}/nss"
fi
export NSS_DIR="${IRONFOX_NSS_DIR}"
export NSS_STATIC=1
# IronFox prebuilds
if [[ -z ${IRONFOX_PREBUILDS+x} ]]; then
export IRONFOX_PREBUILDS="${prebuilds}"
fi
# Python (Glean)
export IRONFOX_GLEAN_PIP_ENV="${IRONFOX_GRADLE_HOME}/glean"
export GLEAN_PYTHON="$(which python)"
# Python (pip)
if [[ -z ${IRONFOX_PIP_ENV+x} ]]; then
export IRONFOX_PIP_ENV="${builddir}/pyenv"
fi
## For macOS, ensure that Python 3.9 is in PATH
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
export PATH="${PATH}:$(brew --prefix)/opt/python@3.9/Frameworks/Python.framework/Versions/3.9/bin"
fi
# Rust (cargo)
if [[ -z ${IRONFOX_CARGO_HOME+x} ]]; then
export IRONFOX_CARGO_HOME="${builddir}/.cargo"
fi
export CARGO="${IRONFOX_CARGO_HOME}/bin/cargo"
export CARGO_HOME="${IRONFOX_CARGO_HOME}"
export CARGO_INSTALL_ROOT="${IRONFOX_CARGO_HOME}"
export RUSTC="${IRONFOX_CARGO_HOME}/bin/rustc"
export RUSTDOC="${IRONFOX_CARGO_HOME}/bin/rustdoc"
export PATH="${IRONFOX_CARGO_HOME}/bin:${PATH}"
# Disable debug
export CARGO_PROFILE_DEV_DEBUG=false
export CARGO_PROFILE_DEV_DEBUG_ASSERTIONS=false
export CARGO_PROFILE_RELEASE_DEBUG=false
export CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS=false
### Disable HTTP debugging
export CARGO_HTTP_DEBUG=false
### Display progress bars
if [[ -z ${IRONFOX_CARGO_PROGRESS_BAR+x} ]]; then
export IRONFOX_CARGO_PROGRESS_BAR='always'
fi
export CARGO_TERM_PROGRESS_WHEN="${IRONFOX_CARGO_PROGRESS_BAR}"
export CARGO_TERM_PROGRESS_WIDTH=80
### Enable certificate revocation checks
export CARGO_HTTP_CHECK_REVOKE=true
### Enable colored output
if [[ -z ${IRONFOX_CARGO_COLORED_OUTPUT+x} ]]; then
export IRONFOX_CARGO_COLORED_OUTPUT='always'
fi
export CARGO_TERM_COLOR="${IRONFOX_CARGO_COLORED_OUTPUT}"
### Enable overflow checks
export CARGO_PROFILE_DEV_OVERFLOW_CHECKS=true
export CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS=true
### Enable performance optimizations
export CARGO_PROFILE_DEV_LTO=true
export CARGO_PROFILE_DEV_OPT_LEVEL=3
export CARGO_PROFILE_RELEASE_LTO=true
export CARGO_PROFILE_RELEASE_OPT_LEVEL=3
### Strip debug info
export CARGO_PROFILE_DEV_STRIP='debuginfo'
export CARGO_PROFILE_RELEASE_STRIP='debuginfo'
## rustup
if [[ -z ${IRONFOX_RUSTUP_HOME+x} ]]; then
export IRONFOX_RUSTUP_HOME="${builddir}/.rustup"
fi
export RUSTUP_HOME="${IRONFOX_RUSTUP_HOME}"
### Display progress bars
if [[ -z ${IRONFOX_RUSTUP_PROGRESS_BAR+x} ]]; then
export IRONFOX_RUSTUP_PROGRESS_BAR='always'
fi
export RUSTUP_TERM_PROGRESS_WHEN="${IRONFOX_RUSTUP_PROGRESS_BAR}"
### Enable colored output
if [[ -z ${IRONFOX_RUSTUP_COLORED_OUTPUT+x} ]]; then
export IRONFOX_RUSTUP_COLORED_OUTPUT='always'
fi
export RUSTUP_TERM_COLOR="${IRONFOX_RUSTUP_COLORED_OUTPUT}"
# uniffi-bindgen
if [[ -z ${IRONFOX_UNIFFI+x} ]]; then
export IRONFOX_UNIFFI="${uniffi}"
fi
# unifiedpush-ac
if [[ -z ${IRONFOX_UP_AC+x} ]]; then
export IRONFOX_UP_AC="${unifiedpush_ac}"
fi
export UP_AC_GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}"
# WASI SDK
if [[ -z ${IRONFOX_WASI+x} ]]; then
export IRONFOX_WASI="${wasi}"
fi
# Curl flags
IRONFOX_CURL_FLAGS_DEFAULT='--doh-cert-status --no-insecure --no-proxy-insecure --no-sessionid --no-ssl --no-ssl-allow-beast --no-ssl-auto-client-cert --no-ssl-no-revoke --no-ssl-revoke-best-effort --proto -all,https --proto-default https --proto-redir -all,https --show-error'
if [[ -z ${IRONFOX_CURL_FLAGS+x} ]]; then
export IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT}"
else
export IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT} ${IRONFOX_CURL_FLAGS}"
fi
# Compiler flags
IRONFOX_COMPILER_FLAGS_DEFAULT='-DNDEBUG -O3 -fstack-clash-protection -fstack-protector-strong -ftrivial-auto-var-init=zero -fwrapv'
if [[ -z ${IRONFOX_COMPILER_FLAGS+x} ]]; then
export IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT}"
else
export IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT} ${IRONFOX_COMPILER_FLAGS}"
fi
export TARGET_CFLAGS="${IRONFOX_COMPILER_FLAGS}"
export TARGET_CXXFLAGS="${IRONFOX_COMPILER_FLAGS}"
# Gradle flags
IRONFOX_GRADLE_FLAGS_DEFAULT='-Dorg.gradle.caching=false -Dorg.gradle.configuration-cache=false -Dorg.gradle.daemon=false -Dorg.gradle.debug=false --no-build-cache --no-configuration-cache --no-daemon'
if [[ -z ${IRONFOX_GRADLE_FLAGS+x} ]]; then
export IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT}"
else
export IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT} ${IRONFOX_GRADLE_FLAGS}"
fi
# Rust flags
IRONFOX_RUST_FLAGS_DEFAULT='-Ccontrol-flow-guard=true -Cdebug-assertions=false -Cdebuginfo=0 -Clink-dead-code=false -Copt-level=3 -Coverflow-checks=true -Cstrip=debuginfo -O'
if [[ -z ${IRONFOX_RUST_FLAGS+x} ]]; then
export IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT}"
else
export IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT} ${IRONFOX_RUST_FLAGS}"
fi
export CARGO_BUILD_RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}"
export RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}"
export ARTIFACTS="${rootdir}/artifacts"
export APK_ARTIFACTS=${ARTIFACTS}/apk
export APKS_ARTIFACTS=${ARTIFACTS}/apks
export AAR_ARTIFACTS=${ARTIFACTS}/aar
mkdir -vp "${APK_ARTIFACTS}"
mkdir -vp "${APKS_ARTIFACTS}"
mkdir -vp "${AAR_ARTIFACTS}"
if [[ -z ${IRONFOX_RELEASE+x} ]]; then
# Default to a "nightly" dev build
export IRONFOX_RELEASE=0
echo "Preparing to build IronFox Nightly..."
fi
# Set release channel
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
export IRONFOX_CHANNEL='release'
else
export IRONFOX_CHANNEL='nightly'
fi
if [[ -z ${IRONFOX_UBO_ASSETS_URL+x} ]]; then
# Default to development assets
export IRONFOX_UBO_ASSETS_URL="https://gitlab.com/ironfox-oss/assets/-/raw/main/uBlock/assets.dev.json"
echo "Using uBO Assets: ${IRONFOX_UBO_ASSETS_URL}"
fi
# Set target ABI
if [[ "${IRONFOX_TARGET_ARCH}" == 'arm' ]]; then
export IRONFOX_TARGET_ABI='armeabi-v7a'
export IRONFOX_TARGET_RUST='arm'
fi
if [[ "${IRONFOX_TARGET_ARCH}" == 'arm64' ]]; then
export IRONFOX_TARGET_ABI='arm64-v8a'
export IRONFOX_TARGET_RUST='arm64'
fi
if [[ "${IRONFOX_TARGET_ARCH}" == 'x86_64' ]]; then
export IRONFOX_TARGET_ABI='x86_64'
export IRONFOX_TARGET_RUST='x86_64'
fi
if [[ "${IRONFOX_TARGET_ARCH}" == 'bundle' ]]; then
export IRONFOX_TARGET_ABI='"arm64-v8a", "armeabi-v7a", "x86_64"'
export IRONFOX_TARGET_RUST='arm64,arm,x86_64'
fi
# Set locations for our GeckoView AAR archives
if [[ -z ${IRONFOX_GECKOVIEW_AAR_ARM+x} ]]; then
export IRONFOX_GECKOVIEW_AAR_ARM="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-arm/gradle/target.maven.zip"
fi
export IRONFOX_GECKOVIEW_AAR_ARM_ARTIFACT="${AAR_ARTIFACTS}/geckoview-armeabi-v7a.zip"
if [[ -z ${IRONFOX_GECKOVIEW_AAR_ARM64+x} ]]; then
export IRONFOX_GECKOVIEW_AAR_ARM64="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-arm64/gradle/target.maven.zip"
fi
export IRONFOX_GECKOVIEW_AAR_ARM64_ARTIFACT="${AAR_ARTIFACTS}/geckoview-arm64-v8a.zip"
if [[ -z ${IRONFOX_GECKOVIEW_AAR_X86_64+x} ]]; then
export IRONFOX_GECKOVIEW_AAR_X86_64="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-x86_64/gradle/target.maven.zip"
fi
export IRONFOX_GECKOVIEW_AAR_X86_64_ARTIFACT="${AAR_ARTIFACTS}/geckoview-x86_64.zip"