]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - admin/install-chroot.sh
Install gawk in src builder
[projects/pld-builder.new.git] / admin / install-chroot.sh
CommitLineData
cbe88683
MM
1#!/bin/sh
2
5eb86deb 3DIST="th"
fb4193ac
MM
4DISTTAG="PLD 3.0 (Th)"
5
cbe88683
MM
6die () {
7 echo "$0: $*" 1>&2
abf36701
MM
8 cat 1>&2 <<EOF
9USAGE: $0 name1=val2 name2=val2 ...
10
11Variables:
12 chroot_type=src or chroot_type=bin (required)
13 chroot_dir=/path/to/chroot (required)
abf36701 14 arch=i386 (required)
9915447b 15 git_server=git://<host>/<project> (required in src builder)
abf36701 16 builder_uid=2000 (optional, uid of builder user
fb4193ac 17 in chroot; defaults to current uid)
abf36701 18EOF
cbe88683
MM
19 exit 1
20}
21
22default_config () {
1e1c68d4 23 builder_pkgs="rpm-build poldek pwdutils net-tools which rpm-perlprov rpm-php-pearprov rpm-pythonprov bash vim"
9804a079
MM
24 builder_uid=`id -u`
25 dist_url="ftp://ftp.$DIST.pld-linux.org"
cbe88683 26
abf36701
MM
27 case "$chroot_type" in
28 src )
0d5ac479 29 builder_arch_pkgs="wget gawk git-core"
cbe88683 30 ;;
abf36701 31 bin )
927c62f2 32 builder_arch_pkgs="mount"
abf36701 33 ;;
cbe88683
MM
34 esac
35}
36
abf36701
MM
37check_conf () {
38 test "$chroot_dir" || die "no chroot_dir"
39 test "$arch" || die "no arch"
9804a079 40 test "$dist_url" || die "no dist_url"
cbe88683 41
abf36701
MM
42 case "$chroot_type" in
43 src )
9915447b 44 test "$git_server" || die "no git_server"
abf36701
MM
45 ;;
46 bin )
47 ;;
48 * )
49 die "evil chroot_type: $chroot_type"
50 ;;
51 esac
cbe88683 52}
cbe88683 53
cbe88683
MM
54poldek_src () {
55 if test "$1" ; then
236cd0d6
KK
56 cat <<EOF
57[source]
58name=local
59type=pndir
60path=/spools/ready
61pri=1
62EOF
cbe88683
MM
63 fi
64 cat <<EOF
236cd0d6
KK
65[source]
66name=main
67type=pndir
68path=$dist_url/dists/$DIST/PLD/$arch/RPMS/
69pri=6
70
71[source]
72name=main
73type=pndir
74path=$dist_url/dists/$DIST/PLD/noarch/RPMS/
75pri=6
76
cbe88683
MM
77EOF
78}
79
80common_poldek_opt () {
fb4193ac 81 cat <<EOF
236cd0d6 82[global]
cbe88683
MM
83particle_install = no
84greedy = yes
85rpmdef = _excludedocs 1
86EOF
87}
88
89chr() {
90 sudo chroot $chroot_dir su - root -c "$*"
91}
92
93chb() {
94 sudo chroot $chroot_dir su - builder -c "$*"
95}
96
fb4193ac 97install_SPECS_builder () {
e6f7b866
KK
98 chr "mknod /dev/random -m 644 c 1 8"
99 chr "mknod /dev/urandom -m 644 c 1 9"
fb4193ac
MM
100 cat >install-specs <<EOF
101set -x
102rm -rf rpm
9915447b 103mkdir -p rpm/packages
fb4193ac 104cd rpm
9915447b
KK
105git clone $git_server/rpm-build-tools rpm/packages/rpm-build-tools
106rpm/packages/rpm-build-tools/builder --init-rpm-dir
6bfbe7f8
MM
107echo "%packager PLD bug tracking system ( http://bugs.pld-linux.org/ )">~/.rpmmacros
108echo "%vendor PLD">>~/.rpmmacros
109echo "%distribution $DISTTAG">>~/.rpmmacros
fb4193ac
MM
110EOF
111 chb "sh" < install-specs
112 rm install-specs
113}
114
115install_build_tree () {
116 cat >install-bt <<EOF
117set -x
118rm -rf rpm
119mkdir rpm
120cd rpm
121mkdir SPECS SOURCES SRPMS RPMS BUILD
afa0d624
MM
122echo "%packager PLD bug tracking system ( http://bugs.pld-linux.org/ )">~/.rpmmacros
123echo "%vendor PLD">>~/.rpmmacros
124echo "%distribution $DISTTAG">>~/.rpmmacros
fb4193ac
MM
125EOF
126 chb "sh" < install-bt
127 rm install-bt
128}
129
130
131
132
133eval "$*" || usage
134default_config
135eval "$*"
136check_conf
137
cbe88683
MM
138rm -rf tmp-chroot
139mkdir tmp-chroot
140cd tmp-chroot
141
142cat >poldek.conf <<EOF
143$(poldek_src)
144$(common_poldek_opt)
abf36701 145cachedir = $chroot_dir/spools/poldek
cbe88683
MM
146keep_downloads = no
147EOF
148
149cat > install-$chroot_name.sh <<EOF
150#!/bin/sh
151set -x
152cd $PWD
153rm -rf $chroot_dir
abf36701 154mkdir -p $chroot_dir/spools/poldek
31fa68c3
KK
155mkdir $chroot_dir/dev
156mknod $chroot_dir/dev/null -m 666 c 1 3
cdf81929 157rpm --root $chroot_dir --initdb
9330cabd 158poldek --conf poldek.conf --root $chroot_dir -i\
cbe88683
MM
159 $builder_pkgs $builder_arch_pkgs
160EOF
161chmod 755 install-$chroot_name.sh
162
163echo "About to remove '$chroot_dir' and install it again, using"
164echo "install-$chroot_name.sh:"
165echo
166cat install-$chroot_name.sh
167echo
168cat <<EOF
169what to do?
c52da901 170 r) the script was already ran; continue,
cbe88683
MM
171 s) run it using sudo,
172 a) abort"
173EOF
174echo -n "[r/s/a]: "
175read ans
176case "$ans" in
177 r )
178 ;;
179 s )
180 sudo ./install-$chroot_name.sh
181 ;;
182 * )
183 echo "bye"
184 exit 1
185esac
186
507ad968
MM
187chr "ldconfig"
188
cbe88683
MM
189echo "OK"
190echo "installing conf..."
191cat >poldek.conf <<EOF
deda9a51 192$(poldek_src local)
cbe88683 193$(common_poldek_opt)
abf36701 194cachedir = /spools/poldek
507ad968 195keep_downloads = no
cbe88683
MM
196EOF
197
198chr "cat > /etc/poldek.conf" < poldek.conf
656894f4 199chr "useradd -u "$builder_uid" -c 'PLD $chroot_name builder' -d /home/users/builder -m -g users -s /bin/sh builder"
cbe88683
MM
200chr "cat > /etc/resolv.conf" < /etc/resolv.conf
201chr "cat > /etc/mtab" < /dev/null
4f8777fa 202chr "mkdir -p /spools/ready/" < /dev/null
8e75c308 203chr "mkdir -p /spools/poldek/" < /dev/null
7f3e2bd5 204chr "sed -e 's,^\(root:.*\)/bin/sh$,\1/bin/bash,' -i~ /etc/passwd"
cbe88683 205
465b0f80 206
abf36701
MM
207case $chroot_type in
208 src )
cbe88683
MM
209 install_SPECS_builder
210 ;;
abf36701 211 bin )
465b0f80
MM
212 install_build_tree
213 ;;
cbe88683 214esac
This page took 0.142624 seconds and 4 git commands to generate.