summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenedikt Boehm <hollow@gentoo.org>2008-08-08 08:40:14 +0000
committerBenedikt Boehm <hollow@gentoo.org>2008-08-08 08:40:14 +0000
commitec5d0a47cb18da33dfc0de701405915075846c33 (patch)
treea705378268ecea7d9dd34e92985ad2d429526377 /sys-cluster/util-vserver
parentAdd mmx useflag wrt bug #93279 and fix build of mmx asm with libtool 2.2 (diff)
downloadgentoo-2-ec5d0a47cb18da33dfc0de701405915075846c33.tar.gz
gentoo-2-ec5d0a47cb18da33dfc0de701405915075846c33.tar.bz2
gentoo-2-ec5d0a47cb18da33dfc0de701405915075846c33.zip
fix capability support for kernel headers >= 2.6.25
(Portage version: 2.2_rc1/cvs/Linux 2.6.22-vs2.2.0.6-gentoo x86_64)
Diffstat (limited to 'sys-cluster/util-vserver')
-rw-r--r--sys-cluster/util-vserver/ChangeLog9
-rw-r--r--sys-cluster/util-vserver/files/util-vserver-0.30.215-capget.patch103
-rw-r--r--sys-cluster/util-vserver/util-vserver-0.30.214.ebuild6
-rw-r--r--sys-cluster/util-vserver/util-vserver-0.30.215-r1.ebuild135
-rw-r--r--sys-cluster/util-vserver/util-vserver-0.30.215.ebuild6
5 files changed, 250 insertions, 9 deletions
diff --git a/sys-cluster/util-vserver/ChangeLog b/sys-cluster/util-vserver/ChangeLog
index 219038415717..0d01e08a05e3 100644
--- a/sys-cluster/util-vserver/ChangeLog
+++ b/sys-cluster/util-vserver/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sys-cluster/util-vserver
# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/ChangeLog,v 1.92 2008/06/14 11:02:06 zmedico Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/ChangeLog,v 1.93 2008/08/08 08:40:14 hollow Exp $
+
+*util-vserver-0.30.215-r1 (08 Aug 2008)
+
+ 08 Aug 2008; Benedikt Böhm <hollow@gentoo.org>
+ +files/util-vserver-0.30.215-capget.patch, util-vserver-0.30.214.ebuild,
+ util-vserver-0.30.215.ebuild, +util-vserver-0.30.215-r1.ebuild:
+ fix capability support for kernel headers >= 2.6.25
14 Jun 2008; Zac Medico <zmedico@gentoo.org> util-vserver-0.30.214.ebuild,
util-vserver-0.30.215.ebuild:
diff --git a/sys-cluster/util-vserver/files/util-vserver-0.30.215-capget.patch b/sys-cluster/util-vserver/files/util-vserver-0.30.215-capget.patch
new file mode 100644
index 000000000000..df7b483430b7
--- /dev/null
+++ b/sys-cluster/util-vserver/files/util-vserver-0.30.215-capget.patch
@@ -0,0 +1,103 @@
+Index: /trunk/src/vserver-info.c
+===================================================================
+--- /trunk/src/vserver-info.c (revision 2589)
++++ /trunk/src/vserver-info.c (revision 2717)
+@@ -186,7 +186,9 @@
+ verifyCap()
+ {
++ int retried = 0;
+ struct __user_cap_header_struct header;
+- struct __user_cap_data_struct user;
+- header.version = _LINUX_CAPABILITY_VERSION;
++ struct __user_cap_data_struct user[2];
++
++ header.version = _LINUX_CAPABILITY_VERSION_2;
+ header.pid = 0;
+
+@@ -200,15 +202,22 @@
+ // return false;
+ // }
+-
+- if (capget(&header, &user)==-1) {
++
++retry:
++ if (capget(&header, user)==-1) {
++ if (!retried &&
++ header.version != _LINUX_CAPABILITY_VERSION_2) {
++ header.version = _LINUX_CAPABILITY_VERSION_1;
++ retried = 1;
++ goto retry;
++ }
+ perror("capget()");
+ return false;
+ }
+
+- user.effective = 0;
+- user.permitted = 0;
+- user.inheritable = 0;
+-
+- if (capset(&header, &user)==-1) {
++ user[0].effective = user[1].effective = 0;
++ user[0].permitted = user[1].permitted = 0;
++ user[0].inheritable = user[1].inheritable = 0;
++
++ if (capset(&header, user)==-1) {
+ perror("capset()");
+ return false;
+Index: /trunk/src/rpm-fake.c
+===================================================================
+--- /trunk/src/rpm-fake.c (revision 2693)
++++ /trunk/src/rpm-fake.c (revision 2717)
+@@ -420,20 +420,28 @@
+ reduceCapabilities()
+ {
++ int retried = 0;
+ struct __user_cap_header_struct header;
+- struct __user_cap_data_struct user;
+-
+- header.version = _LINUX_CAPABILITY_VERSION;
++ struct __user_cap_data_struct user[2];
++
++ header.version = _LINUX_CAPABILITY_VERSION_2;
+ header.pid = 0;
+
+- if (capget(&header, &user)==-1) {
++retry:
++ if (capget(&header, user)==-1) {
++ if (!retried &&
++ header.version != _LINUX_CAPABILITY_VERSION_2) {
++ header.version = _LINUX_CAPABILITY_VERSION_1;
++ retried = 1;
++ goto retry;
++ }
+ perror("capget()");
+ exit(wrapper_exit_code);
+ }
+
+- user.effective &= ~(1<<CAP_MKNOD);
+- user.permitted &= ~(1<<CAP_MKNOD);
+- user.inheritable &= ~(1<<CAP_MKNOD);
+-
+- if (capset(&header, &user)==-1) {
++ user[0].effective &= ~(1<<CAP_MKNOD);
++ user[0].permitted &= ~(1<<CAP_MKNOD);
++ user[0].inheritable &= ~(1<<CAP_MKNOD);
++
++ if (capset(&header, user)==-1) {
+ perror("capset()");
+ exit(wrapper_exit_code);
+Index: /trunk/src/capability-compat.h
+===================================================================
+--- /trunk/src/capability-compat.h (revision 1822)
++++ /trunk/src/capability-compat.h (revision 2717)
+@@ -30,2 +30,10 @@
+
+ #endif
++
++#ifndef _LINUX_CAPABILITY_VERSION_1
++# define _LINUX_CAPABILITY_VERSION_1 _LINUX_CAPABILITY_VERSION
++#endif
++
++#ifndef _LINUX_CAPABILITY_VERSION_2
++# define _LINUX_CAPABILITY_VERSION_2 0x20071026
++#endif
diff --git a/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild b/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild
index 250821253514..7811d5f76126 100644
--- a/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild
+++ b/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild
@@ -1,10 +1,8 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild,v 1.5 2008/06/14 11:02:06 zmedico Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/util-vserver-0.30.214.ebuild,v 1.6 2008/08/08 08:40:14 hollow Exp $
-WANT_AUTOMAKE="1.9"
-
-inherit autotools eutils bash-completion
+inherit eutils bash-completion
DESCRIPTION="Linux-VServer admin utilities"
HOMEPAGE="http://www.nongnu.org/util-vserver/"
diff --git a/sys-cluster/util-vserver/util-vserver-0.30.215-r1.ebuild b/sys-cluster/util-vserver/util-vserver-0.30.215-r1.ebuild
new file mode 100644
index 000000000000..8b92282fc421
--- /dev/null
+++ b/sys-cluster/util-vserver/util-vserver-0.30.215-r1.ebuild
@@ -0,0 +1,135 @@
+# Copyright 1999-2008 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/util-vserver-0.30.215-r1.ebuild,v 1.1 2008/08/08 08:40:14 hollow Exp $
+
+inherit eutils bash-completion
+
+DESCRIPTION="Linux-VServer admin utilities"
+HOMEPAGE="http://www.nongnu.org/util-vserver/"
+SRC_URI="http://ftp.linux-vserver.org/pub/utils/${PN}/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ppc ~sparc ~x86"
+
+IUSE=""
+
+CDEPEND="dev-libs/beecrypt
+ net-firewall/iptables
+ net-misc/vconfig
+ sys-apps/iproute2
+ || ( >=sys-apps/coreutils-6.10-r1 sys-apps/mktemp )"
+
+DEPEND=">=dev-libs/dietlibc-0.30-r2
+ ${CDEPEND}"
+
+RDEPEND="${CDEPEND}"
+
+pkg_setup() {
+ if [[ -z "${VDIRBASE}" ]]; then
+ einfo
+ einfo "You can change the default vserver base directory (/vservers)"
+ einfo "by setting the VDIRBASE environment variable."
+ fi
+
+ : ${VDIRBASE:=/vservers}
+
+ einfo
+ einfo "Using \"${VDIRBASE}\" as vserver base directory"
+ einfo
+}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ epatch "${FILESDIR}"/${P}-openrc.patch
+ epatch "${FILESDIR}"/${P}-capget.patch
+}
+
+src_compile() {
+ econf --with-vrootdir=${VDIRBASE} \
+ --with-initscripts=gentoo \
+ --localstatedir=/var || die "econf failed!"
+ emake || die "emake failed!"
+}
+
+src_install() {
+ make DESTDIR="${D}" install install-distribution \
+ || die "make install failed!"
+
+ # keep dirs
+ keepdir /var/run/vservers
+ keepdir /var/run/vservers.rev
+ keepdir /var/run/vshelper
+ keepdir /var/lock/vservers
+ keepdir /var/cache/vservers
+ keepdir "${VDIRBASE}"
+ keepdir "${VDIRBASE}"/.pkg
+
+ # remove legacy config file
+ rm -f "${D}"/etc/vservers.conf
+
+ # bash-completion
+ dobashcompletion "${FILESDIR}"/bash_completion util-vserver
+
+ dodoc README ChangeLog NEWS AUTHORS THANKS util-vserver.spec
+}
+
+pkg_preinst() {
+ has_version "<${CATEGORY}/${PN}-0.30.211"
+ old_init_script_warn=$?
+}
+
+pkg_postinst() {
+ # Create VDIRBASE in postinst, so it is (a) not unmerged and (b) also
+ # present when merging.
+
+ [ ! -d "${VDIRBASE}" ] && mkdir -p "${VDIRBASE}" &> /dev/null
+ setattr --barrier "${VDIRBASE}" &> /dev/null
+
+ rm /etc/vservers/.defaults/vdirbase
+ ln -sf "${VDIRBASE}" /etc/vservers/.defaults/vdirbase
+
+ elog
+ elog "You have to run the vprocunhide command after every reboot"
+ elog "in order to setup /proc permissions correctly for vserver"
+ elog "use. An init script has been installed by this package."
+ elog "To use it you should add it to a runlevel:"
+ elog
+ elog " rc-update add vprocunhide default"
+ elog
+
+ if [[ $old_init_script_warn = 0 ]] ; then
+ ewarn "Please make sure, that you remove the old init-script from any"
+ ewarn "runlevel and remove it from your init.d dir!"
+ ewarn
+ ewarn "# rc-update del vservers"
+ ewarn "# rm -f ${ROOT}etc/init.d/vservers"
+ ewarn
+ ewarn "Since util-vserver-0.30.211 all Gentoo specific wrappers"
+ ewarn "have been merged upstream, and may now have a slightly"
+ ewarn "different syntax, i.e. you have to update scripts that"
+ ewarn "depend on these wrappers (vesync, vemerge, vupdateworld"
+ ewarn "and vdispatch-conf)"
+ ewarn
+ ewarn "Additionally the init scripts have changed and now use"
+ ewarn "upstream scripts as backend. An init script to start"
+ ewarn "virtual servers in the 'default' group/mark has been"
+ ewarn "installed by this ebuild:"
+ ewarn
+ ewarn " rc-update add vservers.default default"
+ ewarn
+ ewarn "To start vservers in other groups/marks, you have to"
+ ewarn "symlink the default init script the same way you do"
+ ewarn "with net.* scripts:"
+ ewarn
+ ewarn " ln -s /etc/init.d/vservers.default /etc/init.d/vservers.<mark>"
+ ewarn
+ fi
+
+ ewarn "You should definitly fix up the barrier of your vserver"
+ ewarn "base directory by using the following command in a root shell:"
+ ewarn
+ ewarn " setattr --barrier ${VDIRBASE}"
+ ewarn
+}
diff --git a/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild b/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild
index 01f9606d26f9..62a59cb19a5b 100644
--- a/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild
+++ b/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild
@@ -1,10 +1,8 @@
# Copyright 1999-2008 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild,v 1.4 2008/06/14 11:02:06 zmedico Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-cluster/util-vserver/util-vserver-0.30.215.ebuild,v 1.5 2008/08/08 08:40:14 hollow Exp $
-WANT_AUTOMAKE="1.9"
-
-inherit autotools eutils bash-completion
+inherit eutils bash-completion
DESCRIPTION="Linux-VServer admin utilities"
HOMEPAGE="http://www.nongnu.org/util-vserver/"