drrb / puppet-library

A private Puppet Forge
GNU General Public License v3.0
87 stars 20 forks source link

Dependency resolution problem when dependencies in different forges #8

Closed slaws closed 10 years ago

slaws commented 10 years ago

Hello,

It seems there is a dependency resolution when a module and its dependencies are on the same kind of forge.

An exemple may be clearer :) When proxying puppetforge :

forge :proxy do
   url "http://forge.puppetlabs.com"
end

Trying to install puppetlabs-concat, releases.json returns :

{"puppetlabs/concat":
    [
        {"file":"/modules/puppetlabs-concat-1.0.0-rc1.tar.gz",
         "version":"1.0.0-rc1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.0.tar.gz",
         "version":"1.0.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.1.tar.gz",
         "version":"1.0.1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.2.tar.gz",
         "version":"1.0.2",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.3.tar.gz",
         "version":"1.0.3",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.1.0-rc1.tar.gz",
         "version":"1.1.0-rc1",
         "dependencies":[["puppetlabs/stdlib",">= 3.0.0"]]},
        {"file":"/modules/puppetlabs-concat-1.1.0.tar.gz",
         "version":"1.1.0",
         "dependencies":[["puppetlabs/stdlib",">= 4.0.0"]]}
    ],
 "puppetlabs/stdlib":
    [
        {"file":"/modules/puppetlabs-stdlib-3.0.0.tar.gz",
         "version":"3.0.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.0.1.tar.gz",
         "version":"3.0.1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.1.0.tar.gz",
         "version":"3.1.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.1.1.tar.gz",
         "version":"3.1.1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.2.0.tar.gz",
         "version":"3.2.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.2.1.tar.gz",
         "version":"3.2.1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-3.2.2.tar.gz",
         "version":"3.2.2",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-4.1.0.tar.gz",
         "version":"4.1.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-4.2.0.tar.gz",
         "version":"4.2.0",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-4.2.1.tar.gz",
         "version":"4.2.1",
         "dependencies":[]},
        {"file":"/modules/puppetlabs-stdlib-4.2.2.tar.gz",
         "version":"4.2.2",
         "dependencies":[]}
    ]
}

If I remove the proxy and set up 2 git repository for these modules :

forge :git_repository do
     source https://github.com/puppetlabs/puppetlabs-concat.git
     include_tags /.*/
 end
forge :git_repository do
     source https://github.com/puppetlabs/puppetlabs-stdlib.git
     include_tags /.*/
 end

releases.json returns :

{"puppetlabs/concat":
    [
        {"file":"/modules/puppetlabs-concat-1.0.0-rc1.tar.gz",
        "version":"1.0.0-rc1",
        "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.0.tar.gz",
        "version":"1.0.0",
        "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.1.tar.gz",
        "version":"1.0.1",
        "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.2.tar.gz",
        "version":"1.0.2",
        "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.0.3.tar.gz",
        "version":"1.0.3",
        "dependencies":[]},
        {"file":"/modules/puppetlabs-concat-1.1.0-rc1.tar.gz",
        "version":"1.1.0-rc1",
        "dependencies":[["puppetlabs/stdlib",">= 3.0.0"]]},
        {"file":"/modules/puppetlabs-concat-1.1.0.tar.gz",
        "version":"1.1.0",
        "dependencies":[["puppetlabs/stdlib",">= 4.0.0"]]}],
 "puppetlabs/stdlib":
    []
}

This problem seems to be present at least since 0.13.0.

drrb commented 10 years ago

Thanks for the report. Reproduced with above config. The general case is when a module and its dependency are in two different forges.

drrb commented 10 years ago

Fixed in da9608a3c649002ebc03b2f4f9481465e8742ec4

drrb commented 10 years ago

Released in v0.16.0.