← Back to issue list

providers: integrate craft-providers support

View original Github issue

Metadata

Project
snapcraft
Number
#3660
Type
pull request
State
merged
Author
cmatsuoka
Labels
—
Created
Updated
Closed

Current evaluation

PR #3660 by cmatsuoka integrated craft-providers into Snapcraft, running lifecycle commands in LXD/Multipass instances. Merged into the 7.0 line via merge commit 7c2ac0027 (squash commit 8a06cdbbd).

Resolution: closed resolved

Reason: The pull request was approved and merged into snapcraft/7.0, recorded as merge commit 7c2ac0027 ("Merge pull request #3660 from cmatsuoka/craft-626/integrate-craft-providers") with underlying commit 8a06cdbbd "providers: integrate craft-providers support". The feature shipped in Snapcraft 7.0 and remains in the codebase today.

Evaluated by: mr-cal-bot

No scores available.

Issue body

Run lifecycle commands inside a build provider using lxd or multipass. Craft-providers glue code based on Chris Patterson's implementation for Charmcraft. Note: multipass images for multipass will be fixed when base devel is implemented. Co-authored-by: Chris Patterson <chris.patterson@canonical.com> Signed-off-by: Claudio Matsuoka <claudio.matsuoka@canonical.com> - [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/)? - [ ] Have you successfully run `./runtests.sh static`? - [ ] Have you successfully run `./runtests.sh tests/unit`? -----

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved PR #3660 by cmatsuoka integrated craft-providers into Snapcraft, running lifecycle commands in LXD/Multipass instances. Merged into the 7.0 line via merge commit 7c2ac0027 (squash commit 8a06cdbbd).
stealth/space-bunny-alpha — closed resolved Merged PR #3660 (7c2ac0027), adding craft-providers support to run lifecycle commands in LXD or Multipass. Multipass image support was deferred until base-devel implementation.
qwen/qwen3.6-35b-a3b — — Integrated craft-providers support to run lifecycle commands in LXD or Multipass build providers. Merged with 1338 additions and 41 deletions across 22 files, adapting Charmcraft's implementation after reviewer approval.
qwen3.6-35b-a3b-mtp-q6 — — Merged into snapcraft/7.0. Integrated craft-providers support to execute lifecycle commands via LXD or Multipass. Co-authored with Chris Patterson. Successfully merged despite a reported code coverage decrease.

Update history

No update history recorded yet.

Related work

  • Related To: snapcore/snapcraft#3943 (confidence 80%)

    Follow-up commit 2980d145c 'providers: use new craft-providers interface' refines the provider layer introduced by #3660.

  • Related To: snapcore/snapcraft#4086 (confidence 70%)

    Commit 75ca7f1c3 'requirements: update craft-providers to 1.10.0 (#4086)' is one of many dependency bumps continuing this integration.

Related issues

Issue Project State Summary Similarity
#3943 providers: use new craft-providers interface snapcraft merged Merged into snapcraft main as commit 2980d145c: removed in-tree Provider/LXDProvider/MultipassProvider classes in favour of craft-providers, and moved snapcraft/providers/providers.py to snapcraft/providers.py (+65/-1173).
85%
#4032 requirements: update craft-providers to 1.7.2 snapcraft merged Merged as commit 9ab9a75dc: bumped the craft-providers pin to 1.7.2 in requirements files, so LXD instances for core22 snaps check the id map, avoiding cross-user errors like git "dubious ownership detected".
77%
#899 providers: use new craft-providers interface charmcraft merged Merged PR #899 (merge commit 538aec31, implementation 5e5acb7c): removed Charmcraft's own Provider/LXDProvider/MultipassProvider classes in favour of craft-providers', and moved charmcraft/providers/providers.py to charmcraft/providers.py. Resolves CRAFT-1279.
77%
#9 providers: add build provider support (CRAFT-28) rockcraft merged Merged build-provider support via commit be6dec45, integrating craft-providers to run builds on LXD. User messages and provider log retrieval were deferred to follow-up work.
76%
#3969 requirements: update craft-providers to v1.6.1 snapcraft merged Merged PR #3969 (commit f378ec38b) bumped craft-providers to v1.6.1 in requirements, fixing Multipass errors writing outside the user's home dir and unblocking Snapcraft 7.2.0 testing.
76%
#3933 providers: install snaps and packages via craft-providers API snapcraft merged Merged PR #3933 (commit 929a26fd6) reworked snapcraft/providers to install snaps and packages via the craft-providers API instead of bespoke code (CRAFT-1281, CRAFT-1283).
76%
#484 providers: refactor to better support multiple providers (CRAFT-362) charmcraft merged Merged PR #484 (commit 93982f90, merge 7a1f50fc) by cjp256 converted providers module into a package for CRAFT-362: added common Provider class, LXDProvider subclass and get_provider(); follow-ups moved get_provider() to providers.py and renamed _helpers to _logs.
74%
#4938 build(deps): bump craft-providers to 1.25.0 snapcraft closed PR closed unmerged and superseded by canonical/snapcraft#5006 (merged as commit 96140ad2a), which bumped craft-providers to 1.24.2 and required Multipass >=1.14.1 for core24 builds instead of 1.25.0.
74%
#709 Upstream snap hooks craft-providers closed Centralized upstream snap hooks in craft-providers via merged PR #710 (commit 5bbaf39), shipping in 2.2.0 as reusable LXD cleanup utilities.
74%
#2249 build providers: provide support to shell in snapcraft merged Merged PR #2249 (commit 9f5640b17) adding a shell() method to snapcraft build providers, enabling interactive 'shell into' the Multipass/LXD build instance.
73%