add support for disttag definition (needs patched rpm to use the macro)
authorAdrian Schröter <adrian@suse.de>
Mon, 9 Feb 2009 13:40:10 +0000 (13:40 +0000)
committerAdrian Schröter <adrian@suse.de>
Mon, 9 Feb 2009 13:40:10 +0000 (13:40 +0000)
Build/Rpm.pm
build

index 3877a01..fcdae47 100644 (file)
@@ -117,6 +117,7 @@ sub parse {
   my $packname;
   my $packvers;
   my $packrel;
+  my $packdisttag;
   my $exclarch;
   my $badarch;
   my @subpacks;
@@ -318,6 +319,10 @@ sub parse {
       $packrel = $1;
       $macros{'release'} = $packrel;
     }
+    if ($main_preamble && ($line =~ /^Disttag\s*:\s*(\S+)/i)) {
+      $packdisttag = $1;
+      $macros{'disttag'} = $packdisttag;
+    }
     if ($main_preamble && ($line =~ /^ExclusiveArch\s*:\s*(.*)/i)) {
       $exclarch ||= [];
       push @$exclarch, split(' ', $1);
@@ -428,6 +433,7 @@ sub parse {
   $ret->{'name'} = $packname;
   $ret->{'version'} = $packvers;
   $ret->{'release'} = $packrel if defined $packrel;
+  $ret->{'disttag'} = $packdisttag if defined $packdisttag;
   $ret->{'subpacks'} = \@subpacks;
   $ret->{'exclarch'} = $exclarch if defined $exclarch;
   $ret->{'badarch'} = $badarch if defined $badarch;
@@ -740,6 +746,7 @@ sub query {
     $data->{'release'} = $res{'RELEASE'}->[0];
     $data->{'arch'} = $arch;
     $data->{'epoch'} = $res{'EPOCH'}->[0] if exists $res{'EPOCH'};
+    $data->{'disttag'} = $res{'DISTTAG'}->[0] if exists $res{'DISTTAG'};
   }
   if ($opts{'filelist'}) {
     $data->{'filelist'} = $res{'FILENAMES'};
diff --git a/build b/build
index cd5882c..aee7982 100755 (executable)
--- a/build
+++ b/build
@@ -52,6 +52,7 @@ MEMSIZE=
 RUNNING_IN_VM=
 RPMLIST=
 RELEASE=
+DISTTAG=
 REASON=
 NOROOTFORBUILD=
 LOGFILE=
@@ -666,6 +667,10 @@ while test -n "$1"; do
         DISTURL=$ARG
        shift
       ;;
+      *-disttag)
+        DISTTAG="$ARG"
+        shift
+      ;;
       ----noarg)
         echo "$ARG does not take an argument"
         cleanup_and_exit
@@ -985,6 +990,7 @@ for SPECFILE in "${SPECFILES[@]}" ; do
        echo "CHANGELOG='${CHANGELOG//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data
        echo "INCARNATION='${INCARNATION//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data
        echo "DISTURL='${DISTURL//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data
+       echo "DISTTAG='${DISTTAG//"'"/$Q}'" >> $BUILD_ROOT/.build/build.data
        # FIXME: this depends on the kernel and vm.
        # could be hda2, sda2 for xen or hdb/sdb for qemu
        test -n "$VM_SWAP" && echo "VM_SWAP='${VM_SWAPDEV:-/dev/hda2}'" >> $BUILD_ROOT/.build/build.data
@@ -1297,6 +1303,10 @@ for SPECFILE in "${SPECFILES[@]}" ; do
                rpmbopts[${#rpmbopts[@]}]='--define'
                rpmbopts[${#rpmbopts[@]}]="disturl $DISTURL"
        fi
+       if [ -n "$DISTTAG" ]; then
+               rpmbopts[${#rpmbopts[@]}]='--define'
+               rpmbopts[${#rpmbopts[@]}]="disttag $DISTTAG"
+       fi
        if test -s "$BUILD_ROOT/usr/lib/rpm/mandriva/macros" ; then
                rpmbopts[${#rpmbopts[@]}]='--eval'
                rpmbopts[${#rpmbopts[@]}]="%undefine _enable_debug_packages"