I am building snapcraft for different architectures(amd64, armhf) using launchpad.
However, I realized that launchpad creates two different versions of snap depending on the architecture that is built and pushes it as sperate revisions.
I am not sure how I can release revisions for specific architectures seperately if I have both architecture tags in the snapcraft.yaml defined. Even if this is possible, I lose track if it is automatically built which revision is for which architecture.
I have tried making seperate branches with different architectures in launchpad to have different snap packages for different architectures, however different snap packages cannot have the same name.
How can I manage versions for snaps for different architectures?
First of all, make sure you understand how the architectures field works. It may not be what you want, because it means regardless of the architecture on which you’re building, the resulting snap claims it runs on those architectures. Which means the amd64 and armhf revisions essentially “fight” with each other, the last one being pushed being the only one you can see in edge, since they’re targeting the same architectures.
Instead, I suggest removing the
architectures keyword all together, and then Launchpad will build and amd64-targeting snap on amd64, and an armhf-targeting snap on armhf, and so on. Each snap still gets its own revision, but they also both get released instead of one overriding the other.
If you run
snapcraft status <snap name> you should see a breakdown of the current release by channel and architecture, and you can manage revisions from there.
Great. Thanks, It is a much better solution.