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