[OE-core] Hash Equivalency - What this means for developer productivity

Richard Purdie richard.purdie at linuxfoundation.org
Fri Aug 2 15:53:28 UTC 2019


This has been talked about in a lot of the project meetings but I
wanted to ensure its on the mailing list too.

master-next (and hopefully soon, master) now contain patches which
enable "hash equivalency" support in runqueue in bitbake. That doesn't
sound so interesting until I explain what this means.

Currently, if I do:

$ bitbake core-image-sato

then:

$ bitbake m4-native -c install -f

this would mean that core-image-sato would rebuild, nearly from
scratch. The task stamp for all tasks onward from m4-native would
change.

With the patches in master-next and this configuration in local.conf:

BB_HASHSERVE = "localhost:0"
BB_SIGNATURE_HANDLER = "OEEquivHash"

$ bitbake core-image-sato
$ bitbake m4-native -c install -f
$ bitbake core-image-sato

will result in do_populate_sysroot of m4-native running, it will see
the output matches the previous build and it will then skip to the
rootfs generation pulling all the other pieces from sstate.

Note that for this to work, m4-native has to have previously built with
the hashserv running, otherwise it has nothing to compare its output
to.

I think this should be a "big deal" for many developers, reducing
unneded rebuilds and hence speeding up development.

As with any new feature, there are likely going to be some some
teething issues but I'm very opitmistic about some of the benefits this
should bring!

Cheers,

Richard






More information about the Openembedded-core mailing list