diff --git a/debian/changelog b/debian/changelog index a924747..472dfbc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -22,6 +22,9 @@ ubuntu-dev-tools (0.105) UNRELEASED; urgency=low * syncpackage: - Add -u parameter, to disable signing. + [ Christopher James Halse Rogers ] + * mk-sbuild: Add support for btrfs-snapshot based chroots + -- Stefano Rivera Tue, 26 Oct 2010 12:31:55 +0200 ubuntu-dev-tools (0.104) experimental; urgency=low diff --git a/doc/mk-sbuild.1 b/doc/mk-sbuild.1 index a270615..ff160eb 100644 --- a/doc/mk-sbuild.1 +++ b/doc/mk-sbuild.1 @@ -56,7 +56,8 @@ Specify a volume group, and subsequently use a default SCHROOT_TYPE of .TP .B \-\-type=SHROOT_TYPE Specify a SCHROOT_TYPE. Supported values are "directory" (default if -\-\-vg not specified), "lvm-snapshot" (default if \-\-vg specified), and "file". +\-\-vg not specified), "lvm-snapshot" (default if \-\-vg specified), +"btrfs-snapshot", and "file". .SH ENVIRONMENT VARIABLES .TP @@ -88,6 +89,11 @@ use SOURCE_CHROOTS_DIR as home of schroot source directories. (default .B SOURCE_CHROOTS_TGZ use SOURCE_CHROOTS_TGZ as home of schroot source tarballs. (default /var/lib/schroot/tarballs) +.TP +.B CHROOT_SNAPSHOT_DIR +use CHROOT_SNAPSHOT_DIR as home of mounted btrfs snapshots (default +/var/lib/schroot/snapshots) + .SH FILES .TP diff --git a/mk-sbuild b/mk-sbuild index 97485e6..ba535fd 100755 --- a/mk-sbuild +++ b/mk-sbuild @@ -99,6 +99,7 @@ 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() { @@ -117,7 +118,7 @@ function usage() echo " --distro=DISTRO Install specific distro:" echo " 'ubuntu'(default), or 'debian'" echo " --type=SCHROOT_TYPE Define the schroot type:" - echo " 'directory'(default), or 'file'" + echo " 'directory'(default), 'file', or 'btrfs-snapshot'" echo " 'lvm-snapshot' is selected via --vg" echo "" echo "Configuration (via ~/.mk-sbuild.rc)" @@ -125,6 +126,7 @@ function usage() 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)" @@ -283,6 +285,15 @@ case "$SCHROOT_TYPE" in # Set up some variables for use in the paths and names CHROOT_PATH="${SOURCE_CHROOTS_TGZ}/${CHROOT_NAME}.tgz" ;; +"btrfs-snapshot") + if [ ! -d "${SOURCE_CHROOTS_DIR}" ]; then + sudo mkdir -p "${SOURCE_CHROOTS_DIR}" + fi + if [ ! -d "${CHROOT_SNAPSHOT_DIR}" ]; then + sudo mkdir -p "${CHROOT_SNAPSHOT_DIR}" + fi + CHROOT_PATH="${SOURCE_CHROOTS_DIR}/${CHROOT_NAME}" + ;; *) echo 'unknown source type!?' >&2 exit 1 @@ -419,6 +430,14 @@ case "$SCHROOT_TYPE" in fi sudo mkdir -p "${MNT}" ;; +"btrfs-snapshot") + MNT="${CHROOT_PATH}" + if sudo btrfs subvolume list "${MNT}" >/dev/null 2>&1; then + echo "E: Subvolume ${MNT} already exists; aborting" >&2 + exit 1 + fi + sudo btrfs subvolume create "${MNT}" + ;; "file") MNT=`mktemp -d -t schroot-XXXXXX` esac @@ -496,6 +515,12 @@ union-type=aufs ${SCHROOT_TYPE}=CHROOT_PATH EOM ;; + btrfs-snapshot) + cat >> "${TEMP_SCHROOTCONF}" <> /etc/schroot/schroot.conf" rm -f "$TEMP_SCHROOTCONF" @@ -544,7 +570,7 @@ case "$SCHROOT_TYPE" in sudo umount "$MNT" rmdir "$MNT" ;; -"directory") +"directory"|"btrfs-snapshot") ;; "file") cd "$MNT"