]>
Commit | Line | Data |
---|---|---|
cbe88683 MM |
1 | #!/bin/sh |
2 | ||
5eb86deb | 3 | DIST="th" |
fb4193ac MM |
4 | DISTTAG="PLD 3.0 (Th)" |
5 | ||
cbe88683 MM |
6 | die () { |
7 | echo "$0: $*" 1>&2 | |
abf36701 MM |
8 | cat 1>&2 <<EOF |
9 | USAGE: $0 name1=val2 name2=val2 ... | |
10 | ||
11 | Variables: | |
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 | 18 | EOF |
cbe88683 MM |
19 | exit 1 |
20 | } | |
21 | ||
22 | default_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 |
37 | check_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 |
54 | poldek_src () { |
55 | if test "$1" ; then | |
236cd0d6 KK |
56 | cat <<EOF |
57 | [source] | |
58 | name=local | |
59 | type=pndir | |
60 | path=/spools/ready | |
61 | pri=1 | |
62 | EOF | |
cbe88683 MM |
63 | fi |
64 | cat <<EOF | |
236cd0d6 KK |
65 | [source] |
66 | name=main | |
67 | type=pndir | |
68 | path=$dist_url/dists/$DIST/PLD/$arch/RPMS/ | |
69 | pri=6 | |
70 | ||
71 | [source] | |
72 | name=main | |
73 | type=pndir | |
74 | path=$dist_url/dists/$DIST/PLD/noarch/RPMS/ | |
75 | pri=6 | |
76 | ||
cbe88683 MM |
77 | EOF |
78 | } | |
79 | ||
80 | common_poldek_opt () { | |
fb4193ac | 81 | cat <<EOF |
236cd0d6 | 82 | [global] |
cbe88683 MM |
83 | particle_install = no |
84 | greedy = yes | |
85 | rpmdef = _excludedocs 1 | |
86 | EOF | |
87 | } | |
88 | ||
89 | chr() { | |
90 | sudo chroot $chroot_dir su - root -c "$*" | |
91 | } | |
92 | ||
93 | chb() { | |
94 | sudo chroot $chroot_dir su - builder -c "$*" | |
95 | } | |
96 | ||
fb4193ac | 97 | install_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 |
101 | set -x | |
102 | rm -rf rpm | |
9915447b | 103 | mkdir -p rpm/packages |
fb4193ac | 104 | cd rpm |
9915447b KK |
105 | git clone $git_server/rpm-build-tools rpm/packages/rpm-build-tools |
106 | rpm/packages/rpm-build-tools/builder --init-rpm-dir | |
6bfbe7f8 MM |
107 | echo "%packager PLD bug tracking system ( http://bugs.pld-linux.org/ )">~/.rpmmacros |
108 | echo "%vendor PLD">>~/.rpmmacros | |
109 | echo "%distribution $DISTTAG">>~/.rpmmacros | |
fb4193ac MM |
110 | EOF |
111 | chb "sh" < install-specs | |
112 | rm install-specs | |
113 | } | |
114 | ||
115 | install_build_tree () { | |
116 | cat >install-bt <<EOF | |
117 | set -x | |
118 | rm -rf rpm | |
119 | mkdir rpm | |
120 | cd rpm | |
121 | mkdir SPECS SOURCES SRPMS RPMS BUILD | |
afa0d624 MM |
122 | echo "%packager PLD bug tracking system ( http://bugs.pld-linux.org/ )">~/.rpmmacros |
123 | echo "%vendor PLD">>~/.rpmmacros | |
124 | echo "%distribution $DISTTAG">>~/.rpmmacros | |
fb4193ac MM |
125 | EOF |
126 | chb "sh" < install-bt | |
127 | rm install-bt | |
128 | } | |
129 | ||
130 | ||
131 | ||
132 | ||
133 | eval "$*" || usage | |
134 | default_config | |
135 | eval "$*" | |
136 | check_conf | |
137 | ||
cbe88683 MM |
138 | rm -rf tmp-chroot |
139 | mkdir tmp-chroot | |
140 | cd tmp-chroot | |
141 | ||
142 | cat >poldek.conf <<EOF | |
143 | $(poldek_src) | |
144 | $(common_poldek_opt) | |
abf36701 | 145 | cachedir = $chroot_dir/spools/poldek |
cbe88683 MM |
146 | keep_downloads = no |
147 | EOF | |
148 | ||
149 | cat > install-$chroot_name.sh <<EOF | |
150 | #!/bin/sh | |
151 | set -x | |
152 | cd $PWD | |
153 | rm -rf $chroot_dir | |
abf36701 | 154 | mkdir -p $chroot_dir/spools/poldek |
31fa68c3 KK |
155 | mkdir $chroot_dir/dev |
156 | mknod $chroot_dir/dev/null -m 666 c 1 3 | |
cdf81929 | 157 | rpm --root $chroot_dir --initdb |
9330cabd | 158 | poldek --conf poldek.conf --root $chroot_dir -i\ |
cbe88683 MM |
159 | $builder_pkgs $builder_arch_pkgs |
160 | EOF | |
161 | chmod 755 install-$chroot_name.sh | |
162 | ||
163 | echo "About to remove '$chroot_dir' and install it again, using" | |
164 | echo "install-$chroot_name.sh:" | |
165 | echo | |
166 | cat install-$chroot_name.sh | |
167 | echo | |
168 | cat <<EOF | |
169 | what to do? | |
c52da901 | 170 | r) the script was already ran; continue, |
cbe88683 MM |
171 | s) run it using sudo, |
172 | a) abort" | |
173 | EOF | |
174 | echo -n "[r/s/a]: " | |
175 | read ans | |
176 | case "$ans" in | |
177 | r ) | |
178 | ;; | |
179 | s ) | |
180 | sudo ./install-$chroot_name.sh | |
181 | ;; | |
182 | * ) | |
183 | echo "bye" | |
184 | exit 1 | |
185 | esac | |
186 | ||
507ad968 MM |
187 | chr "ldconfig" |
188 | ||
cbe88683 MM |
189 | echo "OK" |
190 | echo "installing conf..." | |
191 | cat >poldek.conf <<EOF | |
deda9a51 | 192 | $(poldek_src local) |
cbe88683 | 193 | $(common_poldek_opt) |
abf36701 | 194 | cachedir = /spools/poldek |
507ad968 | 195 | keep_downloads = no |
cbe88683 MM |
196 | EOF |
197 | ||
198 | chr "cat > /etc/poldek.conf" < poldek.conf | |
656894f4 | 199 | chr "useradd -u "$builder_uid" -c 'PLD $chroot_name builder' -d /home/users/builder -m -g users -s /bin/sh builder" |
cbe88683 MM |
200 | chr "cat > /etc/resolv.conf" < /etc/resolv.conf |
201 | chr "cat > /etc/mtab" < /dev/null | |
4f8777fa | 202 | chr "mkdir -p /spools/ready/" < /dev/null |
8e75c308 | 203 | chr "mkdir -p /spools/poldek/" < /dev/null |
7f3e2bd5 | 204 | chr "sed -e 's,^\(root:.*\)/bin/sh$,\1/bin/bash,' -i~ /etc/passwd" |
cbe88683 | 205 | |
465b0f80 | 206 | |
abf36701 MM |
207 | case $chroot_type in |
208 | src ) | |
cbe88683 MM |
209 | install_SPECS_builder |
210 | ;; | |
abf36701 | 211 | bin ) |
465b0f80 MM |
212 | install_build_tree |
213 | ;; | |
cbe88683 | 214 | esac |