done
}
+genname() {
+ local suite="$1"; shift
+ local arch="$1"; shift
+
+ if [ -n "$sbuildnames" ]; then
+ local name="${suite}-${arch}-sbuild"
+ else
+ local name="${suite}_${arch}-dchroot"
+ fi
+
+ echo "$name"
+}
+
+
genschrootconf() {
local suite="$1"; shift
local arch="$1"; shift
local target="$1"; shift
local extra="${1:-}"; shift || true
+ local aliases=""
if [ -n "$extra" ]; then
local suite="${suite}-${extra}"
fi
- if [ -n "$sbuildnames" ]; then
- local name="${suite}-${arch}-sbuild"
- else
- local name="${suite}_${arch}-dchroot"
- fi
+ local name="$(genname "$suite" "$arch")"
+ local fullname="$name"
+ case "$arch" in
+ kfreebsd-*)
+ aliases="$name"
+ # FreeBSD only allows relatively short paths to mountpoints
+ # therefore saving a few charakters making the chroot dir fit
+ name=${name/kfreebsd-amd64/k-a}
+ name=${name/kfreebsd-i386/k-i}
+ ;;
+ esac
cat << EOF
[${name}]
-description=[${name}] Debian $suite chroot for $arch
+description=[${fullname}] Debian $suite chroot for $arch
type=file
file=$target
EOF
echo "profile=$personality"
if [ "$THISARCH" = "$arch" ] && [ -z "$buildd" ]; then
- echo "aliases=$suite"
+ if [ -z "$aliases" ] ; then
+ aliases="$suite"
+ else
+ aliases="$aliases,$suite"
+ fi
+ fi
+ if [ -n "$aliases" ] ; then
+ echo "aliases=$aliases"
fi
case "$arch" in
- armel|armhf|i386|powerpc|s390|sparc)
+ armel|armhf|i386|mips|mipsel|powerpc|s390|sparc)
echo "personality=linux32"
;;
esac
*)
if [ -z "$extra" ] && [ -z "$ubuntu" ]; then
genschrootconf "$suite" "$arch" "$target" "backports"
- [ -n "$buildd" ] && genschrootconf "$suite" "$arch" "$target" "backports-sloppy"
- [ -n "$buildd" ] && genschrootconf "$suite" "$arch" "$target" "lts"
- [ -n "$buildd" ] && genschrootconf "$suite" "$arch" "$target" "proposed-updates"
- [ -n "$buildd" ] && genschrootconf "$suite" "$arch" "$target" "security"
+ if [ -n "$buildd" ] ; then
+ genschrootconf "$suite" "$arch" "$target" "backports-sloppy"
+ genschrootconf "$suite" "$arch" "$target" "proposed-updates"
+ genschrootconf "$suite" "$arch" "$target" "security"
+ case "$arch" in
+ kfreebsd-*)
+ genschrootconf "$suite" "$arch" "$target" "kfreebsd"
+ genschrootconf "$suite" "$arch" "$target" "kfreebsd-security"
+ ;;
+ esac
+ fi
fi
esac
return 0
if [ -e /etc/schroot/dsa/default-mirror ]; then
mirror=$(cat /etc/schroot/dsa/default-mirror )
fi
-mirror="${mirror:-http://ftp.debian.org/debian}"
+mirror="${mirror:-https://deb.debian.org/debian}"
+smirror="https://deb.debian.org/debian-security"
configonly=""
force=""
basedir="/srv/chroot"
ubuntu=""
groupuser="Debian,guest,d-i"
grouproot=""
+include="apt,fakeroot,ca-certificates"
users=""
usersroot=""
bare=""
trap do_cleanup EXIT
buildd=""
-while getopts "a:b:Bcd:Dfg:hKk:m:o:O:p:r:sS:u" OPTION
+while getopts "a:b:Bcd:Dfg:hI:Kk:m:o:O:p:r:sS:u" OPTION
do
case $OPTION in
a)
bare="1"
groupuser=""
grouproot=""
- users="buildd"
- usersroot="buildd"
+ users="buildd,buildd2"
+ usersroot="buildd,buildd2"
personality="buildd"
suffix="sbuild"
;;
usage
exit 0
;;
+ I)
+ include="$include,$OPTARG"
+ ;;
K)
keep="4"
;;
fi
fi
+case "$suite" in
+ stretch|jessie|precise|trusty|xenial)
+ include="$include,apt-transport-https"
+ ;;
+esac
+
+bindir=$(mktemp -d)
+cleanup+=("rm -r $bindir")
+cat > "$bindir/wget" << 'EOF'
+#!/bin/sh
+exec /usr/bin/wget --ca-directory=/etc/ssl/ca-global "$@"
+EOF
+chmod +x "$bindir/wget"
+
set -x
-debootstrap \
+PATH="$bindir:$PATH" \
+ debootstrap \
--keyring "$keyring" \
- --include="apt" \
+ --include="$include" \
--variant=buildd \
--arch="$arch" \
+ --no-merged-usr \
"$suite_alias" "$rootdir" "$mirror" "$script"
echo "$tuple" > "$rootdir/etc/debian_chroot"
echo "force-unsafe-io" > "$rootdir/etc/dpkg/dpkg.cfg.d/force-unsafe-io"
done
EOF
chmod +x "$rootdir/usr/local/sbin/policy-rc.d"
+
+case "$suite" in
+ jessie) # LTS updates
+ echo "deb ${smirror} ${suite}/updates main" >> "$rootdir/etc/apt/sources.list"
+ chroot "$rootdir" apt-get update
+ chroot "$rootdir" apt-get dist-upgrade -y
+ ;;
+esac
+if [ -n "$ubuntu" ]; then
+ echo "deb $mirror ${suite}-updates main" >> "$rootdir/etc/apt/sources.list"
+ echo "deb $mirror ${suite}-security main" >> "$rootdir/etc/apt/sources.list"
+ chroot "$rootdir" apt-get update
+ chroot "$rootdir" apt-get dist-upgrade -y
+fi
+
[ -z "$bare" ] && [ -z "$ubuntu" ] && chroot "$rootdir" apt-get install -y --no-install-recommends locales-all
chroot "$rootdir" apt-get install -y --no-install-recommends build-essential
[ -z "$bare" ] && chroot "$rootdir" apt-get install -y --no-install-recommends zsh less vim fakeroot devscripts gdb
cleanup+=("rm -f $tartmp")
(
cd "$rootdir"
+ chmod 0755 "$rootdir"
tar caf "$tartmp" .
if ! [ -z "$keep" ]; then
- savelog -l -c 4 "$target"
+ savelog -l -c 2 "$target"
fi
mv "$tartmp" "$target"
)