From d9992587440a94e33d505b38152d82b2259e90af Mon Sep 17 00:00:00 2001 From: Andrey Smirnov Date: Mon, 17 Feb 2014 11:41:33 +0400 Subject: [PATCH] "all" architecture doesn't match "source", fix for missing checksums while publishing. --- debian/package.go | 18 ++++++++++++------ debian/package_test.go | 5 +++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/debian/package.go b/debian/package.go index 4c9b20b5..5ce469a4 100644 --- a/debian/package.go +++ b/debian/package.go @@ -227,7 +227,7 @@ func (p *Package) String() string { // MatchesArchitecture checks whether packages matches specified architecture func (p *Package) MatchesArchitecture(arch string) bool { - if p.Architecture == "all" { + if p.Architecture == "all" && arch != "source" { return true } @@ -265,13 +265,19 @@ func (p *Package) Stanza() (result Stanza) { } if p.IsSource { - md5, sha1, sha256 := make([]string, len(p.Files)), make([]string, len(p.Files)), make([]string, len(p.Files)) + md5, sha1, sha256 := make([]string, 0), make([]string, 0), make([]string, 0) - for i, f := range p.Files { + for _, f := range p.Files { base := filepath.Base(f.Filename) - md5[i] = fmt.Sprintf(" %s %d %s\n", f.Checksums.MD5, f.Checksums.Size, base) - sha1[i] = fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA1, f.Checksums.Size, base) - sha256[i] = fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA256, f.Checksums.Size, base) + if f.Checksums.MD5 != "" { + md5 = append(md5, fmt.Sprintf(" %s %d %s\n", f.Checksums.MD5, f.Checksums.Size, base)) + } + if f.Checksums.SHA1 != "" { + sha1 = append(sha1, fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA1, f.Checksums.Size, base)) + } + if f.Checksums.SHA256 != "" { + sha256 = append(sha256, fmt.Sprintf(" %s %d %s\n", f.Checksums.SHA256, f.Checksums.Size, base)) + } } result["Files"] = strings.Join(md5, "") diff --git a/debian/package_test.go b/debian/package_test.go index 0392964b..ded74ec5 100644 --- a/debian/package_test.go +++ b/debian/package_test.go @@ -177,6 +177,11 @@ func (s *PackageSuite) TestMatchesArchitecture(c *C) { p = NewPackageFromControlFile(s.stanza) c.Check(p.MatchesArchitecture("i386"), Equals, true) c.Check(p.MatchesArchitecture("amd64"), Equals, true) + c.Check(p.MatchesArchitecture("source"), Equals, false) + + p, _ = NewSourcePackageFromControlFile(s.sourceStanza) + c.Check(p.MatchesArchitecture("source"), Equals, true) + c.Check(p.MatchesArchitecture("amd64"), Equals, false) } func (s *PackageSuite) TestGetDependencies(c *C) {