@@ -74,7 +74,7 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
7474 // Pick the first dependency in the deps to process
7575 dep := depsToProcess [0 ]
7676 depName := dep .GetName ()
77- debug ("Considering next dep: %s" , dep )
77+ debug ("Considering next dep: %s" , depName )
7878
7979 // If a release is already picked in the solution check if it match the dep
8080 if existingRelease , has := solution [depName ]; has {
@@ -92,11 +92,27 @@ func (ar *Archive) resolve(solution map[string]Release, depsToProcess []Dependen
9292 // Consider the latest versions first
9393 releases .SortDescent ()
9494
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+
95104 debug ("releases matching criteria: %s" , releases )
96105 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+
98114 solution [depName ] = release
99- res := ar .resolve (solution , append (depsToProcess [1 :], release . GetDependencies () ... ))
115+ res := ar .resolve (solution , append (depsToProcess [1 :], deps ... ))
100116 if res != nil {
101117 return res
102118 }
0 commit comments