public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [kbuild regression, post-rc1] Remote installation over read-only NFS broken
@ 2010-06-07  9:10 Rafael J. Wysocki
  2010-06-07 11:28 ` Michal Marek
  2010-06-07 14:41 ` Linus Torvalds
  0 siblings, 2 replies; 7+ messages in thread
From: Rafael J. Wysocki @ 2010-06-07  9:10 UTC (permalink / raw)
  To: Michal Marek; +Cc: LKML, Linus Torvalds, Andrew Morton

Hi Michal,

Unfortunately, your commit 73d1393eb8507ed5fd7f8e696f6b1ecc18035ebe
(kbuild: Generate modules.builtin in make modules_install) broke my testing
environment that had always worked before.

Namely, I build kernels on a central machine and export the build directory
along with the kernel sources over read-only NFS to test boxes.  Then, on the
test boxes I run "make modules_install", copy the kernel to /boot, run mkinitrd
and so on.  Now, after your commit above the "make modules_install" command on
the test boxes doesn't work any more, because it tries to write to the build
directory, which is mounted read-only.

Please fix or revert.

Rafael

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-07  9:10 [kbuild regression, post-rc1] Remote installation over read-only NFS broken Rafael J. Wysocki
@ 2010-06-07 11:28 ` Michal Marek
  2010-06-07 14:41 ` Linus Torvalds
  1 sibling, 0 replies; 7+ messages in thread
From: Michal Marek @ 2010-06-07 11:28 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: LKML, Linus Torvalds, Andrew Morton

On 7.6.2010 11:10, Rafael J. Wysocki wrote:
> Hi Michal,
> 
> Unfortunately, your commit 73d1393eb8507ed5fd7f8e696f6b1ecc18035ebe
> (kbuild: Generate modules.builtin in make modules_install) broke my testing
> environment that had always worked before.
> 
> Namely, I build kernels on a central machine and export the build directory
> along with the kernel sources over read-only NFS to test boxes.  Then, on the
> test boxes I run "make modules_install", copy the kernel to /boot, run mkinitrd
> and so on.  Now, after your commit above the "make modules_install" command on
> the test boxes doesn't work any more, because it tries to write to the build
> directory, which is mounted read-only.

I'll have a look, thanks for the report.

Michal

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-07  9:10 [kbuild regression, post-rc1] Remote installation over read-only NFS broken Rafael J. Wysocki
  2010-06-07 11:28 ` Michal Marek
@ 2010-06-07 14:41 ` Linus Torvalds
  2010-06-07 21:16   ` Michal Marek
  1 sibling, 1 reply; 7+ messages in thread
From: Linus Torvalds @ 2010-06-07 14:41 UTC (permalink / raw)
  To: Rafael J. Wysocki; +Cc: Michal Marek, LKML, Andrew Morton



On Mon, 7 Jun 2010, Rafael J. Wysocki wrote:
> 
> Namely, I build kernels on a central machine and export the build directory
> along with the kernel sources over read-only NFS to test boxes.  Then, on the
> test boxes I run "make modules_install", copy the kernel to /boot, run mkinitrd
> and so on.  Now, after your commit above the "make modules_install" command on
> the test boxes doesn't work any more, because it tries to write to the build
> directory, which is mounted read-only.
> 
> Please fix or revert.

Ahh. It's broken for another reason too. Even if it's a writable 
filesystem, it means that there's a lot of files that get written by root 
(since you have to be root to do the install). Which is very 
uncomfortable, and we've tried very hard to avoid that.

So it _should_ be possible to do a build as a normal user, and then do the 
install as root, and afterwards

	find . -user root

should return the empty set (which in practice ends up being basically the 
same thing as Rafaels requirement that it work on a read-only build).

			Linus

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-07 14:41 ` Linus Torvalds
@ 2010-06-07 21:16   ` Michal Marek
  2010-06-07 22:06     ` Rafael J. Wysocki
  2010-06-10  1:11     ` Stephen Rothwell
  0 siblings, 2 replies; 7+ messages in thread
From: Michal Marek @ 2010-06-07 21:16 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Rafael J. Wysocki, LKML, Andrew Morton, Eric Miao

On Mon, Jun 07, 2010 at 07:41:42AM -0700, Linus Torvalds wrote:
> 
> 
> On Mon, 7 Jun 2010, Rafael J. Wysocki wrote:
> > 
> > Namely, I build kernels on a central machine and export the build directory
> > along with the kernel sources over read-only NFS to test boxes.  Then, on the
> > test boxes I run "make modules_install", copy the kernel to /boot, run mkinitrd
> > and so on.  Now, after your commit above the "make modules_install" command on
> > the test boxes doesn't work any more, because it tries to write to the build
> > directory, which is mounted read-only.
> > 
> > Please fix or revert.
> 
> Ahh. It's broken for another reason too. Even if it's a writable 
> filesystem, it means that there's a lot of files that get written by root 
> (since you have to be root to do the install). Which is very 
> uncomfortable, and we've tried very hard to avoid that.

I can fix both issues by the below patch, but then it reintroduces the
issue Eric reported to me with the original approach:

| And indeed it's strange - while scripts/Makefile.build doesn't fail
| since
| there seems to be a script that generates some Makefiles in between
| the build process, I'll get this figured out to see what is the root
| cause.

(the whole thread is at http://lkml.org/lkml/2010/1/6/16).  Eric, does
the above still hold, i.e. if you apply the below patch, does
scripts/Makefile.modbuiltin fail again? If so, is it possible to fix the
driver build process instead?

Here is the patch:

Subject: [PATCH] kbuild: Generate modules.builtin in make modules

Generating the file in make modules_install was broken as well, because
it didn't work in a readonly filesystem and otherwise it generated a
root-owned file which is not wanted.

Reported-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Michal Marek <mmarek@suse.cz>

diff --git a/Makefile b/Makefile
index efdc3d0..2735465 100644
--- a/Makefile
+++ b/Makefile
@@ -1095,7 +1095,7 @@ all: modules
 #	using awk while concatenating to the final file.
 
 PHONY += modules
-modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
+modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
 	$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
 	@$(kecho) '  Building modules, stage 2.';
 	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
@@ -1117,7 +1117,7 @@ PHONY += modules_install
 modules_install: _modinst_ _modinst_post
 
 PHONY += _modinst_
-_modinst_: modules.builtin
+_modinst_:
 	@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";\

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-07 21:16   ` Michal Marek
@ 2010-06-07 22:06     ` Rafael J. Wysocki
  2010-06-10  1:11     ` Stephen Rothwell
  1 sibling, 0 replies; 7+ messages in thread
