imagename=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE filename)
imageversion=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $BUILD_ROOT/$TOPDIR/SOURCES/$SPECFILE version)
# prepare rpms as source and createrepo on the repositories
- if test -d $BUILD_ROOT/$TOPDIR/SOURCES/repos ; then
- (
- ln -sf $TOPDIR/SOURCES/repos $BUILD_ROOT/repos
- cd $BUILD_ROOT/$TOPDIR/SOURCES/repos
- for r in */* ; do
- test -L $r && continue
- test -d $r || continue
- repo="$TOPDIR/SOURCES/repos/$r/"
- # create compatibility link for old kiwi versions
- rc="${r//:/:/}"
- if test "$rc" != "$r" ; then
- rl="${rc//[^\/]}"
- rl="${rl//?/../}"
- mkdir -p "${rc%/*}"
- ln -s $rl$r "${rc%/*}/${rc##*/}"
- repo="$TOPDIR/SOURCES/repos/${rc%/*}/${rc##*/}/"
- fi
- if test "$imagetype" != product ; then
- echo "creating repodata for $repo"
+ ln -sf $TOPDIR/SOURCES/repos $BUILD_ROOT/repos
+ cd $BUILD_ROOT/$TOPDIR/SOURCES/repos
+ for r in */* ; do
+ test -L $r && continue
+ test -d $r || continue
+ repo="$TOPDIR/SOURCES/repos/$r/"
+ # create compatibility link for old kiwi versions
+ rc="${r//:/:/}"
+ if test "$rc" != "$r" ; then
+ rl="${rc//[^\/]}"
+ rl="${rl//?/../}"
+ mkdir -p "${rc%/*}"
+ ln -s $rl$r "${rc%/*}/${rc##*/}"
+ repo="$TOPDIR/SOURCES/repos/${rc%/*}/${rc##*/}/"
+ fi
+ if test "$imagetype" != product -a "$DO_INIT" != "false" ; then
+ echo "creating repodata for $repo"
+ if chroot $BUILD_ROOT createrepo --simple-md-filenames --help >/dev/null 2>&1 ; then
+ chroot $BUILD_ROOT createrepo --simple-md-filenames "$repo"
+ else
chroot $BUILD_ROOT createrepo "$repo"
fi
- done
- )
- fi
+ fi
+ done
# unpack root tar
for t in $BUILD_ROOT/$TOPDIR/SOURCES/root.tar* ; do
test -f $t || continue
fi
rm -f $BUILD_ROOT/$TOPDIR/SOURCES/config.xml
ln -s $SPECFILE $BUILD_ROOT/$TOPDIR/SOURCES/config.xml
- chroot $BUILD_ROOT su -c "kiwi --version" -
if test "$imagetype" = product ; then
echo "running kiwi --create-instsource..."
# runs always as abuild user
mkdir -p "$BUILD_ROOT/$TOPDIR/KIWIROOT"
chroot "$BUILD_ROOT" chown -R abuild.abuild "$TOPDIR"
- # --instsource-local is only needed for openSUSE 11.1 and SLE 11 SP0 kiwi.
- chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v -v --logfile terminal -p $TOPDIR/SOURCES --instsource-local --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
-### This block is obsolete with current kiwi versions, only needed for kiwi 3.01 version
-# for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
-# test -d "$i" || continue
-# n="${i##*/}"
-# test "$n" = scripts && continue
-# test "$n" != "${n%0}" && continue
-# chroot $BUILD_ROOT su -c "suse-isolinux $TOPDIR/KIWIROOT/main/$n $TOPDIR/KIWI/$n.iso" - $BUILD_USER
-# done
+ ver=`chroot "$BUILD_ROOT" su -c "/usr/sbin/kiwi --version | sed -n 's,.*kiwi version v\(.*\),\1,p'"`
+ if [ ${ver:0:1} == "3" ]; then
+ # old style kiwi 3 builds
+ chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v --logfile terminal -p $TOPDIR/SOURCES --instsource-local --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
+ if [ ${ver:2:2} == "01" ]; then
+ ## This block is obsolete with current kiwi versions, only needed for kiwi 3.01 version
+ for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
+ test -d "$i" || continue
+ n="${i##*/}"
+ test "$n" = scripts && continue
+ test "$n" != "${n%0}" && continue
+ chroot $BUILD_ROOT su -c "suse-isolinux $TOPDIR/KIWIROOT/main/$n $TOPDIR/KIWI/$n.iso" - $BUILD_USER
+ done
+ fi
+ else
+ if [ ${ver:0:1} == "4" -a ${ver:2:2} -lt 90 ]; then
+ # broken kiwi version, not accepting verbose level
+ chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v -v --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
+ else
+ # current default
+ chroot "$BUILD_ROOT" su -c "APPID=- LANG=POSIX /usr/sbin/kiwi --root $TOPDIR/KIWIROOT -v 2 --logfile terminal -p $TOPDIR/SOURCES --create-instsource $TOPDIR/SOURCES" - abuild < /dev/null && BUILD_SUCCEEDED=true
+ fi
+ fi
# move created product to correct destination
for i in $BUILD_ROOT/$TOPDIR/KIWIROOT/main/* ; do
if test -n "$RELEASE"; then
buildnum="-Build$RELEASE"
fi
+ imageout="$imagename.$imagearch-$imageversion"
for imgtype in $imagetype ; do
case "$imgtype" in
oem)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-oem > /dev/null
- echo "compressing images... "
- tar cvjfS $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-raw.tar.bz2 \
- --exclude=$imagename.$imagearch-$imageversion.iso \
- --exclude=$imagename.$imagearch-$imageversion.raw \
- * || cleanup_and_exit 1
- sha1sum $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-raw.tar.bz2 \
- > "$BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-raw.tar.bz2.sha1" || cleanup_and_exit 1
- if [ -e $imagename.$imagearch-$imageversion.iso ]; then
- echo "Copy iso file and create sha1..."
- mv $imagename.$imagearch-$imageversion.iso \
- $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum.iso || cleanup_and_exit 1
- pushd $BUILD_ROOT/$TOPDIR/KIWI > /dev/null
- sha1sum $imagename.$imagearch-$imageversion$buildnum.iso \
- > "$imagename.$imagearch-$imageversion$buildnum.iso.sha1" || cleanup_and_exit 1
- popd > /dev/null
- fi
- if [ -e $imagename.$imagearch-$imageversion.raw ]; then
- echo "Copy raw file and create sha1..."
- mv $imagename.$imagearch-$imageversion.raw \
- $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum.raw || cleanup_and_exit 1
- pushd $BUILD_ROOT/$TOPDIR/KIWI > /dev/null
- bzip2 $imagename.$imagearch-$imageversion$buildnum.raw && \
- sha1sum $imagename.$imagearch-$imageversion$buildnum.raw.bz2 \
- > "$imagename.$imagearch-$imageversion$buildnum.raw.bz2.sha1" || cleanup_and_exit 1
- popd > /dev/null
- fi
- popd > /dev/null
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing oem images... "
+cd /$TOPDIR/KIWI-oem
+# do not store compressed file _and_ uncompressed one
+[ -e "$imageout.gz" ] && rm -f "$imageout"
+if [ -e "$imageout.iso" ]; then
+ echo "take iso file and create sha256..."
+ mv "$imageout.iso" "/$TOPDIR/KIWI/$imageout$buildnum.iso"
+ pushd /$TOPDIR/KIWI
+ if [ -x /usr/bin/sha256sum ]; then
+ /usr/bin/sha256sum "$imageout$buildnum.iso" > "$imageout$buildnum.iso.sha256"
+ fi
+ popd
+fi
+if [ -e "$imageout.qcow2" ]; then
+ mv "$imageout.qcow2" "/$TOPDIR/KIWI/$imageout$buildnum.qcow2"
+ pushd /$TOPDIR/KIWI
+ if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 file..."
+ /usr/bin/sha256sum "$imageout$buildnum.qcow2" > "$imageout$buildnum.qcow2.sha256"
+ fi
+ popd
+fi
+if [ -e "$imageout.raw" ]; then
+ compress_tool="bzip2"
+ compress_suffix="bz2"
+ if [ -x /usr/bin/xz ]; then
+ # take xz to get support for sparse files
+ compress_tool="xz -2"
+ compress_suffix="xz"
+ fi
+ mv "$imageout.raw" "/$TOPDIR/KIWI/$imageout$buildnum.raw"
+ pushd /$TOPDIR/KIWI
+ echo "\$compress_tool raw file..."
+ \$compress_tool "$imageout$buildnum.raw"
+ if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 file..."
+ /usr/bin/sha256sum "$imageout$buildnum.raw.\${compress_suffix}" > "$imageout$buildnum.raw.\${compress_suffix}.sha256"
+ fi
+ popd
+fi
+
+tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-raw.tar.bz2" \
+ --exclude="$imageout.iso" --exclude="$imageout.raw" --exclude="$imageout.qcow2" *
+cd /$TOPDIR/KIWI
+if [ -x /usr/bin/sha256sum ]; then
+ /usr/bin/sha256sum "$imageout$buildnum-raw.tar.bz2" > "$imageout$buildnum-raw.tar.bz2.sha256"
+fi
+EOF
;;
vmx)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-vmx > /dev/null
- echo "compressing images... "
- # This option has a number of format parameters
- FILES=""
- for i in $imagename.$imagearch-$imageversion.vmx $imagename.$imagearch-$imageversion.vmdk $imagename.$imagearch-$imageversion.ovf \
- $imagename.$imagearch-$imageversion-disk*.vmdk $imagename.$imagearch-$imageversion.raw $imagename.$imagearch-$imageversion.xenconfig; do
- ls $i >& /dev/null && FILES="$FILES $i"
- done
- tar cvjfS $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-vmx.tar.bz2 \
- $FILES || cleanup_and_exit 1
- sha1sum $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-vmx.tar.bz2 \
- > "$BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-vmx.tar.bz2.sha1" || cleanup_and_exit 1
- popd > /dev/null
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing vmx images... "
+cd /$TOPDIR/KIWI-vmx
+for suffix in "ovf" "qcow2"; do
+ if [ -e "$imageout.\$suffix" ]; then
+ mv "$imageout.\$suffix" "/$TOPDIR/KIWI/$imageout$buildnum.\$suffix"
+ pushd /$TOPDIR/KIWI
+ if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 \$suffix file..."
+ /usr/bin/sha256sum "$imageout$buildnum.\$suffix" > "$imageout$buildnum.\$suffix.sha256"
+ fi
+ popd
+ fi
+done
+# This option has a number of format parameters
+VMXFILES=""
+SHAFILES=""
+for i in "$imageout.vmx" "$imageout.vmdk" "$imageout-disk*.vmdk"; do
+ test -e \$i && VMXFILES="\$VMXFILES \$i"
+done
+# take raw files as fallback
+if [ -z "\$VMXFILES" ]; then
+ test -e "$imageout.raw" && VMXFILES="$imageout.raw"
+fi
+if [ -n "\$VMXFILES" ]; then
+ tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" \$VMXFILES
+ SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2"
+fi
+if [ -e "$imageout.xenconfig" ]; then
+ tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" $imageout.xenconfig $imageout.raw initrd-*
+ SHAFILES="\$SHAFILES $imageout$buildnum-vmx.tar.bz2"
+fi
+# FIXME: do we need a single .raw file in any case ?
+
+cd /$TOPDIR/KIWI
+if [ -n "\$SHAFILES" -a -x /usr/bin/sha256sum ]; then
+ for i in \$SHAFILES; do
+ echo "Create sha256 file..."
+ /usr/bin/sha256sum "\$i" > "\$i.sha256"
+ done
+fi
+EOF
;;
xen)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-xen > /dev/null
- echo "compressing images... "
- tar cvjfS $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-xen.tar.bz2 \
- `grep ^kernel $imagename.$imagearch-$imageversion.xenconfig | cut -d'"' -f2` \
- `grep ^ramdisk $imagename.$imagearch-$imageversion.xenconfig | cut -d'"' -f2` \
- $imagename.$imagearch-$imageversion.xenconfig \
- $imagename.$imagearch-$imageversion || cleanup_and_exit 1
- popd > /dev/null
- sha1sum $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-xen.tar.bz2 \
- > "$BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-xen.tar.bz2.sha1" || cleanup_and_exit 1
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing xen images... "
+cd /$TOPDIR/KIWI-xen
+# do not store compressed file _and_ uncompressed one
+[ -e "$imageout.gz" ] && rm -f "$imageout"
+tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-xen.tar.bz2" \
+ `grep ^kernel $imageout.xenconfig | cut -d'"' -f2` \
+ `grep ^ramdisk $imageout.xenconfig | cut -d'"' -f2` \
+ initrd-* \
+ "$imageout.xenconfig" \
+ "$imageout"
+if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 file..."
+ cd $TOPDIR/KIWI
+ /usr/bin/sha256sum "$imageout$buildnum-xen.tar.bz2" > "$imageout$buildnum-xen.tar.bz2.sha256"
+fi
+EOF
;;
pxe)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-pxe > /dev/null
- echo "compressing images... "
- tar cvjfS $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-pxe.tar.bz2 \
- $imagename.$imagearch-$imageversion* \
- initrd-* || cleanup_and_exit 1
- popd > /dev/null
- sha1sum $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-pxe.tar.bz2 \
- > "$BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-pxe.tar.bz2.sha1" || cleanup_and_exit 1
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing pxe images... "
+cd /$TOPDIR/KIWI-pxe
+# do not store compressed file _and_ uncompressed one
+[ -e "$imageout.gz" ] && rm -f "$imageout"
+tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-pxe.tar.bz2" ${imageout}* initrd-*
+if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 file..."
+ cd $TOPDIR/KIWI
+ /usr/bin/sha256sum "$imageout$buildnum-pxe.tar.bz2" > "$imageout$buildnum-pxe.tar.bz2.sha256"
+fi
+EOF
;;
iso)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-iso > /dev/null
- echo "creating sha1 sum for iso images... "
- for i in *.iso; do
- pushd $BUILD_ROOT/$TOPDIR/KIWI/ > /dev/null
- mv $BUILD_ROOT/$TOPDIR/KIWI-iso/$i ${i%.iso}$buildnum.iso || cleanup_and_exit 1
- sha1sum ${i%.iso}$buildnum.iso > ${i%.iso}$buildnum.iso.sha1 || cleanup_and_exit 1
- popd > /dev/null
- done
- popd > /dev/null
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+cd /$TOPDIR/KIWI-iso
+for i in *.iso; do
+ mv "\$i" "/$TOPDIR/KIWI/\${i%.iso}$buildnum.iso"
+done
+if [ -x /usr/bin/sha256sum ]; then
+ echo "creating sha256 sum for iso images... "
+ cd $TOPDIR/KIWI
+ for i in *.iso; do
+ /usr/bin/sha256sum "\$i" > "\$i.sha256"
+ done
+fi
+EOF
+ ;;
+ tbz)
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+cd /$TOPDIR/KIWI-tbz
+for i in *.tbz; do
+ file=\$(readlink -f "\$i")
+ [ -z "\$file" ] && echo readlink failed for $i
+ mv "\$file" "/$TOPDIR/KIWI/\${i%.tbz}$buildnum.tbz"
+done
+if [ -x /usr/bin/sha256sum ]; then
+ echo "creating sha256 sum for tar balls... "
+ cd $TOPDIR/KIWI
+ for i in *.tbz; do
+ /usr/bin/sha256sum "\$i" > "\$i.sha256"
+ done
+fi
+EOF
;;
*)
- pushd $BUILD_ROOT/$TOPDIR/KIWI-$imgtype > /dev/null
- echo "compressing unkown images... "
- tar cvjfS $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-$imgtype.tar.bz2 \
- * || cleanup_and_exit 1
- sha1sum $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-$imgtype.tar.bz2 \
- > $BUILD_ROOT/$TOPDIR/KIWI/$imagename.$imagearch-$imageversion$buildnum-$imgtype.tar.bz2.sha1 || cleanup_and_exit 1
- popd > /dev/null
+ cat > $BUILD_ROOT/kiwi_post.sh << EOF
+echo "compressing unkown images... "
+cd /$TOPDIR/KIWI-$imgtype
+# do not store compressed file _and_ uncompressed one
+[ -e "$imageout.gz" ] && rm -f "$imageout"
+tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-$imgtype.tar.bz2" *
+if [ -x /usr/bin/sha256sum ]; then
+ echo "Create sha256 file..."
+ cd /$TOPDIR/KIWI
+ /usr/bin/sha256sum "$imageout$buildnum-$imgtype.tar.bz2" > "$imageout$buildnum-$imgtype.tar.bz2.sha256"
+fi
+EOF
;;
esac
+ chroot $BUILD_ROOT su -c "sh -e /kiwi_post.sh" || cleanup_and_exit 1
+ rm -f $BUILD_ROOT/kiwi_post.sh
done
fi
+ # Hook for running post kiwi build scripts like QA scripts if installed
+ if [ -x $BUILD_ROOT/usr/lib/build/kiwi_post_run ]; then
+ chroot $BUILD_ROOT su -c /usr/lib/build/kiwi_post_run || cleanup_and_exit 1
+ fi
}