extensions: add basic support
Metadata
Current evaluation
Merged basic extension support for Rockcraft, enabling validation and application during project load. Approved by two reviewers, passed CI, and changed 12 files. Docs and testing deferred until concrete extensions exist.
Suggested action: —
No scores available.
Issue body
Much like Snapcraft's, Extensions can add top-level elements, new parts,
or modify existing parts in Rockcraft projects. This commit implements
the basic support of validating extensions and applying them when the
project is loaded.
--------
This PR's history is messy because I created this branch off of the existing `extensions-flask`, merged main and then removed the code relating to the command line and to flask (those will be addressed separately). @sergiusens db58974f0560a3 is the one with my changes and tests.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged basic extension support for Rockcraft, enabling validation and application during project load. Approved by two reviewers, passed CI, and changed 12 files. Docs and testing deferred until concrete extensions exist. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged initial extension support for Rockcraft, implementing validation and application during project load. Documentation and testing are deferred until a functional extension and CLI options are available. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged basic extension support for Rockcraft, implementing validation and application logic during project load. Includes core changes and tests. Documentation and spread-testing were deferred until a functional extension is available. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #1238 Support for extensions (basic support) | charmcraft | closed | Closed without implementation. The extension framework request was deferred, with maintainers pointing to canonical/rockcraft PRs 281 and 292 as the reference implementation instead. | |
| #1248 feat(extensions): add basic support | charmcraft | merged | Merged to resolve issue #1238, adding basic extension support. Approved by two reviewers, apply_extensions now runs in unmarshal after base expansion to support unified charmcraft.yaml formats, requiring double base expansion if extensions modify bases. (+750/-3 lines, 10 files) | |
| #1057 fix(schema): allow extensions field in rockcraft.yaml | rockcraft | merged | Merged a schema-only update adding the extensions field to rockcraft.yaml, resolving IDE validation error #922. Approved by two reviewers, rebased on main, and merged without runtime impact. | |
| #3197 experimental extension support | snapcraft | merged | Merged experimental extension support. Requires #3196. Approved by one reviewer, rebased by the author, and integrated with 102 additions and 8 deletions across seven files. | |
| #273 Extensions Framework | rockcraft | closed | Implemented extensions primitives to support ROCK building. The issue was closed after the fix was merged in pull request #281. |