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;
+ }
}
}
$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";
}