@@ -74,7 +74,7 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
74
74
// Pick the first dependency in the deps to process
75
75
dep := depsToProcess [0 ]
76
76
depName := dep .GetName ()
77
- debug ("Considering next dep: %s" , dep )
77
+ debug ("Considering next dep: %s" , depName )
78
78
79
79
// If a release is already picked in the solution check if it match the dep
80
80
if existingRelease , has := solution [depName ]; has {
@@ -92,11 +92,27 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
92
92
// Consider the latest versions first
93
93
releases .SortDescent ()
94
94
95
+ findMissingDeps := func (deps []Dependency ) Dependency {
96
+ for _ , dep := range deps {
97
+ if _ , ok := ar .Releases [dep .GetName ()]; ! ok {
98
+ return dep
99
+ }
100
+ }
101
+ return nil
102
+ }
103
+
95
104
debug ("releases matching criteria: %s" , releases )
96
105
for _ , release := range releases {
97
- debug ("try with %s %s" , release , release .GetDependencies ())
106
+ deps := release .GetDependencies ()
107
+ debug ("try with %s %s" , release , deps )
108
+
109
+ if missingDep := findMissingDeps (deps ); missingDep != nil {
110
+ debug ("%s did not work, becuase his dependency %s does not exists" , release , missingDep .GetName ())
111
+ continue
112
+ }
113
+
98
114
solution [depName ] = release
99
- res := ar .resolve (solution , append (depsToProcess [1 :], release . GetDependencies () ... ))
115
+ res := ar .resolve (solution , append (depsToProcess [1 :], deps ... ))
100
116
if res != nil {
101
117
return res
102
118
}
0 commit comments