mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-04-20 19:38:39 +00:00
Add new option for detailed logging on dependency resolving
This adds command-line arg and config option, with option enabled aptly is more verbose on internal depeendency resolving cycles: ``` Missing dependencies: file-rc (>= 0.8.16) [amd64], python:any (>= 2.7.1-0ubuntu2) [amd64], python3:any (>= 3.3.2-2~) [amd64], file-rc [amd64], perl (<< 5.17) [amd64], iptables-router (>= 1.2.3) [amd64], systemd [amd64], sgml-base (>= 1.26+nmu2) [amd64], sed (>= 4.1.2-8) [amd64] Unsatisfied dependency: file-rc (>= 0.8.16) [amd64] Unsatisfied dependency: python:any (>= 2.7.1-0ubuntu2) [amd64] Unsatisfied dependency: python3:any (>= 3.3.2-2~) [amd64] Unsatisfied dependency: file-rc [amd64] Unsatisfied dependency: perl (<< 5.17) [amd64] Unsatisfied dependency: iptables-router (>= 1.2.3) [amd64] Unsatisfied dependency: systemd [amd64] Injecting package: sgml-base_1.26+nmu4ubuntu1_all Injecting package: sed_4.2.2-4ubuntu1_amd64 ```
This commit is contained in:
@@ -113,6 +113,7 @@ package environment to new version.`,
|
|||||||
cmd.Flag.Bool("dep-follow-source", false, "when processing dependencies, follow from binary to Source packages")
|
cmd.Flag.Bool("dep-follow-source", false, "when processing dependencies, follow from binary to Source packages")
|
||||||
cmd.Flag.Bool("dep-follow-recommends", false, "when processing dependencies, follow Recommends")
|
cmd.Flag.Bool("dep-follow-recommends", false, "when processing dependencies, follow Recommends")
|
||||||
cmd.Flag.Bool("dep-follow-all-variants", false, "when processing dependencies, follow a & b if dependency is 'a|b'")
|
cmd.Flag.Bool("dep-follow-all-variants", false, "when processing dependencies, follow a & b if dependency is 'a|b'")
|
||||||
|
cmd.Flag.Bool("dep-verbose-resolve", false, "when processing dependencies, print detailed logs")
|
||||||
cmd.Flag.String("architectures", "", "list of architectures to consider during (comma-separated), default to all available")
|
cmd.Flag.String("architectures", "", "list of architectures to consider during (comma-separated), default to all available")
|
||||||
cmd.Flag.String("config", "", "location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)")
|
cmd.Flag.String("config", "", "location of configuration file (default locations are /etc/aptly.conf, ~/.aptly.conf)")
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ func aptlyMirrorUpdate(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var oldLen, newLen int
|
var oldLen, newLen int
|
||||||
oldLen, newLen, err = repo.ApplyFilter(context.DependencyOptions(), filterQuery)
|
oldLen, newLen, err = repo.ApplyFilter(context.DependencyOptions(), filterQuery, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to update: %s", err)
|
return fmt.Errorf("unable to update: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ func aptlyRepoMoveCopyImport(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
toProcess, err := srcList.Filter(queries, withDeps, dstList, context.DependencyOptions(), architecturesList)
|
toProcess, err := srcList.FilterWithProgress(queries, withDeps, dstList, context.DependencyOptions(), architecturesList, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to %s: %s", command, err)
|
return fmt.Errorf("unable to %s: %s", command, err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ func aptlySnapshotFilter(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Filter with dependencies as requested
|
// Filter with dependencies as requested
|
||||||
result, err := packageList.Filter(queries, withDeps, nil, context.DependencyOptions(), architecturesList)
|
result, err := packageList.FilterWithProgress(queries, withDeps, nil, context.DependencyOptions(), architecturesList, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to filter: %s", err)
|
return fmt.Errorf("unable to filter: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ func aptlySnapshotPull(cmd *commander.Command, args []string) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Filter with dependencies as requested
|
// Filter with dependencies as requested
|
||||||
result, err := sourcePackageList.Filter(queries, !noDeps, packageList, context.DependencyOptions(), architecturesList)
|
result, err := sourcePackageList.FilterWithProgress(queries, !noDeps, packageList, context.DependencyOptions(), architecturesList, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to pull: %s", err)
|
return fmt.Errorf("unable to pull: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ func aptlySnapshotMirrorRepoSearch(cmd *commander.Command, args []string) error
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
result, err := list.Filter([]deb.PackageQuery{q}, withDeps,
|
result, err := list.FilterWithProgress([]deb.PackageQuery{q}, withDeps,
|
||||||
nil, context.DependencyOptions(), architecturesList)
|
nil, context.DependencyOptions(), architecturesList, context.Progress())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("unable to search: %s", err)
|
return fmt.Errorf("unable to search: %s", err)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -149,6 +149,9 @@ func (context *AptlyContext) DependencyOptions() int {
|
|||||||
if context.lookupOption(context.config().DepFollowSource, "dep-follow-source") {
|
if context.lookupOption(context.config().DepFollowSource, "dep-follow-source") {
|
||||||
context.dependencyOptions |= deb.DepFollowSource
|
context.dependencyOptions |= deb.DepFollowSource
|
||||||
}
|
}
|
||||||
|
if context.lookupOption(context.config().DepVerboseResolve, "dep-verbose-resolve") {
|
||||||
|
context.dependencyOptions |= deb.DepVerboseResolve
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return context.dependencyOptions
|
return context.dependencyOptions
|
||||||
|
|||||||
28
deb/list.go
28
deb/list.go
@@ -3,6 +3,7 @@ package deb
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/smira/aptly/aptly"
|
"github.com/smira/aptly/aptly"
|
||||||
"github.com/smira/aptly/utils"
|
"github.com/smira/aptly/utils"
|
||||||
@@ -20,6 +21,8 @@ const (
|
|||||||
DepFollowAllVariants
|
DepFollowAllVariants
|
||||||
// DepFollowBuild pulls build dependencies
|
// DepFollowBuild pulls build dependencies
|
||||||
DepFollowBuild
|
DepFollowBuild
|
||||||
|
// DepVerboseResolve emits additional logs while dependencies are being resolved
|
||||||
|
DepVerboseResolve
|
||||||
)
|
)
|
||||||
|
|
||||||
// PackageList is list of unique (by key) packages
|
// PackageList is list of unique (by key) packages
|
||||||
@@ -346,6 +349,14 @@ func (l *PackageList) VerifyDependencies(options int, architectures []string, so
|
|||||||
progress.ShutdownBar()
|
progress.ShutdownBar()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options&DepVerboseResolve == DepVerboseResolve && progress != nil {
|
||||||
|
missingStr := make([]string, len(missing))
|
||||||
|
for i := range missing {
|
||||||
|
missingStr[i] = missing[i].String()
|
||||||
|
}
|
||||||
|
progress.ColoredPrintf("@{y}Missing dependencies:@| %s", strings.Join(missingStr, ", "))
|
||||||
|
}
|
||||||
|
|
||||||
return missing, nil
|
return missing, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,6 +473,11 @@ func (l *PackageList) Search(dep Dependency, allMatches bool) (searchResults []*
|
|||||||
|
|
||||||
// Filter filters package index by specified queries (ORed together), possibly pulling dependencies
|
// Filter filters package index by specified queries (ORed together), possibly pulling dependencies
|
||||||
func (l *PackageList) Filter(queries []PackageQuery, withDependencies bool, source *PackageList, dependencyOptions int, architecturesList []string) (*PackageList, error) {
|
func (l *PackageList) Filter(queries []PackageQuery, withDependencies bool, source *PackageList, dependencyOptions int, architecturesList []string) (*PackageList, error) {
|
||||||
|
return l.FilterWithProgress(queries, withDependencies, source, dependencyOptions, architecturesList, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FilterWithProgress filters package index by specified queries (ORed together), possibly pulling dependencies and displays progress
|
||||||
|
func (l *PackageList) FilterWithProgress(queries []PackageQuery, withDependencies bool, source *PackageList, dependencyOptions int, architecturesList []string, progress aptly.Progress) (*PackageList, error) {
|
||||||
if !l.indexed {
|
if !l.indexed {
|
||||||
panic("list not indexed, can't filter")
|
panic("list not indexed, can't filter")
|
||||||
}
|
}
|
||||||
@@ -488,7 +504,7 @@ func (l *PackageList) Filter(queries []PackageQuery, withDependencies bool, sour
|
|||||||
added = 0
|
added = 0
|
||||||
|
|
||||||
// find missing dependencies
|
// find missing dependencies
|
||||||
missing, err := result.VerifyDependencies(dependencyOptions, architecturesList, dependencySource, nil)
|
missing, err := result.VerifyDependencies(dependencyOptions, architecturesList, dependencySource, progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -501,9 +517,12 @@ func (l *PackageList) Filter(queries []PackageQuery, withDependencies bool, sour
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
searchResults := l.Search(dep, false)
|
searchResults := l.Search(dep, true)
|
||||||
if searchResults != nil {
|
if searchResults != nil {
|
||||||
for _, p := range searchResults {
|
for _, p := range searchResults {
|
||||||
|
if dependencyOptions&DepVerboseResolve == DepVerboseResolve && progress != nil {
|
||||||
|
progress.ColoredPrintf("@{g}Injecting package@|: %s", p)
|
||||||
|
}
|
||||||
result.Add(p)
|
result.Add(p)
|
||||||
dependencySource.Add(p)
|
dependencySource.Add(p)
|
||||||
added++
|
added++
|
||||||
@@ -511,6 +530,11 @@ func (l *PackageList) Filter(queries []PackageQuery, withDependencies bool, sour
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if dependencyOptions&DepVerboseResolve == DepVerboseResolve && progress != nil {
|
||||||
|
progress.ColoredPrintf("@{r}Unsatisfied dependency@|: %s", dep.String())
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,14 +491,14 @@ func (repo *RemoteRepo) DownloadPackageIndexes(progress aptly.Progress, d aptly.
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ApplyFilter applies filtering to already built PackageList
|
// ApplyFilter applies filtering to already built PackageList
|
||||||
func (repo *RemoteRepo) ApplyFilter(dependencyOptions int, filterQuery PackageQuery) (oldLen, newLen int, err error) {
|
func (repo *RemoteRepo) ApplyFilter(dependencyOptions int, filterQuery PackageQuery, progress aptly.Progress) (oldLen, newLen int, err error) {
|
||||||
repo.packageList.PrepareIndex()
|
repo.packageList.PrepareIndex()
|
||||||
|
|
||||||
emptyList := NewPackageList()
|
emptyList := NewPackageList()
|
||||||
emptyList.PrepareIndex()
|
emptyList.PrepareIndex()
|
||||||
|
|
||||||
oldLen = repo.packageList.Len()
|
oldLen = repo.packageList.Len()
|
||||||
repo.packageList, err = repo.packageList.Filter([]PackageQuery{filterQuery}, repo.FilterWithDeps, emptyList, dependencyOptions, repo.Architectures)
|
repo.packageList, err = repo.packageList.FilterWithProgress([]PackageQuery{filterQuery}, repo.FilterWithDeps, emptyList, dependencyOptions, repo.Architectures, progress)
|
||||||
if repo.packageList != nil {
|
if repo.packageList != nil {
|
||||||
newLen = repo.packageList.Len()
|
newLen = repo.packageList.Len()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ Configuration file is stored in JSON format (default values shown below):
|
|||||||
"dependencyFollowRecommends": false,
|
"dependencyFollowRecommends": false,
|
||||||
"dependencyFollowAllVariants": false,
|
"dependencyFollowAllVariants": false,
|
||||||
"dependencyFollowSource": false,
|
"dependencyFollowSource": false,
|
||||||
|
"dependencyVerboseResolve": false,
|
||||||
"gpgDisableSign": false,
|
"gpgDisableSign": false,
|
||||||
"gpgDisableVerify": false,
|
"gpgDisableVerify": false,
|
||||||
"downloadSourcePackages": false,
|
"downloadSourcePackages": false,
|
||||||
@@ -119,6 +120,10 @@ when dependency looks like \fBpackage\-a | package\-b\fR, follow both variants a
|
|||||||
follow dependency from binary package to source package
|
follow dependency from binary package to source package
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
|
\fBdependencyVerboseResolve\fR
|
||||||
|
print additional details while resolving dependencies (useful for debugging)
|
||||||
|
.
|
||||||
|
.TP
|
||||||
\fBgpgDisableSign\fR
|
\fBgpgDisableSign\fR
|
||||||
don\(cqt sign published repositories with gpg(1), also can be disabled on per\-repo basis using \fB\-skip\-signing\fR flag when publishing
|
don\(cqt sign published repositories with gpg(1), also can be disabled on per\-repo basis using \fB\-skip\-signing\fR flag when publishing
|
||||||
.
|
.
|
||||||
@@ -361,6 +366,10 @@ when processing dependencies, follow from binary to Source packages
|
|||||||
\-\fBdep\-follow\-suggests\fR=false
|
\-\fBdep\-follow\-suggests\fR=false
|
||||||
when processing dependencies, follow Suggests
|
when processing dependencies, follow Suggests
|
||||||
.
|
.
|
||||||
|
.TP
|
||||||
|
\-\fBdep\-verbose\-resolve\fR=false
|
||||||
|
when processing dependencies, print detailed logs
|
||||||
|
.
|
||||||
.SH "CREATE NEW MIRROR"
|
.SH "CREATE NEW MIRROR"
|
||||||
\fBaptly\fR \fBmirror\fR \fBcreate\fR \fIname\fR \fIarchive url\fR \fIdistribution\fR [\fIcomponent1\fR \|\.\|\.\|\.]
|
\fBaptly\fR \fBmirror\fR \fBcreate\fR \fIname\fR \fIarchive url\fR \fIdistribution\fR [\fIcomponent1\fR \|\.\|\.\|\.]
|
||||||
.
|
.
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ Configuration file is stored in JSON format (default values shown below):
|
|||||||
"dependencyFollowRecommends": false,
|
"dependencyFollowRecommends": false,
|
||||||
"dependencyFollowAllVariants": false,
|
"dependencyFollowAllVariants": false,
|
||||||
"dependencyFollowSource": false,
|
"dependencyFollowSource": false,
|
||||||
|
"dependencyVerboseResolve": false,
|
||||||
"gpgDisableSign": false,
|
"gpgDisableSign": false,
|
||||||
"gpgDisableVerify": false,
|
"gpgDisableVerify": false,
|
||||||
"downloadSourcePackages": false,
|
"downloadSourcePackages": false,
|
||||||
@@ -99,6 +100,9 @@ Options:
|
|||||||
* `dependencyFollowSource`:
|
* `dependencyFollowSource`:
|
||||||
follow dependency from binary package to source package
|
follow dependency from binary package to source package
|
||||||
|
|
||||||
|
* `dependencyVerboseResolve`:
|
||||||
|
print additional details while resolving dependencies (useful for debugging)
|
||||||
|
|
||||||
* `gpgDisableSign`:
|
* `gpgDisableSign`:
|
||||||
don't sign published repositories with gpg(1), also can be disabled on
|
don't sign published repositories with gpg(1), also can be disabled on
|
||||||
per-repo basis using `-skip-signing` flag when publishing
|
per-repo basis using `-skip-signing` flag when publishing
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"dependencyFollowRecommends": false,
|
"dependencyFollowRecommends": false,
|
||||||
"dependencyFollowAllVariants": false,
|
"dependencyFollowAllVariants": false,
|
||||||
"dependencyFollowSource": false,
|
"dependencyFollowSource": false,
|
||||||
|
"dependencyVerboseResolve": false,
|
||||||
"gpgDisableSign": false,
|
"gpgDisableSign": false,
|
||||||
"gpgDisableVerify": false,
|
"gpgDisableVerify": false,
|
||||||
"downloadSourcePackages": false,
|
"downloadSourcePackages": false,
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
"dependencyFollowRecommends": false,
|
"dependencyFollowRecommends": false,
|
||||||
"dependencyFollowAllVariants": false,
|
"dependencyFollowAllVariants": false,
|
||||||
"dependencyFollowSource": false,
|
"dependencyFollowSource": false,
|
||||||
|
"dependencyVerboseResolve": false,
|
||||||
"gpgDisableSign": false,
|
"gpgDisableSign": false,
|
||||||
"gpgDisableVerify": false,
|
"gpgDisableVerify": false,
|
||||||
"downloadSourcePackages": false,
|
"downloadSourcePackages": false,
|
||||||
|
|||||||
@@ -17,4 +17,5 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
|
|
||||||
|
|||||||
@@ -25,4 +25,5 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
ERROR: unable to parse command
|
ERROR: unable to parse command
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
-filter="": filter packages in mirror
|
-filter="": filter packages in mirror
|
||||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
-filter="": filter packages in mirror
|
-filter="": filter packages in mirror
|
||||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||||
|
|||||||
@@ -21,3 +21,4 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
|
|||||||
@@ -21,4 +21,5 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
ERROR: unable to parse command
|
ERROR: unable to parse command
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ Options:
|
|||||||
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
-dep-follow-recommends=false: when processing dependencies, follow Recommends
|
||||||
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
-dep-follow-source=false: when processing dependencies, follow from binary to Source packages
|
||||||
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
-dep-follow-suggests=false: when processing dependencies, follow Suggests
|
||||||
|
-dep-verbose-resolve=false: when processing dependencies, print detailed logs
|
||||||
-filter="": filter packages in mirror
|
-filter="": filter packages in mirror
|
||||||
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
-filter-with-deps=false: when filtering, include dependencies of matching packages as well
|
||||||
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
-force-architectures=false: (only with architecture list) skip check that requested architectures are listed in Release file
|
||||||
|
|||||||
33
system/t05_snapshot/PullSnapshot15Test_gold
Normal file
33
system/t05_snapshot/PullSnapshot15Test_gold
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
|
||||||
|
|
||||||
|
[snap1]: Snapshot from mirror [wheezy-main]: http://mirror.yandex.ru/debian/ wheezy
|
||||||
|
[snap2]: Snapshot from mirror [wheezy-backports]: http://mirror.yandex.ru/debian/ wheezy-backports
|
||||||
|
Building indexes...
|
||||||
|
Dependencies would be pulled into snapshot:
|
||||||
|
Injecting package: init-system-helpers_1.18~bpo70+1_all
|
||||||
|
Injecting package: libestr0_0.1.9-1~bpo70+1_amd64
|
||||||
|
Injecting package: libestr0_0.1.9-1~bpo70+1_i386
|
||||||
|
Injecting package: libjson-c2_0.11-3~bpo7+1_amd64
|
||||||
|
Injecting package: libjson-c2_0.11-3~bpo7+1_i386
|
||||||
|
Injecting package: liblogging-stdlog0_1.0.4-1~bpo70+1_amd64
|
||||||
|
Injecting package: liblogging-stdlog0_1.0.4-1~bpo70+1_i386
|
||||||
|
Loading packages (60863)...
|
||||||
|
Missing dependencies:
|
||||||
|
Missing dependencies: libestr0 (>= 0.1.4) [amd64], libjson-c2 (>= 0.10) [amd64], liblogging-stdlog0 (>= 1.0.1) [amd64], init-system-helpers (>= 1.18~) [amd64], libestr0 (>= 0.1.4) [i386], libjson-c2 (>= 0.10) [i386], liblogging-stdlog0 (>= 1.0.1) [i386], init-system-helpers (>= 1.18~) [i386]
|
||||||
|
Snapshot snap3 successfully created.
|
||||||
|
You can run 'aptly publish snapshot snap3' to publish snapshot as Debian repository.
|
||||||
|
[+] init-system-helpers_1.18~bpo70+1_all added
|
||||||
|
[+] libestr0_0.1.9-1~bpo70+1_amd64 added
|
||||||
|
[+] libestr0_0.1.9-1~bpo70+1_i386 added
|
||||||
|
[+] libjson-c2_0.11-3~bpo7+1_amd64 added
|
||||||
|
[+] libjson-c2_0.11-3~bpo7+1_i386 added
|
||||||
|
[+] liblogging-stdlog0_1.0.4-1~bpo70+1_amd64 added
|
||||||
|
[+] liblogging-stdlog0_1.0.4-1~bpo70+1_i386 added
|
||||||
|
[+] rsyslog_7.6.3-2~bpo70+1_amd64 added
|
||||||
|
[+] rsyslog_7.6.3-2~bpo70+1_i386 added
|
||||||
|
[-] libestr0_0.1.1-2_amd64 removed
|
||||||
|
[-] libestr0_0.1.1-2_i386 removed
|
||||||
|
[-] rsyslog_5.8.11-3_amd64 removed
|
||||||
|
[-] rsyslog_5.8.11-3_i386 removed
|
||||||
|
and result would be saved as new snapshot snap3.
|
||||||
|
from snapshot:
|
||||||
@@ -231,3 +231,16 @@ class PullSnapshot14Test(BaseTest):
|
|||||||
"aptly snapshot create sensu from mirror sensu",
|
"aptly snapshot create sensu from mirror sensu",
|
||||||
]
|
]
|
||||||
runCmd = "aptly snapshot pull -architectures=amd64,i386 -all-matches empty sensu destination 'sensu (>0.12)' 'sensu (<0.9.6)'"
|
runCmd = "aptly snapshot pull -architectures=amd64,i386 -all-matches empty sensu destination 'sensu (>0.12)' 'sensu (<0.9.6)'"
|
||||||
|
|
||||||
|
|
||||||
|
class PullSnapshot15Test(BaseTest):
|
||||||
|
"""
|
||||||
|
pull snapshot: verbose logs
|
||||||
|
"""
|
||||||
|
fixtureDB = True
|
||||||
|
fixtureCmds = [
|
||||||
|
"aptly snapshot create snap1 from mirror wheezy-main",
|
||||||
|
"aptly snapshot create snap2 from mirror wheezy-backports",
|
||||||
|
]
|
||||||
|
runCmd = "aptly snapshot pull -dep-verbose-resolve snap1 snap2 snap3 'rsyslog (>= 7.4.4)'"
|
||||||
|
outputMatchPrepare = lambda _, output: "\n".join(sorted(output.split("\n")))
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ type ConfigStructure struct {
|
|||||||
DepFollowRecommends bool `json:"dependencyFollowRecommends"`
|
DepFollowRecommends bool `json:"dependencyFollowRecommends"`
|
||||||
DepFollowAllVariants bool `json:"dependencyFollowAllVariants"`
|
DepFollowAllVariants bool `json:"dependencyFollowAllVariants"`
|
||||||
DepFollowSource bool `json:"dependencyFollowSource"`
|
DepFollowSource bool `json:"dependencyFollowSource"`
|
||||||
|
DepVerboseResolve bool `json:"dependencyVerboseResolve"`
|
||||||
GpgDisableSign bool `json:"gpgDisableSign"`
|
GpgDisableSign bool `json:"gpgDisableSign"`
|
||||||
GpgDisableVerify bool `json:"gpgDisableVerify"`
|
GpgDisableVerify bool `json:"gpgDisableVerify"`
|
||||||
DownloadSourcePackages bool `json:"downloadSourcePackages"`
|
DownloadSourcePackages bool `json:"downloadSourcePackages"`
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ func (s *ConfigSuite) TestSaveConfig(c *C) {
|
|||||||
" \"dependencyFollowRecommends\": false,\n"+
|
" \"dependencyFollowRecommends\": false,\n"+
|
||||||
" \"dependencyFollowAllVariants\": false,\n"+
|
" \"dependencyFollowAllVariants\": false,\n"+
|
||||||
" \"dependencyFollowSource\": false,\n"+
|
" \"dependencyFollowSource\": false,\n"+
|
||||||
|
" \"dependencyVerboseResolve\": false,\n"+
|
||||||
" \"gpgDisableSign\": false,\n"+
|
" \"gpgDisableSign\": false,\n"+
|
||||||
" \"gpgDisableVerify\": false,\n"+
|
" \"gpgDisableVerify\": false,\n"+
|
||||||
" \"downloadSourcePackages\": false,\n"+
|
" \"downloadSourcePackages\": false,\n"+
|
||||||
|
|||||||
Reference in New Issue
Block a user