From d18f5104f57152dfb6d1125a2d3a8bf17a266f44 Mon Sep 17 00:00:00 2001 From: Simon Wilkinson Date: Tue, 22 Apr 2008 13:50:23 +0000 Subject: [PATCH] linux-fedora9-packaging-updates-20080422 LICENSE IPL10 make build system able to cope with fedora 9 --- src/packaging/RedHat/mockbuild.pl | 88 ++++++++++++++++++++------- src/packaging/RedHat/openafs-kmodtool | 15 +++-- src/packaging/RedHat/openafs.spec.in | 39 ++++++++++-- 3 files changed, 108 insertions(+), 34 deletions(-) diff --git a/src/packaging/RedHat/mockbuild.pl b/src/packaging/RedHat/mockbuild.pl index ace74ca6b..d632acc97 100755 --- a/src/packaging/RedHat/mockbuild.pl +++ b/src/packaging/RedHat/mockbuild.pl @@ -20,6 +20,50 @@ my $buildall = 0; 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 { + my ($root, $uname, @modules) = @_; + + my $modlist = join(",",map { "'".$_."'" } @modules); + my $python = < { osver => "fc5", kmod => '1', basearch => 'i386', @@ -80,21 +124,21 @@ my %platconf = ( "fedora-5-i386" => { osver => "fc5", basearch => 'x86_64', updaterepo => 'update', results => "el5/x86_64" }, -# "fedora-development-i386" => { osver => "fcd", -# kmod => '1', -# basearch => 'i386', -# results => 'fedora-devel/i386'}, -# "fedora-development-x86_64" => { osver => "fcd", -# kmod => '1', -# basearch => 'x86_64', -# results => 'fedora-devel/x86_64'} + "fedora-development-i386" => { osver => "fcd", + kmod => '1', + basearch => 'i386', + results => 'fedora-devel/i386'}, + "fedora-development-x86_64" => { osver => "fcd", + kmod => '1', + basearch => 'x86_64', + results => 'fedora-devel/x86_64'} ); # The following are kernels that we can't successfully build modules against # due to issues in the packaged kernel-devel RPM. my %badkernels = ( - "2.6.21-2950.fc8" => { "xen" => 1} # Missing build ID + "2.6.21-2950.fc8" => { "xen" => 1}, # Missing build ID ); my $help; @@ -155,21 +199,19 @@ foreach my $platform (@platforms) { print "Finding available kernel modules\n"; my $arbitraryversion = ""; - my $modules=`$suser -c 'yum --installroot $root provides kernel-devel'`; - if ($modules eq "") { - $modules=`$suser -c 'yum -d 2 --installroot $root provides kernel-devel'`; - my $modulen; - my %modulel; - foreach $modulen (split(/\n/, $modules)) { - my ($pk, $colon, $comment)=split(/\s+/, $modulen); - if ($pk =~ /^kernel/) { - $modulel{$pk} = "$pk"; - } - } - $modulen=join(" ", keys(%modulel)); - $modules=`$suser -c 'yum --installroot $root list $modulen'`; + + my $modules; + if ($platform=~/fedora-development/) { + $modules = findKernelModules($root, 0, "kernel-devel"); + } elsif ($platform=~/centos-4/) { + $modules = findKernelModules($root, 0, "kernel-devel", "kernel-smp-devel", + "kernel-hugemem-devel", "kernel-xenU-devel"); + } else { + $modules = findKernelModules($root, 0, 'kernel-devel'); } + foreach my $module (split(/\n/, $modules)) { + chomp $module; my ($package, $version, $repo)=split(/\s+/, $module); my ($arch) = ($package=~/\.(.*)$/); my ($variant) = ($package=~/kernel-(.*)-devel/); @@ -182,7 +224,7 @@ foreach my $platform (@platforms) { next if ($variant eq "xen0"); # Fedora 5 has some bad xen0 kernel-devels next if ($variant eq "smp"); } - if ($platform=~/fedora-8/) { + if ($platform=~/fedora-8/ || $platform=~/fedora-9/ || $platform=~/fedora-development/) { next if ($variant =~/debug$/); # Fedora 8 debug kernels are bad } print "$arch : $variant : $version\n"; diff --git a/src/packaging/RedHat/openafs-kmodtool b/src/packaging/RedHat/openafs-kmodtool index 5487547a0..ac887d2ff 100644 --- a/src/packaging/RedHat/openafs-kmodtool +++ b/src/packaging/RedHat/openafs-kmodtool @@ -70,11 +70,16 @@ get_rpmtemplate () *.EL*) kdep="kernel${dashvariant}-%{_target_cpu} = ${verrel}" ;; *) kdep="kernel-%{_target_cpu} = ${verrel}${variant}" ;; esac + case "$verrel" in + *.fc9*) kname="${verrel}.%{_target_cpu}${variant:+.${variant}}" ;; + *) kname="${verrel}${variant}" ;; + esac + cat < /dev/null || : +/sbin/depmod -aeF /boot/System.map-${kname} ${kname} > /dev/null || : %postun -n kmod-${kmod_name}${dashvariant} -/sbin/depmod -aF /boot/System.map-${verrel}${variant} ${verrel}${variant} &> /dev/null || : +/sbin/depmod -aF /boot/System.map-${kname} ${kname} &> /dev/null || : %files -n kmod-${kmod_name}${dashvariant} %defattr(644,root,root,755) -/lib/modules/${verrel}${variant}/extra/${kmod_name}/ +/lib/modules/${kname}/extra/${kmod_name}/ EOF } diff --git a/src/packaging/RedHat/openafs.spec.in b/src/packaging/RedHat/openafs.spec.in index 13d3b8a2b..b0dfa2ebe 100644 --- a/src/packaging/RedHat/openafs.spec.in +++ b/src/packaging/RedHat/openafs.spec.in @@ -37,7 +37,13 @@ %define upvar "" %{!?kvariants: %define kvariants %{?upvar}} -%{!?ksrcdir: %define ksrcdir %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}} +%if %{?ksrcdir:1}%{!?ksrcdir:0} + if ( -d %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}) ; then + %define ksrcdir %{_usrsrc}/kernels/%{kverrel}-%{_target_cpu}} + else + %define ksrcdir %{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}} + fi +%endif %else # Legacy kernel build stuff @@ -821,7 +827,11 @@ ksrc="" %if %{fedorakmod} for kvariant in %{kvariants} ; do if [ -z "${kvariant}" -o -z "$ksrc" ] ; then - ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + if [ -d %{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} ] ; then + ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + else + ksrc=%{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant} + fi fi done %endif @@ -854,6 +864,12 @@ make only_libafs_tree || exit 1 %if %{fedorakmod} && %{build_modules} for kvariant in %{kvariants} ; do if [ -n "${kvariant}" ] ; then + if [ -d %{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} ] ; then + ksrc=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} + else + ksrc=%{_usrsrc}/kernels/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant} + fi + cp -R libafs_tree _kmod_build_${kvariant} pushd _kmod_build_${kvariant} ./configure --with-afs-sysname=${sysname} \ @@ -861,7 +877,7 @@ for kvariant in %{kvariants} ; do --libdir=%{_libdir} \ --bindir=%{_bindir} \ --sbindir=%{_sbindir} \ - --with-linux-kernel-headers=%{_usrsrc}/kernels/%{kverrel}${kvariant:+-$kvariant}-%{_target_cpu} \ + --with-linux-kernel-headers=${ksrc} \ %if %{krb5support} --with-krb5-conf=/usr/kerberos/bin/krb5-config \ %endif @@ -1196,14 +1212,25 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/libafsrpc.so.* for kvariant in %{kvariants} do if [ -n "$kvariant" ] ; then - srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP + if [ -d _kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP ] ; then + srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}${kvariant}-SP + else + srcdir=_kmod_build_$kvariant/src/libafs/MODLOAD-%{kverrel}.%{_target_cpu}.${kvariant}-SP + fi else srcdir=${sysname}/dest/root.client%{_prefix}/vice/etc/modload fi - dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}${kvariant}/extra/openafs + if [ -f ${srcdir}/libafs-%{kverrel}${kvariant}.ko ] ; then + srcmod=${srcdir}/libafs-%{kverrel}${kvariant}.ko + dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}${kvariant}/extra/openafs + else + srcmod=${srcdir}/libafs-%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant}.ko + dstdir=$RPM_BUILD_ROOT/lib/modules/%{kverrel}.%{_target_cpu}${kvariant:+.$kvariant}/extra/openafs + fi + mkdir -p ${dstdir} - install -m 755 ${srcdir}/libafs-%{kverrel}${kvariant}.ko $dstdir/openafs.ko + install -m 755 ${srcmod} ${dstdir}/openafs.ko done %else # Install the kernel modules -- 2.39.5