build: Improve snap generation (fixes #4863, fixes #5000) (#5034)

This makes the environment variables easier to read/change.

Also expand the list so it's not inline, more readable that way.

The new architecture syntax for snapcraft allows specifying both the building architecture and the running architecture of the snap, so if we specify the build-on architecture as the host architecture and the run-on architecture as the target architecture, then snapcraft shouldn't need to install any cross-compilers, etc.
This commit is contained in:
Ian Johnson authored and Jakob Borg committed 2018-06-27 08:08:57 +02:00
1 parent 55ed883648
commit 95eb81467c
3 files changed
+24 -6

No files matched your search

+6
View File
@@ -17,3 +17,9 @@ RELEASE
deb
lib/auto/gui.files.go
snapcraft.yaml
prime/
snap/
parts/
stage/
*.snap
*.bz2
+6 -3
View File
@@ -618,6 +618,8 @@ func buildSnap(target target) {
snaparch := goarch
if snaparch == "armhf" {
goarch = "arm"
} else if snaparch == "i386" {
goarch = "386"
}
snapver := version
if strings.HasPrefix(snapver, "v") {
@@ -628,9 +630,10 @@ func buildSnap(target target) {
snapgrade = "stable"
}
err = tmpl.Execute(f, map[string]string{
"Version": snapver,
"Architecture": snaparch,
"Grade": snapgrade,
"Version": snapver,
"HostArchitecture": runtime.GOARCH,
"TargetArchitecture": snaparch,
"Grade": snapgrade,
})
if err != nil {
log.Fatal(err)
+12 -3
View File
@@ -6,15 +6,24 @@ description: |
trustworthy and decentralized. Your data is your data alone and you deserve
to choose where it is stored, if it is shared with some third party and how
it's transmitted over the Internet.
architectures: [{{.Architecture}}]
architectures:
- build-on: [{{.HostArchitecture}}]
run-on: [{{.TargetArchitecture}}]
grade: {{.Grade}}
confinement: strict
apps:
syncthing:
command: env HOME="$SNAP_USER_COMMON" XDG_CONFIG_HOME="$SNAP_USER_COMMON" "$SNAP/syncthing"
plugs: [home, network, network-bind]
command: syncthing
environment:
HOME: ${SNAP_USER_COMMON}
XDG_CONFIG_HOME: ${SNAP_USER_COMMON}
plugs:
- home
- network
- network-bind
- removable-media
parts:
syncthing: