#!/usr/bin/env python3 """wai-conformance-lists.py: the lists wai-conformance.yml runs, derived from the files that own them, so a change adds a file instead of editing the workflow's shared lists. Each list below used to be kept by hand in the workflow, and every new module of WAI appended to it, so any two branches that added one conflicted. Each is now read at run time from its source: .github/wai-conformance/verifiers/*.sh one file a step of the independent verifiers: its shell body, and a header of `# key: value` lines that gives its features, binaries, paths and order. From them: WAI_FEATURES, WAI_PQ_FEATURES and WAI_RELEASE_FEATURES, the binaries and tests the job builds first, the steps it runs, the feature lists the features-alone job checks, and the paths the workflow's gate runs on. .github/wai-conformance/corpora/*.txt one file a cargo-class corpus: its tool and directory. The cargo-classes corpus loop runs them, with the features their tools require (Cargo.toml) and the step's own. Its header: corpus, order, bin, dir, and `gen:` where the tool's modes that write the corpus are not its `gen` (`none`: it writes nothing). `wai conformance gen` runs them (wai-rs/build.rs reads the files, and fails on a dir that names no corpus). wai/wai-rs/tests/*.rs a test file whose line `// wai-conformance: ...` names a tag is run by the steps that take that tag: int-kernels (both profiles), int-kernels-release (the release profile only), int-kernels-amd (the AVX-512 host). Their features are the tests' required-features and the step's own. A verifier file's header (the leading `# key: value` lines; the first other line ends it): step its name in the log (required) order an integer: steps run in ascending order, a tie by file name (required) features feature lists, space-separated, each comma-joined: each compiles alone in the features-alone job, and every feature in them joins the build's list alone the lists features-alone checks instead of `features`; `-` for none build union (the default: WAI_FEATURES) or pq (WAI_PQ_FEATURES) release-features features of the optimised build (WAI_RELEASE_FEATURES) bins, pq-bins binaries the job builds first and copies to $RUNNER_TEMP/wai-bins/union or /pq, beside every `wai-bins/union/NAME` and `wai-bins/pq/NAME` the body names paths globs whose change runs the workflow (each under one of its `paths:` globs) working-directory where the body runs, from the repository root (default wai) independent one line an entry: a corpus's independent verifier, which the job runs with every other in one step, `wai conform --independent`, and never in a body: ` [needs=] [verdicts=] [dir=] python3 [-I]