2007-05-10 09:14:28 +10:00
|
|
|
#!/bin/sh
|
2008-01-04 18:23:35 +01:00
|
|
|
# Copyright by:
|
|
|
|
# Jamin W. Collins <jcollins@asgardsrealm.net>
|
|
|
|
# Jordan Mantha <mantha@ubuntu.com>
|
2008-01-17 19:43:26 +01:00
|
|
|
# Siegfried-A. Gevatter <rainct@ubuntu.com>
|
2007-08-07 16:05:50 +02:00
|
|
|
# License: GPLv2 or later
|
2007-05-10 09:14:28 +10:00
|
|
|
#
|
2007-08-04 13:52:30 +02:00
|
|
|
# This script is a wrapper to use pbuilder with many different
|
2007-08-07 21:58:34 +02:00
|
|
|
# distributions / versions. (It was originally created because of
|
|
|
|
# bug #255165 in Debian.)
|
2007-08-04 13:52:30 +02:00
|
|
|
#
|
2007-08-07 16:05:50 +02:00
|
|
|
# If you want to use this copy of the script only for a single distribution
|
|
|
|
# / version, rename it to 'pbuilder-dapper', 'pbuilder-feisty', 'pbuilder-gutsy',
|
2007-08-07 20:20:03 +02:00
|
|
|
# or whatever it is. If you have an amd64, you can also use names like
|
|
|
|
# 'pbuilder-feisty-i386', etc.
|
2007-08-04 13:52:30 +02:00
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
# Base directory where pbuilder will put all the files it creates
|
2007-11-07 23:21:40 +01:00
|
|
|
# This is overriden by the global variable $PBUILDFOLDER
|
2007-08-04 13:52:30 +02:00
|
|
|
BASE_DIR="$HOME/pbuilder"
|
2007-05-10 09:14:28 +10:00
|
|
|
|
2007-11-07 23:21:40 +01:00
|
|
|
# Enable additional components by default? (universe and multiverse in Ubuntu,
|
2007-08-07 21:58:34 +02:00
|
|
|
# contrib and non-free in Debian.)
|
|
|
|
EXTRACOMP=1
|
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
# Save the log of the last operation in a dot-file? ('.lastlog' in BASE_DIR)
|
|
|
|
SAVELOG=0
|
|
|
|
|
|
|
|
# Allow this script to use /var/cache/apt/archives/ when possible
|
2008-01-22 18:35:56 +01:00
|
|
|
if [ -z $SYSCACHE ]
|
|
|
|
then
|
|
|
|
SYSCACHE=1
|
|
|
|
fi
|
2007-08-08 23:55:10 +02:00
|
|
|
|
2008-01-23 20:23:14 +01:00
|
|
|
CALLDIR=`pwd`
|
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
|
|
|
|
################################
|
2007-08-07 21:58:34 +02:00
|
|
|
|
2007-08-08 22:21:17 +02:00
|
|
|
ARCH=`dpkg-architecture -qDEB_HOST_ARCH`
|
2007-08-08 23:55:10 +02:00
|
|
|
SYSDIST=`lsb_release -cs`
|
2007-08-07 18:25:49 +02:00
|
|
|
|
2007-11-07 23:21:40 +01:00
|
|
|
if [ $PBUILDFOLDER ] && [ $PBUILDFOLDER != "" ]
|
|
|
|
then
|
|
|
|
BASE_DIR=$PBUILDFOLDER
|
|
|
|
fi
|
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
help()
|
|
|
|
{
|
|
|
|
echo "Insufficient number of arguments."
|
2007-08-08 23:55:10 +02:00
|
|
|
echo "Usage: $0 "$( [ "$1" != 'show-dist-flag' ] || echo "<distribution> " )$( [ $ARCH != "amd64" ] || echo "[i386|amd64] " )"[mainonly|allcomp] [withlog|nolog] <operation>"
|
2007-08-07 21:58:34 +02:00
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2007-08-07 20:20:03 +02:00
|
|
|
if [ ! -z `echo \`basename $0\` | grep -- '-'` ] && [ `basename $0` != 'pbuilder-dist' ]
|
2007-08-07 16:05:50 +02:00
|
|
|
then
|
|
|
|
if [ $# -lt 1 ]
|
|
|
|
then
|
2007-08-07 21:58:34 +02:00
|
|
|
help
|
2007-08-07 16:05:50 +02:00
|
|
|
fi
|
2007-08-07 20:20:03 +02:00
|
|
|
|
|
|
|
BINARCH=`basename $0 | cut -f3 -d '-'`
|
2007-08-07 16:05:50 +02:00
|
|
|
DISTRIBUTION=`basename $0 | cut -f2 -d '-'`
|
|
|
|
else
|
|
|
|
if [ $# -lt 2 ]
|
|
|
|
then
|
2007-08-07 21:58:34 +02:00
|
|
|
help show-dist-flag
|
2007-08-07 16:05:50 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
DISTRIBUTION=$1
|
2007-08-07 18:25:49 +02:00
|
|
|
shift 1
|
|
|
|
fi
|
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
|
2007-08-07 18:25:49 +02:00
|
|
|
if [ $1 = "i386" ] || [ $1 = "amd64" ]
|
|
|
|
then
|
2007-08-08 23:55:10 +02:00
|
|
|
if [ $ARCH = "amd64" ]; then
|
2007-08-07 18:25:49 +02:00
|
|
|
BINARCH=$1
|
|
|
|
else
|
|
|
|
echo "Warning: Architecture switching is not supported on your system; ignoring argument."
|
|
|
|
fi
|
|
|
|
|
|
|
|
shift 1
|
2007-08-07 16:05:50 +02:00
|
|
|
fi
|
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
if [ $1 = "mainonly" ]; then
|
2007-08-07 21:58:34 +02:00
|
|
|
EXTRACOMP=0
|
|
|
|
shift 1
|
2007-08-08 23:55:10 +02:00
|
|
|
elif [ $1 = "allcomp" ]; then
|
2007-08-07 21:58:34 +02:00
|
|
|
EXTRACOMP=1
|
|
|
|
shift 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
if [ $1 = "withlog" ]; then
|
2007-08-09 19:42:40 +02:00
|
|
|
SAVELOG=1
|
2007-08-08 23:55:10 +02:00
|
|
|
shift 1
|
|
|
|
elif [ $1 = "nolog" ]; then
|
2007-08-09 19:42:40 +02:00
|
|
|
SAVELOG=0
|
2007-08-08 23:55:10 +02:00
|
|
|
shift 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
distdata()
|
|
|
|
{
|
|
|
|
if [ "$1" = "debian" ]
|
|
|
|
then
|
|
|
|
# Set Debian specific data
|
2007-11-07 23:21:40 +01:00
|
|
|
ISDEBIAN=True
|
2008-01-22 18:35:56 +01:00
|
|
|
if [ -z $ARCHIVE ]
|
|
|
|
then
|
|
|
|
ARCHIVE="http://ftp.debian.org"
|
|
|
|
fi
|
2007-08-07 21:58:34 +02:00
|
|
|
COMPONENTS="main"$( [ $EXTRACOMP = 0 ] || echo " contrib non-free" )
|
|
|
|
else
|
|
|
|
# Set Ubuntu specific data
|
2007-11-07 23:21:40 +01:00
|
|
|
ISDEBIAN=False
|
2008-01-22 18:35:56 +01:00
|
|
|
if [ -z $ARCHIVE ]
|
|
|
|
then
|
|
|
|
ARCHIVE="http://archive.ubuntu.com/ubuntu"
|
|
|
|
fi
|
2007-08-07 21:58:34 +02:00
|
|
|
COMPONENTS="main restricted"$( [ $EXTRACOMP = 0 ] || echo " universe multiverse" )
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
2007-08-07 16:05:50 +02:00
|
|
|
|
|
|
|
case $DISTRIBUTION in
|
2007-10-23 18:56:59 +02:00
|
|
|
dapper|edgy|feisty|gutsy|hardy) # warty|hoary|breezy
|
2007-08-07 21:58:34 +02:00
|
|
|
distdata ubuntu
|
2007-08-07 16:05:50 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
oldstable|sarge|stable|etch|testing|lenny|unstable|sid|experimental)
|
2007-08-07 21:58:34 +02:00
|
|
|
distdata debian
|
2007-08-07 16:05:50 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
2007-11-07 23:21:40 +01:00
|
|
|
if [ ! -d $BASE_DIR/${DISTRIBUTION}-* ]
|
2007-08-07 16:05:50 +02:00
|
|
|
then
|
2007-11-07 23:21:40 +01:00
|
|
|
echo -n "Warning: Unknown distribution «$DISTRIBUTION». Do you want to continue [y/N]? "
|
|
|
|
read continue
|
|
|
|
|
|
|
|
if [ "$continue" != 'y' ] && [ "$continue" != 'Y' ]
|
|
|
|
then
|
|
|
|
echo "Aborting..."
|
|
|
|
exit 1
|
|
|
|
fi
|
2007-08-07 16:05:50 +02:00
|
|
|
fi
|
2007-08-07 21:58:34 +02:00
|
|
|
distdata
|
2007-08-07 16:05:50 +02:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2007-08-04 13:52:30 +02:00
|
|
|
|
2007-08-07 21:58:34 +02:00
|
|
|
OPERATION=$1
|
|
|
|
|
2007-05-10 09:14:28 +10:00
|
|
|
case $OPERATION in
|
2007-08-07 16:05:50 +02:00
|
|
|
create|update|build|clean|login|execute)
|
2007-08-09 19:42:40 +02:00
|
|
|
shift 1
|
2007-08-07 16:05:50 +02:00
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
2007-12-01 22:56:45 +01:00
|
|
|
if [ ${1##*.} = 'dsc' ]
|
|
|
|
then
|
|
|
|
OPERATION=build
|
|
|
|
else
|
|
|
|
echo "Unrecognized argument. Please use one of those:"
|
|
|
|
echo " create"
|
|
|
|
echo " update"
|
|
|
|
echo " build"
|
|
|
|
echo " clean"
|
|
|
|
echo " login"
|
|
|
|
echo " execute"
|
|
|
|
exit 1
|
|
|
|
fi
|
2007-08-07 16:05:50 +02:00
|
|
|
;;
|
2007-05-10 09:14:28 +10:00
|
|
|
esac
|
2007-08-04 13:52:30 +02:00
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
FOLDERBASE="${DISTRIBUTION}-$( ([ "$BINARCH" != "" ] && echo $BINARCH) || echo $ARCH )"
|
|
|
|
|
|
|
|
if [ ! -d $BASE_DIR/${FOLDERBASE}_result ]
|
|
|
|
then
|
|
|
|
mkdir -p $BASE_DIR/${FOLDERBASE}_result
|
|
|
|
fi
|
2007-08-07 16:05:50 +02:00
|
|
|
|
2007-08-08 23:55:10 +02:00
|
|
|
if [ $SYSCACHE != 0 ] && [ "$SYSDIST" = "$DISTRIBUTION" ] && [ "$ARCH" = "$BINARCH" -o -z $BINARCH ]
|
2007-08-07 16:05:50 +02:00
|
|
|
then
|
2008-01-22 18:35:56 +01:00
|
|
|
DEBCACHE='/var/cache/apt/archives/'
|
2007-05-10 09:14:28 +10:00
|
|
|
fi
|
2007-08-07 16:05:50 +02:00
|
|
|
|
2008-01-22 18:35:56 +01:00
|
|
|
if [ -n $http_proxy ] || [ -n $HTTP_PROXY ]
|
|
|
|
then
|
|
|
|
if [ -n $http_proxy ]
|
|
|
|
then
|
|
|
|
PROXY=$http_proxy
|
|
|
|
else
|
|
|
|
PROXY=$HTTP_PROXY
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ $ISDEBIAN = "False" ]
|
|
|
|
then
|
|
|
|
if [ ! -d $BASE_DIR/etc/$DISTRIBUTION/apt.conf/ ]
|
|
|
|
then
|
|
|
|
mkdir -p $BASE_DIR/etc/$DISTRIBUTION/apt.conf
|
|
|
|
fi
|
2008-01-22 19:01:44 +01:00
|
|
|
if [ ! -e $BASE_DIR/etc/$DISTRIBUTION/apt.conf/sources.list ]
|
|
|
|
then
|
|
|
|
echo "deb $ARCHIVE $DISTRIBUTION $COMPONENTS" > $BASE_DIR/etc/$DISTRIBUTION/apt.conf/sources.list
|
|
|
|
case $DISTRIBUTION in
|
|
|
|
dapper|edgy|feisty|gutsy )
|
|
|
|
cat >> $BASE_DIR/etc/$DISTRIBUTION/apt.conf/sources.list <<EOF
|
2008-01-22 18:35:56 +01:00
|
|
|
deb $ARCHIVE $DISTRIBUTION-security $COMPONENTS
|
|
|
|
deb $ARCHIVE $DISTRIBUTION-updates $COMPONENTS
|
|
|
|
EOF
|
2008-01-22 19:01:44 +01:00
|
|
|
;;
|
|
|
|
* )
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
fi
|
2008-01-22 18:35:56 +01:00
|
|
|
fi
|
|
|
|
|
2008-02-17 19:27:32 +01:00
|
|
|
if [ -z "$PBUILDAUTH" ]
|
2008-01-22 18:35:56 +01:00
|
|
|
then
|
2008-02-17 19:27:32 +01:00
|
|
|
if [ -n "$DESKTOP_SESSION" ]
|
2008-01-22 19:12:40 +01:00
|
|
|
then
|
|
|
|
case $DESKTOP_SESSION in
|
|
|
|
gnome )
|
|
|
|
SUDOREPLACE="gksudo -D \"Pbuilder\" "
|
|
|
|
;;
|
|
|
|
kde|kde4 )
|
|
|
|
SUDOREPLACE="kdesudo -d --comment \"Pbuilder\""
|
|
|
|
;;
|
|
|
|
* )
|
|
|
|
SUDOREPLACE="sudo"
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
else
|
2008-01-23 20:23:14 +01:00
|
|
|
SUDOREPLACE=sudo
|
2008-01-22 19:12:40 +01:00
|
|
|
fi
|
2008-01-22 18:35:56 +01:00
|
|
|
else
|
2008-01-22 19:12:40 +01:00
|
|
|
SUDOREPLACE=$PBUILDAUTH
|
2008-01-22 18:35:56 +01:00
|
|
|
fi
|
|
|
|
|
2008-02-17 19:27:32 +01:00
|
|
|
sudo pbuilder $OPERATION \
|
|
|
|
--basetgz "$BASE_DIR/$FOLDERBASE-base.tgz" \
|
|
|
|
--distribution "$DISTRIBUTION" \
|
2008-01-23 20:23:14 +01:00
|
|
|
--debootstrapopts --arch \
|
2008-02-17 19:27:32 +01:00
|
|
|
--debootstrapopts "$BINARCH" \
|
2008-01-22 18:35:56 +01:00
|
|
|
$( [ $SAVELOG = 0 ] || echo "--logfile $BASE_DIR/.lastlog" ) \
|
|
|
|
$( [ -z $PROXY ] || echo "--http-proxy $PROXY" ) \
|
|
|
|
$( [ -z $DEBCACHE ] || echo "--aptcache $DEBCACHE" ) \
|
2008-02-17 19:27:32 +01:00
|
|
|
--buildresult "$BASE_DIR/$FOLDERBASE_result" \
|
|
|
|
--mirror "$ARCHIVE" \
|
|
|
|
--aptconfdir "$BASE_DIR/etc/$DISTRIBUTION/apt.conf/" \
|
|
|
|
$@
|