On 11/03/2014 11:49 AM, Mike Looijmans wrote:
On 11/03/2014 11:04 AM, Richard Purdie wrote:
On Mon, 2014-11-03 at 10:53 +0100, Mike Looijmans wrote:
On 10/30/2014 06:47 PM, Richard Purdie wrote:
On Thu, 2014-10-30 at 15:17 +0100, Mike Looijmans wrote:
I have this base script that builds FPGA bitstreams:

https://github.com/topic-embedded-products/meta-topic/blob/master/recipes-bsp/fpga/fpga-image.inc


Now you can have multiple recipes using it, and as such, it seemed a good
idea
to add these lines to that recipe:

+ALTERNATIVE_${PN} = "fpga.bin bitstreams"
+ALTERNATIVE_LINK_NAME[fpga.bin] = "${datadir}/fpga.bin"
+ALTERNATIVE_TARGET[fpga.bin] = "${datadir}/fpga.bin"
+ALTERNATIVE_LINK_NAME[bitstreams] = "${datadir}/bitstreams"
+ALTERNATIVE_TARGET[bitstreams] = "${datadir}/bitstreams"


This still resulted in staging conflicts.

This isn't surprising since update-alternatives only works for target
systems. It is not designed for operating on the sysroot.

I don't want these files in sysroot, I want them on target only.

Ok, that makes things much easier.

But looking at the contents of the fake packages, the fpga.bin has been
renamed by alternatives (as expected), and the symlink will be created after
installing, so how come I still get this?

The "staging" code uses the output of do_install directly and does
different things to the packaging code path. We've never had someone
with this problem before. Binaries in *bindir only get installed into
the sysroot in the -native case.

I appreciate that tells you why it doesn't work and not how to fix it
but hopefully that helps a bit.

If I understand you correctly, the problem is that the recipe is trying to
install things in sysroot?

Correct, by default ${datadir} is staged. The easiest way to handle this
may be to define your own sysroot_stage_all function (or
sysroot_stage_dirs) which just stages what you need, if anything.

In other words, make  sysroot_stage_all into a no-op?

I've been looking at the staging.bbclass, but that's basically the best I can
come up with.

Ah, slightly better:

# Prevent bitstreams ending up in sysroot.
sysroot_stage_dirs_append() {
        rm -rf $to${datadir}/fpga.bin $to${datadir}/bitstreams
}

This wastes a bit (installing multimegabyte bitstreams only to remove them) but it won't interfere with recipes that do wish to install things in sysroot.

I've tested with this now, and this appears to do exactly as I wanted.




Met vriendelijke groet / kind regards,

Mike Looijmans
System Expert


TOPIC Embedded Systems
Eindhovenseweg 32-C, NL-5683 KH Best
Postbus 440, NL-5680 AK Best
Telefoon: (+31) (0) 499 33 69 79
Telefax:  (+31) (0) 499 33 69 70
E-mail: mike.looijm...@topic.nl
Website: www.topic.nl

Please consider the environment before printing this e-mail

Topic zoekt gedreven (embedded) software specialisten!
http://topic.nl/vacatures/topic-zoekt-software-engineers/

--
_______________________________________________
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to