From: Rafael J. Wysocki @ 2010-06-07 22:06 UTC (permalink / raw)
  To: Michal Marek; +Cc: Linus Torvalds, LKML, Andrew Morton, Eric Miao

On Monday 07 June 2010, Michal Marek wrote:
> On Mon, Jun 07, 2010 at 07:41:42AM -0700, Linus Torvalds wrote:
> > 
> > 
> > On Mon, 7 Jun 2010, Rafael J. Wysocki wrote:
> > > 
> > > Namely, I build kernels on a central machine and export the build directory
> > > along with the kernel sources over read-only NFS to test boxes.  Then, on the
> > > test boxes I run "make modules_install", copy the kernel to /boot, run mkinitrd
> > > and so on.  Now, after your commit above the "make modules_install" command on
> > > the test boxes doesn't work any more, because it tries to write to the build
> > > directory, which is mounted read-only.
> > > 
> > > Please fix or revert.
> > 
> > Ahh. It's broken for another reason too. Even if it's a writable 
> > filesystem, it means that there's a lot of files that get written by root 
> > (since you have to be root to do the install). Which is very 
> > uncomfortable, and we've tried very hard to avoid that.
> 
> I can fix both issues by the below patch, but then it reintroduces the
> issue Eric reported to me with the original approach:
> 
> | And indeed it's strange - while scripts/Makefile.build doesn't fail
> | since
> | there seems to be a script that generates some Makefiles in between
> | the build process, I'll get this figured out to see what is the root
> | cause.
> 
> (the whole thread is at http://lkml.org/lkml/2010/1/6/16).  Eric, does
> the above still hold, i.e. if you apply the below patch, does
> scripts/Makefile.modbuiltin fail again? If so, is it possible to fix the
> driver build process instead?
> 
> Here is the patch:
> 
> Subject: [PATCH] kbuild: Generate modules.builtin in make modules
> 
> Generating the file in make modules_install was broken as well, because
> it didn't work in a readonly filesystem and otherwise it generated a
> root-owned file which is not wanted.
> 
> Reported-by: Rafael J. Wysocki <rjw@sisk.pl>
> Signed-off-by: Michal Marek <mmarek@suse.cz>

The patch works for me, thanks.

> diff --git a/Makefile b/Makefile
> index efdc3d0..2735465 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1095,7 +1095,7 @@ all: modules
>  #	using awk while concatenating to the final file.
>  
>  PHONY += modules
> -modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
> +modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
>  	$(Q)$(AWK) '!x[$$0]++' $(vmlinux-dirs:%=$(objtree)/%/modules.order) > $(objtree)/modules.order
>  	@$(kecho) '  Building modules, stage 2.';
>  	$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
> @@ -1117,7 +1117,7 @@ PHONY += modules_install
>  modules_install: _modinst_ _modinst_post
>  
>  PHONY += _modinst_
> -_modinst_: modules.builtin
> +_modinst_:
>  	@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";\
> --

Rafael

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-07 21:16   ` Michal Marek
  2010-06-07 22:06     ` Rafael J. Wysocki
@ 2010-06-10  1:11     ` Stephen Rothwell
  2010-06-10 10:25       ` Michal Marek
  1 sibling, 1 reply; 7+ messages in thread
From: Stephen Rothwell @ 2010-06-10  1:11 UTC (permalink / raw)
  To: Michal Marek
  Cc: Linus Torvalds, Rafael J. Wysocki, LKML, Andrew Morton, Eric Miao

[-- Attachment #1: Type: text/plain, Size: 1123 bytes --]

Hi Michal,

On Mon, 7 Jun 2010 23:16:30 +0200 Michal Marek <mmarek@suse.cz> wrote:
>
> I can fix both issues by the below patch, but then it reintroduces the
> issue Eric reported to me with the original approach:
> 
> | And indeed it's strange - while scripts/Makefile.build doesn't fail
> | since
> | there seems to be a script that generates some Makefiles in between
> | the build process, I'll get this figured out to see what is the root
> | cause.
> 
> (the whole thread is at http://lkml.org/lkml/2010/1/6/16).  Eric, does
> the above still hold, i.e. if you apply the below patch, does
> scripts/Makefile.modbuiltin fail again? If so, is it possible to fix the
> driver build process instead?
> 
> Here is the patch:
> 
> Subject: [PATCH] kbuild: Generate modules.builtin in make modules

This patch breaks (at least) a powerpc ppc64_defconfig build with
separate object directory (that starts completely empty).

/bin/sh: line 1: init/modules.builtin: No such file or directory

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

[-- Attachment #2: Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [kbuild regression, post-rc1] Remote installation over read-only NFS broken
  2010-06-10  1:11     ` Stephen Rothwell
@ 2010-06-10 10:25       ` Michal Marek
  0 siblings, 0 replies; 7+ messages in thread
From: Michal Marek @ 2010-06-10 10:25 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: Linus Torvalds, Rafael J. Wysocki, LKML, Andrew Morton, Eric Miao

On Thu, Jun 10, 2010 at 11:11:35AM +1000, Stephen Rothwell wrote:
> Hi Michal,
> 
> On Mon, 7 Jun 2010 23:16:30 +0200 Michal Marek <mmarek@suse.cz> wrote:
> >
> > I can fix both issues by the below patch, but then it reintroduces the
> > issue Eric reported to me with the original approach:
> > 
> > | And indeed it's strange - while scripts/Makefile.build doesn't fail
> > | since
> > | there seems to be a script that generates some Makefiles in between
> > | the build process, I'll get this figured out to see what is the root
> > | cause.
> > 
> > (the whole thread is at http://lkml.org/lkml/2010/1/6/16).  Eric, does
> > the above still hold, i.e. if you apply the below patch, does
> > scripts/Makefile.modbuiltin fail again? If so, is it possible to fix the
> > driver build process instead?
> > 
> > Here is the patch:
> > 
> > Subject: [PATCH] kbuild: Generate modules.builtin in make modules
> 
> This patch breaks (at least) a powerpc ppc64_defconfig build with
> separate object directory (that starts completely empty).
> 
> /bin/sh: line 1: init/modules.builtin: No such file or directory

Oops, this uncovered a bug in scripts/Makefile.modbuiltin. Following
patch should fix that, I'll run a few randconfigs before pushing it
though.

Michal

Subject: [PATCH] kbuild: Create output directory in Makefile.modbuiltin

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Michal Marek <mmarek@suse.cz>

diff --git a/scripts/Makefile.modbuiltin b/scripts/Makefile.modbuiltin
index 102a276..1adb974 100644
--- a/scripts/Makefile.modbuiltin
+++ b/scripts/Makefile.modbuiltin
@@ -14,6 +14,11 @@ __modbuiltin:
 
 include scripts/Kbuild.include
 
+ifneq ($(KBUILD_SRC),)
+# Create output directory if not already present
+_dummy := $(shell [ -d $(obj) ] || mkdir -p $(obj))
+endif
+
 # The filename Kbuild has precedence over Makefile
 kbuild-dir := $(if $(filter /%,$(src)),$(src),$(srctree)/$(src))
 kbuild-file := $(if $(wildcard $(kbuild-dir)/Kbuild),$(kbuild-dir)/Kbuild,$(kbuild-dir)/Makefile)

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-06-10 10:25 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-06-07  9:10 [kbuild regression, post-rc1] Remote installation over read-only NFS broken Rafael J. Wysocki
2010-06-07 11:28 ` Michal Marek
2010-06-07 14:41 ` Linus Torvalds
2010-06-07 21:16   ` Michal Marek
2010-06-07 22:06     ` Rafael J. Wysocki
2010-06-10  1:11     ` Stephen Rothwell
2010-06-10 10:25       ` Michal Marek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox