mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-05 22:08:27 +00:00
Package MatchesArchitecture, Provides.
This commit is contained in:
24
debian/package.go
vendored
24
debian/package.go
vendored
@@ -41,6 +41,7 @@ type Package struct {
|
|||||||
Version string
|
Version string
|
||||||
Architecture string
|
Architecture string
|
||||||
Source string
|
Source string
|
||||||
|
Provides string
|
||||||
// Various dependencies
|
// Various dependencies
|
||||||
Depends []string
|
Depends []string
|
||||||
PreDepends []string
|
PreDepends []string
|
||||||
@@ -60,7 +61,11 @@ func parseDependencies(input Stanza, key string) []string {
|
|||||||
|
|
||||||
delete(input, key)
|
delete(input, key)
|
||||||
|
|
||||||
return strings.Split(value, ", ")
|
result := strings.Split(value, ",")
|
||||||
|
for i := range result {
|
||||||
|
result[i] = strings.TrimSpace(result[i])
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewPackageFromControlFile creates Package from parsed Debian control file
|
// NewPackageFromControlFile creates Package from parsed Debian control file
|
||||||
@@ -70,6 +75,7 @@ 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),
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,6 +83,7 @@ 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)
|
||||||
|
|
||||||
@@ -132,6 +139,15 @@ func (p *Package) String() string {
|
|||||||
return fmt.Sprintf("%s-%s_%s", p.Name, p.Version, p.Architecture)
|
return fmt.Sprintf("%s-%s_%s", p.Name, p.Version, p.Architecture)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MatchesArchitecture checks whether packages matches specified architecture
|
||||||
|
func (p *Package) MatchesArchitecture(arch string) bool {
|
||||||
|
if p.Architecture == "all" {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
return p.Architecture == arch
|
||||||
|
}
|
||||||
|
|
||||||
// Stanza creates original stanza from package
|
// Stanza creates original stanza from package
|
||||||
func (p *Package) Stanza() (result Stanza) {
|
func (p *Package) Stanza() (result Stanza) {
|
||||||
result = p.Extra.Copy()
|
result = p.Extra.Copy()
|
||||||
@@ -141,6 +157,10 @@ 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
|
||||||
}
|
}
|
||||||
@@ -185,7 +205,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.Source == p2.Source && 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
|
||||||
|
|||||||
24
debian/package_test.go
vendored
24
debian/package_test.go
vendored
@@ -52,6 +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.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))
|
||||||
@@ -59,6 +60,17 @@ func (s *PackageSuite) TestNewFromPara(c *C) {
|
|||||||
c.Check(p.Depends, DeepEquals, []string{"libc6 (>= 2.7)", "alien-arena-data (>= 7.40)"})
|
c.Check(p.Depends, DeepEquals, []string{"libc6 (>= 2.7)", "alien-arena-data (>= 7.40)"})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PackageSuite) TestWithProvides(c *C) {
|
||||||
|
s.stanza["Provides"] = "arena"
|
||||||
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
|
|
||||||
|
c.Check(p.Name, Equals, "alien-arena-common")
|
||||||
|
c.Check(p.Provides, Equals, "arena")
|
||||||
|
|
||||||
|
st := p.Stanza()
|
||||||
|
c.Check(st["Provides"], Equals, "arena")
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PackageSuite) TestKey(c *C) {
|
func (s *PackageSuite) TestKey(c *C) {
|
||||||
p := NewPackageFromControlFile(s.stanza)
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
|
|
||||||
@@ -101,6 +113,18 @@ func (s *PackageSuite) TestEquals(c *C) {
|
|||||||
c.Check(p.Equals(p2), Equals, false)
|
c.Check(p.Equals(p2), Equals, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *PackageSuite) TestMatchesArchitecture(c *C) {
|
||||||
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
|
c.Check(p.MatchesArchitecture("i386"), Equals, true)
|
||||||
|
c.Check(p.MatchesArchitecture("amd64"), Equals, false)
|
||||||
|
|
||||||
|
s.stanza = packageStanza.Copy()
|
||||||
|
s.stanza["Architecture"] = "all"
|
||||||
|
p = NewPackageFromControlFile(s.stanza)
|
||||||
|
c.Check(p.MatchesArchitecture("i386"), Equals, true)
|
||||||
|
c.Check(p.MatchesArchitecture("amd64"), Equals, true)
|
||||||
|
}
|
||||||
|
|
||||||
func (s *PackageSuite) TestPoolDirectory(c *C) {
|
func (s *PackageSuite) TestPoolDirectory(c *C) {
|
||||||
p := NewPackageFromControlFile(s.stanza)
|
p := NewPackageFromControlFile(s.stanza)
|
||||||
dir, err := p.PoolDirectory()
|
dir, err := p.PoolDirectory()
|
||||||
|
|||||||
2
debian/publish.go
vendored
2
debian/publish.go
vendored
@@ -97,7 +97,7 @@ func (p *PublishedRepo) Publish(repo *Repository, packageCollection *PackageColl
|
|||||||
bufWriter := bufio.NewWriter(packagesFile)
|
bufWriter := bufio.NewWriter(packagesFile)
|
||||||
|
|
||||||
err = list.ForEach(func(pkg *Package) error {
|
err = list.ForEach(func(pkg *Package) error {
|
||||||
if pkg.Architecture == arch || pkg.Architecture == "all" {
|
if pkg.MatchesArchitecture(arch) {
|
||||||
err = pkg.LinkFromPool(repo, p.Prefix, p.Component)
|
err = pkg.LinkFromPool(repo, p.Prefix, p.Component)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
Reference in New Issue
Block a user