[yocto] confusion about DEPENDS vs RDEPENDS
lothar at denx.de
lothar at denx.de
Mon Sep 2 06:17:28 PDT 2013
Hello Paul,
I followed this very interesting thread, and have a question on the last
statement, just for understanding:
Are the limitations you are explaining here, the same as mentioned in...
http://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html
...under "Checksums (Signatures)", telling that:
"Consider a case with in-line Python, for example, where BitBake is not
able to figure out dependencies." ? So to speak, are those limitations
the cases, where bitbake is not able to figure out dependencies
correctly?
Thanks in advance,
Lothar
> Hi Paul / Nicolas,
>
> On Wednesday 28 August 2013 15:15:27 Paul D. DeRocco wrote:
>> From: Nicolas Dechesne
>> > if the source code changes, the version of the recipe needs
>> > to change too. if you change the source code without bumping
>> > the version, the package might not be rebuilt properly
>> > indeed. and that can explain the behavior you are seeing. if
>> > 'someapp' does not change, it would be rebuilt only if one of
>> > its dependencies was rebuilt.
>>
>> If you're making lots of changes in the course of debugging, isn't it
>> reasonable just to do a cleansstate on the recipe to force it to be
>> rebuilt?
>
> Current versions of the build system (denzil/1.2+, although refinements
> have
> been made since then) are task signature-based. That means as far as
> the build
> system is able to determine its inputs, if those change it should be
> able to
> rebuild all of the output to match. Known limitations:
>
> * Upstream software that doesn't properly rebuild when reconfigured. In
> most
> cases this should be considered as a bug in the recipe. Separating S
> from B
> can help here as I mentioned earlier, and you can see in dylan/1.4+ in
> meta/conf/distro/include/seperatebuilddir.inc that we've been enabling
> separate recipe build dirs for a number of recipes to help with this.
>
> * Editing the unpacked/patched source code in the recipe's work
> directory
> (i.e. tmp/work/...). Note that this is not something that is
> discouraged - in
> fact it can be a very useful development aid. However, you do need to
> be aware
> of the need to force the appropriate tasks to re-execute after you have
> made
> changes in there i.e. bitbake -c compile -f <recipe> or bitbake -C
> compile
> <recipe>, since the build system cannot detect these kinds of changes
> on its
> own.
>
> * Items remaining in the sysroot when recipes are completely renamed
> (i.e.
> when PN changes) or when a recipe is removed. We saw this recently with
> the
> mesa-dri -> mesa rename. Currently there's no way for the system to
> know what
> replaces what when PN changes or what to do when a recipe completely
> vanishes,
> you just have to clean out the old recipe's files in the sysroot. This
> can of
> course happen if you add and remove layers without deleting TMPDIR, so
> care
> should be taken when doing that. This is an difficult issue to solve
> practically; there is discussion of this issue here for those
> interested:
> https://bugzilla.yoctoproject.org/show_bug.cgi?id=4102
>
> * If you use runtime packaging ("package-management" in IMAGE_FEATURES)
> and
> you're putting the packages into a feed and expect on-target upgrades
> to work
> consistently from those feeds without manually bumping PR in recipes on
> every
> material change, you need to enable the PR service as described in the
> development manual so that PR increments automatically.
>
> * Changes on the host system affecting native recipes - less likely to
> cause
> issues, but worth being aware of. It can happen that adding or removing
> packages on the host system changes the configuration of native recipes
> without
> automatically triggering a rebuild - a good example is how we allow
> qemu-
> native to build on systems with and without X11; if you added SDL and
> X11 to a
> system on which you'd already built qemu-native beforehand, in the
> absence of
> other changes you'd have to cleansstate or otherwise force a rebuild of
> qemu-
> native to have a native QEMU that supported graphical output.
>
>
> However, with the caveats above, most of the time you can rely upon the
> build
> system to determine what to do when things change. Of course, yes, if
> you want
> to just force a recipe to rebuild you have the option of bitbake -c
> cleansstate <recipe> before building it again, but most of the time
> that's
> going to be more than is needed.
>
> Cheers,
> Paul
More information about the yocto
mailing list