Просмотр исходного кода

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.
Ian Johnson 7 лет назад
Родитель
Сommit
95eb81467c
3 измененных файлов с 24 добавлено и 6 удалено
  1. 6 0
      .gitignore
  2. 6 3
      build.go
  3. 12 3
      snapcraft.yaml.template

+ 6 - 0
.gitignore

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

+ 6 - 3
build.go

@@ -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
snapcraft.yaml.template

@@ -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: