File: apt-setup

package info (click to toggle)
apt-setup 1%3A0.127
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 2,524 kB
  • ctags: 21
  • sloc: sh: 1,152; makefile: 12
file content (100 lines) | stat: -rwxr-xr-x 2,061 bytes parent folder | download | duplicates (6)
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
#!/bin/sh
set -e

. /usr/share/debconf/confmodule

gendir=/usr/lib/apt-setup/generators

if [ "$1" = --log-output ] && type log-output >/dev/null 2>&1; then
	CATCHLOG=1
	shift
else
	CATCHLOG=
fi
export CATCHLOG

if [ "$1" ]; then
	ROOT="$1"
	chroot=chroot
else
	ROOT=
	chroot=
fi
export ROOT

# generators/01setup will create this; apt honours it (see apt.conf(5))
export APT_CONFIG=/etc/apt/apt.conf.new

log() {
        logger -t apt-setup "$@"
}
warning() {
        log "warning: $@"
}

gencount=$(ls "$gendir"/* | wc -l)
db_capb backup progresscancel
db_progress START 0 $(expr $gencount \* 200) apt-setup/progress/title

PROGRESS_FROM=0
PROGRESS_TO=100
export PROGRESS_FROM
export PROGRESS_TO

progress_advance() {
	db_progress SET $PROGRESS_TO || true
	PROGRESS_FROM=$PROGRESS_TO
	PROGRESS_TO=$(expr $PROGRESS_FROM + 100)
}

for generator in $gendir/*; do
	base=$(basename $generator | sed 's/[0-9]*//')
	base="${base%%.*}"
	if ! db_progress INFO apt-setup/progress/$base; then
		db_subst apt-setup/progress/fallback SCRIPT "$base"
		db_progress INFO apt-setup/progress/fallback || true
	fi
	
	tmp=$($chroot $ROOT tempfile)

	code=0
	$generator $ROOT$tmp || code=$?
	progress_advance

	case $code in
	    0)
		if ! apt-setup-verify \
			--from $PROGRESS_FROM --to $PROGRESS_TO \
			$ROOT$tmp $ROOT/etc/apt/sources.list.new; then
			warning "$generator output did not verify"
		fi
		;;
	    9)
		apt-setup-verify --invalid $ROOT$tmp $ROOT/etc/apt/sources.list.new || true
		warning "$generator output added commented out"
		;;
	    10)
		# TODO handle backup better
		log "$generator backed up"
		rm -f $ROOT$tmp $ROOT/etc/apt/sources.list.new
		db_progress STOP
		db_capb backup
		exit 10
		;;
	    *)
		warning "$generator returned error code $code; discarding output"
		;;
	esac
	rm -f $ROOT$tmp

	progress_advance
done
mv $ROOT/etc/apt/sources.list.new $ROOT/etc/apt/sources.list
if [ -s $ROOT/etc/apt/apt.conf.new ]; then
	mv $ROOT/etc/apt/apt.conf.new $ROOT/etc/apt/apt.conf
else
	rm -f $ROOT/etc/apt/apt.conf.new
fi

db_progress STOP
db_capb backup