exit 1
fi
-CONTAINER_NAME=$(basename $1)
-CONTAINER_OS=$(echo $CONTAINER_NAME | sed 's/^.*\.\([^\.]*\)$/\1/')
-CONTAINER_BASENAME=$(basename $CONTAINER_NAME .$CONTAINER_OS)
-case "$CONTAINER_OS" in
- "f30")
- DNF_RELEASEVER=30
- PREV_CONTAINER_OS="f29"
- ;;
- "f29")
- DNF_RELEASEVER=29
- PREV_CONTAINER_OS="f28"
- ;;
- *)
- echo "Unknown operating system: $CONTAINER_OS" >&2
- exit 1
- ;;
-esac
-
-SCRIPT_PATH=$(dirname $(realpath $0))
-BASE_PATH=$(dirname $SCRIPT_PATH)
-BACKUPS_PATH=$BASE_PATH/backups
-BUILD_PATH=$BASE_PATH/build
-FILESYSTEMS_PATH=$BASE_PATH/filesystems
-SOURCES_PATH=$BASE_PATH/sources
-
if [ -f /etc/lxc/lxc.conf ]
then
LXC_PATH=$(grep '^lxc.lxcpath' /etc/lxc/lxc.conf \
exit 1
fi
-CONTAINER_PATH=$LXC_PATH/$CONTAINER_NAME
-CONTAINER_BUILD_PATH=$BUILD_PATH/$CONTAINER_NAME
-CONTAINER_FILESYSTEMS_PATH=$FILESYSTEMS_PATH/$CONTAINER_NAME
-CONTAINER_SOURCE_PATH=$SOURCES_PATH/$CONTAINER_NAME
+SCRIPT_PATH=$(dirname $(realpath $0))
+BASE_PATH=$(dirname $SCRIPT_PATH)
+BACKUPS_PATH=$BASE_PATH/backups
+BUILD_PATH=$BASE_PATH/build
+FILESYSTEMS_PATH=$BASE_PATH/filesystems
+SOURCES_PATH=$BASE_PATH/sources
source $SCRIPT_PATH/functions
RC=$?
exit $RC
fi
+CONTAINER_BASENAME=$(basename $1)
+CONTAINER_FILESYSTEMS_PATH=$FILESYSTEMS_PATH/$CONTAINER_BASENAME
+CONTAINER_SOURCE_PATH=$SOURCES_PATH/$CONTAINER_BASENAME
+
################################################################
# exit if no source exists for the container #
################################################################
if [ ! -d $CONTAINER_SOURCE_PATH ]
then
- echo "No source found for $CONTAINER_NAME" >&2
+ echo "No source found for $CONTAINER_BASENAME" >&2
exit 1
fi
source $CONTAINER_SOURCE_PATH/envvars
+case "$DISTRIBUTION" in
+ "CentOS")
+ YUM_RELEASEVER=$DISTRIBUTION_VERSION
+ ;;
+ "Fedora")
+ DNF_RELEASEVER=$DISTRIBUTION_VERSION
+ ;;
+ *)
+ echo "Unknown distribution: $DISTRIBUTION" >&2
+ exit 1
+ ;;
+esac
+DISTRIBUTION_FIRST_CHAR=$(echo "$DISTRIBUTION" | cut -c 1 | tr '[A-Z]' '[a-z]')
+CONTAINER_OS="${DISTRIBUTION_FIRST_CHAR}$DISTRIBUTION_VERSION"
+PREV_DISTRIBUTION_VERSION=$(( $DISTRIBUTION_VERSION - 1 ))
+PREV_CONTAINER_OS="${DISTRIBUTION_FIRST_CHAR}$PREV_DISTRIBUTION_VERSION"
+
+CONTAINER_NAME="${CONTAINER_BASENAME}.$CONTAINER_OS"
+
+CONTAINER_PATH=$LXC_PATH/$CONTAINER_NAME
+CONTAINER_BUILD_PATH=$BUILD_PATH/$CONTAINER_NAME
+
################################################################
# exit if the container build directory already exists #
################################################################
################################################################
# install packages into the container #
################################################################
-DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora
-dnf --assumeyes \
- --config=$DNF_CONFIG \
- --disableplugin=fastestmirror \
- --disablerepo=* \
- --enablerepo=local-* \
- --installroot=$CONTAINER_BUILD_PATH/rootfs \
- --releasever=$DNF_RELEASEVER \
- install $BASE_PACKAGES $SPEC_PACKAGES
-dnf --assumeyes \
- --config=$DNF_CONFIG \
- --disableplugin=fastestmirror \
- --disablerepo=* \
- --enablerepo=local-* \
- --installroot=$CONTAINER_BUILD_PATH/rootfs \
- --releasever=$DNF_RELEASEVER \
- clean all
+case "$DISTRIBUTION" in
+ "CentOS")
+ YUM_CONFIG=$SCRIPT_PATH/yum.conf.centos
+ yum --assumeyes \
+ --config=$YUM_CONFIG \
+ --disableplugin=fastestmirror \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$YUM_RELEASEVER \
+ install $BASE_PACKAGES
+ if [ -n "$SPEC_PACKAGES" ]
+ then
+ yum --assumeyes \
+ --config=$YUM_CONFIG \
+ --disableplugin=fastestmirror \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$YUM_RELEASEVER \
+ install $SPEC_PACKAGES
+ fi
+ yum --assumeyes \
+ --config=$YUM_CONFIG \
+ --disableplugin=fastestmirror \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$YUM_RELEASEVER \
+ clean all
+ ;;
+ "Fedora")
+ DNF_CONFIG=$SCRIPT_PATH/dnf.conf.fedora
+ dnf --assumeyes \
+ --config=$DNF_CONFIG \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$DNF_RELEASEVER \
+ install $BASE_PACKAGES
+ dnf --assumeyes \
+ --config=$DNF_CONFIG \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$DNF_RELEASEVER \
+ install $SPEC_PACKAGES
+ dnf --assumeyes \
+ --config=$DNF_CONFIG \
+ --disablerepo=* \
+ --enablerepo=local-* \
+ --installroot=$CONTAINER_BUILD_PATH/rootfs \
+ --releasever=$DNF_RELEASEVER \
+ clean all
+ ;;
+esac
################################################################
# execute postinstall phase #
################################################################
# find the old container if it exists #
################################################################
-OLD_CONTAINER_NAME=
-lxc-ls --line | grep "^${CONTAINER_NAME}$" >/dev/null 2>&1
+lxc-ls -1 | grep "^${CONTAINER_NAME}$" >/dev/null 2>&1
if [ $? -eq 0 ]
then
OLD_CONTAINER_NAME=$CONTAINER_NAME
-fi
-if [ -z "$OLD_CONTAINER_NAME" ]
-then
+else
PREV_CONTAINER_NAME="${CONTAINER_BASENAME}.$PREV_CONTAINER_OS"
lxc-ls --line | grep "^${PREV_CONTAINER_NAME}$" >/dev/null 2>&1
if [ $? -eq 0 ]