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
_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to