From e8846642ef0085de612bfb4a5da94de4c1b6933c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 8 Nov 2025 11:11:45 -0800 Subject: [PATCH] Refactor setup_deb822_repo for optional architectures (#8983) * Refactor setup_deb822_repo for optional architectures Refactor setup_deb822_repo function to make architectures optional and improve GPG key download logic. * Refactor setup_deb822_repo for clarity and efficiency Refactor setup_deb822_repo function to improve parameter handling and error messages. --- misc/tools.func | 54 +++++++++++++++++-------------------------------- 1 file changed, 19 insertions(+), 35 deletions(-) diff --git a/misc/tools.func b/misc/tools.func index d78725de9..b6924a95e 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -1198,8 +1198,8 @@ ensure_apt_working() { } # ------------------------------------------------------------------------------ -# Standardized deb822 repository setup -# Validates all parameters and fails safely if any are empty +# Standardized deb822 repository setup (with optional Architectures) +# Always runs apt update after repo creation to ensure package availability # ------------------------------------------------------------------------------ setup_deb822_repo() { local name="$1" @@ -1207,56 +1207,40 @@ setup_deb822_repo() { local repo_url="$3" local suite="$4" local component="${5:-main}" - local architectures="${6:-$(dpkg --print-architecture)}" + local architectures="$6" # optional # Validate required parameters if [[ -z "$name" || -z "$gpg_url" || -z "$repo_url" || -z "$suite" ]]; then - msg_error "setup_deb822_repo: missing required parameters (name=$name, gpg=$gpg_url, repo=$repo_url, suite=$suite)" + msg_error "setup_deb822_repo: missing required parameters (name=$name repo=$repo_url suite=$suite)" return 1 fi - # Cleanup old configs for this app + # Cleanup cleanup_old_repo_files "$name" - - # Cleanup any orphaned .sources files from other apps cleanup_orphaned_sources - # Ensure keyring directory exists mkdir -p /etc/apt/keyrings || { - msg_error "Failed to create /etc/apt/keyrings directory" + msg_error "Failed to create /etc/apt/keyrings" return 1 } - # Download GPG key (with --yes to avoid interactive prompts) - curl -fsSL "$gpg_url" | gpg --dearmor --yes -o "/etc/apt/keyrings/${name}.gpg" 2>/dev/null || { - msg_error "Failed to download or import GPG key for ${name} from $gpg_url" + # Import GPG + curl -fsSL "$gpg_url" | gpg --dearmor --yes -o "/etc/apt/keyrings/${name}.gpg" || { + msg_error "Failed to import GPG key for ${name}" return 1 } - # Create deb822 sources file - cat </etc/apt/sources.list.d/${name}.sources -Types: deb -URIs: $repo_url -Suites: $suite -Components: $component -Architectures: $architectures -Signed-By: /etc/apt/keyrings/${name}.gpg -EOF + # Write deb822 + { + echo "Types: deb" + echo "URIs: $repo_url" + echo "Suites: $suite" + echo "Components: $component" + [[ -n "$architectures" ]] && echo "Architectures: $architectures" + echo "Signed-By: /etc/apt/keyrings/${name}.gpg" + } >/etc/apt/sources.list.d/${name}.sources - # Use cached apt update - local apt_cache_file="/var/cache/apt-update-timestamp" - local current_time=$(date +%s) - local last_update=0 - - if [[ -f "$apt_cache_file" ]]; then - last_update=$(cat "$apt_cache_file" 2>/dev/null || echo 0) - fi - - # For repo changes, always update but respect short-term cache (30s) - if ((current_time - last_update > 30)); then - $STD apt update - echo "$current_time" >"$apt_cache_file" - fi + $STD apt update } # ------------------------------------------------------------------------------