From 75cf0f6b4eb0eb1c60460786833343bcc6f176af Mon Sep 17 00:00:00 2001 From: Adrian Wennberg Date: Tue, 25 Jun 2019 13:56:32 +0100 Subject: [PATCH] Added Packager and Epoch tags (#58) * feat: Add optional packager tag to rpm spec Using the `Maintainer` tag from deb as the `Packager` tag for rpm See #57 * feat: Optional epoch field added to both rpm and dep packages See #57 * test: Adding test for deb epoch field Adding a unit test for the epoch field and fixing the implementation of version number with epoch for deb packager. See #57 --- deb/deb.go | 6 +++++- deb/deb_test.go | 22 ++++++++++++++++++++++ deb/testdata/withepoch.golden | 7 +++++++ nfpm.go | 1 + rpm/rpm.go | 6 ++++++ rpm/testdata/spec_4.12.x.golden | 1 + rpm/testdata/spec_4.13.x.golden | 1 + rpm/testdata/spec_4.14.x.golden | 1 + 8 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 deb/testdata/withepoch.golden diff --git a/deb/deb.go b/deb/deb.go index f9ffbf3..ff067e3 100644 --- a/deb/deb.go +++ b/deb/deb.go @@ -334,7 +334,11 @@ func conffiles(info nfpm.Info) []byte { const controlTemplate = ` {{- /* Mandatory fields */ -}} Package: {{.Info.Name}} +{{- if .Info.Epoch}} +Version: {{ .Info.Epoch }}:{{.Info.Version}} +{{- else }} Version: {{.Info.Version}} +{{- end }} Section: {{.Info.Section}} Priority: {{.Info.Priority}} Architecture: {{.Info.Arch}} @@ -345,7 +349,7 @@ Maintainer: {{.Info.Maintainer}} {{- if .Info.Vendor}} Vendor: {{.Info.Vendor}} {{- end }} -Installed-Size: {{.InstalledSize}} +Installed-Size: {{.InstalledSize}} {{- with .Info.Replaces}} Replaces: {{join .}} {{- end }} diff --git a/deb/deb_test.go b/deb/deb_test.go index 33fa024..49ac53d 100644 --- a/deb/deb_test.go +++ b/deb/deb_test.go @@ -253,3 +253,25 @@ func TestMinimalFields(t *testing.T) { assert.NoError(t, err) assert.Equal(t, string(bts), w.String()) } + +func TestDebEpoch(t *testing.T) { + var w bytes.Buffer + assert.NoError(t, writeControl(&w, controlData{ + Info: nfpm.WithDefaults(nfpm.Info{ + Name: "withepoch", + Arch: "arm64", + Description: "Has an epoch added to it's version", + Priority: "extra", + Epoch: "2", + Version: "1.0.0", + Section: "default", + }), + })) + var golden = "testdata/withepoch.golden" + if *update { + require.NoError(t, ioutil.WriteFile(golden, w.Bytes(), 0655)) + } + bts, err := ioutil.ReadFile(golden) //nolint:gosec + assert.NoError(t, err) + assert.Equal(t, string(bts), w.String()) +} diff --git a/deb/testdata/withepoch.golden b/deb/testdata/withepoch.golden new file mode 100644 index 0000000..15612a7 --- /dev/null +++ b/deb/testdata/withepoch.golden @@ -0,0 +1,7 @@ +Package: withepoch +Version: 2:1.0.0 +Section: default +Priority: extra +Architecture: arm64 +Installed-Size: 0 +Description: Has an epoch added to it's version diff --git a/nfpm.go b/nfpm.go index fb81b21..156f0b5 100644 --- a/nfpm.go +++ b/nfpm.go @@ -106,6 +106,7 @@ type Info struct { Name string `yaml:"name,omitempty"` Arch string `yaml:"arch,omitempty"` Platform string `yaml:"platform,omitempty"` + Epoch string `yaml:"epoch,omitempty"` Version string `yaml:"version,omitempty"` Section string `yaml:"section,omitempty"` Priority string `yaml:"priority,omitempty"` diff --git a/rpm/rpm.go b/rpm/rpm.go index 08d5353..7331782 100644 --- a/rpm/rpm.go +++ b/rpm/rpm.go @@ -314,6 +314,9 @@ const specTemplate = ` Name: {{ .Info.Name }} Summary: {{ first_line .Info.Description }} +{{- with .Info.Epoch}} +Epoch: {{ . }} +{{- end }} Version: {{ .Info.Version }} Release: 1 {{- with .Info.License }} @@ -324,6 +327,9 @@ SOURCE0 : %{name}-%{version}.tar.gz {{- with .Info.Homepage }} URL: {{ . }} {{- end }} +{{- with .Info.Maintainer}} +Packager: {{ . }} +{{- end }} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root {{ range $index, $element := .Info.Replaces }} diff --git a/rpm/testdata/spec_4.12.x.golden b/rpm/testdata/spec_4.12.x.golden index c32bd11..57ec967 100644 --- a/rpm/testdata/spec_4.12.x.golden +++ b/rpm/testdata/spec_4.12.x.golden @@ -13,6 +13,7 @@ License: MIT Group: Development/Tools SOURCE0 : %{name}-%{version}.tar.gz URL: http://carlosbecker.com +Packager: Carlos A Becker BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root diff --git a/rpm/testdata/spec_4.13.x.golden b/rpm/testdata/spec_4.13.x.golden index 0a78508..4c110a1 100644 --- a/rpm/testdata/spec_4.13.x.golden +++ b/rpm/testdata/spec_4.13.x.golden @@ -13,6 +13,7 @@ License: MIT Group: Development/Tools SOURCE0 : %{name}-%{version}.tar.gz URL: http://carlosbecker.com +Packager: Carlos A Becker BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root diff --git a/rpm/testdata/spec_4.14.x.golden b/rpm/testdata/spec_4.14.x.golden index 0a78508..4c110a1 100644 --- a/rpm/testdata/spec_4.14.x.golden +++ b/rpm/testdata/spec_4.14.x.golden @@ -13,6 +13,7 @@ License: MIT Group: Development/Tools SOURCE0 : %{name}-%{version}.tar.gz URL: http://carlosbecker.com +Packager: Carlos A Becker BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root