Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / packaging / RedHat / openafs-buildfedora.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 my $specdir="/usr/src/redhat/SPECS";
7
8 my $fedoraversion=`rpm -q fedora-release --queryformat %{VERSION}`;
9 die "Unable to determine fedora version" if !$fedoraversion;
10
11 my %list;
12 foreach my $variant ('', 'PAE', 'kdump', 'xen') {
13 print "Working out variants - currently processing $variant\n";
14 my $append = "";
15 $append="-$variant" if $variant;
16 my @results=split(' ', `rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} " kernel$append-devel`);
17 if ($?) {
18 print "RPM lookup for variant $variant failed. Skipping\n";
19 next;
20 }
21 print join(' ', @results)."\n";
22 foreach my $package (@results) {
23 print "Got $package\n";
24 $package=~/([^\-]*\-[^\-]*)\.([^\.]*)$/;
25 my ($version, $arch) = ($1,$2);
26 die "Couldn't extract version and architecture" if !$version or !$arch;
27 my @archs=map {/^.*\-([^\-]*)/;$1;} split(' ',`ls -d /usr/src/kernels/$version$append-*`);
28 foreach my $arch (@archs) {
29 print "Adding $variant, version $version for $arch\n";
30 $list{$arch} = {} if !$list{$arch};
31 $list{$arch}{$version} =[] if !$list{$arch}{$version};
32 push @{$list{$arch}{$version}}, $variant;
33 }
34 }
35 }
36 # Build the base package
37 print "Building the base system\n";
38 system("rpmbuild -ba --define \"fedorakmod 1\" --define \"osvers fc$fedoraversion\" $specdir/openafs.spec") == 0 or exit 1;
39
40 print "Building kernel modules\n";
41
42 foreach my $arch (keys(%list)) {
43 foreach my $version (keys(%{$list{$arch}})) {
44 my $variants = join(" ", map {$_ or "''"} @{$list{$arch}{$version}});
45 print "Building with $version for $arch with variants $variants\n";
46 system("rpmbuild -bb --define \"fedorakmod 1\" --define \"osvers fc$fedoraversion\" --target $arch --define \"build_modules 1\" --define \"kernvers $version\" --define \"kvariants $variants\" $specdir/openafs.spec") == 0 or exit 1;
47 }
48 }
49