myplc from master
[build.git] / vbuild-init-lxc.sh
index 329bae5..be397c9 100755 (executable)
@@ -195,21 +195,24 @@ TYPE=Ethernet
 MTU=1500
 EOF
 
-# set the hostname
-if [[ "$fcdistro" == "f18" ]] ; then
-    cat <<EOF > ${rootfs_path}/etc/hostname
+    # set the hostname
+    case "$fcdistro" in 
+       f18|f2?)
+           cat <<EOF > ${rootfs_path}/etc/hostname
 $HOSTNAME
 EOF
-else
-    cat <<EOF > ${rootfs_path}/etc/sysconfig/network
+           echo ;;
+       *)
+            cat <<EOF > ${rootfs_path}/etc/sysconfig/network
 NETWORKING=yes
 HOSTNAME=$HOSTNAME
 EOF
-    # set minimal hosts
-    cat <<EOF > $rootfs_path/etc/hosts
+            # set minimal hosts
+           cat <<EOF > $rootfs_path/etc/hosts
 127.0.0.1 localhost $HOSTNAME
 EOF
-fi
+           echo ;;
+    esac
 
     dev_path="${rootfs_path}/dev"
     rm -rf $dev_path
@@ -242,6 +245,9 @@ function configure_fedora_init() {
 
     sed -i 's|.sbin.start_udev||' ${rootfs_path}/etc/rc.sysinit
     sed -i 's|.sbin.start_udev||' ${rootfs_path}/etc/rc.d/rc.sysinit
+    # don't mount devpts, for pete's sake
+    sed -i 's/^.*dev.pts.*$/#\0/' ${rootfs_path}/etc/rc.sysinit
+    sed -i 's/^.*dev.pts.*$/#\0/' ${rootfs_path}/etc/rc.d/rc.sysinit
     chroot ${rootfs_path} /sbin/chkconfig udev-post off
     chroot ${rootfs_path} /sbin/chkconfig network on
 }
@@ -251,10 +257,9 @@ function configure_fedora_systemd() {
     # so ignore if we can't find /etc/systemd at all 
     [ -d ${rootfs_path}/etc/systemd ] || return 0
     # otherwise let's proceed
-    unlink ${rootfs_path}/etc/systemd/system/default.target
-    ln -s /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
+    ln -sf /lib/systemd/system/multi-user.target ${rootfs_path}/etc/systemd/system/default.target
     touch ${rootfs_path}/etc/fstab
-    ln -s /dev/null ${rootfs_path}/etc/systemd/system/udev.service
+    ln -sf /dev/null ${rootfs_path}/etc/systemd/system/udev.service
 # Thierry - Feb 2013
 # this was intended for f16 initially, in order to enable getty that otherwise would not start
 # having a getty running is helpful only if ssh won't start though, and we see a correlation between
@@ -262,7 +267,7 @@ function configure_fedora_systemd() {
 # so, turning getty off for now instead
 #   #dependency on a device unit fails it specially that we disabled udev
 #    sed -i 's/After=dev-%i.device/After=/' ${rootfs_path}/lib/systemd/system/getty\@.service
-    ln -s /dev/null ${rootfs_path}/etc/systemd/system/"getty@.service"
+    ln -sf /dev/null ${rootfs_path}/etc/systemd/system/"getty@.service"
     rm -f ${rootfs_path}/etc/systemd/system/getty.target.wants/*service || :
 # can't seem to handle this one with systemctl
     chroot ${rootfs_path} /sbin/chkconfig network on
@@ -273,18 +278,31 @@ set -x
     # check the mini fedora was not already downloaded
     INSTALL_ROOT=$cache/partial
     echo $INSTALL_ROOT
+
+    # download a mini fedora into a cache
+    echo "Downloading fedora minimal ..."
+
     mkdir -p $INSTALL_ROOT
     if [ $? -ne 0 ]; then
         echo "Failed to create '$INSTALL_ROOT' directory"
         return 1
     fi
 
-    # download a mini fedora into a cache
-    echo "Downloading fedora minimal ..."
-    YUM="yum --installroot $INSTALL_ROOT -y --nogpgcheck --releasever=$release"
-    PKG_LIST="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
-  
-    
+    mkdir -p $INSTALL_ROOT/etc/yum.repos.d   
+    mkdir -p $INSTALL_ROOT/dev
+    mknod -m 0444 $INSTALL_ROOT/dev/random c 1 8
+    mknod -m 0444 $INSTALL_ROOT/dev/urandom c 1 9
+
+    # copy yum config and repo files
+    cp /etc/yum.conf $INSTALL_ROOT/etc/
+    cp /etc/yum.repos.d/fedora* $INSTALL_ROOT/etc/yum.repos.d/
+
+    # append fedora repo files with desired $release and $basearch
+    for f in $INSTALL_ROOT/etc/yum.repos.d/*
+    do
+      sed -i "s/\$basearch/$arch/g; s/\$releasever/$release/g;" $f
+    done 
+
     MIRROR_URL=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os
     RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
     # with fedora18 the rpms are scattered by first name
@@ -315,6 +333,9 @@ set -x
     #   http://rpm.org/gitweb?p=rpm.git;a=commitdiff;h=cf1095648194104a81a58abead05974a5bfa3b9a
     # So ideally if we want to be able to build f12 images from f18 we need an rpm that has
     # this patch undone, like we have in place on our f14 boxes (our f14 boxes need a f18-like rpm)
+
+    YUM="yum --installroot=$INSTALL_ROOT --nogpgcheck -y"
+    PKG_LIST="yum initscripts passwd rsyslog vim-minimal dhclient chkconfig rootfiles policycoreutils openssh-server openssh-clients"
     echo "$YUM install $PKG_LIST"
     $YUM install $PKG_LIST
 
@@ -461,16 +482,16 @@ function configure_yum_in_lxc () {
 
     cat > $rootfs_path/etc/yum.repos.d/building.repo <<EOF
 [fedora]
-name=Fedora $release - \$basearch
-baseurl=http://mirror.onelab.eu/fedora/releases/$release/Everything/\$basearch/os/
+name=Fedora $release - $arch
+baseurl=http://mirror.onelab.eu/fedora/releases/$release/Everything/$arch/os/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
 gpgkey=http://mirror.onelab.eu/keys/RPM-GPG-KEY-fedora-$release-primary
 
 [updates]
-name=Fedora $release - \$basearch - Updates
-baseurl=http://mirror.onelab.eu/fedora/updates/$release/\$basearch/
+name=Fedora $release - $arch - Updates
+baseurl=http://mirror.onelab.eu/fedora/updates/$release/$arch/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
@@ -563,7 +584,7 @@ function setup_lxc() {
         exit 1
     fi
 
-    if [ ! -d ${rootfs_path}/etc/systemd ]; then
+    if [ "$(echo $fcdistro | cut -d"f" -f2)" -le "14" ]; then
         configure_fedora_init
     else
         configure_fedora_systemd