From 8b249b6856f16f09b0e5b79ce5f4d435e439b9d6 Mon Sep 17 00:00:00 2001 From: Sam Ravnborg Date: Wed, 7 Jan 2009 20:52:43 +0100 Subject: [PATCH] fix modules_install via NFS Rafael reported: I get the following error from 'make modules_install' on my test boxes: HOSTCC firmware/ihex2fw /home/rafael/src/linux-2.6/firmware/ihex2fw.c:268: fatal error: opening dependency file firmware/.ihex2fw.d: Read-only file system compilation terminated. make[3]: *** [firmware/ihex2fw] Error 1 make[2]: *** [_modinst_post] Error 2 make[1]: *** [sub-make] Error 2 make: *** [all] Error 2 where the configuration is that the kernel is compiled on a build box with 'make O= -j5' and then is mounted over NFS read-only by each test box (full path to this directory is the same on the build box and on the test boxes). Then, I cd into , run 'make modules_install' and get the error above. The issue turns out to be that we when we install firmware pick up the list of firmware blobs from firmware/Makefile. And this triggers the Makefile rules to update ihex2fw. There were two solutions for this issue: 1) Move the list of firmware blobs to a separate file 2) Avoid ihex2fw rebuild by moving it to scripts As I seriously beleive that the list of firmware blobs should be done in a fundamental different way solution 2) was selected. Reported-and-tested-by: "Rafael J. Wysocki" Signed-off-by: Sam Ravnborg Cc: David Woodhouse --- firmware/.gitignore | 1 - firmware/Makefile | 10 ++++------ scripts/.gitignore | 1 + scripts/Makefile | 3 ++- {firmware => scripts}/ihex2fw.c | 0 5 files changed, 7 insertions(+), 8 deletions(-) rename {firmware => scripts}/ihex2fw.c (100%) diff --git a/firmware/.gitignore b/firmware/.gitignore index d9c6901..f89a21f 100644 --- a/firmware/.gitignore +++ b/firmware/.gitignore @@ -3,4 +3,3 @@ *.bin *.csp *.dsp -ihex2fw diff --git a/firmware/Makefile b/firmware/Makefile index d872b79..55d3082 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -99,10 +99,10 @@ quiet_cmd_ihex = IHEX $@ cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@ quiet_cmd_ihex2fw = IHEX2FW $@ - cmd_ihex2fw = $(objtree)/$(obj)/ihex2fw $< $@ + cmd_ihex2fw = $(objtree)/scripts/ihex2fw $< $@ quiet_cmd_h16tofw = H16TOFW $@ - cmd_h16tofw = $(objtree)/$(obj)/ihex2fw -w $< $@ + cmd_h16tofw = $(objtree)/scripts/ihex2fw -w $< $@ quiet_cmd_fwbin = MK_FW $@ cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ @@ -165,11 +165,11 @@ $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %) # is actually meaningful, because the firmware has to be loaded in a certain # order rather than as a single binary blob. Thus, we convert them into our # more compact binary representation of ihex records () -$(obj)/%.fw: $(obj)/%.HEX $(obj)/ihex2fw | $(objtree)/$(obj)/$$(dir %) +$(obj)/%.fw: $(obj)/%.HEX | $(objtree)/$(obj)/$$(dir %) $(call cmd,ihex2fw) # .H16 is our own modified form of Intel HEX, with 16-bit length for records. -$(obj)/%.fw: $(obj)/%.H16 $(obj)/ihex2fw | $(objtree)/$(obj)/$$(dir %) +$(obj)/%.fw: $(obj)/%.H16 | $(objtree)/$(obj)/$$(dir %) $(call cmd,h16tofw) $(firmware-dirs): @@ -186,5 +186,3 @@ targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \ # Without this, built-in.o won't be created when it's empty, and the # final vmlinux link will fail. obj-n := dummy - -hostprogs-y := ihex2fw diff --git a/scripts/.gitignore b/scripts/.gitignore index b939fbd..09e2406 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore @@ -1,6 +1,7 @@ # # Generated files # +ihex2fw conmakehash kallsyms pnmtologo diff --git a/scripts/Makefile b/scripts/Makefile index aafdf06..035182e 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -2,11 +2,12 @@ # scripts contains sources for various helper programs used throughout # the kernel for the build process. # --------------------------------------------------------------------------- +# ihex2fw: Parser/loader for IHEX formatted data # kallsyms: Find all symbols in vmlinux # pnmttologo: Convert pnm files to logo files -# conmakehash: Create chartable # conmakehash: Create arrays for initializing the kernel console tables +hostprogs-y := ihex2fw hostprogs-$(CONFIG_KALLSYMS) += kallsyms hostprogs-$(CONFIG_LOGO) += pnmtologo hostprogs-$(CONFIG_VT) += conmakehash diff --git a/firmware/ihex2fw.c b/scripts/ihex2fw.c similarity index 100% rename from firmware/ihex2fw.c rename to scripts/ihex2fw.c -- 1.8.2.3