#!/bin/bash : ${TOPDIR:=/usr/src/packages} set -e set -u BUILD_DIR=/usr/lib/build BUILD_DISTURL= # To get BUILD_DISTURL test -f /.buildenv && . /.buildenv IMAGE_DIR=/usr/src/packages/KIWI [ -d $IMAGE_DIR ] || exit 0 cd $IMAGE_DIR # Setting default for SPEC_IN SPEC_IN=$BUILD_DIR/baseiso.spec.in # Overwrite default for SPEC_IN if _image.spec.in # exists in sources dir if [ -f $TOPDIR/SOURCES/baseiso.spec.in ];then SPEC_IN=$TOPDIR/SOURCES/baseiso.spec.in fi echo "Using $SPEC_IN as spec file template" ARCH="$(uname -m)" # We filter here currently only for agama-installer until we # have a clean way to specify it in kiwi build descriptions. # Alternative is that kiwi bundler get the containment # functionality. Needs to be discussed. set +e # we have set -e, so on Minimal VMs this needs to fail silently iso_file=`ls -1 /usr/src/packages/KIWI/agama-installer*.iso 2>/dev/null` pxe_file=`ls -1 /usr/src/packages/KIWI/agama-installer*.install.tar 2>/dev/null` set -e # nothing to do for us if [ -z "$iso_file" ] && [ -z "$pxe_file" ]; then exit 0 fi if [ -n "$pxe_file" ]; then PXEBOOT_BCOND="--with pxeboot" else PXEBOOT_BCOND="--without pxeboot" fi if [ -n "$iso_file" ]; then main_file=${iso_file##*/} else main_file=${pxe_file##*/} fi iso_name=${main_file%.$ARCH*} iso_version=${main_file#*$ARCH-} iso_version=${iso_version%.iso} iso_version=${iso_version%.tar} iso_build=${iso_version##*-Build} iso_version=${iso_version%-Build*} iso_flavor=${iso_version#*-} iso_version=${iso_version%-*} IMAGE=$iso_name [ -n "$iso_flavor" ] && FLAVOR=-$iso_flavor shopt -s nullglob shopt -s extglob echo "Attempting to wrap $IMAGE in a containment rpm ..." sed -e "s@__NAME__@$iso_name@g" \ -e "s@__FLAVOR__@$FLAVOR@g" \ -e "s@__VERSION__@$iso_version@g" \ -e "s@__RELEASE__@$iso_build@g" \ < $SPEC_IN \ > $BUILD_DIR/image.spec # Copy image changelog required for reproducible builds timestamps cp -v $TOPDIR/SOURCES/*.changes $BUILD_DIR/image.changes if [ -z "$BUILD_DISTURL" ]; then rpmbuild --target $ARCH -ba $PXEBOOT_BCOND $BUILD_DIR/image.spec else rpmbuild --target $ARCH -ba $PXEBOOT_BCOND --define "disturl $BUILD_DISTURL" $BUILD_DIR/image.spec fi # required for the BS to find the rpm, because it is # a "non-standard result file for KIWI" mkdir -p $TOPDIR/OTHER mv $TOPDIR/RPMS/$ARCH/baseiso-$iso_name$FLAVOR-$iso_version-$iso_build.$ARCH.rpm $TOPDIR/OTHER/ if [ -e $TOPDIR/RPMS/noarch/tftpboot-$iso_name$FLAVOR-$ARCH-$iso_version-$iso_build.noarch.rpm ]; then mv $TOPDIR/RPMS/noarch/tftpboot-$iso_name$FLAVOR-$ARCH-$iso_version-$iso_build.noarch.rpm $TOPDIR/OTHER/ fi mv $TOPDIR/SRPMS/baseiso-$iso_name$FLAVOR-$iso_version-$iso_build.src.rpm $TOPDIR/OTHER/