kbuild fixes
Hi Linus.
A greater batch of kbuild fixes than usual due to my absense for a few months.
I included the change to include/init.h as it allows people to start suing these without getting into merge order troubles and they are simple additions.
The rest is trivial fixes and incompatibility with older perl version. The full diff does not look scary.
I expect at least one more pull as I have not been through all patches yet - and need to visit bugzilla too.
Details follows.
Please pull - thanks!
Sam
The following changes since commit e946217e4fdaa67681bbabfa8e6b18641921f750:
Linus Torvalds (1):
Merge branch 'tracing-fixes-for-linus' of git://git.kernel.org/.../tip/linux-2.6-tip
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/sam/kbuild-fixes.git master
Ashutosh Naik (1):
kbuild: prevent modpost from looking for a .cmd file for a static library linked into a module
Evgeniy Manachkin (1):
kbuild: mkspec - fix build rpm
Ian Campbell (1):
kbuild: do not include arch/<ARCH>/include/asm in find-sources twice.
Jan Beulich (1):
adjust init section definitions
Jeremy Huntwork (1):
Fix incompatibility with versions of Perl less than 5.6.0
Jeremy Kerr (1):
scripts/package: don't break if %{_smp_mflags} isn't set
Mike Frysinger (1):
kbuild: setlocalversion: dont include svn change count
Peter Volkov (1):
kbuild: fix KBUILD_EXTRA_SYMBOLS
Sam Ravnborg (1):
kbuild: improve check-symlink
Thomas Volpini (1):
scripts/checksyscalls.sh: fix for non-gnu sed
Trent Piepho (1):
kbuild: tag with git revision when git describe is missing
Makefile | 8 +++++++- include/linux/init.h | 6 +++++- scripts/Makefile.modpost | 2 +- scripts/checksyscalls.sh | 4 ++-- scripts/headers_check.pl | 10 +++++----- scripts/headers_install.pl | 17 +++++++++-------- scripts/mod/sumversion.c | 12 +++++++++++- scripts/package/mkspec | 5 ++++- scripts/setlocalversion | 6 ++++-- 9 files changed, 48 insertions(+), 22 deletions(-)
Makefile +7 -1
@@ -961,6 +961,7 @@ export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH) # The asm symlink changes when $(ARCH) changes. # Detect this and ask user to run make mrproper +# If asm is a stale symlink (point to dir that does not exist) remove it define check-symlink set -e; \ if [ -L include/asm ]; then \
@@ -970,6 +971,10 @@ define check-symlink echo " set ARCH or save .config and run 'make mrproper' to fix it"; \ exit 1; \ fi; \ + test -e $$asmlink || rm include/asm; \ + elif [ -d include/asm ]; then \ + echo "ERROR: $@ is a directory but a symlink was expected";\ + exit 1; \ fi endef
@@ -1431,7 +1436,8 @@ ALLSOURCE_ARCHS := $(SRCARCH) define find-sources ( for arch in $(ALLSOURCE_ARCHS) ; do \ find $(__srctree)arch/$${arch} $(RCS_FIND_IGNORE) \ - -name $1 -print; \ + -wholename $(__srctree)arch/$${arch}/include/asm -type d -prune \ + -o -name $1 -print; \ done ; \ find $(__srctree)security/selinux/include $(RCS_FIND_IGNORE) \ -name $1 -print; \
include/linux/init.h +5 -1
@@ -112,21 +112,25 @@#define __FINIT .previous#define __INITDATA .section ".init.data","aw" +#define __INITRODATA .section ".init.rodata","a"#define __FINITDATA .previous#define __DEVINIT .section ".devinit.text", "ax"#define __DEVINITDATA .section ".devinit.data", "aw" +#define __DEVINITRODATA .section ".devinit.rodata", "a"#define __CPUINIT .section ".cpuinit.text", "ax"#define __CPUINITDATA .section ".cpuinit.data", "aw" +#define __CPUINITRODATA .section ".cpuinit.rodata", "a"#define __MEMINIT .section ".meminit.text", "ax"#define __MEMINITDATA .section ".meminit.data", "aw" +#define __MEMINITRODATA .section ".meminit.rodata", "a"/* silence warnings when references are OK */ #define __REF .section ".ref.text", "ax"#define __REFDATA .section ".ref.data", "aw" -#define __REFCONST .section ".ref.rodata", "aw" +#define __REFCONST .section ".ref.rodata", "a"#ifndef __ASSEMBLY__/*
scripts/Makefile.modpost +1 -1
@@ -82,7 +82,7 @@ modpost = scripts/mod/modpost \ $(if $(CONFIG_MODULE_SRCVERSION_ALL),-a,) \ $(if $(KBUILD_EXTMOD),-i,-o) $(kernelsymfile) \ $(if $(KBUILD_EXTMOD),-I $(modulesymfile)) \ - $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(EXTRA_SYMBOLS))) \ + $(if $(KBUILD_EXTRA_SYMBOLS), $(patsubst %, -e %,$(KBUILD_EXTRA_SYMBOLS))) \ $(if $(KBUILD_EXTMOD),-o $(modulesymfile)) \ $(if $(CONFIG_DEBUG_SECTION_MISMATCH),,-S) \ $(if $(CONFIG_MARKERS),-K $(kernelmarkersfile)) \
scripts/checksyscalls.sh +2 -2
@@ -113,10 +113,10 @@ EOF } syscall_list() { -sed -n -e '/^\#define/ { s/[^_]*__NR_\([^[:space:]]*\).*/\ +sed -n -e '/^\#define/ s/[^_]*__NR_\([^[:space:]]*\).*/\ \#if !defined \(__NR_\1\) \&\& !defined \(__IGNORE_\1\)\ \#warning syscall \1 not implemented\ -\#endif/p }' $1 +\#endif/p' $1 } (ignore_list && syscall_list ${srctree}/arch/x86/include/asm/unistd_32.h) | \
scripts/headers_check.pl +5 -5
@@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl -w # # headers_check.pl execute a number of trivial consistency checks #
@@ -17,7 +17,6 @@ # 2) TODO: check for leaked CONFIG_ symbols use strict; -use warnings; my ($dir, $arch, @files) = @ARGV;
@@ -27,14 +26,15 @@ my $lineno = 0; my $filename; foreach my $file (@files) { + local *FH; $filename = $file; - open(my $fh, '<', "$filename") or die "$filename: $!\n"; + open(FH, "<$filename") or die "$filename: $!\n"; $lineno = 0; - while ($line = <$fh>) { + while ($line = <FH>) { $lineno++; check_include(); } - close $fh; + close FH; } exit $ret;
scripts/headers_install.pl +9 -8
@@ -1,4 +1,4 @@ -#!/usr/bin/perl +#!/usr/bin/perl -w # # headers_install prepare the listed header files for use in # user space and copy the files to their destination.
@@ -17,28 +17,29 @@ # 3) Drop all sections defined out by __KERNEL__ (using unifdef) use strict; -use warnings; 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(my $infile, '<', "$readdir/$file") + open(INFILE, "<$readdir/$file") or die "$readdir/$file: $!\n"; - open(my $outfile, '>', "$tmpfile") or die "$tmpfile: $!\n"; - while (my $line = <$infile>) { + 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; + printf OUTFILE "%s", $line; } - close $outfile; - close $infile; + close OUTFILE; + close INFILE; system $unifdef . " $tmpfile > $installdir/$file"; unlink $tmpfile; }
scripts/mod/sumversion.c +11 -1
@@ -290,6 +290,15 @@ static int parse_file(const char *fname, struct md4_ctx *md)release_file (file, len);return 1 ; } +/* Check whether the file is a static library or not */ +static int is_static_library (const char *objfile) +{ +int len =strlen (objfile); +if (objfile[len -2 ] =='.' && objfile[len -1 ] =='a' ) +return 1 ; +else +return 0 ; +}/* We have dir/file.o. Open dir/.file.o.cmd, look for deps_ line to * figure out source file. */
@@ -420,7 +429,8 @@ void get_src_version(const char *modname, char sum[], unsigned sumlen)while ((fname =strsep (&sources," " )) !=NULL ) {if (!*fname)continue ; -if (!parse_source_files (fname, &md)) +if (!(is_static_library (fname)) && + !parse_source_files (fname, &md)) goto release; }
scripts/package/mkspec +4 -1
@@ -57,15 +57,17 @@ fi echo "%build" if ! $PREBUILT; then -echo "make clean && make %{_smp_mflags}" +echo "make clean && make %{?_smp_mflags}" echo "" fi echo "%install" echo "%ifarch ia64" echo 'mkdir -p $RPM_BUILD_ROOT/boot/efi $RPM_BUILD_ROOT/lib/modules' +echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware' echo "%else" echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib/modules' +echo 'mkdir -p $RPM_BUILD_ROOT/lib/firmware' echo "%endif" echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make %{_smp_mflags} modules_install'
@@ -92,5 +94,6 @@ echo "%files" echo '%defattr (-, root, root)' echo "%dir /lib/modules" echo "/lib/modules/$KERNELRELEASE" +echo "/lib/firmware" echo "/boot/*" echo ""
scripts/setlocalversion +4 -2
@@ -9,11 +9,13 @@ usage() { cd "${1:-.}" || usage # Check for git and a git repo. -if head=`git rev-parse --verify HEAD 2>/dev/null`; then +if head=`git rev-parse --verify --short HEAD 2>/dev/null`; then # Do we have an untagged version? if git name-rev --tags HEAD | grep -E '^HEAD[[:space:]]+(.*~[0-9]*|undefined)$' > /dev/null; then if tag=`git describe 2>/dev/null`; then echo $tag | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}' + else + printf '%s%s' -g $head fi fi
@@ -55,7 +57,7 @@ if rev=`svn info 2>/dev/null | grep '^Revision'`; then # Are there uncommitted changes? if [ $changes != 0 ]; then - printf -- '-svn%s%s%s' "$rev" -dirty "$changes" + printf -- '-svn%s%s' "$rev" -dirty else printf -- '-svn%s' "$rev" fi
Quoted 2 lines · Sam Ravnborg
I expect at least one more pull as I have not been through all patches yet - and need to visit bugzilla too.
Hi Sam,
Is the patch [1] I pointed out to you in [2] on your ToDo list for that? I'm asking as there was no reply to that mail yet.
I now see that in the archive my message had a "parse failure" for some reason. Maybe that explains...
Cheers,
FJP
[1] http://lkml.org/lkml/2008/9/13/102
[2] http://lkml.org/lkml/2008/10/25/232
Quoted 7 lines · Frans Pop
Quoted 2 lines · Sam Ravnborg
I expect at least one more pull as I have not been through all patches yet - and need to visit bugzilla too.
Hi Sam,
Is the patch [1] I pointed out to you in [2] on your ToDo list for that?
I have >5 mails about the debian target. So I just postponed these in favour of getting something pushed out earlier.
Sam