fix: scripts (for now)

Signed-off-by: celenity <celenity@celenity.dev>
This commit is contained in:
celenity
2026-04-02 21:31:13 +00:00
parent a975f2ca23
commit 8f9b3d8040
18 changed files with 531 additions and 1114 deletions

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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}")"

View File

@@ -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

View File

@@ -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"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -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}"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 <compatible_tag> <target_tag> <patch_file_path>
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 <compatible_tag> <target_tag> <patch_file1> [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

View File

@@ -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" \

View File

@@ -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

View File

@@ -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 "========================"

View File

@@ -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 \

View File

@@ -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.