Classic confinement and core_dynamic_linker
Joseph Rushton Wakeling
joseph.wakeling at webdrake.net
Thu Jan 19 00:37:35 UTC 2017
On 18/01/17 02:21, Sergio Schvezov wrote:
> The logic is still run, but the resulting binary in classic uses rpath and no dynamic loading so there is no resolution to a on-system library we can pick up. I guess we can do some magic, but it feels it might be either fragile or make the build process a lot slower. We will need to look into it, but not short term.
OK -- thanks for the explanation. Completely understand the preference to
require explicit staging of packages over potentially fragile automation.
Anyway, I had a go at tweaking my snap package as defined here:
https://github.com/WebDrake/ldc2.snap/pull/1/files
https://github.com/WebDrake/ldc2.snap/blob/a437ec17d50bdd767febebf5b617d7d3a716716b/snapcraft.yaml
... to use `classic` confinement and staging packages necessary for linking.
I've posted the resulting `snapcraft.yaml` below. The major diff apart from the
`confinement` setting is the addition of these lines to the `ldc` part of the file:
stage-packages:
- libconfig++-dev
- libphobos2-ldc-dev
When I run `snapcraft build`, however, everything builds and links fine, but
_nothing_ gets staged (the `stage/` and `prime/` directories both remain empty).
I've tried the same thing while removing the `gcc`, `gcc-wrapper`, `libc6` and
`libc6-dev` parts, with the same result.
Any thoughts on what could be the problem here?
--- snapcraft.yaml --------------------------------------------------
name: ldc2
version: "1.1.0-beta6"
summary: D compiler with LLVM backend
description: |
LDC is a portable compiler for the D programming Language, with
modern optimization and code generation capabilities. It uses
the official DMD compiler frontend to support the latest version
of D2, and uses the LLVM Core libraries for code generation.
confinement: classic
grade: devel
apps:
ldc2:
command: ldc2
plugs: [home]
ldmd2:
command: ldmd2
plugs: [home]
ldc-profdata:
command: ldc-profdata
plugs: [home]
parts:
ldc:
source: git://github.com/ldc-developers/ldc.git
source-tag: v1.1.0-beta6
plugin: cmake
stage:
- -etc/ldc2.conf
build-packages:
- build-essential
- ldc
- llvm-dev
- libconfig++-dev
- libedit-dev
- zlib1g-dev
stage-packages:
- libconfig++-dev
- libphobos2-ldc-dev
ldc-config:
plugin: dump
source: ldc-config
organize:
ldc2.conf: etc/ldc2.conf
gcc:
plugin: nil
stage-packages: [gcc]
organize:
usr/bin/gcc: usr/bin/gcc.real
gcc-wrapper:
plugin: dump
source: gcc-wrapper
organize:
gcc.wrapper: usr/bin/gcc
libc6:
plugin: nil
stage-packages: [libc6]
libc6-dev:
plugin: nil
stage-packages: [libc6-dev]
More information about the Snapcraft
mailing list