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
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
13 %global _localstatedir %_var
16 %{!?release_func:%global release_func() %1%{?dist}}
18 %define name util-vserver
19 %define version 0.30.208
20 %define release 13%{?pldistro:.%{pldistro}}%{?date:.%{date}}
22 %define _without_dietlibc 1
23 %define _without_xalan 1
25 # don't build debuginfo RPM
26 %define debug_package %{nil}
29 Packager: PlanetLab Central <support@planet-lab.org>
30 Distribution: PlanetLab 3.0
31 URL: http://cvs.planet-lab.org/cvs/util-vserver
33 Summary: Linux virtual server utilities
38 Group: System Environment/Base
39 #URL: http://savannah.nongnu.org/projects/util-vserver/
40 Source0: http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
41 BuildRoot: %_tmppath/%name-%version-%release-root
43 Requires: %name-core = %version-%release
44 Requires: %name-lib = %version-%release
45 Requires: diffutils mktemp sed
46 Provides: vserver = %version-%release
47 Obsoletes: vserver < %version
48 BuildRequires: mount vconfig gawk iproute iptables
49 BuildRequires: gcc-c++ wget which diffutils
50 BuildRequires: e2fsprogs-devel beecrypt-devel
51 BuildRequires: doxygen tetex-latex
52 Requires(pre): %pkglibdir
53 Requires(postun): %pkglibdir
54 %{!?_without_dietlibc:BuildRequires: dietlibc >= 0:0.25}
55 %{!?_without_xalan:BuildRequires: xalan-j}
58 Summary: Dynamic libraries for util-vserver
59 Group: System Environment/Libraries
62 Summary: The core-utilities for util-vserver
63 Group: Applications/System
67 Summary: Tools which can be used to build vservers
68 Group: Applications/System
69 Requires: rpm wget binutils tar e2fsprogs
70 Requires: %name = %version-%release
71 Requires(pre): %confdir
72 Requires(postun): %confdir
75 Summary: SysV-initscripts for vserver
76 Group: System Environment/Base
77 Provides: init(%name) = sysv
78 Requires: make diffutils
80 Requires: %name = %version-%release
81 Requires(post): %chkconfig
82 Requires(preun): %chkconfig
83 Requires(pre): %_initrddir %pkglibdir
84 requires(postun): %_initrddir %pkglibdir
87 Summary: Legacy utilities for util-vserver
88 Group: Applications/System
89 Requires: %name = %version-%release
90 Requires(post): %chkconfig
91 Requires(preun): %chkconfig
92 Requires(pre): %_initrddir %pkglibdir
93 requires(postun): %_initrddir %pkglibdir
96 Summary: Header-files and libraries needed to develop vserver based applications
97 Group: Development/Libraries
99 Requires: %name-lib = %version-%release
102 Summary: Python modules for manipulating vservers
103 Group: Applications/System
104 Requires: python util-python
105 Obsoletes: util-vserver-py23 resman
109 util-vserver provides the components and a framework to setup virtual
110 servers. A virtual server runs inside a linux server. It is nevertheless
111 highly independent. As such, you can run various services with normal
112 configuration. The various vservers can't interact with each other and
113 can't interact with services in the main server.
115 This requires a special kernel supporting the new new_s_context and
116 set_ipv4root system call.
119 util-vserver provides the components and a framework to setup virtual
120 servers. A virtual server runs inside a linux server. It is nevertheless
121 highly independent. As such, you can run various services with normal
122 configuration. The various vservers can't interact with each other and
123 can't interact with services in the main server.
125 This package contains the shared libraries needed by all other
126 'util-vserver' subpackages.
129 util-vserver provides the components and a framework to setup virtual
130 servers. A virtual server runs inside a linux server. It is nevertheless
131 highly independent. As such, you can run various services with normal
132 configuration. The various vservers can't interact with each other and
133 can't interact with services in the main server.
135 This package contains utilities which are required to communicate with
136 the Linux-Vserver enabled kernel.
140 util-vserver provides the components and a framework to setup virtual
141 servers. A virtual server runs inside a linux server. It is nevertheless
142 highly independent. As such, you can run various services with normal
143 configuration. The various vservers can't interact with each other and
144 can't interact with services in the main server.
146 This package contains utilities which assist in building Vservers.
149 util-vserver provides the components and a framework to setup virtual
150 servers. A virtual server runs inside a linux server. It is nevertheless
151 highly independent. As such, you can run various services with normal
152 configuration. The various vservers can't interact with each other and
153 can't interact with services in the main server.
155 This package contains the SysV initscripts which start and stop
156 VServers and related tools.
160 util-vserver provides the components and a framework to setup virtual
161 servers. A virtual server runs inside a linux server. It is nevertheless
162 highly independent. As such, you can run various services with normal
163 configuration. The various vservers can't interact with each other and
164 can't interact with services in the main server.
166 This package contains the tools which are needed to work with VServers
167 having an old-style configuration.
171 util-vserver provides the components and a framework to setup virtual
172 servers. A virtual server runs inside a linux server. It is nevertheless
173 highly independent. As such, you can run various services with normal
174 configuration. The various vservers can't interact with each other and
175 can't interact with services in the main server.
177 This package contains header files and libraries which are needed to
178 develop VServer related applications.
182 Python modules for manipulating vservers. Provides a superset of the
183 functionality of the vserver script (at least will do in the future),
184 but more readily accessible from Python code.
192 automake --add-missing
195 %configure --with-initrddir=%_initrddir --enable-release \
196 %{?_without_dietlibc:--disable-dietlibc}
198 %__make %{?_smp_mflags} all
199 %__make %{?_smp_mflags} doc
204 rm -rf $RPM_BUILD_ROOT
205 %__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
207 rm -f $RPM_BUILD_ROOT/%_libdir/*.la
209 MANIFEST_CONFIG='%config' \
210 MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
211 contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
213 # install python bindings
214 %__make -C python DESTDIR="$PWD/tmp" install
215 install -d $RPM_BUILD_ROOT/%{_datadir}/%{name}
216 install tmp/usr/lib/python*/site-packages/*.{py,so} $RPM_BUILD_ROOT/%{_datadir}/%{name}/
217 install -D -m 755 python/bwlimit $RPM_BUILD_ROOT/%{_sbindir}/bwlimit
225 rm -rf $RPM_BUILD_ROOT
229 test -d /vservers || mkdir -m0000 /vservers
230 test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
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"
235 %_sbindir/setattr --barrier /vservers || :
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
244 # 0 = erase, 1 = upgrade
245 if [ "$1" = 0 ] ; then
246 perl -i -n -e 'next if /^\/bin\/vsh$/; print' /etc/shells
250 %post lib -p /sbin/ldconfig
251 %postun lib -p /sbin/ldconfig
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
263 #test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
265 #test "$1" != 0 || %chkconfig --del vprocunhide
266 #test "$1" != 0 || %chkconfig --del vservers-default
270 #test "$1" = 0 || %_initrddir/vprocunhide condrestart >/dev/null || :
273 %triggerin build -- fedora-release
280 test -r "$i" || continue
282 target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
286 copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
287 copy fedora /etc/pki/rpm-gpg/RPM-GPG-*
291 test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
294 ## Temporary workaround to remove old v_* files; it will conflict
295 ## somehow with the -legacy package but can be fixed by reinstalling
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 || :
306 # PlanetLab Node Manager takes care of starting and stopping VServers
307 #%chkconfig --add rebootmgr
308 #%chkconfig --add vservers-legacy
310 # PlanetLab does not require these legacy services
311 #for i in %v_services; do
312 # %chkconfig --add v_$i
317 #test "$1" != 0 || %_initrddir/rebootmgr stop &>/dev/null || :
319 #test "$1" != 0 || for i in %v_services; do
320 # %chkconfig --del v_$i
323 #test "$1" != 0 || %chkconfig --del rebootmgr
324 #test "$1" != 0 || %chkconfig --del vservers-legacy
327 #test "$1" = 0 || %_initrddir/rebootmgr condrestart >/dev/null || :
330 %files -f %name-base.list
331 %defattr(-,root,root,-)
332 %doc AUTHORS COPYING ChangeLog NEWS README THANKS
333 %doc doc/*.html doc/*.css
337 %dir %confdefaultdir/apps
338 %dir %confdefaultdir/files
339 %dir %pkglibdir/defaults
340 %ghost %confdefaultdir/vdirbase
341 %ghost %confdefaultdir/run.rev
343 %dir %_localstatedir/run/vservers
344 %dir %_localstatedir/run/vservers.rev
345 %dir %_localstatedir/run/vshelper
348 %files lib -f %name-lib.list
349 %files sysv -f %name-sysv.list
352 %files core -f %name-core.list
353 %defattr(-,root,root,-)
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
369 %files legacy -f %name-legacy.list
370 %defattr(-,root,root,-)
371 %dir %pkglibdir/legacy
374 %files devel -f %name-devel.list
375 %defattr(-,root,root,-)
376 %doc lib/apidoc/latex/refman.pdf
381 pushd %{_datadir}/%{name} >/dev/null
383 # Byte compile and install modules
385 for file in *.py ; do
386 if [ -n "$py_modules" ] ; then
387 py_modules="$py_modules,"
389 py_modules="$py_modules '${file%*.py}'"
391 %define setup %{__python} -c "from distutils.core import setup; setup(py_modules=[$py_modules])"
395 # Install the prebuilt extensions by hand
396 python_sitelib=$(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
397 install -D -m 755 *.so "$python_sitelib"/
402 %triggerpostun python -- util-vserver-python, util-vserver-py23
403 # RPMs get upgraded by installing the new one, then uninstalling the
404 # old one. Since we no longer own the byte-compiled modules, they may
405 # be removed right after we create them in %post if we are upgraded
406 # from a version that did own them at one point. This section should
407 # be removed once all packages have been upgraded to at least this
409 pushd %{_datadir}/%{name} >/dev/null
411 # Byte compile and install modules
413 for file in *.py ; do
414 if [ -n "$py_modules" ] ; then
415 py_modules="$py_modules,"
417 py_modules="$py_modules '${file%*.py}'"
419 %define setup %{__python} -c "from distutils.core import setup; setup(py_modules=[$py_modules])"
423 # Install the prebuilt extensions by hand
424 python_sitelib=$(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
425 install -D -m 755 *.so "$python_sitelib"/
431 # 0 = erase, 1 = upgrade
432 if [ $1 -eq 0 ] ; then
433 python_sitelib=$(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")
434 pushd %{_datadir}/%{name} >/dev/null
435 for file in *.py *.so ; do
436 rm -f "$python_sitelib"/${file}*
448 * Fri Feb 17 2006 Steve Muir <smuir@cs.princeton.edu>
449 - add support for setting guaranteed CPU share flag in rspec
451 * Fri Jan 13 2006 Steve Muir <smuir@cs.princeton.edu>
452 - fix bug in python/vserverimpl.c where attempting to adjust CPU share
453 for a context that didn't exist would cause an error (it should be a
456 * Fri Dec 2 2005 Steve Muir <smuir@cs.princeton.edu>
457 - fix bugs in python/vserverimpl.c where exceptions were not raised when
458 they should be and thus occured later at unexpected times
459 - add support for stopping a vserver
461 * Wed Nov 9 2005 Steve Muir <smuir@cs.princeton.edu>
462 - add support for removing resource limits e.g., when a slice is deleted
464 * Mon Nov 7 2005 Steve Muir <smuir@cs.princeton.edu>
465 - fix file descriptor leak in vduimpl
466 - clean up handling of network parameters
467 - don't rely upon /etc/vservers/foo.conf to initialise vserver object
469 * Wed Nov 2 2005 Steve Muir <smuir@cs.princeton.edu>
470 - fix Python modules to handling scheduling parameters correctly
472 * Fri Oct 28 2005 Steve Muir <smuir@cs.princeton.edu>
473 - raise exception about being over disk limit after setting usage values
475 * Fri Oct 7 2005 Steve Muir <smuir@cs.princeton.edu>
476 - create common function to be used for entering a vserver and applying
479 * Thu Aug 21 2005 Mark Huang <mlhuang@cs.princeton.edu>
480 - restore build of python modules
482 * Sat Aug 20 2005 Mark Huang <mlhuang@cs.princeton.edu>
483 - upgrade to util-vserver-0.30.208
484 - forward-port vbuild and legacy support until we can find a suitable
486 - make vsh use new vc_create_context() call
488 * Thu Jul 28 2005 Steve Muir <smuir@cs.princeton.edu>
489 - add support for static vserver IDs to vuseradd and vuserdel
491 * Thu Jul 21 2005 Steve Muir <smuir@cs.princeton.edu>
492 - add bwlimit and cpulimit modules
494 * Fri Jul 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.208-1
495 - require the -lib subpackage by -devel
496 - copy GPG keys from /etc/pki/rpm-gpg/
498 * Mon Jun 20 2005 Steve Muir <smuir@cs.princeton.edu>
499 - import Marc's vdu implementation
501 * Wed Jun 15 2005 Steve Muir <smuir@cs.princeton.edu>
502 - 'vserver-init start' functionality subsumed by Node Manager
504 * Thu Jun 02 2005 Marc E. Fiuczynski <mef@cs.princeton.edu>
505 - Fixed vlimit command
507 * Wed May 25 2005 Steve Muir <smuir@cs.princeton.edu>
508 - add Python modules for manipulating vservers
510 * Fri Apr 15 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.206-1
511 - added patches to make yum work in chroot environments
514 * Thu Apr 7 2005 Steve Muir <smuir@cs.princeton.edu>
515 - vuserdel changes: don't shutdown vserver, just kill all processes;
516 unmount all mountpoints in vserver before deleting
518 * Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
519 - added some %%descriptions
520 - copy GPG keys from the system into the confdir
521 - buildrequire dietlibc-0.25
522 - BuildRequire beecrypt-devel
524 - use %%global instead of %%define
525 - removed 'run.rev' as a vserver-local variable and made it a system-wide setting
527 * Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
528 - updated BuildRequires:
529 - use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
530 - moved the v_* initscripts to legacy
531 - do not ship the /vservers directory itself; as it is immutable, the
532 extraction will fail else
534 * Fri Nov 19 2004 Mark Huang <mlhuang@cs.princeton.edu>
535 - vcached no longer runs as a daemon
536 - do not restart vservers when package is upgraded
538 * Wed Nov 17 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-6.planetlab
541 - Both vcached and vuseradd now print a warning message when vbuild
542 succeeds but the resulting new vserver image is smaller in size than
543 the vserver-reference image.
544 - vuseradd: clean up some more junk on failure
546 * Tue Nov 16 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-5.planetlab
548 - PL3026: This is the upgraded version of vdu that maintains an
549 internal hash table of files with a nlink count > 1. Only if vdu
550 sees all hard links to a particular inode does it add its size and
551 block count to the total.
553 * Fri Nov 12 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-4.planetlab
554 - PL2445 Use -b option to du to avoid rounding errors.
556 * Sat Nov 6 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.30-3.planetlab
558 - don't create the symbolic link /home/slice/.ssh, this is not how
561 * Mon Oct 11 2004 Marc E. Fiuczynski <mef@cs.princeton.edu>
564 * Thu Sep 9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
565 - documented switches for 'rpmbuild'
567 * Wed Aug 11 2004 Mark Huang <mlhuang@cs.princeton.edu> 0.29-1.planetlab
568 - initial PlanetLab 3.0 build.
570 * Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
571 - (re)added the MANIFEST_* variables which were lost some time ago;
572 this will preserve %%config files...
574 * Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
575 - use file-list for sysv scripts also
577 * Sat Mar 6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
578 - added vprocunhide-service support
579 - added doxygen support
582 * Wed Oct 1 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.23.5-0