X-Git-Url: https://sipb.mit.edu/gitweb.cgi/snippets/.git/blobdiff_plain/2cca0470955143de63836df1902fa31090cdb771..36b8f5a7528476345b176c10164170c13743037c:/apt-zephyr/apt-zephyr diff --git a/apt-zephyr/apt-zephyr b/apt-zephyr/apt-zephyr index a8e50df..fdf1318 100755 --- a/apt-zephyr/apt-zephyr +++ b/apt-zephyr/apt-zephyr @@ -49,42 +49,71 @@ package () fi } -read -r line -case "$line" in - 'VERSION 2') - while read -r line && [ -n "$line" ]; do :; done - while read -r package oldver cmp newver action; do - case "$action" in - '**CONFIGURE**' | '**REMOVE**') - package "$package" "$oldver" "$cmp" "$newver" - ;; - '**ERROR**') - echo "ERROR on $package $newver" - ;; - esac - done - ;; - 'VERSION *') - echo "$0: unrecognized version: $line" - ;; - '') - ;; - *) - oldpkgs=$(mktemp -t "apt-zephyr-old.XXXXXX") || exit $? - newpkgs=$(mktemp -t "apt-zephyr-new.XXXXXX") || exit $? - (echo "$line"; cat) | xargs -r -d '\n' dpkg-deb -W | sort -o "$newpkgs" - cut -f 1 "$newpkgs" | xargs -r -d '\n' dpkg-query -W | \ - sort -o "$oldpkgs" - join -t ' ' -j 1 -e '-' "$oldpkgs" "$newpkgs" | \ - while IFS=' ' read -r package oldver newver; do - if dpkg --compare-versions "$oldver" lt "$newver"; then - package "$package" "$oldver" '<' "$newver" - elif dpkg --compare-versions "$oldver" eq "$newver"; then - package "$package" "$oldver" '=' "$newver" - else - package "$package" "$oldver" '>' "$newver" - fi - done - rm -f "$oldpkgs" "$newpkgs" - ;; -esac | send_zephyr +parse_v1 () +{ + oldpkgs=$(mktemp -t "apt-zephyr-old.XXXXXX") || exit $? + newpkgs=$(mktemp -t "apt-zephyr-new.XXXXXX") || exit $? + xargs -r -d '\n' dpkg-deb -W | sort -o "$newpkgs" + cut -f 1 "$newpkgs" | xargs -r -d '\n' dpkg-query -W | \ + sort -o "$oldpkgs" + join -t ' ' -j 1 -e '-' "$oldpkgs" "$newpkgs" | \ + while IFS=' ' read -r package oldver newver; do + if dpkg --compare-versions "$oldver" lt "$newver"; then + package "$package" "$oldver" '<' "$newver" + elif dpkg --compare-versions "$oldver" eq "$newver"; then + package "$package" "$oldver" '=' "$newver" + else + package "$package" "$oldver" '>' "$newver" + fi + done + rm -f "$oldpkgs" "$newpkgs" +} + +parse_v2 () +{ + while read -r line && [ -n "$line" ]; do :; done + while read -r package oldver cmp newver action; do + case "$action" in + '**CONFIGURE**' | '**REMOVE**') + package "$package" "$oldver" "$cmp" "$newver" + ;; + '**ERROR**') + echo "ERROR on $package $newver" + ;; + esac + done +} + +pre_install_pkgs () +{ + read -r line + case "$line" in + 'VERSION 2') + parse_v2 | send_zephyr + ;; + 'VERSION *') + echo "$0: unrecognized version: $line" | send-zephyr + ;; + '') + ;; + *) + (echo "$line"; cat) | parse_v1 | send_zephyr + ;; + esac +} + +post_invoke () +{ + echo 'Done.' | send_zephyr +} + +if [ "$1" = "--pre-install-pkgs" ]; then + pre_install_pkgs +elif [ "$1" = "--post-invoke" ]; then + post_invoke +else + echo "usage: $0 {--pre-install-pkgs | --post-invoke}" >&2 + echo "(Hint: you probably need to update /etc/apt/apt.conf.d/90zephyr.)" >&2 +fi + +exit 0