As of earlier today, a snap package for LDC 1.1.0 has been
published in the 'edge' channel of the Ubuntu store.
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.
On Ubuntu 16.04 or later, or Debian Sid, it should be possible to
install this package using the following commands:
sudo apt install snapd # in order to be able to install
snap packages at all
sudo snap install --classic --edge ldc2
The `--classic` flag is needed in order to accept the confinement
choice of the ldc2 package, while the `--edge` flag is needed to
search in the similarly-named package channel. As the name
suggests this is for 'bleeding edge' packages.
The package includes the ldc2 compiler plus its 'dmd-like'
version ldmd2, as well as ldc-profdata and ldc-prune-cache.
You'll find the commands in /snap/bin/ : note that the latter
three will (for now) be called ldc2.ldmd2, ldc2.ldc-profdata and
ldc2.ldc-prune-cache (these names will hopefully be simplified in
a future release).
It should be possible to use ldc2 and ldc2.ldmd2 in the same way
that you would use their equivalents installed by any other
package manager. Please let me know of any issues you encounter
in trying to use this!
In principle it should also be possible to install this snap on
other distros that have support for snap packages (e.g. Arch,
Gentoo, Fedora, OpenSUSE); however, it will require an up-to-date
version of snapd (2.21 or later) which some distros may not yet
have made available. For instructions on how to install snapd on
other distros, see:
http://snapcraft.io/docs/core/install
For information on 'classic' confinement, see:
https://insights.ubuntu.com/2017/01/09/how-to-snap-introducing-classic-confinement/
Finally, for the snap package definition, see:
https://github.com/ldc-developers/ldc2.snap
I would be happy to explain any aspects of the snap packaging
process or syntax that anyone is interested in.
Finally, thanks to the LDC developers who eagerly embraced this
project to create and distribute an LDC snap package, and for all
the helpful advice and support they have offered throughout the
process.
Please do let me know what your experience is trying the package!
Thanks & best wishes,
-- Joe