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