Merge improvements to mk-sbuild, fixing typo in manpage

This commit is contained in:
Christopher James Halse Rogers 2011-05-02 15:04:29 +10:00
commit 328def15a2
4 changed files with 301 additions and 192 deletions

16
debian/changelog vendored
View File

@ -1,3 +1,19 @@
ubuntu-dev-tools (0.124) UNRELEASED; urgency=low
* mk-sbuild:
- Disable daemons with a policy-rc.d script (like pbuilder does)
- Move package installation after option parsing.
- Exit 0 when showing help, and support -h.
- Determine distribution from release name (via distro-info).
- Reformat manpage.
- Install qemu-user-static instead of qemu-kvm-extras-static.
- Put schroot configuration in chroot.d/sbuild-$chroot (LP: #736808)
- Understand Debian distribution synonyms, and store the chroot under the
code name.
- Support Debian experimental.
-- Stefano Rivera <stefanor@debian.org> Sun, 24 Apr 2011 20:35:51 +0200
ubuntu-dev-tools (0.122) unstable; urgency=low ubuntu-dev-tools (0.122) unstable; urgency=low
[ Ted Gould ] [ Ted Gould ]

View File

@ -4,10 +4,7 @@
mk\-sbuild \- creates chroots via schroot and sbuild mk\-sbuild \- creates chroots via schroot and sbuild
.SH SYNOPSIS .SH SYNOPSIS
\fBmk\-sbuild\fR [\fB\-\-arch=ARCH\fR] [\fB\-\-name=NAME\fR] \fBmk\-sbuild\fR [\fIoptions\fR...] <\fIrelease\fR>
[\fB\-\-personality=PERSONALITY\fR] [\fB\-\-debug\fR] [\fB\-\-source\-template=FILE\fR]
[\fB\-\-debootstrap\-mirror=URL\fR] [\fB\-\-distro=DISTRO\fR]
[\fB\-\-vg=VOLUME_GROUP\fR] [\fB\-\-type=SCHROOT_TYPE\fR] <\fBRelease\fR>
.SH DESCRIPTION .SH DESCRIPTION
\fBmk\-sbuild\fR creates chroots via schroot and sbuild. \fBmk\-sbuild\fR creates chroots via schroot and sbuild.
@ -15,49 +12,54 @@ mk\-sbuild \- creates chroots via schroot and sbuild
.SH OPTIONS .SH OPTIONS
Listed below are the command line options for mk\-sbuild: Listed below are the command line options for mk\-sbuild:
.TP .TP
.B \-\-arch=ARCH .B \-\-arch\fR=\fIARCH
What architecture to select (defaults to the native architecture). What architecture to select (defaults to the native architecture).
.TP .TP
.B \-\-name=NAME .B \-\-name\fR=\fINAME
Base name for the schroot (arch is appended). Base name for the schroot (arch is appended).
.TP .TP
.B \-\-personality=PERSONALITY .B \-\-personality\fR=\fIPERSONALITY
What personality to use (defaults to match \-\-arch). What personality to use (defaults to match \fB\-\-arch\fR).
.TP .TP
.B \-\-debug .B \-\-debug
Turn on script debugging. Turn on script debugging.
.TP .TP
.B \-\-skip\-updates .B \-\-skip\-updates
Do not include the \-updates pocket in the installed sources.list. Do not include the \fB\-updates\fR pocket in the installed
\fBsources.list\fR.
.TP .TP
.B \-\-source\-template=FILE .B \-\-source\-template\fR=\fIFILE
Use FILE as the sources.list template (defaults to $HOME/.mk\-sbuild.sources). Use \fIFILE\fR as the \fBsources.list\fR template (defaults to
\fI$HOME\fB/.mk\-sbuild.sources\fR).
.TP .TP
.B \-\-debootstrap\-mirror=URL .B \-\-debootstrap\-mirror\fR=\fIURL
Use URL as the debootstrap source (defaults to http://ports.ubuntu.com for lpia, Use \fIURL\fR as the debootstrap source (defaults to
official Ubuntu repositories for the supported architectures). \fBhttp://ports.ubuntu.com\fR where appropriate, official Ubuntu
repositories for the supported architectures).
.TP .TP
.B \-\-debootstrap\-include=alpha,beta .B \-\-debootstrap\-include\fR=\fIalpha,beta
Pass along a comma separated list of packages to debootstrap's \-\-include Pass along a comma separated list of packages to debootstrap's
argument. See debootstrap (8) for more details. \fB\-\-include\fR argument. See \fBdebootstrap\fR (8) for more details.
.TP .TP
.B \-\-debootstrap\-exclude=alpha,beta .B \-\-debootstrap\-exclude\fR=\fIalpha,beta
Pass along a comma separated list of packages to debootstrap's \-\-exclude Pass along a comma separated list of packages to debootstrap's
argument. WARNING: be careful using this option as you can end up \fB\-\-exclude\fR argument.
excluding essential package. See debootstrap (8) for more details. \fBWARNING:\fR be careful using this option as you can end up
excluding essential package. See \fBdebootstrap \fR(8) for more details.
.TP .TP
.B \-\-distro=DISTRO .B \-\-distro\fR=\fIDISTRO
Enable distro-specific logic. Currently known distros: "ubuntu" (default) Enable distro-specific logic.
and "debian". When not provided, the distribution is determined from \fIrelease\fR.
Currently known distros: "\fBdebian\fR" and "\fBubuntu\fR".
.TP .TP
.B \-\-vg=VOLUME_GROUP .B \-\-vg\fR=\fIVOLUME_GROUP
Specify a volume group, and subsequently use a default SCHROOT_TYPE of Specify a volume group, and subsequently use a default \fBSCHROOT_TYPE\fR of
"lvm-snapshot" rather than "directory" (via aufs) mounts. "\fBlvm-snapshot\fR" rather than "\fBdirectory\fR" (via aufs) mounts.
.TP .TP
.B \-\-type=SHROOT_TYPE .B \-\-type\fR=\fISHROOT_TYPE
Specify a SCHROOT_TYPE. Supported values are "directory" (default if Specify a \fBSCHROOT_TYPE\fR. Supported values are "\fBdirectory\fR"
\-\-vg not specified), "lvm-snapshot" (default if \-\-vg specified), (default if \fB\-\-vg\fR not specified), "\fBlvm-snapshot\fR" (default
"btrfs-snapshot", and "file". if \fB\-\-vg\fR specified), "\fBbtrfs-snapshot\fR", and "\fBfile\fR".
.SH ENVIRONMENT VARIABLES .SH ENVIRONMENT VARIABLES
.TP .TP
@ -71,61 +73,67 @@ Size of snapshot LVs (defaults to 4G).
Lines to append to schroot entries. Lines to append to schroot entries.
.TP .TP
.B SKIP_UPDATES .B SKIP_UPDATES
Do not include the \-updates pocket in the installed sources.list. Do not include the \fB\-updates\fR pocket (same as
\fB\-\-skip\-updates\fR)
.TP .TP
.B DEBOOTSTRAP_MIRROR .B DEBOOTSTRAP_MIRROR
Mirror location (same as \-\-debootstrap-mirror) Mirror location (same as \fB\-\-debootstrap-mirror\fR)
.TP .TP
.B DEBOOTSTRAP_INCLUDE .B DEBOOTSTRAP_INCLUDE
Comma separated list of packages to include when bootstrapping (same as \-\-debootstrap-include) Comma separated list of packages to include when bootstrapping (same as
\fB\-\-debootstrap-include\fR)
.TP .TP
.B DEBOOTSTRAP_EXCLUDE .B DEBOOTSTRAP_EXCLUDE
Comma separated list of packages to exclude when bootstrapping (same as \-\-debootstrap-exclude; see warning above) Comma separated list of packages to exclude when bootstrapping (same as
\fB\-\-debootstrap-exclude\fR; see warning above)
.TP .TP
.B SOURCE_CHROOTS_DIR .B SOURCE_CHROOTS_DIR
use SOURCE_CHROOTS_DIR as home of schroot source directories. (default Use \fBSOURCE_CHROOTS_DIR\fR as home of schroot source directories.
/var/lib/schroot/chroots) (default \fB/var/lib/schroot/chroots\fR)
.TP .TP
.B SOURCE_CHROOTS_TGZ .B SOURCE_CHROOTS_TGZ
use SOURCE_CHROOTS_TGZ as home of schroot source tarballs. (default Use \fBSOURCE_CHROOTS_TGZ\fR as home of schroot source tarballs.
/var/lib/schroot/tarballs) (default \fB/var/lib/schroot/tarballs\fR)
.TP .TP
.B CHROOT_SNAPSHOT_DIR .B CHROOT_SNAPSHOT_DIR
use CHROOT_SNAPSHOT_DIR as home of mounted btrfs snapshots (default Use \fBCHROOT_SNAPSHOT_DIR\fR as home of mounted btrfs snapshots.
/var/lib/schroot/snapshots) (default \fB/var/lib/schroot/snapshots\fR)
.SH FILES .SH FILES
.TP .TP
.B $HOME/.mk\-sbuild.rc .IB $HOME /.mk\-sbuild.rc
Sourced for environment variables (defined above). Sourced for environment variables (defined above).
.TP .TP
.B $HOME/.mk\-sbuild.sources[.$DISTRO] .IB $HOME /.mk\-sbuild.sources\fR[\fB. $DISTRO\fR]
Can contain a customized sources.list. Can contain a customized \fBsources.list\fR.
It will be read when creating the schroot. It will be read when creating the schroot.
If a file with ".ubuntu" or ".debian" is found (based on the \-\-distro If a file with "\fB.ubuntu\fR" or "\fB.debian\fR" is found (as
argument) that file will use used instead. appropriate) it will use used instead.
See sources.list(5) for more details on the format. See \fBsources.list\fR (5) for more details on the format.
.TP .TP
.B $HOME/.mk\-sbuild.schroot.conf[.$SCHROOT_TYPE] .IB $HOME /.mk\-sbuild.schroot.conf\fR[\fB. $SCHROOT_TYPE\fR]
Can contain a customized configuration section to be inserted into Can contain a customized configuration section to be inserted into
/etc/schroot/schroot.conf. \fB/etc/schroot/schroot.conf\fR.
If a file with ".lvm-snapshot", ".directory", or ".file" is found (based on the If a file with "\fB.lvm-snapshot\fR", "\fB.directory\fR", "\fB.file\fR",
values of the \-\-vg and \-\-type arguments) that file will use used instead. or "\fBbtrfs-snapshot\fR" is found (as appropriate) that file will use used instead.
See schroot.conf(5) for more details on the format. See \fBschroot.conf\fR (5) for more details on the format.
.SH USING THE CHROOTS .SH USING THE CHROOTS
.TP .TP
To CHANGE the golden image: \fBsudo schroot \-c ${CHROOT_NAME}\-source \-u root\fR To CHANGE the golden image: \fBsudo schroot \-c \fI${SCHROOT_NAME}\fB\-source \-u root\fR
.TP .TP
To ENTER an image snapshot: \fBschroot \-c ${CHROOT_NAME}\fR To ENTER an image snapshot: \fBschroot \-c \fI$SCHROOT_NAME\fR
.TP .TP
To BUILD within a snapshot: \fBsbuild \-A \-d ${SCHROOT_NAME} PACKAGE*.dsc\fR To BUILD within a snapshot: \fBsbuild \-A \-d \fI$SCHROOT_NAME $PACKAGE\fB*.dsc\fR
.TP .TP
for example, to update the packages in a golden image: \fBschroot \-c ${CHROOT_NAME}\-source \-u root -- sh \-c "apt-get \-qq update && apt-get \-qy upgrade && apt-get clean" </dev/null\fR for example, to update the packages in a \fBsid\-amd64\fR golden image:
\fBschroot \-c sid\-amd64\-source \-u root -- sh \-c "apt-get \-qq update && apt-get \-qy upgrade && apt-get clean" </dev/null\fR
.SH SEE ALSO .SH SEE ALSO
sbuild\-setup (7), sources.list (5), schroot.conf (5), .BR sbuild\-setup (7),
https://help.ubuntu.com/community/SbuildLVMHowto .BR sources.list (5),
.BR schroot.conf (5),
.B https://help.ubuntu.com/community/SbuildLVMHowto
.SH AUTHOR .SH AUTHOR
\fBmk\-sbuild\fR was written by Kees Cook <kees@ubuntu.com>. \fBmk\-sbuild\fR was written by Kees Cook <kees@ubuntu.com>.

