Re: [Regression] Build failure in current mainline - firmware related

From: Sam Ravnborg
Date: Sun Jan 04 2009 - 16:42:40 EST


On Sat, Jan 03, 2009 at 10:43:28PM +0100, Rafael J. Wysocki wrote:
> On Saturday 03 January 2009, Sam Ravnborg wrote:
> > On Sat, Jan 03, 2009 at 09:49:48PM +0100, Sam Ravnborg wrote:
> > > On Sat, Jan 03, 2009 at 12:47:14PM +0100, Rafael J. Wysocki wrote:
> > > > Hi,
> > > >
> > > > 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.
> > > >
> > > > 2.6.28 didn't have this problem.
> > >
> > >
> > > Strange...
> > > 1) The string "opening dependency file" does not occur in my freshly pulled kernel
> > > 2) Line 268 is last line of ihex2fw.c
> > >
> > > Could you try to do a "make modules_install V=1" to see the exact arguments supplied ti ihex2fw.c
> > >
> > > I gave up on all the firmware stuff long time ago and has
> > > never properly reviewed the implementation so I really
> > > have no clue what is actually happening.
> > >
> > > Walking through the 179 lines Makefile has not yet benn on my
> > > "fun to do" list - and it most likely take a while before it hits it.
> >
> > Took a quick peek. The Makefile uses "order only" in three spots.
> > This alone demand make version 3.80 IIRC and Documetnation/Changes
> > says 3.79.1...
> >
> > The "order only" is so rare that Paul Smith once said that
> > coming up with a good example of usage was not easy.
> >
> > For the headers_* stuff I recall when I reworked it I could
> > kill the usage of "order only" there but now it crept
> > back - sigh!
>
> Well, in the meantime I ran 'make modules_install V=1' and this is the
> last thing printed (the previous ones are not really interesting):
>
> make -f /home/rafael/src/linux-2.6/scripts/Makefile.fwinst obj=firmware __fw_modinst
> gcc -Wp,-MD,firmware/.ihex2fw.d -Ifirmware -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -o firmware/ihex2fw /home/rafael/src/linux-2.6/firmware/ihex2fw.c
> /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
>
> It fails because of the attempt to compile ihex2fw .

There are at least two obvious ways to fix this.

We could try to rearrange things so we do not trigger
the rebuild of ihex2fw in the modules_install case.
This would likely involve creating a new file listing
all the firmawre files and share it between firmware/Makefile
and scripts/Makefile.fwinst

We could also move ihex2fw to scripts so it is build
as part of the preparation for a kernel build.

Attched patch does the latter.
[I will update the changelog before I eventually commit it].

Sam

Patch is in old-style but the majority of the patch is the file move.