findObject -d "$@"
}
+function findAndCopy
+{
+ local dst=$1
+ test ! -s "$dst" || return 0
+
+ local tmp
+ shift
+ findFile tmp "$@"
+
+ test "$tmp" -a -s "$tmp" || return 0
+ cp -af "$tmp" "$dst"
+}
+
function getPhysicalDir
{
( set -P && cd "$1" && pwd )
function _pkgSetVarsBase
{
case "$vserver" in
- /*)
+ ./*|/*)
if test -d "$vserver/vdir"; then
BASEDIR=$vserver
VDIR=$(getPhysicalDir "$vserver/vdir")
}
VDIR=$BASEDIR/vdir
- test -d "$VDIR" || VDIR=/vservers/$vserver
+ test -d "$VDIR" || VDIR=$DEFAULT_VSERVERDIR/$vserver
VDIR=$(getPhysicalDir "$VDIR")
PKGDIR=$BASEDIR/apps/pkgmgmt
findDir APTCACHEDIR "$VDIR"/var/cache/apt
findDir APTARCHIVDIR "$VDIR"/var/cache/apt/archives /var/cache/apt/archives
fi
+
+ findFile APT_CONFIG "$APTETCDIR"/apt.conf ""
+ test -z "$APT_CONFIG" || export APT_CONFIG
}
function _pkgMountBase
"$_SECURE_MOUNT" --chroot "$VDIR" -n --secure --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
test -z "$WORKAROUND_106057" || mount -n --bind "$RPMSTATEDIR" "$_rpmdb_mntpoint"
+
+ test -e "$VDIR"/proc/self/status || \
+ "$_SECURE_MOUNT" --chroot "$VDIR" -n --secure -t proc none /proc
}
function _pkgSetEnvBase
_PKG_VSERVER=$vserver
}
+function isAvoidNamespace
+{
+ test ! -e "$1"/namespace || return 1
+ test -e "$CONFDIR"/.defaults/nonamespace -o \
+ -e "$1"/nonamespace
+}
+
function getAllVservers
{
local i
- declare -a tmp=()
+ declare -a _tmp=()
for i in $CONFDIR/*; do
test -d "$i" || continue
test ! -e "$i"/disabled || continue
test -d "$i"/vdir || continue
+ case "$i" in
+ *.~*~) continue;;
+ esac
- tmp=( "${tmp[@]}" "${i##$CONFDIR/}")
+ _tmp=( "${_tmp[@]}" "${i##$CONFDIR/}")
done
- eval $1=\$tmp
+ eval $1='( "${_tmp[@]}" )'
}
## Usage: getVserverCtx <vdir> <result-varname> [<procnumber-varname> [<do-cleanup>]]
function getVserverStatus
{
test -r "$1"/run || return 1
- eval read "$2" <"$1"/run
+
+ local _ctx
+ read _ctx <"$1"/run
+ eval "$2"=\$_ctx
test "$3" || return 0
- local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$ctx" | $_WC -l )
+ 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")
+ _tmp=$($_READLINK "$1/run")
test "$_tmp" || return 1
rm -f "$_tmp"
return 0
}
+## Usage: isCtxRunning <ctx>
+function isCtxRunning
+{
+ local _tmp=$($_VPS ax | $_AWK '{print $2}' | $_GREP -x "$1" | $_WC -l )
+ test $_tmp -gt 0
+}
+
## Usage: isVserverRunning <vdir> [<ctx-varname>]
function isVserverRunning
{
local IFS=$_VS_NEWLINE
eval "$1"='( $(< "$2") )'
}
+
+function checkComponents
+{
+ local i
+ local msg=$1
+ local x_failed=
+
+ shift
+
+ for i; do
+ local failed=
+ case "$i" in
+ core) test -x "$_CHBIND" || failed=1;;
+ build) test -x "$_VSERVER_BUILD" || failed=1;;
+ sysv) test -x "$INITRDDIR/vserver" || failed=1;;
+ devel) test -d "$INCLUDEDIR/vserver.h" || failed=1;;
+ *) echo "Unknown component '$i'"
+ return false
+ ;;
+ esac
+
+ test -z "$failed" || {
+ echo "$msg: $i"
+ x_failed=1
+ }
+ done
+
+ test -z "$x_failed"
+}
+
+## Usage: isKernelAPI <ver> [<cmp-modifier>]
+function isKernelAPI
+{
+ local api=$($_VSERVER_INFO - APIVER) || api=0
+ test $[ $api ] -${2:-ge} $[ $1 ]
+}