Snap packages for D compilers and core projects

Joseph Rushton Wakeling via Digitalmars-d digitalmars-d at puremagic.com
Sun Jan 29 12:07:50 PST 2017


Hello all,

I thought it might be time to share more generally something I've 
been working on for a little while: snap packages for some of the 
core D projects.

For those who don't know, snap packages are a new format 
developed by Ubuntu to facilitate upstreams being able to provide 
the latest versions of their apps directly to users.  The format 
is also designed to provide effective confinement for apps, so 
that they can only access the parts of the host system that they 
need to.  While developed by Ubuntu, the format is gaining quite 
a bit of of cross-distro traction: see http://snapcraft.io/ for 
more information.

I started by trying to snap LDC, mainly because the cmake build 
system made for a very easy integration with the snapcraft 
package-build system.  The LDC developers have been kind enough 
to accept this as an official contribution, and a first 
submission is currently waiting for review in the Ubuntu snap 
store, based on the following package definition:
https://github.com/ldc-developers/ldc2.snap

However, I have also created two other snap package definitions, 
one for DUB, and one (just this afternoon!) for DMD:
https://github.com/WebDrake/dub.snap/tree/classic-snap
https://github.com/WebDrake/dmd.snap/tree/classic-snap

As you can probably see from the package definitions, one of the 
attractions of the format is how remarkably easy it is to define 
a snap package.  People running Ubuntu 16.04 or later may like to 
try installing snapcraft and building these packages for 
themselves.

However, now that they exist, I'd like to try publishing these to 
the official snap store.  Rather than do this as some random 
developer, I'd quite like to publish them as official D language 
packages.  Note that the snap store supports multiple 'channels' 
with different levels of stability -- 'edge' and 'beta' being the 
testing ones -- so any issues with the packages can be worked 
through before a stable release is made.

The question is, (i) is this a welcome proposal? and (ii) if it 
is welcome, what do people see as the best way to go about this?

I would also welcome feedback on the current package definitions, 
which can be provided in the associated PRs:
https://github.com/WebDrake/dub.snap/pull/3
https://github.com/WebDrake/dmd.snap/pull/1

In creating the DUB snap package I also had to write a snapcraft 
plugin for DUB itself.  This would be good to submit upstream, 
but I'd like to get some feedback on it before doing so.  The 
plugin is in the `dub.py` file included in the PR above: it 
sufficies for the current purpose, but would need more work 
before it covered all potential use-cases.

Lastly, I have to mention that in creating the above packages, I 
received a great deal of very warm and welcoming support from the 
folks on the Snapcraft mailing list.  They were very eager to 
help me solve problems I encountered, and to help me find the 
most straightforward way to get the results I wanted out of these 
packages.

Anyway, hope this is interesting to everyone -- any thoughts, 
questions, feedback ... ?

Thanks & best wishes,

     -- Joe


More information about the Digitalmars-d mailing list