When loading package index for the mirror, ignore duplicate packages (and print about them). #183

This commit is contained in:
Andrey Smirnov
2015-01-31 21:27:26 +03:00
parent 0412646151
commit 403c7272cd
2 changed files with 11 additions and 2 deletions

View File

@@ -38,6 +38,11 @@ type PackageList struct {
providesIndex map[string][]*Package
}
// PackageConflictError means that package can't be added to the list due to error
type PackageConflictError struct {
error
}
// Verify interface
var (
_ sort.Interface = &PackageList{}
@@ -90,7 +95,7 @@ func (l *PackageList) Add(p *Package) error {
existing, ok := l.packages[key]
if ok {
if !existing.Equals(p) {
return fmt.Errorf("conflict in package %s", p)
return &PackageConflictError{fmt.Errorf("conflict in package %s", p)}
}
return nil
}

View File

@@ -468,7 +468,11 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly.
}
err = repo.packageList.Add(p)
if err != nil {
return err
if _, ok := err.(*PackageConflictError); ok {
progress.ColoredPrintf("@y[!]@| @!skipping package %s: duplicate in packages index@|", p)
} else {
return err
}
}
err = collectionFactory.PackageCollection().Update(p)