mirror of
https://git.launchpad.net/ubuntu-dev-tools
synced 2025-03-13 16:11:15 +00:00
Merge improvements to mk-sbuild, fixing typo in manpage
This commit is contained in:
commit
328def15a2
16
debian/changelog
vendored
16
debian/changelog
vendored
@ -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 ]
|
||||||
|
124
doc/mk-sbuild.1
124
doc/mk-sbuild.1
@ -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
340
mk-sbuild
@ -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:
|
||||||
|
@ -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',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user