X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lbuild-initvm.sh;h=b0e732c4262982cf51c879e386f3f51fa0f06fc9;hb=4a63162c62e4ae7d6834b399ec3fd837ab4d9611;hp=e4d3c6afe300ec7dce8866a3855a8a430ae590f8;hpb=140ec07b8ce5a7f3994f1c0f14a22c8a04940691;p=build.git diff --git a/lbuild-initvm.sh b/lbuild-initvm.sh index e4d3c6af..b0e732c4 100755 --- a/lbuild-initvm.sh +++ b/lbuild-initvm.sh @@ -30,7 +30,7 @@ function lxcroot () { # XXX fixme : when creating a 32bits VM we need to call linux32 as appropriate...s -DEFAULT_FCDISTRO=f29 +DEFAULT_FCDISTRO=f33 DEFAULT_PLDISTRO=lxc DEFAULT_PERSONALITY=linux64 DEFAULT_MEMORY=3072 @@ -57,22 +57,21 @@ function gethostbyname () { # e.g. 21 -> 255.255.248.0 function masklen_to_netmask () { local masklen=$1; shift - python <=1 and masklen<=32): - print "Wrong masklen",masklen +masklen = $masklen +if not (1 <= masklen <= 32): + print("Wrong masklen", masklen) exit(1) -result=[] +result = [] for i in range(4): - if masklen>=8: + if masklen >= 8: result.append(8) - masklen-=8 + masklen -= 8 else: result.append(masklen) - masklen=0 -print ".".join([ str(256-2**(8-i)) for i in result ]) - + masklen = 0 +print(".".join([ str(256-2**(8-i)) for i in result ])) EOF } @@ -83,7 +82,7 @@ function package_method () { case $fcdistro in f[0-9]*|centos[0-9]*|sl[0-9]*) echo dnf ;; - wheezy|jessie|precise|trusty|utopic|vivid|wily|xenial) + wheezy|jessie|trusty|xenial|bionic) echo debootstrap ;; *) echo Unknown distro $fcdistro ;; @@ -182,9 +181,11 @@ function fedora_download() { cp /etc/yum.repos.d/fedora{,-updates}.repo $INSTALL_ROOT/etc/yum.repos.d/ # append fedora repo files with hardwired releasever and basearch - for f in $INSTALL_ROOT/etc/yum.repos.d/* ; do - sed -i "s/\$basearch/$arch/g; s/\$releasever/${fedora_release}/g;" $f - done + if [ -z "$USE_UPSTREAM_REPOS" ]; then + for f in $INSTALL_ROOT/etc/yum.repos.d/* ; do + sed -i "s/\$basearch/$arch/g; s/\$releasever/${fedora_release}/g;" $f + done + fi # looks like all this business about fetching fedora-release is not needed # it does @@ -225,7 +226,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) - DNF="dnf --installroot=$INSTALL_ROOT --nogpgcheck -y" + DNF="dnf --installroot=$INSTALL_ROOT --nogpgcheck -y --releasever=${fedora_release}" echo "$DNF install $FEDORA_PREINSTALLED" $DNF install $FEDORA_PREINSTALLED || { echo "Failed to download rootfs, aborting." ; return 1; } @@ -313,7 +314,8 @@ function fedora_configure_systemd() { ln -sf /dev/null ${lxc_root}/etc/systemd/system/"getty@.service" rm -f ${lxc_root}/etc/systemd/system/getty.target.wants/*service || : # can't seem to handle this one with systemctl - chroot ${lxc_root} $personality chkconfig network on +# second part should trigger starting with fedora31, where the network target is not manually manageable + chroot ${lxc_root} $personality chkconfig network on || chroot ${lxc_root} $personality systemctl enable NetworkManager } # overwrite container yum config @@ -330,23 +332,23 @@ function fedora_configure_yum () { # rpm --rebuilddb chroot ${lxc_root} $personality rpm --rebuilddb - echo "Initializing yum.repos.d in $lxc" - rm -f $lxc_root/etc/yum.repos.d/* - - # use mirroring/ stuff instead of a hard-wired config - local repofile=$lxc_root/etc/yum.repos.d/building.repo - yumconf_mirrors $repofile ${DIRNAME} $fcdistro \ - "" $FEDORA_MIRROR - # the keys stuff requires adjustment though - sed -i $repofile -e s,'gpgkey=.*',"gpgkey=${FEDORA_MIRROR_KEYS}/RPM-GPG-KEY-fedora-${fedora_release}-primary," + if [ -z "$USE_UPSTREAM_REPOS" ]; then + echo "Initializing yum.repos.d in $lxc" + rm -f $lxc_root/etc/yum.repos.d/* + # use mirroring/ stuff instead of a hard-wired config + local repofile=$lxc_root/etc/yum.repos.d/building.repo + yumconf_mirrors $repofile ${DIRNAME} $fcdistro "" $FEDORA_MIRROR + # the keys stuff requires adjustment though + sed -i $repofile -e s,'gpgkey=.*',"gpgkey=${FEDORA_MIRROR_KEYS}/RPM-GPG-KEY-fedora-${fedora_release}-primary," + fi # 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 + if [ -n "$MYPLC_REPO_URL" ] ; then if [ ! -d $lxc_root/etc/yum.repos.d ] ; then echo "WARNING : cannot create myplc repo" else @@ -359,7 +361,7 @@ function fedora_configure_yum () { cat > $lxc_root/etc/yum.repos.d/myplc.repo <& /dev/null && \ @@ -872,9 +881,13 @@ function main () { # if IMAGE, copy the provided rootfs to lxc_root if [ -n "$IMAGE" ] ; then - [ ! -d "$IMAGE" ] && \ - { echo "$IMAGE rootfs folder does not exist - exiting" ; exit 1 ; } - rsync -a $IMAGE/ $lxc_root/ + if [ ! -d "$IMAGE" ]; then + echo "$IMAGE rootfs folder does not exist - exiting" + exit 1 + else + echo "Copying $IMAGE into $lxc_root with rsync --archive --delete" + rsync --archive --delete $IMAGE/ $lxc_root/ + fi fi # check we've exhausted the arguments @@ -908,9 +921,9 @@ function main () { # as this command can be used in other contexts, not specifying # a repo is considered a warning # use -r none to get rid of this warning - if [ "$REPO_URL" == "none" ] ; then - REPO_URL="" - elif [ -z "$REPO_URL" ] ; then + if [ "$MYPLC_REPO_URL" == "none" ] ; then + MYPLC_REPO_URL="" + elif [ -z "$MYPLC_REPO_URL" ] ; then echo "WARNING -- setting up a yum repo is recommended" fi fi