mirror of
https://github.com/ironfox-oss/IronFox.git
synced 2026-04-17 13:37:36 -04:00
1263 lines
54 KiB
Bash
Executable File
1263 lines
54 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
# Set-up our environment
|
|
bash -x $(dirname $0)/env.sh
|
|
source $(dirname $0)/env.sh
|
|
|
|
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
|
|
|
|
target="$1"
|
|
mode="$2"
|
|
|
|
# Set-up target parameters
|
|
IRONFOX_GET_SOURCE_ANDROID_NDK=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS_35=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_36=0
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_TOOLS=0
|
|
IRONFOX_GET_SOURCE_AS=0
|
|
IRONFOX_GET_SOURCE_BUNDLETOOL=0
|
|
IRONFOX_GET_SOURCE_CBINDGEN=0
|
|
IRONFOX_GET_SOURCE_GECKO=0
|
|
IRONFOX_GET_SOURCE_GECKO_L10N=0
|
|
IRONFOX_GET_SOURCE_GLEAN=0
|
|
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_MICROG=0
|
|
IRONFOX_GET_SOURCE_NODE=0
|
|
IRONFOX_GET_SOURCE_NPM=0
|
|
IRONFOX_GET_SOURCE_PHOENIX=0
|
|
IRONFOX_GET_SOURCE_PIP=0
|
|
IRONFOX_GET_SOURCE_PREBUILDS=0
|
|
IRONFOX_GET_SOURCE_PYTHON=0
|
|
IRONFOX_GET_SOURCE_RUST=0
|
|
IRONFOX_GET_SOURCE_UP_AC=0
|
|
IRONFOX_GET_SOURCE_UV=0
|
|
|
|
if [ "${target}" == 'android-ndk' ]; then
|
|
# Get Android NDK
|
|
IRONFOX_GET_SOURCE_ANDROID_NDK=1
|
|
elif [ "${target}" == 'android-sdk' ]; then
|
|
# Get Android SDK
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK=1
|
|
elif [ "${target}" == 'android-sdk-build-tools' ]; then
|
|
# Get Android SDK Build Tools (latest)
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS=1
|
|
elif [ "${target}" == 'android-sdk-build-tools-35' ]; then
|
|
# Get Android SDK Build Tools (35) (Required by Glean)
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS_35=1
|
|
elif [ "${target}" == 'android-sdk-platform' ]; then
|
|
# Get Android SDK Platform (latest)
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM=1
|
|
elif [ "${target}" == 'android-sdk-platform-36' ]; then
|
|
# Get Android SDK Platform (36)
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_36=1
|
|
elif [ "${target}" == 'android-sdk-platform-tools' ]; then
|
|
# Get Android SDK Platform Tools
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_TOOLS=1
|
|
elif [ "${target}" == 'as' ]; then
|
|
# Get Application Services
|
|
IRONFOX_GET_SOURCE_AS=1
|
|
elif [ "${target}" == 'bundletool' ]; then
|
|
# Get + set-up Bundletool
|
|
IRONFOX_GET_SOURCE_BUNDLETOOL=1
|
|
elif [ "${target}" == 'cbindgen' ]; then
|
|
# Get cbindgen
|
|
IRONFOX_GET_SOURCE_CBINDGEN=1
|
|
elif [ "${target}" == 'firefox' ]; then
|
|
# Get Firefox (Gecko/mozilla-central)
|
|
IRONFOX_GET_SOURCE_GECKO=1
|
|
elif [ "${target}" == 'firefox-l10n' ]; then
|
|
# Get firefox-l10n
|
|
IRONFOX_GET_SOURCE_GECKO_L10N=1
|
|
elif [ "${target}" == 'glean' ]; then
|
|
# Get Glean
|
|
IRONFOX_GET_SOURCE_GLEAN=1
|
|
elif [ "${target}" == 'glean-parser' ]; then
|
|
# Get glean-parser
|
|
IRONFOX_GET_SOURCE_GLEAN_PARSER=1
|
|
elif [ "${target}" == 'gradle' ]; then
|
|
# Get + set-up Gradle
|
|
IRONFOX_GET_SOURCE_GRADLE=1
|
|
elif [ "${target}" == 'gyp' ]; then
|
|
# Get gyp-next
|
|
IRONFOX_GET_SOURCE_GYP=1
|
|
elif [ "${target}" == 'jdk-17' ]; then
|
|
# Get OpenJDK (17) (Required by GeckoView)
|
|
IRONFOX_GET_SOURCE_JDK_17=1
|
|
elif [ "${target}" == 'microg' ]; then
|
|
# Get microG
|
|
IRONFOX_GET_SOURCE_MICROG=1
|
|
elif [ "${target}" == 'node' ]; then
|
|
# Get + set-up Node.js
|
|
IRONFOX_GET_SOURCE_NODE=1
|
|
elif [ "${target}" == 'npm' ]; then
|
|
# Get + set-up npm
|
|
IRONFOX_GET_SOURCE_NPM=1
|
|
elif [ "${target}" == 'phoenix' ]; then
|
|
# Get Phoenix
|
|
IRONFOX_GET_SOURCE_PHOENIX=1
|
|
elif [ "${target}" == 'prebuilds' ]; then
|
|
# Get IronFox prebuilds
|
|
IRONFOX_GET_SOURCE_PREBUILDS=1
|
|
elif [ "${target}" == 'pip' ]; then
|
|
# Get + set-up pip
|
|
IRONFOX_GET_SOURCE_PIP=1
|
|
elif [ "${target}" == 'python' ]; then
|
|
# Get Python
|
|
IRONFOX_GET_SOURCE_PYTHON=1
|
|
elif [ "${target}" == 'rust' ]; then
|
|
# Get + set-up rust/cargo
|
|
IRONFOX_GET_SOURCE_RUST=1
|
|
elif [ "${target}" == 'up-ac' ]; then
|
|
# Get UnifiedPush-AC
|
|
IRONFOX_GET_SOURCE_UP_AC=1
|
|
elif [ "${target}" == 'uv' ]; then
|
|
# Get + set-up uv
|
|
IRONFOX_GET_SOURCE_UV=1
|
|
elif [ "${target}" == 'all' ]; then
|
|
# If no argument is specified (or argument is set to "all"), just get everything
|
|
IRONFOX_GET_SOURCE_ANDROID_NDK=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS_35=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_36=1
|
|
IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_TOOLS=1
|
|
IRONFOX_GET_SOURCE_AS=1
|
|
IRONFOX_GET_SOURCE_BUNDLETOOL=1
|
|
IRONFOX_GET_SOURCE_CBINDGEN=1
|
|
IRONFOX_GET_SOURCE_GECKO=1
|
|
IRONFOX_GET_SOURCE_GECKO_L10N=1
|
|
IRONFOX_GET_SOURCE_GLEAN=1
|
|
IRONFOX_GET_SOURCE_GLEAN_PARSER=1
|
|
IRONFOX_GET_SOURCE_GRADLE=1
|
|
IRONFOX_GET_SOURCE_GYP=1
|
|
IRONFOX_GET_SOURCE_JDK_17=1
|
|
IRONFOX_GET_SOURCE_MICROG=1
|
|
IRONFOX_GET_SOURCE_NODE=1
|
|
IRONFOX_GET_SOURCE_NPM=1
|
|
IRONFOX_GET_SOURCE_PHOENIX=1
|
|
IRONFOX_GET_SOURCE_PIP=1
|
|
IRONFOX_GET_SOURCE_PREBUILDS=1
|
|
IRONFOX_GET_SOURCE_PYTHON=1
|
|
IRONFOX_GET_SOURCE_RUST=1
|
|
IRONFOX_GET_SOURCE_UP_AC=1
|
|
IRONFOX_GET_SOURCE_UV=1
|
|
else
|
|
echo_red_text "ERROR: Invalid target: ${target}\n You must enter one of the following:"
|
|
echo 'All: all (Default)'
|
|
echo 'Android NDK: android-ndk'
|
|
echo 'Android SDK: android-sdk'
|
|
echo 'Android SDK Build Tools (latest): android-sdk-build-tools'
|
|
echo 'Android SDK Build Tools (35.0.0): android-sdk-build-tools-35'
|
|
echo 'Android SDK Platform (latest): android-sdk-platform'
|
|
echo 'Android SDK Platform (36): android-sdk-platform-36'
|
|
echo 'Android SDK Platform Tools: android-sdk-platform-tools'
|
|
echo 'Application Services: as'
|
|
echo 'Bundletool: bundletool'
|
|
echo 'cbindgen: cbindgen'
|
|
echo 'Firefox (Gecko/mozilla-central): firefox'
|
|
echo 'firefox-l10n (l10n-central): firefox-l10n'
|
|
echo 'Glean: glean'
|
|
echo 'Glean Parser: glean-parser'
|
|
echo 'Gradle: gradle'
|
|
echo 'GYP: gyp'
|
|
echo 'JDK (17): jdk-17'
|
|
echo 'microG: microg'
|
|
echo 'Node.js: node'
|
|
echo 'npm: npm'
|
|
echo 'Phoenix: phoenix'
|
|
echo 'pip: pip'
|
|
echo 'Prebuilds: prebuilds'
|
|
echo 'Python: python'
|
|
echo 'Rust: rust'
|
|
echo 'UnifiedPush-AC: up-ac'
|
|
echo 'uv: uv'
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# If the 'checksum-update' argument is specified, in addition to downloading the dependencies as usual,
|
|
## we're also updating their checksums
|
|
IRONFOX_GET_SOURCE_CHECKSUM_UPDATE=0
|
|
if [ "${mode}" == 'checksum-update' ]; then
|
|
if [ "${IRONFOX_CI}" != 1 ]; then
|
|
IRONFOX_GET_SOURCE_CHECKSUM_UPDATE=1
|
|
else
|
|
echo_red_text 'ERROR: CI should never automatically update checksums.'
|
|
exit 1
|
|
fi
|
|
elif [ "${mode}" != 'download' ]; then
|
|
echo_red_text "ERROR: Invalid mode: ${mode}\n You must enter one of the following:"
|
|
echo 'Download: download (Default)'
|
|
echo 'Download + update checksums: checksum-update'
|
|
exit 1
|
|
fi
|
|
|
|
# Include version info
|
|
source "${IRONFOX_VERSIONS}"
|
|
|
|
# Function to automate updating SHA512sums of dependencies
|
|
function update_sha512sum() {
|
|
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)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_NDK_SHA512SUM_LINUX='.*'|ANDROID_NDK_SHA512SUM_LINUX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android NDK (Linux)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_NDK_SHA512SUM_OSX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android NDK (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_NDK_SHA512SUM_OSX='.*'|ANDROID_NDK_SHA512SUM_OSX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android NDK (OS X)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_SHA512SUM_LINUX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_SHA512SUM_LINUX='.*'|ANDROID_SDK_SHA512SUM_LINUX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK (Linux)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_SHA512SUM_OSX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_SHA512SUM_OSX='.*'|ANDROID_SDK_SHA512SUM_OSX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK (OS X)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_BUILD_TOOLS_SHA512SUM_LINUX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Build Tools (latest) (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_BUILD_TOOLS_SHA512SUM_LINUX='.*'|ANDROID_SDK_BUILD_TOOLS_SHA512SUM_LINUX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Build Tools (latest) (Linux)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_BUILD_TOOLS_SHA512SUM_OSX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Build Tools (latest) (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_BUILD_TOOLS_SHA512SUM_OSX='.*'|ANDROID_SDK_BUILD_TOOLS_SHA512SUM_OSX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Build Tools (latest) (OS X)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_LINUX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Build Tools (35.0.0) (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_LINUX='.*'|ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_LINUX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Build Tools (35.0.0) (Linux)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_OSX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Build Tools (35.0.0) (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_OSX='.*'|ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_OSX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Build Tools (35.0.0) (OS X)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_LINUX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Platform Tools (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_LINUX='.*'|ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_LINUX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Platform Tools (Linux)'
|
|
elif [ "${old_sha512sum}" == "${ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_OSX}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Android SDK Platform Tools (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_OSX='.*'|ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_OSX='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Android SDK Platform Tools (OS X)'
|
|
elif [ "${old_sha512sum}" == "${APPSERVICES_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Application Services...'
|
|
"${IRONFOX_SED}" -i -e "s|APPSERVICES_SHA512SUM='.*'|APPSERVICES_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Application Services'
|
|
elif [ "${old_sha512sum}" == "${BUNDLETOOL_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Bundletool...'
|
|
"${IRONFOX_SED}" -i -e "s|BUNDLETOOL_SHA512SUM='.*'|BUNDLETOOL_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Bundletool'
|
|
elif [ "${old_sha512sum}" == "${BUNDLETOOL_REPO_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Bundletool (repository)...'
|
|
"${IRONFOX_SED}" -i -e "s|BUNDLETOOL_REPO_SHA512SUM='.*'|BUNDLETOOL_REPO_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Bundletool (repository)'
|
|
elif [ "${old_sha512sum}" == "${CBINDGEN_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for cbindgen...'
|
|
"${IRONFOX_SED}" -i -e "s|CBINDGEN_SHA512SUM='.*'|CBINDGEN_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for cbindgen'
|
|
elif [ "${old_sha512sum}" == "${FIREFOX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Firefox...'
|
|
"${IRONFOX_SED}" -i -e "s|FIREFOX_SHA512SUM='.*'|FIREFOX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Firefox'
|
|
elif [ "${old_sha512sum}" == "${GLEAN_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Glean...'
|
|
"${IRONFOX_SED}" -i -e "s|GLEAN_SHA512SUM='.*'|GLEAN_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Glean'
|
|
elif [ "${old_sha512sum}" == "${GLEAN_PARSER_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Glean Parser...'
|
|
"${IRONFOX_SED}" -i -e "s|GLEAN_PARSER_SHA512SUM='.*'|GLEAN_PARSER_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Glean Parser'
|
|
elif [ "${old_sha512sum}" == "${GMSCORE_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for microG...'
|
|
"${IRONFOX_SED}" -i -e "s|GMSCORE_SHA512SUM='.*'|GMSCORE_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for microG'
|
|
elif [ "${old_sha512sum}" == "${GRADLE_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for F-Droid Gradle script...'
|
|
"${IRONFOX_SED}" -i -e "s|GRADLE_SHA512SUM='.*'|GRADLE_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for F-Droid Gradle script'
|
|
elif [ "${old_sha512sum}" == "${GYP_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for GYP...'
|
|
"${IRONFOX_SED}" -i -e "s|GYP_SHA512SUM='.*'|GYP_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for GYP'
|
|
elif [ "${old_sha512sum}" == "${JDK_17_SHA512SUM_LINUX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for JDK (17) (Linux - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|JDK_17_SHA512SUM_LINUX_ARM64='.*'|JDK_17_SHA512SUM_LINUX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for JDK (17) (Linux - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${JDK_17_SHA512SUM_LINUX_X86_64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for JDK (17) (Linux - x86_64)...'
|
|
"${IRONFOX_SED}" -i -e "s|JDK_17_SHA512SUM_LINUX_X86_64='.*'|JDK_17_SHA512SUM_LINUX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for JDK (17) (Linux - x86_64)'
|
|
elif [ "${old_sha512sum}" == "${JDK_17_SHA512SUM_OSX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for JDK (17) (OS X - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|JDK_17_SHA512SUM_OSX_ARM64='.*'|JDK_17_SHA512SUM_OSX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for JDK (17) (OS X - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${JDK_17_SHA512SUM_OSX_X86_64}" ]; then
|
|
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}" == "${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}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for firefox-l10n'
|
|
elif [ "${old_sha512sum}" == "${NPM_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for npm...'
|
|
"${IRONFOX_SED}" -i -e "s|NPM_SHA512SUM='.*'|NPM_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for npm'
|
|
elif [ "${old_sha512sum}" == "${NVM_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for nvm...'
|
|
"${IRONFOX_SED}" -i -e "s|NVM_SHA512SUM='.*'|NVM_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for nvm'
|
|
elif [ "${old_sha512sum}" == "${PHOENIX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Phoenix...'
|
|
"${IRONFOX_SED}" -i -e "s|PHOENIX_SHA512SUM='.*'|PHOENIX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Phoenix'
|
|
elif [ "${old_sha512sum}" == "${PIP_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for pip...'
|
|
"${IRONFOX_SED}" -i -e "s|PIP_SHA512SUM='.*'|PIP_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for pip'
|
|
elif [ "${old_sha512sum}" == "${PYTHON_SHA512SUM_LINUX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Python (Linux - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|PYTHON_SHA512SUM_LINUX_ARM64='.*'|PYTHON_SHA512SUM_LINUX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Python (Linux - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${PYTHON_SHA512SUM_LINUX_X86_64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Python (Linux - x86_64)...'
|
|
"${IRONFOX_SED}" -i -e "s|PYTHON_SHA512SUM_LINUX_X86_64='.*'|PYTHON_SHA512SUM_LINUX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Python (Linux - x86_64)'
|
|
elif [ "${old_sha512sum}" == "${PYTHON_SHA512SUM_OSX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Python (OS X - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|PYTHON_SHA512SUM_OSX_ARM64='.*'|PYTHON_SHA512SUM_OSX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Python (OS X - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${PYTHON_SHA512SUM_OSX_X86_64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for Python (OS X - x86_64)...'
|
|
"${IRONFOX_SED}" -i -e "s|PYTHON_SHA512SUM_OSX_X86_64='.*'|PYTHON_SHA512SUM_OSX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for Python (OS X - x86_64)'
|
|
elif [ "${old_sha512sum}" == "${RUSTUP_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for rustup...'
|
|
"${IRONFOX_SED}" -i -e "s|RUSTUP_SHA512SUM='.*'|RUSTUP_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for rustup'
|
|
elif [ "${old_sha512sum}" == "${UV_SHA512SUM_LINUX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uv (Linux - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|UV_SHA512SUM_LINUX_ARM64='.*'|UV_SHA512SUM_LINUX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uv (Linux - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${UV_SHA512SUM_LINUX_X86_64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uv (Linux - x86_64)...'
|
|
"${IRONFOX_SED}" -i -e "s|UV_SHA512SUM_LINUX_X86_64='.*'|UV_SHA512SUM_LINUX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uv (Linux - x86_64)'
|
|
elif [ "${old_sha512sum}" == "${UV_SHA512SUM_OSX_ARM64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uv (OS X - ARM64)...'
|
|
"${IRONFOX_SED}" -i -e "s|UV_SHA512SUM_OSX_ARM64='.*'|UV_SHA512SUM_OSX_ARM64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uv (OS X - ARM64)'
|
|
elif [ "${old_sha512sum}" == "${UV_SHA512SUM_OSX_X86_64}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uv (OS X - x86_64)...'
|
|
"${IRONFOX_SED}" -i -e "s|UV_SHA512SUM_OSX_X86_64='.*'|UV_SHA512SUM_OSX_X86_64='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uv (OS X - x86_64)'
|
|
elif [ "${old_sha512sum}" == "${PREBUILDS_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for IronFox prebuilds...'
|
|
"${IRONFOX_SED}" -i -e "s|PREBUILDS_SHA512SUM='.*'|PREBUILDS_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for IronFox prebuilds'
|
|
elif [ "${old_sha512sum}" == "${UNIFFI_LINUX_IRONFOX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uniffi-bindgen (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|UNIFFI_LINUX_IRONFOX_SHA512SUM='.*'|UNIFFI_LINUX_IRONFOX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uniffi-bindgen (Linux)'
|
|
elif [ "${old_sha512sum}" == "${UNIFFI_OSX_IRONFOX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for uniffi-bindgen (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|UNIFFI_OSX_IRONFOX_SHA512SUM='.*'|UNIFFI_OSX_IRONFOX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for uniffi-bindgen (OS X)'
|
|
elif [ "${old_sha512sum}" == "${UNIFIEDPUSHAC_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for UnifiedPush-AC...'
|
|
"${IRONFOX_SED}" -i -e "s|UNIFIEDPUSHAC_SHA512SUM='.*'|UNIFIEDPUSHAC_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for UnifiedPush-AC'
|
|
elif [ "${old_sha512sum}" == "${WASI_LINUX_IRONFOX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for WASI SDK (Linux)...'
|
|
"${IRONFOX_SED}" -i -e "s|WASI_LINUX_IRONFOX_SHA512SUM='.*'|WASI_LINUX_IRONFOX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for WASI SDK (Linux)'
|
|
elif [ "${old_sha512sum}" == "${WASI_OSX_IRONFOX_SHA512SUM}" ]; then
|
|
echo_red_text 'Updating SHA512sum for WASI SDK (OS X)...'
|
|
"${IRONFOX_SED}" -i -e "s|WASI_OSX_IRONFOX_SHA512SUM='.*'|WASI_OSX_IRONFOX_SHA512SUM='"${new_sha512sum}"'|g" "${IRONFOX_VERSIONS}"
|
|
echo_green_text 'SUCCESS: Updated SHA512sum for WASI SDK (OS X)'
|
|
fi
|
|
|
|
rm "${file}"
|
|
}
|
|
|
|
function validate_sha512sum() {
|
|
expected_sha512sum="$1"
|
|
file="$2"
|
|
|
|
local_sha512sum=$(sha512sum "${file}" | "${IRONFOX_AWK}" '{print $1}')
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_CHECKSUM_UPDATE}" == 1 ]; then
|
|
update_sha512sum "${expected_sha512sum}" "${local_sha512sum}" "${file}"
|
|
elif [ "${local_sha512sum}" != "${expected_sha512sum}" ]; then
|
|
echo_red_text 'ERROR: Checksum validation failed.'
|
|
echo "Expected SHA512sum: ${expected_sha512sum}"
|
|
echo "Actual SHA512sum: ${local_sha512sum}"
|
|
|
|
# If checksum validation fails, also just remove the file
|
|
rm -f "${file}"
|
|
|
|
exit 1
|
|
else
|
|
echo_green_text 'SUCCESS: Checksum validated.'
|
|
echo "SHA512sum: ${local_sha512sum}"
|
|
fi
|
|
}
|
|
|
|
function clone_repo() {
|
|
url="$1"
|
|
path="$2"
|
|
revision="$3"
|
|
|
|
if [[ "${url}" == "" ]]; then
|
|
echo_red_text "ERROR: URL missing for clone"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${path}" == "" ]]; then
|
|
echo_red_text "ERROR: Path is required for cloning '${url}'"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "${revision}" == "" ]]; then
|
|
echo_red_text "ERROR: Revision is required for cloning '${url}'"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f "${path}" ]]; then
|
|
echo_red_text "ERROR: '${path}' exists and is not a directory"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${path}" ]]; then
|
|
echo_red_text "'${path}' already exists"
|
|
read -p "Do you want to re-clone this repository? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
echo_red_text "Removing ${path}..."
|
|
rm -rf "${path}"
|
|
else
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
echo_red_text "Cloning ${url}::${revision}..."
|
|
git clone --revision="${revision}" --depth=1 "${url}" "${path}"
|
|
}
|
|
|
|
function download() {
|
|
local url="$1"
|
|
local filepath="$2"
|
|
|
|
if [[ "${url}" == "" ]]; then
|
|
echo_red_text "ERROR: URL is required (file: '${filepath}')"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -f "${filepath}" ]; then
|
|
echo_red_text "${filepath} already exists."
|
|
read -p "Do you want to re-download? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
echo_red_text "Removing ${filepath}..."
|
|
rm -f "${filepath}"
|
|
else
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
mkdir -vp "$(dirname "${filepath}")"
|
|
|
|
echo_red_text "Downloading ${url}..."
|
|
curl ${IRONFOX_CURL_FLAGS} -sSL "${url}" -o "${filepath}"
|
|
}
|
|
|
|
# Extract archives
|
|
function extract() {
|
|
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!"
|
|
fi
|
|
|
|
# If our temporary directory for extraction already exists, delete it
|
|
if [[ -d "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}" ]]; then
|
|
rm -rf "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
fi
|
|
|
|
# Create temporary directory for extraction
|
|
mkdir -p "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
|
|
# Extract based on file extension
|
|
case "${archive_path}" in
|
|
*.zip)
|
|
unzip -q "${archive_path}" -d "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
;;
|
|
*.tar.gz)
|
|
"${IRONFOX_TAR}" xzf "${archive_path}" -C "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
;;
|
|
*.tar.xz)
|
|
"${IRONFOX_TAR}" xJf "${archive_path}" -C "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
;;
|
|
*.tar.zst)
|
|
"${IRONFOX_TAR}" --zstd -xvf "${archive_path}" -C "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
;;
|
|
*)
|
|
echo_red_text "ERROR: Unsupported archive format: ${archive_path}"
|
|
rm -rf "${IRONFOX_EXTERNAL}/temp/${temp_repo_name}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
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 repo_name="$1"
|
|
local url="$2"
|
|
local path="$3"
|
|
local expected_sha512sum="$4"
|
|
|
|
if [[ -d "${path}" ]]; then
|
|
echo_red_text "'${path}' already exists"
|
|
read -p "Do you want to re-download? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
echo_red_text "Removing ${path}..."
|
|
rm -rf "${path}"
|
|
else
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
local extension
|
|
if [[ "${url}" =~ \.tar\.xz$ ]]; then
|
|
extension=".tar.xz"
|
|
elif [[ "${url}" =~ \.tar\.gz$ ]]; then
|
|
extension=".tar.gz"
|
|
elif [[ "${url}" =~ \.tar\.zst$ ]]; then
|
|
extension=".tar.zst"
|
|
else
|
|
extension=".zip"
|
|
fi
|
|
|
|
local repo_archive="${IRONFOX_DOWNLOADS}/${repo_name}${extension}"
|
|
|
|
download "${url}" "${repo_archive}"
|
|
|
|
if [ ! -f "${repo_archive}" ]; then
|
|
echo_red_text "ERROR: Source archive for ${repo_name} does not exist."
|
|
exit 1
|
|
fi
|
|
|
|
# Before extracting, verify SHA512sum...
|
|
validate_sha512sum "${expected_sha512sum}" "${repo_archive}"
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_CHECKSUM_UPDATE}" != 1 ]; then
|
|
echo_red_text "Extracting ${repo_archive}..."
|
|
extract "${repo_archive}" "${path}" "${repo_name}"
|
|
echo
|
|
fi
|
|
}
|
|
|
|
# Get Android NDK
|
|
function get_android_ndk() {
|
|
echo_red_text 'Downloading the Android NDK...'
|
|
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
download_and_extract 'android-ndk' "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-darwin.zip" "${IRONFOX_ANDROID_NDK}" "${ANDROID_NDK_SHA512SUM_OSX}"
|
|
else
|
|
download_and_extract 'android-ndk' "https://dl.google.com/android/repository/android-ndk-${ANDROID_NDK_VERSION}-linux.zip" "${IRONFOX_ANDROID_NDK}" "${ANDROID_NDK_SHA512SUM_LINUX}"
|
|
fi
|
|
|
|
echo_green_text "SUCCESS: Set-up Android NDK at ${IRONFOX_ANDROID_NDK}"
|
|
}
|
|
|
|
# Get + set-up Android SDK
|
|
function get_android_sdk() {
|
|
echo_red_text 'Downloading the Android SDK...'
|
|
|
|
# This is typically covered by "download_and_extract", but the Android SDK is a special case - we don't download it to IRONFOX_ANDROID_SDK directly
|
|
if [[ -d "${IRONFOX_ANDROID_SDK}" ]]; then
|
|
echo_red_text "'${IRONFOX_ANDROID_SDK}' already exists"
|
|
read -p "Do you want to re-download? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
echo_red_text "Removing ${IRONFOX_ANDROID_SDK}..."
|
|
rm -rf "${IRONFOX_ANDROID_SDK}"
|
|
else
|
|
return 0
|
|
fi
|
|
fi
|
|
mkdir -p "${IRONFOX_ANDROID_SDK}/cmdline-tools"
|
|
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
download_and_extract 'android-sdk-cmdline-tools' "https://dl.google.com/android/repository/commandlinetools-mac-${ANDROID_SDK_REVISION}_latest.zip" "${IRONFOX_ANDROID_SDK}/cmdline-tools/latest" "${ANDROID_SDK_SHA512SUM_OSX}"
|
|
else
|
|
download_and_extract 'android-sdk-cmdline-tools' "https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_SDK_REVISION}_latest.zip" "${IRONFOX_ANDROID_SDK}/cmdline-tools/latest" "${ANDROID_SDK_SHA512SUM_LINUX}"
|
|
fi
|
|
|
|
# Accept Android SDK licenses
|
|
{ yes || true; } | ${IRONFOX_ANDROID_SDKMANAGER} --sdk_root="${IRONFOX_ANDROID_SDK}" --licenses
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK at ${IRONFOX_ANDROID_SDK}"
|
|
}
|
|
|
|
# Get Android SDK Build Tools (latest)
|
|
function get_android_sdk_build_tools() {
|
|
echo_red_text 'Downloading Android SDK Build Tools (latest)...'
|
|
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
download_and_extract 'android-sdk-build-tools' "https://dl.google.com/android/repository/build-tools_${ANDROID_SDK_BUILD_TOOLS_VERSION}_macosx.zip" "${IRONFOX_ANDROID_SDK_BUILD_TOOLS}" "${ANDROID_SDK_BUILD_TOOLS_SHA512SUM_OSX}"
|
|
else
|
|
download_and_extract 'android-sdk-build-tools' "https://dl.google.com/android/repository/build-tools_${ANDROID_SDK_BUILD_TOOLS_VERSION}_linux.zip" "${IRONFOX_ANDROID_SDK_BUILD_TOOLS}" "${ANDROID_SDK_BUILD_TOOLS_SHA512SUM_LINUX}"
|
|
fi
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK Build Tools (latest) at ${IRONFOX_ANDROID_SDK_BUILD_TOOLS}"
|
|
}
|
|
|
|
# Get Android SDK Build Tools (35)
|
|
## (Needed by Glean:
|
|
### https://github.com/mozilla/glean/blob/main/docs/dev/android/sdk-ndk-versions.md
|
|
### https://github.com/mozilla/glean/blob/main/docs/dev/android/setup-android-build-environment.md)
|
|
function get_android_sdk_build_tools_35() {
|
|
echo_red_text 'Downloading Android SDK Build Tools (35.0.0)...'
|
|
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
download_and_extract 'android-sdk-build-tools-35' "https://dl.google.com/android/repository/build-tools_r35_macosx.zip" "${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35}" "${ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_OSX}"
|
|
else
|
|
download_and_extract 'android-sdk-build-tools-35' "https://dl.google.com/android/repository/build-tools_r35_linux.zip" "${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35}" "${ANDROID_SDK_BUILD_TOOLS_35_SHA512SUM_LINUX}"
|
|
fi
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK Build Tools (35.0.0) at ${IRONFOX_ANDROID_SDK_BUILD_TOOLS_35}"
|
|
}
|
|
|
|
# Get Android SDK Platform (latest)
|
|
function get_android_sdk_platform() {
|
|
if [ ! -d "${IRONFOX_ANDROID_SDK}" ]; then
|
|
echo_red_text "ERROR: You tried to download the Android SDK Platform (latest), but you don't have the Android SDK set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_ANDROID_SDK}/platforms/android-${ANDROID_SDK_PLATFORM_VERSION}" ]]; then
|
|
echo_red_text "Android SDK Platform (latest) is already installed at ${IRONFOX_ANDROID_SDK}/platforms/android-${ANDROID_SDK_PLATFORM_VERSION}"
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
else
|
|
rm -rf "${IRONFOX_ANDROID_SDK}/platforms/android-${ANDROID_SDK_PLATFORM_VERSION}"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading Android SDK Platform (latest)...'
|
|
|
|
${IRONFOX_ANDROID_SDKMANAGER} "platforms;android-${ANDROID_SDK_PLATFORM_VERSION}"
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK Platform (latest) at ${IRONFOX_ANDROID_SDK}/platforms/android-${ANDROID_SDK_PLATFORM_VERSION}"
|
|
}
|
|
|
|
# Get Android SDK Platform (36)
|
|
## (Needed by Glean:
|
|
### https://github.com/mozilla/glean/blob/main/docs/dev/android/sdk-ndk-versions.md
|
|
### https://github.com/mozilla/glean/blob/main/docs/dev/android/setup-android-build-environment.md)
|
|
function get_android_sdk_platform_36() {
|
|
if [ ! -d "${IRONFOX_ANDROID_SDK}" ]; then
|
|
echo_red_text "ERROR: You tried to download the Android SDK Platform (36), but you don't have the Android SDK set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_ANDROID_SDK}/platforms/android-36" ]]; then
|
|
echo_red_text "Android SDK Platform (36) is already installed at ${IRONFOX_ANDROID_SDK}/platforms/android-36"
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
else
|
|
rm -rf "${IRONFOX_ANDROID_SDK}/platforms/android-36"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading Android SDK Platform (36)...'
|
|
|
|
${IRONFOX_ANDROID_SDKMANAGER} 'platforms;android-36'
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK Platform (36) at ${IRONFOX_ANDROID_SDK}/platforms/android-36"
|
|
}
|
|
|
|
# Get Android SDK Platform Tools
|
|
function get_android_sdk_platform_tools() {
|
|
echo_red_text 'Downloading Android SDK Platform Tools...'
|
|
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
download_and_extract 'android-sdk-platform-tools' "https://dl.google.com/android/repository/platform-tools_r${ANDROID_SDK_PLATFORM_TOOLS_VERSION}-darwin.zip" "${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS}" "${ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_OSX}"
|
|
else
|
|
download_and_extract 'android-sdk-platform-tools' "https://dl.google.com/android/repository/platform-tools_r${ANDROID_SDK_PLATFORM_TOOLS_VERSION}-linux.zip" "${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS}" "${ANDROID_SDK_PLATFORM_TOOLS_SHA512SUM_LINUX}"
|
|
fi
|
|
|
|
echo_green_text "SUCCESS: Set-up Android SDK Platform Tools at ${IRONFOX_ANDROID_SDK_PLATFORM_TOOLS}"
|
|
}
|
|
|
|
# Get Application Services
|
|
function get_as() {
|
|
echo_red_text 'Downloading Application Services...'
|
|
download_and_extract 'application-services' "https://github.com/mozilla/application-services/archive/${APPSERVICES_COMMIT}.tar.gz" "${IRONFOX_AS}" "${APPSERVICES_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up Application Services at ${IRONFOX_AS}"
|
|
}
|
|
|
|
# Get + set-up Bundletool
|
|
function get_bundletool() {
|
|
echo_red_text 'Downloading Bundletool...'
|
|
if [[ "${IRONFOX_NO_PREBUILDS}" == "1" ]]; then
|
|
download_and_extract 'bundletool' "https://github.com/google/bundletool/archive/${BUNDLETOOL_REPO_COMMIT}.tar.gz" "${IRONFOX_BUNDLETOOL_DIR}" "${BUNDLETOOL_REPO_SHA512SUM}"
|
|
else
|
|
download "https://github.com/google/bundletool/releases/download/${BUNDLETOOL_VERSION}/bundletool-all-${BUNDLETOOL_VERSION}.jar" "${IRONFOX_BUNDLETOOL_JAR}"
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${BUNDLETOOL_SHA512SUM}" "${IRONFOX_BUNDLETOOL_JAR}"
|
|
fi
|
|
|
|
echo_green_text "SUCCESS: Set-up Bundletool at ${IRONFOX_BUNDLETOOL_DIR}"
|
|
}
|
|
|
|
# Get cbindgen
|
|
function get_cbindgen() {
|
|
if [ ! -d "${IRONFOX_CARGO_HOME}" ] || [ ! -f "${IRONFOX_CARGO_ENV}" ]; then
|
|
echo_red_text "ERROR: You tried to download cbindgen, but you don't have a Rust environment set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_CARGO_HOME}/bin/cbindgen" ]]; then
|
|
echo_red_text "cbindgen is already installed at ${IRONFOX_CARGO_HOME}/bin/cbindgen."
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
fi
|
|
fi
|
|
|
|
echo_red_text "Downloading cbindgen..."
|
|
download_and_extract 'cbindgen' "https://github.com/mozilla/cbindgen/archive/${CBINDGEN_COMMIT}.tar.gz" "${IRONFOX_CBINDGEN}" "${CBINDGEN_SHA512SUM}"
|
|
|
|
source "${IRONFOX_CARGO_ENV}"
|
|
echo_red_text 'Installing cbindgen...'
|
|
cargo +"${RUST_VERSION}" install --locked --force --vers "${CBINDGEN_VERSION}" --path "${IRONFOX_CBINDGEN}" cbindgen
|
|
echo_green_text "SUCCESS: Set-up cbindgen at ${IRONFOX_CARGO_HOME}/bin/cbindgen"
|
|
}
|
|
|
|
# Get Firefox (Gecko/mozilla-central)
|
|
function get_firefox() {
|
|
echo_red_text 'Downloading Firefox...'
|
|
download_and_extract 'gecko' "https://github.com/mozilla-firefox/firefox/archive/${FIREFOX_COMMIT}.tar.gz" "${IRONFOX_GECKO}" "${FIREFOX_SHA512SUM}"
|
|
|
|
# Because we use MOZ_AUTOMATION for certain parts of the build, we need to initialize a Git repository
|
|
## The Git repository isn't already created, due to our method of downloading and verifying the archive
|
|
pushd "${IRONFOX_GECKO}"
|
|
git init
|
|
popd
|
|
|
|
echo_green_text "SUCCESS: Set-up Firefox at ${IRONFOX_GECKO}"
|
|
}
|
|
|
|
# Get firefox-l10n
|
|
function get_firefox_l10n() {
|
|
echo_red_text 'Downloading firefox-l10n...'
|
|
download_and_extract 'l10n-central' "https://github.com/mozilla-l10n/firefox-l10n/archive/${L10N_COMMIT}.tar.gz" "${IRONFOX_L10N_CENTRAL}" "${L10N_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up firefox-l10n at ${IRONFOX_L10N_CENTRAL}"
|
|
}
|
|
|
|
# Get Glean
|
|
function get_glean() {
|
|
echo_red_text 'Downloading Glean...'
|
|
download_and_extract 'glean' "https://github.com/mozilla/glean/archive/${GLEAN_COMMIT}.tar.gz" "${IRONFOX_GLEAN}" "${GLEAN_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up Glean at ${IRONFOX_GLEAN}"
|
|
}
|
|
|
|
# Get Glean Parser
|
|
function get_glean_parser() {
|
|
if [ ! -d "${IRONFOX_UV_DIR}" ] || [ ! -f "${IRONFOX_PYENV}" ]; then
|
|
echo_red_text "ERROR: You tried to download Glean Parser, but you don't have a uv environment set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "${IRONFOX_PIP_DIR}" ]; then
|
|
echo_red_text "ERROR: You tried to download Glean Parser, but you don't have pip set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_PYENV_DIR}/bin/glean_parser" ]]; then
|
|
echo_red_text "Glean Parser is already installed at ${IRONFOX_PYENV_DIR}/bin/glean_parser"
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
else
|
|
source "${IRONFOX_PYENV}"
|
|
"${IRONFOX_UV}" pip uninstall glean-parser
|
|
fi
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_GLEAN_PARSER_WHEELS}" ]]; then
|
|
echo_red_text "Glean Parser wheels are already downloaded at ${IRONFOX_GLEAN_PARSER_WHEELS}"
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
else
|
|
rm -rf "${IRONFOX_GLEAN_PARSER_WHEELS}"
|
|
fi
|
|
fi
|
|
mkdir -p "${IRONFOX_GLEAN_PARSER_WHEELS}"
|
|
|
|
source "${IRONFOX_PYENV}"
|
|
echo_red_text 'Downloading Glean Parser wheels...'
|
|
pushd "${IRONFOX_GLEAN_PARSER_WHEELS}"
|
|
"${IRONFOX_PIP}" download glean-parser=="${GLEAN_PARSER_VERSION}"
|
|
popd
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${GLEAN_PARSER_SHA512SUM}" "${IRONFOX_GLEAN_PARSER_WHEELS}/glean_parser-${GLEAN_PARSER_VERSION}-py3-none-any.whl"
|
|
}
|
|
|
|
# Get + set-up F-Droid's Gradle script
|
|
function get_gradle() {
|
|
echo_red_text "Downloading F-Droid's Gradle script..."
|
|
download "https://gitlab.com/fdroid/gradlew-fdroid/-/raw/${GRADLE_COMMIT}/gradlew.py" "${IRONFOX_GRADLE_PY}"
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${GRADLE_SHA512SUM}" "${IRONFOX_GRADLE_PY}"
|
|
}
|
|
|
|
# Get GYP
|
|
function get_gyp() {
|
|
if [ ! -d "${IRONFOX_UV_DIR}" ] || [ ! -f "${IRONFOX_PYENV}" ]; then
|
|
echo_red_text "ERROR: You tried to download GYP, but you don't have a uv environment set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_PYENV_DIR}/bin/gyp" ]]; then
|
|
echo_red_text "GYP is already installed at ${IRONFOX_PYENV_DIR}/bin/gyp"
|
|
read -p "Do you want to re-download it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Nn]$ ]]; then
|
|
return 0
|
|
else
|
|
source "${IRONFOX_PYENV}"
|
|
"${IRONFOX_UV}" pip uninstall gyp-next
|
|
fi
|
|
fi
|
|
|
|
echo_red_text "Downloading GYP..."
|
|
download_and_extract 'gyp-next' "https://github.com/nodejs/gyp-next/archive/${GYP_COMMIT}.tar.gz" "${IRONFOX_GYP}" "${GYP_SHA512SUM}"
|
|
|
|
source "${IRONFOX_PYENV}"
|
|
echo_red_text 'Installing GYP...'
|
|
"${IRONFOX_UV}" pip install --strict "${IRONFOX_GYP}"
|
|
echo_green_text "SUCCESS: Set-up GYP at ${IRONFOX_PYENV_DIR}/bin/gyp"
|
|
}
|
|
|
|
# Get JDK (17)
|
|
## (Required by GeckoView)
|
|
function get_jdk_17() {
|
|
# Set our platform
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly JDK_17_PLATFORM='mac'
|
|
else
|
|
local readonly JDK_17_PLATFORM='linux'
|
|
fi
|
|
|
|
# Set our platform architecture
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
local readonly JDK_17_ARCH='aarch64'
|
|
else
|
|
local readonly JDK_17_ARCH='x64'
|
|
fi
|
|
|
|
# Set our checksum to verify
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly JDK_17_SHA512SUM="${JDK_17_SHA512SUM_OSX_ARM64}"
|
|
else
|
|
local readonly JDK_17_SHA512SUM="${JDK_17_SHA512SUM_LINUX_ARM64}"
|
|
fi
|
|
else
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly JDK_17_SHA512SUM="${JDK_17_SHA512SUM_OSX_X86_64}"
|
|
else
|
|
local readonly JDK_17_SHA512SUM="${JDK_17_SHA512SUM_LINUX_X86_64}"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading JDK (17)...'
|
|
download_and_extract 'jdk-17' "https://github.com/adoptium/temurin17-binaries/releases/download/jdk-${JDK_17_VERSION}%2B${JDK_17_REVISION}/OpenJDK17U-jdk_${JDK_17_ARCH}_${JDK_17_PLATFORM}_hotspot_${JDK_17_VERSION}_${JDK_17_REVISION}.tar.gz" "${IRONFOX_JDK_17}" "${JDK_17_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up JDK (17) at ${IRONFOX_JDK_17}"
|
|
}
|
|
|
|
# Get microG
|
|
function get_microg() {
|
|
echo_red_text 'Downloading microG...'
|
|
download_and_extract 'gmscore' "https://github.com/microg/GmsCore/archive/${GMSCORE_COMMIT}.tar.gz" "${IRONFOX_GMSCORE}" "${GMSCORE_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up microG at ${IRONFOX_GMSCORE}"
|
|
}
|
|
|
|
# Get + set-up Node.js
|
|
function get_node() {
|
|
if [[ -d "${IRONFOX_NVM}" ]]; then
|
|
echo_red_text "The Node.js environment is already set-up at ${IRONFOX_NVM}"
|
|
read -p "Do you want to re-create it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
rm -rf "${IRONFOX_NPM_CACHE}" "${IRONFOX_NVM}" "${IRONFOX_ROOT}/node_modules"
|
|
fi
|
|
fi
|
|
|
|
download_and_extract 'nvm' "https://github.com/nvm-sh/nvm/archive/${NVM_COMMIT}.tar.gz" "${IRONFOX_NVM}" "${NVM_SHA512SUM}"
|
|
|
|
echo_red_text 'Installing Node.js...'
|
|
source "${IRONFOX_NVM_ENV}"
|
|
nvm install "${NODE_VERSION}"
|
|
nvm alias default "${NODE_VERSION}"
|
|
nvm use "${NODE_VERSION}"
|
|
|
|
echo_green_text "SUCCESS: Set-up Node.js environment at ${IRONFOX_NVM}"
|
|
}
|
|
|
|
# Get npm
|
|
function get_npm() {
|
|
if [ ! -d "${IRONFOX_NVM}" ]; then
|
|
echo_red_text "ERROR: You tried to download npm, but you don't have a Node.js environment set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
echo_red_text 'Downloading npm...'
|
|
download "https://registry.npmjs.org/npm/-/npm-${NPM_VERSION}.tgz" "${IRONFOX_DOWNLOADS}/npm.tgz"
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${NPM_SHA512SUM}" "${IRONFOX_DOWNLOADS}/npm.tgz"
|
|
|
|
echo_red_text 'Installing npm...'
|
|
source "${IRONFOX_NVM_ENV}"
|
|
"${IRONFOX_NPM}" install -g npm@file:"${IRONFOX_DOWNLOADS}/npm.tgz"
|
|
echo_green_text "SUCCESS: Set-up npm at ${IRONFOX_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}"
|
|
echo_green_text "SUCCESS: Set-up Phoenix at ${IRONFOX_PHOENIX}"
|
|
}
|
|
|
|
# Get + set-up pip
|
|
function get_pip() {
|
|
if [ ! -d "${IRONFOX_UV_DIR}" ] || [ ! -f "${IRONFOX_PYENV}" ]; then
|
|
echo_red_text "ERROR: You tried to download pip, but you don't have a uv environment set-up yet."
|
|
exit 1
|
|
fi
|
|
|
|
echo_red_text 'Downloading pip...'
|
|
download_and_extract 'pip' "https://github.com/pypa/pip/archive/${PIP_COMMIT}.tar.gz" "${IRONFOX_PIP_DIR}" "${PIP_SHA512SUM}"
|
|
|
|
source "${IRONFOX_PYENV}"
|
|
echo_red_text 'Installing pip...'
|
|
"${IRONFOX_UV}" pip install "${IRONFOX_PIP_DIR}"
|
|
echo_green_text "SUCCESS: Set-up pip at ${IRONFOX_PIP}"
|
|
}
|
|
|
|
# Get IronFox prebuilds
|
|
function get_prebuilds() {
|
|
if [[ "${IRONFOX_NO_PREBUILDS}" == "1" ]]; then
|
|
echo_red_text 'Downloading the IronFox prebuilds repository...'
|
|
download_and_extract 'prebuilds' "https://gitlab.com/ironfox-oss/prebuilds/-/archive/${PREBUILDS_COMMIT}/prebuilds-${PREBUILDS_COMMIT}.tar.gz" "${IRONFOX_PREBUILDS}" "${PREBUILDS_SHA512SUM}"
|
|
|
|
pushd "${IRONFOX_PREBUILDS}"
|
|
echo_red_text 'Downloading prebuild sources...'
|
|
bash "${IRONFOX_PREBUILDS}/scripts/get_sources.sh"
|
|
popd
|
|
|
|
echo_green_text "SUCCESS: Set-up the IronFox prebuilds repository at ${IRONFOX_PREBUILDS}"
|
|
else
|
|
# Get Tor's no-op UniFFi binding generator
|
|
echo_red_text 'Downloading prebuilt uniffi-bindgen...'
|
|
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
|
|
download_and_extract 'uniffi' "https://gitlab.com/ironfox-oss/prebuilds/-/raw/${UNIFFI_OSX_IRONFOX_COMMIT}/uniffi-bindgen/${UNIFFI_VERSION}/osx/uniffi-bindgen-${UNIFFI_VERSION}-${UNIFFI_OSX_IRONFOX_REVISION}-osx.tar.xz" "${IRONFOX_UNIFFI}" "${UNIFFI_OSX_IRONFOX_SHA512SUM}"
|
|
else
|
|
download_and_extract 'uniffi' "https://gitlab.com/ironfox-oss/prebuilds/-/raw/${UNIFFI_LINUX_IRONFOX_COMMIT}/uniffi-bindgen/${UNIFFI_VERSION}/linux/uniffi-bindgen-${UNIFFI_VERSION}-${UNIFFI_LINUX_IRONFOX_REVISION}-linux.tar.xz" "${IRONFOX_UNIFFI}" "${UNIFFI_LINUX_IRONFOX_SHA512SUM}"
|
|
fi
|
|
echo_green_text "SUCCESS: Set-up the prebuilt uniffi-bindgen at ${IRONFOX_UNIFFI}"
|
|
|
|
# Get WebAssembly SDK
|
|
echo_red_text 'Downloading prebuilt wasi-sdk...'
|
|
if [[ "${IRONFOX_PLATFORM}" == 'darwin' ]]; then
|
|
download_and_extract 'wasi-sdk' "https://gitlab.com/ironfox-oss/prebuilds/-/raw/${WASI_OSX_IRONFOX_COMMIT}/wasi-sdk/${WASI_VERSION}/osx/wasi-sdk-${WASI_VERSION}-${WASI_OSX_IRONFOX_REVISION}-osx.tar.xz" "${IRONFOX_WASI}" "${WASI_OSX_IRONFOX_SHA512SUM}"
|
|
else
|
|
download_and_extract 'wasi-sdk' "https://gitlab.com/ironfox-oss/prebuilds/-/raw/${WASI_LINUX_IRONFOX_COMMIT}/wasi-sdk/${WASI_VERSION}/linux/wasi-sdk-${WASI_VERSION}-${WASI_LINUX_IRONFOX_REVISION}-linux.tar.xz" "${IRONFOX_WASI}" "${WASI_LINUX_IRONFOX_SHA512SUM}"
|
|
fi
|
|
echo_green_text "SUCCESS: Set-up the prebuilt wasi-sdk at ${IRONFOX_WASI}"
|
|
fi
|
|
}
|
|
|
|
# Get Python
|
|
function get_python() {
|
|
# Set our platform
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly PYTHON_PLATFORM='apple-darwin'
|
|
else
|
|
local readonly PYTHON_PLATFORM='unknown-linux-gnu'
|
|
fi
|
|
|
|
# Set our platform architecture
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
local readonly PYTHON_ARCH='aarch64'
|
|
else
|
|
local readonly PYTHON_ARCH='x86_64'
|
|
fi
|
|
|
|
# Set our checksum to verify
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly PYTHON_SHA512SUM="${PYTHON_SHA512SUM_OSX_ARM64}"
|
|
else
|
|
local readonly PYTHON_SHA512SUM="${PYTHON_SHA512SUM_LINUX_ARM64}"
|
|
fi
|
|
else
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly PYTHON_SHA512SUM="${PYTHON_SHA512SUM_OSX_X86_64}"
|
|
else
|
|
local readonly PYTHON_SHA512SUM="${PYTHON_SHA512SUM_LINUX_X86_64}"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading Python...'
|
|
download "https://github.com/astral-sh/python-build-standalone/releases/download/${PYTHON_GIT_RELEASE}/cpython-${PYTHON_VERSION}+${PYTHON_GIT_RELEASE}-${PYTHON_ARCH}-${PYTHON_PLATFORM}-install_only_stripped.tar.gz" "${IRONFOX_PYTHON_DIR}/${PYTHON_GIT_RELEASE}/cpython-${PYTHON_VERSION}+${PYTHON_GIT_RELEASE}-${PYTHON_ARCH}-${PYTHON_PLATFORM}-install_only_stripped.tar.gz"
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${PYTHON_SHA512SUM}" "${IRONFOX_PYTHON_DIR}/${PYTHON_GIT_RELEASE}/cpython-${PYTHON_VERSION}+${PYTHON_GIT_RELEASE}-${PYTHON_ARCH}-${PYTHON_PLATFORM}-install_only_stripped.tar.gz"
|
|
|
|
echo_green_text "SUCCESS: Downloaded Python to ${IRONFOX_PYTHON_DIR}/${PYTHON_GIT_RELEASE}/cpython-${PYTHON_VERSION}+${PYTHON_GIT_RELEASE}-${PYTHON_ARCH}-${PYTHON_PLATFORM}-install_only_stripped.tar.gz"
|
|
}
|
|
|
|
# Get + set-up rust/cargo
|
|
function get_rust() {
|
|
if [[ -d "${IRONFOX_CARGO_HOME}" ]]; then
|
|
echo_red_text "The Rust environment is already set-up at ${IRONFOX_CARGO_HOME}"
|
|
read -p "Do you want to re-create it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
rm -rf "${IRONFOX_CARGO_HOME}" "${IRONFOX_RUSTUP_HOME}"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading Rust...'
|
|
download "https://raw.githubusercontent.com/rust-lang/rustup/${RUSTUP_COMMIT}/rustup-init.sh" "${IRONFOX_DOWNLOADS}/rustup-init.sh"
|
|
|
|
# Validate SHA512sum
|
|
validate_sha512sum "${RUSTUP_SHA512SUM}" "${IRONFOX_DOWNLOADS}/rustup-init.sh"
|
|
|
|
bash -x "${IRONFOX_DOWNLOADS}/rustup-init.sh" -y --no-modify-path --no-update-default-toolchain --profile=minimal
|
|
|
|
echo_red_text 'Creating Rust environment...'
|
|
source "${IRONFOX_CARGO_ENV}"
|
|
rustup set profile minimal
|
|
rustup default "${RUST_VERSION}"
|
|
rustup override set "${RUST_VERSION}"
|
|
rustup target add aarch64-linux-android
|
|
rustup target add armv7-linux-androideabi
|
|
rustup target add thumbv7neon-linux-androideabi
|
|
rustup target add x86_64-linux-android
|
|
|
|
echo_green_text "SUCCESS: Set-up Rust environment at ${IRONFOX_CARGO_HOME}"
|
|
}
|
|
|
|
# Get UnifiedPush-AC
|
|
function get_up_ac() {
|
|
echo_red_text 'Downloading UnifiedPush-AC...'
|
|
download_and_extract 'unifiedpush-ac' "https://gitlab.com/ironfox-oss/unifiedpush-ac/-/archive/${UNIFIEDPUSHAC_COMMIT}/unifiedpush-ac-${UNIFIEDPUSHAC_COMMIT}.tar.gz" "${IRONFOX_UP_AC}" "${UNIFIEDPUSHAC_SHA512SUM}"
|
|
echo_green_text "SUCCESS: Set-up UnifiedPush-AC at ${IRONFOX_UP_AC}"
|
|
}
|
|
|
|
# Get + set-up uv
|
|
function get_uv() {
|
|
if [ ! -d "${IRONFOX_PYTHON_DIR}" ]; then
|
|
echo_red_text "ERROR: You tried to download uv, but you don't have Python downloaded yet."
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -d "${IRONFOX_PYENV_DIR}" ]]; then
|
|
echo_red_text "The uv environment is already set-up at ${IRONFOX_PYENV_DIR}"
|
|
read -p "Do you want to re-create it? [y/N] " -n 1 -r
|
|
echo
|
|
if [[ "${REPLY}" =~ ^[Yy]$ ]]; then
|
|
rm -rf "${IRONFOX_PYENV_DIR}" "${IRONFOX_UV_DIR}" "${IRONFOX_UV_LOCAL}"
|
|
fi
|
|
fi
|
|
|
|
# Set our platform
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly UV_PLATFORM='apple-darwin'
|
|
else
|
|
local readonly UV_PLATFORM='unknown-linux-gnu'
|
|
fi
|
|
|
|
# Set our platform architecture
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
local readonly UV_ARCH='aarch64'
|
|
else
|
|
local readonly UV_ARCH='x86_64'
|
|
fi
|
|
|
|
# Set our checksum to verify
|
|
if [ "${IRONFOX_PLATFORM_ARCH}" == 'aarch64' ]; then
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly UV_SHA512SUM="${UV_SHA512SUM_OSX_ARM64}"
|
|
else
|
|
local readonly UV_SHA512SUM="${UV_SHA512SUM_LINUX_ARM64}"
|
|
fi
|
|
else
|
|
if [ "${IRONFOX_PLATFORM}" == 'darwin' ]; then
|
|
local readonly UV_SHA512SUM="${UV_SHA512SUM_OSX_X86_64}"
|
|
else
|
|
local readonly UV_SHA512SUM="${UV_SHA512SUM_LINUX_X86_64}"
|
|
fi
|
|
fi
|
|
|
|
echo_red_text 'Downloading uv...'
|
|
download_and_extract 'uv' "https://github.com/astral-sh/uv/releases/download/${UV_VERSION}/uv-${UV_ARCH}-${UV_PLATFORM}.tar.gz" "${IRONFOX_UV_DIR}" "${UV_SHA512SUM}"
|
|
|
|
echo_red_text 'Installing Python...'
|
|
"${IRONFOX_UV}" python install "${PYTHON_VERSION}"
|
|
|
|
echo_red_text 'Creating uv environment...'
|
|
"${IRONFOX_UV}" venv "${IRONFOX_PYENV_DIR}"
|
|
echo_green_text "SUCCESS: Set-up uv environment at ${IRONFOX_PYENV_DIR}"
|
|
}
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_NDK}" == 1 ]; then
|
|
get_android_ndk
|
|
fi
|
|
|
|
# This needs to run before we get the Android SDK
|
|
if [ "${IRONFOX_GET_SOURCE_JDK_17}" == 1 ]; then
|
|
get_jdk_17
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK}" == 1 ]; then
|
|
get_android_sdk
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS}" == 1 ]; then
|
|
get_android_sdk_build_tools
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK_BUILD_TOOLS_35}" == 1 ]; then
|
|
get_android_sdk_build_tools_35
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM}" == 1 ]; then
|
|
get_android_sdk_platform
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_36}" == 1 ]; then
|
|
get_android_sdk_platform_36
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_ANDROID_SDK_PLATFORM_TOOLS}" == 1 ]; then
|
|
get_android_sdk_platform_tools
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_AS}" == 1 ]; then
|
|
get_as
|
|
fi
|
|
|
|
# This needs to run before we get cbindgen
|
|
if [ "${IRONFOX_GET_SOURCE_RUST}" == 1 ]; then
|
|
get_rust
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_CBINDGEN}" == 1 ]; then
|
|
get_cbindgen
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_BUNDLETOOL}" == 1 ]; then
|
|
get_bundletool
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GECKO}" == 1 ]; then
|
|
get_firefox
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GECKO_L10N}" == 1 ]; then
|
|
get_firefox_l10n
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GLEAN}" == 1 ]; then
|
|
get_glean
|
|
fi
|
|
|
|
# These need to run before we get glean_parser and gyp
|
|
if [ "${IRONFOX_GET_SOURCE_PYTHON}" == 1 ]; then
|
|
get_python
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_UV}" == 1 ]; then
|
|
get_uv
|
|
fi
|
|
|
|
# This needs to be run before we get glean_parser
|
|
if [ "${IRONFOX_GET_SOURCE_PIP}" == 1 ]; then
|
|
get_pip
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GLEAN_PARSER}" == 1 ]; then
|
|
get_glean_parser
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GRADLE}" == 1 ]; then
|
|
get_gradle
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_GYP}" == 1 ]; then
|
|
get_gyp
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_MICROG}" == 1 ]; then
|
|
get_microg
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_NODE}" == 1 ]; then
|
|
get_node
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_NPM}" == 1 ]; then
|
|
get_npm
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_PHOENIX}" == 1 ]; then
|
|
get_phoenix
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_PREBUILDS}" == 1 ]; then
|
|
get_prebuilds
|
|
fi
|
|
|
|
if [ "${IRONFOX_GET_SOURCE_UP_AC}" == 1 ]; then
|
|
get_up_ac
|
|
fi
|