add elfutil-libef-devel on f27
[build.git] / lbuild-initvm.sh
index cd071ea..aa71460 100755 (executable)
@@ -19,12 +19,21 @@ export PATH=$PATH:/bin:/sbin
 
 . build.common
 
 
 . build.common
 
+# xxx fixme : we pass $lxc around in functions,
+# but in fact then we use lxc_root which is a global..
+# it works, but this really is poor practice
+# we should have an lxc_root function instead
+function lxcroot () {
+    lxc=$1; shift
+    echo /vservers/$lxc
+}
+
 # XXX fixme : when creating a 32bits VM we need to call linux32 as appropriate...s
 
 # XXX fixme : when creating a 32bits VM we need to call linux32 as appropriate...s
 
-DEFAULT_FCDISTRO=f21
+DEFAULT_FCDISTRO=f27
 DEFAULT_PLDISTRO=lxc
 DEFAULT_PERSONALITY=linux64
 DEFAULT_PLDISTRO=lxc
 DEFAULT_PERSONALITY=linux64
-DEFAULT_MEMORY=1024
+DEFAULT_MEMORY=3072
 
 ##########
 # constant
 
 ##########
 # constant
@@ -72,9 +81,12 @@ EOF
 function package_method () {
     fcdistro=$1; shift
     case $fcdistro in
 function package_method () {
     fcdistro=$1; shift
     case $fcdistro in
-       f[0-9]*|centos[0-9]*|sl[0-9]*) echo yum ;;
-       squeeze|wheezy|jessie|oneiric|precise|quantal|raring|saucy|trusty|utopic) echo debootstrap ;;
-       *) echo Unknown distro $fcdistro ;;
+       f[0-9]*|centos[0-9]*|sl[0-9]*)
+           echo yum ;;
+       wheezy|jessie|precise|trusty|utopic|vivid|wily|xenial)
+           echo debootstrap ;;
+       *)
+           echo Unknown distro $fcdistro ;;
     esac 
 }
 
     esac 
 }
 
