# $Id$
-%define confdir %_sysconfdir/vservers
-%define confdefaultdir %confdir/.defaults
-%define pkglibdir %_libdir/%name
-%define __chattr /usr/bin/chattr
-%define chkconfig /sbin/chkconfig
+## This package understands the following switches:
+## --without dietlibc ... disable usage of dietlibc
+## --without xalan ... do not require/use the xalan xslt processor
+
+%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(@PACKAGE@)
-Requires: %name-core = %epoch:%version-%release
-Requires: %name-lib = %epoch:%version-%release
-Requires: make
-Provides: vserver = %epoch:%version-%release
-Obsoletes: vserver < %epoch:%version
-BuildRequires: mount vconfig gawk iproute
+Requires: init(%name)
+Requires: %name-core = %version-%release
+Requires: %name-lib = %version-%release
+Requires: diffutils mktemp sed
+Provides: vserver = %version-%release
+Obsoletes: vserver < %version
+BuildRequires: mount vconfig gawk iproute iptables
BuildRequires: gcc-c++ wget
-BuildRequires: e2fsprogs-devel
-BuildRequires: doxygen tetex-latex libxslt
-Requires(post): %__chattr
-%{!?_without_dietlibc:BuildRequires: dietlibc >= 0:0.22}
+BuildRequires: e2fsprogs-devel beecrypt-devel
+BuildRequires: doxygen tetex-latex
+Requires(post): %__chattr
+Requires(pre): %pkglibdir
+Requires(postun): %pkglibdir
+%{!?_without_dietlibc:BuildRequires: dietlibc >= 0:0.25}
+%{!?_without_xalan:BuildRequires: xalan-j}
%package lib
-Summary: Dynamic libraries for util-vserver
-Group: System Environment/Libraries
+Summary: Dynamic libraries for util-vserver
+Group: System Environment/Libraries
%package core
-Summary: The core-utilities for util-vserver
-Group: Applications/System
+Summary: The core-utilities for util-vserver
+Group: Applications/System
+Requires: util-linux
%package build
-Summary: Tools which can be used to build vservers
-Group: Applications/System
-Requires: %name = %epoch:%version-%release
-Requires: rpm apt wget binutils tar
+Summary: Tools which can be used to build vservers
+Group: Applications/System
+Requires: rpm apt wget binutils tar e2fsprogs
+Requires: %name = %version-%release
+Requires(pre): %confdir
+Requires(postun): %confdir
%package sysv
-Summary: SysV-initscripts for vserver
-Group: System Environment/Base
-Provides: init(@PACKAGE@)
-Requires: %name = %epoch:%version-%release
-Requires: initscripts
-Requires(pre,postun): %_initrddir
+Summary: SysV-initscripts for vserver
+Group: System Environment/Base
+Provides: init(%name) = sysv
+Requires: make diffutils
+Requires: initscripts
+Requires: %name = %version-%release
+Requires(post): %chkconfig
+Requires(preun): %chkconfig
+Requires(pre): %_initrddir %pkglibdir
+requires(postun): %_initrddir %pkglibdir
%package legacy
-Summary: Legacy utilities for util-vserver
-Group: Applications/System
-Requires: %name = %epoch:%version-%release
+Summary: Legacy utilities for util-vserver
+Group: Applications/System
+Requires: %name = %version-%release
+Requires(post): %chkconfig
+Requires(preun): %chkconfig
+Requires(pre): %_initrddir %pkglibdir
+requires(postun): %_initrddir %pkglibdir
%package devel
-Summary: Header-files and libraries which are needed to develop vserver based applications
-Group: Development/Libraries
-Requires: pkgconfig
+Summary: Header-files and libraries which are needed to develop vserver based applications
+Group: Development/Libraries
+Requires: pkgconfig
%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
%install
rm -rf $RPM_BUILD_ROOT
-%__make DESTDIR="$RPM_BUILD_ROOT" install install-vserverdir
+%__make DESTDIR="$RPM_BUILD_ROOT" install install-distribution
rm -f $RPM_BUILD_ROOT/%_libdir/*.la
+MANIFEST_CONFIG='%config' \
+MANIFEST_CONFIG_NOREPLACE='%config(noreplace)' \
contrib/make-manifest %name $RPM_BUILD_ROOT contrib/manifest.dat
%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
+
+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 || :
-%__chattr +t /vservers || :
+
+%post lib -p /sbin/ldconfig
+%postun lib -p /sbin/ldconfig
-%define v_services httpd named portmap sendmail smb sshd xinetd
%post sysv
-%chkconfig --add vservers
-%chkconfig --add rebootmgr
+%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 || %_initrddir/rebootmgr stop &>/dev/null || :
test "$1" != 0 || %chkconfig --del vprocunhide
-test "$1" != 0 || %chkconfig --del rebootmgr
-test "$1" != 0 || %chkconfig --del vservers
+test "$1" != 0 || %chkconfig --del vservers-default
%postun sysv
test "$1" = 0 || %_initrddir/vprocunhide condrestart >/dev/null || :
-test "$1" = 0 || %_initrddir/rebootmgr 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
+
+%postun legacy
+test "$1" = 0 || %_initrddir/rebootmgr condrestart >/dev/null || :
%files -f %name-base.list
%defattr(-,root,root,-)
%doc AUTHORS COPYING ChangeLog NEWS README THANKS
-%doc doc/FAQ.txt
%doc doc/*.html doc/*.css
-%dir %pkglibdir
+/sbin/vshelper
+%dir %confdir
%dir %confdefaultdir
-%dir %confdefaultdir/init
%dir %confdefaultdir/apps
-%dir %confdefaultdir/apps/pkgmgmt
%dir %confdefaultdir/files
+%dir %pkglibdir/defaults
%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 %_localstatedir/run/vservers
+%dir %_localstatedir/run/vservers.rev
+%dir %_localstatedir/run/vshelper
%files lib -f %name-lib.list
+%files sysv -f %name-sysv.list
+
%files core -f %name-core.list
%defattr(-,root,root,-)
%files build -f %name-build.list
%defattr(-,root,root,-)
-%dir %pkglibdir
%dir %confdir/.distributions
%dir %confdir/.distributions/*
%dir %confdir/.distributions/*/apt
-%config(noreplace) %confdir/.distributions/*/apt/sources.list
+%dir %confdir/.distributions/.common
+%dir %confdir/.distributions/.common/pubkeys
+%dir %confdefaultdir/apps/vunify
+%dir %confdefaultdir/apps/vunify/hash
%files legacy -f %name-legacy.list
%dir %pkglibdir/legacy
-%files sysv
-%defattr(-,root,root,-)
-%config %_initrddir/*
-%config(noreplace) %_sysconfdir/vservers.conf
-
-
%files devel -f %name-devel.list
%defattr(-,root,root,-)
%doc lib/apidoc/latex/refman.pdf
%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
+- 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;
+ this will preserve %%config files...
+
+* Mon Mar 15 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.202-0
+- use file-list for sysv scripts also
+
* Sat Mar 6 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> - 0:0.29.198-0
- added vprocunhide-service support
- added doxygen support