Fixed to try pre-built modules even if no kernel headers are available.
authorshort <>
Thu, 21 Aug 2003 07:59:17 +0000 (07:59 +0000)
committershort <>
Thu, 21 Aug 2003 07:59:17 +0000 (07:59 +0000)
+Compatibility with older RedHat kernel-source RPM packages.

kernel/Linux/prepmod.in

index 48f4114..d6870a7 100755 (executable)
@@ -104,25 +104,28 @@ confess "Failed to detect kernel version" if !$uname_r;
 my $uname_r_base=($uname_r=~/^([^-]+)/)[0];
 print STDERR "Running kernel version: $uname_r (base version $uname_r_base)\n" if !$quiet;
 
+my $moduledir="/lib/modules/$uname_r/kernel/fs/lufs";
+print STDERR "Destination module directory: $moduledir\n" if !$quiet;
+
 do { $kernel||=$_ if -d $_; } for ("/lib/modules/$uname_r/build");
 do { $kernel||=$_ if -d $_; } for ("/usr/src/kernel-headers-$uname_r");
 do { $kernel||=$_ if -d $_; } for ("/usr/src/linux-$uname_r");
 do { $kernel||=$_ if -d $_; } for ("/usr/src/linux-$uname_r_base");
 do { $kernel||=$_ if -d $_; } for ("/usr/src/linux");
-confess "Failed to find kernel headers for $uname_r" if !$kernel;
-
-my $moduledir="/lib/modules/$uname_r/kernel/fs/lufs";
-print STDERR "Destination module directory: $moduledir\n" if !$quiet;
-
-for ("$vardir/lufs.o") {
-       next if !$vardir;
-       # Create the 'lufs.o' in our /var/lib directory and only link it
-       # to prevent using obsolete modules after upgrading 'lufs' package.
-       # depmod(1) will take the larget symlink name - we must create directory for  it.
-       if (build($kernel,$uname_r,$_)) {
-               do { cluck "Failed to symlink $_"; next; }
-                               if _system "rm -rf $moduledir; mkdir -p $moduledir; ln -s $_ $moduledir/lufs.o";
-               _pass 1;
+if (!$kernel) {
+       print STDERR "Failed to find kernel headers for $uname_r" if !$kernel && !$quiet;
+       }
+else {
+       for ("$vardir/lufs.o") {
+               next if !$vardir;
+               # Create the 'lufs.o' in our /var/lib directory and only link it
+               # to prevent using obsolete modules after upgrading 'lufs' package.
+               # depmod(1) will take the larget symlink name - we must create directory for  it.
+               if (build($kernel,$uname_r,$_)) {
+                       do { cluck "Failed to symlink $_"; next; }
+                                       if _system "rm -rf $moduledir; mkdir -p $moduledir; ln -s $_ $moduledir/lufs.o";
+                       _pass 1;
+                       }
                }
        }
 
@@ -189,11 +192,16 @@ my($rpm)=@_;
        $vendor=~tr/ //d;
        my $uname_r;
        $uname_r||=($rpm=~m#/kernel-source-([^-]+-[^-]+)[.][^.]+[.]rpm$#)[0];
+       my $uname_r_base=($uname_r=~/^([^-]+)/)[0];
        _system "rm -rf $tmp_dir; mkdir $tmp_dir; set -e;"
                        # Here we will extract even some false 'include's but we filter dirs just for speed/space.
                        ." rpm2cpio '$rpm' | (cd $tmp_dir; cpio -id --quiet ./usr/src/linux*/{.config,include/*})"
                        and confess "Extraction of: $rpm";
-       prebuild_kernel $tmp_dir."/usr/src/linux-$uname_r",$vendor,$uname_r;
+       my $dir;
+       do { $dir||=$_ if -d $_; } for ($tmp_dir."/usr/src/linux-$uname_r");
+       do { $dir||=$_ if -d $_; } for ($tmp_dir."/usr/src/linux-$uname_r_base");       # older RedHat kernels
+       $dir or confess "Kernel source tree not found in: $rpm";
+       prebuild_kernel $dir,$vendor,$uname_r;
        _system "rm -rf $tmp_dir" and confess "Deletion of: $tmp_dir";
 }