File: libvirt-daemon-config-network.postinst

package info (click to toggle)
libvirt 7.0.0-3%2Bdeb11u3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 145,532 kB
  • sloc: ansic: 502,645; xml: 180,512; python: 8,627; sh: 3,992; perl: 2,768; makefile: 509; javascript: 116; cpp: 22
file content (128 lines) | stat: -rw-r--r-- 4,094 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#!/bin/sh

set -e

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <postinst> `abort-remove'
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>
# for details, see https://www.debian.org/doc/debian-policy/ or
# the debian-policy package

create_config_from_template() {
    local config="$1"
    local template="$2"
    local lastver="$3"

    if [ "$4" != "--" ]; then
        echo "create_config_from_template called with the wrong number of arguments" >&2
        return 1
    fi
    for _ in $(seq 1 4); do
        shift
    done

    if [ -n "$2" ] && dpkg --compare-versions -- "$2" gt "$lastver"; then
        # The package is already configured, and the version that's been
        # configured is new enough to contain the config file
        if [ -e "$config.dpkg-backup" ]; then
            # The package had been configured in the past and has
            # subsequently been removed without purging, so a backup of
            # the config file is still present on the disk. Restore it
            mv -f "$config.dpkg-backup" "$config"
            return 0
        else
            # We're doing a regular upgrade. Don't change anything
            return 0
        fi
    else
        # We're either installing from scratch, or upgrading from a version
        # that didn't have the config file yet. Make a copy of the template
        # in the appropriate location and with the expected permissions
        install -o root -g root -m 0600 "$template" "$config"
        return 0
    fi
}

finish_conffile_transfer() {
    local conffile="$1"
    local lastver="$2"
    local pkgfrom="$3"
    local pkgto="$4"

    if [ "$5" != "--" ]; then
        echo "finish_conffile_transfer called with the wrong number of arguments" >&2
        return 1
    fi
    for _ in $(seq 1 5); do
        shift
    done

    # If we're upgrading rather than installing from scratch, we can assume
    # the transfer must have happened at some point in the past and stop here
    if [ -n "$2" ]; then
        return 0
    fi

    if [ -e "$conffile.dpkg-transfer" ]; then
        # Complete the process started in $pkgfrom's preinst by restoring the
        # version of the conffile containing local modifications
        echo "Finishing transfer of config file $conffile (from $pkgfrom to $pkgto) ..."
        mv -f "$conffile.dpkg-transfer" "$conffile"
        return 0
    fi

    if [ -e "$conffile.dpkg-disappear" ]; then
        # The conffile had been deleted by the admin, so let's return to
        # that state
        rm -f "$conffile" "$conffile.dpkg-disappear"
        return 0
    fi
}

case "$1" in
    configure)
        create_config_from_template \
            "/etc/libvirt/qemu/networks/default.xml" \
            "/usr/share/libvirt/networks/default.xml" \
            "6.9.0-2~" \
            -- \
            "$@"
        finish_conffile_transfer \
            "/etc/libvirt/qemu/networks/default.xml" \
            "6.9.0-2~" \
            "libvirt-daemon-system" \
            "libvirt-daemon-config-network" \
            -- \
            "$@"

        # Since we might have changed the on-disk configuration for some
        # services, restart them so that they can pick up the new settings
        if [ -d /run/systemd/system ]; then
            systemctl --system daemon-reload >/dev/null || true
            if systemctl is-active -q virtnetworkd; then
                systemctl restart virtnetworkd
            fi
            if systemctl is-active -q libvirtd; then
                systemctl restart libvirtd
            fi
        fi
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)
    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

#DEBHELPER#

exit 0