go.mod: upgrade nfpm to v2 (#8786)
Upgrade the nfpm package to the latest version to pick up
24a43c5ad7.
The upgrade is from v0 to v2, so there was some breakage to fix.
Generated packages should have the same contents as before.
Updates https://github.com/tailscale/tailscale/issues/1882
Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
This commit is contained in:
@@ -11,35 +11,40 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/goreleaser/nfpm"
|
"github.com/goreleaser/nfpm/v2"
|
||||||
_ "github.com/goreleaser/nfpm/deb"
|
_ "github.com/goreleaser/nfpm/v2/deb"
|
||||||
_ "github.com/goreleaser/nfpm/rpm"
|
"github.com/goreleaser/nfpm/v2/files"
|
||||||
|
_ "github.com/goreleaser/nfpm/v2/rpm"
|
||||||
)
|
)
|
||||||
|
|
||||||
// parseFiles parses a comma-separated list of colon-separated pairs
|
// parseFiles parses a comma-separated list of colon-separated pairs
|
||||||
// into a map of filePathOnDisk -> filePathInPackage.
|
// into files.Contents format.
|
||||||
func parseFiles(s string) (map[string]string, error) {
|
func parseFiles(s string, typ string) (files.Contents, error) {
|
||||||
ret := map[string]string{}
|
|
||||||
if len(s) == 0 {
|
if len(s) == 0 {
|
||||||
return ret, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
var contents files.Contents
|
||||||
for _, f := range strings.Split(s, ",") {
|
for _, f := range strings.Split(s, ",") {
|
||||||
fs := strings.Split(f, ":")
|
fs := strings.Split(f, ":")
|
||||||
if len(fs) != 2 {
|
if len(fs) != 2 {
|
||||||
return nil, fmt.Errorf("unparseable file field %q", f)
|
return nil, fmt.Errorf("unparseable file field %q", f)
|
||||||
}
|
}
|
||||||
ret[fs[0]] = fs[1]
|
contents = append(contents, &files.Content{Type: files.TypeFile, Source: fs[0], Destination: fs[1]})
|
||||||
}
|
}
|
||||||
return ret, nil
|
return contents, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseEmptyDirs(s string) []string {
|
func parseEmptyDirs(s string) files.Contents {
|
||||||
// strings.Split("", ",") would return []string{""}, which is not suitable:
|
// strings.Split("", ",") would return []string{""}, which is not suitable:
|
||||||
// this would create an empty dir record with path "", breaking the package
|
// this would create an empty dir record with path "", breaking the package
|
||||||
if s == "" {
|
if s == "" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
return strings.Split(s, ",")
|
var contents files.Contents
|
||||||
|
for _, d := range strings.Split(s, ",") {
|
||||||
|
contents = append(contents, &files.Content{Type: files.TypeDir, Destination: d})
|
||||||
|
}
|
||||||
|
return contents
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@@ -48,7 +53,7 @@ func main() {
|
|||||||
description := flag.String("description", "The easiest, most secure, cross platform way to use WireGuard + oauth2 + 2FA/SSO", "package description")
|
description := flag.String("description", "The easiest, most secure, cross platform way to use WireGuard + oauth2 + 2FA/SSO", "package description")
|
||||||
goarch := flag.String("arch", "amd64", "GOARCH this package is for")
|
goarch := flag.String("arch", "amd64", "GOARCH this package is for")
|
||||||
pkgType := flag.String("type", "deb", "type of package to build (deb or rpm)")
|
pkgType := flag.String("type", "deb", "type of package to build (deb or rpm)")
|
||||||
files := flag.String("files", "", "comma-separated list of files in src:dst form")
|
regularFiles := flag.String("files", "", "comma-separated list of files in src:dst form")
|
||||||
configFiles := flag.String("configs", "", "like --files, but for files marked as user-editable config files")
|
configFiles := flag.String("configs", "", "like --files, but for files marked as user-editable config files")
|
||||||
emptyDirs := flag.String("emptydirs", "", "comma-separated list of empty directories")
|
emptyDirs := flag.String("emptydirs", "", "comma-separated list of empty directories")
|
||||||
version := flag.String("version", "0.0.0", "version of the package")
|
version := flag.String("version", "0.0.0", "version of the package")
|
||||||
@@ -60,15 +65,20 @@ func main() {
|
|||||||
recommends := flag.String("recommends", "", "comma-separated list of packages this package recommends")
|
recommends := flag.String("recommends", "", "comma-separated list of packages this package recommends")
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
filesMap, err := parseFiles(*files)
|
filesList, err := parseFiles(*regularFiles, files.TypeFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Parsing --files: %v", err)
|
log.Fatalf("Parsing --files: %v", err)
|
||||||
}
|
}
|
||||||
configsMap, err := parseFiles(*configFiles)
|
configsList, err := parseFiles(*configFiles, files.TypeConfig)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Parsing --configs: %v", err)
|
log.Fatalf("Parsing --configs: %v", err)
|
||||||
}
|
}
|
||||||
emptyDirList := parseEmptyDirs(*emptyDirs)
|
emptyDirList := parseEmptyDirs(*emptyDirs)
|
||||||
|
contents := append(filesList, append(configsList, emptyDirList...)...)
|
||||||
|
contents, err = files.PrepareForPackager(contents, 0, *pkgType, false)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatalf("Building package contents: %v", err)
|
||||||
|
}
|
||||||
info := nfpm.WithDefaults(&nfpm.Info{
|
info := nfpm.WithDefaults(&nfpm.Info{
|
||||||
Name: *name,
|
Name: *name,
|
||||||
Arch: *goarch,
|
Arch: *goarch,
|
||||||
@@ -79,9 +89,7 @@ func main() {
|
|||||||
Homepage: "https://www.tailscale.com",
|
Homepage: "https://www.tailscale.com",
|
||||||
License: "MIT",
|
License: "MIT",
|
||||||
Overridables: nfpm.Overridables{
|
Overridables: nfpm.Overridables{
|
||||||
EmptyFolders: emptyDirList,
|
Contents: contents,
|
||||||
Files: filesMap,
|
|
||||||
ConfigFiles: configsMap,
|
|
||||||
Scripts: nfpm.Scripts{
|
Scripts: nfpm.Scripts{
|
||||||
PostInstall: *postinst,
|
PostInstall: *postinst,
|
||||||
PreRemove: *prerm,
|
PreRemove: *prerm,
|
||||||
|
|||||||
36
go.mod
36
go.mod
@@ -33,7 +33,7 @@ require (
|
|||||||
github.com/google/go-containerregistry v0.14.0
|
github.com/google/go-containerregistry v0.14.0
|
||||||
github.com/google/nftables v0.1.1-0.20230115205135-9aa6fdf5a28c
|
github.com/google/nftables v0.1.1-0.20230115205135-9aa6fdf5a28c
|
||||||
github.com/google/uuid v1.3.0
|
github.com/google/uuid v1.3.0
|
||||||
github.com/goreleaser/nfpm v1.10.3
|
github.com/goreleaser/nfpm/v2 v2.32.1-0.20230803123630-24a43c5ad7cf
|
||||||
github.com/hdevalence/ed25519consensus v0.1.0
|
github.com/hdevalence/ed25519consensus v0.1.0
|
||||||
github.com/iancoleman/strcase v0.2.0
|
github.com/iancoleman/strcase v0.2.0
|
||||||
github.com/illarion/gonotify v1.0.1
|
github.com/illarion/gonotify v1.0.1
|
||||||
@@ -41,7 +41,7 @@ require (
|
|||||||
github.com/josharian/native v1.1.1-0.20230202152459-5c7d0dd6ab86
|
github.com/josharian/native v1.1.1-0.20230202152459-5c7d0dd6ab86
|
||||||
github.com/jsimonetti/rtnetlink v1.3.2
|
github.com/jsimonetti/rtnetlink v1.3.2
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||||
github.com/klauspost/compress v1.16.5
|
github.com/klauspost/compress v1.16.7
|
||||||
github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a
|
github.com/kortschak/wol v0.0.0-20200729010619-da482cc4850a
|
||||||
github.com/mattn/go-colorable v0.1.13
|
github.com/mattn/go-colorable v0.1.13
|
||||||
github.com/mattn/go-isatty v0.0.18
|
github.com/mattn/go-isatty v0.0.18
|
||||||
@@ -103,8 +103,10 @@ require (
|
|||||||
require (
|
require (
|
||||||
4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
|
4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
|
||||||
4d63.com/gochecknoglobals v0.2.1 // indirect
|
4d63.com/gochecknoglobals v0.2.1 // indirect
|
||||||
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
filippo.io/edwards25519 v1.0.0 // indirect
|
filippo.io/edwards25519 v1.0.0 // indirect
|
||||||
github.com/Abirdcfly/dupword v0.0.11 // indirect
|
github.com/Abirdcfly/dupword v0.0.11 // indirect
|
||||||
|
github.com/AlekSi/pointer v1.2.0 // indirect
|
||||||
github.com/Antonboom/errname v0.1.9 // indirect
|
github.com/Antonboom/errname v0.1.9 // indirect
|
||||||
github.com/Antonboom/nilnil v0.1.4 // indirect
|
github.com/Antonboom/nilnil v0.1.4 // indirect
|
||||||
github.com/BurntSushi/toml v1.2.1 // indirect
|
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||||
@@ -113,9 +115,9 @@ require (
|
|||||||
github.com/Masterminds/goutils v1.1.1 // indirect
|
github.com/Masterminds/goutils v1.1.1 // indirect
|
||||||
github.com/Masterminds/semver v1.5.0 // indirect
|
github.com/Masterminds/semver v1.5.0 // indirect
|
||||||
github.com/Masterminds/semver/v3 v3.2.1 // indirect
|
github.com/Masterminds/semver/v3 v3.2.1 // indirect
|
||||||
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
|
github.com/Masterminds/sprig/v3 v3.2.3 // indirect
|
||||||
github.com/OpenPeeDeeP/depguard v1.1.1 // indirect
|
github.com/OpenPeeDeeP/depguard v1.1.1 // indirect
|
||||||
github.com/ProtonMail/go-crypto v0.0.0-20230426101702-58e86b294756 // indirect
|
github.com/ProtonMail/go-crypto v0.0.0-20230626094100-7e9e0395ebec // indirect
|
||||||
github.com/acomagu/bufpipe v1.0.4 // indirect
|
github.com/acomagu/bufpipe v1.0.4 // indirect
|
||||||
github.com/alexkohler/prealloc v1.0.0 // indirect
|
github.com/alexkohler/prealloc v1.0.0 // indirect
|
||||||
github.com/alingse/asasalint v0.0.11 // indirect
|
github.com/alingse/asasalint v0.0.11 // indirect
|
||||||
@@ -170,9 +172,9 @@ require (
|
|||||||
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
github.com/fsnotify/fsnotify v1.6.0 // indirect
|
||||||
github.com/fzipp/gocyclo v0.6.0 // indirect
|
github.com/fzipp/gocyclo v0.6.0 // indirect
|
||||||
github.com/go-critic/go-critic v0.8.0 // indirect
|
github.com/go-critic/go-critic v0.8.0 // indirect
|
||||||
github.com/go-git/gcfg v1.5.0 // indirect
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||||
github.com/go-git/go-billy/v5 v5.4.1 // indirect
|
github.com/go-git/go-billy/v5 v5.4.1 // indirect
|
||||||
github.com/go-git/go-git/v5 v5.6.1 // indirect
|
github.com/go-git/go-git/v5 v5.7.0 // indirect
|
||||||
github.com/go-logr/logr v1.2.4 // indirect
|
github.com/go-logr/logr v1.2.4 // indirect
|
||||||
github.com/go-openapi/jsonpointer v0.19.6 // indirect
|
github.com/go-openapi/jsonpointer v0.19.6 // indirect
|
||||||
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
github.com/go-openapi/jsonreference v0.20.2 // indirect
|
||||||
@@ -202,10 +204,10 @@ require (
|
|||||||
github.com/google/gnostic v0.6.9 // indirect
|
github.com/google/gnostic v0.6.9 // indirect
|
||||||
github.com/google/gofuzz v1.2.0 // indirect
|
github.com/google/gofuzz v1.2.0 // indirect
|
||||||
github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2 // indirect
|
github.com/google/goterm v0.0.0-20200907032337-555d40f16ae2 // indirect
|
||||||
github.com/google/rpmpack v0.0.0-20221120200012-98b63d62fd77 // indirect
|
github.com/google/rpmpack v0.5.0 // indirect
|
||||||
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect
|
github.com/gordonklaus/ineffassign v0.0.0-20230107090616-13ace0543b28 // indirect
|
||||||
github.com/goreleaser/chglog v0.4.2 // indirect
|
github.com/goreleaser/chglog v0.5.0 // indirect
|
||||||
github.com/goreleaser/fileglob v0.3.1 // indirect
|
github.com/goreleaser/fileglob v1.3.0 // indirect
|
||||||
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
|
github.com/gostaticanalysis/analysisutil v0.7.1 // indirect
|
||||||
github.com/gostaticanalysis/comment v1.4.2 // indirect
|
github.com/gostaticanalysis/comment v1.4.2 // indirect
|
||||||
github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
|
github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
|
||||||
@@ -216,7 +218,7 @@ require (
|
|||||||
github.com/hashicorp/hcl v1.0.0 // indirect
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
||||||
github.com/hexops/gotextdiff v1.0.3 // indirect
|
github.com/hexops/gotextdiff v1.0.3 // indirect
|
||||||
github.com/huandu/xstrings v1.4.0 // indirect
|
github.com/huandu/xstrings v1.4.0 // indirect
|
||||||
github.com/imdario/mergo v0.3.15 // indirect
|
github.com/imdario/mergo v0.3.16 // indirect
|
||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect
|
||||||
github.com/jgautheron/goconst v1.5.1 // indirect
|
github.com/jgautheron/goconst v1.5.1 // indirect
|
||||||
@@ -231,7 +233,7 @@ require (
|
|||||||
github.com/kisielk/errcheck v1.6.3 // indirect
|
github.com/kisielk/errcheck v1.6.3 // indirect
|
||||||
github.com/kisielk/gotool v1.0.0 // indirect
|
github.com/kisielk/gotool v1.0.0 // indirect
|
||||||
github.com/kkHAIKE/contextcheck v1.1.4 // indirect
|
github.com/kkHAIKE/contextcheck v1.1.4 // indirect
|
||||||
github.com/klauspost/pgzip v1.2.5 // indirect
|
github.com/klauspost/pgzip v1.2.6 // indirect
|
||||||
github.com/kr/fs v0.1.0 // indirect
|
github.com/kr/fs v0.1.0 // indirect
|
||||||
github.com/kr/pretty v0.3.1 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
github.com/kr/text v0.2.0 // indirect
|
github.com/kr/text v0.2.0 // indirect
|
||||||
@@ -269,7 +271,7 @@ require (
|
|||||||
github.com/olekukonko/tablewriter v0.0.5 // indirect
|
github.com/olekukonko/tablewriter v0.0.5 // indirect
|
||||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||||
github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
|
github.com/opencontainers/image-spec v1.1.0-rc3 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.0.7 // indirect
|
github.com/pelletier/go-toml/v2 v2.0.8 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.17 // indirect
|
github.com/pierrec/lz4/v4 v4.1.17 // indirect
|
||||||
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
github.com/pjbgf/sha1cd v0.3.0 // indirect
|
||||||
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
|
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e // indirect
|
||||||
@@ -288,27 +290,27 @@ require (
|
|||||||
github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect
|
github.com/sanposhiho/wastedassign/v2 v2.0.7 // indirect
|
||||||
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
|
github.com/sashamelentyev/interfacebloat v1.1.0 // indirect
|
||||||
github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect
|
github.com/sashamelentyev/usestdlibvars v1.23.0 // indirect
|
||||||
github.com/sassoftware/go-rpmutils v0.2.0 // indirect
|
|
||||||
github.com/securego/gosec/v2 v2.15.0 // indirect
|
github.com/securego/gosec/v2 v2.15.0 // indirect
|
||||||
github.com/sergi/go-diff v1.3.1 // indirect
|
github.com/sergi/go-diff v1.3.1 // indirect
|
||||||
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
|
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect
|
||||||
|
github.com/shopspring/decimal v1.2.0 // indirect
|
||||||
github.com/sirupsen/logrus v1.9.0 // indirect
|
github.com/sirupsen/logrus v1.9.0 // indirect
|
||||||
github.com/sivchari/containedctx v1.0.3 // indirect
|
github.com/sivchari/containedctx v1.0.3 // indirect
|
||||||
github.com/sivchari/nosnakecase v1.7.0 // indirect
|
github.com/sivchari/nosnakecase v1.7.0 // indirect
|
||||||
github.com/sivchari/tenv v1.7.1 // indirect
|
github.com/sivchari/tenv v1.7.1 // indirect
|
||||||
github.com/skeema/knownhosts v1.1.0 // indirect
|
github.com/skeema/knownhosts v1.1.1 // indirect
|
||||||
github.com/sonatard/noctx v0.0.2 // indirect
|
github.com/sonatard/noctx v0.0.2 // indirect
|
||||||
github.com/sourcegraph/go-diff v0.7.0 // indirect
|
github.com/sourcegraph/go-diff v0.7.0 // indirect
|
||||||
github.com/spf13/afero v1.9.5 // indirect
|
github.com/spf13/afero v1.9.5 // indirect
|
||||||
github.com/spf13/cast v1.5.0 // indirect
|
github.com/spf13/cast v1.5.1 // indirect
|
||||||
github.com/spf13/cobra v1.7.0 // indirect
|
github.com/spf13/cobra v1.7.0 // indirect
|
||||||
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
github.com/spf13/jwalterweatherman v1.1.0 // indirect
|
||||||
github.com/spf13/pflag v1.0.5 // indirect
|
github.com/spf13/pflag v1.0.5 // indirect
|
||||||
github.com/spf13/viper v1.15.0 // indirect
|
github.com/spf13/viper v1.16.0 // indirect
|
||||||
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
|
github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect
|
||||||
github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
|
github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect
|
||||||
github.com/stretchr/objx v0.5.0 // indirect
|
github.com/stretchr/objx v0.5.0 // indirect
|
||||||
github.com/stretchr/testify v1.8.2 // indirect
|
github.com/stretchr/testify v1.8.4 // indirect
|
||||||
github.com/subosito/gotenv v1.4.2 // indirect
|
github.com/subosito/gotenv v1.4.2 // indirect
|
||||||
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect
|
github.com/t-yuki/gocover-cobertura v0.0.0-20180217150009-aaee18c8195c // indirect
|
||||||
github.com/tdakkota/asciicheck v0.2.0 // indirect
|
github.com/tdakkota/asciicheck v0.2.0 // indirect
|
||||||
|
|||||||
@@ -15,8 +15,8 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/google/go-cmp/cmp"
|
"github.com/google/go-cmp/cmp"
|
||||||
"github.com/goreleaser/nfpm"
|
"github.com/goreleaser/nfpm/v2"
|
||||||
_ "github.com/goreleaser/nfpm/deb"
|
_ "github.com/goreleaser/nfpm/v2/deb"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDebInfo(t *testing.T) {
|
func TestDebInfo(t *testing.T) {
|
||||||
@@ -38,6 +38,7 @@ func TestDebInfo(t *testing.T) {
|
|||||||
"Section", "net",
|
"Section", "net",
|
||||||
"Priority", "extra",
|
"Priority", "extra",
|
||||||
"Architecture", "amd64",
|
"Architecture", "amd64",
|
||||||
|
"Maintainer", "Tail Scalar",
|
||||||
"Installed-Size", "0",
|
"Installed-Size", "0",
|
||||||
"Description", "test package"),
|
"Description", "test package"),
|
||||||
},
|
},
|
||||||
@@ -54,6 +55,7 @@ func TestDebInfo(t *testing.T) {
|
|||||||
"Section", "net",
|
"Section", "net",
|
||||||
"Priority", "extra",
|
"Priority", "extra",
|
||||||
"Architecture", "arm64",
|
"Architecture", "arm64",
|
||||||
|
"Maintainer", "Tail Scalar",
|
||||||
"Installed-Size", "0",
|
"Installed-Size", "0",
|
||||||
"Description", "test package"),
|
"Description", "test package"),
|
||||||
},
|
},
|
||||||
@@ -70,6 +72,7 @@ func TestDebInfo(t *testing.T) {
|
|||||||
"Section", "net",
|
"Section", "net",
|
||||||
"Priority", "extra",
|
"Priority", "extra",
|
||||||
"Architecture", "amd64",
|
"Architecture", "amd64",
|
||||||
|
"Maintainer", "Tail Scalar",
|
||||||
"Installed-Size", "0",
|
"Installed-Size", "0",
|
||||||
"Description", "test package"),
|
"Description", "test package"),
|
||||||
},
|
},
|
||||||
@@ -167,6 +170,7 @@ func mkTestDeb(version, arch string) []byte {
|
|||||||
Version: version,
|
Version: version,
|
||||||
Section: "net",
|
Section: "net",
|
||||||
Priority: "extra",
|
Priority: "extra",
|
||||||
|
Maintainer: "Tail Scalar",
|
||||||
})
|
})
|
||||||
|
|
||||||
pkg, err := nfpm.Get("deb")
|
pkg, err := nfpm.Get("deb")
|
||||||
|
|||||||
80
release/dist/unixpkgs/pkgs.go
vendored
80
release/dist/unixpkgs/pkgs.go
vendored
@@ -18,7 +18,8 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/goreleaser/nfpm"
|
"github.com/goreleaser/nfpm/v2"
|
||||||
|
"github.com/goreleaser/nfpm/v2/files"
|
||||||
"tailscale.com/release/dist"
|
"tailscale.com/release/dist"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -211,6 +212,31 @@ func (t *debTarget) Build(b *dist.Build) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
arch := debArch(t.arch())
|
arch := debArch(t.arch())
|
||||||
|
contents, err := files.PrepareForPackager(files.Contents{
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: ts,
|
||||||
|
Destination: "/usr/bin/tailscale",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: tsd,
|
||||||
|
Destination: "/usr/sbin/tailscaled",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: filepath.Join(tailscaledDir, "tailscaled.service"),
|
||||||
|
Destination: "/lib/systemd/system/tailscaled.service",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeConfigNoReplace,
|
||||||
|
Source: filepath.Join(tailscaledDir, "tailscaled.defaults"),
|
||||||
|
Destination: "/etc/default/tailscaled",
|
||||||
|
},
|
||||||
|
}, 0, "deb", false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
info := nfpm.WithDefaults(&nfpm.Info{
|
info := nfpm.WithDefaults(&nfpm.Info{
|
||||||
Name: "tailscale",
|
Name: "tailscale",
|
||||||
Arch: arch,
|
Arch: arch,
|
||||||
@@ -223,14 +249,7 @@ func (t *debTarget) Build(b *dist.Build) ([]string, error) {
|
|||||||
Section: "net",
|
Section: "net",
|
||||||
Priority: "extra",
|
Priority: "extra",
|
||||||
Overridables: nfpm.Overridables{
|
Overridables: nfpm.Overridables{
|
||||||
Files: map[string]string{
|
Contents: contents,
|
||||||
ts: "/usr/bin/tailscale",
|
|
||||||
tsd: "/usr/sbin/tailscaled",
|
|
||||||
filepath.Join(tailscaledDir, "tailscaled.service"): "/lib/systemd/system/tailscaled.service",
|
|
||||||
},
|
|
||||||
ConfigFiles: map[string]string{
|
|
||||||
filepath.Join(tailscaledDir, "tailscaled.defaults"): "/etc/default/tailscaled",
|
|
||||||
},
|
|
||||||
Scripts: nfpm.Scripts{
|
Scripts: nfpm.Scripts{
|
||||||
PostInstall: filepath.Join(repoDir, "release/deb/debian.postinst.sh"),
|
PostInstall: filepath.Join(repoDir, "release/deb/debian.postinst.sh"),
|
||||||
PreRemove: filepath.Join(repoDir, "release/deb/debian.prerm.sh"),
|
PreRemove: filepath.Join(repoDir, "release/deb/debian.prerm.sh"),
|
||||||
@@ -304,6 +323,37 @@ func (t *rpmTarget) Build(b *dist.Build) ([]string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
arch := rpmArch(t.arch())
|
arch := rpmArch(t.arch())
|
||||||
|
contents, err := files.PrepareForPackager(files.Contents{
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: ts,
|
||||||
|
Destination: "/usr/bin/tailscale",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: tsd,
|
||||||
|
Destination: "/usr/sbin/tailscaled",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeFile,
|
||||||
|
Source: filepath.Join(tailscaledDir, "tailscaled.service"),
|
||||||
|
Destination: "/lib/systemd/system/tailscaled.service",
|
||||||
|
},
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeConfigNoReplace,
|
||||||
|
Source: filepath.Join(tailscaledDir, "tailscaled.defaults"),
|
||||||
|
Destination: "/etc/default/tailscaled",
|
||||||
|
},
|
||||||
|
// SELinux policy on e.g. CentOS 8 forbids writing to /var/cache.
|
||||||
|
// Creating an empty directory at install time resolves this issue.
|
||||||
|
&files.Content{
|
||||||
|
Type: files.TypeDir,
|
||||||
|
Destination: "/var/cache/tailscale",
|
||||||
|
},
|
||||||
|
}, 0, "rpm", false)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
info := nfpm.WithDefaults(&nfpm.Info{
|
info := nfpm.WithDefaults(&nfpm.Info{
|
||||||
Name: "tailscale",
|
Name: "tailscale",
|
||||||
Arch: arch,
|
Arch: arch,
|
||||||
@@ -314,17 +364,7 @@ func (t *rpmTarget) Build(b *dist.Build) ([]string, error) {
|
|||||||
Homepage: "https://www.tailscale.com",
|
Homepage: "https://www.tailscale.com",
|
||||||
License: "MIT",
|
License: "MIT",
|
||||||
Overridables: nfpm.Overridables{
|
Overridables: nfpm.Overridables{
|
||||||
Files: map[string]string{
|
Contents: contents,
|
||||||
ts: "/usr/bin/tailscale",
|
|
||||||
tsd: "/usr/sbin/tailscaled",
|
|
||||||
filepath.Join(tailscaledDir, "tailscaled.service"): "/lib/systemd/system/tailscaled.service",
|
|
||||||
},
|
|
||||||
ConfigFiles: map[string]string{
|
|
||||||
filepath.Join(tailscaledDir, "tailscaled.defaults"): "/etc/default/tailscaled",
|
|
||||||
},
|
|
||||||
// SELinux policy on e.g. CentOS 8 forbids writing to /var/cache.
|
|
||||||
// Creating an empty directory at install time resolves this issue.
|
|
||||||
EmptyFolders: []string{"/var/cache/tailscale"},
|
|
||||||
Scripts: nfpm.Scripts{
|
Scripts: nfpm.Scripts{
|
||||||
PostInstall: filepath.Join(repoDir, "release/rpm/rpm.postinst.sh"),
|
PostInstall: filepath.Join(repoDir, "release/rpm/rpm.postinst.sh"),
|
||||||
PreRemove: filepath.Join(repoDir, "release/rpm/rpm.prerm.sh"),
|
PreRemove: filepath.Join(repoDir, "release/rpm/rpm.prerm.sh"),
|
||||||
|
|||||||
4
release/dist/unixpkgs/targets.go
vendored
4
release/dist/unixpkgs/targets.go
vendored
@@ -11,8 +11,8 @@ import (
|
|||||||
|
|
||||||
"tailscale.com/release/dist"
|
"tailscale.com/release/dist"
|
||||||
|
|
||||||
_ "github.com/goreleaser/nfpm/deb"
|
_ "github.com/goreleaser/nfpm/v2/deb"
|
||||||
_ "github.com/goreleaser/nfpm/rpm"
|
_ "github.com/goreleaser/nfpm/v2/rpm"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Targets(signer crypto.Signer) []dist.Target {
|
func Targets(signer crypto.Signer) []dist.Target {
|
||||||
|
|||||||
Reference in New Issue
Block a user