Working LDC snap [was: Re: Snapping LDC (LLVM-based D compiler)]

Joseph Rushton Wakeling joseph.wakeling at webdrake.net
Wed Sep 7 23:10:06 UTC 2016


On 05/09/16 00:25, Joseph Rushton Wakeling wrote:
> One problem fixed (the inclusion of `build-essential` as a build dependency
> ensures the snap will build in a `cleanbuild` environment), but one remains: it
> looks like the `ldc-config` part (which manually replaces the incorrectly
> auto-generated ldc2.conf with a correct alternative, using the `dump` plugin)
> can sometimes fail.
>
> There doesn't seem to be any reason for it, just with some builds I end up with
> a wrong (auto-generated) ldc2.conf in the snap package, and some I end up with
> the correct one copied from the ldc-config directory.
>
> Any ideas what's up?  I'm guessing bug either with the dump plugin or with the
> handling of the `snap` section of the `ldc` part ... ?

Looks like it because of only filtering out the ldc part's etc/ldc2.conf file at 
the `snap` step.  This allowed a race condition where if ldc was staged after 
ldc-config, its etc/ldc2.conf would overwrite the desired one, and the `snap` 
filter was powerless to distinguish this.

Replacing the `snap` exclusion filter with a `stage` exclusion filter solved things:

parts:
   ldc:
     source: git://github.com/ldc-developers/ldc.git
     source-tag: v1.0.0
     plugin: cmake
     stage:
     - -etc/ldc2.conf
     build-packages:
     - build-essential
     - ldc
     - llvm-dev
     - libconfig++-dev
     - libcurl4-gnutls-dev
     - libedit-dev
     - zlib1g-dev
   ldc-config:
     plugin: dump
     source: ldc-config
     organize:
       ldc2.conf: etc/ldc2.conf






More information about the Snapcraft mailing list