my $ignorerelease = 1;
my @newrpms;
-# Words cannot describe how gross this is. Yum no longer provides usable
-# output, so we need to call the python interface. At some point this
-# probably means this script should be entirely rewritten in python,
-# but this is not that point.
-
-sub findKernelModules {
+sub findKernels {
my ($root, $uname, @modules) = @_;
- my $modlist = join(",",map { "'".$_."'" } @modules);
- my $python = <<EOS;
-import yum;
-import sys;
-base = yum.YumBase();
-base.doConfigSetup('$root/etc/yum.conf', '$root');
-base.doRepoSetup();
-base.doSackSetup();
-EOS
+ my $modlist = join(" ", @modules);
+ my @kernels;
if ($uname) {
- $python.= <<EOS;
-
-for pkg, values in base.searchPackageProvides(['kernel-devel-uname-r']).items():
- if values[0].find('kernel-devel-uname-r = ') != -1:
- print '%s.%s %s' % (pkg.name, pkg.arch, values[0].replace('kernel-devel-uname-r = ',''));
-
-EOS
+ @kernels = `repoquery --whatprovides kernel-devel-uname-r --qf "%{name}.%{arch} %{version}-%{release}" -c $root/etc/yum.conf`;
} else {
- $python.= <<EOS;
-
-print '\\n'.join(['%s.%s %s' % (x.name, x.arch, x.printVer()) for x in base.searchPackageProvides([$modlist]).keys()]);
-
-EOS
+ @kernels = `repoquery --whatprovides $modlist --qf "%{name}.%{arch} %{version}-%{release}" -c $root/etc/yum.conf`;
}
-# my $output = `$suser -c "python -c \\\"$python\\\"" `;
- my $output = `python -c "$python"`;
-
- die "Python script to figure out available kernels failed : $output"
- if $?;
-
- return $output;
+ return @kernels;
}
-my %platconf = ( "fedora-5-i386" => { osver => "fc5",
- kmod => '1',
- basearch => 'i386',
- updaterepo => 'updates-released',
- results => 'fedora-5/i386' },
- "fedora-5-x86_64" => { osver => "fc5",
+my %platconf = ( "centos-4-i386" => { osver => "el4",
+ kmod => '1',
+ basearch => 'i386',
+ updaterepo => 'update',
+ results => 'rhel4/i386' },
+ "centos-4-x86_64" => { osver => "el4",
kmod => '1',
basearch => 'x86_64',
- updaterepo => 'updates-released',
- results => 'fedora-5/x86_64' },
- "fedora-6-i386" => { osver => "fc6",
- kmod => '1',
- basearch => 'i386',
- updaterepo => 'updates-released',
- results => "fedora-6/i386" },
- "fedora-6-x86_64" => { osver => "fc6",
- kmod => '1',
- basearch => 'x86_64',
- updaterepo => 'updates-released',
- results => "fedora-6/x86_64" },
- "fedora-7-i386" => { osver => "fc7",
+ updaterepo => 'update',
+ results => "rhel4/x86_64" },
+ "centos-5-i386" => { osver => "el5",
kmod => '1',
basearch => 'i386',
- updaterepo => 'updates-released',
- results => "fedora-7/i386" },
- "fedora-7-x86_64" => { osver => "fc7",
+ updaterepo => 'update',
+ results => "rhel5/i386" },
+ "centos-5-x86_64" => { osver => "el5",
kmod => '1',
- basearch => 'x86_64',
- updaterepo => 'updates-released',
- results => "fedora-7/x86_64" },
- "fedora-8-i386" => { osver => "fc8",
+ basearch => 'x86_64',
+ updaterepo => 'update',
+ results => "rhel5/x86_64" },
+ "centos-6-i386" => { osver => "el6",
kmod => '1',
basearch => 'i386',
- updaterepo => 'updates-released',
- results => "fedora-8/i386" },
- "fedora-8-x86_64" => { osver => "fc8",
+ updaterepo => 'update',
+ results => "rhel6/i386" },
+ "centos-6-x86_64" => { osver => "el6",
kmod => '1',
- basearch => 'x86_64',
- updaterepo => 'updates-released',
- results => "fedora-8/x86_64" },
- "centos-4-i386" => { osver => "el4",
+ basearch => 'x86_64',
+ updaterepo => 'update',
+ results => "rhel6/x86_64" },
+ "epel-4-i386" => { osver => "el4",
kmod => '1',
basearch => 'i386',
updaterepo => 'update',
results => 'rhel4/i386' },
- "centos-4-x86_64" => { osver => "el4",
+ "epel-4-x86_64" => { osver => "el4",
kmod => '1',
basearch => 'x86_64',
updaterepo => 'update',
results => "rhel4/x86_64" },
- "centos-5-i386" => { osver => "el5",
+ "epel-5-i386" => { osver => "el5",
kmod => '1',
basearch => 'i386',
updaterepo => 'update',
results => "rhel5/i386" },
- "centos-5-x86_64" => { osver => "el5",
+ "epel-5-x86_64" => { osver => "el5",
kmod => '1',
basearch => 'x86_64',
updaterepo => 'update',
results => "rhel5/x86_64" },
- "fedora-9-i386" => { osver => "fc9",
- kmod => '1',
- basearch => 'i386',
- updaterepo => "updates-released",
- results => 'fedora-9/i386' },
- "fedora-9-x86_64" => { osver => "fc9",
- kmod => "1",
- 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',
+ "epel-6-i386" => { osver => "el6",
+ 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",
+ updaterepo => 'update',
+ results => "rhel6/i386" },
+ "epel-6-x86_64" => { osver => "el6",
+ kmod => '1',
+ basearch => 'x86_64',
+ updaterepo => 'update',
+ results => "rhel6/x86_64" },
+ "fedora-14-i386" => { osver => "fc14",
kmod => "1",
basearch => "i386",
-# updaterepo => "updates-released",
- results => "fedora-13/i386" },
- "fedora-13-x86_64" => { osver => "fc13",
+ results => "fedora-14/i386" },
+ "fedora-14-x86_64" => { osver => "fc14",
kmod => "1",
basearch => "x86_64",
-# updaterepo => "updates-released",
- results => "fedora-13/x86_64" },
-
+ results => "fedora-14/x86_64" },
+ "fedora-15-i386" => { osver => "fc15",
+ kmod => "1",
+ basearch => "i386",
+ results => "fedora-15/i386" },
+ "fedora-15-x86_64" => { osver => "fc15",
+ kmod => "1",
+ basearch => "x86_64",
+ results => "fedora-15/x86_64" },
"fedora-development-i386" => { osver => "fcd",
kmod => '1',
basearch => 'i386',
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) {
my $arbitraryversion = "";
- my $modules;
+ my @kernels;
if ($platform=~/fedora-development/) {
- $modules = findKernelModules($root, 0, "kernel-devel");
+ @kernels = findKernels($root, 0, "kernel-devel");
} elsif ($platform=~/centos-4/) {
- $modules = findKernelModules($root, 0, "kernel-devel", "kernel-smp-devel",
+ @kernels = findKernels($root, 0, "kernel-devel", "kernel-smp-devel",
"kernel-hugemem-devel", "kernel-xenU-devel");
} else {
- $modules = findKernelModules($root, 0, 'kernel-devel');
+ @kernels = findKernels($root, 0, 'kernel-devel');
}
- foreach my $module (split(/\n/, $modules)) {
- chomp $module;
- my ($package, $version, $repo)=split(/\s+/, $module);
+ foreach my $kernel (@kernels) {
+ chomp $kernel;
+ my ($package, $version)=split(/\s+/, $kernel);
my ($arch) = ($package=~/\.(.*)$/);
my ($variant) = ($package=~/kernel-(.*)-devel/);
$variant = "" if !defined($variant);
next if ($arch eq "noarch");
next
if (exists($badkernels{$version}) && ($badkernels{$version}{$variant}));
- if ($platform=~/fedora-5/) {
- 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-10/ || $platform=~/fedora-development/) {
- next if ($variant =~/debug$/); # Fedora 8 debug kernels are bad
- }
+ next if ($variant =~/debug$/); # Fedora debug kernels are bad
+
print "$arch : $variant : $version\n";
$modulelist{$arch} ={} if !$modulelist{$arch};
$modulelist{$arch}{$version} = {} if !$modulelist{$arch}{$version};
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) {
' --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;
" --arch ".$arch.
' --define "fedorakmod 1" '.
' --define "osvers '.$osver.'" '.
+ ' --define "dist .'.$osver.'" '.
' --define "kernvers '.$version.'" '.
' --define "kvariants '.$variants.'" '.
' --define "build_modules 1" '.