chiark / gitweb /
f1ebacac0d2f485fa2abb3b91ff1c5fdcdd16158
[distorted-chroot] / mess / maint / mkchrootconf
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