Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nfpm for openSUSE:Factory checked in at 2025-09-02 17:59:02 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nfpm (Old) and /work/SRC/openSUSE:Factory/.nfpm.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nfpm" Tue Sep 2 17:59:02 2025 rev:11 rq:1302309 version:2.43.1 Changes: -------- --- /work/SRC/openSUSE:Factory/nfpm/nfpm.changes 2025-06-10 09:08:58.936604346 +0200 +++ /work/SRC/openSUSE:Factory/.nfpm.new.1977/nfpm.changes 2025-09-02 17:59:34.797670603 +0200 @@ -1,0 +2,51 @@ +Tue Sep 02 05:57:11 UTC 2025 - Johannes Kastl <[email protected]> + +- Update to version 2.43.1: + * Bug fixes + - 409e8c9: fix: dir ownership when type: dir (@caarlos0) + - 0b3c28f: fix: symlink with empty mtime (#955) (@caarlos0) + * Other work + - 4497fb3: docs: corrected amd64 name for deb in + goarch-to-pkg.md (#945) (@BCMM) + - 83fcc7d: docs: improve version extraction of systemctl (#961) + (@supcik) + - 9c3ba6b: docs: update cmd docs (@caarlos0) + - b2a1c0e: refactor: move it around a bit (@caarlos0) + - d0d7d06: refactor: use stdlib maps (#942) (@scop) + * Dependencies + - chore(deps): bump github.com/ulikunitz/xz from 0.5.14 to + 0.5.15 (#965) + - chore(deps): bump github.com/ulikunitz/xz from 0.5.13 to + 0.5.14 (#964) + - chore(deps): bump github.com/stretchr/testify from 1.11.0 to + 1.11.1 (#963) + - chore(deps): bump github.com/stretchr/testify from 1.10.0 to + 1.11.0 (#962) + - chore(deps): bump github.com/ulikunitz/xz from 0.5.12 to + 0.5.13 (#960) + - chore(deps): bump anchore/sbom-action from 0.20.4 to 0.20.5 + (#959) + - chore(deps): bump actions/checkout from 4 to 5 (#958) + - chore(deps): bump actions/cache from 4.2.3 to 4.2.4 (#957) + - chore(deps): bump github.com/google/rpmpack from 0.7.0 to + 0.7.1 (#951) + - chore(deps): bump anchore/sbom-action from 0.20.2 to 0.20.4 + (#950) + - chore(deps): bump sigstore/cosign-installer from 3.9.1 to + 3.9.2 (#949) + - chore(deps): bump anchore/sbom-action from 0.20.1 to 0.20.2 + (#947) + - chore(deps): bump github.com/Masterminds/semver/v3 from 3.3.1 + to 3.4.0 (#946) + - chore(deps): bump github.com/caarlos0/go-version from 0.2.0 + to 0.2.1 (#944) + - chore(deps): bump sigstore/cosign-installer from 3.8.2 to + 3.9.1 (#943) + - chore(deps): bump anchore/sbom-action from 0.20.0 to 0.20.1 + (#940) + - chore(deps): bump stefanzweifel/git-auto-commit-action from 5 + to 6 (#937) + - chore(deps): bump github.com/goreleaser/chglog from 0.7.0 to + 0.7.3 (#936) + +------------------------------------------------------------------- Old: ---- nfpm-2.43.0.obscpio New: ---- nfpm-2.43.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nfpm.spec ++++++ --- /var/tmp/diff_new_pack.qPBv9X/_old 2025-09-02 17:59:35.677707577 +0200 +++ /var/tmp/diff_new_pack.qPBv9X/_new 2025-09-02 17:59:35.681707745 +0200 @@ -1,7 +1,7 @@ # # spec file for package nfpm # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: nfpm -Version: 2.43.0 +Version: 2.43.1 Release: 0 Summary: Simple deb, rpm, apk and arch linux packager written in Go License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.qPBv9X/_old 2025-09-02 17:59:35.709708922 +0200 +++ /var/tmp/diff_new_pack.qPBv9X/_new 2025-09-02 17:59:35.713709090 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/goreleaser/nfpm</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">v2.43.0</param> + <param name="revision">v2.43.1</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.qPBv9X/_old 2025-09-02 17:59:35.733709930 +0200 +++ /var/tmp/diff_new_pack.qPBv9X/_new 2025-09-02 17:59:35.741710266 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/goreleaser/nfpm</param> - <param name="changesrevision">2e47af64a3f33d32ec1395dbd56165c4feb2bc21</param></service></servicedata> + <param name="changesrevision">75a52a288bf13f31e4810212982c3095a5bf3115</param></service></servicedata> (No newline at EOF) ++++++ nfpm-2.43.0.obscpio -> nfpm-2.43.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/files/files.go new/nfpm-2.43.1/files/files.go --- old/nfpm-2.43.0/files/files.go 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/files/files.go 2025-08-29 10:21:40.000000000 +0200 @@ -146,6 +146,8 @@ info, err := os.Stat(cc.Source) if err == nil { if cc.FileInfo.MTime.IsZero() { + // if we can stat the file and mtime not set, use original + // file's mtime cc.FileInfo.MTime = info.ModTime() } if cc.FileInfo.Mode == 0 { @@ -155,8 +157,9 @@ } } + // finally, if mtime is still 0, set time.Now() if cc.FileInfo.MTime.IsZero() { - cc.FileInfo.MTime = mtime + cc.FileInfo.MTime = time.Now() } return cc } @@ -260,7 +263,7 @@ return nil, contentCollisionError(content, presentContent) } - err := addParents(contentMap, content.Destination, mtime) + err := addParents(contentMap, content.Destination, mtime, nil) if err != nil { return nil, err } @@ -279,7 +282,7 @@ return nil, contentCollisionError(content, presentContent) } - err := addParents(contentMap, content.Destination, mtime) + err := addParents(contentMap, content.Destination, mtime, nil) if err != nil { return nil, err } @@ -345,7 +348,7 @@ return true } -func addParents(contentMap map[string]*Content, path string, mtime time.Time) error { +func addParents(contentMap map[string]*Content, path string, mtime time.Time, fileInfo *ContentFileInfo) error { for _, parent := range sortedParents(path) { parent = NormalizeAbsoluteDirPath(parent) // check for content collision and just overwrite previously created @@ -364,12 +367,25 @@ }, c) } + owner := "root" + group := "root" + + // Use provided ownership for directories that are not owned by the filesystem + if fileInfo != nil && !ownedByFilesystem(parent) { + if fileInfo.Owner != "" { + owner = fileInfo.Owner + } + if fileInfo.Group != "" { + group = fileInfo.Group + } + } + contentMap[parent] = &Content{ Destination: parent, Type: TypeImplicitDir, FileInfo: &ContentFileInfo{ - Owner: "root", - Group: "root", + Owner: owner, + Group: group, Mode: 0o755, MTime: mtime, }, @@ -415,7 +431,7 @@ return contentCollisionError(&c, presentContent) } - if err := addParents(all, dst, mtime); err != nil { + if err := addParents(all, dst, mtime, origFile.FileInfo); err != nil { return err } @@ -458,7 +474,7 @@ } } - err := addParents(all, tree.Destination, mtime) + err := addParents(all, tree.Destination, mtime, tree.FileInfo) if err != nil { return err } @@ -478,7 +494,7 @@ c := &Content{ FileInfo: &ContentFileInfo{}, } - if tree.FileInfo != nil && !ownedByFilesystem(tree.Destination) { + if tree.FileInfo != nil && !ownedByFilesystem(c.Destination) { c.FileInfo.Owner = tree.FileInfo.Owner c.FileInfo.Group = tree.FileInfo.Group } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/files/files_test.go new/nfpm-2.43.1/files/files_test.go --- old/nfpm-2.43.0/files/files_test.go 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/files/files_test.go 2025-08-29 10:21:40.000000000 +0200 @@ -975,6 +975,75 @@ } } +func TestIssue954(t *testing.T) { + tmpDir := t.TempDir() + contentDir := filepath.Join(tmpDir, "content") + require.NoError(t, os.MkdirAll(filepath.Join(contentDir, "subdir1"), 0o755)) + require.NoError(t, os.MkdirAll(filepath.Join(contentDir, "subdir2"), 0o755)) + require.NoError(t, os.WriteFile(filepath.Join(contentDir, "subdir1", "file1.txt"), []byte("test"), 0o644)) + require.NoError(t, os.WriteFile(filepath.Join(contentDir, "subdir2", "file2.txt"), []byte("test"), 0o644)) + + results, err := files.PrepareForPackager( + files.Contents{ + { + Source: contentDir + "/", + Destination: "/srv/www", + FileInfo: &files.ContentFileInfo{ + Owner: "www-data", + Group: "www-data", + Mode: 0o775, + }, + }, + }, + 0, + "", + false, + mtime, + ) + require.NoError(t, err) + + found := []string{} + for _, f := range results { + found = append(found, f.Destination) + if f.Destination == "/srv/" { + require.Equal(t, "root", f.FileInfo.Owner, f.Destination) + require.Equal(t, "root", f.FileInfo.Group, f.Destination) + continue + } + require.Contains(t, f.Destination, "/srv/www") + require.Equal(t, "www-data", f.FileInfo.Owner, f.Destination) + require.Equal(t, "www-data", f.FileInfo.Group, f.Destination) + + } + require.ElementsMatch(t, []string{ + "/srv/", + "/srv/www/", + "/srv/www/subdir1/", + "/srv/www/subdir1/file1.txt", + "/srv/www/subdir2/", + "/srv/www/subdir2/file2.txt", + }, found) +} + +func TestIssue952(t *testing.T) { + contents := files.Contents{ + { + Source: "/source", + Destination: "/dest", + Type: files.TypeSymlink, + }, + } + + result, err := files.PrepareForPackager(contents, 0, "", false, mtime) + require.NoError(t, err) + require.Len(t, result, 1) + + symlink := result[0] + require.Equal(t, files.TypeSymlink, symlink.Type) + require.Equal(t, "/dest", symlink.Destination) + require.Equal(t, mtime, symlink.FileInfo.MTime) +} + func TestIssue829(t *testing.T) { var config testStruct dec := yaml.NewDecoder(strings.NewReader(`--- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/go.mod new/nfpm-2.43.1/go.mod --- old/nfpm-2.43.0/go.mod 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/go.mod 2025-08-29 10:21:40.000000000 +0200 @@ -5,13 +5,13 @@ require ( dario.cat/mergo v1.0.2 github.com/AlekSi/pointer v1.2.0 - github.com/Masterminds/semver/v3 v3.3.1 + github.com/Masterminds/semver/v3 v3.4.0 github.com/ProtonMail/go-crypto v1.3.0 github.com/ProtonMail/gopenpgp/v2 v2.7.1 github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb - github.com/caarlos0/go-version v0.2.0 - github.com/google/rpmpack v0.7.0 - github.com/goreleaser/chglog v0.7.0 + github.com/caarlos0/go-version v0.2.1 + github.com/google/rpmpack v0.7.1 + github.com/goreleaser/chglog v0.7.3 github.com/goreleaser/fileglob v1.3.0 github.com/invopop/jsonschema v0.13.0 github.com/klauspost/compress v1.18.0 @@ -20,9 +20,8 @@ github.com/muesli/roff v0.1.0 github.com/sassoftware/go-rpmutils v0.4.0 github.com/spf13/cobra v1.9.1 - github.com/stretchr/testify v1.10.0 - github.com/ulikunitz/xz v0.5.12 - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 + github.com/stretchr/testify v1.11.1 + github.com/ulikunitz/xz v0.5.15 gopkg.in/yaml.v3 v3.0.1 ) @@ -35,14 +34,14 @@ github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cavaliergopher/cpio v1.0.1 // indirect - github.com/cloudflare/circl v1.6.0 // indirect + github.com/cloudflare/circl v1.6.1 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect - github.com/go-git/go-git/v5 v5.14.0 // indirect + github.com/go-git/go-git/v5 v5.16.1 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/google/uuid v1.6.0 // indirect @@ -68,9 +67,9 @@ github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect gitlab.com/digitalxero/go-conventional-commit v1.0.7 // indirect - golang.org/x/crypto v0.36.0 // indirect - golang.org/x/net v0.38.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/go.sum new/nfpm-2.43.1/go.sum --- old/nfpm-2.43.0/go.sum 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/go.sum 2025-08-29 10:21:40.000000000 +0200 @@ -6,8 +6,8 @@ github.com/DataDog/zstd v1.5.5/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI= github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe3tPhs= github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -31,15 +31,15 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/caarlos0/go-version v0.2.0 h1:TTD5dF3PBAtRHbfCKRE173SrVVpbE0yX95EDQ4BwTGs= -github.com/caarlos0/go-version v0.2.0/go.mod h1:X+rI5VAtJDpcjCjeEIXpxGa5+rTcgur1FK66wS0/944= +github.com/caarlos0/go-version v0.2.1 h1:bJY5WRvs2RXErLKBELd1WR0U72whX8ELbKg0WtQ9/7A= +github.com/caarlos0/go-version v0.2.1/go.mod h1:X+rI5VAtJDpcjCjeEIXpxGa5+rTcgur1FK66wS0/944= github.com/caarlos0/testfs v0.4.4 h1:3PHvzHi5Lt+g332CiShwS8ogTgS3HjrmzZxCm6JCDr8= github.com/caarlos0/testfs v0.4.4/go.mod h1:bRN55zgG4XCUVVHZCeU+/Tz1Q6AxEJOEJTliBy+1DMk= github.com/cavaliergopher/cpio v1.0.1 h1:KQFSeKmZhv0cr+kawA3a0xTQCU4QxXF1vhU7P7av2KM= github.com/cavaliergopher/cpio v1.0.1/go.mod h1:pBdaqQjnvXxdS/6CvNDwIANIFSP0xRKI16PX4xejRQc= github.com/cloudflare/circl v1.1.0/go.mod h1:prBCrKB9DV4poKZY1l9zBXg2QJY7mvgRvtMxxK7fi4I= -github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= -github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= +github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= @@ -61,22 +61,22 @@ github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= -github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= +github.com/go-git/go-git/v5 v5.16.1 h1:TuxMBWNL7R05tXsUGi0kh1vi4tq0WfXNLlIrAkXG1k8= +github.com/go-git/go-git/v5 v5.16.1/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/rpmpack v0.7.0 h1:mA2Yd3/dOmao1ype0DJA8DFquEpslaleywOuglVCrUs= -github.com/google/rpmpack v0.7.0/go.mod h1:uqVAUVQLq8UY2hCDfmJ/+rtO3aw7qyhc90rCVEabEfI= +github.com/google/rpmpack v0.7.1 h1:YdWh1IpzOjBz60Wvdw0TU0A5NWP+JTVHA5poDqwMO2o= +github.com/google/rpmpack v0.7.1/go.mod h1:h1JL16sUTWCLI/c39ox1rDaTBo3BXUQGjczVJyK4toU= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= -github.com/goreleaser/chglog v0.7.0 h1:/KzXWAeg4DrEz4r3OI6K2Yb8RAsVGeInCUfLWFXL9C0= -github.com/goreleaser/chglog v0.7.0/go.mod h1:2h/yyq9xvTUeM9tOoucBP+jri8Dj28splx+SjlYkklc= +github.com/goreleaser/chglog v0.7.3 h1:eCKJrvsDgG+F1F2fhwM6qX+S5yMiZgsQ4VNTPFl9qEM= +github.com/goreleaser/chglog v0.7.3/go.mod h1:HXPf4avc1kTD00a46LuTEH0i1dZctLq8Xs2BxUfROnY= github.com/goreleaser/fileglob v1.3.0 h1:/X6J7U8lbDpQtBvGcwwPS6OpzkNVlVEsFUVRx9+k+7I= github.com/goreleaser/fileglob v1.3.0/go.mod h1:Jx6BoXv3mbYkEzwm9THo7xbr5egkAraxkGorbJb4RxU= github.com/huandu/xstrings v1.5.0 h1:2ag3IFq9ZDANvthTwTiqSSZLjDc+BedvHPAp5tJy2TI= @@ -154,10 +154,10 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= -github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= -github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= +github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -173,8 +173,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -185,8 +185,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8= -golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -202,22 +202,22 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/internal/maps/maps.go new/nfpm-2.43.1/internal/maps/maps.go --- old/nfpm-2.43.0/internal/maps/maps.go 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/internal/maps/maps.go 2025-08-29 10:21:40.000000000 +0200 @@ -1,13 +1,12 @@ package maps import ( - "sort" - - "golang.org/x/exp/maps" + "maps" + "slices" ) func Keys[T any](m map[string]T) []string { - keys := maps.Keys(m) - sort.Strings(keys) + keys := slices.Collect(maps.Keys(m)) + slices.Sort(keys) return keys } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/rpm/rpm_test.go new/nfpm-2.43.1/rpm/rpm_test.go --- old/nfpm-2.43.0/rpm/rpm_test.go 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/rpm/rpm_test.go 2025-08-29 10:21:40.000000000 +0200 @@ -153,6 +153,35 @@ require.Equal(t, "Foo does things", description) } +func TestIssue952(t *testing.T) { + info := exampleInfo() + info.MTime = time.Time{} + + info.Contents = files.Contents{ + &files.Content{ + Source: "/file-that-does-not-exist", + Destination: "/etc/link", + Type: files.TypeSymlink, + }, + } + + var buf bytes.Buffer + err := DefaultRPM.Package(info, &buf) + require.NoError(t, err) + + rpm, err := rpmutils.ReadRpm(&buf) + require.NoError(t, err) + + files, err := rpm.Header.GetFiles() + require.NoError(t, err) + require.Len(t, files, 1) + f := files[0] + require.Equal(t, cpio.S_ISLNK, f.Mode()) + require.Equal(t, "/etc/link", f.Name()) + require.Equal(t, "/file-that-does-not-exist", f.Linkname()) + require.Positive(t, f.Mtime()) +} + func TestSRPM(t *testing.T) { f, err := os.CreateTemp(t.TempDir(), "test.rpm") require.NoError(t, err) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/www/docs/cmd/nfpm_package.md new/nfpm-2.43.1/www/docs/cmd/nfpm_package.md --- old/nfpm-2.43.0/www/docs/cmd/nfpm_package.md 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/www/docs/cmd/nfpm_package.md 2025-08-29 10:21:40.000000000 +0200 @@ -11,7 +11,7 @@ ``` -f, --config string config file to be used (default "nfpm.yaml") -h, --help help for package - -p, --packager string which packager implementation to use [apk|archlinux|deb|ipk|rpm] + -p, --packager string which packager implementation to use [apk|archlinux|deb|ipk|rpm|srpm] -t, --target string where to save the generated package (filename, folder or empty for current folder) ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/www/docs/goarch-to-pkg.md new/nfpm-2.43.1/www/docs/goarch-to-pkg.md --- old/nfpm-2.43.0/www/docs/goarch-to-pkg.md 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/www/docs/goarch-to-pkg.md 2025-08-29 10:21:40.000000000 +0200 @@ -19,7 +19,7 @@ | GOARCH | Value | | :--: | :--: | | `386` | `i386` | -| `amd64` | `x86_64` | +| `amd64` | `amd64` | | `arm64` | `arm64` | | `arm5` | `armel` | | `arm6` | `armhf` | diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/www/docs/static/latest new/nfpm-2.43.1/www/docs/static/latest --- old/nfpm-2.43.0/www/docs/static/latest 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/www/docs/static/latest 2025-08-29 10:21:40.000000000 +0200 @@ -1 +1 @@ -v2.42.1 +v2.43.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nfpm-2.43.0/www/docs/tips.md new/nfpm-2.43.1/www/docs/tips.md --- old/nfpm-2.43.0/www/docs/tips.md 2025-06-07 18:32:08.000000000 +0200 +++ new/nfpm-2.43.1/www/docs/tips.md 2025-08-29 10:21:40.000000000 +0200 @@ -40,7 +40,7 @@ if ! command -V systemctl >/dev/null 2>&1; then use_systemctl="False" else - systemd_version=$(systemctl --version | head -1 | sed 's/systemd //g') + systemd_version=$(systemctl --version | head -1 | grep -E -o "[0-9]+" | head -1) fi cleanup() { ++++++ nfpm.obsinfo ++++++ --- /var/tmp/diff_new_pack.qPBv9X/_old 2025-09-02 17:59:36.053723375 +0200 +++ /var/tmp/diff_new_pack.qPBv9X/_new 2025-09-02 17:59:36.057723543 +0200 @@ -1,5 +1,5 @@ name: nfpm -version: 2.43.0 -mtime: 1749313928 -commit: 2e47af64a3f33d32ec1395dbd56165c4feb2bc21 +version: 2.43.1 +mtime: 1756455700 +commit: 75a52a288bf13f31e4810212982c3095a5bf3115 ++++++ vendor.tar.gz ++++++ ++++ 7345 lines of diff (skipped)
