Provides is a _list_.

This commit is contained in:
Andrey Smirnov
2014-01-09 20:07:00 +04:00
parent 10da8330b0
commit 645bba1924
4 changed files with 11 additions and 13 deletions
+2 -2
View File
@@ -188,8 +188,8 @@ func (l *PackageIndexedList) PrepareIndex() {
l.providesList = make(map[string][]*Package, 128) l.providesList = make(map[string][]*Package, 128)
for _, p := range l.packages { for _, p := range l.packages {
if p.Provides != "" { for _, provides := range p.Provides {
l.providesList[p.Provides] = append(l.providesList[p.Provides], p) l.providesList[provides] = append(l.providesList[provides], p)
} }
} }
} }
+1 -1
View File
@@ -162,7 +162,7 @@ func (s *PackageIndexedListSuite) SetUpTest(c *C) {
&Package{Name: "dpkg", Version: "1.7", Architecture: "i386"}, &Package{Name: "dpkg", Version: "1.7", Architecture: "i386"},
&Package{Name: "data", Version: "1.1~bp1", Architecture: "all", PreDepends: []string{"dpkg (>= 1.6)"}}, &Package{Name: "data", Version: "1.1~bp1", Architecture: "all", PreDepends: []string{"dpkg (>= 1.6)"}},
&Package{Name: "app", Version: "1.1~bp1", Architecture: "i386", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}}, &Package{Name: "app", Version: "1.1~bp1", Architecture: "i386", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}},
&Package{Name: "mailer", Version: "3.5.8", Architecture: "i386", Provides: "mail-agent"}, &Package{Name: "mailer", Version: "3.5.8", Architecture: "i386", Provides: []string{"mail-agent"}},
&Package{Name: "app", Version: "1.1~bp1", Architecture: "amd64", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}}, &Package{Name: "app", Version: "1.1~bp1", Architecture: "amd64", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}},
&Package{Name: "app", Version: "1.1~bp1", Architecture: "arm", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9) | libx (>= 1.5)", "data (>= 1.0) | mail-agent"}}, &Package{Name: "app", Version: "1.1~bp1", Architecture: "arm", PreDepends: []string{"dpkg (>= 1.6)"}, Depends: []string{"lib (>> 0.9) | libx (>= 1.5)", "data (>= 1.0) | mail-agent"}},
&Package{Name: "app", Version: "1.0", Architecture: "s390", PreDepends: []string{"dpkg >= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}}, &Package{Name: "app", Version: "1.0", Architecture: "s390", PreDepends: []string{"dpkg >= 1.6)"}, Depends: []string{"lib (>> 0.9)", "data (>= 1.0)"}},
+6 -8
View File
@@ -41,7 +41,7 @@ type Package struct {
Version string Version string
Architecture string Architecture string
Source string Source string
Provides string Provides []string
// Various dependencies // Various dependencies
Depends []string Depends []string
PreDepends []string PreDepends []string
@@ -75,7 +75,6 @@ func NewPackageFromControlFile(input Stanza) *Package {
Version: input["Version"], Version: input["Version"],
Architecture: input["Architecture"], Architecture: input["Architecture"],
Source: input["Source"], Source: input["Source"],
Provides: input["Provides"],
Files: make([]PackageFile, 0, 1), Files: make([]PackageFile, 0, 1),
} }
@@ -83,7 +82,6 @@ func NewPackageFromControlFile(input Stanza) *Package {
delete(input, "Version") delete(input, "Version")
delete(input, "Architecture") delete(input, "Architecture")
delete(input, "Source") delete(input, "Source")
delete(input, "Provides")
filesize, _ := strconv.ParseInt(input["Size"], 10, 64) filesize, _ := strconv.ParseInt(input["Size"], 10, 64)
@@ -107,6 +105,7 @@ func NewPackageFromControlFile(input Stanza) *Package {
result.PreDepends = parseDependencies(input, "Pre-Depends") result.PreDepends = parseDependencies(input, "Pre-Depends")
result.Suggests = parseDependencies(input, "Suggests") result.Suggests = parseDependencies(input, "Suggests")
result.Recommends = parseDependencies(input, "Recommends") result.Recommends = parseDependencies(input, "Recommends")
result.Provides = parseDependencies(input, "Provides")
result.Extra = input result.Extra = input
@@ -174,10 +173,6 @@ func (p *Package) Stanza() (result Stanza) {
result["Architecture"] = p.Architecture result["Architecture"] = p.Architecture
result["Source"] = p.Source result["Source"] = p.Source
if p.Provides != "" {
result["Provides"] = p.Provides
}
if p.Files[0].Checksums.MD5 != "" { if p.Files[0].Checksums.MD5 != "" {
result["MD5sum"] = p.Files[0].Checksums.MD5 result["MD5sum"] = p.Files[0].Checksums.MD5
} }
@@ -200,6 +195,9 @@ func (p *Package) Stanza() (result Stanza) {
if p.Recommends != nil { if p.Recommends != nil {
result["Recommends"] = strings.Join(p.Recommends, ", ") result["Recommends"] = strings.Join(p.Recommends, ", ")
} }
if p.Provides != nil {
result["Provides"] = strings.Join(p.Provides, ", ")
}
result["Size"] = fmt.Sprintf("%d", p.Files[0].Checksums.Size) result["Size"] = fmt.Sprintf("%d", p.Files[0].Checksums.Size)
@@ -222,7 +220,7 @@ func (p *Package) Equals(p2 *Package) bool {
p.Architecture == p2.Architecture && utils.StrSlicesEqual(p.Depends, p2.Depends) && p.Architecture == p2.Architecture && utils.StrSlicesEqual(p.Depends, p2.Depends) &&
utils.StrSlicesEqual(p.PreDepends, p2.PreDepends) && utils.StrSlicesEqual(p.Suggests, p2.Suggests) && utils.StrSlicesEqual(p.PreDepends, p2.PreDepends) && utils.StrSlicesEqual(p.Suggests, p2.Suggests) &&
utils.StrSlicesEqual(p.Recommends, p2.Recommends) && utils.StrMapsEqual(p.Extra, p2.Extra) && utils.StrSlicesEqual(p.Recommends, p2.Recommends) && utils.StrMapsEqual(p.Extra, p2.Extra) &&
p.Source == p2.Source && p.Provides == p2.Provides p.Source == p2.Source && utils.StrSlicesEqual(p.Provides, p2.Provides)
} }
// LinkFromPool links package file from pool to dist's pool location // LinkFromPool links package file from pool to dist's pool location
+2 -2
View File
@@ -52,7 +52,7 @@ func (s *PackageSuite) TestNewFromPara(c *C) {
c.Check(p.Name, Equals, "alien-arena-common") c.Check(p.Name, Equals, "alien-arena-common")
c.Check(p.Version, Equals, "7.40-2") c.Check(p.Version, Equals, "7.40-2")
c.Check(p.Architecture, Equals, "i386") c.Check(p.Architecture, Equals, "i386")
c.Check(p.Provides, Equals, "") c.Check(p.Provides, DeepEquals, []string(nil))
c.Check(p.Files, HasLen, 1) c.Check(p.Files, HasLen, 1)
c.Check(p.Files[0].Filename, Equals, "pool/contrib/a/alien-arena/alien-arena-common_7.40-2_i386.deb") c.Check(p.Files[0].Filename, Equals, "pool/contrib/a/alien-arena/alien-arena-common_7.40-2_i386.deb")
c.Check(p.Files[0].Checksums.Size, Equals, int64(187518)) c.Check(p.Files[0].Checksums.Size, Equals, int64(187518))
@@ -65,7 +65,7 @@ func (s *PackageSuite) TestWithProvides(c *C) {
p := NewPackageFromControlFile(s.stanza) p := NewPackageFromControlFile(s.stanza)
c.Check(p.Name, Equals, "alien-arena-common") c.Check(p.Name, Equals, "alien-arena-common")
c.Check(p.Provides, Equals, "arena") c.Check(p.Provides, DeepEquals, []string{"arena"})
st := p.Stanza() st := p.Stanza()
c.Check(st["Provides"], Equals, "arena") c.Check(st["Provides"], Equals, "arena")