From 8f9b3d80405db67aaa43ddb2035a88520e17ec46 Mon Sep 17 00:00:00 2001 From: celenity Date: Thu, 2 Apr 2026 21:31:13 +0000 Subject: [PATCH] fix: scripts (for now) Signed-off-by: celenity --- scripts/bootstrap.sh | 9 +- scripts/build-if.sh | 121 +++---- scripts/build.sh | 16 +- scripts/ci-publish-packages.sh | 4 +- scripts/deglean.sh | 39 +- scripts/env.sh | 8 +- scripts/env_common.sh | 573 ++++++++++-------------------- scripts/env_external.sh | 421 +++++++--------------- scripts/env_helpers.sh | 21 +- scripts/get_sources-if.sh | 217 ++--------- scripts/get_sources.sh | 17 +- scripts/noop_mozilla_endpoints.sh | 31 +- scripts/patches.sh | 111 +++--- scripts/prebuild-if.sh | 12 +- scripts/prebuild.sh | 9 +- scripts/run-docker.sh | 16 +- scripts/sign.sh | 18 +- scripts/utilities.sh | 2 - 18 files changed, 531 insertions(+), 1114 deletions(-) diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh index 525fd113..3889d504 100755 --- a/scripts/bootstrap.sh +++ b/scripts/bootstrap.sh @@ -5,18 +5,13 @@ set -euo pipefail # Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -# Include utilities -source "${IRONFOX_UTILS}" - # Get our platform, OS, and architecture source "${IRONFOX_ENV_HELPERS}" -function error_fn() { +error_fn() { echo echo -e "\033[31mSomething went wrong! The script failed.\033[0m" echo -e "\033[31mPlease report this (with the output message) to https://gitlab.com/ironfox-oss/IronFox/-/issues\033[0m" diff --git a/scripts/build-if.sh b/scripts/build-if.sh index 9717164a..7e330246 100755 --- a/scripts/build-if.sh +++ b/scripts/build-if.sh @@ -23,11 +23,9 @@ set -euo pipefail # Set-up our environment +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -# Include utilities -source "${IRONFOX_UTILS}" - if [[ -z "${IRONFOX_FROM_BUILD+x}" ]]; then echo_red_text 'ERROR: Do not call build-if.sh directly. Instead, use build.sh.' >&1 exit 1 @@ -42,40 +40,37 @@ fi case "$1" in arm64) # arm64-v8a - IRONFOX_TARGET_ARCH='arm64' - readonly IRONFOX_TARGET_ABI='arm64-v8a' - readonly IRONFOX_TARGET_PRETTY='ARM64' - readonly IRONFOX_TARGET_RUST='arm64' + export IRONFOX_TARGET_ARCH='arm64' + export IRONFOX_TARGET_ABI='arm64-v8a' + export IRONFOX_TARGET_PRETTY='ARM64' + IRONFOX_TARGET_RUST='arm64' ;; arm) # armeabi-v7a - IRONFOX_TARGET_ARCH='arm' - readonly IRONFOX_TARGET_ABI='armeabi-v7a' - readonly IRONFOX_TARGET_PRETTY='ARM' - readonly IRONFOX_TARGET_RUST='arm' + export IRONFOX_TARGET_ARCH='arm' + export IRONFOX_TARGET_ABI='armeabi-v7a' + export IRONFOX_TARGET_PRETTY='ARM' + IRONFOX_TARGET_RUST='arm' ;; x86_64) # x86_64 - IRONFOX_TARGET_ARCH='x86_64' - readonly IRONFOX_TARGET_ABI='x86_64' - readonly IRONFOX_TARGET_PRETTY='x86_64' - readonly IRONFOX_TARGET_RUST='x86_64' + export IRONFOX_TARGET_ARCH='x86_64' + export IRONFOX_TARGET_ABI='x86_64' + export IRONFOX_TARGET_PRETTY='x86_64' + IRONFOX_TARGET_RUST='x86_64' ;; bundle) # arm64-v8a, armeabi-v7a, and x86_64 - IRONFOX_TARGET_ARCH='bundle' - readonly IRONFOX_TARGET_ABI='arm64-v8a", "armeabi-v7a", "x86_64' - readonly IRONFOX_TARGET_PRETTY='Bundle' - readonly IRONFOX_TARGET_RUST='arm64,arm,x86_64' + export IRONFOX_TARGET_ARCH='bundle' + export IRONFOX_TARGET_ABI='arm64-v8a", "armeabi-v7a", "x86_64' + export IRONFOX_TARGET_PRETTY='Bundle' + IRONFOX_TARGET_RUST='arm64,arm,x86_64' ;; *) echo_red_text "Unknown build variant: '$1'" >&2 exit 1 ;; esac -export IRONFOX_TARGET_ARCH -export IRONFOX_TARGET_ABI -export IRONFOX_TARGET_PRETTY if [[ -z "${IRONFOX_SB_GAPI_KEY_FILE+x}" ]]; then echo_red_text 'IRONFOX_SB_GAPI_KEY_FILE environment variable has not been specified! Safe Browsing will not be supported in this build.' @@ -112,46 +107,40 @@ function set_build_env() { rm "${IRONFOX_ENV_BUILD}" fi - local readonly EPOCH_NS="$("${IRONFOX_DATE}" "+%s%N")" + EPOCH_NS="$("${IRONFOX_DATE}" "+%s%N")" if [ "${IRONFOX_CI}" == 1 ]; then - local readonly IF_LOCAL_VERSION_STAMP="${IF_BUILD_STAMP}" + IF_LOCAL_VERSION_STAMP="${IF_BUILD_STAMP}" else - local readonly IF_LOCAL_VERSION_STAMP="${EPOCH_NS}" + IF_LOCAL_VERSION_STAMP="${EPOCH_NS}" fi if [ "${IRONFOX_CI}" != 1 ] && [ "${IRONFOX_TARGET_ARCH}" == 'bundle' ]; then # Set build date for bundle builds, to avoid conflicts and ensure that MOZ_BUILDID is consistent across all builds ## (CI handles this at `env_ci.sh` instead) - local readonly BUILD_DATE="$("${IRONFOX_DATE}" -u +"%Y-%m-%dT%H:%M:%SZ")" + BUILD_DATE="$("${IRONFOX_DATE}" -u +"%Y-%m-%dT%H:%M:%SZ")" cat > "${IRONFOX_ENV_BUILD}" << EOF -readonly IF_BUILD_DATE="${BUILD_DATE}" -readonly IF_EPOCH_NS="${IF_LOCAL_VERSION_STAMP}" -readonly IRONFOX_TARGET_ARCH="${IRONFOX_TARGET_ARCH}" -export IF_BUILD_DATE -export IF_EPOCH_NS -export IRONFOX_TARGET_ARCH +export IF_BUILD_DATE="${BUILD_DATE}" +export IF_EPOCH_NS="${IF_LOCAL_VERSION_STAMP}" +export IRONFOX_TARGET_ARCH="${IRONFOX_TARGET_ARCH}" EOF else echo "Writing ${IRONFOX_ENV_BUILD}..." cat > "${IRONFOX_ENV_BUILD}" << EOF -readonly IF_EPOCH_NS="${IF_LOCAL_VERSION_STAMP}" -readonly IRONFOX_TARGET_ARCH="${IRONFOX_TARGET_ARCH}" -export IF_EPOCH_NS -export IRONFOX_TARGET_ARCH +export IF_EPOCH_NS="${IF_LOCAL_VERSION_STAMP}" +export IRONFOX_TARGET_ARCH="${IRONFOX_TARGET_ARCH}" EOF fi source "${IRONFOX_ENV_BUILD}" if [ "${IRONFOX_CI}" != 1 ] && [ "${IRONFOX_TARGET_ARCH}" == 'bundle' ]; then - readonly MOZ_BUILD_DATE="$("${IRONFOX_DATE}" -d "${IF_BUILD_DATE}" "+%Y%m%d%H%M%S")" - export MOZ_BUILD_DATE + export MOZ_BUILD_DATE="$("${IRONFOX_DATE}" -d "${IF_BUILD_DATE}" "+%Y%m%d%H%M%S")" fi # Set versions for our local dependency substitutions - local readonly IF_LOCAL_AC_VERSION_BASE="${FIREFOX_VERSION}-${IF_EPOCH_NS}" - local readonly IF_LOCAL_AS_VERSION_BASE="${APPSERVICES_VERSION}-${IF_EPOCH_NS}" - local readonly IF_LOCAL_GLEAN_VERSION_BASE="${GLEAN_VERSION}-${IF_EPOCH_NS}" + readonly IF_LOCAL_AC_VERSION_BASE="${FIREFOX_VERSION}-${IF_EPOCH_NS}" + readonly IF_LOCAL_AS_VERSION_BASE="${APPSERVICES_VERSION}-${IF_EPOCH_NS}" + readonly IF_LOCAL_GLEAN_VERSION_BASE="${GLEAN_VERSION}-${IF_EPOCH_NS}" ## For CI, we set IF_EPOCH_NS from the pipeline creation time, and we don't add '-SNAPSHOT' to the end if [ "${IRONFOX_CI}" == 1 ]; then @@ -269,9 +258,9 @@ function prep_gecko() { # Configure release channel if [[ "${IRONFOX_RELEASE}" == 1 ]]; then - local readonly IRONFOX_NAME='IronFox' + IRONFOX_NAME='IronFox' else - local readonly IRONFOX_NAME='IronFox Nightly' + IRONFOX_NAME='IronFox Nightly' fi if [[ -f "${IRONFOX_GECKO}/toolkit/content/neterror/supportpages/connection-not-secure.html" ]]; then @@ -359,7 +348,7 @@ function prep_llvm() { function clean_gradle() { # This is used for cleaning Gradle to ensure builds are fresh - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JAVA_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME} clean + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} clean } function build_bundletool() { @@ -368,7 +357,7 @@ function build_bundletool() { pushd "${IRONFOX_BUNDLETOOL_DIR}" clean_gradle - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JAVA_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME} assemble + "${IRONFOX_GRADLE}" assemble popd cp -f "${IRONFOX_BUNDLETOOL_DIR}/build/libs/bundletool.jar" "${IRONFOX_BUNDLETOOL_JAR}" @@ -381,7 +370,7 @@ function build_llvm() { echo_red_text 'Building LLVM...' pushd "${llvm}" - local readonly llvmtarget=$(cat "${IRONFOX_BUILD}/targets_to_build") + llvmtarget=$(cat "${IRONFOX_BUILD}/targets_to_build") echo_green_text "building llvm for ${llvmtarget}" cmake -S llvm -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out -DCMAKE_C_COMPILER=clang \ -DCMAKE_CXX_COMPILER=clang++ -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="$llvmtarget" \ @@ -421,9 +410,9 @@ function build_microg() { echo_red_text 'Building microG...' pushd "${IRONFOX_GMSCORE}" - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_21_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME} clean + clean_gradle - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_21_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME} -x javaDocReleaseGeneration \ + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dhttps.protocols=TLSv1.3 -x javaDocReleaseGeneration \ :play-services-base:publishToMavenLocal \ :play-services-basement:publishToMavenLocal \ :play-services-fido:publishToMavenLocal \ @@ -438,10 +427,10 @@ function build_glean() { echo_red_text 'Building Glean...' pushd "${IRONFOX_GLEAN}" - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_17_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME},${IRONFOX_JDK_17_HOME} clean + clean_gradle - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_17_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME},${IRONFOX_JDK_17_HOME} -Plocal=${IF_LOCAL_GLEAN_VERSION_GRADLE} :glean-native:publishToMavenLocal - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_17_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME},${IRONFOX_JDK_17_HOME} -Plocal=${IF_LOCAL_GLEAN_VERSION_GRADLE} publishToMavenLocal -x createGleanPythonVirtualEnv + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Plocal=${IF_LOCAL_GLEAN_VERSION_GRADLE} :glean-native:publishToMavenLocal + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Plocal=${IF_LOCAL_GLEAN_VERSION_GRADLE} publishToMavenLocal -x createGleanPythonVirtualEnv popd echo_green_text 'SUCCESS: Built Glean' @@ -452,21 +441,17 @@ function build_as() { echo_red_text 'Building Application Services...' pushd "${IRONFOX_AS}" - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_17_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME},${IRONFOX_JDK_17_HOME} clean + clean_gradle # When 'CI' environment variable is set to a non-zero value, the 'libs/verify-ci-android-environment.sh' script # skips building the libraries as they are expected to be already downloaded in a CI environment # However, we want build those libraries always, so we unset CI before invoking the script unset CI - unset JAVA_HOME - export JAVA_HOME="${IRONFOX_JDK_17_HOME}" bash -x "${IRONFOX_AS}/libs/verify-android-environment.sh" - unset JAVA_HOME - export JAVA_HOME="${IRONFOX_JAVA_HOME}" # Build Application Services - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JDK_17_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME},${IRONFOX_JDK_17_HOME} -Plocal=${IF_LOCAL_AS_VERSION_GRADLE} publish + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} publish -Plocal=${IF_LOCAL_AS_VERSION_GRADLE} popd @@ -618,21 +603,17 @@ function build_gecko_x86_64() { function build_gecko_bundle() { # Bundle - readonly MOZ_ANDROID_FAT_AAR_ARCHITECTURES='arm64-v8a,armeabi-v7a,x86_64' - export MOZ_ANDROID_FAT_AAR_ARCHITECTURES + export MOZ_ANDROID_FAT_AAR_ARCHITECTURES='arm64-v8a,armeabi-v7a,x86_64' if [ "${IRONFOX_CI}" == 1 ]; then - readonly MOZ_ANDROID_FAT_AAR_ARM64_V8A="${IRONFOX_AAR_ARTIFACTS}/geckoview-arm64-v8a.zip" - readonly MOZ_ANDROID_FAT_AAR_ARMEABI_V7A="${IRONFOX_AAR_ARTIFACTS}/geckoview-armeabi-v7a.zip" - readonly MOZ_ANDROID_FAT_AAR_X86_64="${IRONFOX_AAR_ARTIFACTS}/geckoview-x86_64.zip" + export MOZ_ANDROID_FAT_AAR_ARM64_V8A="${IRONFOX_AAR_ARTIFACTS}/geckoview-arm64-v8a.zip" + export MOZ_ANDROID_FAT_AAR_ARMEABI_V7A="${IRONFOX_AAR_ARTIFACTS}/geckoview-armeabi-v7a.zip" + export MOZ_ANDROID_FAT_AAR_X86_64="${IRONFOX_AAR_ARTIFACTS}/geckoview-x86_64.zip" else - readonly MOZ_ANDROID_FAT_AAR_ARM64_V8A="${IRONFOX_OUTPUTS_GV_AAR_ARM64}" - readonly MOZ_ANDROID_FAT_AAR_ARMEABI_V7A="${IRONFOX_OUTPUTS_GV_AAR_ARM}" - readonly MOZ_ANDROID_FAT_AAR_X86_64="${IRONFOX_OUTPUTS_GV_AAR_X86_64}" + export MOZ_ANDROID_FAT_AAR_ARM64_V8A="${IRONFOX_OUTPUTS_GV_AAR_ARM64}" + export MOZ_ANDROID_FAT_AAR_ARMEABI_V7A="${IRONFOX_OUTPUTS_GV_AAR_ARM}" + export MOZ_ANDROID_FAT_AAR_X86_64="${IRONFOX_OUTPUTS_GV_AAR_X86_64}" fi - export MOZ_ANDROID_FAT_AAR_ARM64_V8A - export MOZ_ANDROID_FAT_AAR_ARMEABI_V7A - export MOZ_ANDROID_FAT_AAR_X86_64 pushd "${IRONFOX_GECKO}" echo_red_text 'Creating GeckoView fat AAR...' @@ -789,7 +770,7 @@ function build_up_ac() { clean_gradle # Build UnifiedPush-AC - "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} -Dorg.gradle.java.home=${IRONFOX_JAVA_HOME} -Dorg.gradle.java.installations.paths=${IRONFOX_JAVA_HOME} publish + "${IRONFOX_GRADLE}" ${IRONFOX_GRADLE_FLAGS} publish popd echo_green_text 'SUCCESS: Built UnifiedPush-AC' @@ -870,7 +851,7 @@ function build_fenix() { fi # 5. Finally, build and export our AAB - "${IRONFOX_MACH}" gradle -Paab -p mobile/android/fenix bundleRelease -x :app:releaseOssLicensesCleanUp + "${IRONFOX_MACH}" gradle -p mobile/android/fenix -Paab bundleRelease -x :app:releaseOssLicensesCleanUp cp -v "${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-bundle/gradle/build/mobile/android/fenix/app/outputs/bundle/release/app-release.aab" "${IRONFOX_OUTPUTS_FENIX_AAB}" else # Export APK diff --git a/scripts/build.sh b/scripts/build.sh index 8ec15937..abc439b4 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,26 +3,20 @@ set -euo pipefail # Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -# Include utilities -source "${IRONFOX_UTILS}" - if [ -z "${1+x}" ]; then echo_red_text "Usage: $0 arm|arm64|x86_64|bundle" >&1 exit 1 fi -readonly target=$(echo "${1}" | "${IRONFOX_AWK}" '{print tolower($0)}') +target=$(echo "${1}" | "${IRONFOX_AWK}" '{print tolower($0)}') # Build IronFox -readonly IRONFOX_FROM_BUILD=1 -export IRONFOX_FROM_BUILD +export IRONFOX_FROM_BUILD=1 if [ "${IRONFOX_LOG_BUILD}" == 1 ]; then - readonly BUILD_LOG_FILE="${IRONFOX_LOG_DIR}/build-${target}.log" + BUILD_LOG_FILE="${IRONFOX_LOG_DIR}/build-${target}.log" # If the log file already exists, remove it if [ -f "${BUILD_LOG_FILE}" ]; then @@ -42,7 +36,7 @@ source "${IRONFOX_ENV_BUILD}" if [ "${IRONFOX_SIGN}" == 1 ]; then if [ "${IRONFOX_LOG_SIGN}" == 1 ]; then - readonly SIGN_LOG_FILE="${IRONFOX_LOG_DIR}/sign.log" + SIGN_LOG_FILE="${IRONFOX_LOG_DIR}/sign.log" # If the log file already exists, remove it if [ -f "${SIGN_LOG_FILE}" ]; then diff --git a/scripts/ci-publish-packages.sh b/scripts/ci-publish-packages.sh index 1d911c92..e1e4343e 100755 --- a/scripts/ci-publish-packages.sh +++ b/scripts/ci-publish-packages.sh @@ -14,7 +14,7 @@ source "${IRONFOX_VERSIONS}" export GENERIC_PACKAGES_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic" -function upload_to_package_registry() { +upload_to_package_registry() { local file="$1" local package_name="$2" local file_name="$(basename "${file}")" @@ -35,7 +35,7 @@ echo -n "" > "${RELEASE_NOTES_FILE}" echo -n "" > "${CHECKSUMS_FILE}" declare -a assets -function upload_asset() { +upload_asset() { package_name="$1" file="$2" file_name="$(basename "${file}")" diff --git a/scripts/deglean.sh b/scripts/deglean.sh index 0fe1cde0..ecf1c2df 100755 --- a/scripts/deglean.sh +++ b/scripts/deglean.sh @@ -2,20 +2,13 @@ set -euo pipefail -# Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi -source $(dirname $0)/env.sh - -# Include utilities -source "${IRONFOX_UTILS}" +source "$(dirname $0)/utilities.sh" function deglean() { - local readonly dir="$1" - local readonly gradle_files=$(find "${dir}" -type f -name "*.gradle") - local readonly kt_files=$(find "${dir}" -type f -name "*.kt") - local readonly yaml_files=$(find "${dir}" -type f -name "metrics.yaml" -o -name "pings.yaml") + local dir="$1" + local gradle_files=$(find "${dir}" -type f -name "*.gradle") + local kt_files=$(find "${dir}" -type f -name "*.kt") + local yaml_files=$(find "${dir}" -type f -name "metrics.yaml" -o -name "pings.yaml") if [ -n "${gradle_files}" ]; then for file in $gradle_files; do @@ -24,27 +17,27 @@ function deglean() { if grep -q 'apply plugin.*glean' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*apply plugin:.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'classpath.*glean' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*classpath.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'compileOnly.*glean' "$file"; then "${IRONFOX_SED}" -i -r 's/^(.*compileOnly.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'implementation.*glean' "$file"; then "${IRONFOX_SED}" -i -r 's/^(.*implementation.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'testImplementation.*glean' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*testImplementation.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if [ "${modified}" = true ]; then @@ -61,12 +54,12 @@ function deglean() { if grep -q 'import mozilla.telemetry.*' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*import mozilla.telemetry.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'import .*GleanMetrics' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*GleanMetrics.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if [ "${modified}" = true ]; then @@ -88,8 +81,8 @@ function deglean() { } function deglean_fenix() { - local readonly dir="$1" - local readonly gradle_files=$(find "${dir}" -type f -name "*.gradle") + local dir="$1" + local gradle_files=$(find "${dir}" -type f -name "*.gradle") if [ -n "${gradle_files}" ]; then for file in $gradle_files; do @@ -97,12 +90,12 @@ function deglean_fenix() { if grep -q 'implementation.*service-glean' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*implementation.*service-glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if grep -q 'testImplementation.*glean' "${file}"; then "${IRONFOX_SED}" -i -r 's/^(.*testImplementation.*glean.*)$/\/\/ \1/' "${file}" - local modified=true + modified=true fi if [ "${modified}" = true ]; then diff --git a/scripts/env.sh b/scripts/env.sh index 83e01804..0a46c30f 100755 --- a/scripts/env.sh +++ b/scripts/env.sh @@ -11,13 +11,11 @@ if [[ ! -f "$(dirname $0)/env_local.sh" ]]; then # Write env_local.sh echo "Writing ${ENV_LOCAL}..." cat > "${ENV_LOCAL}" << EOF -IRONFOX_ROOT="${ROOT}" -export IRONFOX_ROOT +export IRONFOX_ROOT="${ROOT}" source "\${IRONFOX_ROOT}/scripts/env_common.sh" EOF fi -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - source "$(dirname $0)/env_local.sh" -fi +source "$(dirname $0)/env_local.sh" +source "$(dirname $0)/utilities.sh" diff --git a/scripts/env_common.sh b/scripts/env_common.sh index 0d7a139d..9581f537 100644 --- a/scripts/env_common.sh +++ b/scripts/env_common.sh @@ -16,37 +16,24 @@ fi # IronFox # Scripts directory -IRONFOX_SCRIPTS="${IRONFOX_ROOT}/scripts" -export IRONFOX_SCRIPTS - -## IronFox utilities -IRONFOX_UTILS="${IRONFOX_SCRIPTS}/utilities.sh" -export IRONFOX_UTILS +export IRONFOX_SCRIPTS="${IRONFOX_ROOT}/scripts" # Configuration files -IRONFOX_CONFIGS="${IRONFOX_ROOT}/configs" -IRONFOX_MOZCONFIGS="${IRONFOX_CONFIGS}/mozconfigs" -export IRONFOX_CONFIGS -export IRONFOX_MOZCONFIGS +export IRONFOX_CONFIGS="${IRONFOX_ROOT}/configs" +export IRONFOX_MOZCONFIGS="${IRONFOX_CONFIGS}/mozconfigs" # CI artifacts -IRONFOX_ARTIFACTS="${IRONFOX_ROOT}/artifacts" -IRONFOX_AAR_ARTIFACTS="${IRONFOX_ARTIFACTS}/aar" -IRONFOX_APK_ARTIFACTS="${IRONFOX_ARTIFACTS}/apk" -IRONFOX_APKS_ARTIFACTS="${IRONFOX_ARTIFACTS}/apks" -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 +export IRONFOX_ARTIFACTS="${IRONFOX_ROOT}/artifacts" +export IRONFOX_AAR_ARTIFACTS="${IRONFOX_ARTIFACTS}/aar" +export IRONFOX_APK_ARTIFACTS="${IRONFOX_ARTIFACTS}/apk" +export IRONFOX_APKS_ARTIFACTS="${IRONFOX_ARTIFACTS}/apks" +export IRONFOX_LOG_ARTIFACTS="${IRONFOX_ARTIFACTS}/logs" # Are we in a CI environment? IRONFOX_CI_DEFAULT=0 if [[ -z "${IRONFOX_CI+x}" ]]; then - IRONFOX_CI="${IRONFOX_CI_DEFAULT}" + export IRONFOX_CI="${IRONFOX_CI_DEFAULT}" fi -export IRONFOX_CI ## If so, set our CI environment variables IRONFOX_ENV_CI="${IRONFOX_SCRIPTS}/env_ci.sh" @@ -55,317 +42,251 @@ if [ "${IRONFOX_CI}" == 1 ]; then fi # Environment configuration -IRONFOX_ENV_FDROID="${IRONFOX_SCRIPTS}/env_fdroid.sh" -export IRONFOX_ENV_FDROID +export IRONFOX_ENV_FDROID="${IRONFOX_SCRIPTS}/env_fdroid.sh" # Build environment configuration -IRONFOX_ENV_BUILD="${IRONFOX_SCRIPTS}/env_build.sh" -export IRONFOX_ENV_BUILD +export IRONFOX_ENV_BUILD="${IRONFOX_SCRIPTS}/env_build.sh" # Build directory -IRONFOX_BUILD="${IRONFOX_ROOT}/build" -export IRONFOX_BUILD +export IRONFOX_BUILD="${IRONFOX_ROOT}/build" # External sources directory -IRONFOX_EXTERNAL="${IRONFOX_ROOT}/external" -export IRONFOX_EXTERNAL +export IRONFOX_EXTERNAL="${IRONFOX_ROOT}/external" # External downloads/resources directory -IRONFOX_DOWNLOADS="${IRONFOX_EXTERNAL}/downloads" -export IRONFOX_DOWNLOADS +export IRONFOX_DOWNLOADS="${IRONFOX_EXTERNAL}/downloads" # Patches directory -IRONFOX_PATCHES="${IRONFOX_ROOT}/patches" -export IRONFOX_PATCHES +export IRONFOX_PATCHES="${IRONFOX_ROOT}/patches" # Get our current commit ## (This is ex. displayed at `about:buildconfig` in Gecko/Firefox) -IRONFOX_REVISION="$(git log -1 --format="%H" | tail -n 1)" -export IRONFOX_REVISION +export IRONFOX_REVISION="$(git log -1 --format="%H" | tail -n 1)" # Set our platform, OS, and architecture -IRONFOX_ENV_HELPERS="${IRONFOX_SCRIPTS}/env_helpers.sh" -export IRONFOX_ENV_HELPERS +export IRONFOX_ENV_HELPERS="${IRONFOX_SCRIPTS}/env_helpers.sh" source "${IRONFOX_ENV_HELPERS}" # Version info -IRONFOX_VERSIONS="${IRONFOX_SCRIPTS}/versions.sh" -export IRONFOX_VERSIONS +export IRONFOX_VERSIONS="${IRONFOX_SCRIPTS}/versions.sh" # IronFox outputs directory IRONFOX_OUTPUTS_DEFAULT="${IRONFOX_BUILD}/outputs" if [[ -z "${IRONFOX_OUTPUTS+x}" ]]; then - IRONFOX_OUTPUTS="${IRONFOX_OUTPUTS_DEFAULT}" + export IRONFOX_OUTPUTS="${IRONFOX_OUTPUTS_DEFAULT}" fi -export IRONFOX_OUTPUTS # Whether we're building IronFox for release or Nightly/CI (Default) IRONFOX_RELEASE_DEFAULT=0 if [[ -z "${IRONFOX_RELEASE+x}" ]]; then - IRONFOX_RELEASE="${IRONFOX_RELEASE_DEFAULT}" + export IRONFOX_RELEASE="${IRONFOX_RELEASE_DEFAULT}" fi -export IRONFOX_RELEASE # Set release channel if [[ "${IRONFOX_RELEASE}" == 1 ]]; then - IRONFOX_CHANNEL='release' - IRONFOX_CHANNEL_PRETTY='Release' + export IRONFOX_CHANNEL='release' + export IRONFOX_CHANNEL_PRETTY='Release' else - IRONFOX_CHANNEL='nightly' - IRONFOX_CHANNEL_PRETTY='Nightly' + export IRONFOX_CHANNEL='nightly' + export IRONFOX_CHANNEL_PRETTY='Nightly' fi -export IRONFOX_CHANNEL -export IRONFOX_CHANNEL_PRETTY -IRONFOX_OUTPUTS_AAB="${IRONFOX_OUTPUTS}/aab" -IRONFOX_OUTPUTS_AAR="${IRONFOX_OUTPUTS}/aar" -IRONFOX_OUTPUTS_APK="${IRONFOX_OUTPUTS}/apk" -IRONFOX_OUTPUTS_APKS="${IRONFOX_OUTPUTS}/apks" -export IRONFOX_OUTPUTS_AAB -export IRONFOX_OUTPUTS_AAR -export IRONFOX_OUTPUTS_APK -export IRONFOX_OUTPUTS_APKS +export IRONFOX_OUTPUTS_AAB="${IRONFOX_OUTPUTS}/aab" +export IRONFOX_OUTPUTS_AAR="${IRONFOX_OUTPUTS}/aar" +export IRONFOX_OUTPUTS_APK="${IRONFOX_OUTPUTS}/apk" +export IRONFOX_OUTPUTS_APKS="${IRONFOX_OUTPUTS}/apks" -IRONFOX_OUTPUTS_GV_AAR_ARM="${IRONFOX_OUTPUTS_AAR}/geckoview-armeabi-v7a.zip" -IRONFOX_OUTPUTS_GV_AAR_ARM64="${IRONFOX_OUTPUTS_AAR}/geckoview-arm64-v8a.zip" -IRONFOX_OUTPUTS_GV_AAR_X86_64="${IRONFOX_OUTPUTS_AAR}/geckoview-x86_64.zip" -export IRONFOX_OUTPUTS_GV_AAR_ARM -export IRONFOX_OUTPUTS_GV_AAR_ARM64 -export IRONFOX_OUTPUTS_GV_AAR_X86_64 +export IRONFOX_OUTPUTS_GV_AAR_ARM="${IRONFOX_OUTPUTS_AAR}/geckoview-armeabi-v7a.zip" +export IRONFOX_OUTPUTS_GV_AAR_ARM64="${IRONFOX_OUTPUTS_AAR}/geckoview-arm64-v8a.zip" +export IRONFOX_OUTPUTS_GV_AAR_X86_64="${IRONFOX_OUTPUTS_AAR}/geckoview-x86_64.zip" -IRONFOX_OUTPUTS_FENIX_ARM64_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-arm64-v8a-signed.apk" -IRONFOX_OUTPUTS_FENIX_ARM64_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-arm64-v8a-unsigned.apk" -IRONFOX_OUTPUTS_FENIX_ARM_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-armeabi-v7a-signed.apk" -IRONFOX_OUTPUTS_FENIX_ARM_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-armeabi-v7a-unsigned.apk" -IRONFOX_OUTPUTS_FENIX_X86_64_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-x86_64-signed.apk" -IRONFOX_OUTPUTS_FENIX_X86_64_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-x86_64-unsigned.apk" -IRONFOX_OUTPUTS_FENIX_UNIVERSAL_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-universal-signed.apk" -IRONFOX_OUTPUTS_FENIX_UNIVERSAL_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-universal-unsigned.apk" -IRONFOX_OUTPUTS_FENIX_AAB="${IRONFOX_OUTPUTS_AAB}/ironfox-${IRONFOX_CHANNEL}.aab" -IRONFOX_OUTPUTS_FENIX_APKS="${IRONFOX_OUTPUTS_APKS}/ironfox-${IRONFOX_CHANNEL}.apks" -export IRONFOX_OUTPUTS_FENIX_ARM64_SIGNED -export IRONFOX_OUTPUTS_FENIX_ARM64_UNSIGNED -export IRONFOX_OUTPUTS_FENIX_ARM_SIGNED -export IRONFOX_OUTPUTS_FENIX_ARM_UNSIGNED -export IRONFOX_OUTPUTS_FENIX_X86_64_SIGNED -export IRONFOX_OUTPUTS_FENIX_X86_64_UNSIGNED -export IRONFOX_OUTPUTS_FENIX_UNIVERSAL_SIGNED -export IRONFOX_OUTPUTS_FENIX_UNIVERSAL_UNSIGNED -export IRONFOX_OUTPUTS_FENIX_AAB -export IRONFOX_OUTPUTS_FENIX_APKS +export IRONFOX_OUTPUTS_FENIX_ARM64_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-arm64-v8a-signed.apk" +export IRONFOX_OUTPUTS_FENIX_ARM64_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-arm64-v8a-unsigned.apk" +export IRONFOX_OUTPUTS_FENIX_ARM_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-armeabi-v7a-signed.apk" +export IRONFOX_OUTPUTS_FENIX_ARM_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-armeabi-v7a-unsigned.apk" +export IRONFOX_OUTPUTS_FENIX_X86_64_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-x86_64-signed.apk" +export IRONFOX_OUTPUTS_FENIX_X86_64_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-x86_64-unsigned.apk" +export IRONFOX_OUTPUTS_FENIX_UNIVERSAL_SIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-universal-signed.apk" +export IRONFOX_OUTPUTS_FENIX_UNIVERSAL_UNSIGNED="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-universal-unsigned.apk" +export IRONFOX_OUTPUTS_FENIX_AAB="${IRONFOX_OUTPUTS_AAB}/ironfox-${IRONFOX_CHANNEL}.aab" +export IRONFOX_OUTPUTS_FENIX_APKS="${IRONFOX_OUTPUTS_APKS}/ironfox-${IRONFOX_CHANNEL}.apks" # Should we create a log file for build.sh? (Default) IRONFOX_LOG_BUILD_DEFAULT=1 if [[ -z "${IRONFOX_LOG_BUILD+x}" ]]; then - IRONFOX_LOG_BUILD="${IRONFOX_LOG_BUILD_DEFAULT}" + export IRONFOX_LOG_BUILD="${IRONFOX_LOG_BUILD_DEFAULT}" fi -export IRONFOX_LOG_BUILD # Should we create a log file for prebuild.sh? (Default) IRONFOX_LOG_PREBUILD_DEFAULT=1 if [[ -z "${IRONFOX_LOG_PREBUILD+x}" ]]; then - IRONFOX_LOG_PREBUILD="${IRONFOX_LOG_PREBUILD_DEFAULT}" + export IRONFOX_LOG_PREBUILD="${IRONFOX_LOG_PREBUILD_DEFAULT}" fi -export IRONFOX_LOG_PREBUILD # Should we create a log file for get_sources.sh? (Default) IRONFOX_LOG_SOURCES_DEFAULT=1 if [[ -z "${IRONFOX_LOG_SOURCES+x}" ]]; then - IRONFOX_LOG_SOURCES="${IRONFOX_LOG_SOURCES_DEFAULT}" + export IRONFOX_LOG_SOURCES="${IRONFOX_LOG_SOURCES_DEFAULT}" fi -export IRONFOX_LOG_SOURCES # Should we create a log file for sign.sh? (Default) IRONFOX_LOG_SIGN_DEFAULT=1 if [[ -z "${IRONFOX_LOG_SIGN+x}" ]]; then - IRONFOX_LOG_SIGN="${IRONFOX_LOG_SIGN_DEFAULT}" + export IRONFOX_LOG_SIGN="${IRONFOX_LOG_SIGN_DEFAULT}" fi -export IRONFOX_LOG_SIGN # Directory where we should store log files (if logging is desired) IRONFOX_LOG_DIR_DEFAULT="${IRONFOX_BUILD}/logs" if [[ -z "${IRONFOX_LOG_DIR+x}" ]]; then - IRONFOX_LOG_DIR="${IRONFOX_LOG_DIR_DEFAULT}" + export IRONFOX_LOG_DIR="${IRONFOX_LOG_DIR_DEFAULT}" fi -export IRONFOX_LOG_DIR # CI-specific build variables # These variables are set for CI primarily to allow parallel builds (for specific stages) 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}" + export IRONFOX_CI_BUILD_GECKO_ARM64="${IRONFOX_CI_BUILD_GECKO_ARM64_DEFAULT}" fi -export IRONFOX_CI_BUILD_GECKO_ARM64 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}" + export IRONFOX_CI_BUILD_GECKO_ARM="${IRONFOX_CI_BUILD_GECKO_ARM_DEFAULT}" fi -export IRONFOX_CI_BUILD_GECKO_ARM 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}" + export IRONFOX_CI_BUILD_GECKO_X86_64="${IRONFOX_CI_BUILD_GECKO_X86_64_DEFAULT}" fi -export IRONFOX_CI_BUILD_GECKO_X86_64 IRONFOX_CI_BUILD_FINAL_DEFAULT=0 if [[ -z "${IRONFOX_CI_BUILD_FINAL+x}" ]]; then - IRONFOX_CI_BUILD_FINAL="${IRONFOX_CI_BUILD_FINAL_DEFAULT}" + export IRONFOX_CI_BUILD_FINAL="${IRONFOX_CI_BUILD_FINAL_DEFAULT}" fi -export IRONFOX_CI_BUILD_FINAL # Android NDK IRONFOX_ANDROID_NDK_DEFAULT="${IRONFOX_EXTERNAL}/android-ndk" if [[ -z "${IRONFOX_ANDROID_NDK+x}" ]]; then - IRONFOX_ANDROID_NDK="${IRONFOX_ANDROID_NDK_DEFAULT}" + export IRONFOX_ANDROID_NDK="${IRONFOX_ANDROID_NDK_DEFAULT}" fi -export IRONFOX_ANDROID_NDK # Android SDK IRONFOX_ANDROID_SDK_DEFAULT="${IRONFOX_EXTERNAL}/android-sdk" if [[ -z "${IRONFOX_ANDROID_SDK+x}" ]]; then - IRONFOX_ANDROID_SDK="${IRONFOX_ANDROID_SDK_DEFAULT}" + export IRONFOX_ANDROID_SDK="${IRONFOX_ANDROID_SDK_DEFAULT}" fi -export IRONFOX_ANDROID_SDK ## sdkmanager -IRONFOX_ANDROID_SDKMANAGER="${IRONFOX_ANDROID_SDK}/cmdline-tools/latest/bin/sdkmanager" -export IRONFOX_ANDROID_SDKMANAGER +export IRONFOX_ANDROID_SDKMANAGER="${IRONFOX_ANDROID_SDK}/cmdline-tools/latest/bin/sdkmanager" # Android SDK Build Tools (Latest) 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}" + export IRONFOX_ANDROID_SDK_BUILD_TOOLS="${IRONFOX_ANDROID_SDK_BUILD_TOOLS_DEFAULT}" fi -export IRONFOX_ANDROID_SDK_BUILD_TOOLS ## apksigner IRONFOX_APKSIGNER_DEFAULT="${IRONFOX_ANDROID_SDK_BUILD_TOOLS}/apksigner" if [[ -z "${IRONFOX_APKSIGNER+x}" ]]; then - IRONFOX_APKSIGNER="${IRONFOX_APKSIGNER_DEFAULT}" + export IRONFOX_APKSIGNER="${IRONFOX_APKSIGNER_DEFAULT}" fi -export IRONFOX_APKSIGNER # Android SDK Build Tools (35 - needed by Glean) 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}" + export IRONFOX_ANDROID_SDK_BUILD_TOOLS_35="${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35_DEFAULT}" fi -export IRONFOX_ANDROID_SDK_BUILD_TOOLS_35 # Android SDK Platform Tools 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}" + export IRONFOX_ANDROID_SDK_PLATFORM_TOOLS="${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS_DEFAULT}" fi -export IRONFOX_ANDROID_SDK_PLATFORM_TOOLS ## ADB IRONFOX_ADB_DEFAULT="${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS}/adb" if [[ -z "${IRONFOX_ADB+x}" ]]; then - IRONFOX_ADB="${IRONFOX_ADB_DEFAULT}" + export IRONFOX_ADB="${IRONFOX_ADB_DEFAULT}" fi -export IRONFOX_ADB # Application Services IRONFOX_AS_DEFAULT="${IRONFOX_EXTERNAL}/application-services" if [[ -z "${IRONFOX_AS+x}" ]]; then - IRONFOX_AS="${IRONFOX_AS_DEFAULT}" + export IRONFOX_AS="${IRONFOX_AS_DEFAULT}" fi -export IRONFOX_AS ## Application Services overlay -IRONFOX_AS_OVERLAY="${IRONFOX_PATCHES}/a-s-overlay" -export IRONFOX_AS_OVERLAY +export IRONFOX_AS_OVERLAY="${IRONFOX_PATCHES}/a-s-overlay" # Bundletool IRONFOX_BUNDLETOOL_DIR_DEFAULT="${IRONFOX_EXTERNAL}/bundletool" if [[ -z "${IRONFOX_BUNDLETOOl_DIR+x}" ]]; then - IRONFOX_BUNDLETOOL_DIR="${IRONFOX_BUNDLETOOL_DIR_DEFAULT}" + export IRONFOX_BUNDLETOOL_DIR="${IRONFOX_BUNDLETOOL_DIR_DEFAULT}" fi -IRONFOX_BUNDLETOOL="${IRONFOX_SCRIPTS}/bundletool.sh" -IRONFOX_BUNDLETOOL_JAR="${IRONFOX_BUNDLETOOL_DIR}/bundletool.jar" -export IRONFOX_BUNDLETOOL -export IRONFOX_BUNDLETOOL_DIR -export IRONFOX_BUNDLETOOL_JAR +export IRONFOX_BUNDLETOOL="${IRONFOX_SCRIPTS}/bundletool.sh" +export IRONFOX_BUNDLETOOL_JAR="${IRONFOX_BUNDLETOOL_DIR}/bundletool.jar" # cbindgen IRONFOX_CBINDGEN_DEFAULT="${IRONFOX_EXTERNAL}/cbindgen" if [[ -z "${IRONFOX_CBINDGEN+x}" ]]; then - IRONFOX_CBINDGEN="${IRONFOX_CBINDGEN_DEFAULT}" + export IRONFOX_CBINDGEN="${IRONFOX_CBINDGEN_DEFAULT}" fi -export IRONFOX_CBINDGEN # Firefox (mozilla-central) IRONFOX_GECKO_DEFAULT="${IRONFOX_EXTERNAL}/gecko" if [[ -z "${IRONFOX_GECKO+x}" ]]; then - IRONFOX_GECKO="${IRONFOX_GECKO_DEFAULT}" + export IRONFOX_GECKO="${IRONFOX_GECKO_DEFAULT}" fi -export IRONFOX_GECKO ## mach -IRONFOX_MACH="${IRONFOX_GECKO}/mach" -export IRONFOX_MACH +export IRONFOX_MACH="${IRONFOX_GECKO}/mach" ## Gecko overlay -IRONFOX_GECKO_OVERLAY="${IRONFOX_PATCHES}/gecko-overlay" -export IRONFOX_GECKO_OVERLAY +export IRONFOX_GECKO_OVERLAY="${IRONFOX_PATCHES}/gecko-overlay" ## Android Components -IRONFOX_AC="${IRONFOX_GECKO}/mobile/android/android-components" -export IRONFOX_AC +export IRONFOX_AC="${IRONFOX_GECKO}/mobile/android/android-components" ### Android Components overlay -IRONFOX_AC_OVERLAY="${IRONFOX_PATCHES}/a-c-overlay" -export IRONFOX_AC_OVERLAY +export IRONFOX_AC_OVERLAY="${IRONFOX_PATCHES}/a-c-overlay" ## Fenix -IRONFOX_FENIX="${IRONFOX_GECKO}/mobile/android/fenix" -export IRONFOX_FENIX +export IRONFOX_FENIX="${IRONFOX_GECKO}/mobile/android/fenix" ### Fenix overlay -IRONFOX_FENIX_OVERLAY="${IRONFOX_PATCHES}/fenix-overlay" -export IRONFOX_FENIX_OVERLAY +export IRONFOX_FENIX_OVERLAY="${IRONFOX_PATCHES}/fenix-overlay" ## Gecko locales IRONFOX_LOCALES_DEFAULT=$(<"${IRONFOX_CONFIGS}/locales") if [[ -z "${IRONFOX_LOCALES+x}" ]]; then - IRONFOX_LOCALES="${IRONFOX_LOCALES_DEFAULT}" + export IRONFOX_LOCALES="${IRONFOX_LOCALES_DEFAULT}" fi -export IRONFOX_LOCALES ## Gecko l10n IRONFOX_L10N_CENTRAL_DEFAULT="${IRONFOX_EXTERNAL}/l10n-central" if [[ -z "${IRONFOX_L10N_CENTRAL+x}" ]]; then - IRONFOX_L10N_CENTRAL="${IRONFOX_L10N_CENTRAL_DEFAULT}" + export IRONFOX_L10N_CENTRAL="${IRONFOX_L10N_CENTRAL_DEFAULT}" fi -export IRONFOX_L10N_CENTRAL ## .mozbuild IRONFOX_MOZBUILD_DEFAULT="${IRONFOX_BUILD}/.mozbuild" if [[ -z "${IRONFOX_MOZBUILD+x}" ]]; then - IRONFOX_MOZBUILD="${IRONFOX_MOZBUILD_DEFAULT}" + export IRONFOX_MOZBUILD="${IRONFOX_MOZBUILD_DEFAULT}" fi -export IRONFOX_MOZBUILD # Glean IRONFOX_GLEAN_DEFAULT="${IRONFOX_EXTERNAL}/glean" if [[ -z "${IRONFOX_GLEAN+x}" ]]; then - IRONFOX_GLEAN="${IRONFOX_GLEAN_DEFAULT}" + export IRONFOX_GLEAN="${IRONFOX_GLEAN_DEFAULT}" fi -export IRONFOX_GLEAN ## Glean overlay -IRONFOX_GLEAN_OVERLAY="${IRONFOX_PATCHES}/glean-overlay" -export IRONFOX_GLEAN_OVERLAY +export IRONFOX_GLEAN_OVERLAY="${IRONFOX_PATCHES}/glean-overlay" # Glean Parser wheels 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}" + export IRONFOX_GLEAN_PARSER_WHEELS="${IRONFOX_GLEAN_PARSER_WHEELS_DEFAULT}" fi -export IRONFOX_GLEAN_PARSER_WHEELS # GNU awk if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -374,9 +295,8 @@ else IRONFOX_AWK_DEFAULT='awk' fi if [[ -z "${IRONFOX_AWK+x}" ]]; then - IRONFOX_AWK="${IRONFOX_AWK_DEFAULT}" + export IRONFOX_AWK="${IRONFOX_AWK_DEFAULT}" fi -export IRONFOX_AWK # GNU date if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -385,9 +305,8 @@ else IRONFOX_DATE_DEFAULT='date' fi if [[ -z "${IRONFOX_DATE+x}" ]]; then - IRONFOX_DATE="${IRONFOX_DATE_DEFAULT}" + export IRONFOX_DATE="${IRONFOX_DATE_DEFAULT}" fi -export IRONFOX_DATE # GNU make if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -396,9 +315,8 @@ else IRONFOX_MAKE_DEFAULT='make' fi if [[ -z "${IRONFOX_MAKE+x}" ]]; then - IRONFOX_MAKE="${IRONFOX_MAKE_DEFAULT}" + export IRONFOX_MAKE="${IRONFOX_MAKE_DEFAULT}" fi -export IRONFOX_MAKE # GNU sed if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -407,9 +325,8 @@ else IRONFOX_SED_DEFAULT='sed' fi if [[ -z "${IRONFOX_SED+x}" ]]; then - IRONFOX_SED="${IRONFOX_SED_DEFAULT}" + export IRONFOX_SED="${IRONFOX_SED_DEFAULT}" fi -export IRONFOX_SED # GNU tar if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -418,90 +335,53 @@ else IRONFOX_TAR_DEFAULT='tar' fi if [[ -z "${IRONFOX_TAR+x}" ]]; then - IRONFOX_TAR="${IRONFOX_TAR_DEFAULT}" + export IRONFOX_TAR="${IRONFOX_TAR_DEFAULT}" fi -export IRONFOX_TAR # Gradle IRONFOX_GRADLE_DIR_DEFAULT="${IRONFOX_EXTERNAL}/gradle" if [[ -z "${IRONFOX_GRADLE_DIR+x}" ]]; then - IRONFOX_GRADLE_DIR="${IRONFOX_GRADLE_DIR_DEFAULT}" + export IRONFOX_GRADLE_DIR="${IRONFOX_GRADLE_DIR_DEFAULT}" fi -IRONFOX_GRADLE="${IRONFOX_SCRIPTS}/gradle.sh" -IRONFOX_GRADLE_PY="${IRONFOX_GRADLE_DIR}/gradlew.py" -export IRONFOX_GRADLE -export IRONFOX_GRADLE_DIR -export IRONFOX_GRADLE_PY +export IRONFOX_GRADLE="${IRONFOX_SCRIPTS}/gradle.sh" +export IRONFOX_GRADLE_PY="${IRONFOX_GRADLE_DIR}/gradlew.py" ## Gradle cache IRONFOX_GRADLE_CACHE_DEFAULT="${IRONFOX_BUILD}/gradle/cache" if [[ -z "${IRONFOX_GRADLE_CACHE+x}" ]]; then - IRONFOX_GRADLE_CACHE="${IRONFOX_GRADLE_CACHE_DEFAULT}" + export IRONFOX_GRADLE_CACHE="${IRONFOX_GRADLE_CACHE_DEFAULT}" fi -export IRONFOX_GRADLE_CACHE ## Gradle home IRONFOX_GRADLE_HOME_DEFAULT="${IRONFOX_BUILD}/.gradle" if [[ -z "${IRONFOX_GRADLE_HOME+x}" ]]; then - IRONFOX_GRADLE_HOME="${IRONFOX_GRADLE_HOME_DEFAULT}" + export IRONFOX_GRADLE_HOME="${IRONFOX_GRADLE_HOME_DEFAULT}" fi -export IRONFOX_GRADLE_HOME # Gradle local Maven repository IRONFOX_MAVEN_LOCAL_DEFAULT="${IRONFOX_BUILD}/.m2/repository" if [[ -z "${IRONFOX_MAVEN_LOCAL+x}" ]]; then - IRONFOX_MAVEN_LOCAL="${IRONFOX_MAVEN_LOCAL_DEFAULT}" + export IRONFOX_MAVEN_LOCAL="${IRONFOX_MAVEN_LOCAL_DEFAULT}" fi -export IRONFOX_MAVEN_LOCAL # GYP IRONFOX_GYP_DEFAULT="${IRONFOX_EXTERNAL}/gyp-next" if [[ -z "${IRONFOX_GYP+x}" ]]; then - IRONFOX_GYP="${IRONFOX_GYP_DEFAULT}" + export IRONFOX_GYP="${IRONFOX_GYP_DEFAULT}" fi -export IRONFOX_GYP # JDK (17) ## (Required by GeckoView) IRONFOX_JDK_17_DEFAULT="${IRONFOX_EXTERNAL}/jdk-17" if [[ -z "${IRONFOX_JDK_17+x}" ]]; then - IRONFOX_JDK_17="${IRONFOX_JDK_17_DEFAULT}" + export IRONFOX_JDK_17="${IRONFOX_JDK_17_DEFAULT}" fi -export IRONFOX_JDK_17 if [[ "${IRONFOX_OS}" == 'osx' ]]; then - IRONFOX_JDK_17_HOME="${IRONFOX_JDK_17}/Contents/Home" + export IRONFOX_JAVA_HOME="${IRONFOX_JDK_17}/Contents/Home" else - IRONFOX_JDK_17_HOME="${IRONFOX_JDK_17}" + export IRONFOX_JAVA_HOME="${IRONFOX_JDK_17}" fi -export IRONFOX_JDK_17_HOME - -# JDK (21) -IRONFOX_JDK_21_DEFAULT="${IRONFOX_EXTERNAL}/jdk-21" -if [[ -z "${IRONFOX_JDK_21+x}" ]]; then - IRONFOX_JDK_21="${IRONFOX_JDK_21_DEFAULT}" -fi -export IRONFOX_JDK_21 -if [[ "${IRONFOX_OS}" == 'osx' ]]; then - IRONFOX_JDK_21_HOME="${IRONFOX_JDK_21}/Contents/Home" -else - IRONFOX_JDK_21_HOME="${IRONFOX_JDK_21}" -fi -export IRONFOX_JDK_21_HOME - -# JDK (25) -IRONFOX_JDK_25_DEFAULT="${IRONFOX_EXTERNAL}/jdk-25" -if [[ -z "${IRONFOX_JDK_25+x}" ]]; then - IRONFOX_JDK_25="${IRONFOX_JDK_25_DEFAULT}" -fi -export IRONFOX_JDK_25 -if [[ "${IRONFOX_OS}" == 'osx' ]]; then - IRONFOX_JAVA_HOME="${IRONFOX_JDK_25}/Contents/Home" -else - IRONFOX_JAVA_HOME="${IRONFOX_JDK_25}" -fi -export IRONFOX_JAVA_HOME -IRONFOX_JAVA="${IRONFOX_JAVA_HOME}/bin/java" -export IRONFOX_JAVA +export IRONFOX_JAVA="${IRONFOX_JAVA_HOME}/bin/java" # libclang if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -510,23 +390,20 @@ else 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}" + export IRONFOX_LIBCLANG="${IRONFOX_LIBCLANG_DEFAULT}" fi -export IRONFOX_LIBCLANG # llvm-profdata 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}" + export IRONFOX_LLVM_PROFDATA="${IRONFOX_LLVM_PROFDATA_DEFAULT}" fi -export IRONFOX_LLVM_PROFDATA # microG IRONFOX_GMSCORE_DEFAULT="${IRONFOX_EXTERNAL}/gmscore" if [[ -z "${IRONFOX_GMSCORE+x}" ]]; then - IRONFOX_GMSCORE="${IRONFOX_GMSCORE_DEFAULT}" + export IRONFOX_GMSCORE="${IRONFOX_GMSCORE_DEFAULT}" fi -export IRONFOX_GMSCORE # nproc if [[ "${IRONFOX_OS}" == 'osx' ]]; then @@ -535,456 +412,370 @@ else IRONFOX_NPROC_DEFAULT='nproc' fi if [[ -z "${IRONFOX_NPROC+x}" ]]; then - IRONFOX_NPROC="${IRONFOX_NPROC_DEFAULT}" + export IRONFOX_NPROC="${IRONFOX_NPROC_DEFAULT}" fi -export IRONFOX_NPROC # NSS 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}" + export IRONFOX_NSS_DIR="${IRONFOX_NSS_DIR_DEFAULT}" fi -export IRONFOX_NSS_DIR # IronFox prebuilds IRONFOX_PREBUILDS_DEFAULT="${IRONFOX_EXTERNAL}/prebuilds" if [[ -z "${IRONFOX_PREBUILDS+x}" ]]; then - IRONFOX_PREBUILDS="${IRONFOX_PREBUILDS_DEFAULT}" + export IRONFOX_PREBUILDS="${IRONFOX_PREBUILDS_DEFAULT}" fi -export IRONFOX_PREBUILDS # npm cache IRONFOX_NPM_CACHE_DEFAULT="${IRONFOX_BUILD}/.npm" if [[ -z "${IRONFOX_NPM_CACHE+x}" ]]; then - IRONFOX_NPM_CACHE="${IRONFOX_NPM_CACHE_DEFAULT}" + export IRONFOX_NPM_CACHE="${IRONFOX_NPM_CACHE_DEFAULT}" fi -export IRONFOX_NPM_CACHE # nvm IRONFOX_NVM_DEFAULT="${IRONFOX_EXTERNAL}/nvm" if [[ -z "${IRONFOX_NVM+x}" ]]; then - IRONFOX_NVM="${IRONFOX_NVM_DEFAULT}" + export IRONFOX_NVM="${IRONFOX_NVM_DEFAULT}" fi -IRONFOX_NVM_ENV="${IRONFOX_NVM}/nvm.sh" -export IRONFOX_NVM -export IRONFOX_NVM_ENV +export IRONFOX_NVM_ENV="${IRONFOX_NVM}/nvm.sh" # Phoenix IRONFOX_PHOENIX_DEFAULT="${IRONFOX_EXTERNAL}/phoenix" if [[ -z "${IRONFOX_PHOENIX+x}" ]]; then - IRONFOX_PHOENIX="${IRONFOX_PHOENIX_DEFAULT}" + export IRONFOX_PHOENIX="${IRONFOX_PHOENIX_DEFAULT}" fi -export IRONFOX_PHOENIX # pip IRONFOX_PIP_DIR_DEFAULT="${IRONFOX_EXTERNAL}/pip" if [[ -z "${IRONFOX_PIP_DIR+x}" ]]; then - IRONFOX_PIP_DIR="${IRONFOX_PIP_DIR_DEFAULT}" + export IRONFOX_PIP_DIR="${IRONFOX_PIP_DIR_DEFAULT}" fi -export IRONFOX_PIP_DIR # Python IRONFOX_PYTHON_DIR_DEFAULT="${IRONFOX_EXTERNAL}/python" if [[ -z "${IRONFOX_PYTHON_DIR+x}" ]]; then - IRONFOX_PYTHON_DIR="${IRONFOX_PYTHON_DIR_DEFAULT}" + export IRONFOX_PYTHON_DIR="${IRONFOX_PYTHON_DIR_DEFAULT}" fi -export IRONFOX_PYTHON_DIR # Python (UV) environment IRONFOX_PYENV_DIR_DEFAULT="${IRONFOX_BUILD}/pyenv" if [[ -z "${IRONFOX_PYENV_DIR+x}" ]]; then - IRONFOX_PYENV_DIR="${IRONFOX_PYENV_DIR_DEFAULT}" + export IRONFOX_PYENV_DIR="${IRONFOX_PYENV_DIR_DEFAULT}" fi -IRONFOX_PIP="${IRONFOX_PYENV_DIR}/bin/pip" -IRONFOX_PYENV="${IRONFOX_PYENV_DIR}/bin/activate" -IRONFOX_PYTHON="${IRONFOX_PYENV_DIR}/bin/python" -export IRONFOX_PIP -export IRONFOX_PYENV -export IRONFOX_PYENV_DIR -export IRONFOX_PYTHON +export IRONFOX_PIP="${IRONFOX_PYENV_DIR}/bin/pip" +export IRONFOX_PYENV="${IRONFOX_PYENV_DIR}/bin/activate" +export IRONFOX_PYTHON="${IRONFOX_PYENV_DIR}/bin/python" ## Python (UV) environment - Glean -IRONFOX_GLEAN_PYENV="${IRONFOX_GRADLE_HOME}/glean" -export IRONFOX_GLEAN_PYENV +export IRONFOX_GLEAN_PYENV="${IRONFOX_GRADLE_HOME}/glean" # Rust (cargo) IRONFOX_CARGO_HOME_DEFAULT="${IRONFOX_BUILD}/.cargo" if [[ -z "${IRONFOX_CARGO_HOME+x}" ]]; then - IRONFOX_CARGO_HOME="${IRONFOX_CARGO_HOME_DEFAULT}" + export IRONFOX_CARGO_HOME="${IRONFOX_CARGO_HOME_DEFAULT}" fi -IRONFOX_CARGO="${IRONFOX_CARGO_HOME}/bin/cargo" -IRONFOX_CARGO_ENV="${IRONFOX_CARGO_HOME}/env" -IRONFOX_RUSTC="${IRONFOX_CARGO_HOME}/bin/rustc" -IRONFOX_RUSTDOC="${IRONFOX_CARGO_HOME}/bin/rustdoc" -export IRONFOX_CARGO -export IRONFOX_CARGO_ENV -export IRONFOX_CARGO_HOME -export IRONFOX_RUSTC -export IRONFOX_RUSTDOC +export IRONFOX_CARGO="${IRONFOX_CARGO_HOME}/bin/cargo" +export IRONFOX_CARGO_ENV="${IRONFOX_CARGO_HOME}/env" +export IRONFOX_RUSTC="${IRONFOX_CARGO_HOME}/bin/rustc" +export IRONFOX_RUSTDOC="${IRONFOX_CARGO_HOME}/bin/rustdoc" ## Display progress bars IRONFOX_CARGO_PROGRESS_BAR_DEFAULT='always' if [[ -z "${IRONFOX_CARGO_PROGRESS_BAR+x}" ]]; then - IRONFOX_CARGO_PROGRESS_BAR="${IRONFOX_CARGO_PROGRESS_BAR_DEFAULT}" + export IRONFOX_CARGO_PROGRESS_BAR="${IRONFOX_CARGO_PROGRESS_BAR_DEFAULT}" fi -export IRONFOX_CARGO_PROGRESS_BAR ## Enable colored output IRONFOX_CARGO_COLORED_OUTPUT_DEFAULT='always' if [[ -z "${IRONFOX_CARGO_COLORED_OUTPUT+x}" ]]; then - IRONFOX_CARGO_COLORED_OUTPUT="${IRONFOX_CARGO_COLORED_OUTPUT_DEFAULT}" + export IRONFOX_CARGO_COLORED_OUTPUT="${IRONFOX_CARGO_COLORED_OUTPUT_DEFAULT}" fi -export IRONFOX_CARGO_COLORED_OUTPUT # rustup IRONFOX_RUSTUP_HOME_DEFAULT="${IRONFOX_BUILD}/.rustup" if [[ -z "${IRONFOX_RUSTUP_HOME+x}" ]]; then - IRONFOX_RUSTUP_HOME="${IRONFOX_RUSTUP_HOME_DEFAULT}" + export IRONFOX_RUSTUP_HOME="${IRONFOX_RUSTUP_HOME_DEFAULT}" fi -export IRONFOX_RUSTUP_HOME ## Display progress bars IRONFOX_RUSTUP_PROGRESS_BAR_DEFAULT='always' if [[ -z "${IRONFOX_RUSTUP_PROGRESS_BAR+x}" ]]; then - IRONFOX_RUSTUP_PROGRESS_BAR="${IRONFOX_RUSTUP_PROGRESS_BAR_DEFAULT}" + export IRONFOX_RUSTUP_PROGRESS_BAR="${IRONFOX_RUSTUP_PROGRESS_BAR_DEFAULT}" fi -export IRONFOX_RUSTUP_PROGRESS_BAR ## Enable colored output IRONFOX_RUSTUP_COLORED_OUTPUT_DEFAULT='always' if [[ -z "${IRONFOX_RUSTUP_COLORED_OUTPUT+x}" ]]; then - IRONFOX_RUSTUP_COLORED_OUTPUT="${IRONFOX_RUSTUP_COLORED_OUTPUT_DEFAULT}" + export IRONFOX_RUSTUP_COLORED_OUTPUT="${IRONFOX_RUSTUP_COLORED_OUTPUT_DEFAULT}" fi -export IRONFOX_RUSTUP_COLORED_OUTPUT # uniffi-bindgen IRONFOX_UNIFFI_DEFAULT="${IRONFOX_EXTERNAL}/uniffi" if [[ -z "${IRONFOX_UNIFFI+x}" ]]; then - IRONFOX_UNIFFI="${IRONFOX_UNIFFI_DEFAULT}" + export IRONFOX_UNIFFI="${IRONFOX_UNIFFI_DEFAULT}" fi -export IRONFOX_UNIFFI # unifiedpush-ac IRONFOX_UP_AC_DEFAULT="${IRONFOX_EXTERNAL}/unifiedpush-ac" if [[ -z "${IRONFOX_UP_AC+x}" ]]; then - IRONFOX_UP_AC="${IRONFOX_UP_AC_DEFAULT}" + export IRONFOX_UP_AC="${IRONFOX_UP_AC_DEFAULT}" fi -export IRONFOX_UP_AC # UV IRONFOX_UV_DIR_DEFAULT="${IRONFOX_EXTERNAL}/uv" if [[ -z "${IRONFOX_UV_DIR+x}" ]]; then - IRONFOX_UV_DIR="${IRONFOX_UV_DIR_DEFAULT}" + export IRONFOX_UV_DIR="${IRONFOX_UV_DIR_DEFAULT}" fi -IRONFOX_UV="${IRONFOX_UV_DIR}/uv" -export IRONFOX_UV -export IRONFOX_UV_DIR +export IRONFOX_UV="${IRONFOX_UV_DIR}/uv" +export IRONFOX_UV_LOCAL="${IRONFOX_BUILD}/uv" # UV (local directory) IRONFOX_UV_LOCAL_DEFAULT="${IRONFOX_BUILD}/uv" if [[ -z "${IRONFOX_UV_LOCAL+x}" ]]; then - IRONFOX_UV_LOCAL="${IRONFOX_UV_LOCAL_DEFAULT}" + export IRONFOX_UV_LOCAL="${IRONFOX_UV_LOCAL_DEFAULT}" fi -export IRONFOX_UV_LOCAL # UV cache IRONFOX_UV_CACHE_DEFAULT="${IRONFOX_UV_LOCAL}/cache" if [[ -z "${IRONFOX_UV_CACHE+x}" ]]; then - IRONFOX_UV_CACHE="${IRONFOX_UV_CACHE_DEFAULT}" + export IRONFOX_UV_CACHE="${IRONFOX_UV_CACHE_DEFAULT}" fi -export IRONFOX_UV_CACHE # UV Python directory IRONFOX_UV_PYTHON_DEFAULT="${IRONFOX_UV_LOCAL}/python" if [[ -z "${IRONFOX_UV_PYTHON+x}" ]]; then - IRONFOX_UV_PYTHON="${IRONFOX_UV_PYTHON_DEFAULT}" + export IRONFOX_UV_PYTHON="${IRONFOX_UV_PYTHON_DEFAULT}" fi -export IRONFOX_UV_PYTHON # UV tools IRONFOX_UV_TOOLS_DEFAULT="${IRONFOX_UV_LOCAL}/tools" if [[ -z "${IRONFOX_UV_TOOLS+x}" ]]; then - IRONFOX_UV_TOOLS="${IRONFOX_UV_TOOLS_DEFAULT}" + export IRONFOX_UV_TOOLS="${IRONFOX_UV_TOOLS_DEFAULT}" fi -export IRONFOX_UV_TOOLS # WASI SDK IRONFOX_WASI_DEFAULT="${IRONFOX_EXTERNAL}/wasi-sdk" if [[ -z "${IRONFOX_WASI+x}" ]]; then - IRONFOX_WASI="${IRONFOX_WASI_DEFAULT}" + export IRONFOX_WASI="${IRONFOX_WASI_DEFAULT}" fi -export IRONFOX_WASI - -# Cipher suites -## (This enforces strong cipher suites - see ex. https://browserleaks.com/tls) -IRONFOX_CIPHERS_DEFAULT='TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384: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_CIPHERS+x}" ]]; then - IRONFOX_CIPHERS="${IRONFOX_CIPHERS_DEFAULT}" -fi -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 IRONFOX_COMPILER_FLAGS_OVERRIDE_DEFAULT=0 if [[ -z "${IRONFOX_COMPILER_FLAGS_OVERRIDE+x}" ]]; then - IRONFOX_COMPILER_FLAGS_OVERRIDE="${IRONFOX_COMPILER_FLAGS_OVERRIDE_DEFAULT}" + export IRONFOX_COMPILER_FLAGS_OVERRIDE="${IRONFOX_COMPILER_FLAGS_OVERRIDE_DEFAULT}" fi -export IRONFOX_COMPILER_FLAGS_OVERRIDE # Compiler flags -IRONFOX_COMPILER_FLAGS_DEFAULT='-DNDEBUG -O3 -flto=full -fstack-clash-protection -fstack-protector-strong -ftrivial-auto-var-init=zero -fwrapv' +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 - IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT}" + export IRONFOX_COMPILER_FLAGS_OVERRIDE=1 + export IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT}" elif [[ "${IRONFOX_COMPILER_FLAGS_OVERRIDE}" == 1 ]]; then - IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS}" + export IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS}" else - IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT} ${IRONFOX_COMPILER_FLAGS}" + export IRONFOX_COMPILER_FLAGS="${IRONFOX_COMPILER_FLAGS_DEFAULT} ${IRONFOX_COMPILER_FLAGS}" fi -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 IRONFOX_CURL_FLAGS_OVERRIDE_DEFAULT=0 if [[ -z "${IRONFOX_CURL_FLAGS_OVERRIDE+x}" ]]; then - IRONFOX_CURL_FLAGS_OVERRIDE="${IRONFOX_CURL_FLAGS_OVERRIDE_DEFAULT}" + export IRONFOX_CURL_FLAGS_OVERRIDE="${IRONFOX_CURL_FLAGS_OVERRIDE_DEFAULT}" fi -export IRONFOX_CURL_FLAGS_OVERRIDE # curl flags -IRONFOX_CURL_FLAGS_DEFAULT="-q --disable --no-netrc -j -e "" -A "" -S --ciphers ${IRONFOX_CIPHERS} --clobber --create-dirs --delegation none --disallow-username-in-url --doh-cert-status --ftp-create-dirs --ftp-ssl-control --junk-session-cookies --no-basic --no-ca-native --no-digest --no-doh-insecure --no-http0.9 --no-insecure --no-proxy-insecure --no-negotiate --no-ntlm --no-proxy-basic --no-proxy-ca-native --no-proxy-digest --no-proxy-insecure --no-proxy-ntlm --no-proxy-ssl-allow-beast --no-proxy-ssl-auto-client-cert --no-sessionid --no-skip-existing --no-ssl --no-ssl-allow-beast --no-ssl-auto-client-cert --no-ssl-no-revoke --no-ssl-revoke-best-effort --no-tls-earlydata --no-xattr --progress-meter --proto -all,https --proto-default https --proto-redir -all,https --referer "" --remove-on-error --show-error --ssl-reqd --tlsv1.2 --trace-time --user-agent "" --verbose" +IRONFOX_CURL_FLAGS_DEFAULT='-q --disable --no-netrc -j -e "" -A "" -S --clobber --create-dirs --delegation none --disallow-username-in-url --doh-cert-status --ftp-create-dirs --ftp-ssl-control --junk-session-cookies --no-basic --no-ca-native --no-digest --no-doh-insecure --no-http0.9 --no-insecure --no-proxy-insecure --no-negotiate --no-ntlm --no-proxy-basic --no-proxy-ca-native --no-proxy-digest --no-proxy-insecure --no-proxy-ntlm --no-proxy-ssl-allow-beast --no-proxy-ssl-auto-client-cert --no-sessionid --no-skip-existing --no-ssl --no-ssl-allow-beast --no-ssl-auto-client-cert --no-ssl-no-revoke --no-ssl-revoke-best-effort --no-tls-earlydata --no-xattr --progress-meter --proto -all,https --proto-default https --proto-redir -all,https --referer "" --remove-on-error --show-error --ssl-reqd --trace-time --user-agent "" --verbose' if [[ -z "${IRONFOX_CURL_FLAGS+x}" ]]; then - IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT}" + export IRONFOX_CURL_FLAGS_OVERRIDE=1 + export IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT}" elif [[ "${IRONFOX_CURL_FLAGS_OVERRIDE}" == 1 ]]; then - IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS}" + export IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS}" else - IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT} ${IRONFOX_CURL_FLAGS}" + export IRONFOX_CURL_FLAGS="${IRONFOX_CURL_FLAGS_DEFAULT} ${IRONFOX_CURL_FLAGS}" fi -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 IRONFOX_GRADLE_FLAGS_OVERRIDE_DEFAULT=0 if [[ -z "${IRONFOX_GRADLE_FLAGS_OVERRIDE+x}" ]]; then - IRONFOX_GRADLE_FLAGS_OVERRIDE="${IRONFOX_GRADLE_FLAGS_OVERRIDE_DEFAULT}" + export IRONFOX_GRADLE_FLAGS_OVERRIDE="${IRONFOX_GRADLE_FLAGS_OVERRIDE_DEFAULT}" fi -export IRONFOX_GRADLE_FLAGS_OVERRIDE # Gradle flags -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" +IRONFOX_GRADLE_FLAGS_DEFAULT="-Dmaven.repo.local=${IRONFOX_MAVEN_LOCAL} -Dorg.gradle.caching=false -Dorg.gradle.configuration-cache=false -Dorg.gradle.console=verbose -Dorg.gradle.daemon=false -Dorg.gradle.debug=false -Dorg.gradle.java.home=${IRONFOX_JAVA_HOME} -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}" + export IRONFOX_GRADLE_FLAGS_OVERRIDE=1 + export IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT}" elif [[ "${IRONFOX_GRADLE_FLAGS_OVERRIDE}" == 1 ]]; then - IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS}" + export IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS}" else - IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT} ${IRONFOX_GRADLE_FLAGS}" + export IRONFOX_GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS_DEFAULT} ${IRONFOX_GRADLE_FLAGS}" fi -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 -IRONFOX_JAVA_OPTS_OVERRIDE_DEFAULT=0 -if [[ -z "${IRONFOX_JAVA_OPTS_OVERRIDE+x}" ]]; then - IRONFOX_JAVA_OPTS_OVERRIDE="${IRONFOX_JAVA_OPTS_OVERRIDE_DEFAULT}" -fi -export IRONFOX_JAVA_OPTS_OVERRIDE - -# Java options -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 -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 IRONFOX_NODE_OPTIONS_OVERRIDE_DEFAULT=0 if [[ -z "${IRONFOX_NODE_OPTIONS_OVERRIDE+x}" ]]; then - IRONFOX_NODE_OPTIONS_OVERRIDE="${IRONFOX_NODE_OPTIONS_OVERRIDE_DEFAULT}" + export IRONFOX_NODE_OPTIONS_OVERRIDE="${IRONFOX_NODE_OPTIONS_OVERRIDE_DEFAULT}" fi -export IRONFOX_NODE_OPTIONS_OVERRIDE # Node.js options ### https://nodejs.org/api/cli.html#node-optionsoptions 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}" + export IRONFOX_NODE_OPTIONS_OVERRIDE=1 + export IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS_DEFAULT}" elif [[ "${IRONFOX_NODE_OPTIONS_OVERRIDE}" == 1 ]]; then - IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS}" + export IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS}" else - IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS_DEFAULT} ${IRONFOX_NODE_OPTIONS}" + export IRONFOX_NODE_OPTIONS="${IRONFOX_NODE_OPTIONS_DEFAULT} ${IRONFOX_NODE_OPTIONS}" fi -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 IRONFOX_RUST_FLAGS_OVERRIDE_DEFAULT=0 if [[ -z "${IRONFOX_RUST_FLAGS_OVERRIDE+x}" ]]; then - IRONFOX_RUST_FLAGS_OVERRIDE="${IRONFOX_RUST_FLAGS_OVERRIDE_DEFAULT}" + export IRONFOX_RUST_FLAGS_OVERRIDE="${IRONFOX_RUST_FLAGS_OVERRIDE_DEFAULT}" fi -export IRONFOX_RUST_FLAGS_OVERRIDE # Rust flags 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}" + export IRONFOX_RUST_FLAGS_OVERRIDE=1 + export IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT}" elif [[ "${IRONFOX_RUST_FLAGS_OVERRIDE}" == 1 ]]; then - IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS}" + export IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS}" else - IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT} ${IRONFOX_RUST_FLAGS}" + export IRONFOX_RUST_FLAGS="${IRONFOX_RUST_FLAGS_DEFAULT} ${IRONFOX_RUST_FLAGS}" fi -export IRONFOX_RUST_FLAGS # Whether we should use our prebuilt libraries (Default) ## (This is currently uniffi-bindgen and WASI SDK for us) IRONFOX_NO_PREBUILDS_DEFAULT=0 if [[ -z "${IRONFOX_NO_PREBUILDS+x}" ]]; then - IRONFOX_NO_PREBUILDS="${IRONFOX_NO_PREBUILDS_DEFAULT}" + export IRONFOX_NO_PREBUILDS="${IRONFOX_NO_PREBUILDS_DEFAULT}" fi -export IRONFOX_NO_PREBUILDS # Location to the Google Safe Browsing API keyfile (if Safe Browsing is desired) 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}" + export IRONFOX_SB_GAPI_KEY_FILE="${IRONFOX_SB_GAPI_KEY_FILE_DEFAULT}" fi -export IRONFOX_SB_GAPI_KEY_FILE # Do we want Mach to actually build *something*? (Default) ## This will generally always be true, but we want to disable it for ex. packaging IRONFOX_MACH_BUILD_DEFAULT=1 if [[ -z "${IRONFOX_MACH_BUILD+x}" ]]; then - IRONFOX_MACH_BUILD="${IRONFOX_MACH_BUILD_DEFAULT}" + export IRONFOX_MACH_BUILD="${IRONFOX_MACH_BUILD_DEFAULT}" fi -export IRONFOX_MACH_BUILD # Should Mach target Android Components? IRONFOX_MACH_TARGET_AC_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_AC+x}" ]]; then - IRONFOX_MACH_TARGET_AC="${IRONFOX_MACH_TARGET_AC_DEFAULT}" + export IRONFOX_MACH_TARGET_AC="${IRONFOX_MACH_TARGET_AC_DEFAULT}" fi -export IRONFOX_MACH_TARGET_AC # Should Mach target Fenix? IRONFOX_MACH_TARGET_FENIX_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_FENIX+x}" ]]; then - IRONFOX_MACH_TARGET_FENIX="${IRONFOX_MACH_TARGET_FENIX_DEFAULT}" + export IRONFOX_MACH_TARGET_FENIX="${IRONFOX_MACH_TARGET_FENIX_DEFAULT}" fi -export IRONFOX_MACH_TARGET_FENIX # Should Mach target Gecko(View)? IRONFOX_MACH_TARGET_GECKO_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_GECKO+x}" ]]; then - IRONFOX_MACH_TARGET_GECKO="${IRONFOX_MACH_TARGET_GECKO_DEFAULT}" + export IRONFOX_MACH_TARGET_GECKO="${IRONFOX_MACH_TARGET_GECKO_DEFAULT}" fi -export IRONFOX_MACH_TARGET_GECKO # Should Mach target ARM64 (GeckoView AAR) if we're creating a bundle? IRONFOX_MACH_TARGET_BUNDLE_ARM64_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_BUNDLE_ARM64+x}" ]]; then - IRONFOX_MACH_TARGET_BUNDLE_ARM64="${IRONFOX_MACH_TARGET_BUNDLE_ARM64_DEFAULT}" + export IRONFOX_MACH_TARGET_BUNDLE_ARM64="${IRONFOX_MACH_TARGET_BUNDLE_ARM64_DEFAULT}" fi -export IRONFOX_MACH_TARGET_BUNDLE_ARM64 # Should Mach target ARM (GeckoView AAR) if we're creating a bundle? IRONFOX_MACH_TARGET_BUNDLE_ARM_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_BUNDLE_ARM+x}" ]]; then - IRONFOX_MACH_TARGET_BUNDLE_ARM="$IRONFOX_MACH_TARGET_BUNDLE_ARM_DEFAULT}" + export IRONFOX_MACH_TARGET_BUNDLE_ARM="$IRONFOX_MACH_TARGET_BUNDLE_ARM_DEFAULT}" fi -export IRONFOX_MACH_TARGET_BUNDLE_ARM # Should Mach target x86_64 (GeckoView AAR) if we're creating a bundle? IRONFOX_MACH_TARGET_BUNDLE_X86_64_DEFAULT=0 if [[ -z "${IRONFOX_MACH_TARGET_BUNDLE_X86_64+x}" ]]; then - IRONFOX_MACH_TARGET_BUNDLE_X86_64="${IRONFOX_MACH_TARGET_BUNDLE_X86_64_DEFAULT}" + export IRONFOX_MACH_TARGET_BUNDLE_X86_64="${IRONFOX_MACH_TARGET_BUNDLE_X86_64_DEFAULT}" fi -export IRONFOX_MACH_TARGET_BUNDLE_X86_64 # App signing # Location to the Android keystore file that we should use IRONFOX_KEYSTORE_DEFAULT='null' if [[ -z "${IRONFOX_KEYSTORE+x}" ]]; then - IRONFOX_KEYSTORE="${IRONFOX_KEYSTORE_DEFAULT}" + export IRONFOX_KEYSTORE="${IRONFOX_KEYSTORE_DEFAULT}" fi -export IRONFOX_KEYSTORE # Location to the Android keystore pass file that we should use IRONFOX_KEYSTORE_PASS_FILE_DEFAULT='null' if [[ -z "${IRONFOX_KEYSTORE_PASS_FILE+x}" ]]; then - IRONFOX_KEYSTORE_PASS_FILE="${IRONFOX_KEYSTORE_PASS_FILE_DEFAULT}" + export IRONFOX_KEYSTORE_PASS_FILE="${IRONFOX_KEYSTORE_PASS_FILE_DEFAULT}" fi -export IRONFOX_KEYSTORE_PASS_FILE # Alias of the Android keystore that we should use IRONFOX_KEYSTORE_KEY_ALIAS_DEFAULT='null' if [[ -z "${IRONFOX_KEYSTORE_KEY_ALIAS+x}" ]]; then - IRONFOX_KEYSTORE_KEY_ALIAS="${IRONFOX_KEYSTORE_KEY_ALIAS_DEFAULT}" + export IRONFOX_KEYSTORE_KEY_ALIAS="${IRONFOX_KEYSTORE_KEY_ALIAS_DEFAULT}" fi -export IRONFOX_KEYSTORE_KEY_ALIAS # Location to the Android keystore key pass file that we should use IRONFOX_KEYSTORE_KEY_PASS_FILE_DEFAULT='null' if [[ -z "${IRONFOX_KEYSTORE_KEY_PASS_FILE+x}" ]]; then - IRONFOX_KEYSTORE_KEY_PASS_FILE="${IRONFOX_KEYSTORE_KEY_PASS_FILE_DEFAULT}" + export IRONFOX_KEYSTORE_KEY_PASS_FILE="${IRONFOX_KEYSTORE_KEY_PASS_FILE_DEFAULT}" fi -export IRONFOX_KEYSTORE_KEY_PASS_FILE # Should we automatically sign our output APK(S) files? IRONFOX_SIGN_DEFAULT=0 if [ "${IRONFOX_KEYSTORE}" != 'null' ] && [ "${IRONFOX_KEYSTORE_PASS_FILE}" != 'null' ] && [ "${IRONFOX_KEYSTORE_KEY_ALIAS}" != 'null' ] && [ "${IRONFOX_KEYSTORE_KEY_PASS_FILE}" != 'null' ]; then - IRONFOX_SIGN=1 + export IRONFOX_SIGN=1 else - IRONFOX_SIGN="${IRONFOX_SIGN_DEFAULT}" + export IRONFOX_SIGN="${IRONFOX_SIGN_DEFAULT}" fi -export IRONFOX_SIGN # Locations for our GeckoView AAR archives ## Where our GeckoView ARM64 AAR archive is located within mozilla-central IRONFOX_GV_AAR_ARM64_DEFAULT="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-arm64/gradle/target.maven.zip" if [[ -z "${IRONFOX_GV_AAR_ARM64+x}" ]]; then - IRONFOX_GV_AAR_ARM64="${IRONFOX_GV_AAR_ARM64_DEFAULT}" + export IRONFOX_GV_AAR_ARM64="${IRONFOX_GV_AAR_ARM64_DEFAULT}" fi -export IRONFOX_GV_AAR_ARM64 ## Where our GeckoView ARM AAR archive is located within mozilla-central IRONFOX_GV_AAR_ARM_DEFAULT="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-arm/gradle/target.maven.zip" if [[ -z "${IRONFOX_GV_AAR_ARM+x}" ]]; then - IRONFOX_GV_AAR_ARM="${IRONFOX_GV_AAR_ARM_DEFAULT}" + export IRONFOX_GV_AAR_ARM="${IRONFOX_GV_AAR_ARM_DEFAULT}" fi -export IRONFOX_GV_AAR_ARM ## Where our GeckoView x86_64 AAR archive is located within mozilla-central IRONFOX_GV_AAR_X86_64_DEFAULT="${IRONFOX_GECKO}/obj/ironfox-${IRONFOX_CHANNEL}-x86_64/gradle/target.maven.zip" if [[ -z "${IRONFOX_GV_AAR_X86_64+x}" ]]; then - IRONFOX_GV_AAR_X86_64="${IRONFOX_GV_AAR_X86_64_DEFAULT}" + export IRONFOX_GV_AAR_X86_64="${IRONFOX_GV_AAR_X86_64_DEFAULT}" fi -export IRONFOX_GV_AAR_X86_64 + +# Set our external environment variables +IRONFOX_ENV_EXTERNAL="${IRONFOX_SCRIPTS}/env_external.sh" +source "${IRONFOX_ENV_EXTERNAL}" source "${IRONFOX_VERSIONS}" # Node.js IRONFOX_NODEJS_DEFAULT="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin/node" if [[ -z "${IRONFOX_NODEJS+x}" ]]; then - IRONFOX_NODEJS="${IRONFOX_NODEJS_DEFAULT}" + export IRONFOX_NODEJS="${IRONFOX_NODEJS_DEFAULT}" fi -export IRONFOX_NODEJS # npm IRONFOX_NPM_DEFAULT="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin/npm" if [[ -z "${IRONFOX_NPM+x}" ]]; then - IRONFOX_NPM="${IRONFOX_NPM_DEFAULT}" + export IRONFOX_NPM="${IRONFOX_NPM_DEFAULT}" fi -export IRONFOX_NPM -# Set our external environment variables -IRONFOX_ENV_EXTERNAL="${IRONFOX_SCRIPTS}/env_external.sh" -source "${IRONFOX_ENV_EXTERNAL}" - -# We've now set our environment variables... -IRONFOX_SET_ENVS=1 -export IRONFOX_SET_ENVS diff --git a/scripts/env_external.sh b/scripts/env_external.sh index 97b84d8d..7c7ee759 100644 --- a/scripts/env_external.sh +++ b/scripts/env_external.sh @@ -9,454 +9,291 @@ ## Use the IronFox equivalent variables (at `env_common.sh`) instead. # Compiler flags -TARGET_CFLAGS="${IRONFOX_COMPILER_FLAGS}" -TARGET_CXXFLAGS="${IRONFOX_COMPILER_FLAGS}" -export TARGET_CFLAGS -export TARGET_CXXFLAGS +export TARGET_CFLAGS="${IRONFOX_COMPILER_FLAGS}" +export TARGET_CXXFLAGS="${IRONFOX_COMPILER_FLAGS}" # Gradle flags -GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS}" -export GRADLE_FLAGS +export GRADLE_FLAGS="${IRONFOX_GRADLE_FLAGS}" # Rust flags -CARGO_BUILD_RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}" -RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}" -export CARGO_BUILD_RUSTDOCFLAGS -export RUSTDOCFLAGS +export CARGO_BUILD_RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}" +export RUSTDOCFLAGS="${IRONFOX_RUST_FLAGS}" # Android SDK ## https://developer.android.com/tools/variables -ANDROID_HOME="${IRONFOX_ANDROID_SDK}" -ANDROID_SDK_ROOT="${IRONFOX_ANDROID_SDK}" -export ANDROID_HOME -export ANDROID_SDK_ROOT +export ANDROID_HOME="${IRONFOX_ANDROID_SDK}" +export ANDROID_SDK_ROOT="${IRONFOX_ANDROID_SDK}" ## Android SDK preferences -ANDROID_USER_HOME="${IRONFOX_BUILD}/.android" -export ANDROID_USER_HOME +export ANDROID_USER_HOME="${IRONFOX_BUILD}/.android" # Android NDK -ANDROID_NDK_HOME="${IRONFOX_ANDROID_NDK}" -ANDROID_NDK_ROOT="${IRONFOX_ANDROID_NDK}" -export ANDROID_NDK_HOME -export ANDROID_NDK_ROOT +export ANDROID_NDK_HOME="${IRONFOX_ANDROID_NDK}" +export ANDROID_NDK_ROOT="${IRONFOX_ANDROID_NDK}" # Gradle cache -CACHEDIR="${IRONFOX_GRADLE_CACHE}" -export CACHEDIR +export CACHEDIR="${IRONFOX_GRADLE_CACHE}" # Gradle home -GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}" -export GRADLE_USER_HOME - -# IronFox prebuilds -IRONFOX_PREBUILDS_AWK="${IRONFOX_AWK}" -IRONFOX_PREBUILDS_CARGO_COLORED_OUTPUT="${IRONFOX_CARGO_COLORED_OUTPUT}" -IRONFOX_PREBUILDS_CARGO_PROGRESS_BAR="${IRONFOX_CARGO_PROGRESS_BAR}" -IRONFOX_PREBUILDS_CIPHERS="${IRONFOX_CIPHERS}" -IRONFOX_PREBUILDS_CURL_FLAGS_OVERRIDE=1 -IRONFOX_PREBUILDS_CURL_FLAGS="${IRONFOX_CURL_FLAGS}" -IRONFOX_PREBUILDS_MAKE="${IRONFOX_MAKE}" -IRONFOX_PREBUILDS_NPROC="${IRONFOX_NPROC}" -IRONFOX_PREBUILDS_RUSTUP_COLORED_OUTPUT="${IRONFOX_RUSTUP_COLORED_OUTPUT}" -IRONFOX_PREBUILDS_RUSTUP_PROGRESS_BAR="${IRONFOX_RUSTUP_PROGRESS_BAR}" -IRONFOX_PREBUILDS_SED="${IRONFOX_SED}" -IRONFOX_PREBUILDS_TAR="${IRONFOX_TAR}" -export IRONFOX_PREBUILDS_AWK -export IRONFOX_PREBUILDS_CARGO_COLORED_OUTPUT -export IRONFOX_PREBUILDS_CARGO_PROGRESS_BAR -export IRONFOX_PREBUILDS_CIPHERS -export IRONFOX_PREBUILDS_CURL_FLAGS_OVERRIDE -export IRONFOX_PREBUILDS_CURL_FLAGS -export IRONFOX_PREBUILDS_MAKE -export IRONFOX_PREBUILDS_NPROC -export IRONFOX_PREBUILDS_RUSTUP_COLORED_OUTPUT -export IRONFOX_PREBUILDS_RUSTUP_PROGRESS_BAR -export IRONFOX_PREBUILDS_SED -export IRONFOX_PREBUILDS_TAR +export GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}" # Java home -JAVA_HOME="${IRONFOX_JAVA_HOME}" -export JAVA_HOME - -# Java options -GRADLE_OPTS="${IRONFOX_JAVA_OPTS}" -JAVA_OPTS="${IRONFOX_JAVA_OPTS}" -JAVA_TOOL_OPTIONS="${IRONFOX_JAVA_OPTS}" -JDK_JAVA_OPTIONS="${IRONFOX_JAVA_OPTS}" -export GRADLE_OPTS -export JAVA_OPTS -export JAVA_TOOL_OPTIONS -export JDK_JAVA_OPTIONS +export JAVA_HOME="${IRONFOX_JAVA_HOME}" # llvm-profdata -LLVM_PROFDATA="${IRONFOX_LLVM_PROFDATA}" -export LLVM_PROFDATA +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 -DISABLE_TELEMETRY=1 -MACHRC="${IRONFOX_CONFIGS}/mach/machrc" -MOZCONFIG="${IRONFOX_MOZCONFIGS}/ironfox.mozconfig" -export DISABLE_TELEMETRY -export MACHRC -export MOZCONFIG +export DISABLE_TELEMETRY=1 +export MACHRC="${IRONFOX_CONFIGS}/mach/machrc" +export MOZCONFIG="${IRONFOX_MOZCONFIGS}/ironfox.mozconfig" # microG -GRADLE_MICROG_VERSION_WITHOUT_GIT=1 -export GRADLE_MICROG_VERSION_WITHOUT_GIT +export GRADLE_MICROG_VERSION_WITHOUT_GIT=1 # mozbuild -MOZBUILD_STATE_PATH="${IRONFOX_MOZBUILD}" -export MOZBUILD_STATE_PATH +export MOZBUILD_STATE_PATH="${IRONFOX_MOZBUILD}" # No-op Taskcluster ## This should help ensure we don't fetch Mozilla artifacts/prebuilds -TASKCLUSTER_PROXY_URL='https://noop.invalid' -TASKCLUSTER_ROOT_URL='https://noop.invalid' -export TASKCLUSTER_PROXY_URL -export TASKCLUSTER_ROOT_URL +export TASKCLUSTER_PROXY_URL='https://noop.invalid' +export TASKCLUSTER_ROOT_URL='https://noop.invalid' # Node.js ## https://nodejs.org/api/cli.html#environment-variables-1 ## Disable compile cache ### https://nodejs.org/api/cli.html#node-disable-compile-cache1 -NODE_DISABLE_COMPILE_CACHE=1 -export NODE_DISABLE_COMPILE_CACHE +export NODE_DISABLE_COMPILE_CACHE=1 ## Disable the system CA root store ### https://nodejs.org/api/cli.html#node-use-system-ca1 -NODE_USE_SYSTEM_CA=0 -export NODE_USE_SYSTEM_CA +export NODE_USE_SYSTEM_CA=0 ## Do not attempt to use a system proxy ### https://nodejs.org/api/cli.html#node-use-env-proxy1 -NODE_USE_ENV_PROXY=0 -export NODE_USE_ENV_PROXY +export NODE_USE_ENV_PROXY=0 ## Enforce certificate validation ### https://nodejs.org/api/cli.html#node-tls-reject-unauthorizedvalue -NODE_TLS_REJECT_UNAUTHORIZED=1 -export NODE_TLS_REJECT_UNAUTHORIZED +export NODE_TLS_REJECT_UNAUTHORIZED=1 ## Ensure npm always installs production/release modules -NODE_ENV='production' -export NODE_ENV +export NODE_ENV='production' ## Node options -NODE_OPTIONS="${IRONFOX_NODE_OPTIONS}" -npm_config_node_options="${IRONFOX_NODE_OPTIONS}" -export NODE_OPTIONS -export npm_config_node_options +export NODE_OPTIONS="${IRONFOX_NODE_OPTIONS}" +export npm_config_node_options="${IRONFOX_NODE_OPTIONS}" # npm ## Always use our npm config file ## https://docs.npmjs.com/cli/v11/using-npm/config#npmrc-files -NPM_CONFIG_GLOBALCONFIG="${IRONFOX_CONFIGS}/npm/.npmrc" -npm_config_globalconfig="${IRONFOX_CONFIGS}/npm/.npmrc" -export NPM_CONFIG_GLOBALCONFIG -export npm_config_globalconfig +export NPM_CONFIG_GLOBALCONFIG="${IRONFOX_CONFIGS}/npm/.npmrc" +export npm_config_globalconfig="${IRONFOX_CONFIGS}/npm/.npmrc" ### Always install dependencies properly -npm_config_install_links='true' -export npm_config_install_links +export npm_config_install_links='true' ### Disable "funding" nags -npm_config_fund='false' -export npm_config_fund +export npm_config_fund='false' ### Disable submission of audit reports -npm_config_audit='false' -export npm_config_audit +export npm_config_audit='false' ### Enable verbose logging -npm_config_loglevel='verbose' -export npm_config_loglevel +export npm_config_loglevel='verbose' ### Enforce SSL key validation -npm_config_strict_ssl='true' -export npm_config_strict_ssl +export npm_config_strict_ssl='true' ### Write exact versions to package.json/package_lock.json -npm_config_save_exact='true' -export npm_config_save_exact +export npm_config_save_exact='true' ### Set cache directory -npm_config_cache="${IRONFOX_NPM_CACHE}" -export npm_config_cache +export npm_config_cache="${IRONFOX_NPM_CACHE}" # NSS -NSS_DIR="${IRONFOX_NSS_DIR}" -NSS_STATIC=1 -export NSS_DIR -export NSS_STATIC +export NSS_DIR="${IRONFOX_NSS_DIR}" +export NSS_STATIC=1 # nvm -NVM_DIR="${IRONFOX_NVM}" -export NVM_DIR +export NVM_DIR="${IRONFOX_NVM}" ## This is necessary to prevent nvm from automatically trying to modify the system PATH -PROFILE='/dev/null' -export PROFILE +export PROFILE='/dev/null' # Phoenix -PHOENIX_ANDROID_ONLY=1 -PHOENIX_AWK="${IRONFOX_AWK}" -PHOENIX_CIPHERS="${IRONFOX_CIPHERS}" -PHOENIX_CURL_FLAGS="${IRONFOX_CURL_FLAGS}" -PHOENIX_CURL_FLAGS_OVERRIDE=1 -PHOENIX_EXTENDED_ONLY=1 -PHOENIX_EXTRA_CFG=1 -PHOENIX_EXTRA_CFG_FILE="${IRONFOX_BUILD}/tmp/gecko/ironfox-parsed.cfg" -PHOENIX_EXTRA_CFG_OUTPUT_DIR="${IRONFOX_GECKO}/ironfox/prefs" -PHOENIX_EXTRA_EXTENDED_OUTPUT_FILENAME_ANDROID='ironfox' -PHOENIX_EXTRA_POLICIES_ANDROID=1 -PHOENIX_EXTRA_POLICIES_FILE_ANDROID="${IRONFOX_PATCHES}/build/gecko/policies.json" -PHOENIX_EXTRA_POLICIES_OUTPUT_DIR_ANDROID="${IRONFOX_GECKO}/ironfox/prefs" -PHOENIX_PYENV_DIR="${IRONFOX_PYENV_DIR}" -PHOENIX_PYTHON="${IRONFOX_PYTHON}" -PHOENIX_PYTHON_DIR="${IRONFOX_PYTHON_DIR}" -PHOENIX_SED="${IRONFOX_SED}" -PHOENIX_SPECS=0 -PHOENIX_TAR="${IRONFOX_TAR}" -PHOENIX_UV_CACHE="${IRONFOX_UV_CACHE}" -PHOENIX_UV_DIR="${IRONFOX_UV_DIR}" -PHOENIX_UV_LOCAL="${IRONFOX_UV_LOCAL}" -PHOENIX_UV_PYTHON="${IRONFOX_UV_PYTHON}" -PHOENIX_UV_TOOLS="${IRONFOX_UV_TOOLS}" -export PHOENIX_ANDROID_ONLY -export PHOENIX_AWK -export PHOENIX_CIPHERS -export PHOENIX_CURL_FLAGS -export PHOENIX_CURL_FLAGS_OVERRIDE -export PHOENIX_EXTENDED_ONLY -export PHOENIX_EXTRA_CFG -export PHOENIX_EXTRA_CFG_FILE -export PHOENIX_EXTRA_CFG_OUTPUT_DIR -export PHOENIX_EXTRA_EXTENDED_OUTPUT_FILENAME_ANDROID -export PHOENIX_EXTRA_POLICIES_ANDROID -export PHOENIX_EXTRA_POLICIES_FILE_ANDROID -export PHOENIX_EXTRA_POLICIES_OUTPUT_DIR_ANDROID -export PHOENIX_PYENV_DIR -export PHOENIX_PYTHON -export PHOENIX_PYTHON_DIR -export PHOENIX_SED -export PHOENIX_SPECS -export PHOENIX_TAR -export PHOENIX_UV_CACHE -export PHOENIX_UV_DIR -export PHOENIX_UV_LOCAL -export PHOENIX_UV_PYTHON -export PHOENIX_UV_TOOLS +export PHOENIX_ANDROID_ONLY=1 +export PHOENIX_AWK="${IRONFOX_AWK}" +export PHOENIX_CURL_FLAGS="${IRONFOX_CURL_FLAGS}" +export PHOENIX_CURL_FLAGS_OVERRIDE=1 +export PHOENIX_EXTENDED_ONLY=1 +export PHOENIX_EXTRA_CFG=1 +export PHOENIX_EXTRA_CFG_FILE="${IRONFOX_BUILD}/tmp/gecko/ironfox-parsed.cfg" +export PHOENIX_EXTRA_CFG_OUTPUT_DIR="${IRONFOX_GECKO}/ironfox/prefs" +export PHOENIX_EXTRA_EXTENDED_OUTPUT_FILENAME_ANDROID='ironfox' +export PHOENIX_EXTRA_POLICIES_ANDROID=1 +export PHOENIX_EXTRA_POLICIES_FILE_ANDROID="${IRONFOX_PATCHES}/build/gecko/policies.json" +export PHOENIX_EXTRA_POLICIES_OUTPUT_DIR_ANDROID="${IRONFOX_GECKO}/ironfox/prefs" +export PHOENIX_PYENV_DIR="${IRONFOX_PYENV_DIR}" +export PHOENIX_PYTHON="${IRONFOX_PYTHON}" +export PHOENIX_PYTHON_DIR="${IRONFOX_PYTHON_DIR}" +export PHOENIX_SED="${IRONFOX_SED}" +export PHOENIX_TAR="${IRONFOX_TAR}" +export PHOENIX_UV_CACHE="${IRONFOX_UV_CACHE}" +export PHOENIX_UV_DIR="${IRONFOX_UV_DIR}" +export PHOENIX_UV_LOCAL="${IRONFOX_UV_LOCAL}" +export PHOENIX_UV_PYTHON="${IRONFOX_UV_PYTHON}" +export PHOENIX_UV_TOOLS="${IRONFOX_UV_TOOLS}" +export PHOENIX_SPECS=0 # Python ## https://docs.python.org/3/using/cmdline.html#environment-variables ## Disable JIT -PYTHON_JIT=0 -PYTHON_PERF_JIT_SUPPORT=0 -export PYTHON_JIT -export PYTHON_PERF_JIT_SUPPORT +export PYTHON_JIT=0 +export PYTHON_PERF_JIT_SUPPORT=0 ## Disable remote debugging -PYTHON_DISABLE_REMOTE_DEBUG=1 -export PYTHON_DISABLE_REMOTE_DEBUG +export PYTHON_DISABLE_REMOTE_DEBUG=1 ## Enable performance optimizations -PYTHONOPTIMIZE=1 -export PYTHONOPTIMIZE +export PYTHONOPTIMIZE=1 # Python (Glean) -GLEAN_PYTHON="${IRONFOX_PYTHON}" -GLEAN_PYTHON_WHEELS_DIR="${IRONFOX_GLEAN_PARSER_WHEELS}" -export GLEAN_PYTHON -export GLEAN_PYTHON_WHEELS_DIR +export GLEAN_PYTHON="${IRONFOX_PYTHON}" +export GLEAN_PYTHON_WHEELS_DIR="${IRONFOX_GLEAN_PARSER_WHEELS}" # Rust (cargo) -CARGO="${IRONFOX_CARGO}" -CARGO_HOME="${IRONFOX_CARGO_HOME}" -CARGO_INSTALL_ROOT="${IRONFOX_CARGO_HOME}" -RUSTC="${IRONFOX_RUSTC}" -RUSTDOC="${IRONFOX_RUSTDOC}" -export CARGO -export CARGO_HOME -export CARGO_INSTALL_ROOT -export RUSTC -export RUSTDOC - -## Cipher suites -RUSTUP_TLS_CIPHERSUITES="${IRONFOX_CIPHERS}" -export RUSTUP_TLS_CIPHERSUITES +export CARGO="${IRONFOX_CARGO}" +export CARGO_HOME="${IRONFOX_CARGO_HOME}" +export CARGO_INSTALL_ROOT="${IRONFOX_CARGO_HOME}" +export RUSTC="${IRONFOX_RUSTC}" +export RUSTDOC="${IRONFOX_RUSTDOC}" ## Disable debug -CARGO_PROFILE_DEV_DEBUG='false' -CARGO_PROFILE_DEV_DEBUG_ASSERTIONS='false' -CARGO_PROFILE_RELEASE_DEBUG='false' -CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS='false' -export CARGO_PROFILE_DEV_DEBUG -export CARGO_PROFILE_DEV_DEBUG_ASSERTIONS -export CARGO_PROFILE_RELEASE_DEBUG -export CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS +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 -CARGO_HTTP_DEBUG='false' -export CARGO_HTTP_DEBUG +export CARGO_HTTP_DEBUG='false' ## Disable incremental compilation ### (Ensures builds are fresh) ### https://doc.rust-lang.org/cargo/reference/profiles.html#incremental -CARGO_BUILD_INCREMENTAL='false' -CARGO_INCREMENTAL=0 -export CARGO_BUILD_INCREMENTAL -export CARGO_INCREMENTAL +export CARGO_BUILD_INCREMENTAL='false' +export CARGO_INCREMENTAL=0 ## Display progress bars -CARGO_TERM_PROGRESS_WHEN="${IRONFOX_CARGO_PROGRESS_BAR}" -CARGO_TERM_PROGRESS_WIDTH=80 -export CARGO_TERM_PROGRESS_WHEN -export CARGO_TERM_PROGRESS_WIDTH +export CARGO_TERM_PROGRESS_WHEN="${IRONFOX_CARGO_PROGRESS_BAR}" +export CARGO_TERM_PROGRESS_WIDTH=80 ## Enable certificate revocation checks -CARGO_HTTP_CHECK_REVOKE='true' -export CARGO_HTTP_CHECK_REVOKE +export CARGO_HTTP_CHECK_REVOKE='true' ## Enable colored output -CARGO_TERM_COLOR="${IRONFOX_CARGO_COLORED_OUTPUT}" -export CARGO_TERM_COLOR +export CARGO_TERM_COLOR="${IRONFOX_CARGO_COLORED_OUTPUT}" ## Enable overflow checks -CARGO_PROFILE_DEV_OVERFLOW_CHECKS='true' -CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS='true' -export CARGO_PROFILE_DEV_OVERFLOW_CHECKS -export CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS +export CARGO_PROFILE_DEV_OVERFLOW_CHECKS='true' +export CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS='true' ## Enable performance optimizations -CARGO_PROFILE_DEV_LTO='true' -CARGO_PROFILE_DEV_OPT_LEVEL=3 -CARGO_PROFILE_RELEASE_LTO='true' -CARGO_PROFILE_RELEASE_OPT_LEVEL=3 -export CARGO_PROFILE_DEV_LTO -export CARGO_PROFILE_DEV_OPT_LEVEL -export CARGO_PROFILE_RELEASE_LTO -export CARGO_PROFILE_RELEASE_OPT_LEVEL +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 -CARGO_PROFILE_DEV_STRIP='debuginfo' -CARGO_PROFILE_RELEASE_STRIP='debuginfo' -export CARGO_PROFILE_DEV_STRIP -export CARGO_PROFILE_RELEASE_STRIP +export CARGO_PROFILE_DEV_STRIP='debuginfo' +export CARGO_PROFILE_RELEASE_STRIP='debuginfo' # rustup -RUSTUP_HOME="${IRONFOX_RUSTUP_HOME}" -export RUSTUP_HOME +export RUSTUP_HOME="${IRONFOX_RUSTUP_HOME}" ## Display progress bars -RUSTUP_TERM_PROGRESS_WHEN="${IRONFOX_RUSTUP_PROGRESS_BAR}" -export RUSTUP_TERM_PROGRESS_WHEN +export RUSTUP_TERM_PROGRESS_WHEN="${IRONFOX_RUSTUP_PROGRESS_BAR}" ## Enable colored output -RUSTUP_TERM_COLOR="${IRONFOX_RUSTUP_COLORED_OUTPUT}" -export RUSTUP_TERM_COLOR +export RUSTUP_TERM_COLOR="${IRONFOX_RUSTUP_COLORED_OUTPUT}" # UnifiedPush-AC -UP_AC_GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}" -export UP_AC_GRADLE_USER_HOME +export UP_AC_GRADLE_USER_HOME="${IRONFOX_GRADLE_HOME}" # UV ## https://docs.astral.sh/uv/reference/environment/ ## Cache directory -UV_CACHE_DIR="${IRONFOX_UV_LOCAL}/cache" -export UV_CACHE_DIR +export UV_CACHE_DIR="${IRONFOX_UV_LOCAL}/cache" ## Disable cache -UV_NO_CACHE=1 -export UV_NO_CACHE +export UV_NO_CACHE=1 ## Disable the system CA root store -UV_SYSTEM_CERTS='false' -export UV_SYSTEM_CERTS +export UV_SYSTEM_CERTS='false' ## Exclude development dependencies -UV_NO_DEV=1 -export UV_NO_DEV +export UV_NO_DEV=1 ## Executables directory -UV_PYTHON_BIN_DIR="${IRONFOX_UV_LOCAL}/bin" -UV_PYTHON_INSTALL_BIN=1 -export UV_PYTHON_BIN_DIR -export UV_PYTHON_INSTALL_BIN +export UV_PYTHON_BIN_DIR="${IRONFOX_UV_LOCAL}/bin" +export UV_PYTHON_INSTALL_BIN=1 ## Ignore configuration files -UV_NO_CONFIG=1 -export UV_NO_CONFIG +export UV_NO_CONFIG=1 ## Ignore env files -UV_NO_ENV_FILE=1 -export UV_NO_ENV_FILE +export UV_NO_ENV_FILE=1 ## Location -UV_INSTALL_DIR="${IRONFOX_UV_DIR}" -export UV_INSTALL_DIR +export UV_INSTALL_DIR="${IRONFOX_UV_DIR}" ## Prevent automatic downloads/updates -UV_DISABLE_UPDATE=1 -UV_PYTHON_DOWNLOADS='manual' -export UV_DISABLE_UPDATE -export UV_PYTHON_DOWNLOADS +export UV_DISABLE_UPDATE=1 +export UV_PYTHON_DOWNLOADS='manual' ## Prevent modifying the system PATH -INSTALLER_NO_MODIFY_PATH=1 -UV_NO_MODIFY_PATH=1 -UV_UNMANAGED_INSTALL="${IRONFOX_UV_DIR}" -export INSTALLER_NO_MODIFY_PATH -export UV_NO_MODIFY_PATH -export UV_UNMANAGED_INSTALL +export INSTALLER_NO_MODIFY_PATH=1 +export UV_NO_MODIFY_PATH=1 +export UV_UNMANAGED_INSTALL="${IRONFOX_UV_DIR}" ## Prevent using the system Python -UV_MANAGED_PYTHON=1 -UV_SYSTEM_PYTHON='false' -export UV_MANAGED_PYTHON -export UV_SYSTEM_PYTHON +export UV_MANAGED_PYTHON=1 +export UV_SYSTEM_PYTHON='false' ## Python -UV_PYTHON_CACHE_DIR="${IRONFOX_UV_LOCAL}/python-cache" -UV_PYTHON_INSTALL_MIRROR="file://${IRONFOX_PYTHON_DIR}" -UV_PYTHON_INSTALL_DIR="${IRONFOX_UV_LOCAL}/python" -export UV_PYTHON_CACHE_DIR -export UV_PYTHON_INSTALL_MIRROR -export UV_PYTHON_INSTALL_DIR +export UV_PYTHON_CACHE_DIR="${IRONFOX_UV_LOCAL}/python-cache" +export UV_PYTHON_INSTALL_MIRROR="file://${IRONFOX_PYTHON_DIR}" +export UV_PYTHON_INSTALL_DIR="${IRONFOX_UV_LOCAL}/python" ## Python environment -UV_PROJECT_ENVIRONMENT="${IRONFOX_PYENV_DIR}" -VIRTUAL_ENV="${IRONFOX_PYENV_DIR}" -export UV_PROJECT_ENVIRONMENT -export VIRTUAL_ENV +export UV_PROJECT_ENVIRONMENT="${IRONFOX_PYENV_DIR}" +export VIRTUAL_ENV="${IRONFOX_PYENV_DIR}" ## Tools directory -UV_TOOL_BIN_DIR="${IRONFOX_UV_LOCAL}/tools/bin" -UV_TOOL_DIR="${IRONFOX_UV_LOCAL}/tools" -export UV_TOOL_BIN_DIR -export UV_TOOL_DIR +export UV_TOOL_BIN_DIR="${IRONFOX_UV_LOCAL}/tools/bin" +export UV_TOOL_DIR="${IRONFOX_UV_LOCAL}/tools" + +# Include version info +source "${IRONFOX_VERSIONS}" ## Pin Python version -UV_PYTHON_CPYTHON_BUILD="${PYTHON_GIT_RELEASE}" -export UV_PYTHON_CPYTHON_BUILD +export UV_PYTHON_CPYTHON_BUILD="${PYTHON_GIT_RELEASE}" ## Set Node.js bin path -NVM_BIN="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin" -export NVM_BIN +export NVM_BIN="${IRONFOX_NVM}/versions/node/v${NODE_VERSION}/bin" ## Set Node.js version -export NODE_VERSION +export NODE_VERSION="${NODE_VERSION}" ## Set Rust version -RUSTUP_TOOLCHAIN="${RUST_VERSION}" -export RUSTUP_TOOLCHAIN +export RUSTUP_TOOLCHAIN="${RUST_VERSION}" ## Set Rustup version -export RUSTUP_VERSION +export RUSTUP_VERSION="${RUSTUP_VERSION}" diff --git a/scripts/env_helpers.sh b/scripts/env_helpers.sh index 0d9baeba..f6ff18a1 100644 --- a/scripts/env_helpers.sh +++ b/scripts/env_helpers.sh @@ -1,36 +1,33 @@ # Set platform if [[ "${OSTYPE}" == "darwin"* ]]; then - IRONFOX_PLATFORM='darwin' + export IRONFOX_PLATFORM='darwin' else - IRONFOX_PLATFORM='linux' + export IRONFOX_PLATFORM='linux' fi -export IRONFOX_PLATFORM # Set OS if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then - IRONFOX_OS='osx' + export IRONFOX_OS='osx' elif [[ "${IRONFOX_PLATFORM}" == 'linux' ]]; then if [[ -f "/etc/os-release" ]]; then source /etc/os-release if [[ -n "${ID}" ]]; then - IRONFOX_OS="${ID}" + export IRONFOX_OS="${ID}" else - IRONFOX_OS='unknown' + export IRONFOX_OS='unknown' fi else - IRONFOX_OS='unknown' + export IRONFOX_OS='unknown' fi else - IRONFOX_OS='unknown' + export IRONFOX_OS='unknown' fi -export IRONFOX_OS # Set architecture PLATFORM_ARCH=$(uname -m) if [[ "${PLATFORM_ARCH}" == 'arm64' ]]; then - IRONFOX_PLATFORM_ARCH='aarch64' + export IRONFOX_PLATFORM_ARCH='aarch64' else - IRONFOX_PLATFORM_ARCH='x86-64' + export IRONFOX_PLATFORM_ARCH='x86-64' fi -export IRONFOX_PLATFORM_ARCH diff --git a/scripts/get_sources-if.sh b/scripts/get_sources-if.sh index 7b8ffba1..f0c57ae5 100755 --- a/scripts/get_sources-if.sh +++ b/scripts/get_sources-if.sh @@ -3,18 +3,16 @@ set -euo pipefail # Set-up our environment +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -# Include utilities -source "${IRONFOX_UTILS}" - if [[ -z "${IRONFOX_FROM_SOURCES+x}" ]]; then echo_red_text "ERROR: Do not call get_sources-if.sh directly. Instead, use get_sources.sh." >&1 exit 1 fi -readonly target="$1" -readonly mode="$2" +target="$1" +mode="$2" # Set-up target parameters IRONFOX_GET_SOURCE_ANDROID_NDK=0 @@ -34,8 +32,6 @@ IRONFOX_GET_SOURCE_GLEAN_PARSER=0 IRONFOX_GET_SOURCE_GRADLE=0 IRONFOX_GET_SOURCE_GYP=0 IRONFOX_GET_SOURCE_JDK_17=0 -IRONFOX_GET_SOURCE_JDK_21=0 -IRONFOX_GET_SOURCE_JDK_25=0 IRONFOX_GET_SOURCE_MICROG=0 IRONFOX_GET_SOURCE_NODE=0 IRONFOX_GET_SOURCE_NPM=0 @@ -98,12 +94,6 @@ elif [ "${target}" == 'gyp' ]; then elif [ "${target}" == 'jdk-17' ]; then # Get OpenJDK (17) (Required by GeckoView) IRONFOX_GET_SOURCE_JDK_17=1 -elif [ "${target}" == 'jdk-21' ]; then - # Get OpenJDK (21) - IRONFOX_GET_SOURCE_JDK_21=1 -elif [ "${target}" == 'jdk-25' ]; then - # Get OpenJDK (25) - IRONFOX_GET_SOURCE_JDK_25=1 elif [ "${target}" == 'microg' ]; then # Get microG IRONFOX_GET_SOURCE_MICROG=1 @@ -153,8 +143,6 @@ elif [ "${target}" == 'all' ]; then IRONFOX_GET_SOURCE_GRADLE=1 IRONFOX_GET_SOURCE_GYP=1 IRONFOX_GET_SOURCE_JDK_17=1 - IRONFOX_GET_SOURCE_JDK_21=1 - IRONFOX_GET_SOURCE_JDK_25=1 IRONFOX_GET_SOURCE_MICROG=1 IRONFOX_GET_SOURCE_NODE=1 IRONFOX_GET_SOURCE_NPM=1 @@ -185,8 +173,6 @@ else echo 'Gradle: gradle' echo 'GYP: gyp' echo 'JDK (17): jdk-17' - echo 'JDK (21): jdk-21' - echo 'JDK (25): jdk-25' echo 'microG: microg' echo 'Node.js: node' echo 'npm: npm' @@ -200,35 +186,6 @@ else exit 1 fi -readonly IRONFOX_GET_SOURCE_ANDROID_NDK -readonly IRONFOX_GET_SOURCE_ANDROID_SDK -readonly IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS -readonly IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS_35 -readonly IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM -readonly IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_36 -readonly IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_TOOLS -readonly IRONFOX_GET_SOURCE_AS -readonly IRONFOX_GET_SOURCE_BUNDLETOOL -readonly IRONFOX_GET_SOURCE_CBINDGEN -readonly IRONFOX_GET_SOURCE_GECKO -readonly IRONFOX_GET_SOURCE_GECKO_L10N -readonly IRONFOX_GET_SOURCE_GLEAN -readonly IRONFOX_GET_SOURCE_GLEAN_PARSER -readonly IRONFOX_GET_SOURCE_GRADLE -readonly IRONFOX_GET_SOURCE_GYP -readonly IRONFOX_GET_SOURCE_JDK_17 -readonly IRONFOX_GET_SOURCE_JDK_21 -readonly IRONFOX_GET_SOURCE_JDK_25 -readonly IRONFOX_GET_SOURCE_MICROG -readonly IRONFOX_GET_SOURCE_NODE -readonly IRONFOX_GET_SOURCE_NPM -readonly IRONFOX_GET_SOURCE_PHOENIX -readonly IRONFOX_GET_SOURCE_PIP -readonly IRONFOX_GET_SOURCE_PREBUILDS -readonly IRONFOX_GET_SOURCE_PYTHON -readonly IRONFOX_GET_SOURCE_RUST -readonly IRONFOX_GET_SOURCE_UP_AC -readonly IRONFOX_GET_SOURCE_UV # If the 'checksum-update' argument is specified, in addition to downloading the dependencies as usual, ## we're also updating their checksums @@ -246,16 +203,15 @@ elif [ "${mode}" != 'download' ]; then echo 'Download + update checksums: checksum-update' exit 1 fi -readonly IRONFOX_GET_SOURCE_CHECKSUM_UPDATE # Include version info source "${IRONFOX_VERSIONS}" # Function to automate updating SHA512sums of dependencies function update_sha512sum() { - local readonly old_sha512sum="$1" - local readonly new_sha512sum="$2" - local readonly file="$3" + old_sha512sum="$1" + new_sha512sum="$2" + file="$3" if [ "${old_sha512sum}" == "${ANDROID_NDK_SHA512SUM_LINUX}" ]; then echo_red_text 'Updating SHA512sum for Android NDK (Linux)...' @@ -353,38 +309,6 @@ function update_sha512sum() { echo_red_text 'Updating SHA512sum for JDK (17) (OS X - x86_64)...' "${IRONFOX_SED}" -i -e "s|JDK_17_SHA512SUM_OSX_X86_64='.*'|JDK_17_SHA512SUM_OSX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" echo_green_text 'SUCCESS: Updated SHA512sum for JDK (17) (OS X - x86_64)' - elif [ "${old_sha512sum}" == "${JDK_21_SHA512SUM_LINUX_ARM64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (21) (Linux - ARM64)...' - "${IRONFOX_SED}" -i -e "s|JDK_21_SHA512SUM_LINUX_ARM64='.*'|JDK_21_SHA512SUM_LINUX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (21) (Linux - ARM64)' - elif [ "${old_sha512sum}" == "${JDK_21_SHA512SUM_LINUX_X86_64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (21) (Linux - x86_64)...' - "${IRONFOX_SED}" -i -e "s|JDK_21_SHA512SUM_LINUX_X86_64='.*'|JDK_21_SHA512SUM_LINUX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (21) (Linux - x86_64)' - elif [ "${old_sha512sum}" == "${JDK_21_SHA512SUM_OSX_ARM64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (21) (OS X - ARM64)...' - "${IRONFOX_SED}" -i -e "s|JDK_21_SHA512SUM_OSX_ARM64='.*'|JDK_21_SHA512SUM_OSX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (21) (OS X - ARM64)' - elif [ "${old_sha512sum}" == "${JDK_21_SHA512SUM_OSX_X86_64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (21) (OS X - x86_64)...' - "${IRONFOX_SED}" -i -e "s|JDK_21_SHA512SUM_OSX_X86_64='.*'|JDK_21_SHA512SUM_OSX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (21) (OS X - x86_64)' - elif [ "${old_sha512sum}" == "${JDK_25_SHA512SUM_LINUX_ARM64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (25) (Linux - ARM64)...' - "${IRONFOX_SED}" -i -e "s|JDK_25_SHA512SUM_LINUX_ARM64='.*'|JDK_25_SHA512SUM_LINUX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (25) (Linux - ARM64)' - elif [ "${old_sha512sum}" == "${JDK_25_SHA512SUM_LINUX_X86_64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (25) (Linux - x86_64)...' - "${IRONFOX_SED}" -i -e "s|JDK_25_SHA512SUM_LINUX_X86_64='.*'|JDK_25_SHA512SUM_LINUX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (25) (Linux - x86_64)' - elif [ "${old_sha512sum}" == "${JDK_25_SHA512SUM_OSX_ARM64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (25) (OS X - ARM64)...' - "${IRONFOX_SED}" -i -e "s|JDK_25_SHA512SUM_OSX_ARM64='.*'|JDK_25_SHA512SUM_OSX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (25) (OS X - ARM64)' - elif [ "${old_sha512sum}" == "${JDK_25_SHA512SUM_OSX_X86_64}" ]; then - echo_red_text 'Updating SHA512sum for JDK (25) (OS X - x86_64)...' - "${IRONFOX_SED}" -i -e "s|JDK_25_SHA512SUM_OSX_X86_64='.*'|JDK_25_SHA512SUM_OSX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" - echo_green_text 'SUCCESS: Updated SHA512sum for JDK (25) (OS X - x86_64)' elif [ "${old_sha512sum}" == "${L10N_SHA512SUM}" ]; then echo_red_text 'Updating SHA512sum for firefox-l10n...' "${IRONFOX_SED}" -i -e "s|L10N_SHA512SUM='.*'|L10N_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}" @@ -471,10 +395,10 @@ function update_sha512sum() { } function validate_sha512sum() { - local readonly expected_sha512sum="$1" - local readonly file="$2" + expected_sha512sum="$1" + file="$2" - local readonly local_sha512sum=$(sha512sum "${file}" | "${IRONFOX_AWK}" '{print $1}') + local_sha512sum=$(sha512sum "${file}" | "${IRONFOX_AWK}" '{print $1}') if [ "${IRONFOX_GET_SOURCE_CHECKSUM_UPDATE}" == 1 ]; then update_sha512sum "${expected_sha512sum}" "${local_sha512sum}" "${file}" @@ -494,9 +418,9 @@ function validate_sha512sum() { } function clone_repo() { - local readonly url="$1" - local readonly path="$2" - local readonly revision="$3" + url="$1" + path="$2" + revision="$3" if [[ "${url}" == "" ]]; then echo_red_text "ERROR: URL missing for clone" @@ -535,8 +459,8 @@ function clone_repo() { } function download() { - local readonly url="$1" - local readonly filepath="$2" + local url="$1" + local filepath="$2" if [[ "${url}" == "" ]]; then echo_red_text "ERROR: URL is required (file: '${filepath}')" @@ -563,9 +487,9 @@ function download() { # Extract archives function extract() { - local readonly archive_path="$1" - local readonly target_path="$2" - local readonly temp_repo_name="$3" + local archive_path="$1" + local target_path="$2" + local temp_repo_name="$3" if ! [[ -f "${archive_path}" ]]; then echo_red_text "ERROR: Archive '${archive_path}' does not exist!" @@ -600,16 +524,16 @@ function extract() { ;; esac - local readonly top_input_dir=$(ls "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}") + local top_input_dir=$(ls "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}") cp -rf "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}/${top_input_dir}"/ "${target_path}" rm -rf "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}" } function download_and_extract() { - local readonly repo_name="$1" - local readonly url="$2" - local readonly path="$3" - local readonly expected_sha512sum="$4" + local repo_name="$1" + local url="$2" + local path="$3" + local expected_sha512sum="$4" if [[ -d "${path}" ]]; then echo_red_text "'${path}' already exists" @@ -623,17 +547,18 @@ function download_and_extract() { fi fi + local extension if [[ "${url}" =~ \.tar\.xz$ ]]; then - local readonly extension=".tar.xz" + extension=".tar.xz" elif [[ "${url}" =~ \.tar\.gz$ ]]; then - local readonly extension=".tar.gz" + extension=".tar.gz" elif [[ "${url}" =~ \.tar\.zst$ ]]; then - local readonly extension=".tar.zst" + extension=".tar.zst" else - local readonly extension=".zip" + extension=".zip" fi - local readonly repo_archive="${IRONFOX_DOWNLOADS}/${repo_name}${extension}" + local repo_archive="${IRONFOX_DOWNLOADS}/${repo_name}${extension}" download "${url}" "${repo_archive}" @@ -985,78 +910,6 @@ function get_jdk_17() { echo_green_text "SUCCESS: Set-up JDK (17) at ${IRONFOX_JDK_17}" } -# Get JDK (21) -function get_jdk_21() { - # Set our platform - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_21_PLATFORM='mac' - else - local readonly JDK_21_PLATFORM='linux' - fi - - # Set our platform architecture - if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then - local readonly JDK_21_ARCH='aarch64' - else - local readonly JDK_21_ARCH='x64' - fi - - # Set our checksum to verify - if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_21_SHA512SUM="${JDK_21_SHA512SUM_OSX_ARM64}" - else - local readonly JDK_21_SHA512SUM="${JDK_21_SHA512SUM_LINUX_ARM64}" - fi - else - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_21_SHA512SUM="${JDK_21_SHA512SUM_OSX_X86_64}" - else - local readonly JDK_21_SHA512SUM="${JDK_21_SHA512SUM_LINUX_X86_64}" - fi - fi - - echo_red_text 'Downloading JDK (21)...' - download_and_extract 'jdk-21' "https://github.com/adoptium/temurin21-binaries/releases/download/jdk-${JDK_21_VERSION}%2B${JDK_21_REVISION}/OpenJDK21U-jdk_${JDK_21_ARCH}_${JDK_21_PLATFORM}_hotspot_${JDK_21_VERSION}_${JDK_21_REVISION}.tar.gz" "${IRONFOX_JDK_21}" "${JDK_21_SHA512SUM}" - echo_green_text "SUCCESS: Set-up JDK (21) at ${IRONFOX_JDK_21}" -} - -# Get JDK (25) -function get_jdk_25() { - # Set our platform - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_25_PLATFORM='mac' - else - local readonly JDK_25_PLATFORM='linux' - fi - - # Set our platform architecture - if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then - local readonly JDK_25_ARCH='aarch64' - else - local readonly JDK_25_ARCH='x64' - fi - - # Set our checksum to verify - if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_25_SHA512SUM="${JDK_25_SHA512SUM_OSX_ARM64}" - else - local readonly JDK_25_SHA512SUM="${JDK_25_SHA512SUM_LINUX_ARM64}" - fi - else - if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then - local readonly JDK_25_SHA512SUM="${JDK_25_SHA512SUM_OSX_X86_64}" - else - local readonly JDK_25_SHA512SUM="${JDK_25_SHA512SUM_LINUX_X86_64}" - fi - fi - - echo_red_text 'Downloading JDK (25)...' - download_and_extract 'jdk-25' "https://github.com/adoptium/temurin25-binaries/releases/download/jdk-${JDK_25_VERSION}%2B${JDK_25_REVISION}/OpenJDK25U-jdk_${JDK_25_ARCH}_${JDK_25_PLATFORM}_hotspot_${JDK_25_VERSION}_${JDK_25_REVISION}.tar.gz" "${IRONFOX_JDK_25}" "${JDK_25_SHA512SUM}" - echo_green_text "SUCCESS: Set-up JDK (25) at ${IRONFOX_JDK_25}" -} - # Get microG function get_microg() { echo_red_text 'Downloading microG...' @@ -1108,7 +961,7 @@ function get_npm() { # Get Phoenix function get_phoenix() { echo_red_text 'Downloading Phoenix...' - download_and_extract 'phoenix' "https://gitlab.com/celenityy/Phoenix/-/archive/${PHOENIX_COMMIT}/Phoenix-${PHOENIX_COMMIT}.tar.gz" "${IRONFOX_PHOENIX}" "${PHOENIX_SHA512SUM}" + download_and_extract 'phoenix' "https://codeberg.org/celenity/Phoenix/archive/${PHOENIX_COMMIT}.tar.gz" "${IRONFOX_PHOENIX}" "${PHOENIX_SHA512SUM}" echo_green_text "SUCCESS: Set-up Phoenix at ${IRONFOX_PHOENIX}" } @@ -1301,8 +1154,8 @@ if [ "${IRONFOX_GET_SOURCE_ANDROID_NDK}" == 1 ]; then fi # This needs to run before we get the Android SDK -if [ "${IRONFOX_GET_SOURCE_JDK_25}" == 1 ]; then - get_jdk_25 +if [ "${IRONFOX_GET_SOURCE_JDK_17}" == 1 ]; then + get_jdk_17 fi if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK}" == 1 ]; then @@ -1358,14 +1211,6 @@ if [ "${IRONFOX_GET_SOURCE_GLEAN}" == 1 ]; then get_glean fi -if [ "${IRONFOX_GET_SOURCE_JDK_17}" == 1 ]; then - get_jdk_17 -fi - -if [ "${IRONFOX_GET_SOURCE_JDK_21}" == 1 ]; then - get_jdk_21 -fi - # These need to run before we get glean_parser and gyp if [ "${IRONFOX_GET_SOURCE_PYTHON}" == 1 ]; then get_python diff --git a/scripts/get_sources.sh b/scripts/get_sources.sh index 758b5960..01a36eab 100755 --- a/scripts/get_sources.sh +++ b/scripts/get_sources.sh @@ -3,29 +3,26 @@ set -euo pipefail # Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh # Set up target parameters if [[ -z "${1+x}" ]]; then - readonly target='all' + target='all' else - readonly target=$(echo "${1}" | "${IRONFOX_AWK}" '{print tolower($0)}') + target=$(echo "${1}" | "${IRONFOX_AWK}" '{print tolower($0)}') fi if [[ -z "${2+x}" ]]; then - readonly mode='download' + mode='download' else - readonly mode=$(echo "${2}" | "${IRONFOX_AWK}" '{print tolower($0)}') + mode=$(echo "${2}" | "${IRONFOX_AWK}" '{print tolower($0)}') fi # Get sources -readonly IRONFOX_FROM_SOURCES=1 -export IRONFOX_FROM_SOURCES +export IRONFOX_FROM_SOURCES=1 if [ "${IRONFOX_LOG_SOURCES}" == 1 ]; then - readonly SOURCES_LOG_FILE="${IRONFOX_LOG_DIR}/get_sources.log" + SOURCES_LOG_FILE="${IRONFOX_LOG_DIR}/get_sources.log" # If the log file already exists, remove it if [ -f "${SOURCES_LOG_FILE}" ]; then diff --git a/scripts/noop_mozilla_endpoints.sh b/scripts/noop_mozilla_endpoints.sh index ff72fff9..4796fa8a 100755 --- a/scripts/noop_mozilla_endpoints.sh +++ b/scripts/noop_mozilla_endpoints.sh @@ -2,29 +2,22 @@ set -euo pipefail -# Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi -source $(dirname $0)/env.sh - -# Include utilities -source "${IRONFOX_UTILS}" +source "$(dirname $0)/utilities.sh" function noop_mozilla_endpoints() { - local readonly endpoint="$1" - local readonly dir="$2" + local endpoint="$1" + local dir="$2" # Find files containing the endpoint - local readonly files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}[^\"']*\"" -e "'${endpoint}[^\"']*'") - local readonly files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}/[^\"']*\"" -e "'${endpoint}/[^\"']*'") - local readonly files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}.[^\"']*\"" -e "'${endpoint}.[^\"']*'") - local readonly http_files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}[^\"']*\"" -e "'http://${endpoint}[^\"']*'") - local readonly http_files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}/[^\"']*\"" -e "'http://${endpoint}/[^\"']*'") - local readonly http_files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}.[^\"']*\"" -e "'http://${endpoint}.[^\"']*'") - local readonly https_files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}[^\"']*\"" -e "'https://${endpoint}[^\"']*'") - local readonly https_files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}/[^\"']*\"" -e "'https://${endpoint}/[^\"']*'") - local readonly https_files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}.[^\"']*\"" -e "'https://${endpoint}.[^\"']*'") + local files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}[^\"']*\"" -e "'${endpoint}[^\"']*'") + local files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}/[^\"']*\"" -e "'${endpoint}/[^\"']*'") + local files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"${endpoint}.[^\"']*\"" -e "'${endpoint}.[^\"']*'") + local http_files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}[^\"']*\"" -e "'http://${endpoint}[^\"']*'") + local http_files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}/[^\"']*\"" -e "'http://${endpoint}/[^\"']*'") + local http_files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"http://${endpoint}.[^\"']*\"" -e "'http://${endpoint}.[^\"']*'") + local https_files=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}[^\"']*\"" -e "'https://${endpoint}[^\"']*'") + local https_files_slash=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}/[^\"']*\"" -e "'https://${endpoint}/[^\"']*'") + local https_files_period=$(grep -rnlI --exclude=*.json --exclude=*.md --exclude=*.swift --exclude-dir=androidTest --exclude-dir=docs --exclude-dir=test --exclude-dir=tests "${dir}" -e "\"https://${endpoint}.[^\"']*\"" -e "'https://${endpoint}.[^\"']*'") # Check if any files were found and modify them if [ -n "${files}" ]; then diff --git a/scripts/patches.sh b/scripts/patches.sh index 41abed6b..c314b7a5 100644 --- a/scripts/patches.sh +++ b/scripts/patches.sh @@ -3,30 +3,28 @@ set -euo pipefail # Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -readonly RED="\033[0;31m" -readonly GREEN="\033[0;32m" -readonly NC="\033[0m" +RED="\033[0;31m" +GREEN="\033[0;32m" +NC="\033[0m" declare -a PATCH_CMD -readonly PATCH_CMD=(patch -p1 -f --fuzz=3 --no-backup-if-mismatch) +PATCH_CMD=(patch -p1 -f --fuzz=3 --no-backup-if-mismatch) declare -a PATCH_FILES declare -a AS_PATCH_FILES declare -a GLEAN_PATCH_FILES declare -a UP_AC_PATCH_FILES -readonly PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/patches.yaml)) -readonly AS_PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/a-s-patches.yaml)) -readonly GLEAN_PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/glean-patches.yaml)) -readonly UP_AC_PATCH_FILES=($(yq '.patches[].file' "${IRONFOX_UP_AC}"/patches/patches.yaml)) +PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/patches.yaml)) +AS_PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/a-s-patches.yaml)) +GLEAN_PATCH_FILES=($(yq '.patches[].file' "$(dirname "$0")"/glean-patches.yaml)) +UP_AC_PATCH_FILES=($(yq '.patches[].file' "${IRONFOX_UP_AC}"/patches/patches.yaml)) -function check_patch() { - local readonly patch="${IRONFOX_PATCHES}/$1" +check_patch() { + patch="${IRONFOX_PATCHES}/$1" if ! [[ -f "${patch}" ]]; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" echo "'${patch}' does not exist or is not a file" @@ -40,8 +38,8 @@ function check_patch() { fi } -function up_ac_check_patch() { - local readonly patch="${IRONFOX_UP_AC}/patches/$1" +up_ac_check_patch() { + patch="${IRONFOX_UP_AC}/patches/$1" if ! [[ -f "${patch}" ]]; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" echo "'${patch}' does not exist or is not a file" @@ -55,7 +53,7 @@ function up_ac_check_patch() { fi } -function check_patches() { +check_patches() { for patch in "${PATCH_FILES[@]}"; do if ! check_patch "${patch}"; then return 1 @@ -63,7 +61,7 @@ function check_patches() { done } -function a-s_check_patches() { +a-s_check_patches() { for patch in "${AS_PATCH_FILES[@]}"; do if ! check_patch "${patch}"; then return 1 @@ -71,7 +69,7 @@ function a-s_check_patches() { done } -function glean_check_patches() { +glean_check_patches() { for patch in "${GLEAN_PATCH_FILES[@]}"; do if ! check_patch "${patch}"; then return 1 @@ -79,7 +77,7 @@ function glean_check_patches() { done } -function up_ac_check_patches() { +up_ac_check_patches() { for patch in "${UP_AC_PATCH_FILES[@]}"; do if ! up_ac_check_patch "${patch}"; then return 1 @@ -87,7 +85,7 @@ function up_ac_check_patches() { done } -function test_patches() { +test_patches() { for patch in "${PATCH_FILES[@]}"; do if ! check_patch "${patch}" >/dev/null 2>&1; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -97,7 +95,7 @@ function test_patches() { done } -function a-s_test_patches() { +a-s_test_patches() { for patch in "${AS_PATCH_FILES[@]}"; do if ! check_patch "${patch}" >/dev/null 2>&1; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -107,7 +105,7 @@ function a-s_test_patches() { done } -function glean_test_patches() { +glean_test_patches() { for patch in "${GLEAN_PATCH_FILES[@]}"; do if ! check_patch "${patch}" >/dev/null 2>&1; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -117,7 +115,7 @@ function glean_test_patches() { done } -function up_ac_test_patches() { +up_ac_test_patches() { for patch in "${UP_AC_PATCH_FILES[@]}"; do if ! up_ac_check_patch "${patch}" >/dev/null 2>&1; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -127,23 +125,23 @@ function up_ac_test_patches() { done } -function apply_patch() { - local readonly name="$1" +apply_patch() { + name="$1" echo "Applying patch: ${name}" check_patch "${name}" || return 1 "${PATCH_CMD[@]}" <"${IRONFOX_PATCHES}/${name}" return $? } -function up_ac_apply_patch() { - local readonly name="$1" +up_ac_apply_patch() { + name="$1" echo "Applying patch: ${name}" up_ac_check_patch "${name}" || return 1 "${PATCH_CMD[@]}" <"${IRONFOX_UP_AC}/patches/${name}" return $? } -function apply_patches() { +apply_patches() { for patch in "${PATCH_FILES[@]}"; do if ! apply_patch "${patch}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -153,7 +151,7 @@ function apply_patches() { done } -function a-s_apply_patches() { +a-s_apply_patches() { for patch in "${AS_PATCH_FILES[@]}"; do if ! apply_patch "${patch}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -163,7 +161,7 @@ function a-s_apply_patches() { done } -function glean_apply_patches() { +glean_apply_patches() { for patch in "${GLEAN_PATCH_FILES[@]}"; do if ! apply_patch "${patch}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -173,7 +171,7 @@ function glean_apply_patches() { done } -function up_ac_apply_patches() { +up_ac_apply_patches() { for patch in "${UP_AC_PATCH_FILES[@]}"; do if ! up_ac_apply_patch "${patch}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -183,32 +181,32 @@ function up_ac_apply_patches() { done } -function list_patches() { +list_patches() { for patch in "${PATCH_FILES[@]}"; do echo "${patch}" done } -function a-s_list_patches() { +a-s_list_patches() { for patch in "${AS_PATCH_FILES[@]}"; do echo "${patch}" done } -function glean_list_patches() { +glean_list_patches() { for patch in "${GLEAN_PATCH_FILES[@]}"; do echo "${patch}" done } -function up_ac_list_patches() { +up_ac_list_patches() { for patch in "${UP_AC_PATCH_FILES[@]}"; do echo "${patch}" done } -function slugify() { - local readonly input="$1" +slugify() { + local input="$1" echo "${input}" | \ tr '[:upper:]' '[:lower:]' | \ "${IRONFOX_SED}" -E 's/[^a-z0-9]+/-/g' | \ @@ -217,10 +215,10 @@ function slugify() { # Function to rebase a single patch file atomically # Usage: rebase_patch -function rebase_patch() { - local readonly compatible_tag="$1" - local readonly target_tag="$2" - local readonly patch_file="$3" +rebase_patch() { + local compatible_tag="$1" + local target_tag="$2" + local patch_file="$3" # Validate inputs if [[ -z "${compatible_tag}" || -z "${target_tag}" || -z "${patch_file}" ]]; then @@ -237,15 +235,18 @@ function rebase_patch() { fi # Store original state for rollback - local readonly original_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) + local original_branch + original_branch=$(git rev-parse --abbrev-ref HEAD 2>/dev/null) - local readonly original_stash_count=$(git stash list | wc -l) + local original_stash_count + original_stash_count=$(git stash list | wc -l) - local readonly patch_name=$(basename "${patch_file}" .patch) + local patch_name + patch_name=$(basename "${patch_file}" .patch) - local readonly branch_name="rebase-${patch_name}" + local branch_name="rebase-${patch_name}" - function cleanup_and_rollback() { + cleanup_and_rollback() { echo "Error occurred, rolling back changes..." >&2 # Check if we're in the middle of a rebase and abort it @@ -265,7 +266,8 @@ function rebase_patch() { git branch -D "${branch_name}" 2>/dev/null # Restore stashed changes if any were created - local readonly current_stash_count=$(git stash list | wc -l) + local current_stash_count + current_stash_count=$(git stash list | wc -l) if [[ "${current_stash_count}" -gt "${original_stash_count}" ]]; then git stash pop 2>/dev/null fi @@ -334,7 +336,8 @@ function rebase_patch() { fi # Commit the changes - local readonly commit_message="Apply patch $(basename "${patch_file}") - rebased to ${target_tag}" + local commit_message + commit_message="Apply patch $(basename "${patch_file}") - rebased to ${target_tag}" echo "Committing changes..." if ! git commit -m "${commit_message}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patch}")" @@ -354,7 +357,8 @@ function rebase_patch() { # Update the patch file using git format-patch echo "Updating patch file..." - local readonly temp_patch=$(mktemp) + local temp_patch + temp_patch=$(mktemp) if ! git format-patch -1 --stdout >"${temp_patch}"; then printf "${RED}✗ %-45s: FAILED${NC}\n" "$(basename "${patc}h")" echo "Failed to generate new patch" >&2 @@ -382,7 +386,8 @@ function rebase_patch() { git branch -D "${branch_name}" # Restore stashed changes if any - local readonly current_stash_count=$(git stash list | wc -l) + local current_stash_count + current_stash_count=$(git stash list | wc -l) if [[ "${current_stash_count}" -gt "${original_stash_count}" ]]; then echo "Restoring stashed changes..." git stash pop @@ -395,9 +400,9 @@ function rebase_patch() { # Function to rebase multiple patch files # Usage: rebase_patches [patch_file2] [...] -function rebase_patches() { - local readonly compatible_tag="$1" - local readonly target_tag="$2" +rebase_patches() { + local compatible_tag="$1" + local target_tag="$2" # Validate inputs if [[ -z "${compatible_tag}" || -z "${target_tag}" ]]; then diff --git a/scripts/prebuild-if.sh b/scripts/prebuild-if.sh index 73392ca1..3b8dd5a2 100755 --- a/scripts/prebuild-if.sh +++ b/scripts/prebuild-if.sh @@ -23,11 +23,9 @@ set -euo pipefail # Set-up our environment +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh -# Include utilities -source "${IRONFOX_UTILS}" - if [[ -z "${IRONFOX_FROM_PREBUILD+x}" ]]; then echo_red_text "ERROR: Do not call prebuild-if.sh directly. Instead, use prebuild.sh." >&1 exit 1 @@ -51,9 +49,9 @@ function localize_maven() { # Applies the overlay files in the given directory # to the current directory function apply_overlay() { - local readonly source_dir="$1" + source_dir="$1" find "${source_dir}" -type f| while read -r src; do - local target="${src#"${source_dir}"}" + target="${src#"${source_dir}"}" mkdir -vp "$(dirname "${target}")" cp -vrf "${src}" "${target}" done @@ -73,7 +71,7 @@ if [ ! -d "${IRONFOX_ANDROID_NDK}" ]; then exit 1 fi -readonly JAVA_VER=$("${IRONFOX_JAVA}" -version 2>&1 | "${IRONFOX_AWK}" -F '"' '/version/ {print $2}' | "${IRONFOX_AWK}" -F '.' '{sub("^$", "0", $2); print $1$2}') +JAVA_VER=$("${IRONFOX_JAVA}" -version 2>&1 | "${IRONFOX_AWK}" -F '"' '/version/ {print $2}' | "${IRONFOX_AWK}" -F '.' '{sub("^$", "0", $2); print $1$2}') [ "${JAVA_VER}" -ge 15 ] || { echo_red_text "Java 17 or newer must be set as default JDK" exit 1 @@ -1016,7 +1014,7 @@ rm -vf mobile/android/fenix/app/src/nightly/res/mipmap-xxxhdpi/ic_launcher.webp if [[ -n "${FDROID_BUILD+x}" ]]; then # Patch the LLVM source code # Search clang- in https://android.googlesource.com/platform/ndk/+/refs/tags/ndk-r28b/ndk/toolchains.py - readonly LLVM_SVN='530567' + LLVM_SVN='530567' "${IRONFOX_PYTHON}" "${toolchain_utils}/llvm_tools/patch_manager.py" \ --svn_version $LLVM_SVN \ --patch_metadata_file "${llvm_android}/patches/PATCHES.json" \ diff --git a/scripts/prebuild.sh b/scripts/prebuild.sh index 09906e01..30eaf83f 100755 --- a/scripts/prebuild.sh +++ b/scripts/prebuild.sh @@ -3,16 +3,13 @@ set -euo pipefail # Set-up our environment -if [[ -z "${IRONFOX_SET_ENVS+x}" ]]; then - bash -x $(dirname $0)/env.sh -fi +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh # Prepare to build IronFox -readonly IRONFOX_FROM_PREBUILD=1 -export IRONFOX_FROM_PREBUILD +export IRONFOX_FROM_PREBUILD=1 if [ "${IRONFOX_LOG_PREBUILD}" == 1 ]; then - readonly PREBUILD_LOG_FILE="${IRONFOX_LOG_DIR}/prebuild.log" + PREBUILD_LOG_FILE="${IRONFOX_LOG_DIR}/prebuild.log" # If the log file already exists, remove it if [ -f "${PREBUILD_LOG_FILE}" ]; then diff --git a/scripts/run-docker.sh b/scripts/run-docker.sh index 13f19867..69402c70 100755 --- a/scripts/run-docker.sh +++ b/scripts/run-docker.sh @@ -83,19 +83,19 @@ if [[ "${PARSE_COMMAND}" == true ]]; then COMMAND_ARGS=("$@") fi -function image_exists() { +image_exists() { docker image inspect "${IMAGE_NAME}" >/dev/null 2>&1 } -function container_exists() { +container_exists() { docker container inspect "${CONTAINER_NAME}" >/dev/null 2>&1 } -function container_running() { +container_running() { [[ "$(docker container inspect -f '{{.State.Running}}' "${CONTAINER_NAME}" 2>/dev/null)" == "true" ]] } -function build_image() { +build_image() { echo "Building Docker image '${IMAGE_NAME}'..." if [[ ! -f "${DOCKERFILE_PATH}" ]]; then echo "Error: Dockerfile not found at ${DOCKERFILE_PATH}" @@ -105,7 +105,7 @@ function build_image() { echo "Docker image '${IMAGE_NAME}' built successfully." } -function create_container() { +create_container() { echo "Creating container '${CONTAINER_NAME}'..." local docker_cmd=( @@ -120,14 +120,14 @@ function create_container() { echo "Container '${CONTAINER_NAME}' created successfully." } -function start_container() { +start_container() { if ! container_running; then echo "Starting container '${CONTAINER_NAME}'..." docker start "${CONTAINER_NAME}" fi } -function execute_in_container() { +execute_in_container() { local cmd=("$@") if [[ ${#cmd[@]} -eq 0 ]]; then @@ -139,7 +139,7 @@ function execute_in_container() { fi } -function main() { +main() { echo "IronFox" echo "========================" diff --git a/scripts/sign.sh b/scripts/sign.sh index 67d4deed..431adb3e 100755 --- a/scripts/sign.sh +++ b/scripts/sign.sh @@ -3,12 +3,10 @@ set -euo pipefail # Set-up our environment +bash -x $(dirname $0)/env.sh source $(dirname $0)/env.sh source "${IRONFOX_ENV_BUILD}" -# Include utilities -source "${IRONFOX_UTILS}" - # Include version info source "${IRONFOX_VERSIONS}" @@ -18,13 +16,13 @@ export PATH="${IRONFOX_JAVA_HOME}/bin:${PATH}" # Functions function sign_apk() { - local target="$1" - local APK_IN="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${target}-unsigned.apk" + target="$1" + APK_IN="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${target}-unsigned.apk" if [ "${IRONFOX_CI}" == 1 ]; then - local APK_OUT="${IRONFOX_APK_ARTIFACTS}/IronFox-v${IRONFOX_VERSION}-${target}.apk" + APK_OUT="${IRONFOX_APK_ARTIFACTS}/IronFox-v${IRONFOX_VERSION}-${target}.apk" else - local APK_OUT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${target}-signed.apk" + APK_OUT="${IRONFOX_OUTPUTS_APK}/ironfox-${IRONFOX_CHANNEL}-${target}-signed.apk" fi "${IRONFOX_APKSIGNER}" sign \ @@ -63,12 +61,12 @@ function sign_universal() { function sign_bundle() { echo_red_text 'Building signed bundleset...' - local AAB_IN="${IRONFOX_OUTPUTS_FENIX_AAB}" + AAB_IN="${IRONFOX_OUTPUTS_FENIX_AAB}" if [ "${IRONFOX_CI}" == 1 ]; then - local APKS_OUT="${IRONFOX_APKS_ARTIFACTS}/IronFox-v${IRONFOX_VERSION}.apks" + APKS_OUT="${IRONFOX_APKS_ARTIFACTS}/IronFox-v${IRONFOX_VERSION}.apks" else - local APKS_OUT="${IRONFOX_OUTPUTS_FENIX_APKS}" + APKS_OUT="${IRONFOX_OUTPUTS_FENIX_APKS}" fi "${IRONFOX_BUNDLETOOL}" build-apks \ diff --git a/scripts/utilities.sh b/scripts/utilities.sh index deeb8d0d..f81bfd21 100644 --- a/scripts/utilities.sh +++ b/scripts/utilities.sh @@ -1,7 +1,5 @@ #!/bin/bash -set -euo pipefail - # Utility functions for frequently performed tasks # This file MUST NOT contain anything other than function definitions.