On Mon, 2014-11-03 at 12:35 +0100, Mike Looijmans wrote: > 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.
That is fine and perfectly acceptable. Just to be clear, you can also do: sysroot_stage_all() { : } in your recipe and it will only affect that recipe, not all recipes. Cheers, Richard -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core