plugins: add crystal v2 plugin
Metadata
Current evaluation
Merged addition of a v2 Crystal plugin to Snapcraft. The implementation was refined through manual testing, commit squashing, and rebasing to fix spread test failures. Handles runtime dependencies and resolves CRAFT-823.
Suggested action: —
No scores available.
Issue body
- [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] Have you successfully run `./runtests.sh static`?
- [x] Have you successfully run `./runtests.sh tests/unit`?
-----
Initial implementation of a v2 Crystal plugin. Manually tested by loading in the changes as a local plugin and build a Crystal shard via snap.
> **NOTE:** You'll need to name the local plugin `PluginImpl` instead of `CrystalPlugin`
@mamantoha If you could test with your project that would be 💯.
Some things that still need handled:
- [ ] I'm not sure how to replicate the [elf](https://github.com/snapcore/snapcraft/blob/master/snapcraft/plugins/v1/crystal.py#L111-L133) stuff in the v1 plugin given there isn't a place to run arbitrary code like that after build? Maybe @bcardiff would have an idea?
- [x] Is there a better way to move the built binaries than just `cp`?
* Ideally we update it once https://github.com/crystal-lang/shards/issues/518 is implemented/released
- [x] Do I need to write a `spread` test for the v2 plugin? I didn't see one for `go` or `rust` so I didn't bother...
(CRAFT-823)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Merged addition of a v2 Crystal plugin to Snapcraft. The implementation was refined through manual testing, commit squashing, and rebasing to fix spread test failures. Handles runtime dependencies and resolves CRAFT-823. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Added a v2 Crystal plugin to Snapcraft. The merged code was initially authored by Blacksmoke16, then refined by mr-cal through iterative testing, commit squashing, rebasing, and resolving spread test failures. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged an initial v2 Crystal plugin for snapcraft. Following review and testing with the oq project, commits were squashed and rebased to fix spread tests. The plugin now enables building Crystal shards via snap. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2598 crystal plugin: initial version | snapcraft | merged | Merged an initial Crystal plugin for Snapcraft, introducing 370 lines across 8 files. Approved by one reviewer with 87.5% diff coverage. Successfully integrated into the main branch. | |
| #5797 docs: add 'Crystal plugin' reference | snapcraft | merged | Merged documentation update adding a reference to the Crystal plugin. The change added 68 lines across two files, received approval from two reviewers, and was merged despite one failing integration test. | |
| #4672 Enable Snapcraft plugins in craft-application codepath | snapcraft | merged | Merged via rebase merge after two approvals and passing CI. Registers Snapcraft plugins in the craft-application codepath and adds confinement and base variables to the lifecycle for plugin usage. |