release: 2.2.0#26
Merged
Merged
Conversation
Adds support for `name@version` syntax in `interface.yaml` imports so
consumers can declare which version of a producer they require, instead
of silently inheriting whatever happens to be on disk at
`<producer>/current/`.
Syntax:
imports:
- common@0.1.0.0 # pin to a released snapshot
- audiodecoder@current # in-development sibling (explicit)
- audiosink # bare name — deprecated, treated as @current
Resolver behaviour for the consumer's `current` build:
- `@<version>` — links to `lib<name>-v<version>-cpp.so`. The producer's
interface.yaml must list this version under
`versions_with_info`; otherwise the dependency-tree
generator fails fast with a clear, actionable error.
- `@current` — links to `lib<name>-vcurrent-cpp.so`.
- bare name — same as `@current`, plus a one-shot deprecation
warning per (consumer, import) pair. The warning is
suppressed for frozen-snapshot interface.yaml files
since they are historical artefacts and re-warning
every build would be noise.
Toolchain changes:
- host/aidl_interface.py — adds `parse_import_spec()`, populates a
per-interface `import_versions` map alongside the existing bare-name
`imports` list (preserved for back-compat with aidl_api.py), routes
pinned versions through the dependency tree builder, and replaces
the previous `KeyError: <target>` crash with a graceful RuntimeError
when a pin points to an unregistered target.
- host/aidl_ops.py — removes the `str(int(a))` coercion on `--version`
so dotted release strings (`0.1.0.0`) can be passed through.
- host/CMakeLists.inc — broadens the target-name version regex from
`-v([0-9]+)` to `-v([^-]+)-cpp$` to capture dotted release strings
alongside integer ordinals.
Verified against rdk-halif-aidl tree:
- bare-name imports build cleanly + emit one-shot deprecation warning
- `@current` pin builds cleanly + suppresses the warning
- `@<unregistered-version>` fails fast with the new error message
Closes #23. Related: rdkcentral/rdk-halif-aidl#538.
feat(imports)!: version-pinned imports in interface.yaml (#23)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 2.2.0
Adds
Versioned imports in interface.yaml (#23 / #25) — `name@version` syntax with on-disk snapshot auto-discovery.
```yaml
imports:
common@0.1.0.0 # pin to a released snapshot
audiodecoder@current # in-development sibling (explicit)
audiosink # bare name — deprecated
```
Frozen-snapshot `//interface.yaml` files are auto-registered as buildable `-v-cpp` targets — no `versions_with_info` boilerplate needed on the producer side.
Bare-name imports keep working through a deprecation window with a one-shot warning per (consumer, import) pair.
Pin-to-unregistered-version fails fast with a clear, actionable error.
Consumed by