On 30.08.2016 06:18, Andrew Wilkins wrote:
Actually, editing the files isn't necessary at all. You can just pass the
--sysroot option to gcc. I just hacked up a quick gcc snap which works:
    https://gist.github.com/axw/1d4b0206e11ff46a26439244224a4cc9

Cool stuff. As a gcc snap, this works for me; note you can use --sysroot=$SNAP for portability.

If you can convince ldc2 to pass the same option (/etc/ldc2.conf?), then it
should just work.

Unfortunately, it looks like there are some complications here :-\ Let's start with my snapcraft.yaml:
https://gist.github.com/WebDrake/e4ec1d1065df3011bf88f69a0c00544a

... which defines commands for both gcc and ld, both with the --sysroot=$SNAP option.

First things first, run `snapcraft stage`. Then edit the auto-generated stage/etc/ldc2.conf and replace it with this:
https://gist.github.com/WebDrake/229645efeca14fa54b0b1c82bcbb6477

... which as you can see includes a compiler flag: `-gcc=ldc2.gcc`. This should ensure that ldc2.gcc is called when LDC wants to call GCC.

Now we can run `snapcraft snap` to finish up, and we can install the resulting snap package.

OK, let's create a simple Hello World in D:

////////////////////
void main ()
{
    import std.stdio : writeln;
    writeln("Hello, snappy LDC!");
}
////////////////////

Now, let's try to build it, using the -v flag so that it'll output all that it 
does:

    ldc2.ldmd2 -v hello.d

... and much follows, concluding with:

/snap/ldc2/x1/usr/bin/gcc hello.o -o hello -L/snap/ldc2/x1/bin/../lib -lphobos2-ldc -ldruntime-ldc -Wl,--gc-sections -lrt -ldl -lpthread -lm -m64 /snap/ldc2/x1/usr/bin/ld: cannot find /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a
collect2: error: ld returned 1 exit status
Error: /snap/ldc2/x1/usr/bin/gcc failed with status: 1

... which is very odd; it suggests that despite explicitly asking for `ldc2.gcc` to be called (which would use the --sysroot flag), it's somehow not.

I've tried testing by running the "normal" apt-installed ldc and passing the -gcc=ldc2.gcc option, and this works just fine, which makes me wonder: could something weird be happening which is causing the ldc2.gcc command to be "de-aliased" if it's run from within the snap itself?

Thanks & best wishes,

    -- Joe

--
Snapcraft mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/snapcraft

Reply via email to