79881bcbefcf5145417a413cea088a6cd8c9d29b
[util-vserver.git] / util-vserver.spec.in
1 # $Id: util-vserver.spec.in,v 1.49 2005/07/15 19:06:58 ensc Exp $
2
3 ## This package understands the following switches:
4 ## --without dietlibc        ...   disable usage of dietlibc
5 ## --without xalan           ...   do not require/use the xalan xslt processor
6
7 %global confdir         %_sysconfdir/vservers
8 %global confdefaultdir  %confdir/.defaults
9 %global pkglibdir       %_libdir/%name
10 %global __chattr        /usr/bin/chattr
11 %global chkconfig       /sbin/chkconfig
12
13 %global _localstatedir  %_var
14
15
16 %{!?release_func:%global release_func() %1%{?dist}}
17
18 %define name @PACKAGE@
19 %define version @VERSION@
20 %define release 1.planetlab%{?date:.%{date}}
21
22 %define _without_dietlibc 1
23 %define _without_xalan 1
24
25 Vendor: PlanetLab
26 Packager: PlanetLab Central <support@planet-lab.org>
27 Distribution: PlanetLab 3.0
28 URL: http://cvs.planet-lab.org/cvs/util-vserver
29
30 Summary:        Linux virtual server utilities
31 Name:           @PACKAGE@
32 Version:        @VERSION@
33 Release:        %{release}
34 License:        GPL
35 Group:          System Environment/Base
36 #URL:           http://savannah.nongnu.org/projects/util-vserver/
37 Source0:        http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
38 BuildRoot:      %_tmppath/%name-%version-%release-root
39 Requires:       init(%name)
40 Requires:       %name-core = %version-%release
41 Requires:       %name-lib  = %version-%release
42 Requires:       diffutils mktemp sed
43 Provides:       vserver = %version-%release
44 Obsoletes:      vserver < %version
45 BuildRequires:  mount vconfig gawk iproute iptables
46 BuildRequires:  gcc-c++ wget which diffutils
47 BuildRequires:  e2fsprogs-devel beecrypt-devel
48 BuildRequires:  doxygen tetex-latex
49 Requires(pre):          %pkglibdir
50 Requires(postun):       %pkglibdir
51 %{!?_without_dietlibc:BuildRequires:    dietlibc >= 0:0.25}
52 %{!?_without_xalan:BuildRequires:       xalan-j}
53
54 %package lib
55 Summary:                Dynamic libraries for util-vserver
56 Group:                  System Environment/Libraries
57
58 %package core
59 Summary:                The core-utilities for util-vserver
60 Group:                  Applications/System
61 Requires:               util-linux
62
63 %package build
64 Summary:                Tools which can be used to build vservers
65 Group:                  Applications/System
66 Requires:               rpm wget binutils tar e2fsprogs
67 Requires:               %name = %version-%release
68 Requires(pre):          %confdir
69 Requires(postun):       %confdir
70
71 %ifarch %ix86
72 Requires:               apt
73 %endif
74
75 %package sysv
76 Summary:                SysV-initscripts for vserver
77 Group:                  System Environment/Base
78 Provides:               init(%name) = sysv
79 Requires:               make diffutils
80 Requires:               initscripts
81 Requires:               %name = %version-%release
82 Requires(post):         %chkconfig
83 Requires(preun):        %chkconfig
84 Requires(pre):          %_initrddir %pkglibdir
85 requires(postun):       %_initrddir %pkglibdir
86
87 %package legacy
88 Summary:                Legacy utilities for util-vserver
89 Group:                  Applications/System
90 Requires:               %name = %version-%release
91 Requires(post):         %chkconfig
92 Requires(preun):        %chkconfig
93 Requires(pre):          %_initrddir %pkglibdir
94 requires(postun):       %_initrddir %pkglibdir
95
96 %package devel
97 Summary:                Header-files and libraries needed to develop vserver based applications
98 Group:                  Development/Libraries
99 Requires:               pkgconfig
100 Requires:               %name-lib = %version-%release
101
102 %package python
103 Summary:                Python modules for manipulating vservers
104 Group:                  Applications/System
105 Requires:               python util-python
106 # Backward compatibility
107 Provides:               util-vserver-py23
108
109
110 %description
111 util-vserver provides the components and a framework to setup virtual
112 servers.  A virtual server runs inside a linux server. It is nevertheless
113 highly independent. As such, you can run various services with normal
114 configuration. The various vservers can't interact with each other and
115 can't interact with services in the main server.
116
117 This requires a special kernel supporting the new new_s_context and
118 set_ipv4root system call.
119
120 %description lib
121 util-vserver provides the components and a framework to setup virtual
122 servers.  A virtual server runs inside a linux server. It is nevertheless
123 highly independent. As such, you can run various services with normal
124 configuration. The various vservers can't interact with each other and
125 can't interact with services in the main server.
126
127 This package contains the shared libraries needed by all other
128 'util-vserver' subpackages.
129
130 %description core
131 util-vserver provides the components and a framework to setup virtual
132 servers.  A virtual server runs inside a linux server. It is nevertheless
133 highly independent. As such, you can run various services with normal
134 configuration. The various vservers can't interact with each other and
135 can't interact with services in the main server.
136
137 This package contains utilities which are required to communicate with
138 the Linux-Vserver enabled kernel.
139
140
141 %description build
142 util-vserver provides the components and a framework to setup virtual
143 servers.  A virtual server runs inside a linux server. It is nevertheless
144 highly independent. As such, you can run various services with normal
145 configuration. The various vservers can't interact with each other and
146 can't interact with services in the main server.
147
148 This package contains utilities which assist in building Vservers.
149
150 %description sysv
151 util-vserver provides the components and a framework to setup virtual
152 servers.  A virtual server runs inside a linux server. It is nevertheless
153 highly independent. As such, you can run various services with normal
154 configuration. The various vservers can't interact with each other and
155 can't interact with services in the main server.
156
157 This package contains the SysV initscripts which start and stop
158 VServers and related tools.
159
160
161 %description legacy
162 util-vserver provides the components and a framework to setup virtual
163 servers.  A virtual server runs inside a linux server. It is nevertheless
164 highly independent. As such, you can run various services with normal
165 configuration. The various vservers can't interact with each other and
166 can't interact with services in the main server.
167
168 This package contains the tools which are needed to work with VServers
169 having an old-style configuration.
170
171
172 %description devel
173 util-vserver provides the components and a framework to setup virtual
174 servers.  A virtual server runs inside a linux server. It is nevertheless
175 highly independent. As such, you can run various services with normal
176 configuration. The various vservers can't interact with each other and
177 can't interact with services in the main server.
178
179 This package contains header files and libraries which are needed to
180 develop VServer related applications.
181
182
183 %description python
184 Python modules for manipulating vservers.  Provides a superset of the
185 functionality of the vserver script (at least will do in the future),
186 but more readily accessible from Python code.
187
188
189 %prep
190 %setup -q
191
192 aclocal -I m4
193 autoconf
194 automake --add-missing
195
196 %build
197 %configure --with-initrddir=%_initrddir --enable-release \
198            %{?_without_dietlibc:--disable-dietlibc}
199
200 %__make %{?_smp_mflags} all
201 %__make %{?_smp_mflags} doc
202
203
204 %install
205 rm -rf $RPM_BUILD_ROOT
206 %__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
207
208 rm -f $RPM_BUILD_ROOT/%_libdir/*.la
209
210 MANIFEST_CONFIG='%config' \
211 MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
212 contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
213
214 %if 0
215 # build python bindings
216 %__make -C python INSTALL_ROOT=$RPM_BUILD_ROOT install
217 %endif
218
219
220 %check || :
221 %__make check
222
223
224 %clean
225 rm -rf $RPM_BUILD_ROOT
226
227
228 %post
229 test -d /vservers      || mkdir -m0000 /vservers
230 test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
231
232 f="%confdefaultdir/vdirbase"; test -L "$f" -o -e "$f" || ln -s /vservers                        "$f"
233 f="%confdefaultdir/run.rev";  test -L "$f" -o -e "$f" || ln -s %_localstatedir/run/vservers.rev "$f"
234
235 %_sbindir/setattr --barrier /vservers || :
236
237 # add /bin/vsh to list of secure shells
238 if [ ! -f /etc/shells ] || ! grep -q '^/bin/vsh$' /etc/shells ; then
239     echo /bin/vsh >> /etc/shells
240 fi
241
242
243 %postun
244 # 0 = erase, 1 = upgrade
245 if [ "$1" = 0 ] ; then
246     perl -i -n -e 'next if /^\/bin\/vsh$/; print' /etc/shells
247 fi
248
249
250 %post   lib -p /sbin/ldconfig
251 %postun lib -p /sbin/ldconfig
252
253
254 %post sysv
255 #%chkconfig --add vservers-default
256 #%chkconfig --add vprocunhide
257 # PlanetLab Node Manager takes care of starting and stopping VServers
258 %chkconfig --del vservers-default
259 # PlanetLab does not require /proc security
260 %chkconfig --del vprocunhide
261
262 %preun sysv
263 #test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
264
265 #test "$1" != 0 || %chkconfig --del vprocunhide
266 #test "$1" != 0 || %chkconfig --del vservers-default
267
268
269 %postun sysv
270 #test "$1" = 0  || %_initrddir/vprocunhide condrestart >/dev/null || :
271
272
273 %triggerin build -- fedora-release
274 function copy()
275 {
276     base=$1
277     shift
278
279     for i; do
280         test -r "$i" || continue
281
282         target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
283         cp -a "$i" "$target"
284     done
285 }
286 copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
287 copy fedora /etc/pki/rpm-gpg/RPM-GPG-*
288
289
290 %preun build
291 test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
292
293
294 ## Temporary workaround to remove old v_* files; it will conflict
295 ## somehow with the -legacy package but can be fixed by reinstalling
296 ## this package.
297 ## TODO: remove me in the final .spec file
298 %define v_services      httpd named portmap sendmail smb sshd xinetd gated
299 %triggerun sysv -- util-vserver-sysv < 0.30.198
300 for i in %v_services; do
301         %chkconfig --del v_$i || :
302 done
303
304
305 %post legacy
306 # PlanetLab Node Manager takes care of starting and stopping VServers
307 #%chkconfig --add rebootmgr
308 #%chkconfig --add vservers-legacy
309
310 # PlanetLab does not require these legacy services
311 #for i in %v_services; do
312 #       %chkconfig --add v_$i
313 #done
314
315
316 %preun legacy
317 #test "$1" != 0 || %_initrddir/rebootmgr   stop &>/dev/null || :
318
319 #test "$1" != 0 || for i in %v_services; do
320 #       %chkconfig --del v_$i
321 #done
322
323 #test "$1" != 0 || %chkconfig --del rebootmgr
324 #test "$1" != 0 || %chkconfig --del vservers-legacy
325
326 %postun legacy
327 #test "$1" = 0  || %_initrddir/rebootmgr   condrestart >/dev/null || :
328
329
330 %files -f %name-base.list
331 %defattr(-,root,root,-)
332 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
333 %doc doc/*.html doc/*.css
334 /sbin/vshelper
335 %dir %confdir
336 %dir %confdefaultdir
337 %dir %confdefaultdir/apps
338 %dir %confdefaultdir/files
339 %dir %pkglibdir/defaults
340 %ghost %confdefaultdir/vdirbase
341 %ghost %confdefaultdir/run.rev
342
343 %dir %_localstatedir/run/vservers
344 %dir %_localstatedir/run/vservers.rev
345 %dir %_localstatedir/run/vshelper
346
347
348 %files lib -f %name-lib.list
349 %files sysv -f %name-sysv.list
350
351
352 %files core -f %name-core.list
353 %defattr(-,root,root,-)
354 %dir %pkglibdir
355
356
357 %files build -f %name-build.list
358 %defattr(-,root,root,-)
359 %doc contrib/yum*.patch
360 %dir %confdir/.distributions
361 %dir %confdir/.distributions/*
362 %dir %confdir/.distributions/*/apt
363 %dir %confdir/.distributions/.common
364 %dir %confdir/.distributions/.common/pubkeys
365 %dir %confdefaultdir/apps/vunify
366 %dir %confdefaultdir/apps/vunify/hash
367
368
369 %files legacy -f %name-legacy.list
370 %defattr(-,root,root,-)
371 %dir %pkglibdir/legacy
372
373
374 %files devel -f %name-devel.list
375 %defattr(-,root,root,-)
376 %doc lib/apidoc/latex/refman.pdf
377 %doc lib/apidoc/html
378
379
380 %files python
381 %defattr(0644,root,root)
382 %_libdir/python@PYTHON_VERSION@/site-packages/*
383
384
385 %changelog
386 * Thu Aug 21 2005 Mark Huang <mlhuang@cs.princeton.edu>
387 - restore build of python modules
388
389 * Sat Aug 20 2005 Mark Huang <mlhuang@cs.princeton.edu>
390 - upgrade to util-vserver-0.30.208
391 - forward-port vbuild and legacy support until we can find a suitable
392   replacement
393 - make vsh use new vc_create_context() call
394
395 * Thu Jul 28 2005 Steve Muir <smuir@cs.princeton.edu>
396 - add support for static vserver IDs to vuseradd and vuserdel
397
398 * Thu Jul 21 2005 Steve Muir <smuir@cs.princeton.edu>
399 - add bwlimit and cpulimit modules
400
401 * Fri Jul 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-1
402 - require the -lib subpackage by -devel
403 - copy GPG keys from /etc/pki/rpm-gpg/
404
405 * Mon Jun 20 2005 Steve Muir <smuir@cs.princeton.edu>
406 - import Marc's vdu implementation
407
408 * Wed Jun 15 2005 Steve Muir <smuir@cs.princeton.edu>
409 - 'vserver-init start' functionality subsumed by Node Manager
410
411 * Thu Jun 02 2005 Marc E. Fiuczynski <mef@cs.princeton.edu>
412 - Fixed vlimit command
413
414 * Wed May 25 2005 Steve Muir <smuir@cs.princeton.edu>
415 - add Python modules for manipulating vservers
416
417 * Fri Apr 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.206-1
418 - added patches to make yum work in chroot environments
419 - version 0.30.206
420
421 * Thu Apr  7 2005 Steve Muir <smuir@cs.princeton.edu>
422 - vuserdel changes: don't shutdown vserver, just kill all processes;
423   unmount all mountpoints in vserver before deleting
424
425 * Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
426 - added some %%descriptions
427 - copy GPG keys from the system into the confdir
428 - buildrequire dietlibc-0.25
429 - BuildRequire beecrypt-devel
430 - cleanups
431 - use %%global instead of %%define
432 - removed 'run.rev' as a vserver-local variable and made it a system-wide setting
433
434 * Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
435 - updated BuildRequires:
436 - use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
437 - moved the v_* initscripts to legacy
438 - do not ship the /vservers directory itself; as it is immutable, the
439   extraction will fail else
440
441 * Fri Nov 19 2004 Mark Huang <mlhuang@cs.princeton.edu>
442 - vcached no longer runs as a daemon
443 - do not restart vservers when package is upgraded
444
445 * Wed Nov 17 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-6.planetlab
446 + planetlab-3_0-rc4
447 - PL2445
448 - Both vcached and vuseradd now print a warning message when vbuild
449   succeeds but the resulting new vserver image is smaller in size than
450   the vserver-reference image.
451 - vuseradd: clean up some more junk on failure
452
453 * Tue Nov 16 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-5.planetlab
454 + planetlab-3_0-rc3
455 - PL3026: This is the upgraded version of vdu that maintains an
456   internal hash table of files with a nlink count > 1.  Only if vdu
457   sees all hard links to a particular inode does it add its size and
458   block count to the total.
459
460 * Fri Nov 12 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-4.planetlab
461 - PL2445 Use -b option to du to avoid rounding errors.
462
463 * Sat Nov  6 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-3.planetlab
464 + planetlab-3_0-rc2
465 - don't create the symbolic link /home/slice/.ssh, this is not how
466   pl_sshd works
467
468 * Mon Oct 11 2004 Marc E. Fiuczynski <mef@cs.princeton.edu>
469 - added vsh
470
471 * Thu Sep  9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
472 - documented switches for 'rpmbuild'
473
474 * Wed Aug 11 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.29-1.planetlab
475 - initial PlanetLab 3.0 build.
476
477 * Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
478 - (re)added the MANIFEST_* variables which were lost some time ago;
479   this will preserve %%config files...
480
481 * Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
482 - use file-list for sysv scripts also
483
484 * Sat Mar  6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
485 - added vprocunhide-service support
486 - added doxygen support
487 - updated Requires:
488
489 * Wed Oct  1 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.5-0
490 - Initial build.