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 #
################################################################
# 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 #
;;
"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=* \
# 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 #
# 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)"
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
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
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
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
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