| 1 | #! /bin/sh -e |
| 2 | |
| 3 | unset vg snapopt defdist defarch mirror scratchbase |
| 4 | badp=nil |
| 5 | while getopts "a:d:l:v:" opt; do |
| 6 | case $opt in |
| 7 | a) defarch=$OPTARG ;; |
| 8 | d) defdist=$OPTARG ;; |
| 9 | l) snapopt=$OPTARG ;; |
| 10 | v) vg=$OPTARG ;; |
| 11 | *) badp=t ;; |
| 12 | esac |
| 13 | done |
| 14 | shift $(( $OPTIND - 1 )) |
| 15 | case $# in 0) badp=t ;; esac |
| 16 | case $badp in |
| 17 | t) |
| 18 | cat >&2 <<EOF |
| 19 | usage: $0 [-a ARCH] [-d DIST] [-l SNAPOPT] [-v VG] |
| 20 | DIST-ARCH ... |
| 21 | EOF |
| 22 | exit 1 |
| 23 | ;; |
| 24 | esac |
| 25 | for arg in "$@"; do |
| 26 | case $arg in *-*-*) echo >&2 "$0: bad chroot name \`$arg'"; exit 1 ;; esac |
| 27 | done |
| 28 | if [ ! -d /dev/$vg/ ]; then echo >&2 "$0: no volume group \`$vg'"; exit 1; fi |
| 29 | |
| 30 | : ${vg=vg-$(hostname)} ${snapopt=-L4g} |
| 31 | : ${defdist=$(apt-config dump | |
| 32 | sed -n '/^APT::Default-Release "\(.*\)";$/s//\1/p')} |
| 33 | : ${defarch=$(dpkg-architecture -qDEB_HOST_ARCH_CPU)} |
| 34 | |
| 35 | for i in $(set | sed -n '/^nickmap_/s/=.*//p'); do unset $i; done |
| 36 | while read canon aliases; do |
| 37 | for alias in $aliases; do |
| 38 | eval "nickmap_$canon=\"\${nickmap_$canon+\$nickmap_$canon }$alias\"" |
| 39 | done |
| 40 | done <<EOF |
| 41 | jessie oldstable |
| 42 | stretch stable |
| 43 | buster testing |
| 44 | sid unstable |
| 45 | EOF |
| 46 | |
| 47 | cat <<EOF |
| 48 | ### -*-conf-*- GENERATED by mkchrootconf |
| 49 | EOF |
| 50 | for arg in "$@"; do |
| 51 | dist=${arg%-*} arch=${arg#*-} |
| 52 | eval "nick=\$nickmap_$dist" |
| 53 | |
| 54 | cat <<EOF |
| 55 | |
| 56 | [$arg] |
| 57 | EOF |
| 58 | |
| 59 | unset alias |
| 60 | for n in $nick; do alias=${alias+$alias,}$n-$arch; done |
| 61 | case $arch in |
| 62 | $defarch) for n in $dist $nick; do alias=${alias+$alias,}$n; done ;; |
| 63 | esac |
| 64 | case $dist in |
| 65 | $defdist) alias=${alias+$alias,}$arch ;; |
| 66 | esac |
| 67 | case ${alias+t} in |
| 68 | t) |
| 69 | cat <<EOF |
| 70 | aliases=$alias |
| 71 | EOF |
| 72 | ;; |
| 73 | esac |
| 74 | |
| 75 | case $arch in |
| 76 | i386) |
| 77 | cat <<EOF |
| 78 | personality=linux32 |
| 79 | EOF |
| 80 | ;; |
| 81 | amd64) |
| 82 | cat <<EOF |
| 83 | personality=linux |
| 84 | EOF |
| 85 | ;; |
| 86 | esac |
| 87 | |
| 88 | cat <<EOF |
| 89 | type=lvm-snapshot |
| 90 | description=Debian $dist/$arch autobuilder |
| 91 | device=/dev/$vg/$dist-$arch |
| 92 | lvm-snapshot-options=$snapopt |
| 93 | mount-options=-onosuid,data=writeback,barrier=0,commit=3600,noatime |
| 94 | location=/fs |
| 95 | groups=root,sbuild |
| 96 | root-groups=root,sbuild |
| 97 | source-groups=root |
| 98 | source-root-groups=root |
| 99 | profile=sbuild |
| 100 | EOF |
| 101 | done |