Updated crt.sh and functions.
authorZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Thu, 3 Sep 2020 07:39:35 +0000 (09:39 +0200)
committerZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Thu, 3 Sep 2020 07:39:35 +0000 (09:39 +0200)
scripts/crt.sh
scripts/functions

index b526b397f1a05a744a380acef222b56b1d289ca8..824b8015b8581ed5f38f50d7438715a87c612d63 100755 (executable)
@@ -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)"
index 2cc4ba72b414a5a0a9652f24f53a0d2a7de9edef..908574dd1bd6a225cc7ca05f6861dfda49aa0d8f 100644 (file)
@@ -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