Hi,
I am running goa from a higher-level build harness that drives many build flavours of the same component (different boards, different kernels, different patch series applied to the cached Genode source). Each flavour resolves to its own out-of-tree cache directory, and the harness invokes goa build + goa export once per flavour.
What I’d like is a way to tell goa, on the command line, where to put var/ for each invocation, so two flavours of the same project can build side-by-side without stepping on each other.
What I tried so far:
set depot_dir <path>andset build_dir <path>in a project-localgoarc. Works fine for a single flavour, but the path is baked intothe file — the harness can’t vary it per invocation without rewriting thegoarceach time (and any concurrent invocation racing on that rewrite is a recipe for fun).set common_var_dir <path>in~/goarc. Closer to what I want:
goa placesvar/under<common_var_dir>/<project-name>/. But the key is the project name only — two builds of the same component at the same time still collide.- Hierarchical
goarclookup (walking up from the project dir). That works for setups where each flavour lives under a distinct parent directory, but our flavours all consume the same source tree from different cache trees, so there is no natural per-flavour parent to
hang agoarcoff of. - didn’t try to sacrifice a goat yet (sacrifical goats have been in short supply recently
)
What I observe when two flavours collide on the same var/ (e.g. both running goa build against the same src/<project>/<component>/ while their cache trees differ): goa’s pre-build var/depot rewrite trips on a half-populated subdir from the sibling invocation, fails
with OSError: [Errno 39] Directory not empty: <archive> and unwinds. I can serialise the harness as a workaround, but on a 13-component matrix that costs a lot of wall time per build round.
Questions:
- Is there an existing way to point
var/(or equivalentlybuild_dir+depot_dir) to an absolute path via the command line? Something likegoa build --common-var-dir <abs-path>orgoa build --build-dir <abs-path> --depot-dir <abs-path>. - If not, would a patch adding one be welcome? I’d be happy to contribute it. The shape I have in mind is a simple CLI override that, when present, supersedes whatever
goarcresolved. - Alternatively, would honouring an environment variable (e.g.
GOA_COMMON_VAR_DIR) be more in keeping with goa’s style?
Thanks!
PS:
happy to share the reproducer if useful — it’s just two goa buildinvocations on the same component with different cache trees and no per-flavour goarc separation.