added chain-echo
[util-vserver.git] / util-vserver / scripts / vserver-build.functions
index 20829d2..fcde3fa 100644 (file)
@@ -20,8 +20,6 @@
 
 ROOTDIR=
 ROOTDIR_REL=
-PKGCFGBASE=
-PKGCFGBASE_REL=
 VSERVERDIRNAME=
 
 VDIR=
@@ -36,12 +34,12 @@ function makeDevEntry
 {
     local dst=$1/$2
     case "$3" in
-       c|b)    mknod -m$6 "$dst"  $3 $4 $5;;
-       d)      mkdir -p -m$4 "$dst";;
-       f)      touch "$dst"
+       (c|b)   mknod -m$6 "$dst"  $3 $4 $5;;
+       (d)     mkdir -p -m$4 "$dst";;
+       (f)     touch "$dst"
                chmod $4 "$dst"
                ;;
-       *)      echo "Unknown dev-entry mode '$3'" >&2
+       (*)     echo "Unknown dev-entry mode '$3'" >&2
                false
                ;;
     esac
@@ -59,8 +57,8 @@ function populateDirectory
        for file in "$i"/*; do
            test -e "$file" || continue
            case "$file" in
-               */CVS)  test ! -d "$file" || continue;;
-               *.rpmsave|*.rpmnew|*.rpmorig)
+               (*/CVS) test ! -d "$file" || continue;;
+               (*.rpmsave|*.rpmnew|*.rpmorig)
                        continue;;
            esac
            
@@ -73,7 +71,7 @@ function _setRootDir
 {
     test -z "$ROOTDIR" || return 0
     
-    for item in "\"$CONFDIR/.defaults/vdirbase\" 1" "/vservers"; do
+    for item in "\"$CONFDIR/.defaults/vdirbase\" 1" "$DEFAULT_VSERVERDIR"; do
        eval set -- "$item"
        ROOTDIR=$1
        ROOTDIR_REL=$2
@@ -81,36 +79,11 @@ function _setRootDir
     done
 
     test -d "$ROOTDIR" || {
-       echo "Root-directory '$ROOTDIR' does not exist or is invalid"
+       echo "Root-directory '$ROOTDIR' does not exist or is invalid" >&2
        exit 1
     }
 }
 
-function _setPkgCfgBase
-{
-    test -z "$PKGCFGBASE" || return 0
-
-    for item in "\"$CONFDIR/.defaults/apps/pkgmgmt/base\" 1" "$ROOTDIR/.pkg"; do
-       eval set -- "$item"
-       PKGCFGBASE=$1
-       PKGCFGBASE_REL=$2
-       test ! -d "$PKGCFGBASE" || break
-    done
-
-    test -d "$PKGCFGBASE"  || {
-       echo "pkgcfgbase-dir '$PKGCFGBASE' does not exists or is invalid"
-       exit 1
-    }
-}
-
-function _setPkgCfg
-{
-    _setPkgCfgBase
-
-    test -z "$PKGCFGDIR" || return 0
-    PKGCFGDIR="$PKGCFGBASE/$VSERVERDIRNAME"
-}
-
 function _setVserverDir
 {
     test -z "$VSERVERDIRNAME" || return 0
@@ -154,49 +127,57 @@ function getDistribution
     elif test -e /etc/debian_version; then
        set -- $(cat /etc/debian_version)
        DISTRIBUTION=deb$1
+    elif test -e /etc/SuSE-release; then
+       set -- $(cat /etc/SuSE-release)
+       DISTRIBUTION=suse$3
     else
-       echo "Can not determine distribution; please specify it manually"
-       echo "with the '-d' option"
+       echo \
+"Can not determine distribution; please specify it manually
+with the '-d' option"  >&2
        exit 1
     fi >&2
 }
 
 ## Usage: initFilesystem [force]
-function initFilesystem
+function base.initFilesystem
 {
     test -z "$1" || _renameVserverCfg
     test ! -d "$VDIR" -a ! -d "$SETUP_CONFDIR" || {
-       echo "vserver-topdirectory and/or configuration exist already; "
-       echo "please try to use '--force', or remove them manually"
+       echo \
+"vserver-topdirectory '$VDIR' and/or configuration at '$SETUP_CONFDIR'
+exist already; please try to use '--force', or remove them manually"
+>&2
        exit 1
     } >&2
 
-    mkdir -p "$SETUP_CONFDIR"/apps/pkgmgmt "$VDIR"/{dev/pts,etc} "$SETUP_LOCKREVDIR"
+    mkdir -p -m755 "$VDIR"
+    chattr -t "$VDIR"
+    mkdir -p -m755 "$SETUP_CONFDIR"/apps "$VDIR"/{dev/pts,etc} "$SETUP_LOCKREVDIR"
     
     ln -s "$VDIR"       "$SETUP_CONFDIR/vdir"
 
-    test -z "$PKGCFGDIR" || {
-       ln -s "$PKGCFGDIR" "$SETUP_CONFDIR/apps/pkgmgmt/base"
-
-       test "$_EXECDIR" = / || ln -s "$_EXECDIR" "$confdir/apps/pkgmgmt/execdir"
-    }
-
     local spec
     while read spec; do
        makeDevEntry "$VDIR"/dev $spec
     done <$_DEV_FILE
+
+    mkdir -p "$VDIR"/proc
+    findAndCopy "$VDIR"/etc/hosts         "$CONFDIR"/.defaults/files/hosts "$CONFDIR/.distributions/$DISTRIBUTION"/files/hosts \
+                                         "$DISTRIBDIR/$DISTRIBUTION"/files/hosts "$DISTRIBDIR"/defaults/files/hosts ""
+
+    for i in nsswitch.conf krb5.conf krb.conf krb.realms ldap.conf localtime resolv.conf; do
+       findAndCopy "$VDIR"/etc/$i  "$CONFDIR/.defaults/files/$i" "$CONFDIR/.distributions/$DISTRIBUTION/files/$i" ""
+    done
 }
 
-function initVariables
+function base.initVariables
 {
     _setRootDir
     _setVserverDir
-    _setPkgCfg
     _setVdir
 
     findFile _DEV_FILE      "$CONFDIR/.distributions/$DISTRIBUTION/devs"      "$DISTRIBDIR/$DISTRIBUTION/devs"     "$DISTRIBDIR/defaults/devs"
     findDir  _EXECDIR       "$CONFDIR/.distributions/$DISTRIBUTION/execdir"   "$DISTRIBDIR/$DISTRIBUTION/execdir"  /
     findFile BUILD_INITPRE  "$CONFDIR/.distributions/$DISTRIBUTION/initpre"   "$DISTRIBDIR/$DISTRIBUTION/initpre"  ""
     findFile BUILD_INITPOST "$CONFDIR/.distributions/$DISTRIBUTION/initpost"  "$DISTRIBDIR/$DISTRIBUTION/initpost" ""
-    findDir  PKGDIR         "$CONFDIR/.distributions/$DISTRIBUTION/pkgs"      "$DISTRIBDIR/$DISTRIBUTION/pkgs"     /
 }