#!/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 mktemp) 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