From 29d624a98cca1a2e31fc8cc51c7e4d1577b5282d Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Fri, 18 Feb 2011 00:36:33 +0000 Subject: [PATCH] RedHat packaging: Use %{dist} not %{osver} 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. Reviewed-on: http://gerrit.openafs.org/3981 Tested-by: BuildBot Reviewed-by: Derrick Brashear (cherry picked from commit 2b094cae6c39bc9e2d8f23f4654e137876b25d57) Change-Id: I764a91e787acb2d2e3d0595cb344bc5b44465bd9 Reviewed-on: http://gerrit.openafs.org/3984 Tested-by: BuildBot Reviewed-by: Derrick Brashear --- src/packaging/RedHat/mockbuild.pl | 45 +++++++++++++++++++--------- src/packaging/RedHat/openafs.spec.in | 13 +++----- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/packaging/RedHat/mockbuild.pl b/src/packaging/RedHat/mockbuild.pl index 55dd302f9..79d4c733b 100755 --- a/src/packaging/RedHat/mockbuild.pl +++ b/src/packaging/RedHat/mockbuild.pl @@ -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. +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" '. diff --git a/src/packaging/RedHat/openafs.spec.in b/src/packaging/RedHat/openafs.spec.in index bc4bf49a9..100348f41 100644 --- a/src/packaging/RedHat/openafs.spec.in +++ b/src/packaging/RedHat/openafs.spec.in @@ -2,15 +2,10 @@ %define afsvers @VERSION@ %define pkgvers @LINUX_PKGVER@ -# for beta/rc releases make pkgrel 0.X. +# for beta/rc releases make pkgrel 0. # 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 @@ -240,7 +235,7 @@ 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 ############################################################################## # -- 2.39.5