From f5bcdd76d30d23a76e68682f0d12bbcd1442450a Mon Sep 17 00:00:00 2001 From: awalsh128 Date: Thu, 23 Mar 2023 22:19:43 -0700 Subject: [PATCH] Use APT syntax for name version delimitation and not a colon. --- install_and_cache_pkgs.sh | 14 +++++++------- lib.sh | 22 +++++----------------- pre_cache_action.sh | 5 ++--- 3 files changed, 14 insertions(+), 27 deletions(-) diff --git a/install_and_cache_pkgs.sh b/install_and_cache_pkgs.sh index 609e374..0ec55d6 100755 --- a/install_and_cache_pkgs.sh +++ b/install_and_cache_pkgs.sh @@ -33,8 +33,8 @@ manifest_main="" log "Package list:" for package in ${packages}; do read package_name package_ver < <(get_package_name_ver "${package}") - manifest_main="${manifest_main}${package_name}:${package_ver}," - log "- ${package_name}:${package_ver}" + manifest_main="${manifest_main}${package_name}=${package_ver}," + log "- ${package_name} (${package_ver})" done write_manifest "main" "${manifest_main}" "${cache_dir}/manifest_main.log" @@ -42,7 +42,7 @@ log_empty_line log "Installing apt-fast for optimized installs..." # Install apt-fast for optimized installs. -/bin/bash -c "$(curl -sL https://git.io/vokNn)" +# /bin/bash -c "$(curl -sL https://git.io/vokNn)" log "done" log_empty_line @@ -66,9 +66,8 @@ manifest_all="" install_log_filepath="${cache_dir}/install.log" log "Clean installing ${package_count} packages..." -apt_syntax_packages="$(convert_action_to_apt_syntax_packages "${packages}")" # Zero interaction while installing or upgrading the system via apt. -sudo DEBIAN_FRONTEND=noninteractive apt-fast --yes install ${apt_syntax_packages} > "${install_log_filepath}" +sudo DEBIAN_FRONTEND=noninteractive apt-fast --yes install ${packages} > "${install_log_filepath}" log "done" log "Installation log written to ${install_log_filepath}" @@ -77,7 +76,8 @@ log_empty_line installed_packages=$(get_installed_packages "${install_log_filepath}") log "Installed package list:" for installed_package in ${installed_packages}; do - log "- ${installed_package}" + # Reformat for human friendly reading. + log "- $(echo ${installed_package} | awk -F\= '{print $1" ("$2")"}')" done log_empty_line @@ -104,7 +104,7 @@ for installed_package in ${installed_packages}; do fi # Comma delimited name:ver pairs in the all packages manifest. - manifest_all="${manifest_all}${package_name}:${package_ver}," + manifest_all="${manifest_all}${package_name}=${package_ver}," done log "done (total cache size $(du -h ${cache_dir} | tail -1 | awk '{print $1}'))" diff --git a/lib.sh b/lib.sh index b4e8040..2144320 100755 --- a/lib.sh +++ b/lib.sh @@ -1,17 +1,5 @@ #!/bin/bash -############################################################################### -# Convert the APT syntax package (= delimited) to action syntax package -# (: delimited). -# Arguments: -# APT syntax package, with or without version. -# Returns: -# Action syntax package, with or without version. -############################################################################### -function convert_action_to_apt_syntax_packages() { - echo ${1} | sed 's/:/=/g' -} - ############################################################################### # Execute the Debian install script. # Arguments: @@ -23,7 +11,7 @@ function convert_action_to_apt_syntax_packages() { # Filepath of the install script, otherwise an empty string. ############################################################################### function execute_install_script { - local package_name=$(basename ${2} | awk -F\: '{print $1}') + local package_name=$(basename ${2} | awk -F\= '{print $1}') local install_script_filepath=$(\ get_install_script_filepath "${1}" "${package_name}" "${3}") if test ! -z "${install_script_filepath}"; then @@ -67,7 +55,7 @@ function get_installed_packages { while read -r line; do # ${regex} should be unquoted since it isn't a literal. if [[ "${line}" =~ ${regex} ]]; then - dep_packages="${dep_packages}${BASH_REMATCH[1]}:${BASH_REMATCH[4]} " + dep_packages="${dep_packages}${BASH_REMATCH[1]}=${BASH_REMATCH[4]} " else log_err "Unable to parse package name and version from \"${line}\"" exit 2 @@ -89,13 +77,13 @@ function get_installed_packages { ############################################################################### function get_package_name_ver { local ORIG_IFS="${IFS}" - IFS=\: read name ver <<< "${1}" + IFS=\= read name ver <<< "${1}" + IFS="${ORIG_IFS}" # If version not found in the fully qualified package value. if test -z "${ver}"; then ver="$(grep "Version:" <<< "$(apt-cache show ${name})" | awk '{print $2}')" fi - echo "${name}" "${ver}" - IFS="${ORIG_IFS}" + echo "${name}" "${ver}" } ############################################################################### diff --git a/pre_cache_action.sh b/pre_cache_action.sh index 328825f..326c3e9 100755 --- a/pre_cache_action.sh +++ b/pre_cache_action.sh @@ -56,8 +56,7 @@ log_empty_line versioned_packages="" log "Verifying packages..." for package in ${packages}; do - apt_syntax_package=$(convert_action_to_apt_syntax_packages ${package}) - if test ! "$(apt-cache show ${apt_syntax_package})"; then + if test ! "$(apt-cache show ${package})"; then echo "aborted" log "Package '${package}' not found." >&2 exit 5 @@ -80,7 +79,7 @@ log "- Normalized package list is '${normalized_versioned_packages}'." # Forces an update in cases where an accidental breaking change was introduced # and a global cache reset is required. -force_update_inc="0" +force_update_inc="1" value="${normalized_versioned_packages} @ ${version} ${force_update_inc}" log "- Value to hash is '${value}'."