-# TODO
-# - %install is not re-entrant
-#
-# m68k and mips are the only not supported archs
+# NOTE:
+# - m68k and mips are the only not supported archs
#
# Conditional build:
%bcond_without dietlibc # don't use dietlibc (ask for troubles)
%bcond_without doc # don't build documentation which needed LaTeX
%bcond_without no_dynamic_context # disable enforcement of disabled dynamic context
%bcond_with xalan # use the xalan xslt processor
+%bcond_with legacy # build legacy 1.x utils
%define vproc_version 0.01
-# diet compile fails with ccache in %{__cc}
-%undefine with_ccache
%ifarch ppc
# pdflatex: refman: Invalid argument
%undefine with_doc
%endif
-%define snap pre2883
-%define rel 4
+# reqdb_pkg and reqdb_ver must match value from current rpm package in distro
+%define reqdb_ver 5.2
+%define reqdb_pkg db%{reqdb_ver}
+%define snap pre3038
+%define rel 5
Summary: Linux virtual server utilities
Summary(pl.UTF-8): Narzędzia dla linuksowych serwerów wirtualnych
Name: util-vserver
License: GPL
Group: Applications/System
Source0: http://people.linux-vserver.org/~dhozac/t/uv-testing/%{name}-%{version}-%{snap}.tar.bz2
-# Source0-md5: 4f7a64b7295ea01673974394f4afd3ff
+# Source0-md5: 21ae909b16d57fdb169743cde35e896d
Source1: vprocunhide.init
Source2: vservers.init
Source3: vservers-legacy.init
Source14: ftp://ftp.pld-linux.org/dists/th/PLD-3.0-Th-GPG-key.asc
# Source14-md5: 08b29584dd349aac9caa7610131a0a88
Source15: %{name}.init
+Source16: %{name}.tmpfiles
Patch0: %{name}-vsysvwrapper.patch
Patch1: %{name}-pld.patch
Patch2: %{name}-centos.patch
+Patch3: %{name}-tld.patch
Patch4: %{name}-m4-diet.patch
Patch5: %{name}-yum-verb-nogpg.patch
Patch6: %{name}-build-umask.patch
Patch21: %{name}-bash-wrapper.patch
Patch22: %{name}-pivot-root-ugly-hack.patch
Patch24: vunify-more-exclude.patch
+Patch25: stat.patch
+Patch26: %{name}-am.patch
+Patch27: %{name}-rpm5.patch
+Patch28: diet-ccache.patch
+Patch29: %{name}-centos6.patch
+Patch30: vsysctl-ignore-files.patch
URL: http://savannah.nongnu.org/projects/util-vserver/
BuildRequires: autoconf
BuildRequires: automake >= 1.9
BuildRequires: beecrypt-devel
BuildRequires: ctags
-%{?with_dietlibc:BuildRequires: dietlibc-static >= 2:0.29}
+%{?with_dietlibc:BuildRequires: dietlibc-static >= 2:0.32-16}
BuildRequires: e2fsprogs-devel
BuildRequires: libstdc++-devel
BuildRequires: libtool >= 1.5.14
BuildRequires: python-devel
BuildRequires: python-modules
BuildRequires: rpm-pythonprov
-BuildRequires: rpmbuild(macros) >= 1.268
+BuildRequires: rpmbuild(macros) >= 1.647
BuildRequires: sed >= 4.0
%if %{with doc}
-BuildRequires: doxygen
+BuildRequires: doxygen >= 1:1.7.3
BuildRequires: graphviz
BuildRequires: libxslt-progs
BuildRequires: python-devel
BuildRequires: tetex-makeindex
BuildRequires: tetex-metafont
%else
+BuildRequires: texlive-fonts-rsfs
BuildRequires: texlive-fonts-type1-urw
BuildRequires: texlive-format-pdflatex
+BuildRequires: texlive-latex-ams
+BuildRequires: texlive-latex-extend
BuildRequires: texlive-latex-ucs
BuildRequires: texlive-makeindex
BuildRequires: texlive-pdftex
Requires: %{name}-lib = %{version}-%{release}
Requires: coreutils
Requires: diffutils
-Requires: issue
+Requires: pld-release
Requires: make
Requires: mktemp >= 1.5-18
-Requires: rc-scripts
+Requires: rc-scripts >= 0.4.3.4
+#Requires: rpm >= 5.4.10-36
Requires: tar
+Requires: uname(release) >= 2.6.27
Requires: util-linux >= 2.13
Requires: vserver-distro-pld = %{version}-%{release}
+Suggests: %{reqdb_pkg}-utils
Obsoletes: util-vserver-build
Obsoletes: util-vserver-core
Obsoletes: util-vserver-init
%description -n vserver-distro-suse -l pl.UTF-8
Szablon do tworzenia VServerów dla dystrybucji SuSE 9.1.
+%package -n vserver-distro-scientificlinux
+Summary: VServer build template for Scientific Linux
+Summary(pl.UTF-8): Szablon do tworzenia VServerów dla dystrybucji Scientific Linux
+Group: Applications/System
+Requires: %{name} = %{version}-%{release}
+Requires: binutils
+Requires: e2fsprogs
+Requires: rpm
+Requires: wget
+Requires: yum
+
+%description -n vserver-distro-scientificlinux
+VServer build template for Scientific Linux.
+
+%description -n vserver-distro-scientificlinux -l pl.UTF-8
+Szablon do tworzenia VServerów dla dystrybucji Scientific Linux.
+
+%package -n vserver-distro-tld
+Summary: VServer build templates for Titanium Linux Distribution
+Summary(pl.UTF-8): Szablony do tworzenia VServerów dla dystrybucji Titanium Linux
+Group: Applications/System
+Requires: %{name} = %{version}-%{release}
+Requires: poldek >= 0.30
+
+%description -n vserver-distro-tld
+VServer build templates for Titanium Linux Distribution.
+
+%description -n vserver-distro-tld -l pl.UTF-8
+Szablony do tworzenia VServerów dla dystrybucji Titanium Linux.
+
%prep
%setup -q -n %{name}-%{version}-%{snap} -a11
%patch0 -p1
%patch1 -p1
%patch2 -p1
+%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch21 -p1
%patch22 -p1
%patch24 -p1
+%patch25 -p1
+%patch26 -p1
+%patch27 -p1
+%patch28 -p1
+%patch29 -p1
+%patch30 -p1
+
+cp -p %{SOURCE9} package-management.txt
-install %{SOURCE9} package-management.txt
+%{__sed} -i -e "s/@RPMDB@/%{reqdb_ver}/g" scripts/pkgmgmt
%build
unset LD_SYMBOLIC_FUNCTIONS || :
# end
%{__make} all
+
%{?with_doc:%{__make} doc}
%{__make} -C vproc-%{vproc_version} \
%install
rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{/vservers/.pkg,/etc/{sysconfig,rc.d/init.d,cron.d}} \
- $RPM_BUILD_ROOT%{_sysconfdir}/vservices \
- $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.defaults/apps/vdevmap
+ $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.defaults/{apps/vdevmap,cgroup} \
+ $RPM_BUILD_ROOT%{systemdtmpfilesdir}
%{__make} -j1 install install-distribution \
+%if %{without legacy}
+ scripts_legacy_src_SCRPTS= \
+ scripts_legacy_gen_SCRPTS= \
+ scripts_legacy_src_PRGS= \
+ sysv_gen_SCRPTS= \
+ legacy_PROGRAMS= \
+%endif
DESTDIR=$RPM_BUILD_ROOT
+# our libcgroup uses per subsystem mount
+touch $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.defaults/cgroup/per-ss
+
chmod -R +rX $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/*
+sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE1} > \
+ $RPM_BUILD_ROOT/etc/rc.d/init.d/vprocunhide
+sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE2} > \
+ $RPM_BUILD_ROOT/etc/rc.d/init.d/vservers
+sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE15} > \
+ $RPM_BUILD_ROOT/etc/rc.d/init.d/util-vserver
+sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE5} > \
+ $RPM_BUILD_ROOT/etc/sysconfig/vservers
+sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' gentoo/bash-wrapper > \
+ $RPM_BUILD_ROOT%{_libdir}/%{name}/bash-wrapper
+
+%if %{with legacy}
+install -d $RPM_BUILD_ROOT%{_sysconfdir}/vservices
+
for i in $RPM_BUILD_ROOT/etc/rc.d/init.d/v_* ; do
s=$(basename $i | sed s/v_//)
cat >$RPM_BUILD_ROOT%{_sysconfdir}/vservices/$s << EOF
EOF
done
-sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE1} > \
- $RPM_BUILD_ROOT/etc/rc.d/init.d/vprocunhide
-sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE2} > \
- $RPM_BUILD_ROOT/etc/rc.d/init.d/vservers
sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE3} > \
$RPM_BUILD_ROOT/etc/rc.d/init.d/vservers-legacy
sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE4} > \
$RPM_BUILD_ROOT/etc/rc.d/init.d/rebootmgr
-sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE15} > \
- $RPM_BUILD_ROOT/etc/rc.d/init.d/util-vserver
-sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' %{SOURCE5} > \
- $RPM_BUILD_ROOT/etc/sysconfig/vservers
-sed 's|%{_usrlib}/util-vserver|%{_libdir}/%{name}|g' gentoo/bash-wrapper > \
- $RPM_BUILD_ROOT%{_libdir}/%{name}/bash-wrapper
-
-install %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/vservers-legacy
+install -p %{SOURCE6} $RPM_BUILD_ROOT/etc/sysconfig/vservers-legacy
+%else
+rm $RPM_BUILD_ROOT/etc/rc.d/init.d/rebootmgr
+rm $RPM_BUILD_ROOT/etc/rc.d/init.d/vservers-legacy
+rm $RPM_BUILD_ROOT%{_mandir}/man8/distrib-info.8
+rm $RPM_BUILD_ROOT%{_mandir}/man8/rebootmgr.8
+rm $RPM_BUILD_ROOT%{_mandir}/man8/vserver-copy.8
+%endif
-install %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/vrootdevices
-install %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/vrootdevices
+install -p %{SOURCE7} $RPM_BUILD_ROOT/etc/rc.d/init.d/vrootdevices
+cp -p %{SOURCE8} $RPM_BUILD_ROOT/etc/sysconfig/vrootdevices
install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld
-install %{SOURCE10} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld/initpost
+install -p %{SOURCE10} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld/initpost
+install -p %{SOURCE10} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/tld/initpost
ln -s ../pld/initpost $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-ac/initpost
ln -s ../pld/initpost $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-th/initpost
-%ifarch i586 i686 %{x8664} athlon pentium2 pentium3 pentium4
-ln -s ../pld/initpost $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-ti/initpost
-%endif
-install vproc-%{vproc_version}/vproc $RPM_BUILD_ROOT%{_sbindir}
+install -p vproc-%{vproc_version}/vproc $RPM_BUILD_ROOT%{_sbindir}
sed -e 's,/usr/lib,%{_libdir},' %{SOURCE12} > $RPM_BUILD_ROOT%{_libdir}/%{name}/vhashify.cron
chmod +x $RPM_BUILD_ROOT%{_libdir}/%{name}/vhashify.cron
EOF
install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-ac/pubkeys
-cp -a %{SOURCE13} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-ac/pubkeys/pld-ac.asc
+cp -p %{SOURCE13} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-ac/pubkeys/pld-ac.asc
install -d $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-th/pubkeys
-cp -a %{SOURCE14} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-th/pubkeys/pld-th.asc
+cp -p %{SOURCE14} $RPM_BUILD_ROOT%{_libdir}/%{name}/distributions/pld-th/pubkeys/pld-th.asc
+
+cp -p %{SOURCE16} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/%{name}.conf
# set arch for pld-ac in pld.conf
%ifarch i586 i686 ppc sparc alpha athlon
%endif
%{__sed} -i -e 's|%%ARCH%%|%{ftp_arch}|' $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.distributions/pld-th/poldek/repos.d/pld.conf
-%ifarch i586 i686 %{x8664} athlon pentium2 pentium3 pentium4
-# set arch for pld-ti in pld.conf
-%ifarch i586 i686
+# set arch for tld in tld.conf
+%ifarch i586 i686 ppc sparc alpha
%define ftp_arch %{_target_cpu}
%endif
%ifarch %{x8664}
%ifarch athlon pentium2 pentium3 pentium4
%define ftp_arch i686
%endif
-%{__sed} -i -e 's|%%ARCH%%|%{ftp_arch}|' $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.distributions/pld-ti/poldek/repos.d/pld.conf
-%endif
+%{__sed} -i -e 's|%%ARCH%%|%{ftp_arch}|' $RPM_BUILD_ROOT%{_sysconfdir}/vservers/.distributions/tld/poldek/repos.d/tld.conf
# current debootstrap link
echo "http://ftp.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.10_all.deb" \
install -d $RPM_BUILD_ROOT/var/cache/vservers/poldek
# cleanups
-rm -rf $RPM_BUILD_ROOT/dev
-rm -rf $RPM_BUILD_ROOT%{py_sitedir}/_libvserver.la
+%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/_libvserver.la
# we have our own initscript which does the same
-rm -f $RPM_BUILD_ROOT%{_libdir}/util-vserver/vserver-wrapper
-rm -f $RPM_BUILD_ROOT%{_libdir}/util-vserver/vserver-init.functions
-rm -f $RPM_BUILD_ROOT/etc/rc.d/init.d/vservers-default
-rm -f $RPM_BUILD_ROOT%{_sysconfdir}/vservers.conf
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/util-vserver/vserver-wrapper
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/util-vserver/vserver-init.functions
+%{__rm} $RPM_BUILD_ROOT/etc/rc.d/init.d/vservers-default
+%{__rm} $RPM_BUILD_ROOT%{_sysconfdir}/vservers.conf
%clean
rm -rf $RPM_BUILD_ROOT
%dir %{_sysconfdir}/vservers/.defaults/apps/vdevmap
%dir %{_sysconfdir}/vservers/.defaults/apps/vunify
%dir %{_sysconfdir}/vservers/.defaults/apps/vunify/hash
+%dir %{_sysconfdir}/vservers/.defaults/cgroup
+%{_sysconfdir}/vservers/.defaults/cgroup/per-ss
%dir %{_sysconfdir}/vservers/.defaults/files
%{_sysconfdir}/vservers/.defaults/vdirbase
%{_sysconfdir}/vservers/.defaults/cachebase
%attr(755,root,root) %{_sbindir}/vtag
%attr(755,root,root) %{_sbindir}/vtop
%attr(755,root,root) %{_sbindir}/vuname
+%attr(755,root,root) %{_sbindir}/vurpm
%attr(755,root,root) %{_sbindir}/vwait
%attr(755,root,root) %{_sbindir}/vyum
%dir %{_libdir}/%{name}
%dir %{_libdir}/%{name}/distributions/template
%attr(755,root,root) %{_libdir}/%{name}/distributions/template/initpost
%attr(755,root,root) %{_libdir}/%{name}/distributions/template/initpre
-%dir %{_libdir}/%{name}/distributions/redhat
-%attr(755,root,root) %{_libdir}/%{name}/distributions/redhat/initpost
-%attr(755,root,root) %{_libdir}/%{name}/distributions/redhat/initpre
-%attr(755,root,root) %{_libdir}/%{name}/distributions/redhat/rc.sysinit
%{_libdir}/%{name}/FEATURES.txt
%{_libdir}/%{name}/util-vserver-vars
%attr(755,root,root) %{_libdir}/%{name}/bash-wrapper
%attr(755,root,root) %{_libdir}/%{name}/vprocunhide
%attr(755,root,root) %{_libdir}/%{name}/vrpm-*
%attr(755,root,root) %{_libdir}/%{name}/vserver-build
+%attr(755,root,root) %{_libdir}/%{name}/vurpm-worker
%{_libdir}/%{name}/vserver-build.*
%{_libdir}/%{name}/vserver-setup.functions
%{_libdir}/%{name}/vserver.*
%{_mandir}/man8/vtop.8*
%attr(000,root,root) %dir /vservers
%dir /vservers/.pkg
+%{systemdtmpfilesdir}/%{name}.conf
%dir %{_localstatedir}/run/vservers
%dir %{_localstatedir}/run/vservers.rev
%dir %{_localstatedir}/run/vshelper
%defattr(644,root,root,755)
%{_libdir}/libvserver.a
+%if %{with legacy}
%files legacy
%defattr(644,root,root,755)
%dir %{_sysconfdir}/vservices
%{_mandir}/man8/distrib-info.8*
%{_mandir}/man8/rebootmgr.8*
%{_mandir}/man8/vserver-copy.8*
+%endif
%files -n python-util-vserver
%defattr(644,root,root,755)
%{_libdir}/%{name}/distributions/lenny
%{_libdir}/%{name}/distributions/sid
%{_libdir}/%{name}/distributions/squeeze
+%{_libdir}/%{name}/distributions/wheezy
%files -n vserver-distro-fedora
%defattr(644,root,root,755)
%{_libdir}/%{name}/distributions/f9
%{_libdir}/%{name}/distributions/f10
%{_libdir}/%{name}/distributions/f11
+%{_libdir}/%{name}/distributions/f12
+%{_libdir}/%{name}/distributions/f13
+%{_libdir}/%{name}/distributions/f14
%{_libdir}/%{name}/distributions/fc1
%{_libdir}/%{name}/distributions/fc2
%{_libdir}/%{name}/distributions/fc3
%dir %{_sysconfdir}/vservers/.distributions/pld-th/poldek
%dir %{_sysconfdir}/vservers/.distributions/pld-th/poldek/repos.d
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vservers/.distributions/pld-th/poldek/repos.d/*.conf
-%ifarch i586 i686 %{x8664} athlon pentium2 pentium3 pentium4
-%dir %{_sysconfdir}/vservers/.distributions/pld-ti
-%dir %{_sysconfdir}/vservers/.distributions/pld-ti/poldek
-%dir %{_sysconfdir}/vservers/.distributions/pld-ti/poldek/repos.d
-%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vservers/.distributions/pld-ti/poldek/repos.d/*.conf
-%endif
%files -n vserver-distro-redhat
%defattr(644,root,root,755)
%dir %{_sysconfdir}/vservers/.distributions/suse*/apt
%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vservers/.distributions/suse*/apt/sources.list
%{_libdir}/%{name}/distributions/suse*
+
+%files -n vserver-distro-scientificlinux
+%defattr(644,root,root,755)
+%dir %{_libdir}/%{name}/distributions/sl6
+%attr(755,root,root) %{_libdir}/%{name}/distributions/sl6/initpost
+%attr(755,root,root) %{_libdir}/%{name}/distributions/sl6/initpre
+%{_libdir}/%{name}/distributions/sl6/pkgs
+%{_libdir}/%{name}/distributions/sl6/yum
+%{_libdir}/%{name}/distributions/sl6/yum.repos.d
+
+%files -n vserver-distro-tld
+%defattr(644,root,root,755)
+%dir %{_libdir}/%{name}/distributions/tld
+%attr(755,root,root) %{_libdir}/%{name}/distributions/tld/initpost
+%{_libdir}/%{name}/distributions/tld/pkgs
+%{_libdir}/%{name}/distributions/tld/rpm
+%dir %{_sysconfdir}/vservers/.distributions/tld
+%dir %{_sysconfdir}/vservers/.distributions/tld/poldek
+%dir %{_sysconfdir}/vservers/.distributions/tld/poldek/repos.d
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/vservers/.distributions/tld/poldek/repos.d/*.conf