fix the build
[util-vserver.git] / util-vserver.spec
1 # $Id: util-vserver.spec.in 2807 2008-10-30 01:59:52Z dhozac $
2
3 %if "%{?_without_python:1}" != "1"
4 %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
5 %endif
6
7 ## This package understands the following switches:
8 ## --without dietlibc        ...   disable usage of dietlibc
9 ## --with xalan              ...   require/use the xalan xslt processor
10 ## --without doc             ...   disable doc generation
11 ## --with legacy             ...   enable the legacy APIs
12
13 %global confdir         %_sysconfdir/vservers
14 %global confdefaultdir  %confdir/.defaults
15 %global pkglibdir       %_libdir/%name
16 %global chkconfig       /sbin/chkconfig
17
18 %global _localstatedir  %_var
19
20 %global fullver         0.30.216-pre2883
21 %global ver             %( echo %fullver | sed 's/-.*//' )
22 %global subver          %( s=`echo %fullver | grep -- - | sed 's/.*-/./'`; echo ${s:-.1} )
23
24 # for module-tools
25 %global module_version_varname fullver
26 %global taglevel 0
27
28 %{!?release_func:%global release_func() %1%{?dist}}
29
30 Summary:        Linux virtual server utilities
31 Name:           util-vserver
32 Version:        %ver
33 Release:        %taglevel
34 License:        GPL
35 Group:          System Environment/Base
36 URL:            http://savannah.nongnu.org/projects/util-vserver/
37 Source0:        http://ftp.linux-vserver.org/pub/utils/util-vserver/%name-%fullver.tar.bz2
38 #Source1:       http://ftp.linux-vserver.org/pub/utils/util-vserver/%name-%fullver.tar.bz2.asc
39 Patch1:         f12.patch
40 BuildRoot:      %_tmppath/%name-%version-%release-root
41 Requires:       init(%name)
42 Requires:       %name-core = %version-%release
43 Requires:       %name-lib  = %version-%release
44 Requires:       diffutils mktemp sed
45 Provides:       vserver = %version-%release
46 Obsoletes:      vserver < %version
47 BuildRequires:  mount vconfig gawk /sbin/ip iptables
48 BuildRequires:  gcc-c++ wget which diffutils
49 BuildRequires:  e2fsprogs-devel e2fsprogs
50 %{!?_without_beecrypt:BuildRequires: beecrypt-devel}
51 %{?_without_beecrypt:BuildRequires: nss-devel}
52 BuildRequires:  e2fsprogs
53 %{!?_without_doc:BuildRequires: doxygen tetex-latex}
54 %{!?_without_python:BuildRequires: python python-devel ctags}
55 Requires(post):         %name-core
56 Requires(pre):          %pkglibdir
57 Requires(postun):       %pkglibdir
58 %{!?_without_dietlibc:BuildRequires:    dietlibc >= 0:0.25}
59 %{?_with_xalan:BuildRequires:   xalan-j}
60
61 %package lib
62 Summary:                Dynamic libraries for util-vserver
63 Group:                  System Environment/Libraries
64
65 %package core
66 Summary:                The core-utilities for util-vserver
67 Group:                  Applications/System
68 Requires:               util-linux
69
70 %package build
71 Summary:                Tools which can be used to build vservers
72 Group:                  Applications/System
73 Requires:               rpm wget binutils tar
74 Requires:               %name = %version-%release
75 Requires(pre):          %confdir
76 Requires(postun):       %confdir
77 Requires(post):         %name-core
78
79 %package sysv
80 Summary:                SysV-initscripts for vserver
81 Group:                  System Environment/Base
82 Provides:               init(%name) = sysv
83 Requires:               make diffutils
84 Requires:               initscripts
85 Requires:               %name = %version-%release
86 Requires(post):         %chkconfig
87 Requires(preun):        %chkconfig
88 Requires(pre):          %_initrddir %pkglibdir
89 requires(postun):       %_initrddir %pkglibdir
90
91 %package legacy
92 Summary:                Legacy utilities for util-vserver
93 Group:                  Applications/System
94 Requires:               %name = %version-%release
95 Requires(post):         %chkconfig
96 Requires(preun):        %chkconfig
97 Requires(pre):          %_initrddir %pkglibdir
98 requires(postun):       %_initrddir %pkglibdir
99
100 %package devel
101 Summary:                Header-files and libraries needed to develop vserver based applications
102 Group:                  Development/Libraries
103 Requires:               pkgconfig
104 Requires:               %name-lib = %version-%release
105
106 %package python
107 Summary:                Python bindings to develop vserver-based applications
108 Group:                  Development/Libraries
109 Requires:               %name-lib = %version-%release
110
111
112 %description
113 util-vserver provides the components and a framework to setup virtual
114 servers.  A virtual server runs inside a linux server. It is nevertheless
115 highly independent. As such, you can run various services with normal
116 configuration. The various vservers can't interact with each other and
117 can't interact with services in the main server.
118
119 This requires a special kernel supporting the new new_s_context and
120 set_ipv4root system call.
121
122 %description lib
123 util-vserver provides the components and a framework to setup virtual
124 servers.  A virtual server runs inside a linux server. It is nevertheless
125 highly independent. As such, you can run various services with normal
126 configuration. The various vservers can't interact with each other and
127 can't interact with services in the main server.
128
129 This package contains the shared libraries needed by all other
130 'util-vserver' subpackages.
131
132 %description core
133 util-vserver provides the components and a framework to setup virtual
134 servers.  A virtual server runs inside a linux server. It is nevertheless
135 highly independent. As such, you can run various services with normal
136 configuration. The various vservers can't interact with each other and
137 can't interact with services in the main server.
138
139 This package contains utilities which are required to communicate with
140 the Linux-Vserver enabled kernel.
141
142
143 %description build
144 util-vserver provides the components and a framework to setup virtual
145 servers.  A virtual server runs inside a linux server. It is nevertheless
146 highly independent. As such, you can run various services with normal
147 configuration. The various vservers can't interact with each other and
148 can't interact with services in the main server.
149
150 This package contains utilities which assist in building Vservers.
151
152 %description sysv
153 util-vserver provides the components and a framework to setup virtual
154 servers.  A virtual server runs inside a linux server. It is nevertheless
155 highly independent. As such, you can run various services with normal
156 configuration. The various vservers can't interact with each other and
157 can't interact with services in the main server.
158
159 This package contains the SysV initscripts which start and stop
160 VServers and related tools.
161
162
163 %description legacy
164 util-vserver provides the components and a framework to setup virtual
165 servers.  A virtual server runs inside a linux server. It is nevertheless
166 highly independent. As such, you can run various services with normal
167 configuration. The various vservers can't interact with each other and
168 can't interact with services in the main server.
169
170 This package contains the tools which are needed to work with VServers
171 having an old-style configuration.
172
173
174 %description devel
175 util-vserver provides the components and a framework to setup virtual
176 servers.  A virtual server runs inside a linux server. It is nevertheless
177 highly independent. As such, you can run various services with normal
178 configuration. The various vservers can't interact with each other and
179 can't interact with services in the main server.
180
181 This package contains header files and libraries which are needed to
182 develop VServer related applications.
183
184 %description python
185 util-vserver provides the components and a framework to setup virtual
186 servers.  A virtual server runs inside a linux server. It is nevertheless
187 highly independent. As such, you can run various services with normal
188 configuration. The various vservers can't interact with each other and
189 can't interact with services in the main server.
190
191 This package contains the files needed to interface with the
192 Linux-VServer API from Python.
193
194
195 %prep
196 %setup -q -n %name-%fullver
197 %patch1 -p0
198 autoreconf -fi
199
200 %build
201 %configure --with-initrddir=%_initrddir --enable-release \
202            %{?_without_dietlibc:--disable-dietlibc} \
203            %{?_with_legacy:--enable-apis=NOLEGACY} \
204            --with-initscripts=sysv \
205            %{?_without_python:--without-python}
206
207 %__make %{?_smp_mflags} all
208 %{!?_without_doc:%__make %{?_smp_mflags} doc}
209
210
211 %install
212 rm -rf $RPM_BUILD_ROOT
213 %__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
214
215 rm -f $RPM_BUILD_ROOT/%_libdir/*.la
216
217 MANIFEST_CONFIG='%config' \
218 MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
219 contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
220
221
222 %check
223 %__make check
224
225
226 %clean
227 rm -rf $RPM_BUILD_ROOT
228
229
230 %post
231 test -d /vservers      || mkdir -m0000 /vservers
232 test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
233
234 f="%confdefaultdir/vdirbase";  test -L "$f" -o -e "$f" || ln -s /vservers                        "$f"
235 f="%confdefaultdir/run.rev";   test -L "$f" -o -e "$f" || ln -s %_localstatedir/run/vservers.rev "$f"
236 f="%confdefaultdir/cachebase"; test -L "$f" -o -e "$f" || ln -s %_localstatedir/cache/vservers   "$f"
237
238 %_sbindir/setattr --barrier /vservers /vservers/.pkg || :
239
240
241 %preun
242 test "$1" != 0 || rm -rf %_localstatedir/cache/vservers/* 2>/dev/null || :
243
244
245 %post   lib -p /sbin/ldconfig
246 %postun lib -p /sbin/ldconfig
247
248
249 %post sysv
250 %chkconfig --add vservers-default
251 %chkconfig --add vprocunhide
252 %chkconfig --add util-vserver
253 %chkconfig util-vserver on
254
255
256 %preun sysv
257 test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
258
259 test "$1" != 0 || %chkconfig --del vprocunhide
260 test "$1" != 0 || %chkconfig --del vservers-default
261 test "$1" != 0 || %chkconfig --del util-vserver
262
263
264 %postun sysv
265 test "$1" = 0  || %_initrddir/vprocunhide condrestart >/dev/null || :
266
267
268 %triggerin build -- fedora-release, centos-release
269 function copy()
270 {
271     base=$1
272     shift
273
274     for i; do
275         test -r "$i" || continue
276
277         target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
278         cp -a "$i" "$target"
279     done
280 }
281 copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
282 copy fedora /etc/pki/rpm-gpg/RPM-GPG-*
283 copy centos /usr/share/doc/centos-*/RPM-GPG-KEY-*
284
285
286 %pre build
287 x="%_libdir/util-vserver/distributions/etch"
288 test -d "$x" && mv "$x" "$x.rpmsave" || :
289
290
291 %post build
292 test -d /vservers/.hash || mkdir -m0700 /vservers/.hash
293
294 f="%confdefaultdir/apps/vunify/hash"; test -e "$f"/method -o -e "$f"/00 || \
295         ln -s /vservers/.hash "$f"/00
296
297 %_sbindir/setattr --barrier /vservers/.hash || :
298
299
300 %preun build
301 test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
302
303
304 ## Temporary workaround to remove old v_* files; it will conflict
305 ## somehow with the -legacy package but can be fixed by reinstalling
306 ## this package.
307 ## TODO: remove me in the final .spec file
308 %define v_services      httpd named portmap sendmail smb sshd xinetd gated
309 %triggerun sysv -- util-vserver-sysv < 0.30.198
310 for i in %v_services; do
311         %chkconfig --del v_$i || :
312 done
313
314
315 %post legacy
316 %chkconfig --add rebootmgr
317 %chkconfig --add vservers-legacy
318
319 for i in %v_services; do
320         %chkconfig --add v_$i
321 done
322
323
324 %preun legacy
325 test "$1" != 0 || %_initrddir/rebootmgr   stop &>/dev/null || :
326
327 test "$1" != 0 || for i in %v_services; do
328         %chkconfig --del v_$i
329 done
330
331 test "$1" != 0 || %chkconfig --del rebootmgr
332 test "$1" != 0 || %chkconfig --del vservers-legacy
333
334 %postun legacy
335 test "$1" = 0  || %_initrddir/rebootmgr   condrestart >/dev/null || :
336
337
338 %files -f %name-base.list
339 %defattr(-,root,root,-)
340 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
341 %doc doc/*.html doc/*.css
342 /sbin/vshelper
343 %dir %confdir
344 %dir %confdefaultdir
345 %dir %confdefaultdir/apps
346 %dir %confdefaultdir/files
347 %dir %pkglibdir/defaults
348 %ghost %confdefaultdir/cachebase
349 %ghost %confdefaultdir/vdirbase
350 %ghost %confdefaultdir/run.rev
351
352 %dir %_localstatedir/cache/vservers
353 %dir %_localstatedir/run/vservers
354 %dir %_localstatedir/run/vservers.rev
355 %dir %_localstatedir/run/vshelper
356
357
358 %files lib -f %name-lib.list
359 %files sysv -f %name-sysv.list
360
361
362 %files core -f %name-core.list
363 %defattr(-,root,root,-)
364 %dir %pkglibdir
365
366
367 %files build -f %name-build.list
368 %defattr(-,root,root,-)
369 %doc contrib/yum*.patch
370 %dir %confdir/.distributions
371 %dir %confdir/.distributions/*
372 %dir %confdir/.distributions/*/apt
373 %dir %confdir/.distributions/.common
374 %dir %confdir/.distributions/.common/pubkeys
375 %dir %confdefaultdir/apps/vunify
376 %dir %confdefaultdir/apps/vunify/hash
377
378
379 %files legacy -f %name-legacy.list
380 %defattr(-,root,root,-)
381 %dir %pkglibdir/legacy
382
383
384 %files devel -f %name-devel.list
385 %defattr(-,root,root,-)
386 %{!?_without_doc:%doc lib/apidoc/latex/refman.pdf}
387 %{!?_without_doc:%doc lib/apidoc/html}
388
389
390 %files python
391 %defattr(-,root,root,-)
392 %{!?_without_python:%{python_sitearch}/*}
393
394
395 %changelog
396 * Mon Jun 25 2007 Daniel Hokka Zakrisson <daniel@hozac.com> - 0.30.214-0
397 - updated URLs
398 - get rid of e2fsprogs requirement
399
400 * Fri Dec 29 2006 Daniel Hokka Zakrisson <daniel@hozac.com> - 0.30.213-0
401 - add --with legacy and --without doc switches
402 - add util-vserver initscript
403
404 * Sun Jan 22 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0.30.210-0
405 - do not require 'xalan' anymore by default
406 - removed 'Requires: apt'; apt-rpm is not maintained upstream anymore
407 - removed 'chattr' leftovers
408 - create the '/etc/vservers/.defaults/cachebase' symlink
409 - added /var/cache/vservers and the needed support
410 - set barrier attribute on /vservers/.pkg and /vservers/.hash
411 - added 'centos-release' to the list of packages in the copy-the-keys
412   trigger script
413 - create '/vservers/.hash' and add initial configuration for it
414
415 * Sun Oct 30 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.209-0
416 - version 0.30.209
417 - copy centos keys
418
419 * Sat Jul 16 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-2
420 - updated URLs
421
422 * Fri Jul 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-1
423 - version 0.30.208
424 - require the -lib subpackage by -devel
425 - copy GPG keys from /etc/pki/rpm-gpg/
426
427 * Fri Apr 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.206-1
428 - added patches to make yum work in chroot environments
429 - version 0.30.206
430
431 * Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
432 - added some %%descriptions
433 - copy GPG keys from the system into the confdir
434 - buildrequire dietlibc-0.25
435 - BuildRequire beecrypt-devel
436 - cleanups
437 - use %%global instead of %%define
438 - removed 'run.rev' as a vserver-local variable and made it a system-wide setting
439
440 * Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
441 - updated BuildRequires:
442 - use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
443 - moved the v_* initscripts to legacy
444 - do not ship the /vservers directory itself; as it is immutable, the
445   extraction will fail else
446
447 * Thu Sep  9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
448 - documented switches for 'rpmbuild'
449
450 * Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
451 - (re)added the MANIFEST_* variables which were lost some time ago;
452   this will preserve %%config files...
453
454 * Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
455 - use file-list for sysv scripts also
456
457 * Sat Mar  6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
458 - added vprocunhide-service support
459 - added doxygen support
460 - updated Requires:
461
462 * Wed Oct  1 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.5-0
463 - Initial build.