mirror of
https://github.com/octoleo/syncthing.git
synced 2024-09-10 17:09:01 +00:00
build: Simpler creation of Debian packages
GitHub-Pull-Request: https://github.com/syncthing/syncthing/pull/3591
This commit is contained in:
parent
7fb53ec954
commit
4f6206cb2d
1
.gitignore
vendored
1
.gitignore
vendored
@ -5,6 +5,7 @@ stdiscosrv.exe
|
|||||||
*.tar.gz
|
*.tar.gz
|
||||||
*.zip
|
*.zip
|
||||||
*.asc
|
*.asc
|
||||||
|
*.deb
|
||||||
.jshintrc
|
.jshintrc
|
||||||
coverage.out
|
coverage.out
|
||||||
files/pidx
|
files/pidx
|
||||||
|
72
build.go
72
build.go
@ -27,7 +27,6 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"text/template"
|
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -43,12 +42,12 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type target struct {
|
type target struct {
|
||||||
name string
|
name string
|
||||||
buildPkg string
|
buildPkg string
|
||||||
binaryName string
|
binaryName string
|
||||||
archiveFiles []archiveFile
|
archiveFiles []archiveFile
|
||||||
debianFiles []archiveFile
|
installationFiles []archiveFile
|
||||||
tags []string
|
tags []string
|
||||||
}
|
}
|
||||||
|
|
||||||
type archiveFile struct {
|
type archiveFile struct {
|
||||||
@ -76,7 +75,7 @@ var targets = map[string]target{
|
|||||||
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
||||||
// All files from etc/ and extra/ added automatically in init().
|
// All files from etc/ and extra/ added automatically in init().
|
||||||
},
|
},
|
||||||
debianFiles: []archiveFile{
|
installationFiles: []archiveFile{
|
||||||
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
||||||
{src: "README.md", dst: "deb/usr/share/doc/syncthing/README.txt", perm: 0644},
|
{src: "README.md", dst: "deb/usr/share/doc/syncthing/README.txt", perm: 0644},
|
||||||
{src: "LICENSE", dst: "deb/usr/share/doc/syncthing/LICENSE.txt", perm: 0644},
|
{src: "LICENSE", dst: "deb/usr/share/doc/syncthing/LICENSE.txt", perm: 0644},
|
||||||
@ -106,7 +105,7 @@ var targets = map[string]target{
|
|||||||
{src: "cmd/stdiscosrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
{src: "cmd/stdiscosrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
||||||
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
||||||
},
|
},
|
||||||
debianFiles: []archiveFile{
|
installationFiles: []archiveFile{
|
||||||
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
||||||
{src: "cmd/stdiscosrv/README.md", dst: "deb/usr/share/doc/stdiscosrv/README.txt", perm: 0644},
|
{src: "cmd/stdiscosrv/README.md", dst: "deb/usr/share/doc/stdiscosrv/README.txt", perm: 0644},
|
||||||
{src: "cmd/stdiscosrv/LICENSE", dst: "deb/usr/share/doc/stdiscosrv/LICENSE.txt", perm: 0644},
|
{src: "cmd/stdiscosrv/LICENSE", dst: "deb/usr/share/doc/stdiscosrv/LICENSE.txt", perm: 0644},
|
||||||
@ -125,7 +124,7 @@ var targets = map[string]target{
|
|||||||
{src: "cmd/strelaysrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
{src: "cmd/strelaysrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
||||||
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
||||||
},
|
},
|
||||||
debianFiles: []archiveFile{
|
installationFiles: []archiveFile{
|
||||||
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
||||||
{src: "cmd/strelaysrv/README.md", dst: "deb/usr/share/doc/strelaysrv/README.txt", perm: 0644},
|
{src: "cmd/strelaysrv/README.md", dst: "deb/usr/share/doc/strelaysrv/README.txt", perm: 0644},
|
||||||
{src: "cmd/strelaysrv/LICENSE", dst: "deb/usr/share/doc/strelaysrv/LICENSE.txt", perm: 0644},
|
{src: "cmd/strelaysrv/LICENSE", dst: "deb/usr/share/doc/strelaysrv/LICENSE.txt", perm: 0644},
|
||||||
@ -143,7 +142,7 @@ var targets = map[string]target{
|
|||||||
{src: "cmd/strelaypoolsrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
{src: "cmd/strelaypoolsrv/LICENSE", dst: "LICENSE.txt", perm: 0644},
|
||||||
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
{src: "AUTHORS", dst: "AUTHORS.txt", perm: 0644},
|
||||||
},
|
},
|
||||||
debianFiles: []archiveFile{
|
installationFiles: []archiveFile{
|
||||||
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
{src: "{{binary}}", dst: "deb/usr/bin/{{binary}}", perm: 0755},
|
||||||
{src: "cmd/strelaypoolsrv/README.md", dst: "deb/usr/share/doc/relaysrv/README.txt", perm: 0644},
|
{src: "cmd/strelaypoolsrv/README.md", dst: "deb/usr/share/doc/relaysrv/README.txt", perm: 0644},
|
||||||
{src: "cmd/strelaypoolsrv/LICENSE", dst: "deb/usr/share/doc/relaysrv/LICENSE.txt", perm: 0644},
|
{src: "cmd/strelaypoolsrv/LICENSE", dst: "deb/usr/share/doc/relaysrv/LICENSE.txt", perm: 0644},
|
||||||
@ -163,7 +162,7 @@ func init() {
|
|||||||
syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0644})
|
syncthingPkg.archiveFiles = append(syncthingPkg.archiveFiles, archiveFile{src: file, dst: file, perm: 0644})
|
||||||
}
|
}
|
||||||
for _, file := range listFiles("extra") {
|
for _, file := range listFiles("extra") {
|
||||||
syncthingPkg.debianFiles = append(syncthingPkg.debianFiles, archiveFile{src: file, dst: "deb/usr/share/doc/syncthing/" + filepath.Base(file), perm: 0644})
|
syncthingPkg.installationFiles = append(syncthingPkg.installationFiles, archiveFile{src: file, dst: "deb/usr/share/doc/syncthing/" + filepath.Base(file), perm: 0644})
|
||||||
}
|
}
|
||||||
targets["syncthing"] = syncthingPkg
|
targets["syncthing"] = syncthingPkg
|
||||||
}
|
}
|
||||||
@ -494,46 +493,31 @@ func buildDeb(target target) {
|
|||||||
|
|
||||||
build(target, []string{"noupgrade"})
|
build(target, []string{"noupgrade"})
|
||||||
|
|
||||||
for i := range target.debianFiles {
|
for i := range target.installationFiles {
|
||||||
target.debianFiles[i].src = strings.Replace(target.debianFiles[i].src, "{{binary}}", target.binaryName, 1)
|
target.installationFiles[i].src = strings.Replace(target.installationFiles[i].src, "{{binary}}", target.binaryName, 1)
|
||||||
target.debianFiles[i].dst = strings.Replace(target.debianFiles[i].dst, "{{binary}}", target.binaryName, 1)
|
target.installationFiles[i].dst = strings.Replace(target.installationFiles[i].dst, "{{binary}}", target.binaryName, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, af := range target.debianFiles {
|
for _, af := range target.installationFiles {
|
||||||
if err := copyFile(af.src, af.dst, af.perm); err != nil {
|
if err := copyFile(af.src, af.dst, af.perm); err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
os.MkdirAll("deb/DEBIAN", 0755)
|
maintainer := "Syncthing Release Management <release@syncthing.net>"
|
||||||
|
debver := version
|
||||||
data := map[string]string{
|
if strings.HasPrefix(debver, "v") {
|
||||||
"name": target.name,
|
debver = debver[1:]
|
||||||
"arch": debarch,
|
|
||||||
"version": version[1:],
|
|
||||||
"date": time.Now().Format(time.RFC1123),
|
|
||||||
}
|
|
||||||
|
|
||||||
debTemplateFiles := append(listFiles("debtpl/common"), listFiles("debtpl/"+target.name)...)
|
|
||||||
for _, file := range debTemplateFiles {
|
|
||||||
tpl, err := template.New(filepath.Base(file)).ParseFiles(file)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
outFile := filepath.Join("deb/DEBIAN", filepath.Base(file))
|
|
||||||
out, err := os.Create(outFile)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
if err := tpl.Execute(out, data); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
if err := out.Close(); err != nil {
|
|
||||||
log.Fatal(err)
|
|
||||||
}
|
|
||||||
info, _ := os.Lstat(file)
|
|
||||||
os.Chmod(outFile, info.Mode())
|
|
||||||
}
|
}
|
||||||
|
runPrint("fpm", "-t", "deb", "-s", "dir", "-C", "deb",
|
||||||
|
"-n", "syncthing", "-v", debver, "-a", debarch,
|
||||||
|
"--vendor", maintainer, "-m", maintainer,
|
||||||
|
"-d", "libc6",
|
||||||
|
"-d", "procps", // because postinst script
|
||||||
|
"--url", "https://syncthing.net/",
|
||||||
|
"--description", "Open Source Continuous File Synchronization",
|
||||||
|
"--after-upgrade", "script/post-upgrade",
|
||||||
|
"--license", "MPL-2")
|
||||||
}
|
}
|
||||||
|
|
||||||
func copyFile(src, dst string, perm os.FileMode) error {
|
func copyFile(src, dst string, perm os.FileMode) error {
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
{{.name}} ({{.version}}); urgency=medium
|
|
||||||
|
|
||||||
* Packaging of {{.version}}.
|
|
||||||
|
|
||||||
-- Syncthing Release Management <release@syncthing.net> {{.date}}
|
|
@ -1 +0,0 @@
|
|||||||
9
|
|
@ -1,16 +0,0 @@
|
|||||||
Package: syncthing
|
|
||||||
Version: {{.version}}
|
|
||||||
Priority: optional
|
|
||||||
Section: net
|
|
||||||
Architecture: {{.arch}}
|
|
||||||
Depends: libc6, procps
|
|
||||||
Homepage: https://syncthing.net/
|
|
||||||
Maintainer: Syncthing Release Management <release@syncthing.net>
|
|
||||||
Description: Open Source Continuous File Synchronization
|
|
||||||
Syncthing is an application that lets you synchronize your files across
|
|
||||||
multiple devices. This means the creation, modification or deletion of files
|
|
||||||
on one machine will automatically be replicated to your other devices. We
|
|
||||||
believe your data is your data alone and you deserve to choose where it is
|
|
||||||
stored. Therefore Syncthing does not upload your data to the cloud but
|
|
||||||
exchanges your data across your machines as soon as they are online at the
|
|
||||||
same time.
|
|
@ -1,6 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
if [[ ${1:-} == configure ]]; then
|
|
||||||
pkill -HUP -x syncthing || true
|
|
||||||
fi
|
|
@ -44,17 +44,8 @@ for plat in "${platforms[@]}"; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
go run build.go -goarch amd64 deb
|
go run build.go -goarch amd64 deb
|
||||||
fakeroot sh -c 'chown -R root:root deb ; dpkg-deb -b deb .'
|
|
||||||
mv *.deb "$WORKSPACE"
|
|
||||||
|
|
||||||
go run build.go -goarch i386 deb
|
go run build.go -goarch i386 deb
|
||||||
fakeroot sh -c 'chown -R root:root deb ; dpkg-deb -b deb .'
|
|
||||||
mv *.deb "$WORKSPACE"
|
|
||||||
|
|
||||||
go run build.go -goarch armel deb
|
go run build.go -goarch armel deb
|
||||||
fakeroot sh -c 'chown -R root:root deb ; dpkg-deb -b deb .'
|
|
||||||
mv *.deb "$WORKSPACE"
|
|
||||||
|
|
||||||
go run build.go -goarch armhf deb
|
go run build.go -goarch armhf deb
|
||||||
fakeroot sh -c 'chown -R root:root deb ; dpkg-deb -b deb .'
|
|
||||||
mv *.deb "$WORKSPACE"
|
mv *.deb "$WORKSPACE"
|
||||||
|
3
script/post-upgrade
Normal file
3
script/post-upgrade
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
pkill -HUP -x syncthing || true
|
Loading…
Reference in New Issue
Block a user