Why does `snapcraft` require classic?

Hi world,

I had a passing thought the other day whilst thinking about Ubuntu Core Desktop; mainly, the unfortunate irony that Ubuntu Core can’t work with classic snaps, but Snapcraft itself is, despite LXD and Multipass both being not.

I’m aware that Snapcraft also has it’s infamous destructive mode and that alone probably drives a need for classic. But hypothetically, would it be possible for a strict Snapcraft snap that would work on Ubuntu Core itself; so the toolchain can be entirely self contained?

It’s more a general curiosity, I don’t have any need for it and I don’t know anyone who does. But I imagine as Core Desktop bears closer, that need might change slightly.

4 Likes

This will be needed by the time Ubuntu Core Desktop becomes a thing.

Well, the thing is that snapcraft technically is not actually running outside the container/VM but is launching itself inside the emulation to then actually do stuff that requires classic features (installing Debs compiling code, linking etc) … That in-container/VM part will need to stay classic in either implementation… We could have a snapcraft-strict snap that simply acts as an lxd/multipass launcher doing the “outer part” to be run on core systems…

But inside the VM it is being driven from outside, so we could have the VM be reconfigured to have snap craft installed in classic even when the default installation of it would be strict - by installing it with --classic inside the VM to override the default confinement mode

Adding --classic to strictly confined snap has no effect.

oh I thought it was able to override the confinement. ignore me then. Might try to get a bug raised on that - either to enable confinement override and/or rename those flags to make it clearer that you’re acknowledging not setting.

There is a warning printed out:

maciek@galeon:~ snap install --classic test-snapd-tools-core24
Warning: flag --classic ignored for strictly confined snap
         test-snapd-tools-core24

test-snapd-tools-core24 1.0 from Sergio Cazzolato (cachio) installed