Upgrading from 0.6 to 0.7¶
This page is the migration for the 0.7 option-vocabulary renames. The same
concept had two spellings on the command line; 0.7 keeps one, and the old
spelling is removed. A script that still uses a retired spelling stops with
exit 64 and a No such option error naming the flag, so it fails loudly
rather than running with a different meaning.
Do this first: run your existing command lines against 0.7. Each failure names the retired flag; the table below gives its replacement.
CLI renames¶
| 0.6 spelling | 0.7 spelling | Where |
|---|---|---|
--version LABEL (per-side version label) |
--label LABEL |
compare, dump, project history |
--abi3 VERSION (stable-ABI floor) |
--abi3-floor VERSION |
compare |
deps compare --old-root PATH |
deps compare --root old=PATH |
deps compare |
deps compare --new-root PATH |
deps compare --root new=PATH |
deps compare |
deps tree --sysroot PATH |
deps tree --root PATH |
deps tree |
--label takes the same old=/new= qualifier as --version did:
--label old=1.0 --label new=2.0. A bare value labels both sides. The root
abicheck --version is unchanged; it still prints the tool version.
--root on deps compare takes the same old=/new= qualifier as
--header. The two old flags map one-to-one onto it, and you may combine
--root old= with --root new=.
What a retired spelling does¶
- It is an unknown option. The command exits 64 before it analyses
anything, and the error names the flag, for example
Error: No such option '--version'. - Nothing runs with a different meaning. The retired spelling is not kept as a hidden alias, so there is no warning period to watch for.
Config keys¶
Config keys have no transition period: the old key is removed in this
release, so a .abicheck.yml that still uses it fails with the strict schema's
unknown-key error, and the run stops instead of changing meaning.
| 0.6 key | 0.7 key | Notes |
|---|---|---|
acknowledgment: (the .abicheck.yml block, and the top-level block of a --policy document) |
acknowledgments: |
Same keys inside: .abicheck.yml takes file, unacknowledged_additions and breaks; a --policy document's block takes unacknowledged_additions and breaks. A --policy document still carrying acknowledgment: fails with an error naming acknowledgments:; the old key is not accepted. |
source: {method: ...} |
sources: {method: ...} |
Joins the existing sources: block (public_headers, exclude, graph). |
Action and typed API¶
The typed Python API (run_compare, run_dump, CompareRequest, DumpRequest,
InputSpec) renames these keyword arguments and fields. Each old spelling is
removed outright, so passing it raises TypeError naming the unexpected keyword.
| 0.6 spelling | 0.7 spelling | Where |
|---|---|---|
old_version / new_version |
old_label / new_label |
run_compare |
policy_file_path |
policy (a document path; policy takes a profile name or a document) |
run_compare, CompareRequest |
acknowledgments_path |
acknowledgments |
run_compare, CompareRequest |
force_public_symbols |
public_symbols |
run_compare, CompareRequest |
enable_debuginfod |
debuginfod |
run_compare, run_dump, CompareRequest, DumpRequest |
follow_dependencies |
follow_deps |
CompareRequest, DumpRequest |
include_dependencies |
include_system_declarations |
run_compare, run_dump, InputSpec |
contract_evaluation and contract_mode |
contract (public, exports, all, auto) |
run_compare, CompareRequest |
header_backend |
frontend |
run_dump |
contract_evaluation=False has no replacement: contract relevance is always
evaluated, as the CLI does. InputSpec.version and run_dump(version=) keep
their names.
The composite GitHub Action forwards these flags itself, so the CLI renames above need no change in a workflow that uses only the Action. The Action's own inputs are renamed too; see the table below.
Action input renames¶
Unlike the CLI, the Action has no transition period: each renamed input
below is retired as of this release. The new name replaces the old one at once,
and setting the old name fails the run before any analysis, with an
::error:: that names the new input. Change the workflow in the same edit
that moves to this release.
| 0.6 input | 0.7 input | Notes |
|---|---|---|
ast-frontend |
set: compile.frontend=<value> |
Renamed to frontend, which 0.7 also retires (see below). |
gcc-path |
compiler |
Takes a compiler path or a cross-toolchain prefix. |
gcc-prefix |
compiler |
Removed. compiler takes the same value. |
gcc-options |
set: compile.options=[<flag>, ...] |
Renamed to compile-options, which 0.7 also retires (see below). |
analysis-assurance-complete |
require-complete |
Same true/false override of assurance.require_complete. |
public-header-dir |
header: <dir> ... |
Renamed to public-header-dirs, which 0.7 also retires (see below). |
debug-info1, debug-info2 |
old-debug-info, new-debug-info |
|
devel-pkg1, devel-pkg2 |
old-header, new-header |
These now also accept a development package. |
old-version, new-version |
old-label, new-label |
Report labels; the defaults stay old and new. |
policy-file |
policy |
policy takes either a built-in profile name or a policy file path. |
requested-depth (check-target) |
depth |
|
contract-file (check-target) |
contract |
|
dso-only |
set: release.dso_only=true |
Config key release.dso_only. |
include-private-dso |
set: release.include_private_dso=true |
Config key release.include_private_dso. |
fail-on-removed-library |
set: gate.fail_on_removed_library=true |
Config key gate.fail_on_removed_library. |
public-header-dirs |
header: <dir> ... |
It was forwarded as -H, which is what header does. Use old-header/new-header for one side. |
frontend |
set: compile.frontend=<value> |
|
compile-options |
set: compile.options=[<flag>, ...] |
A YAML list, one flag per element. |
nostdinc |
set: compile.nostdinc=true |
|
jobs |
none | Removed with no replacement. The worker count is controlled by the runner or workflow. |
allow-build-query |
none | Removed with no replacement. abicheck runs its inferred compile-database query whenever a sources input needs build context. A trusted query is set through build-config's build.query. |
consumer-ast-frontend (check-target) |
consumer-frontend |
|
consumer-gcc-path (check-target) |
consumer-compiler |
|
consumer-gcc-options (check-target) |
consumer-compile-options |
check-target's analysis-assurance-complete, ast-frontend, gcc-path,
gcc-options, gcc-prefix and policy-file map to the same new names as the
root Action.
Reusable workflow input renames¶
check-single.yml and check-project.yml take the Action's vocabulary, with no
transition period. Each old workflow_call input is still declared as an empty
tombstone, and a non-empty value fails the run before any analysis with an
::error:: that names the replacement.
| 0.6 input | 0.7 input | Workflows |
|---|---|---|
requested-depth |
depth |
check-single.yml |
ast-frontend |
frontend |
both |
gcc-path, gcc-prefix |
compiler |
both |
gcc-options |
compile-options |
both |
contract-file |
contract |
check-single.yml |
policy-file |
policy |
both |
The extra-args input is passed to the CLI as raw arguments. A workflow
that passes a retired spelling there, for example extra-args: --version 2.0,
now fails with exit 64. Change it to the new spelling (--label 2.0).
Compare options moved to .abicheck.yml¶
Three project-stable compare options are removed from the command line. Each
now fails as an unknown option (exit 64). Set the same value in .abicheck.yml,
or pass it once with --set PATH=VALUE, whose value is YAML.
| 0.6 spelling | 0.7 spelling | Notes |
|---|---|---|
compare --view TOKEN |
output.view (--set 'output.view=["show=breaking"]') |
A YAML list of the same tokens. |
compare --used-by-manifest FILE |
consumers.manifests (--set 'consumers.manifests=[FILE]') |
Relative paths resolve against the config file. |
compare --required-symbol NAME |
consumers.required_symbols (--set 'consumers.required_symbols=[NAME]') |
Entries may be @FILE. Still mutually exclusive with --used-by. |
--used-by, --define and --severity-preset stay on the command line. consumers.* and output.view are
refused, not ignored, under --no-baseline and on a stored BundleFacts operand.