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