(Not entirely) working LDC snap

Mark Shuttleworth mark at ubuntu.com
Mon Sep 5 22:53:43 UTC 2016


On 05/09/16 18:15, Joseph Rushton Wakeling wrote:
> On 04/09/16 13:55, Joseph Rushton Wakeling wrote:
>> On 27/08/16 22:45, Joseph Rushton Wakeling wrote:
>>> I thought I'd have a go at making a snap of LDC, the LLVM-based
>>> compiler for the
>>> D programming language.
>>
>> A "final first draft" of the working snap is available here:
>> https://github.com/WebDrake/ldc2.snap/pull/1
>
> So, you'd think I'd have tested this before, given that I'm trying to
> snap a compiler, but ... :-P
>
> Turns out the snap-packaged LDC will fail if it's trying to compile a
> project that needs other libraries to be linked in.  This isn't
> surprising, of course -- system libraries won't be on the library
> paths of the snap -- but it does put in place a BIG constraint on what
> can be built and what not.
>
> Any thoughts on how this might be addressed? 

Yeah, this is exactly what I ran into snapping asciinema - it's a tool
best used WITH the other files on your system. In my case, I wanted to
make an asciinema movie of a Juju deployment, but as soon as I hit
"asciinema record" I was essentially inside the asciinema sandbox and
unable to see binaries installed in the classic filesystem.

I started a thread on one or other snapcraft list about 'snaps that can
properly see the system'. A chef or puppet snap, for example is going to
want to manipulate /etc/foo.conf. Your LDC snap wants to use libraries
in "real" /lib/ not "sandbox" /lib/.

There is a balance - the upside of having a "sandbox" /lib/ is that it
is *the same everywhere* even if your snap is running on openwrt.

But for this class of developer tool, snaps will be much more useful if
they can really integrate into the CLASSIC environment.

We'll get to this. My straw man proposal is an interface which
essentially makes "/classic/lib/" and "/classic/bin/" available to your
snap, so as long as your snap's $PATH is twisted appropriately it will
find things there. That's a proper bit of yoga on where snaps came from
and how we got them onto classic in the first place, but I think it has
merit as a starting point.

On the other hand, snapping redis, rethinkdb and rqlite has gone really
smoothly :)

Mark





More information about the Snapcraft mailing list