From: short <> Date: Mon, 6 Oct 2003 09:57:56 +0000 (+0000) Subject: Prevent -I/usr/include during Linux kernel module compilation. X-Git-Tag: lufs_0_9_6_captive3~5 X-Git-Url: http://git.jankratochvil.net/?p=lufs.git;a=commitdiff_plain;h=9f5ba7f6315a878a1769bac8a5d2460bfbd74710 Prevent -I/usr/include during Linux kernel module compilation. Workaround Red Hat kernels: before Workaround broken pre-built 'dependencies' file on installed kernel sources. --- diff --git a/kernel/Linux/prepmod.in b/kernel/Linux/prepmod.in index a458f2e..b3c93cf 100755 --- a/kernel/Linux/prepmod.in +++ b/kernel/Linux/prepmod.in @@ -27,12 +27,9 @@ use Getopt::Long; my $basedir='@datadir@/lufs'; my $vardir='@localstatedir@/lib/lufs'; -my $includedir='@includedir@'; # '/lufs' is required by C '#include' $basedir=~s#\$\Q{prefix}\E#'@prefix@';#ge; $vardir=~s#\$\Q{prefix}\E#'@prefix@';#ge; $vardir="" if $vardir=~/^@/; -$includedir=~s#\$\Q{prefix}\E#'@prefix@';#ge; -$includedir="" if $includedir=~/^@/; sub srcdir { my($uname_r)=@_; $basedir."/".($uname_r lt "2.5" ? "2.4" : "2.5"); } my $modbindir=$basedir."/modbin"; my @sources=qw(proc.c inode.c dir.c file.c symlink.c); @@ -42,7 +39,6 @@ my $kernel; my $prebuild; use vars qw($kernel_gcc_args); $kernel_gcc_args=""; -$kernel_gcc_args="-I$includedir" if $includedir; my $lufsmnt_bin; if ($0 eq "lufsmnt" || $0=~m#/lufsmnt$#) { @@ -190,7 +186,7 @@ my($kernel,$uname_r,$destmodule)=@_; my $config=_readfile "$kernel/.config","optional"; my $autoconf=_readfile "$kernel/include/linux/autoconf.h","optional"; - $cmdline.=" -DMODVERSIONS -include $kernel/include/linux/modversions.h" + $cmdline.=" -DMODVERSIONS -include $kernel/include/linux/version.h -include $kernel/include/linux/modversions.h" if 0 || $config=~/^CONFIG_MODVERSIONS=y\b/m || $autoconf=~/^#define CONFIG_MODVERSIONS\b/m @@ -207,7 +203,7 @@ my($kernel,$uname_r,$destmodule)=@_; sub build_make { -my($kernel,$uname_r,$destmodule)=@_; +my($kernel,$uname_r,$destmodule,%args)=@_; print STDERR "Using kernel sources: $kernel\n" if !$quiet; confess "Kernel sources $kernel do not contain 'Rules.make' file" if ! -f $kernel."/Rules.make"; @@ -216,6 +212,14 @@ my($kernel,$uname_r,$destmodule)=@_; do { $kdebug=$_ if !/^@/; } for ('@KDEBUG_FLAGS@'); my $predir=srcdir $uname_r; $predir=$ENV{"PWD"}."/$predir" if $predir!~m#^/#; + # Do not use existing '$kernel/tmp_include_depends' or '$kernel/.depend' + # as it may contain non-existing pathnames: + _system "make -C $kernel dep" if !$args{"nodep"}; + # Workaround a bug in at least Red Hat 2.4.18-18.8.0 + for ("$kernel/include/linux/modversions.h") { + _system "cp -p $_ $_-orig" if ! -f "$_-orig"; + _writefile $_,"#include \t/* lufs */\n"._readfile $_; + } my $cmdline="make -C $kernel" ." SUBDIRS=\"$predir\" modules" ." EXTRA_CFLAGS=\"$kernel_gcc_args\"" @@ -230,7 +234,7 @@ my($kernel,$uname_r,$destmodule)=@_; sub build { -my($kernel,$uname_r,$destmodule)=@_; +my($kernel,$uname_r,$destmodule,%args)=@_; # Debian uname(1) does not support '-p'. my $arch=_readfile "uname -p|" || _readfile "uname -m|"; @@ -243,9 +247,9 @@ my($kernel,$uname_r,$destmodule)=@_; } my $r; if (-f "$kernel/Rules.make" && -f "$kernel/.config") - { $r=build_make $kernel,$uname_r,$destmodule; } + { $r=build_make $kernel,$uname_r,$destmodule,%args; } else - { $r=build_gcc $kernel,$uname_r,$destmodule; } + { $r=build_gcc $kernel,$uname_r,$destmodule,%args; } _system "rm -f $kernel/.config" if !$single_config; return $r; @@ -254,11 +258,11 @@ my($kernel,$uname_r,$destmodule)=@_; sub prebuild_kernel { -my($dir,$vendor,$uname_r)=@_; +my($dir,$vendor,$uname_r,%args)=@_; confess "Unrecognized vendor for dir: $dir" if !$vendor; confess "Unrecognized uname_r for dir: $dir" if !$uname_r; - confess "Failed to build $dir" if !build $dir,$uname_r,$modbindir."/lufs-$vendor-$uname_r.o"; + confess "Failed to build $dir" if !build $dir,$uname_r,$modbindir."/lufs-$vendor-$uname_r.o",%args; } @@ -325,7 +329,7 @@ RHCONFIG_H_NOBOOT_EOF next if ! -f $spec_config; _system "ln -s $spec_config $dir/.config"; } - prebuild_kernel $dir,$vendor,$uname_r.$smp.".".$arch; + prebuild_kernel $dir,$vendor,$uname_r.$smp.".".$arch,"nodep"=>1; _system "rm -f $dir/.config" if !$single_config; }