Request approval for nim classic snap

nim builds to C (or C++ or JS) and then to binary and needs access to system libraries.

Initial attempts resulted in bug reports about access to libraries: https://github.com/sirredbeard/nim_lang_snap/issues/2 and https://forum.nim-lang.org/t/5240.

Efforts to make this work in strict confinement have been unsuccessful: Difficulty accessing libc6-dev headers from Nim language snap

After speaking with Sergio the best option I think for now is to go classic.

Even if we bundled gcc and all libraries and that worked nim also supports C++, JavaScript, and alternative compilers like clang and Intel which would be limited by strict confinement.

I have a stable, nightly, and LTS branch release of nim and nim docs building and being pushed to the store now via GitHub Actions: https://github.com/sirredbeard/nim_lang_snap I just need approval for the classic snaps to get nim working correctly.

Thanks,
Hayden

Note these are already in the store but hidden from search:



In the request, nim is a programming language and to compile code it needs access to C headers and a compiler. As with other languages of this nature, classic is required to have access to /usr/include, etc. The requirements are understood and this follows an established classic pattern.

I’ve vetted the publisher. Granting use of classic. This is now live.

nim-lang is pushing through (thank you!) but nim-lang-nightly and nim-lang-lts-1 are still getting rejected by Snapcraft for being classic.

I’ve taken care of those. Note, nightly and lts-1 seem to be great candidates for tracks rather than separate snaps.

Thank you. I will look into your note.

Sorry to interject - two things.

  1. nightly belongs in the edge channel :slight_smile:

  2. We have had one request for an lts track, but I had some concerns about the semantics and how a single lts track will lead to it being a “rolling lts” which kind of defeats the purpose (do read the thread to see my comments which also apply here). I feel it’s better to have per-supported-version tracks so users can choose, and wait a few weeks until the “default tracks” feature is finalized to use a default track to route users to a current, stable LTS. All of this is merely advice/suggestion from us, if you really want an lts track and are aware of the implications, it can be done.

  • Daniel

So I wanted to use the new tracks and I remember Alan and Martin talking about them, but I don’t know how.

I found the documentation on installing from channels. https://snapcraft.io/docs/channels

But I did not find documentation in the publishing section on how to leverage these options:

There is a mention of grade in app metadata. https://snapcraft.io/docs/snapcraft-top-level-metadata

There is also some information on release management. https://snapcraft.io/docs/release-management

The actual YAML reference doesn’t mention how to publish to edge other than pulling in staged snap dependencies from edge. https://snapcraft.io/docs/snapcraft-yaml-reference

See also https://snapcraft.io/docs/search?q=channels

I think it would be helpful to add a section to the publishing section with some YAML examples of how to use channels.

This might help: https://ubuntu.com/blog/controlling-snap-releases-with-channels-tracks-and-branches-part-1

Part 2 (linked to from the above) tells you how to use tracks and branches from a publisher perspective.

Also note that your tracks haven’t yet been created, we will let you know when they are, so you can use them.