RTEMS | waf exits too early when building all BSPs at once (#5252)
Chris Johns (@chris)
gitlab at rtems.org
Wed May 28 23:58:46 UTC 2025
Chris Johns commented on a discussion: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5252#note_122977
Each BSP built has its own environment that defines the settings etc used in the build. Waf supports deriving an environment from the base, adding the specific settings a BSP needs and then queuing the builds.
I think the environment is created [here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L1528) and it seems items in the environment can be macros of some form expanded and played with [here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L120) and other places. You can see the `env` being populated after being created:
```python
conf.env["ARCH"] = arch
conf.env["ARCH_BSP"] = arch_bsp
conf.env["ARCH_FAMILY"] = arch_family
conf.env["BSP_BASE"] = bsp_base
conf.env["BSP_NAME"] = bsp_name
conf.env["BSP_FAMILY"] = family
conf.env["DEST_OS"] = "rtems"
```
As an aside `rtems_waf` uses the `waf` provided `derive()` call to get an environment [here](https://gitlab.rtems.org/rtems/tools/rtems_waf/-/blob/main/rtems.py?ref_type=heads#L208). The call in the `rtems.git` `wscript` may currently equate to the same thing but I followed the existing `waf` examples at the time.
The BSP build item context is constructed [here](https://gitlab.rtems.org/rtems/rtos/rtems/-/blob/main/wscript?ref_type=heads#L689) and just below is the build context for the library items. The adds the build item to the build queue which I believe is per BSP. If you had a print to show those items and the number of sources you can see the builds for `csb336` bsp:
```
[] bsp item 14
[] library item 8
[] library item 2
[] library item 1
[] library item 19
[] library item 1
[] library item 1101
[] library item 2
[] library item 1
[] library item 32
[] library item 5
[] library item 2
[] library item 15
[] library item 3
[] library item 2
[] library item 2
[] library item 2
[] library item 2
[] library item 3
[] library item 913
[] library item 4
[] library item 11
```
Only the `csb366` items are in the build queue which makes sense because it is specific the `env` for that BSP.
You can see `waf` move through the different environments when the banners of \`Waf: Entering directory..\` and `Waf: Leaving directory...` lines are printed.
I suppose to get the `-k` to move across BSPs the fatal error of the BSP build would need to be trapped and passed over. Sorry, I have no idea how to do that.
--
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5252#note_122977
You're receiving this email because of your account on gitlab.rtems.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/bugs/attachments/20250528/14d7bf59/attachment.htm>
More information about the bugs
mailing list