redhat-fedora-build-driver-20071026
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Fri, 26 Oct 2007 17:20:22 +0000 (17:20 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 26 Oct 2007 17:20:22 +0000 (17:20 +0000)
driver script for fedora builds

src/packaging/RedHat/openafs-buildfedora.pl [new file with mode: 0755]

diff --git a/src/packaging/RedHat/openafs-buildfedora.pl b/src/packaging/RedHat/openafs-buildfedora.pl
new file mode 100755 (executable)
index 0000000..69e3721
--- /dev/null
@@ -0,0 +1,46 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+my $specdir="/usr/src/redhat/SPECS";
+
+my $fedoraversion=`rpm -q fedora-release --queryformat %{VERSION}`;
+die "Unable to determine fedora version" if !$fedoraversion;
+
+my %list;
+foreach my $variant ('', 'PAE', 'kdump', 'xen') {
+  print "Working out variants - currently processing $variant\n";
+  my $append = "";
+  $append="-$variant" if $variant;
+  my @results=split(' ', `rpm -q --queryformat "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} " kernel$append-devel`);
+  if ($?) {
+    print "RPM lookup for variant $variant failed. Skipping\n";
+    next;
+  }
+  print join(' ', @results)."\n";
+  foreach my $package (@results) {
+    print "Got $package\n";
+    $package=~/([^\-]*\-[^\-]*)\.([^\.]*)$/;
+    my ($version, $arch) = ($1,$2);
+    die "Couldn't extract version and architecture" if !$version or !$arch;
+    $list{$arch} = {} if !$list{$arch};
+    $list{$arch}{$version} =[] if !$list{$arch}{$version};
+    push @{$list{$arch}{$version}}, $variant;
+  }
+}
+
+# Build the base package
+print "Building the base system\n";
+system("rpmbuild -ba --define \"fedorakmod 1\" --define \"osvers fc$fedoraversion\" $specdir/openafs.spec") == 0 or exit 1;
+
+print "Building kernel modules\n";
+
+foreach my $arch (keys(%list)) {
+  foreach my $version (keys(%{$list{$arch}})) {
+    my $variants = join(" ", map {$_ or "''"} @{$list{$arch}{$version}});
+    print "Building with $version for $arch with variants $variants\n";
+    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;
+  }
+}
+