Message ID | 20230719142758.84540-1-jstephan@baylibre.com |
---|---|
Headers | show |
Series | Add bblock helper script | expand |
Hi, Thanks for looking at this, I think it could become a really useful and well used extension to bitbake! On Wed, 2023-07-19 at 16:27 +0200, Julien Stephan wrote: > I am currently working on bug #13425 and I would like to post my wip > script as an RFC to get feedback on it, before going further in the > development. > > The script `script/bblock` can be used with the following command: > > bblock [list of recipes to lock] > > Here is a summary of what is currently implemented: > * can lock several recipes at once > * on first execution bblock will append `require bblock.inc` in > `build/conf/auto.conf` (creates `auto.conf` if it doesn't exist) > * on first execution creates the file `build/conf/bblock.inc` with a > dedicated header and: > - adds SIGGEN_LOCKEDSIGS_TYPES += "t-bblock" > - adds SIGGEN_LOCKEDSIGS_TASKSIG_CHECK = "warn" to display warning but > do not stop the build > * loops over all recipes to lock and adds entry with latest "do_compile" > signature in `conf/bblock.inc`, such as: SIGGEN_LOCKEDSIGS_t-bblock += "bc:do_compile:e233cd793137a92dd575a417a2877e324ce526c4dc4a7db652abb9512f406f1f" > > Limitations: > * only gets do_compile signature for now as a POC > * `bblock reset [list of recipes]` not yet implemented > * no check if a recipe is already locked > > Steps to test the script: > bitbake bc --> generate a signature for bc's tasks > bblock bc > # modify do_compile in bc recipe to force signature change > bitbake bc --> throws the following warning: `WARNING: The bc:do_compile sig is computed to be 680bd6c291bf88e379e0c405a773cf5f81851e1a52570398cefd0196000ac1ef, but the sig is locked to e233cd793137a92dd575a417a2877e324ce526c4dc4a7db652abb9512f406f1f in SIGGEN_LOCKEDSIGS_t-bblock` Ideally we should just be able to run bblock bc without any previous commands and it would lock the file. We may want to note that some recipes are locked somehow too so the user realises this if they leave a build and come back to it later, forgetting what they did (a bit like the -f option leaves a warning on later builds to remind the user). To simplify things, I think it would be reasonable to add a bblock.inc file unconditionally in our core configuration so that it is always included if present, just to make the tool easier since I think this will be a common use. Also, you're going to need to think about package architectures. Imagine I change MACHINE and then try "bitbake bc", it probably shouldn't be locked any more, it certainly shouldn't try and match the previous locked values as in most cases they will be different. This is why if you do a "bitbake core-image-minimal -S none" and look at the loacked-sigs.inc file, you'll see sections like: SIGGEN_LOCKEDSIGS_t-allarch SIGGEN_LOCKEDSIGS_t-x86-64 SIGGEN_LOCKEDSIGS_t-x86-64-v3 SIGGEN_LOCKEDSIGS_t-qemux86-64 and a list of types: SIGGEN_LOCKEDSIGS_TYPES:qemux86-64 = "t-all t-allarch t-qemux86-64 t-x86-64 t-x86-64-v3" This means the locks only apply to specific package architectures, which allows you to change MACHINE. > > I also have a point I would like to discuss: I only get signature for > do_compile for the POC but wondering what should I do here: > * have a set of predefined task to lock, in that case how to choose the > tasks? I think by default bblock would lock all tasks for a recipe? It might take a task option to allow a specific task to be specified? > * compute the list of all available tasks for a given recipe and get > signature for all? Is there a way to get such list without using > `infoil.build_targets(pn, "listtasks", handle_events=True)` as this > will start bitbake, takes some time and requires some processing of > the output We may need to add some API to bitbake to get this information. The task hashes do need a full task graph to compute so it isn't a simple operation with a cold cache. > * add an option for the user to specify the task he wants to lock? (this > may be useful to add anyway) Yes, I think that would make sense. > My branch is available here [1] > > Am I going into the right direction? I think you've made a good start, yes! Cheers, Richard