]> git.pld-linux.org Git - packages/pld-builder.git/blob - pld-builder.spec
- release 3
[packages/pld-builder.git] / pld-builder.spec
1 %define         snap    20101111
2 Summary:        PLD RPM builder environment
3 Summary(pl.UTF-8):      Środowisko budowniczego pakietów RPM dla PLD
4 Name:           pld-builder
5 Version:        0.5.%{snap}
6 Release:        3
7 License:        GPL
8 Group:          Development/Building
9 Source0:        %{name}-%{version}.tar.bz2
10 # Source0-md5:  33912ce1eff84b97afc1d686015d5b28
11 Source1:        %{name}.init
12 Source2:        %{name}.sysconfig
13 URL:            http://cvs.pld-linux.org/cgi-bin/cvsweb/pld-builder.new/
14 BuildRequires:  python
15 BuildRequires:  rpm-pythonprov
16 BuildRequires:  rpmbuild(macros) >= 1.469
17 BuildRequires:  sed >= 4.0
18 Requires(post,preun):   /sbin/chkconfig
19 Requires(postun):       /usr/sbin/userdel
20 Requires(pre):  /bin/id
21 Requires(pre):  /usr/bin/getgid
22 Requires(pre):  /usr/sbin/groupadd
23 Requires(pre):  /usr/sbin/useradd
24 Requires:       /usr/lib/sendmail
25 Requires:       bash
26 Requires:       crondaemon
27 Requires:       filesystem >= 3.0-33
28 Requires:       gnupg
29 Requires:       libuuid
30 Requires:       python
31 Requires:       python-pld-builder = %{version}-%{release}
32 Requires:       rc-scripts
33 Requires:       rsync
34 Requires:       sudo
35 Provides:       group(builder)
36 Provides:       user(builder)
37 BuildArch:      noarch
38 BuildRoot:      %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
39
40 %define         _sysconfdir     /etc/pld-builder
41 %define         _datadir        /usr/share/%{name}
42
43 %description
44 PLD RPM builder environment. This is the freshest "new" builder.
45
46 Other new and older attempts can be found from:
47 http://cvs.pld-linux.org/cgi-bin/cvsweb/pld-builder/
48 http://cvs.pld-linux.org/cgi-bin/cvsweb/pld-builder.old/
49 http://cvs.pld-linux.org/cgi-bin/cvsweb/builder_ng/
50
51 %description -l pl.UTF-8
52 Środowisko budowniczego pakietów RPM dla PLD. To jest najnowszy "nowy"
53 builder.
54
55 Inne nowe i starsze próby można znaleźć pod:
56 http://cvs.pld-linux.org/cgi-bin/cvsweb/pld-builder/
57 http://cvs.pld-linux.org/cgi-bin/cvsweb/pld-builder.old/
58 http://cvs.pld-linux.org/cgi-bin/cvsweb/builder_ng/
59
60 %package -n python-pld-builder
61 Summary:        PLD Builder
62 Summary(pl.UTF-8):      Budowniczy PLD
63 Group:          Development/Building
64 %pyrequires_eq  python-modules
65
66 %description -n python-pld-builder
67 PLD Builder Python code.
68
69 %description -n python-pld-builder -l pl.UTF-8
70 Kod pythonowy budowniczego PLD.
71
72 %package chroot
73 Summary:        PLD Builder chroot
74 Summary(pl.UTF-8):      Środowisko chroot buildera PLD
75 Group:          Development/Building
76 Requires(postun):       /usr/sbin/userdel
77 Requires(pre):  /bin/id
78 Requires(pre):  /usr/bin/getgid
79 Requires(pre):  /usr/sbin/groupadd
80 Requires(pre):  /usr/sbin/useradd
81 Requires:       bash
82 Requires:       filesystem >= 3.0-33
83 Requires:       mount
84 Requires:       poldek >= 0.21-0.20070703.00.16
85 Requires:       rpm-build
86 Requires:       tmpwatch
87 # NOTE: vserver-packages is usually hidden, so you must install it manually with --noignore
88 Requires:       basesystem
89 Requires:       vserver-packages
90 Provides:       group(builder)
91 Provides:       user(builder)
92 # for srpm builder
93 Requires:       cvs-client
94 Requires:       rpm-build-tools
95
96 %description chroot
97 This is the package to be installed in builder chroot.
98
99 %description chroot -l pl.UTF-8
100 Ten pakiet należy zainstalować w środowisku chroot buildera.
101
102 %prep
103 %setup -q
104 %{__sed} -i -e '
105         /^root_dir/s,=.*,= "%{_sharedstatedir}/%{name}",
106         /^conf_dir/s,=.*,= "%{_sysconfdir}",
107 ' PLD_Builder/path.py
108
109 %{__sed} -i -e '
110         s,pld-linux\.org,example.org,g
111         s,/spools/ready,/var/cache/%{name}/ready,
112 ' config/builder.conf
113
114 cat <<'EOF' > poldek.conf
115 # locally cached rpms
116 [source]
117 name = ready
118 pri  = -1
119 type = dir
120 path = /var/cache/%{name}/ready/
121 EOF
122
123 cat <<'EOF' > crontab
124 SHELL=/bin/sh
125 MAILTO=root
126
127 #* * * * * builder exec nice -n 19 %{_datadir}/bin/request-fetcher.sh
128 #* * * * * builder exec nice -n 19 %{_datadir}/bin/load-balancer.sh
129 #* * * * * builder exec nice -n 19 %{_datadir}/bin/file-sender.sh
130
131 #0 0 * * * chroot /home/users/builder/chroot-ac nice -n 19 tmpwatch -m 240 /var/cache/%{name}/ready
132 EOF
133
134 cat <<'EOF' > procmailrc
135 LOGFILE=procmail.log
136
137 #:0 c
138 #mail.copy
139
140 :0
141 * ^X-New-PLD-Builder:
142 | %{_datadir}/bin/request-handler.sh
143
144 :0
145 * ^FROM_MAILER
146 /dev/null
147
148 #:0
149 #!root@example.org
150 EOF
151
152 cat <<'EOF' > rpm.macros
153 # rpm macros for pld builder chroot
154
155 # A colon separated list of desired locales to be installed;
156 # "all" means install all locale specific files.
157 %%_install_langs en_US
158
159 # If non-zero, all erasures will be automagically repackaged.
160 %%_repackage_all_erasures    0
161
162 # Boolean (i.e. 1 == "yes", 0 == "no") that controls whether files
163 # marked as %doc should be installed.
164 # FIXME: excludedocs breaks kde build
165 #%%_excludedocs   1
166 EOF
167
168 %build
169 %{__make}
170 %py_lint PLD_Builder
171
172 %install
173 rm -rf $RPM_BUILD_ROOT
174
175 # python
176 install -d $RPM_BUILD_ROOT%{py_scriptdir}/PLD_Builder
177 cp -a PLD_Builder/*.py[co] $RPM_BUILD_ROOT%{py_scriptdir}/PLD_Builder
178
179 # other
180 install -d $RPM_BUILD_ROOT%{_sysconfdir}
181 cp -a config/{rsync-passwords,*.conf} $RPM_BUILD_ROOT%{_sysconfdir}
182 install -d $RPM_BUILD_ROOT%{_datadir}/{bin,admin}
183 for a in bin/*.sh; do
184 sed -e '
185         /cd ~\/pld-builder.new/d
186         s,python \(PLD_Builder.*.py\),python %{py_scriptdir}/\1c,
187 ' $a > $RPM_BUILD_ROOT%{_datadir}/bin/$(basename $a)
188 done
189 cp -a admin/*.sh $RPM_BUILD_ROOT%{_datadir}/admin
190
191 # dirs
192 install -d $RPM_BUILD_ROOT{%{_sharedstatedir}/%{name}/{spool/{buildlogs,builds,ftp,notify},lock},/etc/{sysconfig,rc.d/init.d}}
193 install -d $RPM_BUILD_ROOT/home/services/builder/.gnupg
194 install -d $RPM_BUILD_ROOT/home/services/builder/.ssh
195 install -d $RPM_BUILD_ROOT/home/services/builder/rpm/{BUILD,RPMS,SRPMS,SPECS,SOURCES,packages/CVS}
196 install -d $RPM_BUILD_ROOT/var/cache/%{name}/ready
197 ln -s %{_bindir}/builder $RPM_BUILD_ROOT/home/services/builder/rpm/packages
198
199 echo "packages" > $RPM_BUILD_ROOT/home/services/builder/rpm/packages/CVS/Repository
200 echo ":pserver:cvs@cvs.pld-linux.org:/cvsroot" > $RPM_BUILD_ROOT/home/services/builder/rpm/packages/CVS/Root
201 touch $RPM_BUILD_ROOT/home/services/builder/rpm/packages/CVS/Entries{,.Static}
202
203 install -d $RPM_BUILD_ROOT/etc/poldek/repos.d
204 cp -a poldek.conf $RPM_BUILD_ROOT/etc/poldek/repos.d/%{name}.conf
205
206 install -d $RPM_BUILD_ROOT/etc/rpm
207 cp -a rpm.macros $RPM_BUILD_ROOT/etc/rpm/macros.builder
208
209 # crontab
210 install -d $RPM_BUILD_ROOT/etc/cron.d
211 cp -a crontab $RPM_BUILD_ROOT/etc/cron.d/%{name}
212
213 install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/pld-builder
214 install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/pld-builder
215
216 # from admin/fresh-queue.sh
217 cd $RPM_BUILD_ROOT%{_sharedstatedir}/%{name}
218 install -d spool/{builds,buildlogs,notify,ftp} lock
219 echo 0 > spool/last_req_no
220 echo -n > spool/processed_ids
221 echo -n > spool/got_lock
222 echo '<queue/>' > spool/queue
223 echo '<queue/>' > spool/req_queue
224 if [ "$binary_builders" ]; then
225         for bb in $binary_builders; do
226                 echo '<queue/>' > spool/queue-$bb
227         done
228 fi
229
230 %clean
231 rm -rf $RPM_BUILD_ROOT
232
233 %pre
234 %groupadd -g 181 builder
235 %useradd -u 182 -g builder -c "bin builder" -s /bin/bash -d /home/services/builder builder
236
237 %pre chroot
238 %groupadd -g 181 builder
239 %useradd -u 182 -g builder -c "bin builder" -s /bin/bash -d /home/services/builder builder
240
241 %post
242 /sbin/chkconfig --add %{name}
243
244 %preun
245 if [ "$1" = "0" ]; then
246         %service %{name} stop
247         /sbin/chkconfig --del %{name}
248 fi
249
250 %postun
251 if [ "$1" = "0" ]; then
252         %userremove builder
253         %groupremove builder
254 fi
255
256 %postun chroot
257 if [ "$1" = "0" ]; then
258         %userremove builder
259         %groupremove builder
260 fi
261
262 %files
263 %defattr(644,root,root,755)
264 %doc README TODO
265 %doc user-manual.txt
266 %lang(pl) %doc jak-to-dziala.txt jak-wysylac-zlecenia.txt
267
268 %attr(754,root,root) /etc/rc.d/init.d/pld-builder
269 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/pld-builder
270
271 %attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/cron.d/%{name}
272
273 %dir %{_sysconfdir}
274 %attr(640,root,builder) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/*.conf
275 %attr(640,root,builder) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/rsync-passwords
276
277 %dir %{_datadir}
278 %dir %{_datadir}/bin
279 %attr(755,root,root) %{_datadir}/bin/*
280 %dir %{_datadir}/admin
281 %attr(755,root,root) %{_datadir}/admin/*
282
283 %dir %{_sharedstatedir}/%{name}
284
285 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/spool
286 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/spool/buildlogs
287 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/spool/builds
288 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/spool/ftp
289 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/spool/notify
290
291 %attr(644,builder,builder) %config(noreplace) %verify(not md5 mtime size) %{_sharedstatedir}/%{name}/spool/got_lock
292 %attr(644,builder,builder) %config(noreplace) %verify(not md5 mtime size) %{_sharedstatedir}/%{name}/spool/last_req_no
293 %attr(644,builder,builder) %config(noreplace) %verify(not md5 mtime size) %{_sharedstatedir}/%{name}/spool/processed_ids
294 %attr(644,builder,builder) %config(noreplace) %verify(not md5 mtime size) %{_sharedstatedir}/%{name}/spool/queue
295 %attr(644,builder,builder) %config(noreplace) %verify(not md5 mtime size) %{_sharedstatedir}/%{name}/spool/req_queue
296
297 %dir %attr(775,root,builder) %{_sharedstatedir}/%{name}/lock
298
299 %dir %attr(750,builder,builder) /home/services/builder
300 %dir %attr(750,builder,builder) /home/services/builder/.gnupg
301 %dir %attr(700,builder,builder) /home/services/builder/.ssh
302
303 %files chroot
304 %defattr(644,root,root,755)
305 %dir %attr(750,builder,builder) /home/services/builder
306 %dir %attr(750,builder,builder) /home/services/builder/rpm
307 %dir %attr(750,builder,builder) /home/services/builder/rpm/BUILD
308 %dir %attr(750,builder,builder) /home/services/builder/rpm/RPMS
309 %dir %attr(750,builder,builder) /home/services/builder/rpm/SRPMS
310 %dir %attr(750,builder,builder) /home/services/builder/rpm/SPECS
311 %dir %attr(750,builder,builder) /home/services/builder/rpm/SOURCES
312 %dir %attr(750,builder,builder) /home/services/builder/rpm/packages
313
314 # for srpm builder
315 %attr(750,builder,builder) /home/services/builder/rpm/packages/builder
316 %dir %attr(750,builder,builder) /home/services/builder/rpm/packages/CVS
317 %attr(640,builder,builder) %config(noreplace) %verify(not md5 mtime size) /home/services/builder/rpm/packages/CVS/Repository
318 %attr(640,builder,builder) %config(noreplace) %verify(not md5 mtime size) /home/services/builder/rpm/packages/CVS/Root
319 %attr(640,builder,builder) %config(noreplace) %verify(not md5 mtime size) /home/services/builder/rpm/packages/CVS/Entries
320 %attr(640,builder,builder) %config(noreplace) %verify(not md5 mtime size) /home/services/builder/rpm/packages/CVS/Entries.Static
321
322 # minimal but sane defaults for rpm inside chroot
323 %config(noreplace) %verify(not md5 mtime size) /etc/rpm/macros.builder
324
325 # locally cached rpms from bin-builder
326 %config(noreplace) %verify(not md5 mtime size) /etc/poldek/repos.d/%{name}.conf
327 %dir /var/cache/%{name}
328 %dir %attr(775,root,builder) /var/cache/%{name}/ready
329
330 %files -n python-pld-builder
331 %defattr(644,root,root,755)
332 %{py_scriptdir}/PLD_Builder
This page took 0.109007 seconds and 3 git commands to generate.