diff options
author | Simon Frei <freisim93@gmail.com> | 2021-04-11 20:04:15 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-11 20:04:15 +0200 |
commit | c2bb11a794d1a392c27d688aea791f2664d08081 (patch) | |
tree | b8674e703d0733c383ccf0dea6f3e09263f48858 /build.go | |
parent | 1a00ea7c6e06aecfe100c7ae4f4ad58c5e9e831b (diff) | |
download | syncthing-c2bb11a794d1a392c27d688aea791f2664d08081.tar.gz syncthing-c2bb11a794d1a392c27d688aea791f2664d08081.zip |
build: Do not use --deb-systemd with fpm (fixes #7548) (#7564)
Diffstat (limited to 'build.go')
-rw-r--r-- | build.go | 48 |
1 files changed, 34 insertions, 14 deletions
@@ -30,6 +30,7 @@ import ( "runtime" "strconv" "strings" + "text/template" "time" ) @@ -59,12 +60,11 @@ type target struct { debname string debdeps []string debpre string - debpost string description string buildPkgs []string binaryName string archiveFiles []archiveFile - systemdServices []string + systemdService string installationFiles []archiveFile tags []string } @@ -86,7 +86,6 @@ var targets = map[string]target{ name: "syncthing", debname: "syncthing", debdeps: []string{"libc6", "procps"}, - debpost: "script/post-upgrade", description: "Open Source Continuous File Synchronization", buildPkgs: []string{"github.com/syncthing/syncthing/cmd/syncthing"}, binaryName: "syncthing", // .exe will be added automatically for Windows builds @@ -97,6 +96,7 @@ var targets = map[string]target{ {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, // All files from etc/ and extra/ added automatically in init(). }, + systemdService: "syncthing@*.service", installationFiles: []archiveFile{ {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "README.md", dst: "deb/usr/share/doc/syncthing/README.txt", perm: 0644}, @@ -141,9 +141,7 @@ var targets = map[string]target{ {src: "LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, }, - systemdServices: []string{ - "cmd/stdiscosrv/etc/linux-systemd/stdiscosrv.service", - }, + systemdService: "cmd/stdiscosrv/etc/linux-systemd/stdiscosrv.service", installationFiles: []archiveFile{ {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "cmd/stdiscosrv/README.md", dst: "deb/usr/share/doc/syncthing-discosrv/README.txt", perm: 0644}, @@ -170,9 +168,7 @@ var targets = map[string]target{ {src: "LICENSE", dst: "LICENSE.txt", perm: 0644}, {src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644}, }, - systemdServices: []string{ - "cmd/strelaysrv/etc/linux-systemd/strelaysrv.service", - }, + systemdService: "cmd/strelaysrv/etc/linux-systemd/strelaysrv.service", installationFiles: []archiveFile{ {src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755}, {src: "cmd/strelaysrv/README.md", dst: "deb/usr/share/doc/syncthing-relaysrv/README.txt", perm: 0644}, @@ -654,11 +650,13 @@ func buildDeb(target target) { for _, dep := range target.debdeps { args = append(args, "-d", dep) } - for _, service := range target.systemdServices { - args = append(args, "--deb-systemd", service) - } - if target.debpost != "" { - args = append(args, "--after-upgrade", target.debpost) + if target.systemdService != "" { + debpost, err := createPostInstScript(target) + defer os.Remove(debpost) + if err != nil { + log.Fatal(err) + } + args = append(args, "--after-upgrade", debpost) } if target.debpre != "" { args = append(args, "--before-install", target.debpre) @@ -666,6 +664,28 @@ func buildDeb(target target) { runPrint("fpm", args...) } +func createPostInstScript(target target) (string, error) { + scriptname := filepath.Join("script", "deb-post-inst.template") + t, err := template.ParseFiles(scriptname) + if err != nil { + return "", err + } + scriptname = strings.TrimSuffix(scriptname, ".template") + w, err := os.Create(scriptname) + if err != nil { + return "", err + } + defer w.Close() + if err = t.Execute(w, struct { + Service, Command string + }{ + target.systemdService, target.binaryName, + }); err != nil { + return "", err + } + return scriptname, nil +} + func shouldBuildSyso(dir string) (string, error) { type M map[string]interface{} version := getVersion() |