RedHat packaging: Use %{dist} not %{osver}
authorSimon Wilkinson <sxw@your-file-system.com>
Fri, 18 Feb 2011 00:36:33 +0000 (00:36 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 18 Feb 2011 06:08:45 +0000 (22:08 -0800)
There's a standard mechanism for defining a RPMs target
distribution in the Fedora and RedHat worlds. This is to use the
%{dist} macro, and to insert it at the end (not the beginning) of
the release field.

Move over to using this standard mechanism, and modify the build
system to match. Note that this means that RPM names have now
changed slightly.

Change-Id: I5a4f1ad827223f48658f595ac424ab64fe98ed39
Reviewed-on: http://gerrit.openafs.org/3981
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/packaging/RedHat/mockbuild.pl
src/packaging/RedHat/openafs.spec.in

index 55dd302..79d4c73 100755 (executable)
@@ -213,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) {
@@ -301,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) {
@@ -314,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, $resultdir."/".$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;
@@ -372,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" '.
index 6c13ed3..6c94a41 100644 (file)
@@ -2,15 +2,10 @@
 
 %define afsvers @VERSION@
 %define pkgvers @LINUX_PKGVER@
-# for beta/rc releases make pkgrel 0.X.<tag>
+# for beta/rc releases make pkgrel 0.<tag>
 # for real releases make pkgrel 1 (or more for extra releases)
-#%define pkgrel 0.1.rc1
 %define pkgrel @LINUX_PKGREL@
 
-%if %{?osvers:0}%{!?osvers:1}
-%define osvers 1
-%endif
-
 %{!?fedorakmod: %define fedorakmod 1}
 %{!?build_dkmspkg: %define build_dkmspkg 1}
 
@@ -87,7 +82,7 @@
 # End legacy kernel build stuff
 %endif 
 
-%define dkms_version %{osvers}.%{pkgrel}
+%define dkms_version %{pkgrel}%{?dist}
 
 # Set 'debugspec' to 1 if you want to debug the spec file.  This will
 # not remove the installed tree as part of the %clean operation
 Summary: OpenAFS distributed filesystem
 Name: openafs
 Version: %{pkgvers}
-Release: %{osvers}.%{pkgrel}
+Release: %{pkgrel}%{?dist}
 License: IBM Public License
 URL: http://www.openafs.org
 BuildRoot: %{_tmppath}/%{name}-%{version}-root
@@ -321,7 +316,7 @@ what gets built:
                                   or kdump 
 
 To a kernel module for your running kernel, just run:
-  rpmbuild --rebuild --target=`uname -m` openafs-%{pkgvers}-%{osvers}.%{pkgrel}.src.rpm
+  rpmbuild --rebuild --target=`uname -m` openafs-%{pkgvers}-%{pkgrel}%{?dist}.src.rpm
 
 ##############################################################################
 #