mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
15a2ee74d2
Fix headers_install.pl and headers_check.pl to be compatible with versions of Perl less than 5.6.0. It has been tested with Perl 5.005_03 and 5.8.8. I realize this may not be an issue for most people, but there will still be some that hit it, I imagine. There are three basic issues: 1. Prior to 5.6.0 open() only used 2 arguments, and the versions of the scripts in 2.6.27.1 use 3. 2. 5.6.0 also introduced the ability to use uninitialized scalar variables as file handles, which the current scripts make use of. 3. Lastly, 5.6.0 also introduced the pragma 'use warnings'. We can use the -w switch and be backwards compatible. Signed-off-by: Jeremy Huntwork <jhuntwork@lightcubesolutions.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
47 lines
1.4 KiB
Perl
47 lines
1.4 KiB
Perl
#!/usr/bin/perl -w
|
|
#
|
|
# headers_install prepare the listed header files for use in
|
|
# user space and copy the files to their destination.
|
|
#
|
|
# Usage: headers_install.pl readdir installdir arch [files...]
|
|
# readdir: dir to open files
|
|
# installdir: dir to install the files
|
|
# arch: current architecture
|
|
# arch is used to force a reinstallation when the arch
|
|
# changes because kbuild then detect a command line change.
|
|
# files: list of files to check
|
|
#
|
|
# Step in preparation for users space:
|
|
# 1) Drop all use of compiler.h definitions
|
|
# 2) Drop include of compiler.h
|
|
# 3) Drop all sections defined out by __KERNEL__ (using unifdef)
|
|
|
|
use strict;
|
|
|
|
my ($readdir, $installdir, $arch, @files) = @ARGV;
|
|
|
|
my $unifdef = "scripts/unifdef -U__KERNEL__";
|
|
|
|
foreach my $file (@files) {
|
|
local *INFILE;
|
|
local *OUTFILE;
|
|
my $tmpfile = "$installdir/$file.tmp";
|
|
open(INFILE, "<$readdir/$file")
|
|
or die "$readdir/$file: $!\n";
|
|
open(OUTFILE, ">$tmpfile") or die "$tmpfile: $!\n";
|
|
while (my $line = <INFILE>) {
|
|
$line =~ s/([\s(])__user\s/$1/g;
|
|
$line =~ s/([\s(])__force\s/$1/g;
|
|
$line =~ s/([\s(])__iomem\s/$1/g;
|
|
$line =~ s/\s__attribute_const__\s/ /g;
|
|
$line =~ s/\s__attribute_const__$//g;
|
|
$line =~ s/^#include <linux\/compiler.h>//;
|
|
printf OUTFILE "%s", $line;
|
|
}
|
|
close OUTFILE;
|
|
close INFILE;
|
|
system $unifdef . " $tmpfile > $installdir/$file";
|
|
unlink $tmpfile;
|
|
}
|
|
exit 0;
|