340
mk-sbuild
View File

@ -5,6 +5,7 @@
# Kees Cook <kees@ubuntu.com> # Kees Cook <kees@ubuntu.com>
# Emmet Hikory <persia@ubuntu.com> # Emmet Hikory <persia@ubuntu.com>
# Scott Moser <smoser@ubuntu.com> # Scott Moser <smoser@ubuntu.com>
# Stefano Rivera <stefanor@ubuntu.com>
# #
# ################################################################## # ##################################################################
# #
@ -30,6 +31,131 @@
# It will deal with sbuild having not be installed and configured before. # It will deal with sbuild having not be installed and configured before.
set -e set -e
# Set up configurable defaults (loaded after option processing)
LV_SIZE="5G"
SNAPSHOT_SIZE="4G"
SOURCE_CHROOTS_DIR="/var/lib/schroot/chroots"
SOURCE_CHROOTS_TGZ="/var/lib/schroot/tarballs"
CHROOT_SNAPSHOT_DIR="/var/lib/schroot/snapshots"
function usage()
{
echo "Usage: $0 [OPTIONS] Release" >&2
echo "Options:"
echo " --arch=ARCH What architecture to select"
echo " --name=NAME Base name for the schroot (arch is appended)"
echo " --personality=PERSONALITY What personality to use (defaults to match --arch)"
echo " --vg=VG use LVM snapshots, with group VG"
echo " --debug Turn on script debugging"
echo " --skip-updates Do not include -updates pocket in sources.list"
echo " --source-template=FILE Use FILE as the sources.list template"
echo " --debootstrap-mirror=URL Use URL as the debootstrap source"
echo " --debootstrap-include=list Comma separated list of packages to include"
echo " --debootstrap-exclude=list Comma separated list of packages to exclude"
echo " --distro=DISTRO Install specific distro:"
echo " 'ubuntu' or 'debian' "
echo " (defaults to determining from release name)"
echo " --type=SCHROOT_TYPE Define the schroot type:"
echo " 'directory'(default), 'file', or 'btrfs-snapshot'"
echo " 'lvm-snapshot' is selected via --vg"
echo ""
echo "Configuration (via ~/.mk-sbuild.rc)"
echo " LV_SIZE Size of source LVs (default ${LV_SIZE})"
echo " SNAPSHOT_SIZE Size of snapshot LVs (default ${SNAPSHOT_SIZE})"
echo " SOURCE_CHROOTS_DIR Directory to store directory source chroots"
echo " SOURCE_CHROOTS_TGZ Directory to store file source chroots"
echo " CHROOT_SNAPSHOT_DIR Directory to mount open btrfs snaphshot chroots (default ${CHROOT_SNAPSHOT_DIR})"
echo " SCHROOT_CONF_SUFFIX Lines to append to schroot.conf entries"
echo " SKIP_UPDATES Enable --skip-updates"
echo " DEBOOTSTRAP_MIRROR Mirror location (same as --debootstrap-mirror)"
echo " DEBOOTSTRAP_INCLUDE Included packages (same as --debootstrap-include)"
echo " DEBOOTSTRAP_EXCLUDE Excluded packages (same as --debootstrap-exclude)"
echo " TEMPLATE_SOURCES A template for sources.list"
echo " TEMPLATE_SCHROOTCONF A template for schroot.conf stanza"
if [ -z "$1" ]; then
exit 1
fi
exit $1
}
if [ -z "$1" ]; then
usage
fi
OPTS=`getopt -o 'h' --long "help,debug,skip-updates,arch:,name:,source-template:,debootstrap-mirror:,debootstrap-include:,debootstrap-exclude:,personality:,distro:,vg:,type:" -- "$@"`
eval set -- "$OPTS"
VG=""
DISTRO=""
name=""
while :; do
case "$1" in
--debug)
set -x
shift
;;
--arch)
CHROOT_ARCH="$2"
if [ "$2" = "i386" ] || [ "$2" = "lpia" ] && [ -z "$personality" ];
then
personality="linux32"
fi
shift 2
;;
--personality)
personality="$2"
shift 2
;;
--skip-updates)
SKIP_UPDATES="1"
shift
;;
--name)
name="$2"
shift 2
;;
--source-template)
TEMPLATE_SOURCES="$2"
shift 2
if [ ! -r $TEMPLATE_SOURCES ]; then
echo "W: Template file $TEMPLATE_SOURCES is not readable"
echo "W: Continuing with default sources!"
fi
;;
--debootstrap-mirror)
DEBOOTSTRAP_MIRROR="$2"
shift 2
;;
--debootstrap-include)
DEBOOTSTRAP_INCLUDE="$2"
shift 2
;;
--debootstrap-exclude)
DEBOOTSTRAP_EXCLUDE="$2"
shift 2
;;
--distro)
DISTRO="$2"
shift 2
;;
--vg)
VG="$2"
shift 2
;;
--type)
SCHROOT_TYPE="$2"
shift 2
;;
--)
shift
break
;;
-h|--help|*)
usage 0
;;
esac
done
# For when schroot enters the chroot, we cannot be in a directory that # For when schroot enters the chroot, we cannot be in a directory that
# will not exist in the chroot. # will not exist in the chroot.
cd / cd /
@ -94,136 +220,60 @@ if ! id | fgrep -q '(sbuild)'; then
exit 1 exit 1
fi fi
# Set up configurable defaults (loaded after option processing)
LV_SIZE="5G"
SNAPSHOT_SIZE="4G"
SOURCE_CHROOTS_DIR="/var/lib/schroot/chroots"
SOURCE_CHROOTS_TGZ="/var/lib/schroot/tarballs"
CHROOT_SNAPSHOT_DIR="/var/lib/schroot/snapshots"
function usage()
{
echo "Usage: $0 [OPTIONS] Release" >&2
echo "Options:"
echo " --arch=ARCH What architecture to select"
echo " --name=NAME Base name for the schroot (arch is appended)"
echo " --personality=PERSONALITY What personality to use (defaults to match --arch)"
echo " --vg=VG use LVM snapshots, with group VG"
echo " --debug Turn on script debugging"
echo " --skip-updates Do not include -updates pocket in sources.list"
echo " --source-template=FILE Use FILE as the sources.list template"
echo " --debootstrap-mirror=URL Use URL as the debootstrap source"
echo " --debootstrap-include=list Comma separated list of packages to include"
echo " --debootstrap-exclude=list Comma separated list of packages to exclude"
echo " --distro=DISTRO Install specific distro:"
echo " 'ubuntu'(default), or 'debian'"
echo " --type=SCHROOT_TYPE Define the schroot type:"
echo " 'directory'(default), 'file', or 'btrfs-snapshot'"
echo " 'lvm-snapshot' is selected via --vg"
echo ""
echo "Configuration (via ~/.mk-sbuild.rc)"
echo " LV_SIZE Size of source LVs (default ${LV_SIZE})"
echo " SNAPSHOT_SIZE Size of snapshot LVs (default ${SNAPSHOT_SIZE})"
echo " SOURCE_CHROOTS_DIR Directory to store directory source chroots"
echo " SOURCE_CHROOTS_TGZ Directory to store file source chroots"
echo " CHROOT_SNAPSHOT_DIR Directory to mount open btrfs snaphshot chroots (default ${CHROOT_SNAPSHOT_DIR})"
echo " SCHROOT_CONF_SUFFIX Lines to append to schroot.conf entries"
echo " SKIP_UPDATES Enable --skip-updates"
echo " DEBOOTSTRAP_MIRROR Mirror location (same as --debootstrap-mirror)"
echo " DEBOOTSTRAP_INCLUDE Included packages (same as --debootstrap-include)"
echo " DEBOOTSTRAP_EXCLUDE Excluded packages (same as --debootstrap-exclude)"
echo " TEMPLATE_SOURCES A template for sources.list"
echo " TEMPLATE_SCHROOTCONF A template for schroot.conf stanza"
exit 1
}
if [ -z "$1" ]; then
usage
fi
OPTS=`getopt -o '' --long "help,debug,skip-updates,arch:,name:,source-template:,debootstrap-mirror:,debootstrap-include:,debootstrap-exclude:,personality:,distro:,vg:,type:" -- "$@"`
eval set -- "$OPTS"
VG=""
DISTRO="ubuntu"
name=""
while :; do
case "$1" in
--debug)
set -x
shift
;;
--arch)
CHROOT_ARCH="$2"
if [ "$2" = "i386" ] || [ "$2" = "lpia" ] && [ -z "$personality" ];
then
personality="linux32"
fi
shift 2
;;
--personality)
personality="$2"
shift 2
;;
--skip-updates)
SKIP_UPDATES="1"
shift
;;
--name)
name="$2"
shift 2
;;
--source-template)
TEMPLATE_SOURCES="$2"
shift 2
if [ ! -r $TEMPLATE_SOURCES ]; then
echo "W: Template file $TEMPLATE_SOURCES is not readable"
echo "W: Continuing with default sources!"
fi
;;
--debootstrap-mirror)
DEBOOTSTRAP_MIRROR="$2"
shift 2
;;
--debootstrap-include)
DEBOOTSTRAP_INCLUDE="$2"
shift 2
;;
--debootstrap-exclude)
DEBOOTSTRAP_EXCLUDE="$2"
shift 2
;;
--distro)
DISTRO="$2"
shift 2
;;
--vg)
VG="$2"
shift 2
;;
--type)
SCHROOT_TYPE="$2"
shift 2
;;
--)
shift
break
;;
--help|*)
usage
;;
esac
done
# To build the chroot, we need to know which release of Ubuntu to debootstrap # To build the chroot, we need to know which release of Ubuntu to debootstrap
RELEASE="$1" RELEASE="$1"
if [ -z "$RELEASE" ]; then if [ -z "$RELEASE" ]; then
usage usage
fi fi
# Determine distribution and possible synonyms
synonym=""
EXPERIMENTAL=0
if debian-distro-info --all | grep -Fqx "$RELEASE"; then
DISTRO="${DISTRO:-debian}"
if [ "$RELEASE" = $(debian-distro-info --devel) ]; then
synonym=unstable
elif [ "$RELEASE" = $(debian-distro-info --testing) ]; then
synonym=testing
elif [ "$RELEASE" = $(debian-distro-info --stable) ]; then
synonym=stable
elif [ "$RELEASE" = $(debian-distro-info --old) ]; then
synonym=oldstable
fi
elif ubuntu-distro-info --all | grep -Fqx "$RELEASE"; then
DISTRO="${DISTRO:-ubuntu}"
elif [ "$RELEASE" = "unstable" ]; then
DISTRO="${DISTRO:-debian}"
synonym="$RELEASE"
RELEASE=$(debian-distro-info --devel)
elif [ "$RELEASE" = "testing" ]; then
DISTRO="${DISTRO:-debian}"
synonym="$RELEASE"
RELEASE=$(debian-distro-info --testing)
elif [ "$RELEASE" = "stable" ]; then
DISTRO="${DISTRO:-debian}"
synonym="$RELEASE"
RELEASE=$(debian-distro-info --stable)
elif [ "$RELEASE" = "oldstable" ]; then
DISTRO="${DISTRO:-debian}"
synonym="$RELEASE"
RELEASE=$(debian-distro-info --old)
elif [ "$RELEASE" = "experimental" ]; then
DISTRO="${DISTRO:-debian}"
EXPERIMENTAL=1
name="${name:-experimental}"
RELEASE=$(debian-distro-info --devel)
elif [ -z "$DISTRO" ]; then
echo "Unable to determine distribution, please provide --distro" >&2
exit 1
fi
# By default, name the schroot the same as the release # By default, name the schroot the same as the release
if [ -z "$name" ]; then if [ -z "$name" ]; then
name="$RELEASE" name="$RELEASE"
else
# Disable synonym when a custom name is used:
synonym=""
fi fi
# By default, use the native architecture. # By default, use the native architecture.
@ -234,6 +284,12 @@ fi
CHROOT_NAME="${name}-${CHROOT_ARCH}" CHROOT_NAME="${name}-${CHROOT_ARCH}"
if [ -z "$synonym" ]; then
CHROOT_SYNONYM=""
else
CHROOT_SYNONYM="${synonym}-${CHROOT_ARCH}"
fi
# Load customizations # Load customizations
if [ -r ~/.mk-sbuild.rc ]; then if [ -r ~/.mk-sbuild.rc ]; then
. ~/.mk-sbuild.rc . ~/.mk-sbuild.rc
@ -406,7 +462,7 @@ if [ "$CHROOT_ARCH" != "$HOST_ARCH" ] ; then
*) *)
DEBOOTSTRAP_COMMAND=qemu-debootstrap DEBOOTSTRAP_COMMAND=qemu-debootstrap
if ! which "$DEBOOTSTRAP_COMMAND"; then if ! which "$DEBOOTSTRAP_COMMAND"; then
sudo apt-get install qemu-kvm-extras-static sudo apt-get install qemu-user-static
fi fi
;; ;;
esac esac
@ -460,6 +516,12 @@ else
deb ${DEBOOTSTRAP_MIRROR} RELEASE ${COMPONENTS} deb ${DEBOOTSTRAP_MIRROR} RELEASE ${COMPONENTS}
deb-src ${DEBOOTSTRAP_MIRROR} RELEASE ${COMPONENTS} deb-src ${DEBOOTSTRAP_MIRROR} RELEASE ${COMPONENTS}
EOM EOM
if [ "$EXPERIMENTAL" -eq 1 ]; then
cat >> "$TEMP_SOURCES" <<EOM
deb ${DEBOOTSTRAP_MIRROR} experimental ${COMPONENTS}
deb-src ${DEBOOTSTRAP_MIRROR} experimental ${COMPONENTS}
EOM
fi
if [ -z "$SKIP_UPDATES" ]; then if [ -z "$SKIP_UPDATES" ]; then
cat >> "$TEMP_SOURCES" <<EOM cat >> "$TEMP_SOURCES" <<EOM
deb ${DEBOOTSTRAP_MIRROR} RELEASE-updates ${COMPONENTS} deb ${DEBOOTSTRAP_MIRROR} RELEASE-updates ${COMPONENTS}
@ -476,6 +538,12 @@ fi
cat "$TEMP_SOURCES" | sed -e "s|RELEASE|$RELEASE|g" | \ cat "$TEMP_SOURCES" | sed -e "s|RELEASE|$RELEASE|g" | \
sudo bash -c "cat > $MNT/etc/apt/sources.list" sudo bash -c "cat > $MNT/etc/apt/sources.list"
rm -f "$TEMP_SOURCES" rm -f "$TEMP_SOURCES"
if [ "$EXPERIMENTAL" -eq 1 ]; then
echo 'APT::Default-Release "experimental";' \
| sudo tee "$MNT"/etc/apt/apt.conf.d/15sbuild > /dev/null
fi
# Copy the timezone (comment this out if you want to leave the chroot at UTC) # Copy the timezone (comment this out if you want to leave the chroot at UTC)
sudo cp /etc/localtime /etc/timezone "$MNT"/etc/ sudo cp /etc/localtime /etc/timezone "$MNT"/etc/
# Create a schroot entry for this chroot # Create a schroot entry for this chroot
@ -492,7 +560,6 @@ else
# it helps keep the schroot stanzas separated in the main # it helps keep the schroot stanzas separated in the main
# /etc/schroot/schroot.conf file. # /etc/schroot/schroot.conf file.
cat > "$TEMP_SCHROOTCONF" <<EOM cat > "$TEMP_SCHROOTCONF" <<EOM
[CHROOT_NAME] [CHROOT_NAME]
description=CHROOT_NAME description=CHROOT_NAME
groups=sbuild,root,admin groups=sbuild,root,admin
@ -528,18 +595,35 @@ fi
if [ ! -z "$personality" ]; then if [ ! -z "$personality" ]; then
echo "personality=$personality" >> "$TEMP_SCHROOTCONF" echo "personality=$personality" >> "$TEMP_SCHROOTCONF"
fi fi
if [ ! -z "$CHROOT_SYNONYM" ]; then
echo "aliases=$CHROOT_SYNONYM" >> "$TEMP_SCHROOTCONF"
fi
if [ ! -z "$SCHROOT_CONF_SUFFIX" ]; then if [ ! -z "$SCHROOT_CONF_SUFFIX" ]; then
echo "$SCHROOT_CONF_SUFFIX" >> "$TEMP_SCHROOTCONF" echo "$SCHROOT_CONF_SUFFIX" >> "$TEMP_SCHROOTCONF"
fi fi
cat "$TEMP_SCHROOTCONF" | sed \ sed -e "s|CHROOT_NAME|$CHROOT_NAME|g" \
-e "s|CHROOT_NAME|$CHROOT_NAME|g" \
-e "s|CHROOT_PATH|$CHROOT_PATH|g" \ -e "s|CHROOT_PATH|$CHROOT_PATH|g" \
-e "s|SNAPSHOT_SIZE|$SNAPSHOT_SIZE|g" \ -e "s|SNAPSHOT_SIZE|$SNAPSHOT_SIZE|g" \
-e "s|SCHROOT_TYPE|$SCHROOT_TYPE|g" \ -e "s|SCHROOT_TYPE|$SCHROOT_TYPE|g" \
-e "s|CHROOT_SNAPSHOT_DIR|$CHROOT_SNAPSHOT_DIR|g" \ -e "s|CHROOT_SNAPSHOT_DIR|$CHROOT_SNAPSHOT_DIR|g" \
| \ "$TEMP_SCHROOTCONF" \
sudo bash -c "cat >> /etc/schroot/schroot.conf" | sudo tee "/etc/schroot/chroot.d/sbuild-$CHROOT_NAME" > /dev/null
rm -f "$TEMP_SCHROOTCONF" rm -f "$TEMP_SCHROOTCONF"
# Disable daemons in chroot:
sudo bash -c "cat >> $MNT/usr/sbin/policy-rc.d" <<EOM
#!/bin/sh
while true; do
case "\$1" in
-*) shift ;;
makedev) exit 0;;
x11-common) exit 0;;
*) exit 101;;
esac
done
EOM
sudo chmod a+x "$MNT"/usr/sbin/policy-rc.d
# Create image finalization script # Create image finalization script
sudo bash -c "cat >> $MNT/finish.sh" <<EOM sudo bash -c "cat >> $MNT/finish.sh" <<EOM
#!/bin/bash #!/bin/bash
@ -593,3 +677,5 @@ echo " To CHANGE the golden image: sudo schroot -c ${CHROOT_NAME}-source -u root
echo " To ENTER an image snapshot: schroot -c ${CHROOT_NAME}" echo " To ENTER an image snapshot: schroot -c ${CHROOT_NAME}"
echo " To BUILD within a snapshot: sbuild -A -d ${CHROOT_NAME} PACKAGE*.dsc" echo " To BUILD within a snapshot: sbuild -A -d ${CHROOT_NAME} PACKAGE*.dsc"
echo "" echo ""
# vi: set et:

View File

@ -32,7 +32,6 @@ BLACKLIST = {
'grep-merges': 'No Help', 'grep-merges': 'No Help',
'lp-project-upload': 'Returns non-zero after help. ' 'lp-project-upload': 'Returns non-zero after help. '
'Leaving u-d-t in LP: #524680', 'Leaving u-d-t in LP: #524680',
'mk-sbuild': 'Fires up apt-get before showing help',
'pbuilder-dist-simple': 'No Help', 'pbuilder-dist-simple': 'No Help',
'setup-packaging-environment': 'Throws Error', 'setup-packaging-environment': 'Throws Error',
'submittodebian': 'No Help', 'submittodebian': 'No Help',