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 2018-06-27 01:08:57 -05:00 committed by Jakob Borg
parent 55ed883648
commit 95eb81467c
3 changed files with 24 additions and 6 deletions

6
.gitignore vendored
View File

@ -17,3 +17,9 @@ RELEASE
deb
lib/auto/gui.files.go
snapcraft.yaml
prime/
snap/
parts/
stage/
*.snap
*.bz2

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)

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: