if test -n "$RUNNING_IN_VM" ; then
cd /
if test -n "$VM_SWAP" -a -e "$VM_SWAP" ; then
- swapoff "$VM_SWAP"
+ swapoff "$VM_SWAP" 2>/dev/null
echo -n "BUILDSTATUS$1" >"$VM_SWAP"
fi
exec >&0 2>&0 # so that the logging tee finishes
SRCDIR="${SPECFILE%/*}"
SPECFILE="${SPECFILE##*/}"
+ BUILDTYPE=
+ case $SPECFILE in
+ *.spec) BUILDTYPE=spec ;;
+ *.dsc) BUILDTYPE=dsc ;;
+ *.kiwi) BUILDTYPE=kiwi ;;
+ esac
+ if test -z "$BUILDTYPE" ; then
+ echo "don't know how to build $SPECFILE"
+ cleanup_and_exit 1
+ fi
+
cd "$SRCDIR"
if [ -z "$RUNNING_IN_VM" ]; then
echo "assuming dist $BUILD_DIST"
fi
- if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+ if test "$BUILDTYPE" = spec ; then
TOPDIR=`chroot $BUILD_ROOT rpm --eval '%_topdir'`
else
TOPDIR=/usr/src/packages
egrep '^#[ ]*norootforbuild[ ]*$' >/dev/null <$SPECFILE && BUILD_USER=abuild
fi
test -n "$NOROOTFORBUILD" && BUILD_USER=abuild
+ test "$BUILDTYPE" = kiwi && BUILD_USER=root
+
if test $BUILD_USER = abuild ; then
if ! egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then
echo 'abuild::399:399:Autobuild:/home/abuild:/bin/bash' >>$BUILD_ROOT/etc/passwd
test $BUILD_USER = abuild && chown 399:399 $BUILD_ROOT$TOPDIR/$i
done
test -e $BUILD_ROOT/exit && cleanup_and_exit
+
mkdir -p $BUILD_ROOT$TOPDIR/SOURCES
- cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+ if test "$BUILDTYPE" = kiwi ; then
+ mkdir -p $BUILD_ROOT$TOPDIR/KIWI
+ if test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then
+ mv "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+ else
+ cp -a "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+ fi
+ else
+ cp -p "$MYSRCDIR"/* $BUILD_ROOT$TOPDIR/SOURCES/
+ fi
test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir && rm -rf "$MYSRCDIR"
CHANGELOGARGS=
test -n "$CHANGELOG" -a -f "$BUILD_ROOT/.build-changelog" && CHANGELOGARGS="--changelog $BUILD_ROOT/.build-changelog"
- if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+ if test "$BUILDTYPE" = spec ; then
# do buildrequires/release substitution
args=()
if test -n "$RELEASE"; then
fi
fi
- if test "$SPECFILE" != "${SPECFILE%.dsc}" ; then
+ if test "$BUILDTYPE" = dsc ; then
rm -rf $BUILD_ROOT$TOPDIR/BUILD
test $BUILD_USER = abuild && chown 399:399 $BUILD_ROOT$TOPDIR
DEB_TRANSFORM=
chroot $BUILD_ROOT su -c "dpkg-source -x $TOPDIR/SOURCES/$SPECFILE $TOPDIR/BUILD" - $BUILD_USER
fi
fi
+
if test $BUILD_USER = abuild ; then
chown -R 399:399 $BUILD_ROOT$TOPDIR/*
else
BUILD_SUCCEDED=false
- if test "$SPECFILE" = "${SPECFILE%.dsc}" ; then
+ if test "$BUILDTYPE" = spec ; then
test -z "$BUILD_RPM_BUILD_STAGE" && BUILD_RPM_BUILD_STAGE=-ba
# XXX: move _srcdefattr to macro file?
> $BUILD_ROOT/.build.command
chmod 755 $BUILD_ROOT/.build.command
chroot $BUILD_ROOT su -c /.build.command - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
- else
+ fi
+
+ if test "$BUILDTYPE" = dsc ; then
chroot $BUILD_ROOT su -c "cd $TOPDIR/BUILD && dpkg-buildpackage -us -uc -rfakeroot-tcp" - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
mkdir -p $BUILD_ROOT/$TOPDIR/DEBS
for DEB in $BUILD_ROOT/$TOPDIR/*.deb ; do
done
fi
+ if test "$BUILDTYPE" = kiwi ; then
+ chroot $BUILD_ROOT su -c "cd $TOPDIR/SOURCES && kiwi --prepare $TOPDIR/SOURCES --logfile /.build.log.prepare --root $TOPDIR/KIWIROOT" - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
+ chroot $BUILD_ROOT su -c "kiwi --create $TOPDIR/KIWIROOT --logfile /.build.log -d $TOPDIR/KIWI --type iso" - $BUILD_USER < /dev/null && BUILD_SUCCEDED=true
+ fi
+
test "$BUILD_SUCCEDED" = true || cleanup_and_exit 1
test -d "$SRCDIR" && cd "$SRCDIR"
done
$archs = '' unless defined $archs;
die("you must specfiy a depfile!\n") unless defined $rpmdeps;
-my @extradeps = grep {!/\.(?:spec|dsc)$/} @ARGV;
-my @specs = grep {/\.(?:spec|dsc)$/} @ARGV;
+my @extradeps = grep {!/\.(?:spec|dsc|kiwi)$/} @ARGV;
+my @specs = grep {/\.(?:spec|dsc|kiwi)$/} @ARGV;
die("can only work with at most one spec\n") if @specs > 1;
my $spec = $specs[0];
$subpacks = [];
if ($spec) {
- my $d = Build::parse($cf, $spec);
+ my $d;
+ if ($spec =~ /\.kiwi$/) {
+ # just set up kiwi root for now
+ $d = {
+ 'deps' => [ 'kiwi', 'zypper', 'createrepo' ],
+ 'subpacks' => [],
+ };
+ } else {
+ $d = Build::parse($cf, $spec);
+ }
$packname = $d->{'name'};
$packvers = $d->{'version'};
$subpacks = $d->{'subpacks'};