4 ## THIS FILE IS UNDER PUPPET CONTROL. DON'T EDIT IT HERE.
5 ## USE: git clone git+ssh://$USER@puppet.debian.org/srv/puppet.debian.org/git/dsa-puppet.git
8 # Copyright (c) 2013 Peter Palfrader
10 # Permission is hereby granted, free of charge, to any person
11 # obtaining a copy of this software and associated documentation
12 # files (the "Software"), to deal in the Software without
13 # restriction, including without limitation the rights to use,
14 # copy, modify, merge, publish, distribute, sublicense, and/or sell
15 # copies of the Software, and to permit persons to whom the
16 # Software is furnished to do so, subject to the following
19 # The above copyright notice and this permission notice shall be
20 # included in all copies or substantial portions of the Software.
22 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
24 # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26 # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
27 # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
29 # OTHER DEALINGS IN THE SOFTWARE.
31 THISARCH=$(dpkg --print-architecture)
39 -a ARCH debootstrap arch [$arch]
40 -m MIRROR http mirror to use [$mirror]
41 -b basedir place where to build the chroot/tarball [$basedir]
55 cnt=$((${#cleanup[*]}-1))
56 for i in $(seq ${cnt} -1 0); do
57 ${cleanup[$i]} || true
62 local suite="$1"; shift
63 local arch="$1"; shift
64 local target="$1"; shift
65 local extra="${1:-}"; shift || true
67 if [ -n "$extra" ]; then
68 local suite="${suite}-${extra}"
72 [${suite}_${arch}-dchroot]
73 description=[${suite}_${arch}-dchroot] Debian $suite chroot for $arch
79 source-root-groups=adm
80 script-config=dsa/config
83 if [ "$THISARCH" = "$arch" ]; then
88 echo "personality=linux32"
96 genschrootconf "experimental" "$arch" "$target"
102 if [ -z "$extra" ]; then
103 genschrootconf "$suite" "$arch" "$target" "backports"
113 if [ -e /etc/schroot/dsa/default-mirror ]; then
114 mirror=$(cat /etc/schroot/dsa/default-mirror )
116 mirror="${mirror:-http://cdn.debian.net/debian}"
119 basedir="/srv/chroot"
123 while getopts "a:b:cfhm:" OPTION
151 shift $(($OPTIND - 1))
153 if [ "$#" != 1 ]; then
158 tuple="${suite}_${arch}"
160 [ -d "$basedir" ] || die "Error: $basedir does not exist (or is not a directory)."
162 target="$basedir/$tuple.tar.gz"
163 ! [ -e "$target" ] || [ -n "$force" ] || die "Error: $target already exists."
165 schrootconfig="/etc/schroot/chroot.d/${tuple}-dchroot"
166 ! [ -e "$schrootconfig" ] || [ -n "$force" ] || die "Error: $schrootconfig already exists."
172 genschrootconf "$suite" "$arch" "$target" | tee "$schrootconfig"
174 if [ -n "$configonly"]; then exit 0; fi
176 rootdir=$(mktemp -d "$basedir/create-$suite-XXXXXX")
177 cleanup+=("rm -r $rootdir")
178 cleanup+=("umount $rootdir/sys")
182 --keyring /usr/share/keyrings/debian-archive-keyring.gpg \
186 "$suite" "$rootdir" "$mirror"
187 echo "$tuple" > $rootdir/etc/debian_chroot
189 chroot "$rootdir" apt-get update
190 chroot "$rootdir" apt-get install -y --no-install-recommends policyrcd-script-zg2
191 cat > "$rootdir/usr/local/sbin/policy-rc.d" << 'EOF'
194 # policy-rc.d script for chroots.
195 # Copyright (c) 2007 Peter Palfrader <peter@palfrader.org>
202 echo "Not running services in chroot."
208 chmod +x "$rootdir/usr/local/sbin/policy-rc.d"
209 chroot "$rootdir" apt-get install -y --no-install-recommends zsh locales-all build-essential vim fakeroot devscripts gdb
210 rm -f "$rootdir/etc/apt/sources.list" "$rootdir/etc/apt/sources.list.d/*"
211 umount "$rootdir/sys" || true
213 (cd "$rootdir" && tar caf "$target" .)