* [PATCH 3/3] convert headers_install.pl to headers_install.sh
[not found] <1361944667.957820@landley.net>
@ 2013-02-27 5:58 ` Rob Landley
2013-02-28 8:19 ` Michal Marek
0 siblings, 1 reply; 6+ messages in thread
From: Rob Landley @ 2013-02-27 5:58 UTC (permalink / raw)
To: linux-kbuild
Cc: linux-kernel, Thomas Gleixner, Josh Boyer, Paul E. McKenney,
Andrew Morton, David Howells, Michal Marek, Sam Ravnborg
From: Rob Landley <rob@landley.net>
Remove perl from make headers_install by replacing a perl script (doing
a simple regex search and replace) with a smaller, faster, simpler,
POSIX-2008 shell script implementation. The new shell script is a single
for loop calling sed and piping its output through unifdef to produce the
target file.
Same as last time except for minor tweak to deal with code review from here:
http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html
(Note that this drops the "arch" argument, which isn't used. Kbuild
already points to the right input files on the command line.)
Signed-off-by: Rob Landley <rob@landley.net>
---
scripts/Makefile.headersinst | 4 +-
scripts/headers_install.pl | 63 ---------------------------------
scripts/headers_install.sh | 43 ++++++++++++++++++++++
3 files changed, 45 insertions(+), 65 deletions(-)
diff -ruN linux-3.1/scripts/headers_install.sh linux-2.6.30/scripts/headers_install.sh
--- linux-3.1/scripts/headers_install.sh
+++ linux/scripts/headers_install.sh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+if [ $# -lt 1 ]
+then
+ echo "Usage: headers_install.sh OUTDIR [FILES...]
+ echo
+ echo "Prepares kernel header files for use by user space, by removing"
+ echo "all compiler.h definitions and #includes, removing any"
+ echo "#ifdef __KERNEL__ sections, and putting __underscores__ around"
+ echo "asm/inline/volatile keywords."
+ echo
+ echo "OUTDIR: directory to write each userspace header FILE to."
+ echo "FILES: list of header files to operate on."
+
+ exit 1
+fi
+
+# Grab arguments
+
+OUTDIR="$1"
+shift
+
+# Iterate through files listed on command line
+
+FILE=
+trap 'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"' EXIT
+for i in "$@"
+do
+ FILE="$(basename "$i")"
+ sed -r \
+ -e 's/([ \t(])(__user|__force|__iomem)[ \t]/\1/g' \
+ -e 's/__attribute_const__([ \t]|$)/\1/g' \
+ -e 's@^#include <linux/compiler.h>@@' \
+ -e 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g' \
+ -e 's/(^|[ \t(])(inline|asm|volatile)([ \t(]|$)/\1__\2__\3/g' \
+ -e 's@#(ifndef|define|endif[ \t]*/[*])[ \t]*_UAPI@#\1 @' \
+ "$i" > "$OUTDIR/$FILE.sed" || exit 1
+ scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__ "$OUTDIR/$FILE.sed" \
+ > "$OUTDIR/$FILE"
+ [ $? -gt 1 ] && exit 1
+ rm -f "$OUTDIR/$FILE.sed"
+done
+trap - EXIT
diff -ruN linux-3.1/scripts/Makefile.headersinst
--- linux-3.1/scripts/Makefile.headersinst
+++ linux/scripts/Makefile.headersinst
@@ -71,7 +71,7 @@
quiet_cmd_install = INSTALL $(printdir) ($(words $(all-files))\
file$(if $(word 2, $(all-files)),s))
cmd_install = \
- $(PERL) $< $(installdir) $(SRCARCH) $(input-files); \
+ $(CONFIG_SHELL) $< $(installdir) $(input-files); \
for F in $(wrapper-files); do \
echo "\#include <asm-generic/$$F>" > $(installdir)/$$F; \
done; \
@@ -97,7 +97,7 @@
@:
targets += $(install-file)
-$(install-file): scripts/headers_install.pl $(input-files) FORCE
+$(install-file): scripts/headers_install.sh $(input-files) FORCE
$(if $(unwanted),$(call cmd,remove),)
$(if $(wildcard $(dir $@)),,$(shell mkdir -p $(dir $@)))
$(call if_changed,install)
--- a/scripts/headers_install.pl
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/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...]
-# installdir: dir to install the files to
-# 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 ($installdir, $arch, @files) = @ARGV;
-
-my $unifdef = "scripts/unifdef -U__KERNEL__ -D__EXPORTED_HEADERS__";
-
-foreach my $filename (@files) {
- my $file = $filename;
- $file =~ s!^.*/!!;
-
- my $tmpfile = "$installdir/$file.tmp";
-
- open(my $in, '<', $filename)
- or die "$filename: $!\n";
- open(my $out, '>', $tmpfile)
- or die "$tmpfile: $!\n";
- while (my $line = <$in>) {
- $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/\b__packed\b/__attribute__((packed))/g;
- $line =~ s/^#include <linux\/compiler.h>//;
- $line =~ s/(^|\s)(inline)\b/$1__$2__/g;
- $line =~ s/(^|\s)(asm)\b(\s|[(]|$)/$1__$2__$3/g;
- $line =~ s/(^|\s|[(])(volatile)\b(\s|[(]|$)/$1__$2__$3/g;
- $line =~ s/#ifndef\s+_UAPI/#ifndef /;
- $line =~ s/#define\s+_UAPI/#define /;
- $line =~ s!#endif\s+/[*]\s*_UAPI!#endif /* !;
- printf {$out} "%s", $line;
- }
- close $out;
- close $in;
-
- system $unifdef . " $tmpfile > $installdir/$file";
- # unifdef will exit 0 on success, and will exit 1 when the
- # file was processed successfully but no changes were made,
- # so abort only when it's higher than that.
- my $e = $? >> 8;
- if ($e > 1) {
- die "$tmpfile: $!\n";
- }
- unlink $tmpfile;
-}
-exit 0;
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] convert headers_install.pl to headers_install.sh
2013-02-27 5:58 ` [PATCH 3/3] convert headers_install.pl to headers_install.sh Rob Landley
@ 2013-02-28 8:19 ` Michal Marek
2013-03-01 5:07 ` Rob Landley
2013-04-09 10:52 ` Michal Marek
0 siblings, 2 replies; 6+ messages in thread
From: Michal Marek @ 2013-02-28 8:19 UTC (permalink / raw)
To: Rob Landley
Cc: linux-kbuild, linux-kernel, Thomas Gleixner, Josh Boyer,
Paul E. McKenney, Andrew Morton, David Howells, Sam Ravnborg
On 27.2.2013 06:58, Rob Landley wrote:
> From: Rob Landley <rob@landley.net>
>
> Remove perl from make headers_install by replacing a perl script (doing
> a simple regex search and replace) with a smaller, faster, simpler,
> POSIX-2008 shell script implementation. The new shell script is a single
> for loop calling sed and piping its output through unifdef to produce the
> target file.
>
> Same as last time except for minor tweak to deal with code review from here:
> http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html
>
> (Note that this drops the "arch" argument, which isn't used. Kbuild
> already points to the right input files on the command line.)
>
> Signed-off-by: Rob Landley <rob@landley.net>
Looks good, I will apply it after v3.9-rc1 is out.
Michal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] convert headers_install.pl to headers_install.sh
2013-02-28 8:19 ` Michal Marek
@ 2013-03-01 5:07 ` Rob Landley
2013-04-09 10:52 ` Michal Marek
1 sibling, 0 replies; 6+ messages in thread
From: Rob Landley @ 2013-03-01 5:07 UTC (permalink / raw)
To: Michal Marek
Cc: linux-kbuild, linux-kernel, Thomas Gleixner, Josh Boyer,
Paul E. McKenney, Andrew Morton, David Howells, Sam Ravnborg
On 02/28/2013 02:19:24 AM, Michal Marek wrote:
> On 27.2.2013 06:58, Rob Landley wrote:
> > From: Rob Landley <rob@landley.net>
> >
> > Remove perl from make headers_install by replacing a perl script
> (doing
> > a simple regex search and replace) with a smaller, faster, simpler,
> > POSIX-2008 shell script implementation. The new shell script is a
> single
> > for loop calling sed and piping its output through unifdef to
> produce the
> > target file.
> >
> > Same as last time except for minor tweak to deal with code review
> from here:
> > http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html
> >
> > (Note that this drops the "arch" argument, which isn't used. Kbuild
> > already points to the right input files on the command line.)
> >
> > Signed-off-by: Rob Landley <rob@landley.net>
>
> Looks good, I will apply it after v3.9-rc1 is out.
Yay! Thank you!
(Andrew took the other two! Thank you!)
Rob
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] convert headers_install.pl to headers_install.sh
2013-02-28 8:19 ` Michal Marek
2013-03-01 5:07 ` Rob Landley
@ 2013-04-09 10:52 ` Michal Marek
2013-04-11 16:25 ` Rob Landley
1 sibling, 1 reply; 6+ messages in thread
From: Michal Marek @ 2013-04-09 10:52 UTC (permalink / raw)
To: Rob Landley
Cc: linux-kbuild, linux-kernel, Thomas Gleixner, Josh Boyer,
Paul E. McKenney, Andrew Morton, David Howells, Sam Ravnborg
On 28.2.2013 09:19, Michal Marek wrote:
> On 27.2.2013 06:58, Rob Landley wrote:
>> From: Rob Landley <rob@landley.net>
>>
>> Remove perl from make headers_install by replacing a perl script (doing
>> a simple regex search and replace) with a smaller, faster, simpler,
>> POSIX-2008 shell script implementation. The new shell script is a single
>> for loop calling sed and piping its output through unifdef to produce the
>> target file.
>>
>> Same as last time except for minor tweak to deal with code review from here:
>> http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html
>>
>> (Note that this drops the "arch" argument, which isn't used. Kbuild
>> already points to the right input files on the command line.)
>>
>> Signed-off-by: Rob Landley <rob@landley.net>
>
> Looks good, I will apply it after v3.9-rc1 is out.
I forgot to do it right after rc1, but I took the patch from the mm tree
now. I also added Sam's Ack from the earlier submission.
Michal
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] convert headers_install.pl to headers_install.sh
2013-04-09 10:52 ` Michal Marek
@ 2013-04-11 16:25 ` Rob Landley
2013-04-11 19:20 ` Michal Marek
0 siblings, 1 reply; 6+ messages in thread
From: Rob Landley @ 2013-04-11 16:25 UTC (permalink / raw)
To: Michal Marek
Cc: linux-kbuild, linux-kernel, Thomas Gleixner, Josh Boyer,
Paul E. McKenney, Andrew Morton, David Howells, Sam Ravnborg
On 04/09/2013 05:52:32 AM, Michal Marek wrote:
> On 28.2.2013 09:19, Michal Marek wrote:
> > On 27.2.2013 06:58, Rob Landley wrote:
> >> From: Rob Landley <rob@landley.net>
> >>
> >> Remove perl from make headers_install by replacing a perl script
> (doing
> >> a simple regex search and replace) with a smaller, faster, simpler,
> >> POSIX-2008 shell script implementation. The new shell script is a
> single
> >> for loop calling sed and piping its output through unifdef to
> produce the
> >> target file.
> >>
> >> Same as last time except for minor tweak to deal with code review
> from here:
> >> http://lkml.indiana.edu/hypermail/linux/kernel/1302.3/00078.html
> >>
> >> (Note that this drops the "arch" argument, which isn't used. Kbuild
> >> already points to the right input files on the command line.)
> >>
> >> Signed-off-by: Rob Landley <rob@landley.net>
> >
> > Looks good, I will apply it after v3.9-rc1 is out.
>
> I forgot to do it right after rc1, but I took the patch from the mm
> tree
> now. I also added Sam's Ack from the earlier submission.
>
> Michal
Yay!
Is this for 3.10? (Not seeing it in Linus's tree now, and -rc7 seems a
bit late for anything to go in...)
Thanks,
Rob
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 3/3] convert headers_install.pl to headers_install.sh
2013-04-11 16:25 ` Rob Landley
@ 2013-04-11 19:20 ` Michal Marek
0 siblings, 0 replies; 6+ messages in thread
From: Michal Marek @ 2013-04-11 19:20 UTC (permalink / raw)
To: Rob Landley
Cc: linux-kbuild, linux-kernel, Thomas Gleixner, Josh Boyer,
Paul E. McKenney, Andrew Morton, David Howells, Sam Ravnborg
Dne 11.4.2013 18:25, Rob Landley napsal(a):
> On 04/09/2013 05:52:32 AM, Michal Marek wrote:
>> I forgot to do it right after rc1, but I took the patch from the mm tree
>> now. I also added Sam's Ack from the earlier submission.
>
> Yay!
>
> Is this for 3.10?
Yes. The kbuild, kconfig, misc and trivial branches of kbuild.git
contain changes for the next merge window (next -rc1). The rc-fixes
branch is for the current rc phase.
Michal
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2013-04-11 19:20 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <1361944667.957820@landley.net>
2013-02-27 5:58 ` [PATCH 3/3] convert headers_install.pl to headers_install.sh Rob Landley
2013-02-28 8:19 ` Michal Marek
2013-03-01 5:07 ` Rob Landley
2013-04-09 10:52 ` Michal Marek
2013-04-11 16:25 ` Rob Landley
2013-04-11 19:20 ` Michal Marek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).