- added legacy support
[util-vserver.git] / util-vserver / scripts / functions
index 959a2aa..a0f5617 100644 (file)
@@ -86,6 +86,12 @@ function _pkgSetVarsBase
 
            ;;
     esac
+
+    if test -z "$WORKAROUND_106057"; then
+       _rpmdb_mntpoint=/dev
+    else
+       _rpmdb_mntpoint=/.rpmdb
+    fi
 }
 
 function _pkgSetVarsRPM
@@ -139,7 +145,9 @@ function _pkgMountRPM
 {
     _pkgMountBindDir "$RPMETCDIR" /etc/rpm
     test "$RPMLIBDIR" = "/" || _pkgMountBindDir "$RPMLIBDIR" /usr/lib/rpm
-    "$_SECURE_MOUNT" "$VDIR" "$RPMSTATEDIR" /var/lib/rpm
+
+    "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+    test -z "$WORKAROUND_106057" || mount -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
 }
 
 function _pkgSetEnvBase
@@ -160,7 +168,7 @@ function _pkgSetEnvApt
 function _pkgSetEnvRPM
 {
     CUR_VSERVER=$vserver
-    RPM_FAKE_NAMESPACE_MOUNTS=/var/lib/rpm
+    RPM_FAKE_NAMESPACE_MOUNTS=$_rpmdb_mntpoint
     RPM_BINARY=$_VRPM_PRELOAD
 
     export CUR_VSERVER RPM_FAKE_NAMESPACE_MOUNTS RPM_BINARY
@@ -214,3 +222,31 @@ function getAllVservers
        eval "$var=\"$var ${i##$CONFDIR/}\""
     done
 }
+
+## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
+function getVserverStatus
+{
+    test -r "$1"/run || return 1
+    eval read "$2" <"$1"/run
+
+    test "$3"        || return 0
+    local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$ctx" | $_WC -l )
+    eval "$3"=\$_tmp
+
+    test "$4" -a $_tmp = 0 || return 0
+    _tmp=$(readlink "$1/run")
+    test "$_tmp"           || return 1
+    rm -f "$_tmp"
+    return 0
+}
+
+## Usage: isVserverRunning <vdir> [<ctx-varname>]
+function isVserverRunning
+{
+    local ctx procnum
+
+    getVserverStatus "$1" ctx procnum 1 || return 1
+    test $procnum != 0                  || return 1
+    test -z "$2" || eval "$2"=\$ctx
+    return 0
+}