]> git.pld-linux.org Git - projects/pld-builder.new.git/blame - admin/install-chroot.sh
Set the id for git repo
[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 () {
1e1c68d4 24 builder_pkgs="rpm-build poldek pwdutils net-tools which rpm-perlprov rpm-php-pearprov rpm-pythonprov bash vim"
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
9915447b 105mkdir -p rpm/packages
fb4193ac 106cd rpm
9915447b
KK
107git clone $git_server/rpm-build-tools rpm/packages/rpm-build-tools
108rpm/packages/rpm-build-tools/builder --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
dacb4272 112echo "GIT_LOGINNAME=$git_user" >> ~/.builderrc
fb4193ac
MM
113EOF
114 chb "sh" < install-specs
115 rm install-specs
116}
117
118install_build_tree () {
119 cat >install-bt <<EOF
120set -x
121rm -rf rpm
122mkdir rpm
123cd rpm
124mkdir SPECS SOURCES SRPMS RPMS BUILD
afa0d624
MM
125echo "%packager PLD bug tracking system ( http://bugs.pld-linux.org/ )">~/.rpmmacros
126echo "%vendor PLD">>~/.rpmmacros
127echo "%distribution $DISTTAG">>~/.rpmmacros
fb4193ac
MM
128EOF
129 chb "sh" < install-bt
130 rm install-bt
131}
132
133
134
135
136eval "$*" || usage
137default_config
138eval "$*"
139check_conf
140
cbe88683
MM
141rm -rf tmp-chroot
142mkdir tmp-chroot
143cd tmp-chroot
144
145cat >poldek.conf <<EOF
146$(poldek_src)
147$(common_poldek_opt)
abf36701 148cachedir = $chroot_dir/spools/poldek
cbe88683
MM
149keep_downloads = no
150EOF
151
152cat > install-$chroot_name.sh <<EOF
153#!/bin/sh
154set -x
155cd $PWD
156rm -rf $chroot_dir
abf36701 157mkdir -p $chroot_dir/spools/poldek
31fa68c3
KK
158mkdir $chroot_dir/dev
159mknod $chroot_dir/dev/null -m 666 c 1 3
cdf81929 160rpm --root $chroot_dir --initdb
9330cabd 161poldek --conf poldek.conf --root $chroot_dir -i\
cbe88683
MM
162 $builder_pkgs $builder_arch_pkgs
163EOF
164chmod 755 install-$chroot_name.sh
165
166echo "About to remove '$chroot_dir' and install it again, using"
167echo "install-$chroot_name.sh:"
168echo
169cat install-$chroot_name.sh
170echo
171cat <<EOF
172what to do?
c52da901 173 r) the script was already ran; continue,
cbe88683
MM
174 s) run it using sudo,
175 a) abort"
176EOF
177echo -n "[r/s/a]: "
178read ans
179case "$ans" in
180 r )
181 ;;
182 s )
183 sudo ./install-$chroot_name.sh
184 ;;
185 * )
186 echo "bye"
187 exit 1
188esac
189
507ad968
MM
190chr "ldconfig"
191
cbe88683
MM
192echo "OK"
193echo "installing conf..."
194cat >poldek.conf <<EOF
deda9a51 195$(poldek_src local)
cbe88683 196$(common_poldek_opt)
abf36701 197cachedir = /spools/poldek
507ad968 198keep_downloads = no
cbe88683
MM
199EOF
200
201chr "cat > /etc/poldek.conf" < poldek.conf
656894f4 202chr "useradd -u "$builder_uid" -c 'PLD $chroot_name builder' -d /home/users/builder -m -g users -s /bin/sh builder"
cbe88683
MM
203chr "cat > /etc/resolv.conf" < /etc/resolv.conf
204chr "cat > /etc/mtab" < /dev/null
4f8777fa 205chr "mkdir -p /spools/ready/" < /dev/null
8e75c308 206chr "mkdir -p /spools/poldek/" < /dev/null
7f3e2bd5 207chr "sed -e 's,^\(root:.*\)/bin/sh$,\1/bin/bash,' -i~ /etc/passwd"
cbe88683 208
465b0f80 209
abf36701
MM
210case $chroot_type in
211 src )
cbe88683
MM
212 install_SPECS_builder
213 ;;
abf36701 214 bin )
465b0f80
MM
215 install_build_tree
216 ;;
cbe88683 217esac
This page took 0.89089 seconds and 4 git commands to generate.