From 7c6e377a09bb66877746f012c486aa80a7f42faa Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zolt=C3=A1n=20Felleg?= Date: Thu, 3 Sep 2020 09:39:35 +0200 Subject: [PATCH] Updated crt.sh and functions. --- scripts/crt.sh | 94 ++++++++++++++++++++++++++++++++--------------- scripts/functions | 25 ++++++++----- 2 files changed, 79 insertions(+), 40 deletions(-) diff --git a/scripts/crt.sh b/scripts/crt.sh index b526b39..824b801 100755 --- a/scripts/crt.sh +++ b/scripts/crt.sh @@ -80,6 +80,52 @@ fi echo "Starting at $(date)" +################################################################ +# find the old container if it exists # +################################################################ +lxc-ls -1 | grep "^${CONTAINER_NAME}$" >/dev/null 2>&1 +if [ $? -eq 0 ] +then + OLD_CONTAINER_NAME=$CONTAINER_NAME + OLD_CONTAINER_PATH=$LXC_PATH/$OLD_CONTAINER_NAME +else + PREV_CONTAINER_NAME="${CONTAINER_BASENAME}.$PREV_CONTAINER_OS" + lxc-ls -1 | grep "^${PREV_CONTAINER_NAME}$" >/dev/null 2>&1 + if [ $? -eq 0 ] + then + OLD_CONTAINER_NAME=$PREV_CONTAINER_NAME + OLD_CONTAINER_PATH=$LXC_PATH/$OLD_CONTAINER_NAME + fi +fi +OLD_CONTAINER_BACKUP_PATH=$BACKUPS_PATH/$OLD_CONTAINER_NAME + +################################################################ +# create the environment file # +################################################################ +ENV_FILE=$(mktemp) + +echo "SCRIPT_PATH=$SCRIPT_PATH" >>$ENV_FILE +echo "BASE_PATH=$BASE_PATH" >>$ENV_FILE +echo "BACKUPS_PATH=$BACKUPS_PATH" >>$ENV_FILE +echo "BUILD_PATH=$BUILD_PATH" >>$ENV_FILE +echo "FILESYSTEMS_PATH=$FILESYSTEMS_PATH" >>$ENV_FILE +echo "SOURCES_PATH=$SOURCES_PATH" >>$ENV_FILE +echo >>$ENV_FILE +echo "CONTAINER_BASENAME=$CONTAINER_BASENAME" >>$ENV_FILE +echo "CONTAINER_NAME=$CONTAINER_NAME" >>$ENV_FILE +echo "CONTAINER_OS=$CONTAINER_OS" >>$ENV_FILE +echo "CONTAINER_PATH=$CONTAINER_PATH" >>$ENV_FILE +echo "CONTAINER_BUILD_PATH=$CONTAINER_BUILD_PATH" >>$ENV_FILE +echo "CONTAINER_FILESYSTEMS_PATH=$CONTAINER_FILESYSTEMS_PATH" >>$ENV_FILE +echo "CONTAINER_SOURCE_PATH=$CONTAINER_SOURCE_PATH" >>$ENV_FILE +echo >>$ENV_FILE +#echo "DISTRIBUTION_FIRST_CHAR=$DISTRIBUTION_FIRST_CHAR" >>$ENV_FILE +#echo "PREV_DISTRIBUTION_VERSION=$PREV_DISTRIBUTION_VERSION" >>$ENV_FILE +#echo "PREV_CONTAINER_OS=$PREV_CONTAINER_OS" >>$ENV_FILE +echo "OLD_CONTAINER_NAME=$OLD_CONTAINER_NAME" >>$ENV_FILE +echo "OLD_CONTAINER_PATH=$OLD_CONTAINER_PATH" >>$ENV_FILE +echo "OLD_CONTAINER_BACKUP_PATH=$OLD_CONTAINER_BACKUP_PATH" >>$ENV_FILE + ################################################################ # create and populate the container build directory # ################################################################ @@ -100,9 +146,7 @@ fi # execute preinstall phase # ################################################################ echo "Executing preinstall phase." -preinstall $CONTAINER_NAME \ - $CONTAINER_BUILD_PATH/rootfs \ - $CONTAINER_SOURCE_PATH +preinstall $ENV_FILE ################################################################ # install packages into the container # @@ -140,6 +184,16 @@ case "$DISTRIBUTION" in ;; "Fedora") DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora + if [ -n "$ROOT_PACKAGES" ] + then + dnf --assumeyes \ + --config=$DNF_CONFIG \ + --disablerepo=* \ + --enablerepo=local-* \ + --installroot=$CONTAINER_BUILD_PATH/rootfs \ + --releasever=$DNF_RELEASEVER \ + install $ROOT_PACKAGES + fi dnf --assumeyes \ --config=$DNF_CONFIG \ --disablerepo=* \ @@ -168,30 +222,7 @@ esac # execute postinstall phase # ################################################################ echo "Executing postinstall phase." -postinstall $CONTAINER_NAME \ - $CONTAINER_BUILD_PATH/rootfs \ - $CONTAINER_SOURCE_PATH - -################################################################ -# find the old container if it exists # -################################################################ -lxc-ls -1 | grep "^${CONTAINER_NAME}$" >/dev/null 2>&1 -if [ $? -eq 0 ] -then - OLD_CONTAINER_NAME=$CONTAINER_NAME -else - PREV_CONTAINER_NAME="${CONTAINER_BASENAME}.$PREV_CONTAINER_OS" - lxc-ls --line | grep "^${PREV_CONTAINER_NAME}$" >/dev/null 2>&1 - if [ $? -eq 0 ] - then - OLD_CONTAINER_NAME=$PREV_CONTAINER_NAME - fi -fi -if [ -n "$OLD_CONTAINER_NAME" ] -then - OLD_CONTAINER_PATH=$LXC_PATH/$OLD_CONTAINER_NAME - OLD_CONTAINER_BACKUP_PATH=$BACKUPS_PATH/$OLD_CONTAINER_NAME -fi +postinstall $ENV_FILE ################################################################ # rename the backup of the old container if needed # @@ -252,8 +283,11 @@ lxc-wait --name=$CONTAINER_NAME --state=RUNNING # execute firstboot phase # ################################################################ echo "Executing firstboot phase." -firstboot $CONTAINER_NAME \ - $CONTAINER_PATH/rootfs \ - $CONTAINER_SOURCE_PATH +firstboot $ENV_FILE + +################################################################ +# remove the environment file # +################################################################ +rm -f $ENV_FILE echo "Finishing at $(date)" diff --git a/scripts/functions b/scripts/functions index 2cc4ba7..908574d 100644 --- a/scripts/functions +++ b/scripts/functions @@ -1,8 +1,9 @@ preinstall() { - CONTAINER_NAME=$1 - CONTAINER_ROOTFS=$2 - CONTAINER_SOURCE_PATH=$3 + ENV_FILE=$1 + + source $ENV_FILE + CONTAINER_ROOTFS=$CONTAINER_BUILD_PATH/rootfs if [ -d $CONTAINER_SOURCE_PATH/preinstall ] then @@ -10,7 +11,8 @@ preinstall() chmod 755 $CONTAINER_ROOTFS/preinstall/*.sh for SCRIPT in $CONTAINER_ROOTFS/preinstall/*.sh do - $SCRIPT $CONTAINER_NAME $CONTAINER_ROOTFS $CONTAINER_SOURCE_PATH + echo $SCRIPT $ENV_FILE + $SCRIPT $ENV_FILE done fi @@ -22,9 +24,10 @@ preinstall() postinstall() { - CONTAINER_NAME=$1 - CONTAINER_ROOTFS=$2 - CONTAINER_SOURCE_PATH=$3 + ENV_FILE=$1 + + source $ENV_FILE + CONTAINER_ROOTFS=$CONTAINER_BUILD_PATH/rootfs if [ -d $CONTAINER_SOURCE_PATH/postinstall ] then @@ -33,6 +36,7 @@ postinstall() for SCRIPT in $CONTAINER_ROOTFS/postinstall/*.sh do POSTINSTALL_SCRIPT=$(echo $SCRIPT | sed "s|^$CONTAINER_ROOTFS||") + echo chroot $CONTAINER_ROOTFS $POSTINSTALL_SCRIPT chroot $CONTAINER_ROOTFS $POSTINSTALL_SCRIPT done fi @@ -43,9 +47,10 @@ postinstall() firstboot() { - CONTAINER_NAME=$1 - CONTAINER_ROOTFS=$2 - CONTAINER_SOURCE_PATH=$3 + ENV_FILE=$1 + + source $ENV_FILE + CONTAINER_ROOTFS=$CONTAINER_PATH/rootfs if [ -d $CONTAINER_SOURCE_PATH/firstboot ] then -- 2.54.0