Files
IronFox/scripts/ci-build-if.sh
Akash Yadav e4cc51b7c8 fix: format and lint with shfmt + shellcheck
Signed-off-by: Akash Yadav <contact@itsaky.com>
2026-07-31 00:39:10 +00:00

106 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
## This script is expected to be executed in a CI environment, or possibly in our Docker image instance
## DO NOT execute this manually!
set -euo pipefail
# Set-up our environment
if [[ -z "${IRONFOX_CI+x}" ]]; then
export IRONFOX_CI=1
fi
source $(dirname $0)/env.sh
# Include utilities
source "${IRONFOX_UTILS}"
if [[ -z "${IRONFOX_FROM_CI_BUILD+x}" ]]; then
echo_red_text 'ERROR: Do not call ci-build-if.sh directly. Instead, use ci-build.sh.' >&1
exit 1
fi
# Set verbosity
if [[ "${IRONFOX_VERBOSE}" == 1 ]]; then
set -x
else
set +x
fi
readonly ci_build_arch="$1"
case "${ci_build_arch}" in
arm64 | arm | x86_64 | bundle) ;;
*)
echo_red_text "Unknown build variant: '${ci_build_arch}'." >&2
exit 1
;;
esac
readonly ci_build_project="$2"
# (For now, we only want to build Fenix and GeckoView directly from CI)
case "${ci_build_project}" in
fenix | geckoview) ;;
*)
echo_red_text "Unknown build project: '${ci_build_project}'." >&2
exit 1
;;
esac
if [[ "${ci_build_project}" == 'fenix' ]]; then
# Fail-fast in case the signing key is unavailable or empty file
verify_file_with_env "${IRONFOX_ANDROID_KEYSTORE}" 'IRONFOX_ANDROID_KEYSTORE' || exit 1
fi
# Get sources
if [[ "${ci_build_project}" == 'geckoview' ]]; then
# If we're only building GeckoView, we don't need to download all sources
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'uv'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'python'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-ndk'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'jdk-25'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-sdk'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-sdk-build-tools'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-sdk-platform'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-sdk-platform-36'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'android-sdk-platform-tools'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'rust'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'cbindgen'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'bundletool'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'firefox'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'jdk-17'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'jdk-21'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'gradle'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'gyp'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'microg'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'node'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'npm'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'phoenix'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 's3cmd'
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 'wasi'
else
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh"
/bin/bash "${IRONFOX_SCRIPTS}/get_sources.sh" 's3cmd'
# If we're building a Fenix bundle, we also need to download our GeckoView artifacts
if [[ "${ci_build_arch}" == 'bundle' ]]; then
/bin/bash "${IRONFOX_SCRIPTS}/ci-download-artifacts.sh" 'geckoview' 'arm64'
/bin/bash "${IRONFOX_SCRIPTS}/ci-download-artifacts.sh" 'geckoview' 'arm'
/bin/bash "${IRONFOX_SCRIPTS}/ci-download-artifacts.sh" 'geckoview' 'x86_64'
fi
fi
# Prepare sources
if [[ "${ci_build_project}" == 'geckoview' ]]; then
# If we're only building GeckoView, we don't need to prepare all sources
/bin/bash "${IRONFOX_SCRIPTS}/prebuild.sh" 'firefox'
/bin/bash "${IRONFOX_SCRIPTS}/prebuild.sh" 'android-sdk'
/bin/bash "${IRONFOX_SCRIPTS}/prebuild.sh" 'microg'
/bin/bash "${IRONFOX_SCRIPTS}/prebuild.sh" 'rust'
else
/bin/bash "${IRONFOX_SCRIPTS}/prebuild.sh"
fi
# Build
/bin/bash "${IRONFOX_SCRIPTS}/build.sh" "${ci_build_arch}" "${ci_build_project}"