Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PATCH] kbuild: Do not unnecessarily regenerate modules.builtin

25 views
Skip to first unread message

Michal Marek

unread,
Mar 8, 2010, 6:30:02 AM3/8/10
to
Only regenerate it if the configuration has changed. Also, do this after
the modules build to fix errors with some weird Makefiles that are
generated during build.

Reported-by: Eric Miao <eric....@gmail.com>
Signed-off-by: Michal Marek <mma...@suse.cz>
---
Makefile | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 2e74a68..160cada 100644
--- a/Makefile
+++ b/Makefile
@@ -882,9 +882,6 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
PHONY += $(vmlinux-dirs)
$(vmlinux-dirs): prepare scripts
$(Q)$(MAKE) $(build)=$@
-ifdef CONFIG_MODULES
- $(Q)$(MAKE) $(modbuiltin)=$@
-endif

# Build the kernel release string
#
@@ -1089,7 +1086,7 @@ ifdef CONFIG_MODULES

# By default, build modules as well

-all: modules
+all: modules modules.builtin

# Build modules
#
@@ -1100,11 +1097,16 @@ all: modules
PHONY += modules
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
- $(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.builtin) > $(objtree)/modules.builtin
@$(kecho) ' Building modules, stage 2.';
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.fwinst obj=firmware __fw_modbuild

+modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)
+ $(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin
+
+%/modules.builtin: include/config/auto.conf | modules
+ $(Q)$(MAKE) $(modbuiltin)=$*
+

# Target to prepare building external modules
PHONY += modules_prepare
--
1.6.6.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Stephen Rothwell

unread,
Mar 11, 2010, 12:10:01 AM3/11/10
to
Hi Michal,

On Mon, 8 Mar 2010 12:20:22 +0100 Michal Marek <mma...@suse.cz> wrote:
>
> Only regenerate it if the configuration has changed. Also, do this after
> the modules build to fix errors with some weird Makefiles that are
> generated during build.

This breaks a "make modules modules_install" type build:

$ rm -rf ../ntest.obj ../lib
$ mkdir ../ntest.obj ../lib
$ echo CONFIG_MODULES=y >../ntest.conf
$ KCONFIG_ALLCONFIG=../ntest.conf make O=../ntest.obj allnoconfig
.
.
$ make O=../ntest.obj INSTALL_MOD_PATH=../ -s modules modules_install
cp: cannot stat `/home/sfr/kernels/ntest.obj/modules.builtin': No such file or directory

reverting that patch allows that build to work again.

Unfortunately, this breaks our test system which like to do

make zImage
make modules
make modules_install

The last step fails :-(
--
Cheers,
Stephen Rothwell s...@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

Michal Marek

unread,
Mar 11, 2010, 3:20:02 AM3/11/10
to
Hi Stephen,

On Thu, Mar 11, 2010 at 04:03:26PM +1100, Stephen Rothwell wrote:
> This breaks a "make modules modules_install" type build:

[...]


> $ make O=../ntest.obj INSTALL_MOD_PATH=../ -s modules modules_install
> cp: cannot stat `/home/sfr/kernels/ntest.obj/modules.builtin': No such file or directory

Andrew reported this yesterday, too. The followin patch should fix it
(added to the for-next branch):

From 73d1393eb8507ed5fd7f8e696f6b1ecc18035ebe Mon Sep 17 00:00:00 2001
From: Michal Marek <mma...@suse.cz>
Date: Wed, 10 Mar 2010 12:28:58 +0100
Subject: [PATCH] kbuild: Generate modules.builtin in make modules_install

The previous approach didn't work if one did
make modules && make modules_install
Add modules.builtin as dependency of _modinst_, which is the target that
actually needs the file.

Reported-by: Andrew Morton <ak...@linux-foundation.org>


Signed-off-by: Michal Marek <mma...@suse.cz>
---

Makefile | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/Makefile b/Makefile
index 160cada..b98943a 100644
--- a/Makefile
+++ b/Makefile
@@ -1086,7 +1086,7 @@ ifdef CONFIG_MODULES



# By default, build modules as well

-all: modules modules.builtin
+all: modules

# Build modules
#
@@ -1104,7 +1104,7 @@ modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
modules.builtin: $(vmlinux-dirs:%=%/modules.builtin)


$(Q)$(AWK) '!x[$$0]++' $^ > $(objtree)/modules.builtin

-%/modules.builtin: include/config/auto.conf | modules
+%/modules.builtin: include/config/auto.conf
$(Q)$(MAKE) $(modbuiltin)=$*


@@ -1117,7 +1117,7 @@ PHONY += modules_install
modules_install: _modinst_ _modinst_post

PHONY += _modinst_
-_modinst_:
+_modinst_: modules.builtin
@if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
echo "Warning: you may need to install module-init-tools"; \
echo "See http://www.codemonkey.org.uk/docs/post-halloween-2.6.txt";\

Stephen Rothwell

unread,
Mar 11, 2010, 5:40:02 AM3/11/10
to
Hi Michal,

On Thu, 11 Mar 2010 09:12:46 +0100 Michal Marek <mma...@suse.cz> wrote:
>
> On Thu, Mar 11, 2010 at 04:03:26PM +1100, Stephen Rothwell wrote:
> > This breaks a "make modules modules_install" type build:
> [...]
> > $ make O=../ntest.obj INSTALL_MOD_PATH=../ -s modules modules_install
> > cp: cannot stat `/home/sfr/kernels/ntest.obj/modules.builtin': No such file or directory
>
> Andrew reported this yesterday, too. The followin patch should fix it
> (added to the for-next branch):

Great, thanks.

0 new messages