devel rpms are needed for srpm
[build.git] / vbuild-init-vserver.sh
index fd34982..fbea5d1 100755 (executable)
@@ -3,6 +3,9 @@
 
 COMMAND=$(basename $0)
 
+# lst parsing utilities
+PATH=$(dirname $0):$PATH . build.common
+
 function failure () {
     echo "$COMMAND : Bailing out"
     exit 1
@@ -10,9 +13,6 @@ function failure () {
 
 # overwrite vserver's internal yum config from what is in
 # .distributions/<distrib>/yum/yum.conf and /yum.repos.d 
-# note : on fc6 I've had trouble with yum.conf, I haven't created a custom yum.conf
-# when using the default yum.conf, 
-# vserver build -m yum complained that /vservers/<v>/var/log/yum.log could not be created
 
 function configure_yum_in_vserver () {
     set -x 
@@ -25,7 +25,13 @@ function configure_yum_in_vserver () {
     cd /etc/vservers/.distributions/${fcdistro}
     if [ -f yum/yum.conf ] ; then
        echo "Initializing yum.conf in $vserver from $(pwd)/yum"
-       cp yum/yum.conf /vservers/$vserver/etc/yum.conf
+        sed -e "s!@YUMETCDIR@!/etc!g;
+                s!@YUMCACHEDIR@!/var/cache/yum!g;
+                s!@YUMLOGDIR@!/var/log!g;
+                s!@YUMLOCKDIR@!/var/lock!g;
+               " yum/yum.conf > /vservers/$vserver/etc/yum.conf
+
+       # post process the various @...@ variables from this yum.conf file.
     else
        echo "Cannot initialize yum.conf in $vserver - using $fcdistro default"
     fi
@@ -50,8 +56,18 @@ function setup_vserver () {
     fcdistro=$1; shift
     personality=$1; shift
 
+    CLONED=0
     # create the new vserver
-    [ ! -d /etc/vservers/$vserver ] && $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro
+    if [ ! -d /etc/vservers/$vserver ] ; then
+       # check if we can create the vserver from a reference vserver
+       #if [ -d /vservers/${fcdistro}_reference ] ; then
+       if [ 0 -ne 0 ] ; then
+           $personality vserver $VERBOSE $vserver build -m clone -- --source /vservers/${fcdistro}_reference
+           CLONED=1
+       else
+           $personality vserver $VERBOSE $vserver build -m yum -- -d $fcdistro
+        fi
+    fi
 
     if [ ! -z "$personality" ] ; then
        l32=$(grep $personality /etc/vservers/$vserver/personality | wc -l)
@@ -69,17 +85,19 @@ function setup_vserver () {
     [ $cap -eq 0 ] && echo 'CAP_IPC_LOCK' >> /etc/vservers/$vserver/bcapabilities
 
     # start the vserver so we can do the following operations
-    $personality vyum $vserver -- -y install yum
-    $personality vserver $VERBOSE $vserver pkgmgmt internalize
+    if [ $CLONED -eq 0 ] ; then
+       $personality vyum $vserver -- -y install yum
+       $personality vserver $VERBOSE $vserver pkgmgmt internalize
+    fi
     $personality vserver $VERBOSE $vserver start
     $personality vserver $VERBOSE $vserver exec rm -f /var/lib/rpm/__db*
     $personality vserver $VERBOSE $vserver exec rpm --rebuilddb
 
+    # minimal config in the vserver for yum to work
     configure_yum_in_vserver $vserver $fcdistro
 
     # set up resolv.conf
     cp /etc/resolv.conf /vservers/$vserver/etc/resolv.conf
-
 }
 
 function devel_tools () {
@@ -94,7 +112,7 @@ function devel_tools () {
     personality=$1; shift
 
     # check for .lst file based on pldistro
-    lst=${pldistro}-${fcdistro}-devel.lst
+    lst=${pldistro}-devel.lst
     if [ -f $lst ] ; then
        echo "$COMMAND: Using $lst"
     else
@@ -103,8 +121,8 @@ function devel_tools () {
     fi
 
     # install individual packages, then groups
-    packages=$(grep "^package:" $lst | sed -e s,package:,,)
-    groups=$(grep "^group:" $lst | sed -e s,group:,,)
+    packages=$(pl_getPackages2 ${fcdistro} $lst)
+    groups=$(pl_getGroups2 ${fcdistro} $lst)
 
     [ -n "$packages" ] && $personality vserver $vserver exec yum -y install $packages
     [ -n "$groups" ] && $personality vserver $vserver exec yum -y groupinstall $groups
@@ -143,6 +161,11 @@ function post_install () {
        fi
     fi
     
+    # customize root's prompt
+    cat << PROFILE > /root/.profile
+export PS1="[$vserver] \\w # "
+PROFILE
+
     uid=2000
     gid=2000