From 2b094cae6c39bc9e2d8f23f4654e137876b25d57 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. Change-Id: I5a4f1ad827223f48658f595ac424ab64fe98ed39 Reviewed-on: http://gerrit.openafs.org/3981 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 6c13ed31a..6c94a4185 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