@@ -106,7 +118,10 @@ function fedora_install() {
     set -x
     set -e
 
     set -x
     set -e
 
-    cache=/var/cache/lxc/fedora/$arch/$release
+    lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
+
+    cache=/var/cache/lxc/fedora/$arch/${fedora_release}
     mkdir -p $cache
     
     (
     mkdir -p $cache
     
     (
@@ -117,7 +132,7 @@ function fedora_install() {
             fedora_download $cache || { echo "Failed to download 'fedora base'"; return 1; }
         else
             echo "Updating cache $cache/rootfs ..."
             fedora_download $cache || { echo "Failed to download 'fedora base'"; return 1; }
         else
             echo "Updating cache $cache/rootfs ..."
-           if ! yum --installroot $cache/rootfs -y --nogpgcheck update ; then
+           if ! yum --installroot $cache/rootfs --releasever ${fedora_release} -y --nogpgcheck update ; then
                 echo "Failed to update 'fedora base', continuing with last known good cache"
             else
                 echo "Update finished"
                 echo "Failed to update 'fedora base', continuing with last known good cache"
             else
                 echo "Update finished"
@@ -157,19 +172,19 @@ function fedora_download() {
     cp /etc/yum.conf $INSTALL_ROOT/etc/
     cp /etc/yum.repos.d/fedora* $INSTALL_ROOT/etc/yum.repos.d/
 
     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
+    # append fedora repo files with desired ${fedora_release} and $basearch
     for f in $INSTALL_ROOT/etc/yum.repos.d/* ; do
     for f in $INSTALL_ROOT/etc/yum.repos.d/* ; do
-      sed -i "s/\$basearch/$arch/g; s/\$releasever/$release/g;" $f
+      sed -i "s/\$basearch/$arch/g; s/\$releasever/${fedora_release}/g;" $f
     done 
 
     done 
 
-    MIRROR_URL=$FEDORA_MIRROR_BASE/releases/$release/Everything/$arch/os
-    RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-$release-1.noarch.rpm"
+    MIRROR_URL=$FEDORA_MIRROR_BASE/releases/${fedora_release}/Everything/$arch/os
+    RELEASE_URL1="$MIRROR_URL/Packages/fedora-release-${fedora_release}-1.noarch.rpm"
     # with fedora18 the rpms are scattered by first name
     # first try the second version of fedora-release first
     # with fedora18 the rpms are scattered by first name
     # first try the second version of fedora-release first
-    RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-$release-2.noarch.rpm"
-    RELEASE_URL3="$MIRROR_URL/Packages/f/fedora-release-$release-1.noarch.rpm"
+    RELEASE_URL2="$MIRROR_URL/Packages/f/fedora-release-${fedora_release}-2.noarch.rpm"
+    RELEASE_URL3="$MIRROR_URL/Packages/f/fedora-release-${fedora_release}-1.noarch.rpm"
    
    
-    RELEASE_TARGET=$INSTALL_ROOT/fedora-release-$release.noarch.rpm
+    RELEASE_TARGET=$INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm
     found=""
     for attempt in $RELEASE_URL1 $RELEASE_URL2 $RELEASE_URL3; do
        if curl -f $attempt -o $RELEASE_TARGET ; then
     found=""
     for attempt in $RELEASE_URL1 $RELEASE_URL2 $RELEASE_URL3; do
        if curl -f $attempt -o $RELEASE_TARGET ; then
@@ -185,7 +200,7 @@ function fedora_download() {
     mkdir -p $INSTALL_ROOT/var/lib/rpm
     rpm --root $INSTALL_ROOT  --initdb
     # when installing f12 this apparently is already present, so ignore result
     mkdir -p $INSTALL_ROOT/var/lib/rpm
     rpm --root $INSTALL_ROOT  --initdb
     # when installing f12 this apparently is already present, so ignore result
-    rpm --root $INSTALL_ROOT -ivh $INSTALL_ROOT/fedora-release-$release.noarch.rpm || :
+    rpm --root $INSTALL_ROOT -ivh $INSTALL_ROOT/fedora-release-${fedora_release}.noarch.rpm || :
     # however f12 root images won't get created on a f18 host
     # (the issue here is the same as the one we ran into when dealing with a vs-box)
     # in a nutshell, in f12 the glibc-common and filesystem rpms have an apparent conflict
     # however f12 root images won't get created on a f18 host
     # (the issue here is the same as the one we ran into when dealing with a vs-box)
     # in a nutshell, in f12 the glibc-common and filesystem rpms have an apparent conflict
@@ -196,7 +211,7 @@ function fedora_download() {
     # 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)
 
     # 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"
+    YUM="yum --installroot=$INSTALL_ROOT --releasever=${fedora_release} --nogpgcheck -y"
     echo "$YUM install $FEDORA_PREINSTALLED"
     $YUM install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; }
 
     echo "$YUM install $FEDORA_PREINSTALLED"
     $YUM install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; }
 
@@ -212,6 +227,9 @@ function fedora_configure() {
     set -x
     set -e
 
     set -x
     set -e
 
+    lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
+
     # disable selinux in fedora
     mkdir -p $lxc_root/selinux
     echo 0 > $lxc_root/selinux/enforce
     # disable selinux in fedora
     mkdir -p $lxc_root/selinux
     echo 0 > $lxc_root/selinux/enforce
@@ -259,9 +277,9 @@ EOF
     mknod -m 666 ${dev_path}/ptmx c 5 2
 
     if [ "$(echo $fcdistro | cut -d"f" -f2)" -le "14" ]; then
     mknod -m 666 ${dev_path}/ptmx c 5 2
 
     if [ "$(echo $fcdistro | cut -d"f" -f2)" -le "14" ]; then
-       fedora_configure_init
+       fedora_configure_init $lxc
     else
     else
-       fedora_configure_systemd
+       fedora_configure_systemd $lxc
     fi
 
     guest_ifcfg=${lxc_root}/etc/sysconfig/network-scripts/ifcfg-$VIF_GUEST
     fi
 
     guest_ifcfg=${lxc_root}/etc/sysconfig/network-scripts/ifcfg-$VIF_GUEST
@@ -275,6 +293,9 @@ EOF
 function fedora_configure_init() {
     set -e
     set -x
 function fedora_configure_init() {
     set -e
     set -x
+    lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
+
     sed -i 's|.sbin.start_udev||' ${lxc_root}/etc/rc.sysinit
     sed -i 's|.sbin.start_udev||' ${lxc_root}/etc/rc.d/rc.sysinit
     # don't mount devpts, for pete's sake
     sed -i 's|.sbin.start_udev||' ${lxc_root}/etc/rc.sysinit
     sed -i 's|.sbin.start_udev||' ${lxc_root}/etc/rc.d/rc.sysinit
     # don't mount devpts, for pete's sake
@@ -288,6 +309,9 @@ function fedora_configure_init() {
 function fedora_configure_systemd() {
     set -e
     set -x
 function fedora_configure_systemd() {
     set -e
     set -x
+    lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
+
     # so ignore if we can't find /etc/systemd at all 
     [ -d ${lxc_root}/etc/systemd ] || return 0
     # otherwise let's proceed
     # so ignore if we can't find /etc/systemd at all 
     [ -d ${lxc_root}/etc/systemd ] || return 0
     # otherwise let's proceed
@@ -313,6 +337,7 @@ function fedora_configure_yum () {
     fcdistro=$1; shift
     pldistro=$1; shift
 
     fcdistro=$1; shift
     pldistro=$1; shift
 
+    lxc_root=$(lxcroot $lxc)
     # rpm --rebuilddb
     chroot ${lxc_root} $personality rpm --rebuilddb
 
     # rpm --rebuilddb
     chroot ${lxc_root} $personality rpm --rebuilddb
 
@@ -326,7 +351,7 @@ baseurl=$FEDORA_MIRROR_BASE/releases/\$releasever/Everything/\$basearch/os/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
 enabled=1
 metadata_expire=7d
 gpgcheck=1
-gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-${fedora_release}-primary
 
 [updates]
 name=Fedora \$releasever - \$basearch - Updates
 
 [updates]
 name=Fedora \$releasever - \$basearch - Updates
@@ -334,9 +359,13 @@ baseurl=$FEDORA_MIRROR_BASE/updates/\$releasever/\$basearch/
 enabled=1
 metadata_expire=7d
 gpgcheck=1
 enabled=1
 metadata_expire=7d
 gpgcheck=1
-gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-$release-primary
+gpgkey=$FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-${fedora_release}-primary
 EOF
 
 EOF
 
+    # import fedora key so that gpgckeck does not whine or require stdin
+    # required since fedora24
+    rpm --root $lxc_root --import $FEDORA_MIRROR_KEYS/RPM-GPG-KEY-fedora-${fedora_release}-primary
+
     # for using this script as a general-purpose lxc creation wrapper
     # just mention 'none' as the repo url
     if [ -n "$REPO_URL" ] ; then
     # for using this script as a general-purpose lxc creation wrapper
     # just mention 'none' as the repo url
     if [ -n "$REPO_URL" ] ; then
@@ -361,14 +390,17 @@ EOF
 }    
 
 ##############################
 }    
 
 ##############################
+# apparently ubuntu exposes a mirrors list by country at
+# http://mirrors.ubuntu.com/mirrors.txt
 # need to specify the right mirror for debian variants like ubuntu and the like
 function debian_mirror () {
     fcdistro=$1; shift
     case $fcdistro in
 # need to specify the right mirror for debian variants like ubuntu and the like
 function debian_mirror () {
     fcdistro=$1; shift
     case $fcdistro in
-       squeeze|wheezy|jessie) 
+       wheezy|jessie) 
            echo http://ftp2.fr.debian.org/debian/ ;;
            echo http://ftp2.fr.debian.org/debian/ ;;
-       oneiric|precise|quantal|raring|saucy|trusty|utopic) 
-           echo http://mir1.ovh.net/ubuntu/ubuntu/ ;;
+       precise|trusty|utopic|vivid|wily|xenial) 
+#          echo http://mir1.ovh.net/ubuntu/ubuntu/ ;;
+           echo http://www-ftp.lip6.fr/pub/linux/distributions/Ubuntu/archive/ ;;
        *) echo unknown distro $fcdistro; exit 1;;
     esac
 }
        *) echo unknown distro $fcdistro; exit 1;;
     esac
 }
@@ -377,10 +409,11 @@ function debian_install () {
     set -e
     set -x
     lxc=$1; shift
     set -e
     set -x
     lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
     mkdir -p $lxc_root
     arch=$(canonical_arch $personality $fcdistro)
     mirror=$(debian_mirror $fcdistro)
     mkdir -p $lxc_root
     arch=$(canonical_arch $personality $fcdistro)
     mirror=$(debian_mirror $fcdistro)
-    debootstrap --arch $arch $fcdistro $lxc_root $mirror
+    debootstrap --no-check-gpg --arch $arch $fcdistro $lxc_root $mirror
     # just like with fedora we ensure a few packages get installed as well
     # not started yet
     #virsh -c lxc:/// lxc-enter-namespace $lxc /usr/bin/$personality /bin/bash -c "apt-get update"
     # just like with fedora we ensure a few packages get installed as well
     # not started yet
     #virsh -c lxc:/// lxc-enter-namespace $lxc /usr/bin/$personality /bin/bash -c "apt-get update"
@@ -427,15 +460,22 @@ function setup_lxc() {
     pldistro=$1; shift
     personality=$1; shift
 
     pldistro=$1; shift
     personality=$1; shift
 
+    lxc_root=$(lxcroot $lxc)
+
     # create lxc container 
     
     pkg_method=$(package_method $fcdistro)
     case $pkg_method in
        yum)
             if [ -z "$IMAGE" ]; then
     # create lxc container 
     
     pkg_method=$(package_method $fcdistro)
     case $pkg_method in
        yum)
             if [ -z "$IMAGE" ]; then
-                fedora_install ||  { echo "failed to install fedora root image"; exit 1 ; }
+                fedora_install $lxc ||  { echo "failed to install fedora root image"; exit 1 ; }
+               # this appears to be safer; observed in Jan. 2016 on a f23 host and a f14 cached image
+               # we were getting this message when attempting the first chroot yum install
+               # rpmdb: Program version 4.8 doesn't match environment version 5.3
+               chroot $(lxcroot $lxc) $personality rm -rf /var/lib/rpm/__db.00{0,1,2,3,4,5,6,7,8,9}
+               chroot $(lxcroot $lxc) $personality rpm --rebuilddb
             fi
             fi
-           fedora_configure || { echo "failed to configure fedora for a container"; exit 1 ; }
+           fedora_configure $lxc || { echo "failed to configure fedora for a container"; exit 1 ; }
            ;;
        debootstrap)
             if [ -z "$IMAGE" ]; then
            ;;
        debootstrap)
             if [ -z "$IMAGE" ]; then
@@ -486,6 +526,7 @@ function setup_lxc() {
 
 function write_lxc_xml_publicip () {
     lxc=$1; shift
 
 function write_lxc_xml_publicip () {
     lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
     cat <<EOF
 <domain type='lxc'>
   <name>$lxc</name>
     cat <<EOF
 <domain type='lxc'>
   <name>$lxc</name>
@@ -521,6 +562,7 @@ EOF
 # grant build guests the ability to do mknods
 function write_lxc_xml_natip () { 
     lxc=$1; shift
 # grant build guests the ability to do mknods
 function write_lxc_xml_natip () { 
     lxc=$1; shift
+    lxc_root=$(lxcroot $lxc)
     cat <<EOF
 <domain type='lxc'>
   <name>$lxc</name>
     cat <<EOF
 <domain type='lxc'>
   <name>$lxc</name>
@@ -594,6 +636,8 @@ function devel_or_test_tools () {
     pldistro=$1; shift
     personality=$1; shift
 
     pldistro=$1; shift
     personality=$1; shift
 
+    lxc_root=$(lxcroot $lxc)
+
     pkg_method=$(package_method $fcdistro)
 
     pkgsfile=$(pl_locateDistroFile $DIRNAME $pldistro $PREINSTALLED)
     pkg_method=$(package_method $fcdistro)
 
     pkgsfile=$(pl_locateDistroFile $DIRNAME $pldistro $PREINSTALLED)
@@ -610,10 +654,23 @@ function devel_or_test_tools () {
 
     case "$pkg_method" in
        yum)
 
     case "$pkg_method" in
        yum)
-           [ -n "$packages" ] && chroot ${lxc_root} $personality yum -y install $packages
+           # --allowerasing required starting with fedora24
+           #
+           has_dnf=""
+           chroot ${lxc_root} $personality dnf --version && has_dnf=true
+           if [ -n "$has_dnf" ]; then
+               echo "container has dnf - invoking with --allowerasing"
+               pkg_installer="dnf -y install --allowerasing"
+               grp_installer="dnf -y groupinstall --allowerasing"
+           else
+               echo "container has only yum"
+               pkg_installer="yum -y install"
+               grp_installer="yum -y groupinstall"
+           fi
+           [ -n "$packages" ] && chroot ${lxc_root} $personality $pkg_installer $packages
            for group_plus in $groups; do
                group=$(echo $group_plus | sed -e "s,+++, ,g")
            for group_plus in $groups; do
                group=$(echo $group_plus | sed -e "s,+++, ,g")
-               chroot ${lxc_root} $personality yum -y groupinstall "$group"
+               chroot ${lxc_root} $personality $grp_installer "$group"
            done
            # store current rpm list in /init-lxc.rpms in case we need to check the contents
            chroot ${lxc_root} $personality rpm -aq > $lxc_root/init-lxc.rpms
            done
            # store current rpm list in /init-lxc.rpms in case we need to check the contents
            chroot ${lxc_root} $personality rpm -aq > $lxc_root/init-lxc.rpms
@@ -647,8 +704,10 @@ function devel_or_test_tools () {
 function post_install () {
     lxc=$1; shift 
     personality=$1; shift
 function post_install () {
     lxc=$1; shift 
     personality=$1; shift
+    lxc_root=$(lxcroot $lxc)
     # setup localtime from the host
     cp /etc/localtime $lxc_root/etc/localtime
     # setup localtime from the host
     cp /etc/localtime $lxc_root/etc/localtime
+    sshd_disable_password_auth $lxc
     # post install hook
     [ -n "$NAT_MODE" ] && post_install_natip $lxc $personality || post_install_myplc $lxc $personality
     # start the VM unless specified otherwise
     # post install hook
     [ -n "$NAT_MODE" ] && post_install_natip $lxc $personality || post_install_myplc $lxc $personality
     # start the VM unless specified otherwise
@@ -663,6 +722,14 @@ function post_install () {
     fi
 }
 
     fi
 }
 
+# just in case, let's stay on the safe side
+function sshd_disable_password_auth () {
+    lxc=$1; shift 
+    lxc_root=$(lxcroot $lxc)
+    sed --in-place=.password -e 's,^#\?PasswordAuthentication.*,PasswordAuthentication no,' \
+       $lxc_root/etc/ssh/sshd_config
+}
+
 function post_install_natip () {
 
     set -x 
 function post_install_natip () {
 
     set -x 
@@ -671,6 +738,7 @@ function post_install_natip () {
 
     lxc=$1; shift
     personality=$1; shift
 
     lxc=$1; shift
     personality=$1; shift
+    lxc_root=$(lxcroot $lxc)
 
 ### From myplc-devel-native.spec
 # be careful to backslash $ in this, otherwise it's the root context that's going to do the evaluation
 
 ### From myplc-devel-native.spec
 # be careful to backslash $ in this, otherwise it's the root context that's going to do the evaluation
@@ -692,6 +760,7 @@ function post_install_myplc  () {
 
     lxc=$1; shift
     personality=$1; shift
 
     lxc=$1; shift
     personality=$1; shift
+    lxc_root=$(lxcroot $lxc)
 
 # be careful to backslash $ in this, otherwise it's the root context that's going to do the evaluation
     cat << EOF | chroot ${lxc_root} $personality bash -x
 
 # be careful to backslash $ in this, otherwise it's the root context that's going to do the evaluation
     cat << EOF | chroot ${lxc_root} $personality bash -x
@@ -710,23 +779,18 @@ PROFILE
 EOF
 }
 
 EOF
 }
 
+########################################
 # workaround for broken lxc-enter-namespace
 # workaround for broken lxc-enter-namespace
-# relies on virsh net-dhcp-leases
-# when successful we store result in /vservers/<container>/ipv4
-# because the lease expires afer a while 
-function guest_ipv4_cached_or_from_virsh_leases() {
+# 1st version was relying on virsh net-dhcp-leases
+# however this was too fragile, would not work for fedora14 containers
+# WARNING: this code is duplicated in lbuild-nightly.sh
+function guest_ipv4() {
     lxc=$1; shift
     lxc=$1; shift
-    network=default
-    
-    # place to cache result
-    cache=/vservers/$lxc/ipv4
-    ipv4=$(cat $cache 2> /dev/null)
-    [ -z "$ipv4" ] && ipv4=$(virsh net-dhcp-leases $network | sed -e 's,  *, ,g' | grep " $lxc " | grep ipv4 |  cut -d' ' -f6 | cut -d/ -f1)
-    echo $ipv4
-    # cache if needed
-    [ -n "$ipv4" -a ! -f $cache ] && echo $ipv4 > $cache
-    # always return 0
-    return 0
+
+    mac=$(virsh -c lxc:/// domiflist $lxc | egrep 'network|bridge' | awk '{print $5;}')
+    # sanity check
+    [ -z "$mac" ] && return 0
+    arp -en | grep "$mac" | awk '{print $1;}'
 }
 
 function wait_for_ssh () {
 }
 
 function wait_for_ssh () {
@@ -746,7 +810,7 @@ function wait_for_ssh () {
     counter=1
     while [ "$current_time" -lt "$stop_time" ] ; do
          echo "$counter-th attempt to reach sshd in container $lxc ..."
     counter=1
     while [ "$current_time" -lt "$stop_time" ] ; do
          echo "$counter-th attempt to reach sshd in container $lxc ..."
-        [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4_cached_or_from_virsh_leases $lxc)
+        [ -z "$guest_ip" ] && guest_ip=$(guest_ipv4 $lxc)
         [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip 'uname -i' && { 
                 success=true; echo "SSHD in container $lxc is UP on IP $guest_ip"; break ; } || :
          counter=$(($counter+1))
         [ -n "$guest_ip" ] && ssh -o "StrictHostKeyChecking no" $guest_ip 'uname -i' && { 
                 success=true; echo "SSHD in container $lxc is UP on IP $guest_ip"; break ; } || :
          counter=$(($counter+1))
@@ -822,7 +886,7 @@ function main () {
     # parse fixed arguments
     [[ -z "$@" ]] && usage
     lxc=$1 ; shift
     # parse fixed arguments
     [[ -z "$@" ]] && usage
     lxc=$1 ; shift
-    lxc_root=/vservers/$lxc
+    lxc_root=$(lxcroot $lxc)
 
     # rainchecks
     almost_empty $lxc_root || \
 
     # rainchecks
     almost_empty $lxc_root || \
@@ -838,7 +902,6 @@ function main () {
         rsync -a $IMAGE/ $lxc_root/
     fi
 
         rsync -a $IMAGE/ $lxc_root/
     fi
 
-
     # check we've exhausted the arguments
     [[ -n "$@" ]] && usage
 
     # check we've exhausted the arguments
     [[ -n "$@" ]] && usage
 
@@ -878,7 +941,7 @@ function main () {
     fi
 
     ##########
     fi
 
     ##########
-    release=$(echo $fcdistro | cut -df -f2)
+    fedora_release=$(echo $fcdistro | cut -df -f2)
 
     if [ "$personality" == "linux32" ]; then
         arch=i386
 
     if [ "$personality" == "linux32" ]; then
         arch=i386