diff options
author | Christian Heim <phreak@gentoo.org> | 2006-04-06 17:54:58 +0000 |
---|---|---|
committer | Christian Heim <phreak@gentoo.org> | 2006-04-06 17:54:58 +0000 |
commit | 865314d51c5f892cdd12608fd82835b323fb4354 (patch) | |
tree | 1e8782a15eea0305f9669fb0794f345eb861d062 /util-vserver/patches | |
parent | vlogin fixes (diff) | |
download | misc-865314d51c5f892cdd12608fd82835b323fb4354.tar.gz misc-865314d51c5f892cdd12608fd82835b323fb4354.tar.bz2 misc-865314d51c5f892cdd12608fd82835b323fb4354.zip |
Preparing -r10
svn path=/; revision=310
Diffstat (limited to 'util-vserver/patches')
16 files changed, 1224 insertions, 0 deletions
diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-fix-fastboot.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-fix-fastboot.patch new file mode 100644 index 0000000..7bf246d --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-fix-fastboot.patch @@ -0,0 +1,13 @@ +diff -Nrup util-vserver-0.30.208.orig/scripts/vserver.functions util-vserver-0.30.208/scripts/vserver.functions +--- util-vserver-0.30.208.orig/scripts/vserver.functions 2005-07-03 19:47:06.000000000 +0200 ++++ util-vserver-0.30.208/scripts/vserver.functions 2005-08-03 11:59:32.000000000 +0200 +@@ -627,8 +627,7 @@ function prepareInit + find var/lock ! -type d -print0; } | xargs -0r $_CHROOT_SH rm + ;; + plain) +- $_CHROOT_SH rm .autofsck forcefsck 2>/dev/null || : +- : | $_CHROOT_SH truncate fastboot 2>/dev/null || : ++ $_CHROOT_SH rm .autofsck forcefsck fastboot 2> /dev/null || : + ;; + minit) + ;; diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-nicefix.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-nicefix.patch new file mode 100644 index 0000000..8b489f0 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-nicefix.patch @@ -0,0 +1,24 @@ +diff -NurpP util-vserver-0.30.208/scripts/legacy/vserver util-vserver-0.30.208-nicefix/scripts/legacy/vserver +--- util-vserver-0.30.208/scripts/legacy/vserver 2005-03-21 21:03:31.000000000 +0100 ++++ util-vserver-0.30.208-nicefix/scripts/legacy/vserver 2005-10-27 13:33:37.384017250 +0200 +@@ -514,7 +514,7 @@ elif [ "$2" = "start" ] ; then + DOMAINOPT="--domainname $S_DOMAINNAME" + fi + if [ "$S_NICE" != "" ] ; then +- NICECMD="nice -$S_NICE" ++ NICECMD="nice -n $S_NICE" + fi + mkdir -p $__PKGSTATEDIR + chmod 700 $__PKGSTATEDIR +diff -NurpP util-vserver-0.30.208/scripts/vserver.functions util-vserver-0.30.208-nicefix/scripts/vserver.functions +--- util-vserver-0.30.208/scripts/vserver.functions 2005-07-03 19:47:06.000000000 +0200 ++++ util-vserver-0.30.208-nicefix/scripts/vserver.functions 2005-10-27 13:32:33.332014250 +0200 +@@ -100,7 +100,7 @@ function _generateNiceCommand + test -r "$vdir/nice" || return 0; + read nice <"$vdir"/nice + +- NICE_CMD=( $_NICE -$nice ) ++ NICE_CMD=( $_NICE -n $nice ) + } + + diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-rkill.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-rkill.patch new file mode 100644 index 0000000..058e404 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-rkill.patch @@ -0,0 +1,26 @@ +diff -NurpP util-vserver-0.30.208/lib/cflags-v13.c util-vserver-0.30.208-rkill/lib/cflags-v13.c +--- util-vserver-0.30.208/lib/cflags-v13.c 2004-10-21 21:00:20.000000000 +0200 ++++ util-vserver-0.30.208-rkill/lib/cflags-v13.c 2005-09-30 14:32:27.575320000 +0200 +@@ -54,6 +54,9 @@ static struct Mapping_uint64 const VALUE + DECL("state_setup", VC_VXF_STATE_SETUP), + DECL("state_init", VC_VXF_STATE_INIT), + ++ DECL("sc_helper", VC_VXF_SC_HELPER), ++ DECL("reboot_kill", VC_VXF_REBOOT_KILL), ++ + DECL("fork_rss", VC_VXF_FORK_RSS), + DECL("prolific", VC_VXF_PROLIFIC), + DECL("igneg_nice", VC_VXF_IGNEG_NICE), +diff -NurpP util-vserver-0.30.208/lib/vserver.h util-vserver-0.30.208-rkill/lib/vserver.h +--- util-vserver-0.30.208/lib/vserver.h 2005-07-15 18:27:02.000000000 +0200 ++++ util-vserver-0.30.208-rkill/lib/vserver.h 2005-09-30 14:33:08.485876750 +0200 +@@ -181,6 +181,9 @@ + #define VC_VXF_STATE_SETUP (1ULL<<32) + #define VC_VXF_STATE_INIT (1ULL<<33) + ++#define VC_VXF_SC_HELPER (1ULL<<36) ++#define VC_VXF_REBOOT_KILL (1ULL<<37) ++ + #define VC_VXF_FORK_RSS (1ULL<<48) + #define VC_VXF_PROLIFIC (1ULL<<49) + diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-sharedportage.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-sharedportage.patch new file mode 100644 index 0000000..051e7f5 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.208-sharedportage.patch @@ -0,0 +1,11 @@ +diff -NurpP util-vserver-0.30.208/distrib/misc/fstab util-vserver-0.30.208-sharedportage/distrib/misc/fstab +--- util-vserver-0.30.208/distrib/misc/fstab 2005-02-19 19:12:34.000000000 +0100 ++++ util-vserver-0.30.208-sharedportage/distrib/misc/fstab 2005-09-30 14:39:41.790456750 +0200 +@@ -1,3 +1,7 @@ + none /proc proc defaults 0 0 + none /tmp tmpfs size=16m,mode=1777 0 0 + none /dev/pts devpts gid=5,mode=620 0 0 ++ ++# shared portage tree ++#/usr/portage /usr/portage none bind,ro 0 0 ++#/usr/portage/distfiles /usr/portage/distfiles none bind,rw 0 0 diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.209-remove-traditional-syscall.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.209-remove-traditional-syscall.patch new file mode 100644 index 0000000..fdb676a --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.209-remove-traditional-syscall.patch @@ -0,0 +1,29 @@ +Index: util-vserver-0.30.209/config.h.in +=================================================================== +--- util-vserver-0.30.209.orig/config.h.in ++++ util-vserver-0.30.209/config.h.in +@@ -232,10 +232,4 @@ + /* Use 64bit interface for filesystem operations */ + #undef _FILE_OFFSET_BITS + +- +-#if defined(__pic__) && defined(__i386) && !defined(ENSC_SYSCALL_TRADITIONAL) && !defined(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS) +-# define ENSC_SYSCALL_TRADITIONAL 1 +-#endif +- + #include "compat.h" +- +Index: util-vserver-0.30.209/m4/ensc_syscall.m4 +=================================================================== +--- util-vserver-0.30.209.orig/m4/ensc_syscall.m4 ++++ util-vserver-0.30.209/m4/ensc_syscall.m4 +@@ -101,9 +101,4 @@ int main() { + if test x"$with_syscall" = xtraditional; then + AC_DEFINE(ENSC_SYSCALL_TRADITIONAL, 1, [Define to 1 when the fast syscall(2) invocation does not work]) + fi +- +- AH_BOTTOM([ +-#if defined(__pic__) && defined(__i386) && !defined(ENSC_SYSCALL_TRADITIONAL) && !defined(ENSC_USE_ALTERNATIVE_SYSCALL_MACROS) +-# define ENSC_SYSCALL_TRADITIONAL 1 +-#endif]) + ]) diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-bmask.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-bmask.patch new file mode 100644 index 0000000..93270c1 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-bmask.patch @@ -0,0 +1,14 @@ +--- util-vserver-0.30.210.orig/lib/syscall_setccaps-v13.hc 2004-03-24 02:07:11.000000000 +0100 ++++ util-vserver-0.30.210/lib/syscall_setccaps-v13.hc 2006-03-03 17:19:15.000000000 +0100 +@@ -25,7 +25,10 @@ + { + struct vcmd_ctx_caps_v0 k_caps; + +- k_caps.bcaps = caps->bcaps & caps->bmask; ++ if (caps->bmask) ++ k_caps.bcaps = caps->bcaps & caps->bmask; ++ else ++ k_caps.bcaps = ~0; + k_caps.ccaps = caps->ccaps; + k_caps.cmask = caps->cmask; + diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext-secure.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext-secure.patch new file mode 100644 index 0000000..2b91fc2 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext-secure.patch @@ -0,0 +1,14 @@ +--- util-vserver-0.30.210.orig/scripts/chcontext 2005-04-08 21:14:47.000000000 +0200 ++++ util-vserver-0.30.210/scripts/chcontext 2006-03-25 05:17:00.000000000 +0100 +@@ -153,9 +153,9 @@ + chain_cmd=( "${chain_cmd[@]}" + -- + $_VATTRIBUTE --set ++ ${OPT_SECURE:+--secure} + ${OPT_CAPS:+--bcap "${OPT_CAPS[*]}"} +- ${OPT_FLAGS:+--flag "${OPT_FLAGS[*]}"} +- ${OPT_SECURE:+--secure} ) ++ ${OPT_FLAGS:+--flag "${OPT_FLAGS[*]}"} ) + + migrate_cmd=( $_VCONTEXT + ${OPT_SILENT:+--silent} diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext.8.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext.8.patch new file mode 100644 index 0000000..bf09182 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-chcontext.8.patch @@ -0,0 +1,10 @@ +Index: util-vserver-0.30.210/man/chcontext.8 +=================================================================== +--- util-vserver-0.30.210.orig/man/chcontext.8 ++++ util-vserver-0.30.210/man/chcontext.8 +@@ -1,4 +1,4 @@ +-.TH "chcontext" "1" "0.1.0" "Klavs Klavsen <kl@vsen.dk>" "System Administration" ++.TH "chcontext" "8" "0.1.0" "Klavs Klavsen <kl@vsen.dk>" "System Administration" + .SH "NAME" + .LP + chcontext \- chcontext allocates a new security context and executes a command in that context. diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-clone-arch.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-clone-arch.patch new file mode 100644 index 0000000..de9d73c --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-clone-arch.patch @@ -0,0 +1,75 @@ +diff -Nurp util-vserver-0.30.210.orig/lib_internal/sys_clone.h util-vserver-0.30.210.clone-arch/lib_internal/sys_clone.h +--- util-vserver-0.30.210.orig/lib_internal/sys_clone.h 2005-04-28 20:01:37.000000000 +0200 ++++ util-vserver-0.30.210.clone-arch/lib_internal/sys_clone.h 2006-04-06 01:58:22.000000000 +0200 +@@ -19,33 +19,61 @@ + #ifndef H_UTIL_VSERVER_SRC_SYS_CLONE_H + #define H_UTIL_VSERVER_SRC_SYS_CLONE_H + ++#include <unistd.h> + #include "lib/syscall-wrap.h" +-#define __NR_sys_clone __NR_clone ++#define __NR__sys_clone __NR_clone + + #ifndef CLONE_NEWNS + # define CLONE_NEWNS 0x00020000 + #endif + + #ifdef ENSC_SYSCALL_TRADITIONAL +-#include <unistd.h> +- + inline static UNUSED ALWAYSINLINE +-int sys_clone(int flags, void *stack) ++int _sys_clone(int flags, void *stack) + { +-#if defined __dietlibc__ ++# if defined __dietlibc__ + extern long int syscall (long int __sysno, ...); +-#endif ++# endif + +- return syscall(__NR_sys_clone, flags, stack); ++# if defined(__s390__) ++ return syscall(__NR__sys_clone, stack, flags); ++# else ++ return syscall(__NR__sys_clone, flags, stack); ++# endif + } + #else +-#include <errno.h> ++# include <errno.h> ++ ++# if defined(__s390__) ++inline static UNUSED ALWAYSINLINE ++_syscall2(int, _sys_clone, void *, child_stack, int, flags) ++# else ++inline static UNUSED ALWAYSINLINE ++_syscall2(int, _sys_clone, int, flags, void *, child_stack) ++# endif ++#endif + + inline static UNUSED ALWAYSINLINE +-_syscall2(int, sys_clone, int, flags, void *, child_stack) ++int sys_clone(int flags, void *child_stack) ++{ ++ int ret; ++#ifdef __sparc__ ++ int parent = getpid(); + #endif + +-#undef __NR_sys_clone ++#if defined(__s390__) && !defined(ENSC_SYSCALL_TRADITIONAL) ++ ret = _sys_clone(child_stack, flags); ++#else ++ ret = _sys_clone(flags, child_stack); ++#endif ++#ifdef __sparc__ ++ if (ret == parent) ++ ret = 0; ++#endif ++ return ret; ++} ++ ++#undef __NR__sys_clone + + #define ENSC_HAVE_SYSCLONE 1 + diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-delete-cmd.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-delete-cmd.patch new file mode 100644 index 0000000..5ddea1b --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-delete-cmd.patch @@ -0,0 +1,100 @@ +Index: util-vserver-0.30.210/Makefile.in +=================================================================== +--- util-vserver-0.30.210.orig/Makefile.in ++++ util-vserver-0.30.210/Makefile.in +@@ -1927,7 +1927,8 @@ scripts_pkglib_src_DTA = scripts/functio + scripts/vserver.functions \ + scripts/vserver.start \ + scripts/vserver.stop \ +- scripts/vserver.suexec ++ scripts/vserver.suexec \ ++ scripts/vserver.delete + + scripts_pkglib_gen_DTA = scripts/util-vserver-vars + scripts_pkglib_src_SCRPTS = scripts/pkgmgmt \ +Index: util-vserver-0.30.210/contrib/manifest.dat.pathsubst +=================================================================== +--- util-vserver-0.30.210.orig/contrib/manifest.dat.pathsubst ++++ util-vserver-0.30.210/contrib/manifest.dat.pathsubst +@@ -18,6 +18,7 @@ base @PKGLIBDIR@/vserver.start + @ENSC_HAVE_C99_COMPILER_TRUE@base @PKGLIBDIR@/vserver.start.bin + base @PKGLIBDIR@/vserver.stop + base @PKGLIBDIR@/vserver.suexec ++base @PKGLIBDIR@/vserver.delete + core @PKGLIBDIR@/util-vserver-vars + build @PKGLIBDIR@/rpm-fake.so + legacy @LEGACYDIR@/save_s_context +Index: util-vserver-0.30.210/scripts/Makefile-files +=================================================================== +--- util-vserver-0.30.210.orig/scripts/Makefile-files ++++ util-vserver-0.30.210/scripts/Makefile-files +@@ -52,7 +52,8 @@ scripts_pkglib_src_DTA = scripts/functio + scripts/vserver.functions \ + scripts/vserver.start \ + scripts/vserver.stop \ +- scripts/vserver.suexec ++ scripts/vserver.suexec \ ++ scripts/vserver.delete + + scripts_pkglib_gen_DTA = scripts/util-vserver-vars + +Index: util-vserver-0.30.210/scripts/vserver +=================================================================== +--- util-vserver-0.30.210.orig/scripts/vserver ++++ util-vserver-0.30.210/scripts/vserver +@@ -57,6 +57,7 @@ Possible commands are: + + build <buildopts>* + ... builds a new vserver from scratch ++ delete ... remove a vserver + + unify [-R] + ... (de)unify vserver +@@ -199,7 +200,7 @@ test "$2" != start -o -n "$OPTION_NONAME + + . $__PKGLIBDIR/vserver.functions + case "$2" in +- (start|stop) ++ (start|stop|delete) + shift 2 + . $__PKGLIBDIR/vserver.$cmd + ;; +Index: util-vserver-0.30.210/scripts/vserver.delete +=================================================================== +--- /dev/null ++++ util-vserver-0.30.210/scripts/vserver.delete +@@ -0,0 +1,34 @@ ++#! /bin/bash ++# $Id$ ++ ++# Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> ++# ++# This program is free software; you can redistribute it and/or modify ++# it under the terms of the GNU General Public License as published by ++# the Free Software Foundation; version 2 of the License. ++# ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++# GNU General Public License for more details. ++# ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++. "$_LIB_VSERVER_BUILD_FUNCTIONS" ++. "$_LIB_VSERVER_BUILD_FUNCTIONS_PKGMGMT" ++ ++if test -z "$OPTION_SILENT" ; then ++ read -p "Are you sure you want to delete the vserver $vserver (y/N) " deleteok ++ if [[ ${deleteok} != [Yy] ]]; then ++ exit 2 ++ fi ++fi ++ ++isVserverRunning "$VSERVER_DIR" && ++ "${SELF[@]}" $OPTION_SILENT --sync "$vserver" stop ++ ++base.init ++pkgmgmt.initVariables ++rm -rf "`readlink -f "$VSERVER_DIR"/vdir`" "$VSERVER_DIR" "$PKGCFGDIR" diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-gentoo-tools.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-gentoo-tools.patch new file mode 100644 index 0000000..a415d0a --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-gentoo-tools.patch @@ -0,0 +1,74 @@ +Index: util-vserver-0.30.210/scripts/Makefile-files +=================================================================== +--- util-vserver-0.30.210.orig/scripts/Makefile-files ++++ util-vserver-0.30.210/scripts/Makefile-files +@@ -38,6 +38,7 @@ AM_INSTALLCHECK_STD_OPTIONS_EXEMPT += \ + + + scripts_pkglib_src_DTA = scripts/functions \ ++ scripts/gentoo-functions.sh \ + scripts/vserver-build.apt-rpm \ + scripts/vserver-build.skeleton \ + scripts/vserver-build.debootstrap \ +@@ -68,6 +69,7 @@ scripts_pkglib_src_SCRPTS = scripts/pkgm + scripts/vservers.grabinfo.sh \ + scripts/vshelper \ + scripts/vsysvwrapper \ ++ scripts/vschedcalc \ + scripts/vyum-worker + + scripts_legacy_src_SCRPTS = scripts/legacy/save_s_context \ +@@ -85,7 +87,12 @@ scripts_sbin_src_PRGS = scripts/chconte + scripts/vserver \ + scripts/vsomething \ + scripts/vtop \ +- scripts/vyum ++ scripts/vyum \ ++ scripts/vdispatch-conf \ ++ scripts/vemerge \ ++ scripts/vesync \ ++ scripts/vserver-new \ ++ scripts/vupdateworld + + scripts_sbin_gen_PRGS = + scripts_sbincfg_gen_DTA = +Index: util-vserver-0.30.210/scripts/util-vserver-vars.pathsubst +=================================================================== +--- util-vserver-0.30.210.orig/scripts/util-vserver-vars.pathsubst ++++ util-vserver-0.30.210/scripts/util-vserver-vars.pathsubst +@@ -43,6 +43,7 @@ _IFSPEC="$__LEGACYDIR/ifspec" + _INITSYNC_MINIT_START=: + _KEEP_CTX_ALIVE="$__PKGLIBDIR/keep-ctx-alive" + _LIB_FUNCTIONS="$__PKGLIBDIR/functions" ++_LIB_GENTOO_FUNCTIONS="$__PKGLIBDIR/gentoo-functions.sh" + _LIB_VSERVER_SETUP_FUNCTIONS="$__PKGLIBDIR/vserver-setup.functions" + _LIB_VSERVER_BUILD_FUNCTIONS="$__PKGLIBDIR/vserver-build.functions" + _LIB_VSERVER_BUILD_FUNCTIONS_APT="$__PKGLIBDIR/vserver-build.functions.apt" +@@ -68,6 +69,9 @@ _VAPT_GET_WORKER="$__PKGLIBDIR/vapt-get- + _VATTRIBUTE="$__SBINDIR/vattribute" + _VCONTEXT="$__SBINDIR/vcontext" + _VDLIMIT="$__SBINDIR/vdlimit" ++_VDISPATCH_CONF="$__SBINDIR/vdispatch-conf" ++_VEMERGE="$__SBINDIR/vemerge" ++_VESYNC="$__SBINDIR/vesync" + _VDU="$__SBINDIR/vdu" + _VHASHIFY="$__PKGLIBDIR/vhashify" + _VKILL="$__SBINDIR/vkill" +@@ -81,7 +85,9 @@ _VRPM="$__SBINDIR/vrpm" + _VRPM_PRELOAD="$__PKGLIBDIR/vrpm-preload" + _VRPM_WORKER="$__PKGLIBDIR/vrpm-worker" + _VSCHED="$__SBINDIR/vsched" ++_VSCHEDCALC="$__PKGLIBDIR/vschedcalc" + _VSERVER="$__SBINDIR/vserver" ++_VSERVER_NEW="$__SBINDIR/vserver-new" + _VSERVER_LEGACY="$__LEGACYDIR/vserver" + _VSERVER_BUILD="$__PKGLIBDIR/vserver-build" + _VSERVER_INFO="$__SBINDIR/vserver-info" +@@ -92,6 +98,7 @@ _VSOMETHING="$__SBINDIR/vsomething" + _VWAIT="$__SBINDIR/vwait" + _VUNAME="$__SBINDIR/vuname" + _VUNIFY="$__PKGLIBDIR/vunify" ++_VUPDATEWORLD="$__SBINDIR/vupdateworld" + _VYUM="$__SBINDIR/vyum" + _VYUM_WORKER="$__PKGLIBDIR/vyum-worker" + diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-remove-init-style-gentoo.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-remove-init-style-gentoo.patch new file mode 100644 index 0000000..7fabe46 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-remove-init-style-gentoo.patch @@ -0,0 +1,15 @@ +Index: util-vserver-0.30.210/scripts/vserver.functions +=================================================================== +--- util-vserver-0.30.210.orig/scripts/vserver.functions ++++ util-vserver-0.30.210/scripts/vserver.functions +@@ -292,9 +292,7 @@ function _generateInitOptions + ;; + + (xgentoo) +- INITCMD_START=( /sbin/rc default ) +- INITCMD_STOP=( /sbin/rc shutdown ) +- ;; ++ panic "init-style '$INITSTYLE' is no longer supported; please use plain instead; aborting";; + + (x) ;; + (*) panic "Unknown init-style '$INITSTYLE'; aborting";; diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-syscall-update.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-syscall-update.patch new file mode 100644 index 0000000..47d07b8 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-syscall-update.patch @@ -0,0 +1,244 @@ +diff -NurpP util-vserver-0.30.210/lib/syscall-alternative.h util-vserver-0.30.210-shiny10/lib/syscall-alternative.h +--- util-vserver-0.30.210/lib/syscall-alternative.h 2005-10-28 18:33:50.000000000 +0200 ++++ util-vserver-0.30.210-shiny10/lib/syscall-alternative.h 2006-04-02 21:07:52.000000000 +0200 +@@ -1,9 +1,7 @@ +- // from http://vserver.13thfloor.at/Experimental/SYSCALL/syscall_shiny7.h +- + #ifndef __SYSCALL_NEW_H + #define __SYSCALL_NEW_H + +-/* Copyright (C) 2005 Herbert Pötzl ++/* Copyright (C) 2005-2006 Herbert Pötzl + + global config options + +@@ -39,12 +37,13 @@ + __sysc_rcon(n) ... syscall register constraint + __sysc_regs ... list of input regs for clobber + __sysc_type ... register type ++ __sysc_aout ... asm code output constraint + + if all else fails + + __sc_asmload(n,N,...) ... asm code to prepare arguments + __sc_asmsysc(n,N) ... asm code to execute syscall +- __sc_asmsave(n,r,e) ... asm code to store results ++ __sc_asmsave(n) ... asm code to store results + + */ + +@@ -243,7 +242,8 @@ + sret: r0(r28) + serr: (sret >= (unsigned)-EMAXERRNO) + call: ble 0x100(%%sr2, %%r0) +- clob: r1, r2, r4, r20, r29, r31, memory ++ clob: r1, r2, (r4), r20, r29, r31, memory ++ picr: pr(r19) + */ + + #define __sysc_max_err 4095 +@@ -253,13 +253,21 @@ + ("r26", "r25", "r24", "r23", "r22", "r21") + + #define __sysc_cmd_sys "ble 0x100(%%sr2,%%r0)" +-#define __sysc_cmd_fin "ldi %0,%%r20" + +-#define __sysc_clobber __sysc_regs, \ +- "r1", "r2", "r4", "r20", "r29", "r31", "memory" ++#define __sysc_pre(n) \ ++ __pasm(n,1,1, "copy %%r19, %%r4" , ) + +-#warning syscall arch hppa not tested yet ++#define __sysc_fin(n) \ ++ __casm(n,1,1, "ldi %0,%%r20" , )\ ++ __pasm(n,1,1, "copy %%r4, %%r19" , ) + ++#ifndef __PIC__ ++#define __sysc_clobber __sysc_regs, \ ++ "r1", "r2", "r20", "r29", "r31", "memory" ++#else ++#define __sysc_clobber __sysc_regs, \ ++ "r1", "r2", "r4", "r20", "r29", "r31", "memory" ++#endif + + + /* ***************************************** +@@ -277,6 +285,7 @@ + sret: r0(eax) + serr: (sret >= (unsigned)-EMAXERRNO) + call: int 0x80 ++ picr: pr(ebx) + clob: memory + */ + +@@ -301,15 +310,18 @@ + __casm(n,6,1, "pushl %%ebp" , )\ + ""::__sc_iregs(n,__VA_ARGS__):__sysc_clobber) + ++#define __sc_asmsave(n) ++ + #define __sysc_pre(n) \ + __casm(n,6,1, "movl %%eax,%%ebp" , )\ +- __casm(n,0,1, "movl %0,%%eax" , )\ ++ __casm(n,0,1, "movl %1,%%eax" , )\ + + #define __sysc_fin(n) \ + __casm(n,6,1, "popl %%ebp" , )\ + __pasm(n,1,1, "popl %%ebx" , )\ + +-#define __sysc_clobber __sysc_regs, "eax", "memory" ++#define __sysc_aout "=a"(__res) ++#define __sysc_clobber __sysc_regs, "memory" + + + /* ***************************************** +@@ -399,8 +411,43 @@ + + #elif defined(__mips__) + +-#error syscall arch mips not implemented yet ++/* The ABIO32 calling convention uses a0-a3 to pass the first ++ four arguments, the rest is passed on the userspace stack. The 5th arg ++ starts at 16($sp). ++ ++ ABIN32 and ABI64 pass 6 args in a0-a3, t0-t1. ++ ++ scnr: id(v0) ++ args: a1(a0), a2(a1), a3(a2), a4(a3), a5(16($sp)), a6(20($sp)) ++ sret: r0(v0) ++ serr: e0(a3) ++ call: syscall ++ clob: at, v0, t0-t7, t8-t9 ++*/ ++ ++#define __sysc_reg_cid "v0" ++#define __sysc_reg_ret "v0" ++#define __sysc_reg_err "a3" ++#define __sysc_cmd_sys "syscall" ++ ++#define __sysc_reg(n) __arg_##n\ ++ ("a0","a1","a2","a3", "t0", "t1") + ++#define __sysc_clobber "$1", "$3", "$8", "$9", "$10", "$11", "$12", \ ++ "$13", "$14", "$15", "$24", "$25", "memory" ++ ++#if _MIPS_SIM == _ABIO32 ++#define __sysc_pre(n) \ ++ __casm(n,5,1,"addiu $sp,$sp,-32",) \ ++ __casm(n,6,1,"sw $9,20($sp)",) \ ++ __casm(n,5,1,"sw $8, 16($sp)",) ++#define __sysc_fin(n) \ ++ __casm(n,5,1,"addiu $sp,$sp,32",) ++#elif (_MIPS_SIM == _ABIN32) || (_MIPS_SIM == _ABI64) ++#warning syscall arch mips with ABI N32 and 64 not tested yet ++#else ++#error unknown mips ABI version ++#endif + + + /* ***************************************** +@@ -651,6 +698,7 @@ + #define __sysc_clobber __sysc_regs, \ + "cc", "r11", "rcx", "memory" + ++#define __sysc_aout "=a"(__res) + + #else + #error unknown kernel arch +@@ -834,7 +882,7 @@ + #define __sc_inp_def(n,value) + #endif + +-#ifndef __sysc_save ++#if !defined(__sysc_save) && !defined(__sysc_aout) + #define __sc_res_def(n,r) __sc_asm_reg(n, r); + #else + #define __sc_res_def(n,r) __sc_reg(n); +@@ -865,7 +913,6 @@ + #endif + + +- + #ifdef __sc_complex /* complex result */ + + #ifndef __sysc_errc +@@ -918,6 +965,7 @@ + return (type)(res) + #endif + ++ + #define __sc_results \ + __sc_res_def(__res, __sysc_reg_res) + +@@ -939,8 +987,13 @@ + __casm(n,3,0,"%3 ",) __casm(n,4,0,"%4 ",) __casm(n,5,0,"%5 ",) \ + __casm(n,6,0,"%6 ",) "*/" + ++#ifdef __sysc_aout ++#define __sc_dummy_save(n) ++#define __sc_asmsave(n) ++#else + #define __sc_dummy_save(n) "/* gcc dummy save " \ + __casm(n,0,0,"%0 ",) __casm(n,1,0,"%1 ",) "*/" ++#endif + + #define __comment(name) "\t/* kernel sys_" \ + #name "[" __stringify(__sc_id(name)) "] */" +@@ -1006,10 +1059,14 @@ + #endif + #endif + ++#ifndef __sysc_aout ++#define __sysc_aout ++#endif ++ + #ifndef __sc_asmsysc + #define __sc_asmsysc(n,N) __sc_asm_vol( \ + __casm(n,0,0, __sc_cmds(n,N) , )\ +- ::"i"(__sc_id(N)) : __sysc_clobber) ++ :__sysc_aout:"i"(__sc_id(N)) : __sysc_clobber) + #endif + + #ifndef __sc_asmsave +@@ -1031,33 +1088,33 @@ + + + +-#define _syscall0(type, name) \ ++#define _syscall0(type, name) \ + type name(void) \ + __sc_body(0, type, name, *) + +-#define _syscall1(type, name, type1, arg1) \ ++#define _syscall1(type, name, type1, arg1) \ + type name(type1 arg1) \ + __sc_body(1, type, name, arg1) + +-#define _syscall2(type, name, type1, arg1, type2, arg2) \ ++#define _syscall2(type, name, type1, arg1, type2, arg2) \ + type name(type1 arg1, type2 arg2) \ + __sc_body(2, type, name, arg1, arg2) + +-#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ ++#define _syscall3(type, name, type1, arg1, type2, arg2, type3, arg3) \ + type name(type1 arg1, type2 arg2, type3 arg3) \ + __sc_body(3, type, name, arg1, arg2, arg3) + +-#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++#define _syscall4(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4) \ + type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) \ + __sc_body(4, type, name, arg1, arg2, arg3, arg4) + +-#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ +- type4, arg4, type5, arg5) \ ++#define _syscall5(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++ type4, arg4, type5, arg5) \ + type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4, type5 arg5) \ + __sc_body(5, type, name, arg1, arg2, arg3, arg4, arg5) + +-#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ ++#define _syscall6(type, name, type1, arg1, type2, arg2, type3, arg3, \ + type4, arg4, type5, arg5, type6, arg6) \ + type name(type1 arg1, type2 arg2, type3 arg3, \ + type4 arg4, type5 arg5, type6 arg6) \ diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-testsuite-fix.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-testsuite-fix.patch new file mode 100644 index 0000000..b9cfd46 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-testsuite-fix.patch @@ -0,0 +1,52 @@ +diff -NurpP util-vserver-0.30.210/lib/testsuite/personality.c util-vserver-0.30.210-testfix/lib/testsuite/personality.c +--- util-vserver-0.30.210/lib/testsuite/personality.c 2005-12-31 11:31:55.000000000 +0100 ++++ util-vserver-0.30.210-testfix/lib/testsuite/personality.c 2006-03-16 17:41:30.239559250 +0100 +@@ -73,7 +73,6 @@ int main() + TEST_T2PF("SHORT_INODE", 0, SHORT_INODE); + TEST_T2PF("WHOLE_SECONDS", 0, WHOLE_SECONDS); + TEST_T2PF("STICKY_TIMEOUTS", 0, STICKY_TIMEOUTS); +- TEST_T2PF("ADDR_LIMIT_3GB", 0, ADDR_LIMIT_3GB); + + + // the _loc* tests +@@ -82,7 +81,6 @@ int main() + TEST_PF2T("SHORT_INODE", SHORT_INODE); + TEST_PF2T("WHOLE_SECONDS", WHOLE_SECONDS); + TEST_PF2T("STICKY_TIMEOUTS", STICKY_TIMEOUTS); +- TEST_PF2T("ADDR_LIMIT_3GB", ADDR_LIMIT_3GB); + + + +@@ -123,10 +121,10 @@ int main() + TEST_LIST("mmap_page_zero,any", 0, -1, MMAP_PAGE_ZERO, 15, 3); + + TEST_LIST("mmap_page_zero,addr_limit_32bit,short_inode,whole_seconds," +- "sticky_timeouts,addr_limit_3gb", ++ "sticky_timeouts", + 0, 0, + MMAP_PAGE_ZERO|ADDR_LIMIT_32BIT|SHORT_INODE|WHOLE_SECONDS| +- STICKY_TIMEOUTS|ADDR_LIMIT_3GB, ++ STICKY_TIMEOUTS, + -1, 0); + + TEST_T2PT("linux", 0, PER_LINUX); +diff -NurpP util-vserver-0.30.210/src/testsuite/vunify-test.sh util-vserver-0.30.210-testfix/src/testsuite/vunify-test.sh +--- util-vserver-0.30.210/src/testsuite/vunify-test.sh 2005-03-21 21:03:33.000000000 +0100 ++++ util-vserver-0.30.210-testfix/src/testsuite/vunify-test.sh 2006-03-16 17:37:04.014921250 +0100 +@@ -1,6 +1,7 @@ + #! /bin/bash + +-: ${srcdir=.} ++: ${srcdir:=.} ++: ${builddir:=.} + : ${tmptopdir=/var/tmp} + + set -e +@@ -49,5 +50,5 @@ pushd $tmpdir &>/dev/null + popd &>/dev/null + + +-$D ./src/vunify -n --manually $tmpdir/a '' $tmpdir/b '' >/dev/null +-$D ./src/vunify -n --manually $tmpdir/a '' $tmpdir/c '' >/dev/null ++$builddir/src/vunify -n --manually $tmpdir/a '' $tmpdir/b '' >/dev/null ++$builddir/src/vunify -n --manually $tmpdir/a '' $tmpdir/c '' >/dev/null diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vlogin.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vlogin.patch new file mode 100644 index 0000000..e24296e --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vlogin.patch @@ -0,0 +1,514 @@ +diff -Nurp util-vserver-0.30.210.orig/ensc_wrappers/wrappers.h util-vserver-0.30.210.vlogin/ensc_wrappers/wrappers.h +--- util-vserver-0.30.210.orig/ensc_wrappers/wrappers.h 2006-01-22 12:18:14.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/ensc_wrappers/wrappers.h 2006-04-04 04:18:38.000000000 +0200 +@@ -111,6 +111,10 @@ + # include "wrappers-stat.hc" + #endif + ++#ifdef ENSC_WRAPPERS_TERMIOS ++# include "wrappers-termios.hc" ++#endif ++ + #undef ENSC_DETAIL2 + #undef ENSC_DETAIL1 + #undef ENSC_DOQUOTE_COND +diff -Nurp util-vserver-0.30.210.orig/ensc_wrappers/wrappers-termios.hc util-vserver-0.30.210.vlogin/ensc_wrappers/wrappers-termios.hc +--- util-vserver-0.30.210.orig/ensc_wrappers/wrappers-termios.hc 1970-01-01 01:00:00.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/ensc_wrappers/wrappers-termios.hc 2006-04-04 04:18:38.000000000 +0200 +@@ -0,0 +1,32 @@ ++// $Id$ --*- c -*-- ++ ++// Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> ++// ++// This program is free software; you can redistribute it and/or modify ++// it under the terms of the GNU General Public License as published by ++// the Free Software Foundation; version 2 of the License. ++// ++// This program is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License ++// along with this program; if not, write to the Free Software ++// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++#ifndef H_ENSC_IN_WRAPPERS_H ++# error wrappers-termios.hc can not be used in this way ++#endif ++ ++inline static WRAPPER_DECL void ++Etcgetattr(int fd, struct termios *termios_p) ++{ ++ FatalErrnoError(tcgetattr(fd, termios_p)==-1, "tcgetattr()"); ++} ++ ++inline static WRAPPER_DECL void ++Etcsetattr(int fd, int optional_actions, struct termios *termios_p) ++{ ++ FatalErrnoError(tcsetattr(fd, optional_actions, termios_p)==-1, "tcsetattr()"); ++} +diff -Nurp util-vserver-0.30.210.orig/Makefile.in util-vserver-0.30.210.vlogin/Makefile.in +--- util-vserver-0.30.210.orig/Makefile.in 2006-01-22 20:33:21.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/Makefile.in 2006-04-04 05:00:11.000000000 +0200 +@@ -965,7 +965,7 @@ src_testsuite_vunify_functest_DEPENDENCI + am_src_vattribute_OBJECTS = src/vattribute.$(OBJEXT) + src_vattribute_OBJECTS = $(am_src_vattribute_OBJECTS) + src_vattribute_DEPENDENCIES = $(am__DEPENDENCIES_11) +-am_src_vcontext_OBJECTS = src/vcontext.$(OBJEXT) ++am_src_vcontext_OBJECTS = src/vcontext.$(OBJEXT) src/vlogin.$(OBJEXT) + src_vcontext_OBJECTS = $(am_src_vcontext_OBJECTS) + src_vcontext_DEPENDENCIES = $(am__DEPENDENCIES_11) \ + $(am__DEPENDENCIES_9) +@@ -1746,7 +1746,7 @@ src_chbind_LDFLAGS = $(VSERVER_LDFLGS) + src_chcontext_compat_SOURCES = src/chcontext.c + src_chcontext_compat_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) + src_chcontext_compat_LDFLAGS = $(VSERVER_LDFLGS) +-src_vcontext_SOURCES = src/vcontext.c ++src_vcontext_SOURCES = src/vcontext.c src/vlogin.c + src_vcontext_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) + src_vcontext_LDFLAGS = $(VSERVER_LDFLGS) + src_vsched_SOURCES = src/vsched.c +@@ -3489,6 +3489,8 @@ src/vattribute$(EXEEXT): $(src_vattribut + $(LINK) $(src_vattribute_LDFLAGS) $(src_vattribute_OBJECTS) $(src_vattribute_LDADD) $(LIBS) + src/vcontext.$(OBJEXT): src/$(am__dirstamp) \ + src/$(DEPDIR)/$(am__dirstamp) ++src/vlogin.$(OBJEXT): src/$(am__dirstamp) \ ++ src/$(DEPDIR)/$(am__dirstamp) + src/vcontext$(EXEEXT): $(src_vcontext_OBJECTS) $(src_vcontext_DEPENDENCIES) src/$(am__dirstamp) + @rm -f src/vcontext$(EXEEXT) + $(LINK) $(src_vcontext_LDFLAGS) $(src_vcontext_OBJECTS) $(src_vcontext_LDADD) $(LIBS) +@@ -4222,6 +4224,7 @@ mostlyclean-compile: + -rm -f src/vdu.$(OBJEXT) + -rm -f src/vhashify.$(OBJEXT) + -rm -f src/vlimit.$(OBJEXT) ++ -rm -f src/vlogin.$(OBJEXT) + -rm -f src/vnamespace.$(OBJEXT) + -rm -f src/vps.$(OBJEXT) + -rm -f src/vreboot.$(OBJEXT) +@@ -4593,6 +4596,7 @@ distclean-compile: + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vdu.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vhashify.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlimit.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vlogin.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vnamespace.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vps.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@src/$(DEPDIR)/vreboot.Po@am__quote@ +diff -Nurp util-vserver-0.30.210.orig/scripts/vserver.functions util-vserver-0.30.210.vlogin/scripts/vserver.functions +--- util-vserver-0.30.210.orig/scripts/vserver.functions 2006-01-22 13:24:25.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/scripts/vserver.functions 2006-04-04 04:18:38.000000000 +0200 +@@ -39,7 +39,7 @@ declare -a ENTER_SHELL=() + + declare -a OPTS_VCONTEXT_CREATE=() + declare -a OPTS_VCONTEXT_MIGRATE=() +-declare -a OPTS_VCONTEXT_ENTER=() ++declare -a OPTS_VCONTEXT_ENTER=( --vlogin ) + declare -a OPTS_VATTRIBUTE=( --flag fakeinit ) + declare -a OPTS_VSCHED=() + +diff -Nurp util-vserver-0.30.210.orig/src/Makefile-files util-vserver-0.30.210.vlogin/src/Makefile-files +--- util-vserver-0.30.210.orig/src/Makefile-files 2006-01-22 12:28:00.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/src/Makefile-files 2006-04-04 04:18:38.000000000 +0200 +@@ -167,7 +167,7 @@ src_chcontext_compat_SOURCES = src/chcon + src_chcontext_compat_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) + src_chcontext_compat_LDFLAGS = $(VSERVER_LDFLGS) + +-src_vcontext_SOURCES = src/vcontext.c ++src_vcontext_SOURCES = src/vcontext.c src/vlogin.c + src_vcontext_LDADD = $(VSERVER_LDADDS) $(LIBINTERNAL) + src_vcontext_LDFLAGS = $(VSERVER_LDFLGS) + +diff -Nurp util-vserver-0.30.210.orig/src/vcontext.c util-vserver-0.30.210.vlogin/src/vcontext.c +--- util-vserver-0.30.210.orig/src/vcontext.c 2005-10-30 00:38:36.000000000 +0200 ++++ util-vserver-0.30.210.vlogin/src/vcontext.c 2006-04-04 04:18:38.000000000 +0200 +@@ -62,6 +62,7 @@ + #define CMD_NAMESPACE 0x400d + #define CMD_PERSTYPE 0x400e + #define CMD_PERSFLAG 0x400f ++#define CMD_VLOGIN 0x4010 + + + struct option const +@@ -85,6 +86,7 @@ CMDLINE_OPTIONS[] = { + { "syncmsg", required_argument, 0, CMD_SYNCMSG }, + { "personality-type", required_argument, 0, CMD_PERSTYPE }, + { "personality-flags", required_argument, 0, CMD_PERSFLAG }, ++ { "vlogin", no_argument, 0, CMD_VLOGIN }, + #if 1 + { "fakeinit", no_argument, 0, CMD_INITPID }, // compatibility + #endif +@@ -100,6 +102,7 @@ struct Arguments { + bool is_initpid; + bool is_silentexist; + bool set_namespace; ++ bool do_vlogin; + uint_least32_t personality_flags; + uint_least32_t personality_type; + int verbosity; +@@ -112,6 +115,8 @@ struct Arguments { + + int wrapper_exit_code = 255; + ++void do_vlogin(char *argv[]); ++ + static void + showHelp(int fd, char const *cmd, int res) + { +@@ -145,6 +150,7 @@ showHelp(int fd, char const *cmd, int re + " --syncmsg <message>\n" + " ... use <message> as synchronization message; by\n" + " default, 'ok' will be used\n" ++ " --vlogin ... enable terminal proxy\n" + "\n" + "'vcontext --create' exits with code 254 iff the context exists already.\n" + "\n" +@@ -287,12 +293,15 @@ doit(struct Arguments const *args, char + sys_personality(args->personality_type | args->personality_flags)==-1) { + perror(ENSC_WRAPPERS_PREFIX "personality()"); + exit(wrapper_exit_code); +- } ++ } + + doExternalSync(ext_sync_fd, args->sync_msg); + doSyncStage1(p, args->do_disconnect); + DPRINTF("doit: pid=%u, ppid=%u\n", getpid(), getppid()); +- execvp (argv[optind],argv+optind); ++ if (!args->do_vlogin) ++ execvp (argv[optind],argv+optind); ++ else ++ do_vlogin(argv+optind); + doSyncStage2(p, args->do_disconnect); + + PERROR_Q(ENSC_WRAPPERS_PREFIX "execvp", argv[optind]); +@@ -341,6 +350,7 @@ int main (int argc, char *argv[]) + .do_migrateself = false, + .do_disconnect = false, + .do_endsetup = false, ++ .do_vlogin = false, + .is_initpid = false, + .is_silentexist = false, + .set_namespace = false, +@@ -363,6 +373,7 @@ int main (int argc, char *argv[]) + case CMD_MIGRATE : args.do_migrate = true; break; + case CMD_DISCONNECT : args.do_disconnect = true; break; + case CMD_ENDSETUP : args.do_endsetup = true; break; ++ case CMD_VLOGIN : args.do_vlogin = true; break; + case CMD_INITPID : args.is_initpid = true; break; + case CMD_CHROOT : args.do_chroot = true; break; + case CMD_NAMESPACE : args.set_namespace = true; break; +diff -Nurp util-vserver-0.30.210.orig/src/vlogin.c util-vserver-0.30.210.vlogin/src/vlogin.c +--- util-vserver-0.30.210.orig/src/vlogin.c 1970-01-01 01:00:00.000000000 +0100 ++++ util-vserver-0.30.210.vlogin/src/vlogin.c 2006-04-04 06:48:12.000000000 +0200 +@@ -0,0 +1,312 @@ ++// $Id$ ++ ++// Copyright (C) 2006 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> ++// Based on vserver-utils' vlogin program. ++// ++// This program is free software; you can redistribute it and/or modify ++// it under the terms of the GNU General Public License as published by ++// the Free Software Foundation; version 2 of the License. ++// ++// This program is distributed in the hope that it will be useful, ++// but WITHOUT ANY WARRANTY; without even the implied warranty of ++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++// GNU General Public License for more details. ++// ++// You should have received a copy of the GNU General Public License ++// along with this program; if not, write to the Free Software ++// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ ++ ++#ifdef HAVE_CONFIG_H ++# include <config.h> ++#endif ++ ++#include "util.h" ++#include <lib/vserver.h> ++#include <lib/fmt.h> ++ ++#include <stdlib.h> ++#include <getopt.h> ++#include <stdint.h> ++#include <errno.h> ++#include <sys/stat.h> ++#include <sys/ioctl.h> ++#include <sys/wait.h> ++#include <sys/socket.h> ++#include <termios.h> ++#include <signal.h> ++#include <pty.h> ++#include <fcntl.h> ++ ++#define ENSC_WRAPPERS_PREFIX "vlogin: " ++#define ENSC_WRAPPERS_IOCTL 1 ++#define ENSC_WRAPPERS_UNISTD 1 ++#define ENSC_WRAPPERS_SOCKET 1 ++#define ENSC_WRAPPERS_IO 1 ++#define ENSC_WRAPPERS_TERMIOS 1 ++#define ENSC_WRAPPERS_FCNTL 1 ++#include <wrappers.h> ++ ++struct terminal { ++ int fd; /* terminal file descriptor */ ++ struct termios term; /* terminal settings */ ++ struct winsize ws; /* terminal size */ ++ pid_t pid; /* terminal process id */ ++ struct termios termo; /* original terminal settings */ ++ enum { TS_RESET, TS_RAW } state; /* terminal state */ ++}; ++ ++static struct terminal t; ++extern int wrapper_exit_code; ++ ++/* set terminal to raw mode */ ++static void ++terminal_raw(void) ++{ ++ struct termios buf; ++ ++ /* save original terminal settings */ ++ Etcgetattr(STDIN_FILENO, &t.termo); ++ ++ buf = t.termo; ++ ++ /* echo off ++ ** canonical mode off ++ ** extended input processing off ++ ** signal chars off */ ++ buf.c_lflag &= ~(ECHO | ICANON | IEXTEN | ISIG); ++ ++ /* no SIGINT on BREAK ++ ** CR-to-NL off ++ ** input parity check off ++ ** don't strip 8th bit on input ++ ** output flow control off */ ++ buf.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON); ++ ++ /* clear size bits ++ ** parity checking off */ ++ buf.c_cflag &= ~(CSIZE | PARENB); ++ ++ /* set 8 bits/char */ ++ buf.c_cflag |= CS8; ++ ++ /* output processing off */ ++ buf.c_oflag &= ~(OPOST); ++ ++ /* 1 byte at a time ++ ** no timer */ ++ buf.c_cc[VMIN] = 1; ++ buf.c_cc[VTIME] = 0; ++ ++ Etcsetattr(STDIN_FILENO, TCSAFLUSH, &buf); ++ ++ t.state = TS_RAW; ++} ++ ++/* reset terminal to original state */ ++static void ++terminal_reset(void) ++{ ++ if (t.state != TS_RAW) ++ return; ++ ++ Etcsetattr(STDIN_FILENO, TCSAFLUSH, &t.termo); ++ ++ t.state = TS_RESET; ++} ++ ++/* exit handler */ ++static void ++terminal_atexit(void) ++{ ++ terminal_reset(); ++} ++ ++/* send signal to terminal */ ++static void ++terminal_kill(int sig) ++{ ++ pid_t pgrp = -1; ++ ++ /* try to get process group leader */ ++ if (ioctl(t.fd, TIOCGPGRP, &pgrp) >= 0 && ++ pgrp != -1 && ++ kill(-pgrp, sig) != -1) ++ return; ++ ++ /* fallback using terminal pid */ ++ kill(-t.pid, sig); ++} ++ ++/* redraw the terminal screen */ ++static void ++terminal_redraw(void) ++{ ++ /* get winsize from stdin */ ++ if (ioctl(STDIN_FILENO, TIOCGWINSZ, &t.ws) == -1) ++ return; ++ ++ /* set winsize in terminal */ ++ ioctl(t.fd, TIOCSWINSZ, &t.ws); ++ ++ /* set winsize change signal to terminal */ ++ terminal_kill(SIGWINCH); ++} ++ ++/* copy terminal activity to user */ ++static void ++terminal_activity(void) ++{ ++ char buf[64]; ++ size_t len; ++ ++ /* read terminal activity */ ++ len = Eread(t.fd, buf, sizeof(buf)); ++ ++ /* write activity to user */ ++ EwriteAll(STDOUT_FILENO, buf, len); ++} ++ ++/* copy user activity to terminal */ ++static void ++user_activity(void) ++{ ++ char buf[64]; ++ size_t len; ++ ++ len = Eread(STDIN_FILENO, buf, sizeof(buf)); ++ EwriteAll(t.fd, buf, len); ++} ++ ++/* shuffle all output, and reset the terminal */ ++static void ++terminal_end(void) ++{ ++ char buf[64]; ++ ssize_t len; ++ long options; ++ ++ options = Efcntl(t.fd, F_GETFL, 0) | O_NONBLOCK; ++ Efcntl(t.fd, F_SETFL, options); ++ for (;;) { ++ len = read(t.fd, buf, sizeof(buf)); ++ if (len == 0 || len == -1) ++ break; ++ EwriteAll(STDOUT_FILENO, buf, len); ++ } ++ ++ /* in case atexit hasn't been setup yet */ ++ terminal_reset(); ++} ++ ++/* catch signals */ ++static void ++signal_handler(int sig) ++{ ++ int status; ++ ++ switch(sig) { ++ /* catch interrupt */ ++ case SIGINT: ++ terminal_kill(sig); ++ break; ++ ++ /* terminal died */ ++ case SIGCHLD: ++ terminal_end(); ++ wait(&status); ++ exit(WEXITSTATUS(status)); ++ break; ++ ++ /* window size has changed */ ++ case SIGWINCH: ++ terminal_redraw(); ++ break; ++ ++ default: ++ exit(0); ++ } ++ ++} ++ ++void do_vlogin(char *argv[]) ++{ ++ int slave; ++ pid_t pid; ++ int n; ++ fd_set rfds; ++ ++ if (!isatty(0) || !isatty(1)) { ++ execvp(argv[0], argv); ++ return; ++ } ++ ++ /* set terminal to raw mode */ ++ terminal_raw(); ++ ++ /* fork new pseudo terminal */ ++ if (openpty(&t.fd, &slave, NULL, NULL, NULL) == -1) { ++ perror(ENSC_WRAPPERS_PREFIX "openpty()"); ++ exit(EXIT_FAILURE); ++ } ++ ++ /* setup SIGCHLD here, so we're sure to get the signal */ ++ signal(SIGCHLD, signal_handler); ++ ++ pid = Efork(); ++ ++ if (pid == 0) { ++ /* we don't need the master side of the terminal */ ++ close(t.fd); ++ ++ /* login_tty() stupid dietlibc doesn't have it */ ++ Esetsid(); ++ ++ Eioctl(slave, TIOCSCTTY, NULL); ++ ++ Edup2(slave, 0); ++ Edup2(slave, 1); ++ Edup2(slave, 2); ++ ++ if (slave > 2) ++ close(slave); ++ ++ Eexecvp(argv[0], argv); ++ } ++ ++ /* setup SIGINT and SIGWINCH here, as they can cause loops in the child */ ++ signal(SIGWINCH, signal_handler); ++ signal(SIGINT, signal_handler); ++ ++ /* save terminals pid */ ++ t.pid = pid; ++ ++ /* we want a redraw */ ++ atexit(terminal_atexit); ++ terminal_redraw(); ++ ++ /* main loop */ ++ for (;;) { ++ /* init file descriptors for select */ ++ FD_ZERO(&rfds); ++ FD_SET(STDIN_FILENO, &rfds); ++ FD_SET(t.fd, &rfds); ++ n = t.fd; ++ ++ /* wait for something to happen */ ++ while (select(n + 1, &rfds, NULL, NULL, NULL) == -1) { ++ if (errno == EINTR || errno == EAGAIN) ++ continue; ++ perror(ENSC_WRAPPERS_PREFIX "select()"); ++ exit(wrapper_exit_code); ++ } ++ ++ if (FD_ISSET(STDIN_FILENO, &rfds)) ++ user_activity(); ++ ++ if (FD_ISSET(t.fd, &rfds)) ++ terminal_activity(); ++ } ++ ++ /* never get here, signal handler exits */ ++} diff --git a/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vprocunhide-fix.patch b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vprocunhide-fix.patch new file mode 100644 index 0000000..5e0bf95 --- /dev/null +++ b/util-vserver/patches/0.30.210-r10/util-vserver-0.30.210-vprocunhide-fix.patch @@ -0,0 +1,9 @@ +Index: util-vserver-0.30.210/distrib/misc/vprocunhide-files +=================================================================== +--- util-vserver-0.30.210.orig/distrib/misc/vprocunhide-files ++++ util-vserver-0.30.210/distrib/misc/vprocunhide-files +@@ -28,3 +28,4 @@ + /proc/uptime + -/proc/cmdline + /proc/version ++/proc/mounts |