[OE-core] Running task for all recipes required by an image (was Re: [PATCH v2 3/3] rm_work.bbclass: clean up sooner)

Mike Crowe mac at mcrowe.com
Fri Feb 17 15:21:16 UTC 2017


On Monday 13 February 2017 at 11:54:32 +0100, Patrick Ohly wrote:
> On Fri, 2017-02-10 at 18:32 +0000, Mike Crowe wrote:
> > On Thursday 09 February 2017 at 17:24:39 +0100, Patrick Ohly wrote:
> > > On Wed, 2017-02-08 at 13:48 +0000, Mike Crowe wrote:
> > > > On Wednesday 08 February 2017 at 14:04:42 +0100, Patrick Ohly wrote:
> > The part I'd missed is the all-important line in source-release-world.bb:
> > 
> >  do_source_release[depends] += "core-image-sato:do_build"
> 
> Okay, that explains it.
> 
> IMHO this do_build dependency should trigger do_rm_work. Your "bitbake
> -c all_source_releases source-release-world" intentionally includes a
> real world build, not just executing the source release tasks. Cleaning
> up while building is the goal of rm_work.bbclass. It's arguably a
> deficiency in the previous rm_work.bbclass that it wasn't active in your
> case.
> 
> Now we just need to find a way to combine these without breaking the
> extra tasks.

Now I think about this further, we're only depending on do_build in order
to ensure that we get all the dependencies included in the source release
via the recrdeps task. If there were a better way to do that then perhaps
rm_work wouldn't cause any problems, and we also wouldn't waste time
building stuff that we aren't going to use.

I've tried:

 ALL_DEPENDENCIES = "${RDEPENDS} ${DEPENDS}"
 do_source_release[depends] = "${@' '.join([s+':do_source_release ' for s in d.getVar('ALL_DEPENDENCIES', True).split()])}"

in the bbclass (which is still inherited by all recipes) and then just
running the source_release task on the final images.

Unfortunately this fails when IMAGE_INSTALL contains package names that are
generated using PACKAGES_DYNAMIC such as gstreamer plugins. :(

ERROR: Nothing PROVIDES 'gstreamer1.0-plugins-good-audioparsers'. Close matches:
  gstreamer1.0-plugins-good
  gstreamer1.0-plugins-base
  gstreamer1.0-plugins-bad
  gstreamer1.0-plugins-good RPROVIDES gstreamer1.0-plugins-good-audioparsers

Is there a correct way to get a task to run for every recipe that is
required by an image?

Thanks.

Mike.



More information about the Openembedded-core mailing list