fix: refresh offline repositories on fresh hosts
This commit is contained in:
parent
5c9b5d2ed0
commit
15a0e30a81
@ -725,11 +725,31 @@ validate_offline_package_requirements() {
|
||||
esac
|
||||
}
|
||||
|
||||
ensure_git_for_offline_refresh() {
|
||||
local target=$1
|
||||
|
||||
command -v git >/dev/null 2>&1 && return
|
||||
|
||||
case "$target" in
|
||||
"ubuntu "*|"debian "*)
|
||||
info "Installing Git before refreshing packaged repositories..."
|
||||
wait_for_apt_locks
|
||||
run_as_root apt-get update -y
|
||||
run_as_root env DEBIAN_FRONTEND=noninteractive apt-get install -y git
|
||||
;;
|
||||
*)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
refresh_offline_package_repositories() {
|
||||
local root=$1
|
||||
local target=${2:-}
|
||||
local repo_dir branch
|
||||
|
||||
offline_mode_is_force && return
|
||||
ensure_git_for_offline_refresh "$target"
|
||||
command -v git >/dev/null 2>&1 || return
|
||||
curl -m 3 -sI https://github.com >/dev/null 2>&1 || return
|
||||
|
||||
@ -762,7 +782,7 @@ run_offline_installer() {
|
||||
|
||||
[ -f "$installer" ] || return 1
|
||||
validate_offline_package_target "$root" "$target"
|
||||
refresh_offline_package_repositories "$root"
|
||||
refresh_offline_package_repositories "$root" "$target"
|
||||
chmod +x "$installer"
|
||||
|
||||
for env_name in \
|
||||
|
||||
@ -100,6 +100,26 @@ test_auto_offline_mode_refreshes_packaged_repositories() (
|
||||
rm -rf "$package_root" "$git_log"
|
||||
)
|
||||
|
||||
test_offline_refresh_installs_git_on_fresh_debian() (
|
||||
install_log="$(mktemp)"
|
||||
# shellcheck disable=SC2329
|
||||
command() {
|
||||
if [ "${1:-}" = "-v" ] && [ "${2:-}" = "git" ]; then
|
||||
return 1
|
||||
fi
|
||||
builtin command "$@"
|
||||
}
|
||||
# shellcheck disable=SC2329
|
||||
wait_for_apt_locks() { :; }
|
||||
# shellcheck disable=SC2329
|
||||
run_as_root() { printf '%s\n' "$*" >> "$install_log"; }
|
||||
|
||||
ensure_git_for_offline_refresh "debian 13 amd64"
|
||||
grep -q '^apt-get update -y$' "$install_log" || fail "fresh Debian did not refresh apt metadata"
|
||||
grep -q '^env DEBIAN_FRONTEND=noninteractive apt-get install -y git$' "$install_log" || fail "fresh Debian did not install Git"
|
||||
rm -f "$install_log"
|
||||
)
|
||||
|
||||
test_ubuntu_2604_offline_package_requires_npm() (
|
||||
package_root="$(mktemp -d)"
|
||||
mkdir -p "$package_root/packages/apt"
|
||||
@ -212,6 +232,8 @@ test_forced_offline_mode_does_not_refresh_repositories
|
||||
printf 'ok - forced offline mode does not refresh packaged repositories\n'
|
||||
test_auto_offline_mode_refreshes_packaged_repositories
|
||||
printf 'ok - auto offline mode refreshes packaged repositories\n'
|
||||
test_offline_refresh_installs_git_on_fresh_debian
|
||||
printf 'ok - fresh Debian installs Git before repository refresh\n'
|
||||
test_ubuntu_2604_offline_package_requires_npm
|
||||
printf 'ok - Ubuntu 26.04 offline package requires npm\n'
|
||||
test_dynamic_parallel_limit_avoids_awk_reserved_names
|
||||
|
||||
Loading…
Reference in New Issue
Block a user