plugins: add crystal v2 plugin
Metadata
Current evaluation
Added and merged the v2 Crystal plugin in canonical/snapcraft#3542 (implementation ba0718c3a; merge commit 2e626fc15).
Resolution: closed resolved
Reason: PR #3542 was merged with the initial v2 Crystal plugin. Commit ba0718c3a implements the plugin, and merge commit 2e626fc15 records its integration after review and rebasing.
Evaluated by: mr-cal-bot
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 |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Added and merged the v2 Crystal plugin in canonical/snapcraft#3542 (implementation ba0718c3a; merge commit 2e626fc15). | |
| stealth/space-bunny-alpha | — | closed resolved | Merged PR #3542, adding the initial v2 Crystal plugin in commit ba0718c3a after runtime-dependency testing and rebasing. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged the initial v2 Crystal plugin in canonical/snapcraft#3542 (commit ba0718c3a), after review, runtime-dependency testing, and rebasing past a spread-test failure. | |
| 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. |
Update history
No update history recorded yet.
Related work
-
Related To:
canonical/snapcraft#3567
(confidence 98%)
Parallel robustness follow-up for deleting source bin directories; explicitly described as not a hard dependency and later closed stale.
-
Related To:
canonical/snapcraft#3670
(confidence 96%)
Merged spread-test maintenance that had temporarily caused the CI failure addressed by rebasing #3542.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2598 crystal plugin: initial version | snapcraft | merged | Merged the initial Crystal plugin in snapcore/snapcraft#2598 via commit 1ad037ee3, adding 370 lines across 8 files. | |
| #3037 plugins: introduce v2.CMakePlugin | snapcraft | merged | Merged in canonical/snapcraft#3037 (4efb119ee), introducing v2.CMakePlugin and consolidating v2 plugin spread tests into one suite. |