## --without dietlibc ... disable usage of dietlibc
## --without xalan ... do not require/use the xalan xslt processor
-%define confdir %_sysconfdir/vservers
-%define confdefaultdir %confdir/.defaults
-%define pkglibdir %_libdir/%name
-%define __chattr /usr/bin/chattr
-%define chkconfig /sbin/chkconfig
+%global confdir %_sysconfdir/vservers
+%global confdefaultdir %confdir/.defaults
+%global pkglibdir %_libdir/%name
+%global __chattr /usr/bin/chattr
+%global chkconfig /sbin/chkconfig
+
+%global _localstatedir %_var
+
+
+%{!?release_func:%global release_func() %1}
Summary: Linux virtual server utilities
Name: @PACKAGE@
Version: @VERSION@
-Release: 0
-Epoch: 0
+Release: %release_func 0
License: GPL
Group: System Environment/Base
URL: http://savannah.nongnu.org/projects/util-vserver/
Source0: http://savannah.nongnu.org/download/util-vserver/stable.pkg/%version/%name-%version.tar.bz2
BuildRoot: %_tmppath/%name-%version-%release-root
Requires: init(%name)
-Requires: %name-core = %epoch:%version-%release
-Requires: %name-lib = %epoch:%version-%release
+Requires: %name-core = %version-%release
+Requires: %name-lib = %version-%release
Requires: diffutils mktemp sed
-Provides: vserver = %epoch:%version-%release
-Obsoletes: vserver < %epoch:%version
-BuildRequires: mount vconfig gawk iproute
+Provides: vserver = %version-%release
+Obsoletes: vserver < %version
+BuildRequires: mount vconfig gawk iproute iptables
BuildRequires: gcc-c++ wget
-BuildRequires: e2fsprogs-devel
+BuildRequires: e2fsprogs-devel beecrypt-devel
BuildRequires: doxygen tetex-latex
Requires(post): %__chattr
Requires(pre): %pkglibdir
Requires(postun): %pkglibdir
-%{!?_without_dietlibc:BuildRequires: dietlibc >= 0:0.24}
+%{!?_without_dietlibc:BuildRequires: dietlibc >= 0:0.25}
%{!?_without_xalan:BuildRequires: xalan-j}
%package lib
Summary: Tools which can be used to build vservers
Group: Applications/System
Requires: rpm apt wget binutils tar e2fsprogs
-Requires: %name = %epoch:%version-%release
+Requires: %name = %version-%release
Requires(pre): %confdir
Requires(postun): %confdir
Provides: init(%name) = sysv
Requires: make diffutils
Requires: initscripts
-Requires: %name = %epoch:%version-%release
+Requires: %name = %version-%release
Requires(post): %chkconfig
Requires(preun): %chkconfig
Requires(pre): %_initrddir %pkglibdir
%package legacy
Summary: Legacy utilities for util-vserver
Group: Applications/System
-Requires: %name = %epoch:%version-%release
+Requires: %name = %version-%release
Requires(post): %chkconfig
Requires(preun): %chkconfig
Requires(pre): %_initrddir %pkglibdir
%description
-This package provides the components and a framework to setup virtual
+util-vserver provides the components and a framework to setup virtual
servers. A virtual server runs inside a linux server. It is nevertheless
highly independent. As such, you can run various services with normal
configuration. The various vservers can't interact with each other and
set_ipv4root system call.
%description lib
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the shared libraries needed by all other
+'util-vserver' subpackages.
+
%description core
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which are required to communicate with
+the Linux-Vserver enabled kernel.
+
+
%description build
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains utilities which assist in building Vservers.
+
%description sysv
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the SysV initscripts which start and stop
+VServers and related tools.
+
+
%description legacy
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains the tools which are needed to work with VServers
+having an old-style configuration.
+
+
%description devel
+util-vserver provides the components and a framework to setup virtual
+servers. A virtual server runs inside a linux server. It is nevertheless
+highly independent. As such, you can run various services with normal
+configuration. The various vservers can't interact with each other and
+can't interact with services in the main server.
+
+This package contains header files and libraries which are needed to
+develop VServer related applications.
%prep
%post
-f="%confdefaultdir/vdirbase"; test -L "$f" -o -e "$f" || ln -s /vservers "$f"
-f="%confdefaultdir/run.rev"; test -L "$f" -o -e "$f" || ln -s /var/run/vservers.rev "$f"
+test -d /vservers || mkdir -m0000 /vservers
+test -d /vservers/.pkg || mkdir -m0755 /vservers/.pkg
-%__chattr +t /vservers || :
+f="%confdefaultdir/vdirbase"; test -L "$f" -o -e "$f" || ln -s /vservers "$f"
+f="%confdefaultdir/run.rev"; test -L "$f" -o -e "$f" || ln -s %_localstatedir/run/vservers.rev "$f"
+
+%_sbindir/setattr --barrier /vservers || :
+
+
+%post lib -p /sbin/ldconfig
+%postun lib -p /sbin/ldconfig
-%define v_services httpd named portmap sendmail smb sshd xinetd gated
%post sysv
%chkconfig --add vservers-default
%chkconfig --add vprocunhide
-for i in %v_services; do
- %chkconfig --add v_$i
-done
%preun sysv
-test "$1" != 0 || for i in %v_services; do
- %chkconfig --del v_$i
-done
-
test "$1" != 0 || %_initrddir/vprocunhide stop &>/dev/null || :
test "$1" != 0 || %chkconfig --del vprocunhide
test "$1" = 0 || %_initrddir/vprocunhide condrestart >/dev/null || :
-%post lib -p /sbin/ldconfig
-%postun lib -p /sbin/ldconfig
+%triggerin build -- fedora-release
+function copy()
+{
+ base=$1
+ shift
+
+ for i; do
+ test -r "$i" || continue
+
+ target=%confdir/.distributions/.common/pubkeys/$base-$(basename "$i")
+ cp -a "$i" "$target"
+ done
+}
+copy fedora /usr/share/doc/fedora-release-*/RPM-GPG-*
+
+
+%preun build
+test "$1" != 0 || rm -f %confdir/.distributions/.common/pubkeys/fedora-*
+
+
+## Temporary workaround to remove old v_* files; it will conflict
+## somehow with the -legacy package but can be fixed by reinstalling
+## this package.
+## TODO: remove me in the final .spec file
+%define v_services httpd named portmap sendmail smb sshd xinetd gated
+%triggerun sysv -- util-vserver-sysv < 0.30.198
+for i in %v_services; do
+ %chkconfig --del v_$i || :
+done
%post legacy
%chkconfig --add rebootmgr
%chkconfig --add vservers-legacy
+for i in %v_services; do
+ %chkconfig --add v_$i
+done
+
+
%preun legacy
test "$1" != 0 || %_initrddir/rebootmgr stop &>/dev/null || :
+test "$1" != 0 || for i in %v_services; do
+ %chkconfig --del v_$i
+done
+
test "$1" != 0 || %chkconfig --del rebootmgr
test "$1" != 0 || %chkconfig --del vservers-legacy
%ghost %confdefaultdir/vdirbase
%ghost %confdefaultdir/run.rev
-%attr(000,root,root) %dir /vservers/.pkg
-%attr(000,root,root) %dir /vservers
-
-%dir /var/run/vservers
-%dir /var/run/vservers.rev
-%dir /var/run/vshelper
+%dir %_localstatedir/run/vservers
+%dir %_localstatedir/run/vservers.rev
+%dir %_localstatedir/run/vshelper
%files lib -f %name-lib.list
%dir %confdir/.distributions
%dir %confdir/.distributions/*
%dir %confdir/.distributions/*/apt
+%dir %confdir/.distributions/.common
+%dir %confdir/.distributions/.common/pubkeys
+%dir %confdefaultdir/apps/vunify
+%dir %confdefaultdir/apps/vunify/hash
%files legacy -f %name-legacy.list
%changelog
+* Thu Mar 24 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.205-0
+- added some %%descriptions
+- copy GPG keys from the system into the confdir
+- buildrequire dietlibc-0.25
+- BuildRequire beecrypt-devel
+- cleanups
+- use %%global instead of %%define
+- removed 'run.rev' as a vserver-local variable and made it a system-wide setting
+
+* Wed Jan 26 2005 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.198-0.3
+- updated BuildRequires:
+- use 'setattr --barrier' instead of 'chattr +t' in the %%post scriptlet
+- moved the v_* initscripts to legacy
+- do not ship the /vservers directory itself; as it is immutable, the
+ extraction will fail else
+
* Thu Sep 9 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.30.194-0
-- commented switches
+- documented switches for 'rpmbuild'
* Wed May 26 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.215-0
- (re)added the MANIFEST_* variables which were lost some time ago;