mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-07-31 18:07:06 -04:00
Notably, this means that:
- It's now possible to build components individually
- This should especially be useful for ex. CI, so we can avoid timeouts and improve build speed by building certain components simultaneously
- It's now possible to rebuild only a specific project and its consumers (instead of always having to build everything...)
- ex. If I make a change to Gecko, I can just use `rebuild-gecko`, which only builds Gecko and its consumers (GeckoView, AC, and Fenix), instead of trying to build everything unconditionally
The default build behavior (ex. if no argument is specified) still remains the same
This also adds checks to ensure that the build script fails fast if important variables are not properly set/configured
Also includes some minor tweaks, such as a renaming of a couple of the CI jobs for clarity, and the addition of an `IRONFOX_TEMP` variable to indicate the temporary build directory
Signed-off-by: celenity <celenity@celenity.dev>
1367 lines
50 KiB
Bash
1367 lines
50 KiB
Bash
# IronFox common environment variables
|
|
|
|
## CAUTION: Do NOT source this directly!
|
|
## Source 'env.sh' instead.
|
|
|
|
## Additionally, if you need to override any variables here, export them to your shell manually or use `env_override.sh`.
|
|
## Do NOT edit this file directly.
|
|
|
|
# If variables are defined with a custom `env_override.sh` file (located at the root project directory), let's use those
|
|
## These need to be set first, to ensure that they don't interfere with certain variables
|
|
readonly IRONFOX_ENV_OVERRIDE="${IRONFOX_ROOT}/env_override.sh"
|
|
if [[ -f "${IRONFOX_ENV_OVERRIDE}" ]]; then
|
|
source "${IRONFOX_ENV_OVERRIDE}"
|
|
fi
|
|
|
|
# IronFox
|
|
|
|
# Scripts directory
|
|
readonly IRONFOX_SCRIPTS="${IRONFOX_ROOT}/scripts"
|
|
export IRONFOX_SCRIPTS
|
|
|
|
## IronFox utilities
|
|
readonly IRONFOX_UTILS="${IRONFOX_SCRIPTS}/utilities.sh"
|
|
export IRONFOX_UTILS
|
|
|
|
# Configuration files
|
|
readonly IRONFOX_CONFIGS="${IRONFOX_ROOT}/configs"
|
|
readonly IRONFOX_MOZCONFIGS="${IRONFOX_CONFIGS}/mozconfigs"
|
|
export IRONFOX_CONFIGS
|
|
export IRONFOX_MOZCONFIGS
|
|
|
|
# Templates
|
|
readonly IRONFOX_TEMPLATES="${IRONFOX_ROOT}/templates"
|
|
export IRONFOX_TEMPLATES
|
|
|
|
# CI artifacts
|
|
readonly IRONFOX_ARTIFACTS="${IRONFOX_ROOT}/artifacts"
|
|
readonly IRONFOX_AAR_ARTIFACTS="${IRONFOX_ARTIFACTS}/aar"
|
|
readonly IRONFOX_APK_ARTIFACTS="${IRONFOX_ARTIFACTS}/apk"
|
|
readonly IRONFOX_APKS_ARTIFACTS="${IRONFOX_ARTIFACTS}/apks"
|
|
readonly IRONFOX_LOG_ARTIFACTS="${IRONFOX_ARTIFACTS}/logs"
|
|
export IRONFOX_ARTIFACTS
|
|
export IRONFOX_AAR_ARTIFACTS
|
|
export IRONFOX_APK_ARTIFACTS
|
|
export IRONFOX_APKS_ARTIFACTS
|
|
export IRONFOX_LOG_ARTIFACTS
|
|
|
|
# Environment configuration
|
|
readonly IRONFOX_ENV_FDROID="${IRONFOX_SCRIPTS}/env_fdroid.sh"
|
|
export IRONFOX_ENV_FDROID
|
|
|
|
# Build environment configuration
|
|
readonly IRONFOX_ENV_BUILD="${IRONFOX_SCRIPTS}/env_build.sh"
|
|
export IRONFOX_ENV_BUILD
|
|
|
|
# Build directory
|
|
readonly IRONFOX_BUILD="${IRONFOX_ROOT}/build"
|
|
export IRONFOX_BUILD
|
|
|
|
# External sources directory
|
|
readonly IRONFOX_EXTERNAL="${IRONFOX_ROOT}/external"
|
|
export IRONFOX_EXTERNAL
|
|
|
|
# External downloads/resources directory
|
|
readonly IRONFOX_DOWNLOADS="${IRONFOX_EXTERNAL}/downloads"
|
|
export IRONFOX_DOWNLOADS
|
|
|
|
# Temporary build directory
|
|
readonly IRONFOX_TEMP="${IRONFOX_BUILD}/tmp"
|
|
export IRONFOX_TEMP
|
|
|
|
# Patches directory
|
|
readonly IRONFOX_PATCHES="${IRONFOX_ROOT}/patches"
|
|
export IRONFOX_PATCHES
|
|
|
|
# Get our current commit
|
|
## (This is ex. displayed at `about:buildconfig` in Gecko/Firefox)
|
|
readonly IRONFOX_REVISION="$(git log -1 --format="%H" | tail -n 1)"
|
|
export IRONFOX_REVISION
|
|
|
|
# Are we in a CI environment?
|
|
readonly IRONFOX_CI_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CI+x}" ]]; then
|
|
IRONFOX_CI="${IRONFOX_CI_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CI
|
|
export IRONFOX_CI
|
|
|
|
## If so, set our CI environment variables
|
|
readonly IRONFOX_ENV_CI="${IRONFOX_SCRIPTS}/env_ci.sh"
|
|
if [[ "${IRONFOX_CI}" == 1 ]]; then
|
|
source "${IRONFOX_ENV_CI}"
|
|
fi
|
|
|
|
# Set our platform, OS, and architecture
|
|
readonly IRONFOX_ENV_HELPERS="${IRONFOX_SCRIPTS}/env_helpers.sh"
|
|
export IRONFOX_ENV_HELPERS
|
|
source "${IRONFOX_ENV_HELPERS}"
|
|
|
|
# Version info
|
|
readonly IRONFOX_VERSIONS="${IRONFOX_SCRIPTS}/versions.sh"
|
|
export IRONFOX_VERSIONS
|
|
|
|
# IronFox outputs directory
|
|
readonly IRONFOX_OUTPUTS_DEFAULT="${IRONFOX_BUILD}/outputs"
|
|
if [[ -z "${IRONFOX_OUTPUTS+x}" ]]; then
|
|
IRONFOX_OUTPUTS="${IRONFOX_OUTPUTS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS
|
|
export IRONFOX_OUTPUTS
|
|
|
|
# Whether we're building IronFox for release or Nightly/CI (Default)
|
|
readonly IRONFOX_RELEASE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_RELEASE+x}" ]]; then
|
|
IRONFOX_RELEASE="${IRONFOX_RELEASE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RELEASE
|
|
export IRONFOX_RELEASE
|
|
|
|
# Set release channel
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_CHANNEL='release'
|
|
readonly IRONFOX_CHANNEL_PRETTY='Release'
|
|
readonly IRONFOX_NAME='IronFox'
|
|
else
|
|
readonly IRONFOX_CHANNEL='nightly'
|
|
readonly IRONFOX_CHANNEL_PRETTY='Nightly'
|
|
readonly IRONFOX_NAME='IronFox Nightly'
|
|
fi
|
|
export IRONFOX_CHANNEL
|
|
export IRONFOX_CHANNEL_PRETTY
|
|
export IRONFOX_NAME
|
|
|
|
readonly IRONFOX_OUTPUTS_AAB="${IRONFOX_OUTPUTS}/aab"
|
|
readonly IRONFOX_OUTPUTS_AAR="${IRONFOX_OUTPUTS}/aar"
|
|
readonly IRONFOX_OUTPUTS_APK="${IRONFOX_OUTPUTS}/apk"
|
|
readonly IRONFOX_OUTPUTS_APKS="${IRONFOX_OUTPUTS}/apks"
|
|
export IRONFOX_OUTPUTS_AAB
|
|
export IRONFOX_OUTPUTS_AAR
|
|
export IRONFOX_OUTPUTS_APK
|
|
export IRONFOX_OUTPUTS_APKS
|
|
|
|
# If we're going to sign IronFox (translation: when IRONFOX_SIGN is set), this is where the unsigned APKs will be placed by default
|
|
readonly IRONFOX_OUTPUTS_APK_UNSIGNED="${IRONFOX_OUTPUTS}/unsigned"
|
|
export IRONFOX_OUTPUTS_APK_UNSIGNED
|
|
|
|
# Where our output GeckoView AAR archive (ARM64) should be located
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64_DEFAULT="${IRONFOX_OUTPUTS_AAR}/geckoview-arm64-v8a.zip"
|
|
if [[ -z "${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64+x}" ]]; then
|
|
IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64
|
|
export IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64
|
|
|
|
# Where our output GeckoView AAR archive (ARM) should be located
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM_DEFAULT="${IRONFOX_OUTPUTS_AAR}/geckoview-armeabi-v7a.zip"
|
|
if [[ -z "${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM+x}" ]]; then
|
|
IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM
|
|
export IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM
|
|
|
|
# Where our output GeckoView AAR archive (x86_64) should be located
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64_DEFAULT="${IRONFOX_OUTPUTS_AAR}/geckoview-x86_64.zip"
|
|
if [[ -z "${IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64+x}" ]]; then
|
|
IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64
|
|
export IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64
|
|
|
|
# Should we create a log file for build.sh? (Default)
|
|
readonly IRONFOX_LOG_BUILD_DEFAULT=1
|
|
if [[ -z "${IRONFOX_LOG_BUILD+x}" ]]; then
|
|
IRONFOX_LOG_BUILD="${IRONFOX_LOG_BUILD_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOG_BUILD
|
|
export IRONFOX_LOG_BUILD
|
|
|
|
# Should we create a log file for prebuild.sh? (Default)
|
|
readonly IRONFOX_LOG_PREBUILD_DEFAULT=1
|
|
if [[ -z "${IRONFOX_LOG_PREBUILD+x}" ]]; then
|
|
IRONFOX_LOG_PREBUILD="${IRONFOX_LOG_PREBUILD_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOG_PREBUILD
|
|
export IRONFOX_LOG_PREBUILD
|
|
|
|
# Should we create a log file for get_sources.sh? (Default)
|
|
readonly IRONFOX_LOG_SOURCES_DEFAULT=1
|
|
if [[ -z "${IRONFOX_LOG_SOURCES+x}" ]]; then
|
|
IRONFOX_LOG_SOURCES="${IRONFOX_LOG_SOURCES_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOG_SOURCES
|
|
export IRONFOX_LOG_SOURCES
|
|
|
|
# Should we create a log file for sign.sh? (Default)
|
|
readonly IRONFOX_LOG_SIGN_DEFAULT=1
|
|
if [[ -z "${IRONFOX_LOG_SIGN+x}" ]]; then
|
|
IRONFOX_LOG_SIGN="${IRONFOX_LOG_SIGN_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOG_SIGN
|
|
export IRONFOX_LOG_SIGN
|
|
|
|
# Directory where we should store log files (if logging is desired)
|
|
readonly IRONFOX_LOG_DIR_DEFAULT="${IRONFOX_BUILD}/logs"
|
|
if [[ -z "${IRONFOX_LOG_DIR+x}" ]]; then
|
|
IRONFOX_LOG_DIR="${IRONFOX_LOG_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOG_DIR
|
|
export IRONFOX_LOG_DIR
|
|
|
|
# CI-specific build variables
|
|
# These variables are set for CI primarily to allow parallel builds (for specific stages)
|
|
readonly IRONFOX_CI_BUILD_GECKO_ARM64_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CI_BUILD_GECKO_ARM64+x}" ]]; then
|
|
IRONFOX_CI_BUILD_GECKO_ARM64="${IRONFOX_CI_BUILD_GECKO_ARM64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CI_BUILD_GECKO_ARM64
|
|
export IRONFOX_CI_BUILD_GECKO_ARM64
|
|
|
|
readonly IRONFOX_CI_BUILD_GECKO_ARM_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CI_BUILD_GECKO_ARM+x}" ]]; then
|
|
IRONFOX_CI_BUILD_GECKO_ARM="${IRONFOX_CI_BUILD_GECKO_ARM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CI_BUILD_GECKO_ARM
|
|
export IRONFOX_CI_BUILD_GECKO_ARM
|
|
|
|
readonly IRONFOX_CI_BUILD_GECKO_X86_64_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CI_BUILD_GECKO_X86_64+x}" ]]; then
|
|
IRONFOX_CI_BUILD_GECKO_X86_64="${IRONFOX_CI_BUILD_GECKO_X86_64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CI_BUILD_GECKO_X86_64
|
|
export IRONFOX_CI_BUILD_GECKO_X86_64
|
|
|
|
readonly IRONFOX_CI_BUILD_FINAL_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CI_BUILD_FINAL+x}" ]]; then
|
|
IRONFOX_CI_BUILD_FINAL="${IRONFOX_CI_BUILD_FINAL_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CI_BUILD_FINAL
|
|
export IRONFOX_CI_BUILD_FINAL
|
|
|
|
# androguard
|
|
readonly IRONFOX_ANDROGUARD_DIR_DEFAULT="${IRONFOX_EXTERNAL}/androguard"
|
|
if [[ -z "${IRONFOX_ANDROGUARD_DIR+x}" ]]; then
|
|
IRONFOX_ANDROGUARD_DIR="${IRONFOX_ANDROGUARD_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROGUARD_DIR
|
|
export IRONFOX_ANDROGUARD_DIR
|
|
|
|
# Android NDK
|
|
readonly IRONFOX_ANDROID_NDK_DEFAULT="${IRONFOX_EXTERNAL}/android-ndk"
|
|
if [[ -z "${IRONFOX_ANDROID_NDK+x}" ]]; then
|
|
IRONFOX_ANDROID_NDK="${IRONFOX_ANDROID_NDK_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_NDK
|
|
export IRONFOX_ANDROID_NDK
|
|
|
|
# Android SDK
|
|
readonly IRONFOX_ANDROID_SDK_DEFAULT="${IRONFOX_EXTERNAL}/android-sdk"
|
|
if [[ -z "${IRONFOX_ANDROID_SDK+x}" ]]; then
|
|
IRONFOX_ANDROID_SDK="${IRONFOX_ANDROID_SDK_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_SDK
|
|
export IRONFOX_ANDROID_SDK
|
|
|
|
# Android SDK Build Tools (Latest)
|
|
readonly IRONFOX_ANDROID_SDK_BUILD_TOOLS_DEFAULT="${IRONFOX_EXTERNAL}/android-sdk-build-tools"
|
|
if [[ -z "${IRONFOX_ANDROID_SDK_BUILD_TOOLS+x}" ]]; then
|
|
IRONFOX_ANDROID_SDK_BUILD_TOOLS="${IRONFOX_ANDROID_SDK_BUILD_TOOLS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_SDK_BUILD_TOOLS
|
|
export IRONFOX_ANDROID_SDK_BUILD_TOOLS
|
|
|
|
## apksigner
|
|
readonly IRONFOX_APKSIGNER_DEFAULT="${IRONFOX_ANDROID_SDK_BUILD_TOOLS}/apksigner"
|
|
if [[ -z "${IRONFOX_APKSIGNER+x}" ]]; then
|
|
IRONFOX_APKSIGNER="${IRONFOX_APKSIGNER_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_APKSIGNER
|
|
export IRONFOX_APKSIGNER
|
|
|
|
# Android SDK Build Tools (35 - needed by Glean)
|
|
readonly IRONFOX_ANDROID_SDK_BUILD_TOOLS_35_DEFAULT="${IRONFOX_EXTERNAL}/android-sdk-build-tools-35"
|
|
if [[ -z "${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35+x}" ]]; then
|
|
IRONFOX_ANDROID_SDK_BUILD_TOOLS_35="${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_SDK_BUILD_TOOLS_35
|
|
export IRONFOX_ANDROID_SDK_BUILD_TOOLS_35
|
|
|
|
# Android SDK Platform Tools
|
|
readonly IRONFOX_ANDROID_SDK_PLATFORM_TOOLS_DEFAULT="${IRONFOX_EXTERNAL}/android-sdk-platform-tools"
|
|
if [[ -z "${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS+x}" ]]; then
|
|
IRONFOX_ANDROID_SDK_PLATFORM_TOOLS="${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_SDK_PLATFORM_TOOLS
|
|
export IRONFOX_ANDROID_SDK_PLATFORM_TOOLS
|
|
|
|
## ADB
|
|
readonly IRONFOX_ADB_DEFAULT="${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS}/adb"
|
|
if [[ -z "${IRONFOX_ADB+x}" ]]; then
|
|
IRONFOX_ADB="${IRONFOX_ADB_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ADB
|
|
export IRONFOX_ADB
|
|
|
|
# Application Services
|
|
readonly IRONFOX_AS_DEFAULT="${IRONFOX_EXTERNAL}/application-services"
|
|
if [[ -z "${IRONFOX_AS+x}" ]]; then
|
|
IRONFOX_AS="${IRONFOX_AS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_AS
|
|
export IRONFOX_AS
|
|
|
|
## Application Services overlay
|
|
readonly IRONFOX_AS_OVERLAY="${IRONFOX_PATCHES}/a-s-overlay"
|
|
export IRONFOX_AS_OVERLAY
|
|
|
|
# Bundletool
|
|
readonly IRONFOX_BUNDLETOOL_DIR_DEFAULT="${IRONFOX_EXTERNAL}/bundletool"
|
|
if [[ -z "${IRONFOX_BUNDLETOOl_DIR+x}" ]]; then
|
|
IRONFOX_BUNDLETOOL_DIR="${IRONFOX_BUNDLETOOL_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_BUNDLETOOL_DIR
|
|
readonly IRONFOX_BUNDLETOOL="${IRONFOX_SCRIPTS}/bundletool.sh"
|
|
readonly IRONFOX_BUNDLETOOL_JAR="${IRONFOX_BUNDLETOOL_DIR}/bundletool.jar"
|
|
export IRONFOX_BUNDLETOOL
|
|
export IRONFOX_BUNDLETOOL_DIR
|
|
export IRONFOX_BUNDLETOOL_JAR
|
|
|
|
# cbindgen
|
|
readonly IRONFOX_CBINDGEN_DEFAULT="${IRONFOX_EXTERNAL}/cbindgen"
|
|
if [[ -z "${IRONFOX_CBINDGEN+x}" ]]; then
|
|
IRONFOX_CBINDGEN="${IRONFOX_CBINDGEN_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CBINDGEN
|
|
export IRONFOX_CBINDGEN
|
|
|
|
# Firefox (mozilla-central)
|
|
readonly IRONFOX_GECKO_DEFAULT="${IRONFOX_EXTERNAL}/gecko"
|
|
if [[ -z "${IRONFOX_GECKO+x}" ]]; then
|
|
IRONFOX_GECKO="${IRONFOX_GECKO_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKO
|
|
export IRONFOX_GECKO
|
|
|
|
## mach
|
|
readonly IRONFOX_MACH="${IRONFOX_GECKO}/mach"
|
|
export IRONFOX_MACH
|
|
|
|
## Gecko overlay
|
|
readonly IRONFOX_GECKO_OVERLAY="${IRONFOX_PATCHES}/gecko-overlay"
|
|
export IRONFOX_GECKO_OVERLAY
|
|
|
|
## Android Components
|
|
readonly IRONFOX_AC="${IRONFOX_GECKO}/mobile/android/android-components"
|
|
export IRONFOX_AC
|
|
|
|
### Android Components overlay
|
|
readonly IRONFOX_AC_OVERLAY="${IRONFOX_PATCHES}/a-c-overlay"
|
|
export IRONFOX_AC_OVERLAY
|
|
|
|
## Fenix
|
|
readonly IRONFOX_FENIX="${IRONFOX_GECKO}/mobile/android/fenix"
|
|
export IRONFOX_FENIX
|
|
|
|
### Fenix overlay
|
|
readonly IRONFOX_FENIX_OVERLAY="${IRONFOX_PATCHES}/fenix-overlay"
|
|
export IRONFOX_FENIX_OVERLAY
|
|
|
|
## Gecko locales
|
|
readonly IRONFOX_LOCALES_DEFAULT=$(<"${IRONFOX_CONFIGS}/locales")
|
|
if [[ -z "${IRONFOX_LOCALES+x}" ]]; then
|
|
IRONFOX_LOCALES="${IRONFOX_LOCALES_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOCALES
|
|
export IRONFOX_LOCALES
|
|
|
|
## Gecko l10n
|
|
readonly IRONFOX_L10N_CENTRAL_DEFAULT="${IRONFOX_EXTERNAL}/l10n-central"
|
|
if [[ -z "${IRONFOX_L10N_CENTRAL+x}" ]]; then
|
|
IRONFOX_L10N_CENTRAL="${IRONFOX_L10N_CENTRAL_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_L10N_CENTRAL
|
|
export IRONFOX_L10N_CENTRAL
|
|
|
|
## .mozbuild
|
|
readonly IRONFOX_MOZBUILD_DEFAULT="${IRONFOX_BUILD}/.mozbuild"
|
|
if [[ -z "${IRONFOX_MOZBUILD+x}" ]]; then
|
|
IRONFOX_MOZBUILD="${IRONFOX_MOZBUILD_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_MOZBUILD
|
|
export IRONFOX_MOZBUILD
|
|
|
|
# Glean
|
|
readonly IRONFOX_GLEAN_DEFAULT="${IRONFOX_EXTERNAL}/glean"
|
|
if [[ -z "${IRONFOX_GLEAN+x}" ]]; then
|
|
IRONFOX_GLEAN="${IRONFOX_GLEAN_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GLEAN
|
|
export IRONFOX_GLEAN
|
|
|
|
## Glean overlay
|
|
readonly IRONFOX_GLEAN_OVERLAY="${IRONFOX_PATCHES}/glean-overlay"
|
|
export IRONFOX_GLEAN_OVERLAY
|
|
|
|
# Glean Parser wheels
|
|
readonly IRONFOX_GLEAN_PARSER_WHEELS_DEFAULT="${IRONFOX_EXTERNAL}/glean_parser-wheels"
|
|
if [[ -z "${IRONFOX_GLEAN_PARSER_WHEELS+x}" ]]; then
|
|
IRONFOX_GLEAN_PARSER_WHEELS="${IRONFOX_GLEAN_PARSER_WHEELS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GLEAN_PARSER_WHEELS
|
|
export IRONFOX_GLEAN_PARSER_WHEELS
|
|
|
|
# GNU awk
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_AWK_DEFAULT='gawk'
|
|
else
|
|
readonly IRONFOX_AWK_DEFAULT='awk'
|
|
fi
|
|
if [[ -z "${IRONFOX_AWK+x}" ]]; then
|
|
IRONFOX_AWK="${IRONFOX_AWK_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_AWK
|
|
export IRONFOX_AWK
|
|
|
|
# GNU date
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_DATE_DEFAULT='gdate'
|
|
else
|
|
readonly IRONFOX_DATE_DEFAULT='date'
|
|
fi
|
|
if [[ -z "${IRONFOX_DATE+x}" ]]; then
|
|
IRONFOX_DATE="${IRONFOX_DATE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_DATE
|
|
export IRONFOX_DATE
|
|
|
|
# GNU make
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_MAKE_DEFAULT='gmake'
|
|
else
|
|
readonly IRONFOX_MAKE_DEFAULT='make'
|
|
fi
|
|
if [[ -z "${IRONFOX_MAKE+x}" ]]; then
|
|
IRONFOX_MAKE="${IRONFOX_MAKE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_MAKE
|
|
export IRONFOX_MAKE
|
|
|
|
# GNU sed
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_SED_DEFAULT='gsed'
|
|
else
|
|
readonly IRONFOX_SED_DEFAULT='sed'
|
|
fi
|
|
if [[ -z "${IRONFOX_SED+x}" ]]; then
|
|
IRONFOX_SED="${IRONFOX_SED_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_SED
|
|
export IRONFOX_SED
|
|
|
|
# GNU tar
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_TAR_DEFAULT='gtar'
|
|
else
|
|
readonly IRONFOX_TAR_DEFAULT='tar'
|
|
fi
|
|
if [[ -z "${IRONFOX_TAR+x}" ]]; then
|
|
IRONFOX_TAR="${IRONFOX_TAR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_TAR
|
|
export IRONFOX_TAR
|
|
|
|
# Gradle
|
|
readonly IRONFOX_GRADLE_DIR_DEFAULT="${IRONFOX_EXTERNAL}/gradle"
|
|
if [[ -z "${IRONFOX_GRADLE_DIR+x}" ]]; then
|
|
IRONFOX_GRADLE_DIR="${IRONFOX_GRADLE_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GRADLE_DIR
|
|
readonly IRONFOX_GRADLE="${IRONFOX_SCRIPTS}/gradle.sh"
|
|
readonly IRONFOX_GRADLE_PY="${IRONFOX_GRADLE_DIR}/gradlew.py"
|
|
export IRONFOX_GRADLE
|
|
export IRONFOX_GRADLE_DIR
|
|
export IRONFOX_GRADLE_PY
|
|
|
|
## Gradle cache
|
|
readonly IRONFOX_GRADLE_CACHE_DEFAULT="${IRONFOX_BUILD}/gradle/cache"
|
|
if [[ -z "${IRONFOX_GRADLE_CACHE+x}" ]]; then
|
|
IRONFOX_GRADLE_CACHE="${IRONFOX_GRADLE_CACHE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GRADLE_CACHE
|
|
export IRONFOX_GRADLE_CACHE
|
|
|
|
## Gradle home
|
|
readonly IRONFOX_GRADLE_HOME_DEFAULT="${IRONFOX_BUILD}/.gradle"
|
|
if [[ -z "${IRONFOX_GRADLE_HOME+x}" ]]; then
|
|
IRONFOX_GRADLE_HOME="${IRONFOX_GRADLE_HOME_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GRADLE_HOME
|
|
export IRONFOX_GRADLE_HOME
|
|
|
|
# Gradle local Maven repository
|
|
readonly IRONFOX_MAVEN_LOCAL_DEFAULT="${IRONFOX_BUILD}/.m2/repository"
|
|
if [[ -z "${IRONFOX_MAVEN_LOCAL+x}" ]]; then
|
|
IRONFOX_MAVEN_LOCAL="${IRONFOX_MAVEN_LOCAL_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_MAVEN_LOCAL
|
|
export IRONFOX_MAVEN_LOCAL
|
|
|
|
# GYP
|
|
readonly IRONFOX_GYP_DEFAULT="${IRONFOX_EXTERNAL}/gyp-next"
|
|
if [[ -z "${IRONFOX_GYP+x}" ]]; then
|
|
IRONFOX_GYP="${IRONFOX_GYP_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GYP
|
|
export IRONFOX_GYP
|
|
|
|
# JDK (17)
|
|
## (Required by GeckoView)
|
|
readonly IRONFOX_JDK_17_DEFAULT="${IRONFOX_EXTERNAL}/jdk-17"
|
|
if [[ -z "${IRONFOX_JDK_17+x}" ]]; then
|
|
IRONFOX_JDK_17="${IRONFOX_JDK_17_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_JDK_17
|
|
export IRONFOX_JDK_17
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_JDK_17_HOME="${IRONFOX_JDK_17}/Contents/Home"
|
|
else
|
|
readonly IRONFOX_JDK_17_HOME="${IRONFOX_JDK_17}"
|
|
fi
|
|
export IRONFOX_JDK_17_HOME
|
|
|
|
# JDK (21)
|
|
readonly IRONFOX_JDK_21_DEFAULT="${IRONFOX_EXTERNAL}/jdk-21"
|
|
if [[ -z "${IRONFOX_JDK_21+x}" ]]; then
|
|
IRONFOX_JDK_21="${IRONFOX_JDK_21_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_JDK_21
|
|
export IRONFOX_JDK_21
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_JDK_21_HOME="${IRONFOX_JDK_21}/Contents/Home"
|
|
else
|
|
readonly IRONFOX_JDK_21_HOME="${IRONFOX_JDK_21}"
|
|
fi
|
|
export IRONFOX_JDK_21_HOME
|
|
|
|
# JDK (25)
|
|
readonly IRONFOX_JDK_25_DEFAULT="${IRONFOX_EXTERNAL}/jdk-25"
|
|
if [[ -z "${IRONFOX_JDK_25+x}" ]]; then
|
|
IRONFOX_JDK_25="${IRONFOX_JDK_25_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_JDK_25
|
|
export IRONFOX_JDK_25
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_JAVA_HOME="${IRONFOX_JDK_25}/Contents/Home"
|
|
else
|
|
readonly IRONFOX_JAVA_HOME="${IRONFOX_JDK_25}"
|
|
fi
|
|
export IRONFOX_JAVA_HOME
|
|
readonly IRONFOX_JAVA="${IRONFOX_JAVA_HOME}/bin/java"
|
|
export IRONFOX_JAVA
|
|
|
|
# libclang
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_LIBCLANG_DEFAULT="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/lib"
|
|
else
|
|
readonly IRONFOX_LIBCLANG_DEFAULT="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/musl/lib"
|
|
fi
|
|
if [[ -z "${IRONFOX_LIBCLANG+x}" ]]; then
|
|
IRONFOX_LIBCLANG="${IRONFOX_LIBCLANG_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LIBCLANG
|
|
export IRONFOX_LIBCLANG
|
|
|
|
# llvm-profdata
|
|
readonly IRONFOX_LLVM_PROFDATA_DEFAULT="${IRONFOX_ANDROID_NDK}/toolchains/llvm/prebuilt/${IRONFOX_PLATFORM}-x86_64/bin/llvm-profdata"
|
|
if [[ -z "${IRONFOX_LLVM_PROFDATA+x}" ]]; then
|
|
IRONFOX_LLVM_PROFDATA="${IRONFOX_LLVM_PROFDATA_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LLVM_PROFDATA
|
|
export IRONFOX_LLVM_PROFDATA
|
|
|
|
# microG
|
|
readonly IRONFOX_GMSCORE_DEFAULT="${IRONFOX_EXTERNAL}/gmscore"
|
|
if [[ -z "${IRONFOX_GMSCORE+x}" ]]; then
|
|
IRONFOX_GMSCORE="${IRONFOX_GMSCORE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GMSCORE
|
|
export IRONFOX_GMSCORE
|
|
|
|
# nproc
|
|
if [[ "${IRONFOX_OS}" == 'osx' ]]; then
|
|
readonly IRONFOX_NPROC_DEFAULT='sysctl -n hw.logicalcpu'
|
|
else
|
|
readonly IRONFOX_NPROC_DEFAULT='nproc'
|
|
fi
|
|
if [[ -z "${IRONFOX_NPROC+x}" ]]; then
|
|
IRONFOX_NPROC="${IRONFOX_NPROC_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NPROC
|
|
export IRONFOX_NPROC
|
|
|
|
# NSS
|
|
readonly IRONFOX_NSS_DIR_DEFAULT="${IRONFOX_AS}/libs/desktop/${IRONFOX_PLATFORM}-${IRONFOX_PLATFORM_ARCH}/nss"
|
|
if [[ -z "${IRONFOX_NSS_DIR+x}" ]]; then
|
|
IRONFOX_NSS_DIR="${IRONFOX_NSS_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NSS_DIR
|
|
export IRONFOX_NSS_DIR
|
|
|
|
# IronFox prebuilds
|
|
readonly IRONFOX_PREBUILDS_DEFAULT="${IRONFOX_EXTERNAL}/prebuilds"
|
|
if [[ -z "${IRONFOX_PREBUILDS+x}" ]]; then
|
|
IRONFOX_PREBUILDS="${IRONFOX_PREBUILDS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PREBUILDS
|
|
export IRONFOX_PREBUILDS
|
|
|
|
# npm cache
|
|
readonly IRONFOX_NPM_CACHE_DEFAULT="${IRONFOX_BUILD}/.npm"
|
|
if [[ -z "${IRONFOX_NPM_CACHE+x}" ]]; then
|
|
IRONFOX_NPM_CACHE="${IRONFOX_NPM_CACHE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NPM_CACHE
|
|
export IRONFOX_NPM_CACHE
|
|
|
|
# nvm
|
|
readonly IRONFOX_NVM_DEFAULT="${IRONFOX_EXTERNAL}/nvm"
|
|
if [[ -z "${IRONFOX_NVM+x}" ]]; then
|
|
IRONFOX_NVM="${IRONFOX_NVM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NVM
|
|
readonly IRONFOX_NVM_ENV="${IRONFOX_NVM}/nvm.sh"
|
|
export IRONFOX_NVM
|
|
export IRONFOX_NVM_ENV
|
|
|
|
# Phoenix
|
|
readonly IRONFOX_PHOENIX_DEFAULT="${IRONFOX_EXTERNAL}/phoenix"
|
|
if [[ -z "${IRONFOX_PHOENIX+x}" ]]; then
|
|
IRONFOX_PHOENIX="${IRONFOX_PHOENIX_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PHOENIX
|
|
export IRONFOX_PHOENIX
|
|
|
|
# pip
|
|
readonly IRONFOX_PIP_DIR_DEFAULT="${IRONFOX_EXTERNAL}/pip"
|
|
if [[ -z "${IRONFOX_PIP_DIR+x}" ]]; then
|
|
IRONFOX_PIP_DIR="${IRONFOX_PIP_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PIP_DIR
|
|
export IRONFOX_PIP_DIR
|
|
|
|
# Python
|
|
readonly IRONFOX_PYTHON_DIR_DEFAULT="${IRONFOX_EXTERNAL}/python"
|
|
if [[ -z "${IRONFOX_PYTHON_DIR+x}" ]]; then
|
|
IRONFOX_PYTHON_DIR="${IRONFOX_PYTHON_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PYTHON_DIR
|
|
export IRONFOX_PYTHON_DIR
|
|
|
|
# Python (uv) environment
|
|
readonly IRONFOX_PYENV_DIR_DEFAULT="${IRONFOX_BUILD}/pyenv"
|
|
if [[ -z "${IRONFOX_PYENV_DIR+x}" ]]; then
|
|
IRONFOX_PYENV_DIR="${IRONFOX_PYENV_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PYENV_DIR
|
|
readonly IRONFOX_ANDROGUARD="${IRONFOX_PYENV_DIR}/bin/androguard"
|
|
readonly IRONFOX_PIP="${IRONFOX_PYENV_DIR}/bin/pip"
|
|
readonly IRONFOX_PYENV="${IRONFOX_PYENV_DIR}/bin/activate"
|
|
readonly IRONFOX_PYTHON="${IRONFOX_PYENV_DIR}/bin/python"
|
|
export IRONFOX_ANDROGUARD
|
|
export IRONFOX_PIP
|
|
export IRONFOX_PYENV
|
|
export IRONFOX_PYENV_DIR
|
|
export IRONFOX_PYTHON
|
|
|
|
## Python (uv) environment - Glean
|
|
readonly IRONFOX_GLEAN_PYENV="${IRONFOX_GRADLE_HOME}/glean"
|
|
export IRONFOX_GLEAN_PYENV
|
|
|
|
# PyYAML
|
|
readonly IRONFOX_PYYAML_DEFAULT="${IRONFOX_EXTERNAL}/pyyaml"
|
|
if [[ -z "${IRONFOX_PYYAML+x}" ]]; then
|
|
IRONFOX_PYYAML="${IRONFOX_PYYAML_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_PYYAML
|
|
export IRONFOX_PYYAML
|
|
|
|
# Rust (cargo)
|
|
readonly IRONFOX_CARGO_HOME_DEFAULT="${IRONFOX_BUILD}/.cargo"
|
|
if [[ -z "${IRONFOX_CARGO_HOME+x}" ]]; then
|
|
IRONFOX_CARGO_HOME="${IRONFOX_CARGO_HOME_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CARGO_HOME
|
|
readonly IRONFOX_CARGO="${IRONFOX_CARGO_HOME}/bin/cargo"
|
|
readonly IRONFOX_CARGO_ENV="${IRONFOX_CARGO_HOME}/env"
|
|
readonly IRONFOX_RUSTC="${IRONFOX_CARGO_HOME}/bin/rustc"
|
|
readonly IRONFOX_RUSTDOC="${IRONFOX_CARGO_HOME}/bin/rustdoc"
|
|
export IRONFOX_CARGO
|
|
export IRONFOX_CARGO_ENV
|
|
export IRONFOX_CARGO_HOME
|
|
export IRONFOX_RUSTC
|
|
export IRONFOX_RUSTDOC
|
|
|
|
## Display progress bars
|
|
readonly IRONFOX_CARGO_PROGRESS_BAR_DEFAULT='always'
|
|
if [[ -z "${IRONFOX_CARGO_PROGRESS_BAR+x}" ]]; then
|
|
IRONFOX_CARGO_PROGRESS_BAR="${IRONFOX_CARGO_PROGRESS_BAR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CARGO_PROGRESS_BAR
|
|
export IRONFOX_CARGO_PROGRESS_BAR
|
|
|
|
## Enable colored output
|
|
readonly IRONFOX_CARGO_COLORED_OUTPUT_DEFAULT='always'
|
|
if [[ -z "${IRONFOX_CARGO_COLORED_OUTPUT+x}" ]]; then
|
|
IRONFOX_CARGO_COLORED_OUTPUT="${IRONFOX_CARGO_COLORED_OUTPUT_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CARGO_COLORED_OUTPUT
|
|
export IRONFOX_CARGO_COLORED_OUTPUT
|
|
|
|
# rustup
|
|
readonly IRONFOX_RUSTUP_HOME_DEFAULT="${IRONFOX_BUILD}/.rustup"
|
|
if [[ -z "${IRONFOX_RUSTUP_HOME+x}" ]]; then
|
|
IRONFOX_RUSTUP_HOME="${IRONFOX_RUSTUP_HOME_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RUSTUP_HOME
|
|
export IRONFOX_RUSTUP_HOME
|
|
|
|
## Display progress bars
|
|
readonly IRONFOX_RUSTUP_PROGRESS_BAR_DEFAULT='always'
|
|
if [[ -z "${IRONFOX_RUSTUP_PROGRESS_BAR+x}" ]]; then
|
|
IRONFOX_RUSTUP_PROGRESS_BAR="${IRONFOX_RUSTUP_PROGRESS_BAR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RUSTUP_PROGRESS_BAR
|
|
export IRONFOX_RUSTUP_PROGRESS_BAR
|
|
|
|
## Enable colored output
|
|
readonly IRONFOX_RUSTUP_COLORED_OUTPUT_DEFAULT='always'
|
|
if [[ -z "${IRONFOX_RUSTUP_COLORED_OUTPUT+x}" ]]; then
|
|
IRONFOX_RUSTUP_COLORED_OUTPUT="${IRONFOX_RUSTUP_COLORED_OUTPUT_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RUSTUP_COLORED_OUTPUT
|
|
export IRONFOX_RUSTUP_COLORED_OUTPUT
|
|
|
|
# s3cmd
|
|
readonly IRONFOX_S3CMD_DIR_DEFAULT="${IRONFOX_EXTERNAL}/s3cmd"
|
|
if [[ -z "${IRONFOX_S3CMD_DIR+x}" ]]; then
|
|
IRONFOX_S3CMD_DIR="${IRONFOX_S3CMD_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_S3CMD_DIR
|
|
readonly IRONFOX_S3CMD="${IRONFOX_PYENV_DIR}/bin/s3cmd"
|
|
export IRONFOX_S3CMD
|
|
export IRONFOX_S3CMD_DIR
|
|
|
|
# uniffi-bindgen
|
|
readonly IRONFOX_UNIFFI_DEFAULT="${IRONFOX_EXTERNAL}/uniffi"
|
|
if [[ -z "${IRONFOX_UNIFFI+x}" ]]; then
|
|
IRONFOX_UNIFFI="${IRONFOX_UNIFFI_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UNIFFI
|
|
export IRONFOX_UNIFFI
|
|
|
|
# unifiedpush-ac
|
|
readonly IRONFOX_UP_AC_DEFAULT="${IRONFOX_EXTERNAL}/unifiedpush-ac"
|
|
if [[ -z "${IRONFOX_UP_AC+x}" ]]; then
|
|
IRONFOX_UP_AC="${IRONFOX_UP_AC_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UP_AC
|
|
export IRONFOX_UP_AC
|
|
|
|
# uv
|
|
readonly IRONFOX_UV_DIR_DEFAULT="${IRONFOX_EXTERNAL}/uv"
|
|
if [[ -z "${IRONFOX_UV_DIR+x}" ]]; then
|
|
IRONFOX_UV_DIR="${IRONFOX_UV_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UV_DIR
|
|
readonly IRONFOX_UV="${IRONFOX_UV_DIR}/uv"
|
|
export IRONFOX_UV
|
|
export IRONFOX_UV_DIR
|
|
|
|
# uv (local directory)
|
|
readonly IRONFOX_UV_LOCAL_DEFAULT="${IRONFOX_BUILD}/uv"
|
|
if [[ -z "${IRONFOX_UV_LOCAL+x}" ]]; then
|
|
IRONFOX_UV_LOCAL="${IRONFOX_UV_LOCAL_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UV_LOCAL
|
|
export IRONFOX_UV_LOCAL
|
|
|
|
# uv cache
|
|
readonly IRONFOX_UV_CACHE_DEFAULT="${IRONFOX_UV_LOCAL}/cache"
|
|
if [[ -z "${IRONFOX_UV_CACHE+x}" ]]; then
|
|
IRONFOX_UV_CACHE="${IRONFOX_UV_CACHE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UV_CACHE
|
|
export IRONFOX_UV_CACHE
|
|
|
|
# uv Python directory
|
|
readonly IRONFOX_UV_PYTHON_DEFAULT="${IRONFOX_UV_LOCAL}/python"
|
|
if [[ -z "${IRONFOX_UV_PYTHON+x}" ]]; then
|
|
IRONFOX_UV_PYTHON="${IRONFOX_UV_PYTHON_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UV_PYTHON
|
|
export IRONFOX_UV_PYTHON
|
|
|
|
# uv tools
|
|
readonly IRONFOX_UV_TOOLS_DEFAULT="${IRONFOX_UV_LOCAL}/tools"
|
|
if [[ -z "${IRONFOX_UV_TOOLS+x}" ]]; then
|
|
IRONFOX_UV_TOOLS="${IRONFOX_UV_TOOLS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_UV_TOOLS
|
|
export IRONFOX_UV_TOOLS
|
|
|
|
# WASI SDK
|
|
readonly IRONFOX_WASI_DEFAULT="${IRONFOX_EXTERNAL}/wasi-sdk"
|
|
if [[ -z "${IRONFOX_WASI+x}" ]]; then
|
|
IRONFOX_WASI="${IRONFOX_WASI_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_WASI
|
|
export IRONFOX_WASI
|
|
|
|
# Cipher suites
|
|
## (These enforce strong cipher suites - see ex. https://browserleaks.com/tls)
|
|
|
|
## For TLS 1.3 connections
|
|
### https://curl.se/docs/manpage.html#--tls13-ciphers
|
|
readonly IRONFOX_TLS13_CIPHERS_DEFAULT='TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384'
|
|
if [[ -z "${IRONFOX_TLS13_CIPHERS+x}" ]]; then
|
|
IRONFOX_TLS13_CIPHERS="${IRONFOX_TLS13_CIPHERS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_TLS13_CIPHERS
|
|
export IRONFOX_TLS13_CIPHERS
|
|
|
|
## For non-TLS 1.3 connections
|
|
### https://curl.se/docs/manpage.html#--ciphers
|
|
readonly IRONFOX_NONTLS13_CIPHERS_DEFAULT='ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384'
|
|
if [[ -z "${IRONFOX_NONTLS13_CIPHERS+x}" ]]; then
|
|
IRONFOX_NONTLS13_CIPHERS="${IRONFOX_NONTLS13_CIPHERS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NONTLS13_CIPHERS
|
|
export IRONFOX_NONTLS13_CIPHERS
|
|
|
|
# This includes all ciphers (combining IRONFOX_TLS13_CIPHERS + IRONFOX_NONTLS13_CIPHERS)
|
|
## Useful because many programs do not require specifying a separate set of ciphers for TLS 1.3 like curl does
|
|
readonly IRONFOX_CIPHERS="${IRONFOX_TLS13_CIPHERS}:${IRONFOX_NONTLS13_CIPHERS}"
|
|
export IRONFOX_CIPHERS
|
|
|
|
# If compiler flags are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_COMPILER_FLAGS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_COMPILER_FLAGS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_COMPILER_FLAGS_OVERRIDE="${IRONFOX_COMPILER_FLAGS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_COMPILER_FLAGS_OVERRIDE
|
|
export IRONFOX_COMPILER_FLAGS_OVERRIDE
|
|
|
|
# Compiler flags
|
|
readonly IRONFOX_COMPILER_FLAGS_DEFAULT='-DNDEBUG -O3 -flto=full -fstack-clash-protection -fstack-protector-strong -ftrivial-auto-var-init=zero -fwrapv'
|
|
if [[ -z "${IRONFOX_COMPILER_FLAGS+x}" ]]; then
|
|
IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT}"
|
|
elif [[ "${IRONFOX_COMPILER_FLAGS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS}"
|
|
else
|
|
IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT} ${IRONFOX_COMPILER_FLAGS}"
|
|
fi
|
|
readonly IRONFOX_COMPILER_FLAGS
|
|
export IRONFOX_COMPILER_FLAGS
|
|
|
|
# If curl flags are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_CURL_FLAGS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_CURL_FLAGS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_CURL_FLAGS_OVERRIDE="${IRONFOX_CURL_FLAGS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_CURL_FLAGS_OVERRIDE
|
|
export IRONFOX_CURL_FLAGS_OVERRIDE
|
|
|
|
# curl flags
|
|
readonly IRONFOX_CURL_FLAGS_DEFAULT="--disable --no-netrc --ciphers ${IRONFOX_NONTLS13_CIPHERS} --clobber --create-dirs --delegation none --disallow-username-in-url --doh-cert-status --fail --fail-early --junk-session-cookies --no-basic --no-ca-native --no-digest --no-doh-insecure --no-http0.9 --no-insecure --no-negotiate --no-ntlm --no-proxy-basic --no-proxy-ca-native --no-proxy-digest --no-proxy-insecure --no-proxy-ssl-auto-client-cert --no-sessionid --no-ssl-auto-client-cert --no-ssl-no-revoke --no-ssl-revoke-best-effort --no-xattr --parallel --post301 --post302 --post303 --progress-meter --proto -all,https --proto-default https --proto-redir -all,https --proxy-ciphers ${IRONFOX_NONTLS13_CIPHERS} --proxy-tls13-ciphers ${IRONFOX_TLS13_CIPHERS} --referer '' --remove-on-error --retry 5 --retry-all-errors --retry-connrefused --show-error --tls13-ciphers ${IRONFOX_TLS13_CIPHERS} --tlsv1.2 --trace-time --user-agent '' --verbose"
|
|
if [[ -z "${IRONFOX_CURL_FLAGS+x}" ]]; then
|
|
IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT}"
|
|
elif [[ "${IRONFOX_CURL_FLAGS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS}"
|
|
else
|
|
IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT} ${IRONFOX_CURL_FLAGS}"
|
|
fi
|
|
readonly IRONFOX_CURL_FLAGS
|
|
export IRONFOX_CURL_FLAGS
|
|
|
|
# If Gradle flags are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_GRADLE_FLAGS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_GRADLE_FLAGS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_GRADLE_FLAGS_OVERRIDE="${IRONFOX_GRADLE_FLAGS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GRADLE_FLAGS_OVERRIDE
|
|
export IRONFOX_GRADLE_FLAGS_OVERRIDE
|
|
|
|
# Gradle flags
|
|
readonly IRONFOX_GRADLE_FLAGS_DEFAULT="-Dhttps.protocols=TLSv1.3,TLSv1.2 -Dmaven.repo.local=${IRONFOX_MAVEN_LOCAL} -Dorg.gradle.caching=false -Dorg.gradle.configuration-cache=false -Dorg.gradle.configureondemand=true -Dorg.gradle.console=verbose -Dorg.gradle.daemon=false -Dorg.gradle.debug=false -Dorg.gradle.java.installations.auto-detect=false -Dorg.gradle.java.installations.auto-download=false --no-build-cache --no-configuration-cache --no-daemon"
|
|
if [[ -z "${IRONFOX_GRADLE_FLAGS+x}" ]]; then
|
|
IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT}"
|
|
elif [[ "${IRONFOX_GRADLE_FLAGS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS}"
|
|
else
|
|
IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT} ${IRONFOX_GRADLE_FLAGS}"
|
|
fi
|
|
readonly IRONFOX_GRADLE_FLAGS
|
|
export IRONFOX_GRADLE_FLAGS
|
|
|
|
# If Java options are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_JAVA_OPTS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_JAVA_OPTS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_JAVA_OPTS_OVERRIDE="${IRONFOX_JAVA_OPTS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_JAVA_OPTS_OVERRIDE
|
|
export IRONFOX_JAVA_OPTS_OVERRIDE
|
|
|
|
# Java options
|
|
readonly IRONFOX_JAVA_OPTS_DEFAULT='-Dhttps.protocols=TLSv1.3,TLSv1.2'
|
|
if [[ -z "${IRONFOX_JAVA_OPTS+x}" ]]; then
|
|
IRONFOX_JAVA_OPTS="${IRONFOX_JAVA_OPTS_DEFAULT}"
|
|
elif [[ "${IRONFOX_JAVA_OPTS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_JAVA_OPTS="${IRONFOX_JAVA_OPTS}"
|
|
else
|
|
IRONFOX_JAVA_OPTS="${IRONFOX_JAVA_OPTS_DEFAULT} ${IRONFOX_JAVA_OPTS}"
|
|
fi
|
|
readonly IRONFOX_JAVA_OPTS
|
|
export IRONFOX_JAVA_OPTS
|
|
|
|
# If Node.js options are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_NODE_OPTIONS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_NODE_OPTIONS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_NODE_OPTIONS_OVERRIDE="${IRONFOX_NODE_OPTIONS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NODE_OPTIONS_OVERRIDE
|
|
export IRONFOX_NODE_OPTIONS_OVERRIDE
|
|
|
|
# Node.js options
|
|
### https://nodejs.org/api/cli.html#node-optionsoptions
|
|
readonly IRONFOX_NODE_OPTIONS_DEFAULT='--jitless --tls-min-v1.2 --use-bundled-ca'
|
|
if [[ -z "${IRONFOX_NODE_OPTIONS+x}" ]]; then
|
|
IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS_DEFAULT}"
|
|
elif [[ "${IRONFOX_NODE_OPTIONS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS}"
|
|
else
|
|
IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS_DEFAULT} ${IRONFOX_NODE_OPTIONS}"
|
|
fi
|
|
readonly IRONFOX_NODE_OPTIONS
|
|
export IRONFOX_NODE_OPTIONS
|
|
|
|
# If Rust flags are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_RUST_FLAGS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_RUST_FLAGS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_RUST_FLAGS_OVERRIDE="${IRONFOX_RUST_FLAGS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RUST_FLAGS_OVERRIDE
|
|
export IRONFOX_RUST_FLAGS_OVERRIDE
|
|
|
|
# Rust flags
|
|
readonly IRONFOX_RUST_FLAGS_DEFAULT='-Ccontrol-flow-guard=true -Cdebug-assertions=false -Cdebuginfo=0 -Cincremental=false -Clink-dead-code=false -Copt-level=3 -Coverflow-checks=true -Cstrip=debuginfo -O'
|
|
if [[ -z "${IRONFOX_RUST_FLAGS+x}" ]]; then
|
|
IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT}"
|
|
elif [[ "${IRONFOX_RUST_FLAGS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS}"
|
|
else
|
|
IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT} ${IRONFOX_RUST_FLAGS}"
|
|
fi
|
|
readonly IRONFOX_RUST_FLAGS
|
|
export IRONFOX_RUST_FLAGS
|
|
|
|
# If s3cmd flags are added, this determines whether they should be appended to our default flags (default),
|
|
## or if they should override them entirely
|
|
readonly IRONFOX_S3CMD_FLAGS_OVERRIDE_DEFAULT=0
|
|
if [[ -z "${IRONFOX_S3CMD_FLAGS_OVERRIDE+x}" ]]; then
|
|
IRONFOX_S3CMD_FLAGS_OVERRIDE="${IRONFOX_S3CMD_FLAGS_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_S3CMD_FLAGS_OVERRIDE
|
|
export IRONFOX_S3CMD_FLAGS_OVERRIDE
|
|
|
|
# s3cmd flags
|
|
readonly IRONFOX_S3CMD_FLAGS_DEFAULT='--check-certificate --check-hostname --check-md5 --no-guess-mime-type --no-mime-magic --progress --ssl'
|
|
if [[ -z "${IRONFOX_S3CMD_FLAGS+x}" ]]; then
|
|
IRONFOX_S3CMD_FLAGS="${IRONFOX_S3CMD_FLAGS_DEFAULT}"
|
|
elif [[ "${IRONFOX_S3CMD_FLAGS_OVERRIDE}" == 1 ]]; then
|
|
IRONFOX_S3CMD_FLAGS="${IRONFOX_S3CMD_FLAGS}"
|
|
else
|
|
IRONFOX_S3CMD_FLAGS="${IRONFOX_S3CMD_FLAGS_DEFAULT} ${IRONFOX_S3CMD_FLAGS}"
|
|
fi
|
|
readonly IRONFOX_S3CMD_FLAGS
|
|
export IRONFOX_S3CMD_FLAGS
|
|
|
|
# Whether we should use our prebuilt libraries (Default)
|
|
## (This is currently uniffi-bindgen and WASI SDK for us)
|
|
readonly IRONFOX_NO_PREBUILDS_DEFAULT=0
|
|
if [[ -z "${IRONFOX_NO_PREBUILDS+x}" ]]; then
|
|
IRONFOX_NO_PREBUILDS="${IRONFOX_NO_PREBUILDS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NO_PREBUILDS
|
|
export IRONFOX_NO_PREBUILDS
|
|
|
|
# Location to the Google Safe Browsing API key file (if Safe Browsing is desired)
|
|
readonly IRONFOX_SB_GAPI_KEY_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_SB_GAPI_KEY_FILE+x}" ]]; then
|
|
IRONFOX_SB_GAPI_KEY_FILE="${IRONFOX_SB_GAPI_KEY_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_SB_GAPI_KEY_FILE
|
|
export IRONFOX_SB_GAPI_KEY_FILE
|
|
|
|
# When this is set, it makes some changes to support bundle creation in certain circumstances - notably:
|
|
## If we're creating a bundle, instead of building GeckoView for each architecture and THEN creating our bundle GeckoView,
|
|
## this just builds GeckoView as a bundle directly
|
|
## If we're targetting ARM64, ARM, or x86_64, build.sh will ONLY build GeckoView for the respective architecture
|
|
## NOTE: For this to work: IRONFOX_GECKOVIEW_AAR_ARM64, IRONFOX_GECKOVIEW_AAR_ARM, and IRONFOX_GECKOVIEW_AAR_X86_64 must point
|
|
## to GeckoView AAR archives for ARM64, ARM, and x86_64 respectively
|
|
## In general, this is primarily meant for CI - avoid unless you know what you're doing
|
|
readonly IRONFOX_GECKOVIEW_BUNDLE_DIRECT=0
|
|
if [[ -z "${IRONFOX_GECKOVIEW_BUNDLE_DIRECT+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_BUNDLE_DIRECT="${IRONFOX_GECKOVIEW_BUNDLE_DIRECT_DEFAULT}"
|
|
fi
|
|
export IRONFOX_GECKOVIEW_BUNDLE_DIRECT
|
|
|
|
# Version overrides
|
|
|
|
## Value we should use to set the build date (used to derive the app version code from) (if overriding it is desired)
|
|
readonly IRONFOX_BUILD_DATE_OVERRIDE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_BUILD_DATE_OVERRIDE+x}" ]]; then
|
|
IRONFOX_BUILD_DATE_OVERRIDE="${IRONFOX_BUILD_DATE_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_BUILD_DATE_OVERRIDE
|
|
export IRONFOX_BUILD_DATE_OVERRIDE
|
|
|
|
## Value we should use to set Gecko(View)'s build ID (if overriding it is desired)
|
|
readonly IRONFOX_BUILD_ID_OVERRIDE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_BUILD_ID_OVERRIDE+x}" ]]; then
|
|
IRONFOX_BUILD_ID_OVERRIDE="${IRONFOX_BUILD_ID_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_BUILD_ID_OVERRIDE
|
|
export IRONFOX_BUILD_ID_OVERRIDE
|
|
|
|
## Value we should use to set the version for our local Android Components substitution (if overriding it is desired)
|
|
readonly IRONFOX_LOCAL_AC_VERSION_OVERRIDE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_LOCAL_AC_VERSION_OVERRIDE+x}" ]]; then
|
|
IRONFOX_LOCAL_AC_VERSION_OVERRIDE="${IRONFOX_LOCAL_AC_VERSION_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOCAL_AC_VERSION_OVERRIDE
|
|
export IRONFOX_LOCAL_AC_VERSION_OVERRIDE
|
|
|
|
## Value we should use to set the version for our local Application Services substitution (if overriding it is desired)
|
|
readonly IRONFOX_LOCAL_AS_VERSION_OVERRIDE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_LOCAL_AS_VERSION_OVERRIDE+x}" ]]; then
|
|
IRONFOX_LOCAL_AS_VERSION_OVERRIDE="${IRONFOX_LOCAL_AS_VERSION_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOCAL_AS_VERSION_OVERRIDE
|
|
export IRONFOX_LOCAL_AS_VERSION_OVERRIDE
|
|
|
|
## Value we should use to set the version for our local Glean substitution (if overriding it is desired)
|
|
readonly IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE+x}" ]]; then
|
|
IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE="${IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE
|
|
export IRONFOX_LOCAL_GLEAN_VERSION_OVERRIDE
|
|
|
|
# App signing
|
|
|
|
# Location to the Android keystore file that we should use
|
|
readonly IRONFOX_ANDROID_KEYSTORE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_ANDROID_KEYSTORE+x}" ]]; then
|
|
IRONFOX_ANDROID_KEYSTORE="${IRONFOX_ANDROID_KEYSTORE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_KEYSTORE
|
|
export IRONFOX_ANDROID_KEYSTORE
|
|
|
|
# Location to the Android keystore pass file that we should use
|
|
readonly IRONFOX_ANDROID_KEYSTORE_PASS_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_ANDROID_KEYSTORE_PASS_FILE+x}" ]]; then
|
|
IRONFOX_ANDROID_KEYSTORE_PASS_FILE="${IRONFOX_ANDROID_KEYSTORE_PASS_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_KEYSTORE_PASS_FILE
|
|
export IRONFOX_ANDROID_KEYSTORE_PASS_FILE
|
|
|
|
# Alias of the Android keystore that we should use
|
|
readonly IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS+x}" ]]; then
|
|
IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS="${IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS
|
|
export IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS
|
|
|
|
# Location to the Android keystore key pass file that we should use
|
|
readonly IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE+x}" ]]; then
|
|
IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE="${IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE
|
|
export IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE
|
|
|
|
# Should we automatically sign our output APK(S) files?
|
|
readonly IRONFOX_SIGN_DEFAULT=0
|
|
if [ "${IRONFOX_ANDROID_KEYSTORE}" != 'null' ] && [ "${IRONFOX_ANDROID_KEYSTORE_PASS_FILE}" != 'null' ] && [ "${IRONFOX_ANDROID_KEYSTORE_KEY_ALIAS}" != 'null' ] && [ "${IRONFOX_ANDROID_KEYSTORE_KEY_PASS_FILE}" != 'null' ]; then
|
|
IRONFOX_SIGN=1
|
|
else
|
|
IRONFOX_SIGN="${IRONFOX_SIGN_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_SIGN
|
|
export IRONFOX_SIGN
|
|
|
|
# Do we want to skip the prompt to install IronFox via ADB after signing?
|
|
readonly IRONFOX_SIGN_SKIP_ADB_DEFAULT=0
|
|
if [[ -z "${IRONFOX_SIGN_SKIP_ADB+x}" ]]; then
|
|
IRONFOX_SIGN_SKIP_ADB="${IRONFOX_SIGN_SKIP_ADB_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_SIGN_SKIP_ADB
|
|
export IRONFOX_SIGN_SKIP_ADB
|
|
|
|
# S3
|
|
|
|
# S3 access key
|
|
readonly IRONFOX_RELEASES_S3_ACCESS_KEY_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_RELEASES_S3_ACCESS_KEY_FILE+x}" ]]; then
|
|
IRONFOX_RELEASES_S3_ACCESS_KEY_FILE="${IRONFOX_RELEASES_S3_ACCESS_KEY_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RELEASES_S3_ACCESS_KEY_FILE
|
|
export IRONFOX_RELEASES_S3_ACCESS_KEY_FILE
|
|
|
|
# S3 bucket name
|
|
readonly IRONFOX_RELEASES_S3_BUCKET_NAME_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_RELEASES_S3_BUCKET_NAME_FILE+x}" ]]; then
|
|
IRONFOX_RELEASES_S3_BUCKET_NAME_FILE="${IRONFOX_RELEASES_S3_BUCKET_NAME_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RELEASES_S3_BUCKET_NAME_FILE
|
|
export IRONFOX_RELEASES_S3_BUCKET_NAME_FILE
|
|
|
|
# S3 endpoint
|
|
readonly IRONFOX_RELEASES_S3_ENDPOINT_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_RELEASES_S3_ENDPOINT_FILE+x}" ]]; then
|
|
IRONFOX_RELEASES_S3_ENDPOINT_FILE="${IRONFOX_RELEASES_S3_ENDPOINT_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RELEASES_S3_ENDPOINT_FILE
|
|
export IRONFOX_RELEASES_S3_ENDPOINT_FILE
|
|
|
|
# S3 secret key
|
|
readonly IRONFOX_RELEASES_S3_SECRET_KEY_FILE_DEFAULT='null'
|
|
if [[ -z "${IRONFOX_RELEASES_S3_SECRET_KEY_FILE+x}" ]]; then
|
|
IRONFOX_RELEASES_S3_SECRET_KEY_FILE="${IRONFOX_RELEASES_S3_SECRET_KEY_FILE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_RELEASES_S3_SECRET_KEY_FILE
|
|
export IRONFOX_RELEASES_S3_SECRET_KEY_FILE
|
|
|
|
# Locations for our GeckoView AAR archives
|
|
|
|
# Location of the ARM64 GeckoView AAR archive for bundle builds
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM64_DEFAULT="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM64}"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_ARM64+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_ARM64="${IRONFOX_GECKOVIEW_AAR_ARM64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM64
|
|
export IRONFOX_GECKOVIEW_AAR_ARM64
|
|
|
|
# Location of the ARM GeckoView AAR archive for bundle builds
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM_DEFAULT="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_ARM}"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_ARM+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_ARM="${IRONFOX_GECKOVIEW_AAR_ARM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM
|
|
export IRONFOX_GECKOVIEW_AAR_ARM
|
|
|
|
# Location of the x86_64 GeckoView AAR archive for bundle builds
|
|
readonly IRONFOX_GECKOVIEW_AAR_X86_64_DEFAULT="${IRONFOX_OUTPUTS_GECKOVIEW_AAR_X86_64}"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_X86_64+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_X86_64="${IRONFOX_GECKOVIEW_AAR_X86_64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_X86_64
|
|
export IRONFOX_GECKOVIEW_AAR_X86_64
|
|
|
|
# Location of where CI should extract the ARM64 GeckoView AAR archive
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM64_DIR_DEFAULT="${IRONFOX_EXTERNAL}/geckoview-arm64"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_ARM64_DIR+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_ARM64_DIR="${IRONFOX_GECKOVIEW_AAR_ARM64_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM64_DIR
|
|
export IRONFOX_GECKOVIEW_AAR_ARM64_DIR
|
|
|
|
# Location of where CI should extract the ARM GeckoView AAR archive
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM_DIR_DEFAULT="${IRONFOX_EXTERNAL}/geckoview-arm"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_ARM_DIR+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_ARM_DIR="${IRONFOX_GECKOVIEW_AAR_ARM_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_ARM_DIR
|
|
export IRONFOX_GECKOVIEW_AAR_ARM_DIR
|
|
|
|
# Location of where CI should extract the x86_64 GeckoView AAR archive
|
|
readonly IRONFOX_GECKOVIEW_AAR_X86_64_DIR_DEFAULT="${IRONFOX_EXTERNAL}/geckoview-x86_64"
|
|
if [[ -z "${IRONFOX_GECKOVIEW_AAR_X86_64_DIR+x}" ]]; then
|
|
IRONFOX_GECKOVIEW_AAR_X86_64_DIR="${IRONFOX_GECKOVIEW_AAR_X86_64_DIR_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_GECKOVIEW_AAR_X86_64_DIR
|
|
export IRONFOX_GECKOVIEW_AAR_X86_64_DIR
|
|
|
|
source "${IRONFOX_VERSIONS}"
|
|
|
|
# Node.js
|
|
readonly IRONFOX_NODEJS_DEFAULT="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin/node"
|
|
if [[ -z "${IRONFOX_NODEJS+x}" ]]; then
|
|
IRONFOX_NODEJS="${IRONFOX_NODEJS_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NODEJS
|
|
export IRONFOX_NODEJS
|
|
|
|
# npm
|
|
readonly IRONFOX_NPM_DEFAULT="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin/npm"
|
|
if [[ -z "${IRONFOX_NPM+x}" ]]; then
|
|
IRONFOX_NPM="${IRONFOX_NPM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_NPM
|
|
export IRONFOX_NPM
|
|
|
|
# Where our final ARM64 APK should be placed
|
|
if [[ "${IRONFOX_SIGN}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM64_SUFFIX='arm64-v8a'
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM64_SUFFIX='arm64-v8a-debug-signed'
|
|
fi
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM64_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_ARM64_SUFFIX}.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM64_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_ARM64_SUFFIX}.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_ARM64+x}" ]]; then
|
|
IRONFOX_OUTPUTS_ARM64="${IRONFOX_OUTPUTS_ARM64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_ARM64
|
|
export IRONFOX_OUTPUTS_ARM64
|
|
|
|
# If we're going to sign IronFox (translation: when IRONFOX_SIGN is set), this is where the unsigned ARM64 APK will be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM64_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_VERSION}-arm64-v8a-unsigned.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM64_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-arm64-v8a-unsigned.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_ARM64_UNSIGNED+x}" ]]; then
|
|
IRONFOX_OUTPUTS_ARM64_UNSIGNED="${IRONFOX_OUTPUTS_ARM64_UNSIGNED_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_ARM64_UNSIGNED
|
|
export IRONFOX_OUTPUTS_ARM64_UNSIGNED
|
|
|
|
# Where our final ARM APK should be placed
|
|
if [[ "${IRONFOX_SIGN}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM_SUFFIX='armeabi-v7a'
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM_SUFFIX='armeabi-v7a-debug-signed'
|
|
fi
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_ARM_SUFFIX}.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_ARM_SUFFIX}.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_ARM+x}" ]]; then
|
|
IRONFOX_OUTPUTS_ARM="${IRONFOX_OUTPUTS_ARM_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_ARM
|
|
export IRONFOX_OUTPUTS_ARM
|
|
|
|
# If we're going to sign IronFox (translation: when IRONFOX_SIGN is set), this is where the unsigned ARM APK will be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_ARM_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_VERSION}-armeabi-v7a-unsigned.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_ARM_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-armeabi-v7a-unsigned.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_ARM_UNSIGNED+x}" ]]; then
|
|
IRONFOX_OUTPUTS_ARM_UNSIGNED="${IRONFOX_OUTPUTS_ARM_UNSIGNED_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_ARM_UNSIGNED
|
|
export IRONFOX_OUTPUTS_ARM_UNSIGNED
|
|
|
|
# Where our final x86_64 APK should be placed
|
|
if [[ "${IRONFOX_SIGN}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_X86_64_SUFFIX='x86_64'
|
|
else
|
|
readonly IRONFOX_OUTPUTS_X86_64_SUFFIX='x86_64-debug-signed'
|
|
fi
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_X86_64_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_X86_64_SUFFIX}.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_X86_64_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_X86_64_SUFFIX}.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_X86_64+x}" ]]; then
|
|
IRONFOX_OUTPUTS_X86_64="${IRONFOX_OUTPUTS_X86_64_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_X86_64
|
|
export IRONFOX_OUTPUTS_X86_64
|
|
|
|
# If we're going to sign IronFox (translation: when IRONFOX_SIGN is set), this is where the unsigned x86_64 APK will be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_X86_64_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_VERSION}-x86_64-unsigned.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_X86_64_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-x86_64-unsigned.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_X86_64_UNSIGNED+x}" ]]; then
|
|
IRONFOX_OUTPUTS_X86_64_UNSIGNED="${IRONFOX_OUTPUTS_X86_64_UNSIGNED_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_X86_64_UNSIGNED
|
|
export IRONFOX_OUTPUTS_X86_64_UNSIGNED
|
|
|
|
# Where our final universal APK should be placed
|
|
if [[ "${IRONFOX_SIGN}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_SUFFIX='universal'
|
|
else
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_SUFFIX='universal-debug-signed'
|
|
fi
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_UNIVERSAL_SUFFIX}.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-${IRONFOX_OUTPUTS_UNIVERSAL_SUFFIX}.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_UNIVERSAL+x}" ]]; then
|
|
IRONFOX_OUTPUTS_UNIVERSAL="${IRONFOX_OUTPUTS_UNIVERSAL_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL
|
|
export IRONFOX_OUTPUTS_UNIVERSAL
|
|
|
|
# If we're going to sign IronFox (translation: when IRONFOX_SIGN is set), this is where the unsigned universal APK will be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_VERSION}-universal-unsigned.apk"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED_DEFAULT="${IRONFOX_OUTPUTS_APK_UNSIGNED}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}-universal-unsigned.apk"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED+x}" ]]; then
|
|
IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED="${IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED
|
|
export IRONFOX_OUTPUTS_UNIVERSAL_UNSIGNED
|
|
|
|
# Where our AAB should be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_BUNDLE_AAB_DEFAULT="${IRONFOX_OUTPUTS_AAB}/ironfox-${IRONFOX_VERSION}.aab"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_BUNDLE_AAB_DEFAULT="${IRONFOX_OUTPUTS_AAB}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}.aab"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_BUNDLE_AAB+x}" ]]; then
|
|
IRONFOX_OUTPUTS_BUNDLE_AAB="${IRONFOX_OUTPUTS_BUNDLE_AAB_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_BUNDLE_AAB
|
|
export IRONFOX_OUTPUTS_BUNDLE_AAB
|
|
|
|
# Where our final bundle ApkSet should be placed
|
|
if [[ "${IRONFOX_RELEASE}" == 1 ]]; then
|
|
readonly IRONFOX_OUTPUTS_BUNDLE_DEFAULT="${IRONFOX_OUTPUTS_APKS}/ironfox-${IRONFOX_VERSION}.apks"
|
|
else
|
|
readonly IRONFOX_OUTPUTS_BUNDLE_DEFAULT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${IRONFOX_VERSION}.apks"
|
|
fi
|
|
if [[ -z "${IRONFOX_OUTPUTS_BUNDLE+x}" ]]; then
|
|
IRONFOX_OUTPUTS_BUNDLE="${IRONFOX_OUTPUTS_BUNDLE_DEFAULT}"
|
|
fi
|
|
readonly IRONFOX_OUTPUTS_BUNDLE
|
|
export IRONFOX_OUTPUTS_BUNDLE
|
|
|
|
# Set our external environment variables
|
|
readonly IRONFOX_ENV_EXTERNAL="${IRONFOX_SCRIPTS}/env_external.sh"
|
|
source "${IRONFOX_ENV_EXTERNAL}"
|
|
|
|
# We've now set our environment variables...
|
|
readonly IRONFOX_SET_ENVS=1
|
|
export IRONFOX_SET_ENVS
|