Everything in CI
What you'd like is, say you want to develop a new feature in X. You fork all the repos you need to touch, as you push to each one the build gets verified, including dependent rebuilds for xorgproto → libXrandr → xrandr etc.
Current theory is to start with a minimal buildroot and from bottom-up build everything, with gitlab artifacts as the output for each stage. So xorgproto builds with --prefix=/opt/x11
, installs with DESTDIR=$(pwd)
, and preserves opt/
in the artifact; dependent projects download all the prior artifacts they need into /opt
, adjust PKG_CONFIG_PATH
etc. appropriately, and repeat.
When a package completes building, it should curl -X POST
to the appropriate URL for util/modular
to have it run its CI, which will examine the module just built and determine which dependent modules to rebuild in response. This lets you do things like delay Xaw-app rebuilds until the libX11→libXt→libXmu→libXaw chain has completed, by only triggering Xaw-app rebuilds at the last step. Doing that POST requires knowing which user you're going to emulate; that's per-project, which is super inconvenient, POSTing to say "compute the next thing" is trivial but POSTing to build the next thing requires a per-thing secret. Hmm.