From b8b19767012e78724172bdf2b7f9b647ce465e80 Mon Sep 17 00:00:00 2001 From: Daniil Chistyakov Date: Thu, 13 Aug 2026 16:10:33 +0500 Subject: [PATCH 1/6] feat(altlinux): add ALT Linux 10/11 support --- .github/workflows/ci.yml | 32 +++ .github/workflows/templates/generate.py | 23 +- AUTHORS.rst | 1 + bootstrap-salt.sh | 280 +++++++++++++++++++++++- 4 files changed, 333 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f3db92360..e49f0491a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,6 +180,36 @@ jobs: + altlinux-10: + name: ALT Linux 10 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: altlinux-10 + display-name: ALT Linux 10 + container-slug: altlinux-10 + timeout: 20 + instances: '["stable-3006", "git-3006", "onedir-3006", "stable-3006-24", "stable-3007", "git-3007", "onedir-3007", "stable-3007-1", "git-master", "latest", "default"]' + + + altlinux-11: + name: ALT Linux 11 + if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' + uses: ./.github/workflows/test-linux.yml + needs: + - lint + - generate-actions-workflow + with: + distro-slug: altlinux-11 + display-name: ALT Linux 11 + container-slug: altlinux-11 + timeout: 20 + instances: '["stable-3007", "git-3007", "onedir-3007", "stable-3007-1", "stable-3008", "git-3008", "onedir-3008", "git-master", "latest", "default"]' + + amazonlinux-2023: name: Amazon 2023 if: github.event_name == 'push' || needs.collect-changed-files.outputs.run-tests == 'true' @@ -312,6 +342,8 @@ jobs: - macos-15-intel - windows-2022 - windows-2025 + - altlinux-10 + - altlinux-11 - amazonlinux-2023 - debian-11 - debian-12 diff --git a/.github/workflows/templates/generate.py b/.github/workflows/templates/generate.py index 65ea19174..ed98b2273 100755 --- a/.github/workflows/templates/generate.py +++ b/.github/workflows/templates/generate.py @@ -16,6 +16,8 @@ # "ubuntu-2004", # "ubuntu-2404", LINUX_DISTROS = [ + "altlinux-10", + "altlinux-11", "amazonlinux-2023", "debian-11", "debian-12", @@ -43,6 +45,8 @@ # "ubuntu-2004", # "ubuntu-2404", STABLE_DISTROS = [ + "altlinux-10", + "altlinux-11", "amazonlinux-2023", "debian-11", "debian-12", @@ -60,6 +64,8 @@ # "ubuntu-2004", # "ubuntu-2404", ONEDIR_DISTROS = [ + "altlinux-10", + "altlinux-11", "amazonlinux-2023", "debian-11", "debian-12", @@ -77,6 +83,8 @@ # "rockylinux-8", # "ubuntu-2404", ONEDIR_RC_DISTROS = [ + "altlinux-10", + "altlinux-11", "debian-12", "photon-5", "rockylinux-9", @@ -85,6 +93,7 @@ ] BLACKLIST_3006 = [ + "altlinux-11", "debian-12", "fedora-40", "ubuntu-2404", @@ -95,10 +104,13 @@ "photon-4", ] -BLACKLIST_3008 = [] +BLACKLIST_3008 = [ + "altlinux-10", +] # "ubuntu-2204", BLACKLIST_GIT_3006 = [ + "altlinux-11", "amazonlinux-2", "amazonlinux-2023", "debian-11", @@ -127,6 +139,10 @@ "ubuntu-2404", ] +BLACKLIST_GIT_3008 = [ + "altlinux-10", +] + # "debian-12", BLACKLIST_GIT_MASTER = [ "amazonlinux-2", @@ -201,6 +217,8 @@ LATEST_PKG_BLACKLIST = [] DISTRO_DISPLAY_NAMES = { + "altlinux-10": "ALT Linux 10", + "altlinux-11": "ALT Linux 11", "amazonlinux-2": "Amazon 2", "amazonlinux-2023": "Amazon 2023", "debian-11": "Debian 11", @@ -222,6 +240,8 @@ } CONTAINER_SLUG_NAMES = { + "altlinux-10": "altlinux-10", + "altlinux-11": "altlinux-11", "amazonlinux-2": "amazonlinux-2", "amazonlinux-2023": "amazonlinux-2023", "debian-11": "debian-11", @@ -422,6 +442,7 @@ def generate_test_jobs(): BLACKLIST = { "3006": BLACKLIST_GIT_3006, "3007": BLACKLIST_GIT_3007, + "3008": BLACKLIST_GIT_3008, "master": BLACKLIST_GIT_MASTER, } diff --git a/AUTHORS.rst b/AUTHORS.rst index 1aa9eb9ca..c66438990 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -52,6 +52,7 @@ Dan Mick dmick dan.mick@inktank.com Daniel Poelzleithner poelzi Daniel Wallace gtmanfred danielwallace@gtmanfred.com Darko Cerdic darkocerdic +Daniil Chistyakov KegsZooL danil.chistyakov.2015@inbox.ru Daryl Turner darylturner d.turner@arkadin.com David J. Felix DavidJFelix David Murphy daithi david-dm.murphy@broadcom.com diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index bb9a9c374..f6758cc05 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -1100,7 +1100,7 @@ __strip_duplicates() { # enough. #---------------------------------------------------------------------------------------------------------------------- __sort_release_files() { - KNOWN_RELEASE_FILES=$(echo "(arch|alpine|centos|debian|ubuntu|fedora|redhat|suse|\ + KNOWN_RELEASE_FILES=$(echo "(altlinux|arch|alpine|centos|debian|ubuntu|fedora|redhat|suse|\ mandrake|mandriva|gentoo|slackware|turbolinux|unitedlinux|void|lsb|system|\ oracle|os|almalinux|rocky)(-|_)(release|version)" | sed -E 's:[[:space:]]::g') primary_release_files="" @@ -1116,7 +1116,7 @@ __sort_release_files() { done # Now let's sort by know files importance, max important goes last in the max_prio list - max_prio="redhat-release centos-release oracle-release fedora-release almalinux-release rocky-release" + max_prio="redhat-release centos-release oracle-release fedora-release almalinux-release rocky-release altlinux-release" for entry in $max_prio; do if [ "$(echo "${primary_release_files}" | grep "$entry")" != "" ]; then primary_release_files=$(echo "${primary_release_files}" | sed -e "s:\\(.*\\)\\($entry\\)\\(.*\\):\\2 \\1 \\3:g") @@ -1232,6 +1232,7 @@ __gather_linux_system_info() { n="ed at inux" fi ;; + altlinux ) n="ALT Linux" ;; arch ) n="Arch Linux" ;; alpine ) n="Alpine Linux" ;; centos ) n="CentOS" ;; @@ -1749,6 +1750,15 @@ __check_end_of_life_versions() { exit 1 fi ;; + alt*linux) + # ALT Linux versions lower than 10 are no longer supported + if [ "$DISTRO_MAJOR_VERSION" -lt 10 ]; then + echoerror "End of life distributions are not supported." + echoerror "Please consider upgrading to the next stable. See:" + echoerror " https://www.basealt.ru/updates/" + exit 1 + fi + ;; *) ;; @@ -2803,6 +2813,14 @@ __install_salt_from_repo() { return 1 fi + # mercurial==6.0.1 fails to build on Python 3.12 (uses removed PyLongObject.ob_digit) + # pygit2==1.13.1 requires libgit2 1.7.x, ALT ships 1.9.6 - use ALT's native + # python3-module-pygit2 package instead + if [ "${DISTRO_NAME_L}" = "alt_linux" ]; then + echodebug "Removing incompatible 'mercurial'/'pygit2' pins from ${_salt_static_ci_linux_req}" + sed -i -E '/^(mercurial|pygit2)==/d' "${_salt_static_ci_linux_req}" + fi + echodebug "Installing Salt requirements from PyPi, ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --ignore-installed ${_PIP_INSTALL_ARGS} -r ${_salt_static_ci_linux_req}" ${_pip_cmd} install ${_USE_BREAK_SYSTEM_PACKAGES} --ignore-installed ${_PIP_INSTALL_ARGS} -r "${_salt_static_ci_linux_req}" # shellcheck disable=SC2181 @@ -8166,6 +8184,264 @@ install_macosx_restart_daemons() { # ####################################################################################################################### +####################################################################################################################### +# +# ALT Linux Install Functions +# + +install_alt_linux_git_deps() { + + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 + fi + + apt-get update || return 1 + + __PACKAGES="" + if ! __check_command_exists ps; then + __PACKAGES="${__PACKAGES} procps" + fi + if ! __check_command_exists git; then + __PACKAGES="${__PACKAGES} git" + fi + + if [ -n "${__PACKAGES}" ]; then + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + __PACKAGES="" + fi + + # shellcheck disable=SC2119 + __git_clone_and_checkout || return 1 + + __PACKAGES="python${PY_PKG_VER}-dev python${PY_PKG_VER}-module-pip python${PY_PKG_VER}-module-pygit2" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-module-setuptools gcc gcc-c++" + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + # Let's trigger config_salt() + if [ "$_TEMP_CONFIG_DIR" = "null" ]; then + _TEMP_CONFIG_DIR="${_SALT_GIT_CHECKOUT_DIR}/conf" + CONFIG_SALT_FUNC="config_salt" + fi + + return 0 +} + +install_alt_linux_deps() { + + if [ "$_UPGRADE_SYS" -eq $BS_TRUE ]; then + apt-get update || return 1 + apt-get -y dist-upgrade || return 1 + fi + + __PACKAGES="${__PACKAGES:=}" + if [ -n "$_PY_EXE" ] && [ "$_PY_MAJOR_VERSION" -ne 3 ]; then + echoerror "Python version is no longer supported, only Python 3" + return 1 + fi + + PY_PKG_VER=3 + + __PACKAGES="${__PACKAGES} python${PY_PKG_VER} procps" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-module-yaml python${PY_PKG_VER}-module-jinja2" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-module-msgpack python${PY_PKG_VER}-module-cryptography" + __PACKAGES="${__PACKAGES} python${PY_PKG_VER}-module-zmq python${PY_PKG_VER}-module-pip" + + if [ "${_EXTRA_PACKAGES}" != "" ]; then + echoinfo "Installing the following extra packages as requested: ${_EXTRA_PACKAGES}" + fi + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} ${_EXTRA_PACKAGES} || return 1 + + return 0 +} + +install_alt_linux_onedir_deps() { + __apt_get_install_noinput wget tar gzip gnupg ca-certificates || return 1 + return 0 +} + +install_alt_linux_stable() { + + __PACKAGES="" + + if [ "$_INSTALL_MASTER" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-master" + fi + if [ "$_INSTALL_MINION" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-minion" + fi + if [ "$_INSTALL_SALT_API" -eq $BS_TRUE ]; then + __PACKAGES="${__PACKAGES} salt-api" + fi + + # shellcheck disable=SC2086 + __apt_get_install_noinput ${__PACKAGES} || return 1 + + return 0 +} + +install_alt_linux_post() { + + SYSTEMD_RELOAD=$BS_FALSE + + for fname in api master minion syndic; do + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + # Skip if not meant to be installed + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + + if [ "$_SYSTEMD_FUNCTIONAL" -eq $BS_TRUE ]; then + /bin/systemctl is-enabled salt-${fname}.service > /dev/null 2>&1 || ( + /bin/systemctl preset salt-${fname}.service > /dev/null 2>&1 && + /bin/systemctl enable salt-${fname}.service > /dev/null 2>&1 + ) + fi + done + + if [ "$SYSTEMD_RELOAD" -eq $BS_TRUE ]; then + /bin/systemctl daemon-reload + fi + + return 0 +} + +install_alt_linux_git() { + install_fedora_git || return 1 + return 0 +} + +install_alt_linux_git_post() { + + for fname in api master minion syndic; do + # Skip if not meant to be installed + [ $fname = "api" ] && \ + ([ "$_INSTALL_MASTER" -eq $BS_FALSE ] || ! __check_command_exists "salt-${fname}") && continue + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + # Account for new path for services files in later releases + if [ -f "${_SALT_GIT_CHECKOUT_DIR}/pkg/common/salt-${fname}.service" ]; then + _SERVICE_DIR="${_SALT_GIT_CHECKOUT_DIR}/pkg/common" + else + _SERVICE_DIR="${_SALT_GIT_CHECKOUT_DIR}/pkg/rpm" + fi + __copyfile "${_SERVICE_DIR}/salt-${fname}.service" "/lib/systemd/system/salt-${fname}.service" + + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + systemctl is-enabled salt-$fname.service || (systemctl preset salt-$fname.service && systemctl enable salt-$fname.service) + sleep 1 + systemctl daemon-reload + + done +} + +install_alt_linux_onedir() { + version="${ONEDIR_REV:-latest}" + arch="x86_64" + [ "$(uname -m)" = "aarch64" ] && arch="aarch64" + + # Resolve "latest" to actual version + if [ "$version" = "latest" ]; then + version=$(wget -qO- https://api.github.com/repos/saltstack/salt/releases/latest \ + | sed -n 's/.*"tag_name": *"v\([0-9.]*\(-[0-9]*\)\?\)".*/\1/p') || return 1 + fi + + version=$(__salt_version_string "$version") + + tarball="salt-${version}-onedir-linux-${arch}.tar.xz" + url="https://github.com/saltstack/salt/releases/download/v${version}/${tarball}" + extractdir="/opt/saltstack/salt" + + echoinfo "Downloading Salt onedir: $url" + wget -q "$url" -O "/tmp/${tarball}" || return 1 + + # Validate tarball + if ! tar -tf "/tmp/${tarball}" >/dev/null 2>&1; then + echoerror "Invalid or corrupt onedir tarball" + return 1 + fi + + # Prepare extraction + rm -rf /opt/saltstack/salt || true + mkdir -p "${extractdir}" + tar --strip-components=1 -xf "/tmp/${tarball}" -C "$extractdir" || return 1 + + chmod -R 755 "${extractdir}" + + return 0 +} + +install_alt_linux_onedir_post() { + + # Add onedir paths system-wide + cat >/etc/profile.d/saltstack.sh <<'EOF' +export PATH=/opt/saltstack/salt:/opt/saltstack/salt/bin:$PATH +EOF + + chmod 644 /etc/profile.d/saltstack.sh + + for fname in api master minion syndic; do + # Skip salt-api since the service should be opt-in and not necessarily started on boot + [ $fname = "api" ] && continue + + # Skip if not meant to be installed + [ $fname = "master" ] && [ "$_INSTALL_MASTER" -eq $BS_FALSE ] && continue + [ $fname = "minion" ] && [ "$_INSTALL_MINION" -eq $BS_FALSE ] && continue + [ $fname = "syndic" ] && [ "$_INSTALL_SYNDIC" -eq $BS_FALSE ] && continue + + systemctl disable --now "salt-${fname}.service" 2>/dev/null || true + + cat >"/etc/systemd/system/salt-${fname}.service" < Date: Wed, 2 Sep 2026 15:10:05 -0600 Subject: [PATCH 2/6] fix(bootstrap): map ALT Linux os-release ID to distro name /etc/os-release on ALT Linux 10/11 sets ID=altlinux, which was falling through to the default case in __gather_linux_system_info and setting DISTRO_NAME_L to 'altlinux' instead of 'alt_linux'. This mismatched every install_alt_linux_* function added for ALT Linux support, causing bootstrap to exit with 'No dependencies installation function found.' Add the missing case so both the /etc/*-release and os-release detection paths agree on 'ALT Linux' -> DISTRO_NAME_L=alt_linux. --- bootstrap-salt.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index f6758cc05..d3f3a2e50 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -1268,6 +1268,10 @@ __gather_linux_system_info() { n="Alpine Linux" v="${rv}" ;; + altlinux ) + n="ALT Linux" + v="${rv}" + ;; amzn ) # Amazon AMI's after 2014.09 match here n="Amazon Linux AMI" From 4eeed1722cb6c5550e1c464eec7e8fa95e608d63 Mon Sep 17 00:00:00 2001 From: Twangboy Date: Wed, 2 Sep 2026 15:18:36 -0600 Subject: [PATCH 3/6] fix(bootstrap): run apt-get update before onedir deps on ALT Linux install_alt_linux_onedir_deps() installed packages without refreshing the apt cache first, so on a fresh container it failed outright ('apt-get install' exit 100) rather than hitting the lock-retry path in __wait_for_apt. Run apt-get update first, matching the other ALT Linux deps functions. --- bootstrap-salt.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index d3f3a2e50..919c71ac7 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -8265,6 +8265,7 @@ install_alt_linux_deps() { } install_alt_linux_onedir_deps() { + __wait_for_apt apt-get update || return 1 __apt_get_install_noinput wget tar gzip gnupg ca-certificates || return 1 return 0 } From fe8facb35800d0f6d7456dfebb23b448e7fc48b5 Mon Sep 17 00:00:00 2001 From: Twangboy Date: Thu, 3 Sep 2026 15:36:19 -0600 Subject: [PATCH 4/6] fix(bootstrap): resolve bare major version for ALT Linux onedir installs install_alt_linux_onedir() only resolved ONEDIR_REV=latest; a bare 4-digit major version (e.g. '3006'), a documented, valid input per __validate_salt_version_arg, passed through unresolved and produced a nonexistent GitHub release tag (v3006 instead of e.g. v3006.26), so wget failed outright. Reuse __get_packagesite_onedir_latest(), the same artifactory directory-listing based resolver already used by the macOS/Windows/ Photon onedir installers, to resolve both 'latest' and a bare major version to the actual latest GA release before building the download URL. --- bootstrap-salt.sh | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 919c71ac7..839760928 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -8355,14 +8355,20 @@ install_alt_linux_onedir() { arch="x86_64" [ "$(uname -m)" = "aarch64" ] && arch="aarch64" - # Resolve "latest" to actual version + # Resolve "latest", or a bare major version (e.g. "3006"), to the actual + # latest GA release for that series via the artifactory directory listing + # (same mechanism used for macOS/Windows/Photon onedir installs). A full + # version string (e.g. "3006.26") is used as-is. if [ "$version" = "latest" ]; then - version=$(wget -qO- https://api.github.com/repos/saltstack/salt/releases/latest \ - | sed -n 's/.*"tag_name": *"v\([0-9.]*\(-[0-9]*\)\?\)".*/\1/p') || return 1 + __get_packagesite_onedir_latest || return 1 + version="$_GENERIC_PKG_VERSION" + elif [ "$(echo "$version" | grep -E '^[0-9]{4}$')" != "" ]; then + __get_packagesite_onedir_latest "$version" || return 1 + version="$_GENERIC_PKG_VERSION" + else + version=$(__salt_version_string "$version") fi - version=$(__salt_version_string "$version") - tarball="salt-${version}-onedir-linux-${arch}.tar.xz" url="https://github.com/saltstack/salt/releases/download/v${version}/${tarball}" extractdir="/opt/saltstack/salt" From 42b4156cc2f0463d7418ae0db02cdab7f1cf881e Mon Sep 17 00:00:00 2001 From: Twangboy Date: Thu, 3 Sep 2026 15:52:23 -0600 Subject: [PATCH 5/6] fix(bootstrap): symlink ALT Linux onedir binaries into /usr/bin install_alt_linux_onedir_post() only added /opt/saltstack/salt to PATH via /etc/profile.d/saltstack.sh, which only takes effect for login/ interactive shells. CI invokes tests via 'docker exec pytest ...', which runs without a login shell, so salt-call was never found on PATH ('stable' with a version arg is rewritten to 'onedir' internally, so this affected both the stable-* and onedir-* jobs). Symlink the onedir binaries into /usr/bin, which is always on PATH, matching how the onedir-via-package installs on other distros already work (their apt/yum packages ship real /usr/bin/salt-* entries). --- bootstrap-salt.sh | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index 839760928..a976350df 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -8394,13 +8394,20 @@ install_alt_linux_onedir() { install_alt_linux_onedir_post() { - # Add onedir paths system-wide + # Add onedir paths system-wide. This only takes effect for login/interactive + # shells that source /etc/profile.d - it does not help something like + # `docker exec salt-call ...`, which runs without one, so also + # symlink the onedir binaries into /usr/bin, already on PATH everywhere. cat >/etc/profile.d/saltstack.sh <<'EOF' export PATH=/opt/saltstack/salt:/opt/saltstack/salt/bin:$PATH EOF chmod 644 /etc/profile.d/saltstack.sh + for bin in /opt/saltstack/salt/salt*; do + [ -f "$bin" ] && [ -x "$bin" ] && ln -sf "$bin" "/usr/bin/$(basename "$bin")" + done + for fname in api master minion syndic; do # Skip salt-api since the service should be opt-in and not necessarily started on boot [ $fname = "api" ] && continue From 76f70c2c2ba7b229a5b5a2df4c43c61624aa366b Mon Sep 17 00:00:00 2001 From: Twangboy Date: Thu, 3 Sep 2026 16:05:15 -0600 Subject: [PATCH 6/6] fix(bootstrap): fetch ALT Linux onedir tarball from artifactory, fix arm64 naming GitHub Releases doesn't carry an onedir tarball asset for every historical point release - e.g. v3007.1's release page exists but only has source tarballs/docs, no onedir tarball, so 'stable 3007.1' (and any pinned older point release) failed outright. Broadcom's artifactory generic repo (packages.broadcom.com/artifactory/ saltproject-generic/onedir/) has the complete history and is already the source used by the macOS/Windows/Photon onedir installers and by the CI images' own provisioning, so fetch from there instead. Also fixes the Linux arm64 tarball name: onedir filenames (on both GitHub and artifactory) use 'arm64', not the 'aarch64' uname -m reports - a latent bug copied from the pre-existing, seemingly never tested on arm64, install_arch_linux_onedir(). --- bootstrap-salt.sh | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/bootstrap-salt.sh b/bootstrap-salt.sh index a976350df..6d7593a6c 100755 --- a/bootstrap-salt.sh +++ b/bootstrap-salt.sh @@ -8353,7 +8353,8 @@ install_alt_linux_git_post() { install_alt_linux_onedir() { version="${ONEDIR_REV:-latest}" arch="x86_64" - [ "$(uname -m)" = "aarch64" ] && arch="aarch64" + # Onedir tarball filenames use "arm64", not the "aarch64" uname reports. + [ "$(uname -m)" = "aarch64" ] && arch="arm64" # Resolve "latest", or a bare major version (e.g. "3006"), to the actual # latest GA release for that series via the artifactory directory listing @@ -8370,7 +8371,12 @@ install_alt_linux_onedir() { fi tarball="salt-${version}-onedir-linux-${arch}.tar.xz" - url="https://github.com/saltstack/salt/releases/download/v${version}/${tarball}" + # GitHub Releases doesn't carry an onedir tarball asset for every + # historical point release (only newer ones do), while the artifactory + # generic repo has the complete history - it's the same source already + # used by the macOS/Windows/Photon onedir installers, and by the CI + # images' own provisioning. + url="https://${_REPO_URL}/saltproject-generic/onedir/${version}/${tarball}" extractdir="/opt/saltstack/salt" echoinfo "Downloading Salt onedir: $url"