cf733769

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Let NixCI work out the CI job graph

Three things this file was doing by hand, in 290 lines, that NixCI can
do or no longer needs:

Reading nix/ci-workspace-graph.json. NixCI reads this file straight out
of the forge, without cloning the repository, so a configuration that
reads another file is rejected instead of read and every suite fails at
the config step before anything is built.

Restating the crate graph as dependency edges. Discovery derives the
job graph from the derivations themselves and merges what it finds with
what is configured here, so all that is left to configure are the ten
orderings that are not derivation dependencies at all: the impure test
runners, which are small scripts that run `nix build` themselves and so
mention none of the archives, the python module or the cargo artifacts
they will ask for, and fmt, which gates the gammaloop package rather
than feeding it. I measured which edges those are rather than judging
by eye: for each of the 80, is the dependency's derivation in the
dependent's input closure. Seventy are.

Keeping every per-crate artifact out of CI. Those exclusions existed
because the artifacts were roots with hand-written edges; ordered by
discovery they can be jobs like any other, built once and reused, so
doNotBuild is back to the aggregates and duplicates that must not be
built at all.

Discovery is synchronous, so no job starts before the graph is known.
An edge missing from a hand-written graph lets two jobs build the same
derivation at once and we pay for both, which is the shape of the
duplicate work in the suites we looked at.
GitHub
gammaloopgammaloop-checkgammaloop-clippygammaloop-docgammaloop-fmtgammaloop-guppy-workspace-graphgammaloop-nextest-binaries-clinnetgammaloop-nextest-binaries-coregammaloop-nextest-binaries-integrationgammaloop-nextest-binaries-linnetgammaloop-nextest-binaries-python-apigammaloop-nextest-binaries-spensogammaloop-nextest-binaries-vakintlinnest-wasmconfiguredeploy:nix-ci-passeddevShellcargoArtifactsci-workspace-graph-jsonclinnet-clicrate-clinnetcrate-deps-gammaloop-apicrate-deps-gammaloop-integration-testscrate-deps-gammaloop-tracing-filtercrate-deps-gammaloop-tracing-filter-macroscrate-deps-gammaloop-workspace-hackcrate-deps-gammalooprscrate-deps-idensocrate-deps-linnestcrate-deps-linnetcrate-deps-linnet-pycrate-deps-spensocrate-deps-spenso-hep-libcrate-deps-spenso-macroscrate-deps-spynso3crate-deps-vakintcrate-gammaloop-apicrate-gammaloop-integration-testscrate-gammaloop-tracing-filtercrate-gammaloop-tracing-filter-macroscrate-gammaloop-workspace-hackcrate-gammalooprscrate-idensocrate-linnestcrate-linnetcrate-linnet-pycrate-spensocrate-spenso-hep-libcrate-spenso-macroscrate-spynso3crate-test-binaries-clinnetcrate-test-binaries-gammaloop-apicrate-test-binaries-gammaloop-integration-testscrate-test-binaries-gammaloop-tracing-filtercrate-test-binaries-gammaloop-tracing-filter-macroscrate-test-binaries-gammaloop-workspace-hackcrate-test-binaries-gammalooprscrate-test-binaries-idensocrate-test-binaries-linnestcrate-test-binaries-linnetcrate-test-binaries-linnet-pycrate-test-binaries-spensocrate-test-binaries-spenso-hep-libcrate-test-binaries-spenso-macroscrate-test-binaries-spynso3crate-test-binaries-vakintcrate-test-support-clinnetcrate-test-support-gammaloop-apicrate-test-support-gammaloop-integration-testscrate-test-support-gammaloop-tracing-filtercrate-test-support-gammaloop-tracing-filter-macroscrate-test-support-gammalooprscrate-test-support-idensocrate-test-support-linnestcrate-test-support-linnet-pycrate-test-support-spensocrate-test-support-spenso-hep-libcrate-test-support-spynso3crate-test-support-vakintcrate-vakintgammaloopgammaloop-python-modulegammaloopApiPackageArtifactslinnest-wasmlinnestWasmCargoArtifactsnix-ci-check-gammaloop-doctestnix-ci-check-gammaloop-nextest-clinnetnix-ci-check-gammaloop-nextest-corenix-ci-check-gammaloop-nextest-integrationnix-ci-check-gammaloop-nextest-linnetnix-ci-check-gammaloop-nextest-python-apinix-ci-check-gammaloop-nextest-spensonix-ci-check-gammaloop-nextest-vakintnix-ci-passedx86_64-linuxtest:nix-ci-check-gammaloop-doctesttest:nix-ci-check-gammaloop-nextest-clinnettest:nix-ci-check-gammaloop-nextest-coretest:nix-ci-check-gammaloop-nextest-integrationtest:nix-ci-check-gammaloop-nextest-linnettest:nix-ci-check-gammaloop-nextest-python-apitest:nix-ci-check-gammaloop-nextest-spensotest:nix-ci-check-gammaloop-nextest-vakint