treeImage.initrd rule is very broken

3 messages, 2 authors, 2007-05-15 · open the first message on its own page

treeImage.initrd rule is very broken

From: Josh Boyer <hidden>
Date: 2007-05-14 14:47:35

Hi David,

I tried compiling an Ebony kernel wrapped with a DTS and initrd this
morning but it fails with the following error:

WRAP    arch/powerpc/boot/treeImage.initrd.ebony
DTC: dts->dtb  on file "/home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts"
powerpc-440-linux-gnu-ld: arch/powerpc/boot/treeboot-initrd.ebony.o: No such file: No such file or directory
powerpc-440-linux-gnu-nm: 'arch/powerpc/boot/treeImage.initrd.ebony': No such file
powerpc-440-linux-gnu-objdump: 'arch/powerpc/boot/treeImage.initrd.ebony': No such file
mv: cannot stat `arch/powerpc/boot/treeImage.initrd.ebony': No such file or directory
stat: No such file or directory
ln: accessing `arch/powerpc/boot/treeImage.initrd.ebony': No such file or directory
make[1]: *** [arch/powerpc/boot/zImage.initrd] Error 1
make: *** [zImage.initrd] Error 2

At first glance, it should be looking for treeboot-ebony.o, not
treeboot-initrd.ebony.o.  On a whim, I symlinked treeboot-initrd.ebony.o
to treeboot-ebony.o and the compile worked, however the wrapper wasn't
called with the ramdisk.image.gz file:

 /bin/sh /home/jwboyer/src/linux-2.6/arch/powerpc/boot/wrapper -c -o arch/powerpc/boot/treeImage.initrd.ebony -p treeboot-initrd.ebony -C "powerpc-440-linux-gnu-"  -s /home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts vmlinux
DTC: dts->dtb  on file "/home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts"

So something is very broken with this rule.  I poked at it for a while,
but I apparently don't have the make-fu to figure out how to un-break
it.

Help?

josh

Re: treeImage.initrd rule is very broken

From: David Gibson <hidden>
Date: 2007-05-15 01:40:47

On Mon, May 14, 2007 at 09:47:13AM -0500, Josh Boyer wrote:
Hi David,

I tried compiling an Ebony kernel wrapped with a DTS and initrd this
morning but it fails with the following error:

WRAP    arch/powerpc/boot/treeImage.initrd.ebony
DTC: dts->dtb  on file "/home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts"
powerpc-440-linux-gnu-ld: arch/powerpc/boot/treeboot-initrd.ebony.o: No such file: No such file or directory
powerpc-440-linux-gnu-nm: 'arch/powerpc/boot/treeImage.initrd.ebony': No such file
powerpc-440-linux-gnu-objdump: 'arch/powerpc/boot/treeImage.initrd.ebony': No such file
mv: cannot stat `arch/powerpc/boot/treeImage.initrd.ebony': No such file or directory
stat: No such file or directory
ln: accessing `arch/powerpc/boot/treeImage.initrd.ebony': No such file or directory
make[1]: *** [arch/powerpc/boot/zImage.initrd] Error 1
make: *** [zImage.initrd] Error 2

At first glance, it should be looking for treeboot-ebony.o, not
treeboot-initrd.ebony.o.  On a whim, I symlinked treeboot-initrd.ebony.o
to treeboot-ebony.o and the compile worked, however the wrapper wasn't
called with the ramdisk.image.gz file:

 /bin/sh /home/jwboyer/src/linux-2.6/arch/powerpc/boot/wrapper -c -o arch/powerpc/boot/treeImage.initrd.ebony -p treeboot-initrd.ebony -C "powerpc-440-linux-gnu-"  -s /home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts vmlinux
DTC: dts->dtb  on file "/home/jwboyer/src/linux-2.6/arch/powerpc/boot/dts/ebony.dts"

So something is very broken with this rule.  I poked at it for a while,
but I apparently don't have the make-fu to figure out how to un-break
it.

Help?
Bother.  I think the problem is that make is selecting the treeImage.%
rule (which does match), instead of the more specific
treeImage.initrd.%.  I think the very simple patch below, which just
reverses the order of the rules, might fix it.  Can you give it a
whirl?

Index: working-2.6/arch/powerpc/boot/Makefile
===================================================================
--- working-2.6.orig/arch/powerpc/boot/Makefile	2007-05-15 11:39:18.000000000 +1000
+++ working-2.6/arch/powerpc/boot/Makefile	2007-05-15 11:39:27.000000000 +1000
@@ -204,12 +204,12 @@ dts = $(if $(shell echo $(CONFIG_DEVICE_
 $(obj)/cuImage.%: vmlinux $(dts) $(wrapperbits)
 	$(call if_changed,wrap,cuboot-$*,$(dts))
 
-$(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
-	$(call if_changed,wrap,treeboot-$*,$(dts))
-
 $(obj)/treeImage.initrd.%: vmlinux $(dts) $(wrapperbits)
 	$(call if_changed,wrap,treeboot-$*,$(dts),,$(obj)/ramdisk.image.gz)
 
+$(obj)/treeImage.%: vmlinux $(dts) $(wrapperbits)
+	$(call if_changed,wrap,treeboot-$*,$(dts))
+
 $(obj)/zImage:		$(addprefix $(obj)/, $(image-y))
 	@rm -f $@; ln $< $@
 $(obj)/zImage.initrd:	$(addprefix $(obj)/, $(initrd-y))

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Re: treeImage.initrd rule is very broken

From: Josh Boyer <hidden>
Date: 2007-05-15 01:56:52

On Tue, 2007-05-15 at 11:40 +1000, David Gibson wrote:
Bother.  I think the problem is that make is selecting the treeImage.%
rule (which does match), instead of the more specific
treeImage.initrd.%.  I think the very simple patch below, which just
reverses the order of the rules, might fix it.  Can you give it a
whirl?
Of course it would have to be that simple.  Yep, switched the order of
the rules and the zImage.initrd creation worked wonderfully.

Thanks.

josh
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help