From 5e3ed397d0f56515f861ce5bb27755b9a95bb61d Mon Sep 17 00:00:00 2001 From: Christian Heller Date: Sat, 26 Apr 2025 05:19:44 +0200 Subject: [PATCH] Fix. --- bookworm/scripts/lib/abort_if_command_unknown | 7 + bookworm/scripts/lib/apt_get_edited | 127 ++++++++++-------- bookworm/scripts/lib/core_setup | 4 +- testing/scripts/lib/abort_if_command_unknown | 8 +- trixie/scripts/from_older_upgrade.sh | 20 +-- 5 files changed, 90 insertions(+), 76 deletions(-) create mode 100644 bookworm/scripts/lib/abort_if_command_unknown mode change 100644 => 120000 testing/scripts/lib/abort_if_command_unknown diff --git a/bookworm/scripts/lib/abort_if_command_unknown b/bookworm/scripts/lib/abort_if_command_unknown new file mode 100644 index 0000000..81a3365 --- /dev/null +++ b/bookworm/scripts/lib/abort_if_command_unknown @@ -0,0 +1,7 @@ +. lib/abort + +abort_if_command_unknown() { + if ! which "$1" > /dev/null; then + abort "Expected command unavailable: ${1}." + fi +} diff --git a/bookworm/scripts/lib/apt_get_edited b/bookworm/scripts/lib/apt_get_edited index cddb15b..97a216e 100644 --- a/bookworm/scripts/lib/apt_get_edited +++ b/bookworm/scripts/lib/apt_get_edited @@ -1,70 +1,81 @@ +. lib/abort_if_command_unknown apt_get_edited() { - export DEBIAN_FRONTEND=noninteractive - _TO_IGNORE=\ +abort_if_command_unknown calc + +_TO_IGNORE=\ '(Reading database ... -Preparing to unpack +Preparing to unpack Unpacking ' - _PREFIXES=\ -'9 5 Get: -5 3 Get: -8 7 Installing new version of config file -6 4 Processing triggers for -7 5 Purging configuration files for -5 4 Removing obsolete conffile -4 2 Removing -5 5 Selecting previously unselected package -5 3 Setting up -11 8 dpkg: warning: unable to delete old directory' - _LAST_PREFIX='' - apt-get -y $1 2>&1 | while read _LINE; do - _DO_CONTINUE= - for _PLACEHOLDED in $(echo "${_TO_IGNORE}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do - _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g') - _LEN=$(echo -n "${_WHITESPACED}" | wc -c) - _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN}") - if [ "${_TO_CMP}" = "${_WHITESPACED}" ]; then - _DO_CONTINUE=1 - break - fi - done - if [ 1 = "${_DO_CONTINUE}" ]; then +_PREFIXES=\ +'9 5 0 Get: +5 2-3 0 Get: +6 2-4 0 Get: +7 2-3 0 Get: +4 2-3 0 Hit: +8 7 0 Installing new version of config file +6 4 0 Processing triggers for +7 5 0 Purging configuration files for +5 4 0 Removing obsolete conffile +4 2 0 Removing +5 5 1 Selecting previously unselected package +5 3 0 Setting up +11 8 1 dpkg: warning: unable to delete old directory' + +_LAST_PREFIX='' +DEBIAN_FRONTEND=noninteractive apt-get -y $1 2>&1 | while read _LINE; do + _DO_CONTINUE= + for _PLACEHOLDED in $(echo "${_TO_IGNORE}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do + _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g') + _LEN=$(echo -n "${_WHITESPACED}" | wc -c) + _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN}") + if [ "${_TO_CMP}" = "${_WHITESPACED}" ]; then + _DO_CONTINUE=1 + break + fi + done + if [ 1 = "${_DO_CONTINUE}" ]; then + continue + fi + _ITEM='' + for _PLACEHOLDED in $(echo "${_PREFIXES}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do + _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g') + _N_WORDS=$(echo "${_WHITESPACED}" | cut -d' ' -f1) + _TO_CMP=$(echo "${_LINE}" | wc -w) + if [ ! "${_N_WORDS}" -eq "${_TO_CMP}" ]; then continue fi - _ITEM='' - for _PLACEHOLDED in $(echo "${_PREFIXES}" | sed 's/ */#WHITESPACE_PLACEHOLDER#/g'); do - _WHITESPACED=$(echo "${_PLACEHOLDED}" | sed 's/#WHITESPACE_PLACEHOLDER#/ /g') - _N_WORDS=$(echo "${_WHITESPACED}" | cut -d' ' -f1) - _TO_CMP=$(echo "${_LINE}" | wc -w) - if [ ! "${_N_WORDS}" -eq "${_TO_CMP}" ]; then - continue - fi - _PREFIX=$(echo "${_WHITESPACED}" | cut -d' ' -f3-) - _LEN=$(echo -n "${_PREFIX}" | wc -c) - _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN}") - if [ "${_TO_CMP}" != "${_PREFIX}" ]; then - continue - elif [ "${_LAST_PREFIX}" != "${_PREFIX}" ]; then - if [ ! -z "${_LAST_PREFIX}" ]; then - echo '' - fi - echo -n "\r· ${_PREFIX}" - fi - _IDX_ITEM=$(echo "${_WHITESPACED}" | cut -d' ' -f2) - _ITEM=$(echo "${_LINE}" | cut -d' ' "-f${_IDX_ITEM}") - echo -n " ${_ITEM}" - _LAST_PREFIX="${_PREFIX}" - break - done - if [ -z "${_ITEM}" ]; then - if [ ! -z "${_LAST_PREFIX}" ]; then + _PREFIX=$(echo "${_WHITESPACED}" | cut -d' ' -f4-) + _LEN_PREFIX=$(echo -n "${_PREFIX}" | wc -c) + _TO_CMP=$(echo "${_LINE}" | cut -c "-${_LEN_PREFIX}") + if [ "${_TO_CMP}" != "${_PREFIX}" ]; then + continue + elif [ "${_LAST_PREFIX}" != "${_PREFIX}" ]; then + if [ ! -z "${_LAST_PREFIX}" ]; then echo '' fi - echo "\r# ${_LINE}" - _LAST_PREFIX='' + echo -n "\r· ${_PREFIX}" + fi + _IDX_ITEM=$(echo "${_WHITESPACED}" | cut -d' ' -f2) + _CUTOFF=$(echo "${_WHITESPACED}" | cut -d' ' -f3) + _ITEM=$(echo "${_LINE}" | cut -d' ' "-f${_IDX_ITEM}") + if [ "${_CUTOFF}" -gt 0 ]; then + _LEN_ITEM=$(echo -n "${_ITEM}" | wc -c) + _LEN_ITEM_CUT=$(calc "${_LEN_ITEM} - ${_CUTOFF} - 1" | tr -d '\t') + _ITEM=$(echo "${_ITEM}" | cut -c "-${_LEN_ITEM_CUT}") fi + echo -n " ${_ITEM}" + _LAST_PREFIX="${_PREFIX}" + break done - echo '' + if [ -z "${_ITEM}" ]; then + if [ ! -z "${_LAST_PREFIX}" ]; then + echo '' + fi + echo "\r# ${_LINE}" + _LAST_PREFIX='' + fi +done +echo '' } - diff --git a/bookworm/scripts/lib/core_setup b/bookworm/scripts/lib/core_setup index 71e1579..f14d4e7 100644 --- a/bookworm/scripts/lib/core_setup +++ b/bookworm/scripts/lib/core_setup @@ -30,9 +30,9 @@ core_setup() { # before purging, ensure tagged packages installed ensure_packages_of_tags ${_INSTALL_TAGS} echo "Autoremove and purge …" - apt_get_edited autopurge + apt_get_edited '-q -q autopurge' echo "And now: dist-upgrade …" - apt_get_edited dist-upgrade + apt_get_edited '-q -q dist-upgrade' echo "Setting up user: ${USERNAME}" adduser --quiet --disabled-password --gecos "" "${USERNAME}" diff --git a/testing/scripts/lib/abort_if_command_unknown b/testing/scripts/lib/abort_if_command_unknown deleted file mode 100644 index 81a3365..0000000 --- a/testing/scripts/lib/abort_if_command_unknown +++ /dev/null @@ -1,7 +0,0 @@ -. lib/abort - -abort_if_command_unknown() { - if ! which "$1" > /dev/null; then - abort "Expected command unavailable: ${1}." - fi -} diff --git a/testing/scripts/lib/abort_if_command_unknown b/testing/scripts/lib/abort_if_command_unknown new file mode 120000 index 0000000..5d77154 --- /dev/null +++ b/testing/scripts/lib/abort_if_command_unknown @@ -0,0 +1 @@ +../../../bookworm/scripts/lib/abort_if_command_unknown \ No newline at end of file diff --git a/trixie/scripts/from_older_upgrade.sh b/trixie/scripts/from_older_upgrade.sh index 41fe28c..6a90594 100755 --- a/trixie/scripts/from_older_upgrade.sh +++ b/trixie/scripts/from_older_upgrade.sh @@ -11,28 +11,30 @@ PATH_COPY_TAG='../copy/all' # to reduce clutter … apt-get -y autoremove apt-listchanges > /dev/null +apt-get -q -q -y install calc > /dev/null + apt_update_to_full_upgrade() { echo '· Updating package database …' - apt_get_edited update + apt_get_edited '-q -q update' - echo '\n· Soft-upgrading …' - apt_get_edited '-q -o Dpkg::Options::=--force-confnew upgrade' + echo '· Soft-upgrading …' + apt_get_edited '-q -q -o Dpkg::Options::=--force-confnew upgrade' - echo '\n· Full-upgrading …' - apt_get_edited '-q -o Dpkg::Options::=--force-confnew full-upgrade' + echo '· Full-upgrading …' + apt_get_edited '-q -q -o Dpkg::Options::=--force-confnew full-upgrade' } PATH_CONF_MIN_DEPS="${PATH_COPY_TAG}${PATH_ETC_APT_CONF}/99_minimize_dependencies" -echo "\n· Copying over ${PATH_CONF_MIN_DEPS} …" +echo "· Copying over ${PATH_CONF_MIN_DEPS} …" cp "${PATH_CONF_MIN_DEPS}" "${PATH_ETC_APT_CONF}/" apt_update_to_full_upgrade PATH_CONF_SOURCES="${PATH_COPY_TAG}${PATH_ETC_APT}/sources.list" -echo "\n· Copying over ${PATH_CONF_SOURCES} …" +echo "· Copying over ${PATH_CONF_SOURCES} …" cp "${PATH_CONF_SOURCES}" "${PATH_ETC_APT}/" apt_update_to_full_upgrade -echo '\n· Purging …' -apt_get_edited '-q autopurge' +echo '· Purging …' +apt_get_edited '-q -q autopurge' -- 2.30.2