diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2009-01-07 14:52:43 -0500 |
---|---|---|
committer | Sam Ravnborg <sam@ravnborg.org> | 2009-01-07 15:44:20 -0500 |
commit | 8b249b6856f16f09b0e5b79ce5f4d435e439b9d6 (patch) | |
tree | d7915dd672c03ff04faef8fc50b741cef01f1a86 | |
parent | 8d1a0a13edecfdcb47fee3238ed4a2af2a2867f9 (diff) |
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=<destdir> -j5' and then <destdir> 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 <destdir>, 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" <rjw@sisk.pl>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: David Woodhouse <dwmw2@infradead.org>
-rw-r--r-- | firmware/.gitignore | 1 | ||||
-rw-r--r-- | firmware/Makefile | 10 | ||||
-rw-r--r-- | scripts/.gitignore | 1 | ||||
-rw-r--r-- | scripts/Makefile | 3 | ||||
-rw-r--r-- | scripts/ihex2fw.c (renamed from firmware/ihex2fw.c) | 0 |
5 files changed, 7 insertions, 8 deletions
diff --git a/firmware/.gitignore b/firmware/.gitignore index d9c69017bc9a..f89a21fffbf1 100644 --- a/firmware/.gitignore +++ b/firmware/.gitignore | |||
@@ -3,4 +3,3 @@ | |||
3 | *.bin | 3 | *.bin |
4 | *.csp | 4 | *.csp |
5 | *.dsp | 5 | *.dsp |
6 | ihex2fw | ||
diff --git a/firmware/Makefile b/firmware/Makefile index d872b7942a30..55d3082ea13e 100644 --- a/firmware/Makefile +++ b/firmware/Makefile | |||
@@ -99,10 +99,10 @@ quiet_cmd_ihex = IHEX $@ | |||
99 | cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@ | 99 | cmd_ihex = $(OBJCOPY) -Iihex -Obinary $< $@ |
100 | 100 | ||
101 | quiet_cmd_ihex2fw = IHEX2FW $@ | 101 | quiet_cmd_ihex2fw = IHEX2FW $@ |
102 | cmd_ihex2fw = $(objtree)/$(obj)/ihex2fw $< $@ | 102 | cmd_ihex2fw = $(objtree)/scripts/ihex2fw $< $@ |
103 | 103 | ||
104 | quiet_cmd_h16tofw = H16TOFW $@ | 104 | quiet_cmd_h16tofw = H16TOFW $@ |
105 | cmd_h16tofw = $(objtree)/$(obj)/ihex2fw -w $< $@ | 105 | cmd_h16tofw = $(objtree)/scripts/ihex2fw -w $< $@ |
106 | 106 | ||
107 | quiet_cmd_fwbin = MK_FW $@ | 107 | quiet_cmd_fwbin = MK_FW $@ |
108 | cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ | 108 | cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ |
@@ -165,11 +165,11 @@ $(obj)/%: $(obj)/%.ihex | $(objtree)/$(obj)/$$(dir %) | |||
165 | # is actually meaningful, because the firmware has to be loaded in a certain | 165 | # is actually meaningful, because the firmware has to be loaded in a certain |
166 | # order rather than as a single binary blob. Thus, we convert them into our | 166 | # order rather than as a single binary blob. Thus, we convert them into our |
167 | # more compact binary representation of ihex records (<linux/ihex.h>) | 167 | # more compact binary representation of ihex records (<linux/ihex.h>) |
168 | $(obj)/%.fw: $(obj)/%.HEX $(obj)/ihex2fw | $(objtree)/$(obj)/$$(dir %) | 168 | $(obj)/%.fw: $(obj)/%.HEX | $(objtree)/$(obj)/$$(dir %) |
169 | $(call cmd,ihex2fw) | 169 | $(call cmd,ihex2fw) |
170 | 170 | ||
171 | # .H16 is our own modified form of Intel HEX, with 16-bit length for records. | 171 | # .H16 is our own modified form of Intel HEX, with 16-bit length for records. |
172 | $(obj)/%.fw: $(obj)/%.H16 $(obj)/ihex2fw | $(objtree)/$(obj)/$$(dir %) | 172 | $(obj)/%.fw: $(obj)/%.H16 | $(objtree)/$(obj)/$$(dir %) |
173 | $(call cmd,h16tofw) | 173 | $(call cmd,h16tofw) |
174 | 174 | ||
175 | $(firmware-dirs): | 175 | $(firmware-dirs): |
@@ -186,5 +186,3 @@ targets := $(fw-shipped-) $(patsubst $(obj)/%,%, \ | |||
186 | # Without this, built-in.o won't be created when it's empty, and the | 186 | # Without this, built-in.o won't be created when it's empty, and the |
187 | # final vmlinux link will fail. | 187 | # final vmlinux link will fail. |
188 | obj-n := dummy | 188 | obj-n := dummy |
189 | |||
190 | hostprogs-y := ihex2fw | ||
diff --git a/scripts/.gitignore b/scripts/.gitignore index b939fbd01195..09e2406f3b78 100644 --- a/scripts/.gitignore +++ b/scripts/.gitignore | |||
@@ -1,6 +1,7 @@ | |||
1 | # | 1 | # |
2 | # Generated files | 2 | # Generated files |
3 | # | 3 | # |
4 | ihex2fw | ||
4 | conmakehash | 5 | conmakehash |
5 | kallsyms | 6 | kallsyms |
6 | pnmtologo | 7 | pnmtologo |
diff --git a/scripts/Makefile b/scripts/Makefile index aafdf064feef..035182e16afb 100644 --- a/scripts/Makefile +++ b/scripts/Makefile | |||
@@ -2,11 +2,12 @@ | |||
2 | # scripts contains sources for various helper programs used throughout | 2 | # scripts contains sources for various helper programs used throughout |
3 | # the kernel for the build process. | 3 | # the kernel for the build process. |
4 | # --------------------------------------------------------------------------- | 4 | # --------------------------------------------------------------------------- |
5 | # ihex2fw: Parser/loader for IHEX formatted data | ||
5 | # kallsyms: Find all symbols in vmlinux | 6 | # kallsyms: Find all symbols in vmlinux |
6 | # pnmttologo: Convert pnm files to logo files | 7 | # pnmttologo: Convert pnm files to logo files |
7 | # conmakehash: Create chartable | ||
8 | # conmakehash: Create arrays for initializing the kernel console tables | 8 | # conmakehash: Create arrays for initializing the kernel console tables |
9 | 9 | ||
10 | hostprogs-y := ihex2fw | ||
10 | hostprogs-$(CONFIG_KALLSYMS) += kallsyms | 11 | hostprogs-$(CONFIG_KALLSYMS) += kallsyms |
11 | hostprogs-$(CONFIG_LOGO) += pnmtologo | 12 | hostprogs-$(CONFIG_LOGO) += pnmtologo |
12 | hostprogs-$(CONFIG_VT) += conmakehash | 13 | hostprogs-$(CONFIG_VT) += conmakehash |
diff --git a/firmware/ihex2fw.c b/scripts/ihex2fw.c index 8f7fdaa9e010..8f7fdaa9e010 100644 --- a/firmware/ihex2fw.c +++ b/scripts/ihex2fw.c | |||