oops, no such thing as LOCAL-STOCK
[build.git] / vbuild-init-vserver.sh
index 9098ce9..301b838 100755 (executable)
@@ -85,7 +85,7 @@ function package_method () {
     fcdistro=$1; shift
     case $fcdistro in
        f[0-9]*|centos[0-9]*|sl[0-9]*) echo yum ;;
-       squeeze|wheezy|oneiric|precise|quantal) echo debootstrap ;;
+       squeeze|wheezy|oneiric|precise|quantal|raring) echo debootstrap ;;
        *) echo Unknown distro $fcdistro ;;
     esac 
 }
@@ -96,7 +96,7 @@ function debian_mirror () {
     case $fcdistro in
        squeeze|wheezy) 
            echo http://ftp2.fr.debian.org/debian/ ;;
-       oneiric|precise|quantal) 
+       oneiric|precise|quantal|raring
            echo http://mir1.ovh.net/ubuntu/ubuntu/ ;;
        *) echo unknown distro $fcdistro; exit 1;;
     esac
@@ -234,19 +234,21 @@ function setup_vserver () {
     # + exec /usr/sbin/vspace --mount --fs --new -- /usr/sbin/vserver ----nonamespace debuild09 start
     # fakerunlevel: open("/var/run/utmp"): No such file or directory
     # so instead we bluntly create empty dirs and hope for the best
-    if [ "$pkg_method" = "debootstrap" ] ; then
+#    if [ "$pkg_method" = "debootstrap" ] ; then
        [ -h /vservers/$vserver/var/run ] && [ ! -d /vservers/$vserver/var/run ] && \
 #          { rm -f /vservers/$vserver/var/run ; ln -s ../run /vservers/$vserver/var/run ; }
            { rm -f /vservers/$vserver/var/run ; mkdir /vservers/$vserver/var/run ; }
        [ -h /vservers/$vserver/var/lock ] && [ ! -d /vservers/$vserver/var/lock ] && \
 #          { rm -f /vservers/$vserver/var/lock ; ln -s ../run/lock /vservers/$vserver/var/lock ; }
            { rm -f /vservers/$vserver/var/lock ; mkdir /vservers/$vserver/var/lock ; }
-    fi
+#    fi
 
     # start the vserver so we can do the following operations
     # redirect out/err to protect against the vserver's init sequence getting stalled 
     # mostly used for f10 vservers created remotely through ssh
-    $personality vserver $VERBOSE $vserver start >& /dev/null
+    # with ubuntu/raring, somehow this fails, so ignore retcod, 
+    # as subsequent vserver exec will fail anyway
+    $personality vserver $VERBOSE $vserver start >& /dev/null || :
 
     if [ "$pkg_method" == "yum" ] ; then
        $personality vserver $VERBOSE $vserver exec sh -c "rm -f /var/lib/rpm/__db*"
@@ -274,6 +276,10 @@ function setup_vserver () {
 
        # try the simple way, if that fails try to cross fix the rpm hashes
        $personality vserver $VERBOSE $vserver exec rpm --rebuilddb || translate_rpm_hashes $personality $vserver
+      
+    elif [ "$pkg_method" == "debootstrap" ] ; then
+       # just check the vm is running
+       $personality vserver $VERBOSE $vserver exec arch 
     fi
 
     # check if the vserver kernel is using VSERVER_DEVICE (vdevmap) support
@@ -290,6 +296,7 @@ function setup_vserver () {
 
     # set up resolv.conf
     cp /etc/resolv.conf /vservers/$vserver/etc/resolv.conf
+    cp /etc/resolv.conf /vservers/$vserver/etc/resolv.conf.preserve
     # and /etc/hosts for at least localhost
     [ -f /vservers/$vserver/etc/hosts ] || echo "127.0.0.1 localhost localhost.localdomain" > /vservers/$vserver/etc/hosts
 
@@ -330,9 +337,21 @@ function devel_or_vtest_tools () {
            $personality vserver $vserver exec rpm -aq > /vservers/$vserver/init-vserver.rpms
            ;;
        debootstrap)
+           # for ubuntu
+           if grep -iq ubuntu /vservers/$vserver/etc/lsb-release 2> /dev/null; then
+               # on ubuntu, at this point we end up with a single feed in /etc/apt/sources.list
+               # we need at least to add the 'universe' feed for python-rpm
+               ( cd /vservers/$vserver/etc/apt ; head -1 sources.list | sed -e s,main,universe, > sources.list.d/universe.list )
+               # also adding a link to updates sounds about right
+               ( cd /vservers/$vserver/etc/apt ; head -1 sources.list | sed -e 's, main,-updates main,' > sources.list.d/updates.list )
+           fi
            $personality vserver $vserver exec apt-get update
-           # handle this one firt off to be sure 
+           # ignore result because that one failed on precise
+sc         $personality vserver $vserver exec apt-get -y upgrade ||:
+           # handle this one firt off to be sure; mostly cosmetic but avoid a huge amount of warnings
            $personality vserver $vserver exec apt-get install -y locales
+           $personality vserver $vserver exec locale-gen en_US.UTF-8
+           # install required packages
            # all in a single batch 
            [ -n "$packages" ] && $personality vserver $vserver exec apt-get install -y --ignore-missing $packages || :
            # of course, on ubuntu apt-get --ignore-missing .. does not ignore missing packages !