RedHat packaging: Use %{dist} not %{osver}
[openafs.git] / src / packaging / RedHat / mockbuild.pl
index de31e1c..79d4c73 100755 (executable)
@@ -16,6 +16,7 @@ my $rootbase="/var/lib/mock/";
 my $resultbase="/tmp/result/";
 my $stashbase="/disk/scratch/repository/";
 my $mockcommand = "/usr/bin/mock";
+my $resultfile;
 my $buildall = 0;
 my $ignorerelease = 1;
 my @newrpms;
@@ -134,6 +135,47 @@ my %platconf = ( "fedora-5-i386" => { osver => "fc5",
                                        basearch => "x86_64",
                                        updaterepo => "updates-released",
                                        results => "fedora-9/x86_64" },
+                "fedora-10-i386" => { osver => "fc10",
+                                     kmod => '1',
+                                     basearch => 'i386',
+                                     updaterepo => "updates-released",
+                                     results => 'fedora-10/i386' },
+                "fedora-10-x86_64" => { osver => "fc10",
+                                       kmod => "1",
+                                       basearch => "x86_64",
+                                       updaterepo => "updates-released",
+                                       results => "fedora-10/x86_64" },
+                "fedora-11-i386" => { osver => "fc11",
+                                     kmod => '1',
+                                     basearch => 'i386',
+#                                    updaterepo => "updates-released",
+                                     results => 'fedora-11/i386' },
+                "fedora-11-x86_64" => { osver => "fc11",
+                                       kmod => "1",
+                                       basearch => "x86_64",
+#                                      updaterepo => "updates-released",
+                                       results => "fedora-11/x86_64" },
+                "fedora-12-i386" => { osver => "fc12",
+                                     kmod => '1',
+                                     basearch => 'i386',
+#                                    updaterepo => "updates-released",
+                                     results => 'fedora-12/i386' },
+                "fedora-12-x86_64" => { osver => "fc12",
+                                       kmod => "1",
+                                       basearch => "x86_64",
+#                                      updaterepo => "updates-released",
+                                       results => "fedora-12/x86_64" },
+                 "fedora-13-i386" => { osver => "fc13",
+                                        kmod => "1",
+                                        basearch => "i386",
+#                                       updaterepo => "updates-released",
+                                        results => "fedora-13/i386" },
+                 "fedora-13-x86_64" => { osver => "fc13",
+                                        kmod => "1",
+                                        basearch => "x86_64",
+#                                       updaterepo => "updates-released",
+                                        results => "fedora-13/x86_64" },
+
                 "fedora-development-i386" => { osver => "fcd",
                                          kmod => '1',
                                          basearch => 'i386',
@@ -153,6 +195,7 @@ my %badkernels = (
 
 my $help;
 my $ok = GetOptions("resultdir=s" => \$resultbase,
+                   "resultlist=s" => \$resultfile,
                    "help" => \$help);
 
 my @platforms = @ARGV;
@@ -170,10 +213,22 @@ if (!$ok || $help || !$srpm || $#platforms==-1) {
 
 my $oafsversion = `rpm -q --queryformat=%{VERSION} -p $srpm` or die $!;
 chomp $oafsversion;
+$oafsversion=~/([0-9]+)\.([0-9]+)\.([0-9]+)/;
+my $major = $1;
+my $minor = $2;
+my $pathlevel = $3;
+
+# OpenAFS SRPMs newer than 1.6.0 use the dist, rather than osvers variable
+
+my $usedist = ($minor >= 6);
+
 my $oafsrelease = `rpm -q --queryformat=%{RELEASE} -p $srpm` or die $!;
 chomp $oafsrelease;
-$oafsrelease=~s/^[^\.]*\.(.*)$/$1/;
 
+# Before we used the dist tag, the release variable of the srpm was 1.<release>
+if (!$usedist) {
+       $oafsrelease=~s/^[^\.]*\.(.*)$/$1/;
+}
 print "Release is $oafsrelease\n";
 
 if ($platforms[0] eq "all" and $#platforms == 0) {
@@ -234,9 +289,8 @@ foreach my $platform (@platforms) {
          next if ($variant eq "xen0"); # Fedora 5 has some bad xen0 kernel-devels
          next if ($variant eq "smp");
       }
-      if ($platform=~/fedora-8/ || $platform=~/fedora-9/ || $platform=~/fedora-development/) {
-         next if ($variant =~/debug$/); # Fedora 8 debug kernels are bad
-      }
+      next if ($variant =~/debug$/); # Fedora 8 debug kernels are bad
+
       print "$arch : $variant : $version\n";
       $modulelist{$arch} ={} if !$modulelist{$arch};
       $modulelist{$arch}{$version} = {} if !$modulelist{$arch}{$version};
@@ -259,12 +313,18 @@ foreach my $platform (@platforms) {
 
   my $missing = 0;
   foreach my $rpm (@rpms) {
-    if (! -f $resultdir."/".$rpm."-".$oafsversion."-".$osver.".".
-            $oafsrelease.".".$basearch.".rpm") {
+    my $rpmname;
+    if ($usedist) {
+       $rpmname = $rpm."-".$oafsversion."-".$oafsrelease.".".$osver.".".
+                  $basearch.".rpm";
+    } else {
+       $rpmname = $rpm."-".$oafsversion."-".$osver.".".$oafsrelease.".".
+                  $basearch.".rpm";
+    }
+    if (! -f $resultdir."/".$rpmname) {
       $missing++;
-      print $resultdir."/".$rpm."-".$oafsversion."-".$osver.".".
-           $oafsrelease.".".$basearch.".rpm is missing!\n";
-      push @missingrpms, $rpm;
+      print "$resultdir/$rpmname is missing!\n";
+      push @missingrpms, $rpmname;
     }
   }
   if ($missing) {
@@ -272,27 +332,25 @@ foreach my $platform (@platforms) {
                        ' --define "fedorakmod 1" '.
                        ' --define "kernvers '.$arbitraryversion.'" '.
                        ' --define "osvers '.$osver.'" '.
+                       ' --define "dist .'.$osver.'" '.
                        ' --define "build_modules 0" '.
                        ' --define "build_userspace 1" '.
                        ' --define "build_authlibs 1" '.
                        $srpm) == 0
       or die "build failed with : $!\n";
-    foreach my $rpm (@missingrpms) {
-      system("cp ".$mockresults."/".$rpm."-".$oafsversion."-".
-                  $osver.".".$oafsrelease.".".$basearch.".rpm ".
-                  $resultdir) == 0
+    foreach my $rpmname (@missingrpms) {
+      system("cp ".$mockresults."/".$rpmname." ".$resultdir) == 0
           or die "Copy failed with : $!\n";
-      push @newrpms, $mockresults."/".$rpm."-".$oafsversion."-".
-                    $osver.".".$oafsrelease.".".$basearch.".rpm";
+      push @newrpms, $resultdir."/".$rpmname;
     }
   } else {
     print "All userland RPMs present for $platform. Skipping build\n";
   }
 
-   print "-------------------------------------------------------------------\n";
+  print "-------------------------------------------------------------------\n";
   print "Building kernel modules\n";
 
- foreach my $arch (keys(%modulelist)) {
+  foreach my $arch (keys(%modulelist)) {
     foreach my $version (keys(%{$modulelist{$arch}})) {
       my $kversion = $version;
       $kversion=~s/-/_/g;
@@ -330,6 +388,7 @@ foreach my $platform (@platforms) {
                             " --arch ".$arch.
                             ' --define "fedorakmod 1" '.
                             ' --define "osvers '.$osver.'" '.
+                            ' --define "dist .'.$osver.'" '.
                             ' --define "kernvers '.$version.'" '.
                             ' --define "kvariants '.$variants.'" '.
                             ' --define "build_modules 1" '.
@@ -342,7 +401,7 @@ foreach my $platform (@platforms) {
           }
           system("cp ".$mockresults."/kmod-openafs-".$variant.$oafsversion."-".$oafsrelease.".".$kversion.".".$arch.".rpm $resultdir") == 0
             or die "Copy failed with : $!\n";
-         push @newrpms, $mockresults."/kmod-openafs-".$variant.$oafsversion."-".$oafsrelease.".".$kversion.".".$arch.".rpm";
+         push @newrpms, $resultdir."/kmod-openafs-".$variant.$oafsversion."-".$oafsrelease.".".$kversion.".".$arch.".rpm";
         }
       } else {
          print "All kernel modules already built for $version on $arch\n";
@@ -384,4 +443,8 @@ foreach my $platform (@platforms) {
 print "=====================================================================\n";
 print "All builds complete\nBuilt:\n";
 print join("\n",@newrpms);
+if (defined($resultfile)) {
+  my $resultfh=new IO::File $resultfile, 'w';
+  print $resultfh join("\n",@newrpms);
+}