config is in apt-listchanges 3.10.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
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 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | #!/bin/sh
# vim:set fileencoding=utf-8 et ts=4 sts=4 sw=4:
set -e
PREFERENCES=/etc/apt/listchanges.conf
. /usr/share/debconf/confmodule
runPython()
{
tempdir=`mktemp --directory --suffix=.aptlc`
trap "rm -rf $tempdir" EXIT
temp="$tempdir/debconf-helper.py"
cat > "$temp" << 'EOF'
#!/usr/bin/python3
# vim:set fileencoding=utf-8 et ts=4 sts=4 sw=4:
# This file is shared between postinst and config
import configparser
import debconf
import os
import sys
PREFIX_SIZE=len('apt-listchannges')
DEFAULT_SEEN_DB='/var/lib/apt/listchanges.db'
SECTION='apt'
def _tmpl2Key(name):
return name[PREFIX_SIZE:].replace('-', '_')
def _debug(*args):
if 'APT_LISTCHANGES_DEBCONF_DEBUG' in os.environ:
print(*args, file=sys.stderr)
def _handleString(cfgkey, config, template, db, fromConfig):
_debug("handleString(", template, cfgkey, fromConfig, ")")
if fromConfig:
value = config.get(SECTION, cfgkey)
if value == 'none': value = ''
db.set(template, value)
else:
value = db.getString(template)
if value == '': value = 'none'
config.set(SECTION, cfgkey, value)
def _handleList(cfgkey, config, template, db, fromConfig):
_debug("handleList(", template, cfgkey, fromConfig, ")")
if fromConfig:
value = config.get(SECTION, cfgkey)
db.set(template, value.lower())
else:
value = db.getString(template)
config.set(SECTION, cfgkey, value)
def _handleBoolean(cfgkey, config, template, db, fromConfig):
value = config.getboolean(SECTION, cfgkey, fallback=None)
_debug("handleBoolean(", template, cfgkey, fromConfig, "), old config value:", value)
if fromConfig:
db.set(template, str(value).lower())
else:
newvalue = db.getBoolean(template)
if value == None or value != newvalue:
config.set(SECTION, cfgkey, str(newvalue).lower())
def _handleSeen(cfgkey, config, template, db, fromConfig):
# The 'save-seen' is very special: a path in config file,
# but in debconf is stored as boolean...
value = config.get(SECTION, cfgkey, fallback=None)
_debug("handleSeen(", template, cfgkey, fromConfig, "), old config value:", value)
if fromConfig:
db.set(template, str(value and value != 'none').lower())
elif not db.getBoolean(template):
value = 'none'
elif not value or value == 'none':
value = DEFAULT_SEEN_DB
config.set(SECTION, cfgkey, value)
NAMES = {'apt-listchanges/frontend' : _handleList,
'apt-listchanges/confirm' : _handleBoolean,
'apt-listchanges/email-address': _handleString,
'apt-listchanges/save-seen' : _handleSeen,
'apt-listchanges/which' : _handleList }
def _updateDebconfFromConfig(config, db):
_debug("updateDebconfFromConfig()")
for tmpl in sorted(NAMES):
cfgkey = _tmpl2Key(tmpl)
if config.has_option(SECTION, cfgkey):
NAMES[tmpl](cfgkey, config, tmpl, db, True)
def _communicateWithDebconf(config, db, is_postinst):
_debug("communicateWithDebconf(", is_postinst, ")")
# Handle frontend first
tmpl = 'apt-listchanges/frontend'
if not is_postinst:
db.forceInput(debconf.MEDIUM, tmpl)
db.go()
frontend = db.get(tmpl)
if is_postinst:
NAMES[tmpl](_tmpl2Key(tmpl), config, tmpl, db, False)
del NAMES[tmpl]
if frontend == 'none':
return
if frontend == 'mail':
del NAMES['apt-listchanges/confirm']
# Handle remaining variables
if not is_postinst:
for tmpl in sorted(NAMES):
db.forceInput(debconf.LOW, tmpl)
db.go()
else:
for tmpl in sorted(NAMES):
NAMES[tmpl](_tmpl2Key(tmpl), config, tmpl, db, False)
def main(argv):
if len(argv) < 3:
print("Usage: script postinst|config config_file mainscript_params",
file=sys.stderr)
sys.exit(1)
debconf.runFrontEnd()
is_postinst = argv[1] == 'postinst' # otherwise it is config
config_file = argv[2]
_debug("apt-listchanges debconf script started(", is_postinst, config_file, ")")
config = configparser.ConfigParser()
config.read(config_file)
if not config.has_section(SECTION):
config.add_section(SECTION)
try:
output = os.fdopen(3, "wt")
except Exception as ex:
_debug("failed to open file descriptor 3", str(ex))
output = sys.stdout
db = debconf.Debconf(write=output)
if not is_postinst:
_updateDebconfFromConfig(config, db)
_communicateWithDebconf(config, db, is_postinst)
if is_postinst:
with open(config_file + '.new', 'wt') as newfile:
config.write(newfile, space_around_delimiters=False)
os.fchmod(newfile.fileno(), 0o644)
if __name__ == "__main__":
main(sys.argv)
sys.exit(0)
EOF
python3 -B "$temp" "$@"
}
if which python3 2>/dev/null >&2; then
runPython config "$PREFERENCES" "$@"
else
echo "Deferring configuration of apt-listchanges until python3 is available" >&2
exit 0
fi
exit 0
# Make lintian happy
db_get apt-listchanges/frontend
db_get apt-listchanges/confirm
db_get apt-listchanges/email-address
db_get apt-listchanges/save-seen
db_get apt-listchanges/which
|