aboutsummaryrefslogtreecommitdiff
path: root/debian/pbuilder.postinst
diff options
context:
space:
mode:
authorEddy Petrișor <eddy.petrisor@gmail.com>2008-03-02 06:36:06 +0200
committerEddy Petrișor <eddy.petrisor@gmail.com>2008-03-02 06:53:22 +0200
commitf58559cf780a239413ddb83e97b97baffc932bf6 (patch)
tree1e2e3688a0e106c0a57001d23329a24daeadf097 /debian/pbuilder.postinst
parent15858ea18dc276d1bc3d8dc1724a00ed264757bb (diff)
downloadpbuilder-f58559cf780a239413ddb83e97b97baffc932bf6.tar
pbuilder-f58559cf780a239413ddb83e97b97baffc932bf6.tar.gz
Add support for sources.list.d and validate autodetection.
A the system might use sources.list.d, but might miss sources.list entirely. All the relevant files are concatenated and the first deb source is picked from that list. When the autodection fails, make sure the responsability to insert the valid information drops on the shoulders of the user. Even if the shell is non-interactive, add some mirror. Signed-off-by: Eddy Petrișor <eddy.petrisor@gmail.com>
Diffstat (limited to 'debian/pbuilder.postinst')
-rwxr-xr-xdebian/pbuilder.postinst41
1 files changed, 33 insertions, 8 deletions
diff --git a/debian/pbuilder.postinst b/debian/pbuilder.postinst
index e2f5a39..4de5873 100755
--- a/debian/pbuilder.postinst
+++ b/debian/pbuilder.postinst
@@ -26,24 +26,49 @@ case "$1" in
CONFFILE=/etc/pbuilderrc
# if there is a custom file, then we shouldn't touch it
- if [ -f "$CONFFILE" ] ; then
+ if [ -f "$CONFFILE" ]
+ then
CURRENTMIRROR=$(grep -E "^MIRRORSITE=" "$CONFFILE" | sed 's#MIRRORSITE=##g')
- [ "$CURRENTMIRROR" = "_" ] || exit 0
+ [ -z "$CURRENTMIRROR" ] || exit 0
else
- # FIXME: try creating a file only with the MIRRORSITE line
+ # TODO: try creating a file only with the MIRRORSITE line
cp "/usr/share/doc/pbuilder/examples/pbuilderrc" "$CONFFILE"
- MIRRORSITE="_"
+ MIRRORSITE=""
+ db_set pbuilder/mirrorsite ""
fi
+ db_input medium pbuilder/mirrorsite || [ $? = 30 ]
+ db_go
+
db_get pbuilder/mirrorsite
MIRRORSITE="$RET"
- if [ "$MIRRORSITE" = "_" ]
+ # the "_" alternative is just a safety net,
+ # but that should really never happen
+ if [ -z "$MIRRORSITE" ] || [ "$MIRRORSITE" = "_" ]
then
- MIRRORSITE=$(grep -E '^deb ' /etc/apt/sources.list | head -n 1 | awk '{print $2;}')
+ TMPSRC=`mktemp`
+ SRCLISTDIR=/etc/apt/sources.list.d
+ [ -f /etc/apt/sources.list ] && cat /etc/apt/sources.list > "$TMPSRC" || true
+ [ -f $SRCLISTDIR/*.sources.list ] && cat $SRCLISTDIR/*.sources.list >> "$TMPSRC" || true
+ MIRRORSITE=$(grep -E '^deb ' "$TMPSRC" | head -n 1 | awk '{print $2;}')
+ rm -f "$TMPSRC"
+ while [ -z "$MIRRORSITE" ]
+ do
+ db_input pbuilder/nomirror || true
+ db_input high pbuilder/mirrorsite && RETCODE=$? || RETCODE=$?
+ db_go
+
+ # if the interface is non-interactive, still set a valid mirror
+ if [ $RETCODE = 30 ]
+ then
+ MIRRORSITE="http://ftp.debian.org/debian"
+ else
+ db_get pbuilder/mirrorsite
+ MIRRORSITE="$RET"
+ fi
+ done
db_set pbuilder/mirrorsite "$MIRRORSITE"
- db_input medium pbuilder/mirrorsite || true
- db_go
fi
TMPFILE=`mktemp`