[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Emacs as a snap package

From: Alex Murray
Subject: Emacs as a snap package
Date: Wed, 22 May 2019 10:31:13 +0930
User-agent: mu4e 1.2.0; emacs 26.2


I have recently been working on[1] creating a snap[2] package for Emacs
to be distributed via the snapcraft.io store[3] - similar to
Flatpak+Flathub this provides a cross-distribution mechanism for
delivering applications to end users. First some background on snaps etc
and then onto some specific proposals.

The snap ecosystem includes things like multiple 'channels'[4] for a
package ('edge' for daily "unstable" builds, 'stable' for known stable
releases, and 'candidate' and 'beta' for somewhere in between), plus
automatic updating of applications, rollback on failed upgrades etc.

An automatic build service is also available[5] which can provide
automatic builds on new commits, for a variety of architectures (i386,
amd64, armhf, arm64, s390x & ppc64el) which get automatically published
to the 'edge' channel.

I believe this would create a compelling option for providing official
Emacs builds which work across multiple Linux distributions, and could
also serve to more easily allow testing of release candidates etc via
the 'candidate' channel or similar.

To create a snap of a particlar application, a snap recipe is required -
this is a simple yaml description of the build dependencies etc (similar
to a RPM spec file / Debian rules etc) - the current one which I have
created is based on the build deps etc from the emacs 26.1 package in
Debian as can be seen at [1]. This uses the official emacs-26.2 tarball
to build, but it could instead specify a git tree+branch etc.

Finally, to publish a snap in the snapcraft.io store a Ubuntu One
account[6] is required.

I had initially planned to just publish this myself in the snap store[7]
(and would still be happy to do this and maintain it going forward for
future Emacs releases if required) however, if this could be integrated
and maintained directly within the upstream Emacs git repository _and_
published in the Snap store by an official 'GNU Project' or similar
account I think that would make a more compelling offering.

As such I would be keen to get feedback on the following:

1. Maintain an official snapcraft.yaml recipe for Emacs within the Emacs
git tree across both master and the various release branches which can
be used to build 'official' Emacs snaps directly from the git source

2. Register an official GNU Project account for the Snap store and use
this to publish these official snap builds.

3. Optionally, use the build.snapcraft.io service to provide automated
builds directly (similar to the current emacs-snapshot PPA[8] which is
widely used).


[1] https://github.com/alexmurray/emacs-snap/
[2] https://docs.snapcraft.io/
[3] https://snapcraft.io/store
[4] https://docs.snapcraft.io/channels
[5] https://build.snapcraft.io
[6] https://login.ubuntu.com/
[8] https://launchpad.net/~ubuntu-elisp/+archive/ubuntu/ppa

reply via email to

[Prev in Thread] Current Thread [Next in Thread]