Hello community,
here is the log from the commit of package build for openSUSE:Factory checked in at 2012-07-02 11:49:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/build (Old)
and /work/SRC/openSUSE:Factory/.build.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "build", Maintainer is "mls@suse.com"
Changes:
--------
build-mkbaselibs-sle.changes: same change
--- /work/SRC/openSUSE:Factory/build/build.changes 2012-06-06 16:05:48.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.build.new/build.changes 2012-07-02 11:50:01.000000000 +0200
@@ -1,0 +2,11 @@
+Mon Jul 2 08:40:26 UTC 2012 - adrian@suse.de
+
+- preinstallimage support added
+
+-------------------------------------------------------------------
+Thu Jun 14 13:54:42 UTC 2012 - adrian@suse.de
+
+- build fixes for Fedora 17
+- syntax error fix for kiwi vmx builds
+
+-------------------------------------------------------------------
Old:
----
obs-build-2012.06.05.tar.gz
New:
----
obs-build-2012.07.02.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ build-initvm.spec ++++++
--- /var/tmp/diff_new_pack.hxZZB1/_old 2012-07-02 11:50:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hxZZB1/_new 2012-07-02 11:50:06.000000000 +0200
@@ -20,7 +20,7 @@
Summary: A Script to Build SUSE Linux RPMs
License: GPL-2.0+
Group: Development/Tools/Building
-Version: 2012.06.05
+Version: 2012.07.02
Release: 0
Source: obs-build-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ build-mkbaselibs-sle.spec ++++++
--- /var/tmp/diff_new_pack.hxZZB1/_old 2012-07-02 11:50:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hxZZB1/_new 2012-07-02 11:50:06.000000000 +0200
@@ -20,7 +20,7 @@
Summary: Tools to generate base lib packages
License: GPL-2.0+
Group: Development/Tools/Building
-Version: 2012.06.05
+Version: 2012.07.02
Release: 0
#!BuildIgnore: build-mkbaselibs
Provides: build-mkbaselibs
++++++ build.spec ++++++
--- /var/tmp/diff_new_pack.hxZZB1/_old 2012-07-02 11:50:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hxZZB1/_new 2012-07-02 11:50:06.000000000 +0200
@@ -20,7 +20,7 @@
Summary: A Script to Build SUSE Linux RPMs
License: GPL-2.0+ and GPL-2.0
Group: Development/Tools/Building
-Version: 2012.06.05
+Version: 2012.07.02
Release: 0
#!BuildIgnore: build-mkbaselibs
Source: obs-build-%{version}.tar.gz
++++++ _service ++++++
--- /var/tmp/diff_new_pack.hxZZB1/_old 2012-07-02 11:50:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hxZZB1/_new 2012-07-02 11:50:06.000000000 +0200
@@ -1,6 +1,6 @@
<services>
<service name="tar_scm" mode="disabled">
- <param name="version">2012.06.05</param>
+ <param name="version">2012.07.02</param>
<param name="url">git://github.com/openSUSE/obs-build.git</param>
<param name="scm">git</param>
</service>
++++++ build.dsc ++++++
--- /var/tmp/diff_new_pack.hxZZB1/_old 2012-07-02 11:50:06.000000000 +0200
+++ /var/tmp/diff_new_pack.hxZZB1/_new 2012-07-02 11:50:06.000000000 +0200
@@ -1,6 +1,6 @@
Format: 1.0
Source: build
-Version: 2012.06.05
+Version: 2012.07.02
Binary: build
Maintainer: Adrian Schroeter
Architecture: all
++++++ obs-build-2012.06.05.tar.gz -> obs-build-2012.07.02.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/Build/Rpm.pm new/obs-build-2012.07.02/Build/Rpm.pm
--- old/obs-build-2012.06.05/Build/Rpm.pm 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/Build/Rpm.pm 2012-07-02 10:41:12.000000000 +0200
@@ -539,7 +539,7 @@
$$nfbline = [$$nfbline, undef ];
}
}
- unshift @subpacks, $ret->{'name'};
+ unshift @subpacks, $ret->{'name'} if defined $ret->{'name'};
$ret->{'subpacks'} = \@subpacks;
$ret->{'exclarch'} = $exclarch if defined $exclarch;
$ret->{'badarch'} = $badarch if defined $badarch;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/Build.pm new/obs-build-2012.07.02/Build.pm
--- old/obs-build-2012.06.05/Build.pm 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/Build.pm 2012-07-02 10:41:12.000000000 +0200
@@ -31,6 +31,10 @@
}
}
+package Build::Features;
+our $preinstallimage = 1; # on sale now
+package Build;
+
my $std_macros = q{
%define nil
%define ix86 i386 i486 i586 i686 athlon
@@ -267,8 +271,10 @@
}
} elsif ($l0 eq 'repotype:') { #type of generated repository data
$config->{'repotype'} = [ @l ];
- } elsif ($l0 eq 'type:') { #kind of packaging system (spec, dsc or kiwi)
+ } elsif ($l0 eq 'type:') { #kind of packaging system (spec,dsc,arch,kiwi,...)
$config->{'type'} = $l[0];
+ } elsif ($l0 eq 'binarytype:') { #rpm,deb,arch,...
+ $config->{'binarytype'} = $l[0];
} elsif ($l0 eq 'patterntype:') { #kind of generated patterns in repository
$config->{'patterntype'} = [ @l ];
} elsif ($l0 eq 'release:') {
@@ -307,6 +313,12 @@
$config->{'type'} = 'UNDEFINED';
}
}
+ if (!$config->{'binarytype'}) {
+ $config->{'binarytype'} = 'rpm' if $config->{'type'} eq 'spec' || $config->{'type'} eq 'kiwi';
+ $config->{'binarytype'} = 'deb' if $config->{'type'} eq 'dsc';
+ $config->{'binarytype'} = 'arch' if $config->{'type'} eq 'arch';
+ $config->{'binarytype'} ||= 'UNDEFINED';
+ }
# add rawmacros to our macro list
if ($config->{'rawmacros'} ne '') {
for my $rm (split("\n", $config->{'rawmacros'})) {
@@ -576,7 +588,7 @@
if ($pp eq $rn) {
# debian: unversioned provides do not match
# kiwi: supports only rpm, so we need to hand it like it
- next if $config->{'type'} eq 'dsc';
+ next if $config->{'binarytype'} eq 'deb';
push @p, $rp;
last;
}
@@ -597,7 +609,7 @@
$rr &= 5 unless $pf & 2;
# verscmp for spec and kiwi types
my $vv;
- if ($config->{'type'} eq 'dsc') {
+ if ($config->{'binarytype'} eq 'deb') {
$vv = Build::Deb::verscmp($pv, $rv, 1);
} else {
$vv = Build::Rpm::verscmp($pv, $rv, 1);
@@ -858,13 +870,21 @@
print "$_\n" for @$x;
}
+sub parse_preinstallimage {
+ return undef unless $do_rpm;
+ my $d = Build::Rpm::parse(@_);
+ $d->{'name'} ||= 'preinstallimage';
+ return $d;
+}
+
sub parse {
my ($cf, $fn, @args) = @_;
return Build::Rpm::parse($cf, $fn, @args) if $do_rpm && $fn =~ /\.spec$/;
return Build::Deb::parse($cf, $fn, @args) if $do_deb && $fn =~ /\.dsc$/;
return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $fn =~ /config\.xml$/;
return Build::Kiwi::parse($cf, $fn, @args) if $do_kiwi && $fn =~ /\.kiwi$/;
- return Build::Arch::parse($cf, $fn, @args) if $do_arch && $fn =~ /PKGBUILD$/;
+ return Build::Arch::parse($cf, $fn, @args) if $do_arch && $fn =~ /(^|\/|-)PKGBUILD$/;
+ return parse_preinstallimage($cf, $fn, @args) if $fn =~ /(^|\/|-)_preinstallimage$/;
return undef;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/build new/obs-build-2012.07.02/build
--- old/obs-build-2012.06.05/build 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/build 2012-07-02 10:41:12.000000000 +0200
@@ -72,6 +72,7 @@
VMDISK_FILESYSTEM=ext3
# settings are for speed and not data safety, we format anyway on next run
VMDISK_MOUNT_OPTIONS=__default
+HUGETLBFSPATH=
MEMSIZE=
RUNNING_IN_VM=
RPMLIST=
@@ -281,6 +282,9 @@
--vm-memory SIZEINMB
Set amount of RAM for VMs
+ --hugetlbfs HUGETLBFSPATH
+ Use hugetlb for memory management, path to mounted hugetlbfs.
+
--vm-kernel FILE
--vm-initrd FILE
Kernel and initrd to use for VM (kvm and qemu only)
@@ -406,8 +410,8 @@
setupicecream()
{
if [ "$icecream" -eq 0 ]; then
- rm -rf "$BUILD_ROOT"/var/run/icecream
- rm -f "$BUILD_ROOT"/etc/profile.d/build_icecream.sh
+ rm -rf "$BUILD_ROOT/var/run/icecream"
+ rm -f "$BUILD_ROOT/etc/profile.d/build_icecream.sh"
return
fi
@@ -437,8 +441,8 @@
-o "$BUILD_ROOT/usr/bin/as" -nt "$BUILD_ROOT/$icecc_vers" \
-o "$BUILD_ROOT/lib/libc.so.6" -nt "$BUILD_ROOT/$icecc_vers" ]
then
- rm -rf $BUILD_ROOT/var/run/icecream
- mkdir -p $BUILD_ROOT/var/run/icecream
+ rm -rf "$BUILD_ROOT/var/run/icecream"
+ mkdir -p "$BUILD_ROOT/var/run/icecream"
if [ -e "$BUILD_ROOT"/usr/bin/create-env ]; then
createenv=/usr/bin/create-env
elif [ -e "$BUILD_ROOT"/usr/lib/icecc/icecc-create-env ]; then
@@ -528,8 +532,8 @@
# use external version
whichone=" (external)"
mkbaselibs="/.mkbaselibs/mkbaselibs"
- rm -rf $BUILD_ROOT/.mkbaselibs
- mkdir -p $BUILD_ROOT/.mkbaselibs
+ rm -rf "$BUILD_ROOT/.mkbaselibs"
+ mkdir -p "$BUILD_ROOT/.mkbaselibs"
cp -f $BUILD_DIR/mkbaselibs $BUILD_ROOT/.mkbaselibs/
if test "$BUILDTYPE" == "dsc" ; then
cp -f $BUILD_DIR/baselibs_global-deb.conf $BUILD_ROOT/.mkbaselibs/baselibs_g.conf
@@ -551,7 +555,7 @@
do
chroot $BUILD_ROOT su -c "$mkbaselibs $BASELIBS_GLOBAL $BASELIBS_CFG $line" - $BUILD_USER || cleanup_and_exit 1
done < <(IFS=$'\n'; echo "${pkgs[*]#$BUILD_ROOT}" | xargs -n 1024)
- rm -rf $BUILD_ROOT/.mkbaselibs
+ rm -rf "$BUILD_ROOT/.mkbaselibs"
}
copy_oldpackages()
@@ -720,11 +724,11 @@
cleanup_and_exit 3
fi
- rm -rf "$BUILD_ROOT"/.build.packages
+ rm -rf "$BUILD_ROOT/.build.packages"
if [ -z "$VM_TYPE" -a -z "$RUNNING_IN_VM" ]; then
# don't touch this in VM
- rm -rf "$BUILD_ROOT"/.build
- mkdir -p "$BUILD_ROOT"/.build
+ rm -rf "$BUILD_ROOT/.build"
+ mkdir -p "$BUILD_ROOT/.build"
fi
}
@@ -979,6 +983,10 @@
BUILD_RPMS=
shift
;;
+ *-hugetlbfs)
+ HUGETLBFSPATH="$ARG"
+ shift
+ ;;
*-release)
needarg
RELEASE="$ARG"
@@ -1266,18 +1274,18 @@
test -d "$BUILD_ROOT" || cleanup_and_exit 3
SPECFILE=$SPECFILES # only one specified anyways
if test "$SPECFILE" != "${SPECFILE%.src.rpm}" ; then
- rm -rf $BUILD_ROOT/usr/src/packages
+ rm -rf "$BUILD_ROOT/usr/src/packages"
mkdir -p $BUILD_ROOT/usr/src/packages/SOURCES $BUILD_ROOT/usr/src/packages/SPECS
rpm -i --nodigest --nosignature --root $BUILD_ROOT $SPECFILE || {
echo "could not install $SPECFILE." 2>&1
- rm -rf $BUILD_ROOT
+ rm -rf "$BUILD_ROOT"
cleanup_and_exit 3
}
for SPECFILE in $BUILD_ROOT/usr/src/packages/SPECS/*.spec ; do : ; done
fi
init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" --list-state "${definesnstuff[@]}" "${repos[@]}" $USEUSEDFORBUILD $SPECFILE $BUILD_EXTRA_PACKS
ERR=$?
- rm -rf $BUILD_ROOT
+ rm -rf "$BUILD_ROOT"
cleanup_and_exit $ERR
fi
@@ -1405,6 +1413,7 @@
*.dsc) BUILDTYPE=dsc ;;
*.kiwi) BUILDTYPE=kiwi ;;
PKGBUILD) BUILDTYPE=arch ;;
+ _preinstallimage) BUILDTYPE=preinstallimage ;;
esac
if test -z "$BUILDTYPE" ; then
echo "don't know how to build $SPECFILE"
@@ -1432,8 +1441,8 @@
if test "$SPECFILE" != "${SPECFILE%.src.rpm}" ; then
echo processing src rpm $SRCDIR/$SPECFILE ...
MYSRCDIR=$BUILD_ROOT/.build-srcdir
- rm -rf $MYSRCDIR
- mkdir -p $MYSRCDIR
+ rm -rf "$MYSRCDIR"
+ mkdir -p "$MYSRCDIR"
cd $MYSRCDIR || cleanup_and_exit 1
$BUILD_DIR/unrpm -q $SRCDIR/$SPECFILE || {
echo "could not install $SPECFILE."
@@ -1483,8 +1492,8 @@
fi
if test -n "$VM_TYPE" -a -z "$RUNNING_IN_VM"; then
- rm -rf $BUILD_ROOT/.build
- mkdir -p $BUILD_ROOT/.build
+ rm -rf "$BUILD_ROOT/.build"
+ mkdir -p "$BUILD_ROOT/.build"
if test "$DO_INIT" = true ; then
# do fist stage of init_buildsystem
rm -f $BUILD_ROOT/.build.success
@@ -1501,8 +1510,8 @@
# start up xen, rerun ourself
cp -a $BUILD_DIR/. $BUILD_ROOT/.build
if ! test "$MYSRCDIR" = $BUILD_ROOT/.build-srcdir ; then
- rm -rf $BUILD_ROOT/.build-srcdir
- mkdir $BUILD_ROOT/.build-srcdir
+ rm -rf "$BUILD_ROOT/.build-srcdir"
+ mkdir "$BUILD_ROOT/.build-srcdir"
if test "$BUILDTYPE" = kiwi ; then
cp -pRL "$MYSRCDIR"/* $BUILD_ROOT/.build-srcdir
else
@@ -1668,6 +1677,9 @@
fi
if [ "$VM_TYPE" = 'kvm' ]; then
KVM_OPTIONS="$KVM_OPTIONS -cpu host"
+ if [ -n "$HUGETLBFSPATH" ]; then
+ KVM_OPTIONS="$KVM_OPTIONS -mem-path $HUGETLBFSPATH"
+ fi
fi
set -- $qemu_bin -no-reboot -nographic -net none $KVM_OPTIONS \
@@ -1707,7 +1719,7 @@
BUILDSTATUS[02])
mkdir -p $BUILD_ROOT/.build.packages
cd $BUILD_ROOT/.build.packages || cleanup_and_exit 1
- echo "build_ extracting built packages..."
+ echo "build: extracting built packages..."
extractbuild --disk "$VM_IMAGE" --input "$VM_SWAP" --skip 512 -v || cleanup_and_exit 3
# create same layout as with plain chroot
if test "$BUILDTYPE" = spec ; then
@@ -1730,7 +1742,7 @@
elif test "$BUILDTYPE" = arch ; then
mkdir -p ARCHPKGS
find . -type f | while read i; do mv "$i" ARCHPKGS/; done
- else
+ elif test "$BUILDTYPE" = kiwi ; then
mkdir -p KIWI
find . -type f | while read i; do mv "$i" KIWI/; done
fi
@@ -1764,6 +1776,7 @@
test -z "$INCARNATION" && INCARNATION=0
echo "BUILD_INCARNATION=$INCARNATION" > $BUILD_ROOT/.buildenv
CREATE_BUILD_BINARIES=
+ test "$BUILDTYPE" = preinstallimage && mkdir -p $BUILD_ROOT/.preinstall_image
egrep '^#[ ]*needsbinariesforbuild[ ]*$' >/dev/null <$MYSRCDIR/$SPECFILE && CREATE_BUILD_BINARIES=--create-build-binaries
set -- init_buildsystem --configdir "$CONFIG_DIR" --cachedir "$CACHE_DIR" "${definesnstuff[@]}" "${repos[@]}" $CLEAN_BUILD $USE_SYSTEM_QEMU $USEUSEDFORBUILD $CREATE_BUILD_BINARIES $RPMLIST "$MYSRCDIR/$SPECFILE" $ADDITIONAL_PACKS
echo "$* ..."
@@ -1771,9 +1784,12 @@
check_exit
# arbitrary limit of 10MB
if test $((`stat -f -c "%a*%S/1024/1024" $BUILD_ROOT`)) -lt 10; then
- df -h $BUILD_ROOT
- echo "build does not work on a completely full filesystem"
- cleanup_and_exit 1
+ # ensure that old stat is not failing (RHEL4)
+ if df $BUILD_ROOT 2>/dev/null | grep -q "100%"; then
+ df -h $BUILD_ROOT
+ echo "build does not work on a completely full filesystem"
+ cleanup_and_exit 1
+ fi
fi
mount -n -tproc none $BUILD_ROOT/proc || true
mount -n -tdevpts none $BUILD_ROOT/dev/pts
@@ -1781,6 +1797,47 @@
copy_oldpackages
fi
+ if test "$BUILDTYPE" = preinstallimage ; then
+ echo "creating preinstall image..."
+ test -d "$BUILD_ROOT/.preinstall_image" || cleanup_and_exit 1
+ cd $BUILD_ROOT || cleanup_and_exit 1
+ TAR="tar"
+ if test -x /usr/bin/bsdtar; then
+ TAR="/usr/bin/bsdtar --chroot"
+ fi
+ TOPDIRS=
+ for DIR in .* * ; do
+ case "$DIR" in
+ .|..) continue ;;
+ .build*) continue ;;
+ .preinstallimage*) continue ;;
+ .srcfiles*) continue ;;
+ .pkgs) continue ;;
+ installed-pkg) continue ;;
+ proc|sys) continue ;;
+ esac
+ TOPDIRS="$TOPDIRS $DIR"
+ done
+ if ! $TAR -czf .preinstallimage.$$.tar.gz --one-file-system $TOPDIRS ; then
+ cleanup_and_exit 1
+ fi
+ echo "image created."
+ TOPDIR=/usr/src/packages
+ mkdir -p $BUILD_ROOT$TOPDIR/OTHER
+ rm -f $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.info
+ for PKG in $BUILD_ROOT/.preinstall_image/* ; do
+ PKG=${PKG##*/}
+ read PKG_HDRMD5 PKGID < $BUILD_ROOT/.preinstall_image/$PKG
+ test -n "$PKG_HDRMD5" || cleanup_and_exit 1
+ echo "$PKG_HDRMD5 $PKG" >> $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.info
+ done
+ mv $BUILD_ROOT/.preinstallimage.$$.tar.gz $BUILD_ROOT$TOPDIR/OTHER/preinstallimage.tar.gz
+ rm -f $BUILD_ROOT/.build.packages
+ ln -s ${TOPDIR#/} $BUILD_ROOT/.build.packages
+ test -d "$SRCDIR" && cd "$SRCDIR"
+ continue
+ fi
+
if test -z "$BUILD_DIST" -a -e "$BUILD_ROOT/.guessed_dist" ; then
read BUILD_DIST < $BUILD_ROOT/.guessed_dist
fi
@@ -1821,6 +1878,12 @@
fi
test -n "$NOROOTFORBUILD" && BUILD_USER=abuild
+ # appliance builds must run as root
+ if test "$BUILDTYPE" = kiwi; then
+ imagetype=$(perl -I$BUILD_DIR -MBuild::Kiwi -e Build::Kiwi::show $SPECFILE imagetype)
+ test "$imagetype" = 'product' || BUILD_USER=root
+ fi
+
if test $BUILD_USER = abuild ; then
if ! egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then
echo "abuild:x:${ABUILD_UID}:${ABUILD_GID}:Autobuild:/home/abuild:/bin/bash" >>$BUILD_ROOT/etc/passwd
@@ -1852,7 +1915,7 @@
ABUILD_UID=0
ABUILD_GID=0
if egrep '^abuild:' >/dev/null <$BUILD_ROOT/etc/passwd ; then
- rm -rf $BUILD_ROOT/home/abuild
+ rm -rf "$BUILD_ROOT/home/abuild"
egrep -v '^abuild:' <$BUILD_ROOT/etc/passwd >$BUILD_ROOT/etc/passwd.new
mv $BUILD_ROOT/etc/passwd.new $BUILD_ROOT/etc/passwd
egrep -v '^abuild:' <$BUILD_ROOT/etc/group >$BUILD_ROOT/etc/group.new
@@ -1898,7 +1961,7 @@
#
# now clean up RPM building directories
#
- rm -rf $BUILD_ROOT$TOPDIR
+ rm -rf "$BUILD_ROOT$TOPDIR"
for i in BUILD RPMS/`uname -m` RPMS/i386 RPMS/noarch SOURCES SPECS SRPMS BUILDROOT OTHER ; do
mkdir -p $BUILD_ROOT$TOPDIR/$i
done
@@ -1945,10 +2008,11 @@
getmacros --dist "$BUILD_DIST" --archpath "$BUILD_ARCH" --configdir "$CONFIG_DIR" > $BUILD_ROOT/root/.rpmmacros
if test -n "$BUILD_DEBUG" ; then
echo '
-%prep %{?!_suse_insert_debug_package_seen:%?_suse_insert_debug_package}%%prep
-%package %{?!_suse_insert_debug_package_seen:%?_suse_insert_debug_package}%%package
+%prep %{?!__debug_package:%?_suse_insert_debug_package}%%prep
+%package %{?!__debug_package:%?_suse_insert_debug_package}%%package
%_suse_insert_debug_package \
- %global _suse_insert_debug_package_seen 1 \
+ %global __debug_package 1 \
+ %undefine _enable_debug_packages \
%debug_package
' >> $BUILD_ROOT/root/.rpmmacros
@@ -1972,7 +2036,7 @@
if test -f $BUILD_ROOT/.spec.new ; then
if ! cmp -s $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE $BUILD_ROOT/.spec.new ; then
echo -----------------------------------------------------------------
- echo I have the following modifications for $SPECFILE:
+ echo "I have the following modifications for $SPECFILE:"
sed -e "/^%changelog/q" $BUILD_ROOT$TOPDIR/SOURCES/$SPECFILE > $BUILD_ROOT/.spec.t1
sed -e "/^%changelog/q" $BUILD_ROOT/.spec.new > $BUILD_ROOT/.spec.t2
diff $BUILD_ROOT/.spec.t1 $BUILD_ROOT/.spec.t2
@@ -1984,7 +2048,7 @@
fi
if test "$BUILDTYPE" = dsc ; then
- rm -rf $BUILD_ROOT$TOPDIR/BUILD
+ rm -rf "$BUILD_ROOT$TOPDIR/BUILD"
mkdir -p $BUILD_ROOT$TOPDIR/SOURCES.DEB
chown -R "$ABUILD_UID:$ABUILD_GID" "$BUILD_ROOT$TOPDIR"
DEB_TRANSFORM=
@@ -2087,10 +2151,6 @@
rpmbopts[${#rpmbopts[@]}]='--define'
rpmbopts[${#rpmbopts[@]}]="disturl $DISTURL"
fi
- if test -s "$BUILD_ROOT/usr/lib/rpm/mandriva/macros" ; then
- rpmbopts[${#rpmbopts[@]}]='--eval'
- rpmbopts[${#rpmbopts[@]}]="%undefine _enable_debug_packages"
- fi
if [ -n "$RSYNCDONE" ] ; then
rpmbopts[${#rpmbopts[@]}]='--define'
rpmbopts[${#rpmbopts[@]}]="RSYNCDONE 1"
@@ -2266,6 +2326,12 @@
arch)
computeblocklists $args $TOPDIR/ARCHPKGS/* $TOPDIR/OTHER/* > "$VM_SWAP"
;;
+ preinstallimage)
+ computeblocklists $args $TOPDIR/OTHER/* > "$VM_SWAP"
+ ;;
+ *)
+ cleanup_and_exit 1
+ ;;
esac || cleanup_and_exit 1
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/build_kiwi.sh new/obs-build-2012.07.02/build_kiwi.sh
--- old/obs-build-2012.06.05/build_kiwi.sh 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/build_kiwi.sh 2012-07-02 10:41:12.000000000 +0200
@@ -20,7 +20,7 @@
ln -s $rl$r "${rc%/*}/${rc##*/}"
repo="$TOPDIR/SOURCES/repos/${rc%/*}/${rc##*/}/"
fi
- if test "$imagetype" != product ; then
+ 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"
@@ -184,7 +184,7 @@
done
# take raw files as fallback
if [ -z "\$VMXFILES" ]; then
- ls "$imageout.raw" >& /dev/null && VMXFILES=""$imageout.raw"
+ ls "$imageout.raw" >& /dev/null && VMXFILES="$imageout.raw"
fi
if [ -n "\$VMXFILES" ]; then
tar cvjfS "/$TOPDIR/KIWI/$imageout$buildnum-vmx.tar.bz2" \$VMXFILES
@@ -268,7 +268,7 @@
done
fi
# Hook for running post kiwi build scripts like QA scripts if installed
- if [ -x /usr/lib/build/kiwi_post_run ]; then
+ 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
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/expanddeps new/obs-build-2012.07.02/expanddeps
--- old/obs-build-2012.06.05/expanddeps 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/expanddeps 2012-07-02 10:41:12.000000000 +0200
@@ -60,8 +60,8 @@
$archs = '' unless defined $archs;
die("you must specfiy a depfile!\n") unless defined $rpmdeps;
-my @extradeps = grep {!/(^|\/)PKGBUILD$/ && !/\.(?:spec|dsc|kiwi)$/} @ARGV;
-my @specs = grep {/(^|\/)PKGBUILD$/ || /\.(?:spec|dsc|kiwi)$/} @ARGV;
+my @extradeps = grep {!/(^|\/)(?:PKGBUILD|_preinstallimage)$/ && !/\.(?:spec|dsc|kiwi)$/} @ARGV;
+my @specs = grep {/(^|\/)(?:PKGBUILD|_preinstallimage)$/ || /\.(?:spec|dsc|kiwi)$/} @ARGV;
die("can only work with at most one spec\n") if @specs > 1;
my $spec = $specs[0];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/gettype new/obs-build-2012.07.02/gettype
--- old/obs-build-2012.06.05/gettype 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/gettype 2012-07-02 10:41:12.000000000 +0200
@@ -32,5 +32,5 @@
die("Usage: gettype --dist <dist> --archpath <archpath> [--configdir <configdir>]\n") if @ARGV;
my $cf = Build::read_config_dist($dist, $archs, $configdir);
-exit 0 unless $cf->{'type'};
-print "$cf->{'type'}\n";
+exit 0 unless $cf->{'binarytype'};
+print "$cf->{'binarytype'}\n";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/init_buildsystem new/obs-build-2012.07.02/init_buildsystem
--- old/obs-build-2012.06.05/init_buildsystem 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/init_buildsystem 2012-07-02 10:41:12.000000000 +0200
@@ -103,36 +103,80 @@
cleanup_and_exit()
{
trap EXIT
- [ "$BUILD_ROOT" != / ] || chown $browner $BUILD_ROOT
+ test "$BUILD_ROOT" = / -a -n "$browner" && chown "$browner" "$BUILD_ROOT"
# umount so init_buildsystem can be used standalone
# XXX: use stat -f /dev/pts/ -c %T to check whether it's mounted and not suppress errors then?
- umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2> /dev/null || true
- umount -n $BUILD_ROOT/proc 2> /dev/null || true
- umount -n $BUILD_ROOT/dev/pts 2> /dev/null || true
- umount -n $BUILD_ROOT/mnt 2> /dev/null || true
+ umount -n "$BUILD_ROOT/proc/sys/fs/binfmt_misc" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/proc" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/dev/pts" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/mnt" 2> /dev/null || true
exit ${1:-0}
}
clean_build_root()
{
test -n "$BUILD_ROOT" && {
- umount -n $BUILD_ROOT/proc/sys/fs/binfmt_misc 2> /dev/null || true
- umount -n $BUILD_ROOT/proc 2> /dev/null || true
- umount -n $BUILD_ROOT/dev/pts 2> /dev/null || true
- umount -n $BUILD_ROOT/mnt 2> /dev/null || true
- rm -rf -- $BUILD_ROOT/*
- rm -rf -- $BUILD_ROOT/.build
- rm -rf -- $BUILD_ROOT/.root
- rm -rf -- $BUILD_ROOT/.init_b_cache
- mkdir -p $BUILD_ROOT/proc
- mkdir -p $BUILD_ROOT/dev/pts
+ umount -n "$BUILD_ROOT/proc/sys/fs/binfmt_misc" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/proc" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/dev/pts" 2> /dev/null || true
+ umount -n "$BUILD_ROOT/mnt" 2> /dev/null || true
+ rm -rf -- "$BUILD_ROOT"/*
+ rm -rf -- "$BUILD_ROOT/.build"
+ rm -rf -- "$BUILD_ROOT/.root"
+ rm -rf -- "$BUILD_ROOT/.init_b_cache"
+ rm -rf -- "$BUILD_ROOT/.preinstall_image/*"
+ rm -rf -- "$BUILD_ROOT/.preinstallimage"*
+ mkdir -p "$BUILD_ROOT/proc"
+ mkdir -p "$BUILD_ROOT/dev/pts"
if [ "$UID" = '0' ]; then
- mount -n -tproc none $BUILD_ROOT/proc
- mount -n -tdevpts none $BUILD_ROOT/dev/pts
+ mount -n -tproc none "$BUILD_ROOT/proc"
+ mount -n -tdevpts none "$BUILD_ROOT/dev/pts"
fi
}
}
+
+unsafe_preinstall_check()
+{
+ # cpio isn't safe so we require bsdtar for VMs. chroot is
+ # unsafe anyways so it's ok for that.
+ if test -n "$PREPARE_VM" ; then
+ echo "Error: setting up a VM requires bsdtar for security reasons."
+ echo "Please install bsdtar."
+ cleanup_and_exit 1
+ fi
+}
+
+preinstall_image_filter()
+{
+ for PKG in "$@" ; do
+ test -e "$BUILD_ROOT/.preinstall_image/$PKG" && continue
+ echo $PKG
+ done
+}
+
+preinstall_image()
+{
+ check_exit
+ if test -n "$2" ; then
+ echo "unpacking preinstall image $2"
+ else
+ echo "unpacking preinstall image"
+ fi
+ cd $BUILD_ROOT || cleanup_and_exit 1
+ if test -x /usr/bin/bsdtar ; then
+ TAR="/usr/bin/bsdtar -P --chroot -o --numeric-owner -x"
+ else
+ unsafe_preinstall_check
+ TAR="tar -x"
+ fi
+ # pipe output through perl to print a dot every 1000 lines
+ if ! $TAR -z --exclude .build --exclude .init_b_cache -f "$BUILD_ROOT/.init_b_cache/rpms/$1" -v > >(perl -e '$|=1; my $done=0; $done++ % 1000 or print "." while <STDIN>; print "\n";') 2>&1 ; then
+ echo "unpack failed."
+ cleanup_and_exit 1
+ fi
+}
+
preinstall()
{
check_exit
@@ -142,13 +186,7 @@
CPIO="/usr/bin/bsdtar -P --chroot -o --numeric-owner -x -f-"
TAR="/usr/bin/bsdtar -P --chroot -o --numeric-owner -x"
else
- # cpio isn't safe so we require bsdtar for VMs. chroot is
- # unsafe anyways so it's ok for that.
- if [ -n "$PREPARE_VM" ]; then
- echo "Error: setting up a VM requires bsdtar for security reasons."
- echo "Please install bsdtar"
- cleanup_and_exit 1
- fi
+ unsafe_preinstall_check
CPIO="cpio --extract --unconditional --preserve-modification-time --make-directories --no-absolute-filenames --quiet"
TAR="tar -x"
fi
@@ -540,7 +578,7 @@
trap fail_exit EXIT
if [ "$BUILD_ROOT" = / ]; then
- browner="$(stat -c %U /)"
+ browner="$(stat -c %u /)"
fi
if [ -n "$CLEAN_BUILD" ]; then
@@ -596,8 +634,8 @@
#
# now make sure that all the packages are installed.
#
- rm -rf $BUILD_ROOT/.init_b_cache
- mkdir -p $BUILD_ROOT/.init_b_cache/scripts
+ rm -rf "$BUILD_ROOT/.init_b_cache"
+ mkdir -p "$BUILD_ROOT/.init_b_cache/scripts"
if test -z "$RPMLIST" ; then
#
@@ -628,7 +666,7 @@
test "$PKG" = "rpmid:" && continue
echo "${SRC##*/}"
done < $BUILD_ROOT/.init_b_cache/rpmlist
- rm -rf $BUILD_ROOT/.init_b_cache
+ rm -rf "$BUILD_ROOT/.init_b_cache"
cleanup_and_exit 0
fi
@@ -664,7 +702,10 @@
PACKAGES_TO_VMINSTALL=
PACKAGES_TO_CBPREINSTALL=
PACKAGES_TO_CBINSTALL=
+ PREINSTALL_IMAGE=
+ PREINSTALL_IMAGE_SOURCE=
RUNSCRIPTS_SEEN=
+ PACKAGES_FROM_PREINSTALLIMAGE=
GUESSED_DIST=unknown
mkdir -p $BUILD_ROOT/.init_b_cache/rpms
while read PKG SRC ; do
@@ -676,6 +717,15 @@
PACKAGES_TO_VMINSTALL=$SRC
continue
fi
+ if test "$PKG" = "preinstallimage:" ; then
+ PREINSTALL_IMAGE=${SRC##*/}
+ ln -s "$SRC" "$BUILD_ROOT/.init_b_cache/rpms/${SRC##*/}"
+ continue
+ fi
+ if test "$PKG" = "preinstallimagesource:" ; then
+ PREINSTALL_IMAGE_SOURCE="$SRC"
+ continue
+ fi
# these additional preinstall / install values are only set for
# emulated "CrossBuild" setups - thus CB(pre)install
if test "$PKG" = "cbpreinstall:" ; then
@@ -707,6 +757,11 @@
echo "Warning: ignoring unsupported tag '$PKG'" >&2
continue
fi
+ if test "$SRC" = "preinstallimage" ; then
+ PACKAGES_FROM_PREINSTALLIMAGE="$PACKAGES_FROM_PREINSTALLIMAGE $PKG"
+ PACKAGES_TO_INSTALL="$PACKAGES_TO_INSTALL $PKG"
+ continue
+ fi
if [ "${SRC#/}" = "$SRC" ]; then
url="$SRC"
case "$url" in
@@ -732,18 +787,27 @@
echo "$GUESSED_DIST" > $BUILD_ROOT/.guessed_dist
test -n "$BUILD_DIST" || BUILD_DIST="$GUESSED_DIST"
- DIST_TYPE=`gettype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"`
- case "$DIST_TYPE" in
- spec) PSUF=rpm ;;
- dsc) PSUF=deb ;;
- arch) PSUF=arch ;;
- *)
+ PSUF=`gettype --dist "$BUILD_DIST" --configdir "$CONFIG_DIR" --archpath "$BUILD_ARCH"`
+ case "$PSUF" in
+ UNKNOWN|'')
# auto detect from packages
+ if test -n "$PREINSTALL_IMAGE" ; then
+ echo "cannot autodetect build type when using a preinstall image" >&2
+ cleanup_and_exit 1
+ fi
PSUF=rpm
- test -L $BUILD_ROOT/.init_b_cache/rpms/dpkg.deb && PSUF=deb
- test -L $BUILD_ROOT/.init_b_cache/rpms/pacman.arch && PSUF=arch
+ test -e $BUILD_ROOT/.init_b_cache/rpms/dpkg.deb && PSUF=deb
+ test -e $BUILD_ROOT/.init_b_cache/rpms/pacman.arch && PSUF=arch
;;
esac
+
+ if test -n "$PREINSTALL_IMAGE" ; then
+ for PKG in $PACKAGES_FROM_PREINSTALLIMAGE ; do
+ # touch the file so that the copying works
+ touch $BUILD_ROOT/.init_b_cache/rpms/"$PKG.$PSUF"
+ done
+ fi
+
fi
#
@@ -768,25 +832,35 @@
for PKG in $PACKAGES_TO_RUNSCRIPTS ; do
: > $BUILD_ROOT/.init_b_cache/scripts/$PKG.run
done
- PACKAGES_TO_PREINSTALL=`reorder $PACKAGES_TO_PREINSTALL`
- progress_setup PACKAGES_TO_PREINSTALL
- for PKG in $PACKAGES_TO_PREINSTALL ; do
- progress_step PACKAGES_TO_PREINSTALL
+ PACKAGES_TO_PREINSTALL_FILTERED="$PACKAGES_TO_PREINSTALL"
+ PACKAGES_TO_VMINSTALL_FILTERED="$PACKAGES_TO_VMINSTALL"
+ PACKAGES_TO_CBPREINSTALL_FILTERED="$PACKAGES_TO_CBPREINSTALL"
+ rm -f "$BUILD_ROOT/.preinstall_image"/*
+ if test -n "$PREINSTALL_IMAGE" ; then
+ preinstall_image "$PREINSTALL_IMAGE" "$PREINSTALL_IMAGE_SOURCE"
+ PACKAGES_TO_PREINSTALL_FILTERED=`preinstall_image_filter $PACKAGES_TO_PREINSTALL_FILTERED`
+ PACKAGES_TO_VMINSTALL_FILTERED=`preinstall_image_filter $PACKAGES_TO_VMINSTALL_FILTERED`
+ PACKAGES_TO_CBPREINSTALL_FILTERED=`preinstall_image_filter $PACKAGES_TO_VMINSTALL_FILTERED`
+ fi
+ PACKAGES_TO_PREINSTALL_FILTERED=`reorder $PACKAGES_TO_PREINSTALL_FILTERED`
+ progress_setup PACKAGES_TO_PREINSTALL_FILTERED
+ for PKG in $PACKAGES_TO_PREINSTALL_FILTERED ; do
+ progress_step PACKAGES_TO_PREINSTALL_FILTERED
preinstall ${PKG##*/}
done
if test -n "$PREPARE_VM" ; then
- PACKAGES_TO_VMINSTALL=`reorder $PACKAGES_TO_VMINSTALL`
- progress_setup PACKAGES_TO_VMINSTALL
- for PKG in $PACKAGES_TO_VMINSTALL ; do
- progress_step PACKAGES_TO_VMINSTALL
+ PACKAGES_TO_VMINSTALL_FILTERED=`reorder $PACKAGES_TO_VMINSTALL_FILTERED`
+ progress_setup PACKAGES_TO_VMINSTALL_FILTERED
+ for PKG in $PACKAGES_TO_VMINSTALL_FILTERED ; do
+ progress_step PACKAGES_TO_VMINSTALL_FILTERED
preinstall ${PKG##*/}
done
fi
# add cbpreinstall if cross HOST != TARGET
- PACKAGES_TO_CBINSTALL=`reorder $PACKAGES_TO_CBINSTALL`
- progress_setup PACKAGES_TO_CBPREINSTALL
- for PKG in $PACKAGES_TO_CBPREINSTALL ; do
- progress_step PACKAGES_TO_CBPREINSTALL
+ PACKAGES_TO_CBINSTALL_FILTERED=`reorder $PACKAGES_TO_CBINSTALL_FILTERED`
+ progress_setup PACKAGES_TO_CBPREINSTALL_FILTERED
+ for PKG in $PACKAGES_TO_CBPREINSTALL_FILTERED ; do
+ progress_step PACKAGES_TO_CBPREINSTALL_FILTERED
preinstall ${PKG##*/}
done
if [ -w /root ]; then
@@ -809,8 +883,7 @@
ln -s -f ../$PKG.$PSUF $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF
check_exit
done
- # alreadyinstalled check will not work, but we have to live with
- # that...
+ # alreadyinstalled check will not work, but we have to live with that...
echo -n 'reordering...'
PACKAGES_TO_INSTALL=`reorder $PACKAGES_TO_INSTALL`
echo 'done'
@@ -833,7 +906,7 @@
#
# create .build.binaries directory if requested
#
-rm -rf $BUILD_ROOT/.build.binaries
+rm -rf "$BUILD_ROOT/.build.binaries"
if test -n "$CREATE_BUILD_BINARIES" ; then
echo "creating .build.binaries directory..."
mkdir -p "$BUILD_ROOT/.build.binaries"
@@ -864,7 +937,6 @@
#
if ! test -e $BUILD_ROOT/.build/init_buildsystem.data ; then
echo -n 'reordering...'
- PACKAGES_TO_INSTALL_FIRST=`reorder $PACKAGES_TO_INSTALL_FIRST`
PACKAGES_TO_INSTALL=`reorder $PACKAGES_TO_INSTALL`
echo 'done'
fi
@@ -896,7 +968,7 @@
test "$PKG" = "*" && continue
ln $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG $BUILD_ROOT/.init_b_cache/todelete/$PKG
done
-for PKG in $PACKAGES_TO_INSTALL_FIRST $PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL ; do
+for PKG in $PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL ; do
rm -f $BUILD_ROOT/.init_b_cache/todelete/$PKG
done
for PKG in $BUILD_ROOT/.init_b_cache/todelete/* ; do
@@ -906,16 +978,16 @@
rpm_e "$PKG"
check_exit
done
-rm -rf $BUILD_ROOT/.init_b_cache/todelete
+rm -rf "$BUILD_ROOT/.init_b_cache/todelete"
-rm -rf $BUILD_ROOT/.init_b_cache/preinstalls
-mkdir -p $BUILD_ROOT/.init_b_cache/preinstalls
+rm -rf "$BUILD_ROOT/.init_b_cache/preinstalls"
+mkdir -p "$BUILD_ROOT/.init_b_cache/preinstalls"
for PKG in $PACKAGES_TO_PREINSTALL $PACKAGES_TO_CBPREINSTALL; do
touch "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG"
done
-rm -rf $BUILD_ROOT/installed-pkg
-mkdir -p $BUILD_ROOT/installed-pkg
+rm -rf "$BUILD_ROOT/installed-pkg"
+mkdir -p "$BUILD_ROOT/installed-pkg"
RPMCHECKOPTS=
RPMCHECKOPTS_HOST=
@@ -924,34 +996,49 @@
test -x $BUILD_ROOT/usr/bin/rpmsign && RPMCHECKOPTS="--nodigest --nosignature"
test -x /usr/bin/rpmsign && RPMCHECKOPTS_HOST="--nodigest --nosignature"
-MAIN_LIST="$PACKAGES_TO_INSTALL_FIRST $PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL"
+test -x $BUILD_ROOT/sbin/ldconfig && chroot $BUILD_ROOT /sbin/ldconfig 2>&1
+
+MAIN_LIST="$PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL"
progress_setup MAIN_LIST
-for PKG in $PACKAGES_TO_INSTALL_FIRST RUN_LDCONFIG $PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL; do
- case $PKG in
- RUN_LDCONFIG)
- test -x $BUILD_ROOT/sbin/ldconfig && chroot $BUILD_ROOT /sbin/ldconfig 2>&1
- continue
- ;;
- esac
+for PKG in $PACKAGES_TO_INSTALL $PACKAGES_TO_CBINSTALL; do
+ test -f $BUILD_ROOT/installed-pkg/$PKG && continue
progress_step MAIN_LIST
- test -f $BUILD_ROOT/installed-pkg/$PKG && continue
+ if test -e "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" -a ! -s "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" ; then
+ # preinstallimage package, make sure it's
+ if ! test -e $BUILD_ROOT/.preinstall_image/$PKG ; then
+ echo "Package $PKG is missing from the preinstall image"
+ cleanup_and_exit 1
+ fi
+ read PKG_HDRMD5 PKGID < $BUILD_ROOT/.preinstall_image/$PKG
+ echo "preinstalled ${PKGID%% *}"
+ echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ continue
+ fi
+ PKG_HDRMD5=
+ if test -d $BUILD_ROOT/.preinstall_image ; then
+ if ! test -e $BUILD_ROOT/.preinstall_image/$PKG ; then
+ PKG_HDRMD5=`perl -I$BUILD_DIR -MBuild -e 'print Build::queryhdrmd5($ARGV[0])' $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF`
+ test -n "$PKG_HDRMD5" || cleanup_and_exit 1
+ fi
+ fi
+ test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF || continue
if test $PSUF = deb ; then
# debian world, install deb files
- test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb || continue
if ! test "$BUILD_ROOT/.init_b_cache/rpms/$PKG.deb" -ef "$BUILD_ROOT/.init_b_cache/$PKG.deb" ; then
rm -f $BUILD_ROOT/.init_b_cache/$PKG.deb
cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb $BUILD_ROOT/.init_b_cache/$PKG.deb || cleanup_and_exit 1
fi
PKGID=`readlink $BUILD_ROOT/.init_b_cache/rpms/$PKG.deb`
PKGID="${PKGID##*/}"
- PKGID="${PKGID%.deb}"
- echo "installing ${PKGID%_*}"
+ PKGID="${PKGID%.deb} debian"
+ echo "installing ${PKGID%% *}"
( chroot $BUILD_ROOT dpkg --install --force all .init_b_cache/$PKG.deb 2>&1 || touch $BUILD_ROOT/exit ) | \
perl -ne '$|=1;/^(Configuration file|Installing new config file|Selecting previously deselected|\(Reading database|Unpacking |Setting up|Creating config file|Preparing to replace dpkg)/||/^$/||print'
check_exit
- echo "$PKGID debian" > $BUILD_ROOT/installed-pkg/$PKG
+ echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
# ugly workaround for upstart system. some packages (procps) try
# to start a service in their configure phase. As we don't have
# a running upstart, we just link the start binary to /bin/true
@@ -968,7 +1055,6 @@
fi
if test $PSUF = arch ; then
- test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF || continue
if ! test "$BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF" -ef "$BUILD_ROOT/.init_b_cache/$PKG.$PSUF" ; then
rm -f $BUILD_ROOT/.init_b_cache/$PKG.$PSUF
cp $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF $BUILD_ROOT/.init_b_cache/$PKG.$PSUF || cleanup_and_exit 1
@@ -976,24 +1062,24 @@
PKGID=`readlink $BUILD_ROOT/.init_b_cache/rpms/$PKG.$PSUF`
PKGID="${PKGID##*/}"
PKGID="${PKGID/%.pkg.tar.?z/.arch}"
- PKGID="${PKGID%.$PSUF}"
- echo "installing ${PKGID%_*}"
+ PKGID="${PKGID%.arch} arch"
+ echo "installing ${PKGID%% *}"
# -d -d disables deps checking
( chroot $BUILD_ROOT pacman -Uf -d -d --noconfirm .init_b_cache/$PKG.$PSUF 2>&1 || touch $BUILD_ROOT/exit ) | \
perl -ne '$|=1;/^(warning: could not get filesystem information for |loading packages|looking for inter-conflicts|Targets |Total Installed Size: |Net Upgrade Size: |Proceed with installation|checking package integrity|loading package files|checking available disk space|installing |upgrading |warning:.*is up to date -- reinstalling|Optional dependencies for| )/||/^$/||print'
check_exit
- echo "$PKGID $PSUF" > $BUILD_ROOT/installed-pkg/$PKG
+ echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
continue
fi
- test -L $BUILD_ROOT/.init_b_cache/rpms/$PKG.rpm || continue
-
if test -f $BUILD_ROOT/.init_b_cache/rpms/$PKG.id -a -f $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG ; then
read PKGID < $BUILD_ROOT/.init_b_cache/rpms/$PKG.id
read OLDPKGID < $BUILD_ROOT/.init_b_cache/alreadyinstalled/$PKG
if test "$PKGID" = "$OLDPKGID" ; then
#echo "keeping ${PKGID%% *}"
echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
continue
fi
fi
@@ -1013,11 +1099,13 @@
else
#echo "keeping ${PKGID%% *}"
echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
continue
fi
else
#echo "keeping ${PKGID%% *}"
echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
continue
fi
if test -e "$BUILD_ROOT/.init_b_cache/preinstalls/$PKG" ; then
@@ -1032,7 +1120,7 @@
if test "$USE_FORCE" = true ; then
export ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --force"
fi
- # work around for cross-build installs, we must not overwrite the running rpm
+ # FIXME: work around for cross-build installs, we must not overwrite the running rpm
if test "$PKG" = rpm ; then
for i in $BUILD_ROOT/.init_b_cache/preinstalls/rpm-x86-* ; do
test -e "$i" && ADDITIONAL_PARAMS="$ADDITIONAL_PARAMS --justdb"
@@ -1051,11 +1139,12 @@
rm -f $BUILD_ROOT/.init_b_cache/$PKG.rpm
check_exit
echo "$PKGID" > $BUILD_ROOT/installed-pkg/$PKG
+ test -n "$PKG_HDRMD5" && echo "$PKG_HDRMD5 $PKGID" > $BUILD_ROOT/.preinstall_image/$PKG
done
if test $PSUF = deb ; then
- echo "configure all installed packages..."
+ echo "configuring all installed packages..."
# configure all packages after complete installation, not for each package like rpm does
# We need to run this twice, because of cyclic dependencies as it does not succeed on most
# debian based distros in the first attempt.
@@ -1218,7 +1307,7 @@
#fi
rm -f $BUILD_ROOT/.rpmmacros $BUILD_ROOT/root/.rpmmacros
-rm -rf $BUILD_ROOT/.init_b_cache
+rm -rf "$BUILD_ROOT/.init_b_cache"
rm -f $BUILD_IS_RUNNING
rm -f $TMPFILE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-build-2012.06.05/order new/obs-build-2012.07.02/order
--- old/obs-build-2012.06.05/order 2012-06-05 16:24:36.000000000 +0200
+++ new/obs-build-2012.07.02/order 2012-07-02 10:41:12.000000000 +0200
@@ -61,6 +61,10 @@
my $q;
for my $suf ('rpm', 'deb', 'arch') {
next unless -f "$cachedir/$p.$suf";
+ if (! -s "$cachedir/$p.$suf") {
+ $q = {'provides' => [], 'requires' => []}; # package from preinstallimage, no need to order
+ last;
+ }
$q = Build::query("$cachedir/$p.$suf", 'filelist' => 1, 'alldeps' => 1);
die("bad binary: $p.$suf\n") unless $q;
push @{$q->{'provides'}}, @{$q->{'filelist'}} if $suf eq 'rpm' && $q->{'filelist'};
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org