Updated scripts/c3.sh (added host specific c3d file handling).
authorZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Tue, 19 May 2026 10:41:22 +0000 (12:41 +0200)
committerZoltán Felleg <zoltan.felleg@userrendszerhaz.hu>
Tue, 19 May 2026 10:41:22 +0000 (12:41 +0200)
scripts/c3.sh

index 2e34dea67beed028c48c43f032cc76c28f959598..bb723049257f4c9bc18ae2367fa47a5ece06143b 100755 (executable)
@@ -61,7 +61,8 @@ copy_and_install()
     if [ "$FSTYPE" = "btrfs" ]
     then
         # each container modifies its own version
-        cp --archive $BASE_CONTAINER_PATH/rootfs/* $CONTAINER_BUILDROOT
+        cp --archive --reflink=always \
+            $BASE_CONTAINER_PATH/rootfs/* $CONTAINER_BUILDROOT
     else
         for FQ_DIRECTORY in $BASE_CONTAINER_PATH/rootfs/*
         do
@@ -123,6 +124,8 @@ copy_and_install()
                     --releasever=$DNF_RELEASEVER \
                     install $SPEC_PACKAGES
             fi
+            dnf --installroot=$CONTAINER_BUILDROOT \
+                list --installed >$CONTAINER_BUILDROOT/c3d/rpm.list
             dnf --assumeyes \
                 --config=$DNF_CONFIG \
                 --disablerepo=* \
@@ -231,16 +234,29 @@ populate_c3d()
 {
     echo "Creating and populating the container creation and configuration directory."
 
-    if [ -d $CONTAINER_SOURCE_PATH/c3d ]
+    if [ -d $CONTAINER_SOURCE_PATH/c3d ]
     then
-        cp --archive $CONTAINER_SOURCE_PATH/c3d $CONTAINER_BUILDROOT
-        find $CONTAINER_BUILDROOT/c3d -type d -print0 \
-            | xargs --null chmod 755
-        find $CONTAINER_BUILDROOT/c3d -type f -print0 \
-            | xargs --null chmod 644
-        chown --recursive root:root $CONTAINER_BUILDROOT/c3d
+        echo "No container creation and configuration directory, exiting." >&2
     fi
 
+    cp --archive $CONTAINER_SOURCE_PATH/c3d $CONTAINER_BUILDROOT
+    find $CONTAINER_BUILDROOT/c3d -type d -print0 \
+        | xargs --null chmod 755
+    find $CONTAINER_BUILDROOT/c3d -type f -print0 \
+        | xargs --null chmod 644
+    chown --recursive root:root $CONTAINER_BUILDROOT/c3d
+
+    TMP_FILE=$(mktemp)
+    find $CONTAINER_BUILDROOT/c3d -type f -name "*.$SHORT_HOSTNAME" >$TMP_FILE
+    cat $TMP_FILE | while read HOST_SPECIFIC_FQ_FILENAME
+    do
+        FQ_PATH=$(dirname $HOST_SPECIFIC_FQ_FILENAME)
+        GENERAL_FILENAME=$(basename $HOST_SPECIFIC_FQ_FILENAME .$SHORT_HOSTNAME)
+        mv $HOST_SPECIFIC_FQ_FILENAME $FQ_PATH/$GENERAL_FILENAME
+        rm --force $FQ_PATH/${GENERAL_FILENAME}.*
+    done
+    rm --force $TMP_FILE
+
     MODE_LIST=$CONTAINER_BUILDROOT/c3d/mode.txt
     if [ -f $MODE_LIST ]
     then
@@ -453,7 +469,7 @@ postinstall()
             RC=$?
             if [ $RC -ne 0 ]
             then
-                echo "File checksums differ, exiting" >&2
+                echo "File checksums differ, exiting." >&2
                 umount $CONTAINER_BUILDROOT/dev
                 umount $CONTAINER_BUILDROOT/proc
                 umount $CONTAINER_BUILDROOT/sys
@@ -634,6 +650,11 @@ create_environment_file
 create_and_populate_build_path
 
 populate_c3d
+RC=$?
+if [ $RC -ne 0 ]
+then
+    exit $RC
+fi
 
 preinstall