]> snippets.scripts.mit.edu Git - .git/blame - apt-zephyr/apt-zephyr
kdo: Upstream krb5 now supports kswitch
[.git] / apt-zephyr / apt-zephyr
CommitLineData
2f0630d7
AK
1#!/bin/sh
2set -e
3
4# Defaults
5CLASS=
6INSTANCE=
7REALM=
8RECIPIENTS=
9SIG="$(hostname -f)"
10OPCODE=auto
11ZAUTH=
12
13# Read configuration
14. /etc/apt-zephyr.conf
15
2cca0470
AK
16send_zephyr ()
17{
18 zwrite \
19 ${CLASS:+-c "$CLASS"} \
20 ${INSTANCE:+-i "$INSTANCE"} \
21 ${REALM:+-r "$REALM"} \
22 ${SIG:+-s "$SIG"} \
23 ${OPCODE:+-O "$OPCODE"} \
24 ${ZAUTH:--d} \
25 ${RECIPIENTS:+$RECIPIENTS}
26}
27
2f0630d7
AK
28package ()
29{
30 package=$1
31 oldver=$2
32 cmp=$3
33 newver=$4
34
35 if [ "$newver" = '-' ] && [ "$oldver" = '-' ]; then
36 echo "Purging $package"
37 elif [ "$newver" = '-' ]; then
38 echo "Removing $package $oldver"
39 elif [ "$oldver" = '-' ]; then
40 echo "Installing $package $newver"
41 elif [ "$cmp" = '<' ]; then
42 echo "Upgrading $package $oldver to $newver"
43 elif [ "$cmp" = '=' ]; then
44 echo "Reinstalling $package $newver"
45 elif [ "$cmp" = '>' ]; then
46 echo "Downgrading $package $oldver to $newver"
47 else
48 echo "I'm confused: $*"
49 fi
50}
51
b714faeb
AK
52parse_v1 ()
53{
54 oldpkgs=$(mktemp -t "apt-zephyr-old.XXXXXX") || exit $?
55 newpkgs=$(mktemp -t "apt-zephyr-new.XXXXXX") || exit $?
56 xargs -r -d '\n' dpkg-deb -W | sort -o "$newpkgs"
57 cut -f 1 "$newpkgs" | xargs -r -d '\n' dpkg-query -W | \
58 sort -o "$oldpkgs"
59 join -t ' ' -j 1 -e '-' "$oldpkgs" "$newpkgs" | \
60 while IFS=' ' read -r package oldver newver; do
61 if dpkg --compare-versions "$oldver" lt "$newver"; then
62 package "$package" "$oldver" '<' "$newver"
63 elif dpkg --compare-versions "$oldver" eq "$newver"; then
64 package "$package" "$oldver" '=' "$newver"
65 else
66 package "$package" "$oldver" '>' "$newver"
67 fi
68 done
69 rm -f "$oldpkgs" "$newpkgs"
70}
71
e710ad29
AK
72parse_v2 ()
73{
74 while read -r line && [ -n "$line" ]; do :; done
75 while read -r package oldver cmp newver action; do
76 case "$action" in
77 '**CONFIGURE**' | '**REMOVE**')
78 package "$package" "$oldver" "$cmp" "$newver"
79 ;;
80 '**ERROR**')
81 echo "ERROR on $package $newver"
82 ;;
83 esac
84 done
85}
86
6d930f30
AK
87pre_install_pkgs ()
88{
89 read -r line
90 case "$line" in
91 'VERSION 2')
92 parse_v2 | send_zephyr
93 ;;
94 'VERSION *')
29ad7e24 95 echo "$0: unrecognized version: $line" | send_zephyr
6d930f30
AK
96 ;;
97 '')
98 ;;
99 *)
100 (echo "$line"; cat) | parse_v1 | send_zephyr
101 ;;
102 esac
103}
104
7871bb44
AK
105post_invoke ()
106{
107 echo 'Done.' | send_zephyr
108}
109
110if [ "$1" = "--pre-install-pkgs" ]; then
111 pre_install_pkgs
112elif [ "$1" = "--post-invoke" ]; then
113 post_invoke
114else
115 echo "usage: $0 {--pre-install-pkgs | --post-invoke}" >&2
116 echo "(Hint: you probably need to update /etc/apt/apt.conf.d/90zephyr.)" >&2
117fi
118
119exit 0