rodjek / librarian-puppet

http://librarian-puppet.com
MIT License
694 stars 216 forks source link

Inconsistent duplicate dependency resolution #316

Open fatmcgav opened 9 years ago

fatmcgav commented 9 years ago

Afternoon

I'm currently using Librarian-Puppet 1.5.0 with librarianp 0.6.3 on a Centos 6 host which is restricted to Ruby 1.8.7...

I seem to be experiencing inconsistent dependency resolution, as per the following log: https://gist.github.com/fatmcgav/700f9d8be6950f593eb6#file-librarian-puppet-20install-20log

As you can see from the Puppetfile, all 4 modules are over-ridden from the metadata.json file.

However 2 are being resolved to the forge, and 2 to github...

Any idea how I can get all 4 to resolve to their Github links?

Cheers Gavin

carlossg commented 9 years ago

can you try in another machine with ruby 1.9+ and latest librarian-puppet version to see if it behaves differently ?

fatmcgav commented 9 years ago

It seems to resolve the dependencies as expected on my MBP running Ruby 2.2.1, librarian-puppet 2.2.0 and librarianp 0.6.3...

librarian-puppet install --clean --verbose --path /tmp/librarian-test
[Librarian] Ruby Version: 2.2.1
[Librarian] Ruby Platform: x86_64-darwin14
[Librarian] Rubygems Version: 2.4.6
[Librarian] Librarian Version: 0.6.3
[Librarian] Librarian Adapter: puppet
[Librarian] Librarian Adapter Version: 2.2.0
[Librarian] Project: /Users/gavinw/Work/Puppet/ACT-Modules/cataloguesvc
[Librarian] Specfile: Puppetfile
[Librarian] Lockfile: Puppetfile.lock
[Librarian] Git: /usr/local/bin/git
[Librarian] Git Version: 2.4.0
[Librarian] Git Environment Variables:
[Librarian]   (empty)
[Librarian] Pre-Cached Sources:
Replacing Puppet Forge API URL to use v3 https://forgeapi.puppetlabs.com. You should update your Puppetfile
[Librarian] Post-Cached Sources:
[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
[Librarian]   [:git, "git@github.com:weareact/puppet-base.git", {:ref=>"develop"}]
Dependency 'act-base' duplicated for module, merging: ["act-base (>= 0.1.0) <https://forgeapi.puppetlabs.com>", "act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>"]
[Librarian] Resolving act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>
[Librarian]   Checking manifests
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --> origin
[Librarian]     -->   origin/HEAD -> origin/develop
[Librarian]     -->   origin/develop
[Librarian]     -->   origin/feature/beaker_acceptance
[Librarian]     -->   origin/master
[Librarian]     --> fbb058d72cd59089cb363c2aa1a2926601171365
[Librarian]     --> fbb058d72cd59089cb363c2aa1a2926601171365
[Librarian]     Checking act-base/0.1.0 <git@github.com:weareact/puppet-base.git#develop>
[Librarian] Pre-Cached Sources:
Replacing Puppet Forge API URL to use v3 https://forgeapi.puppetlabs.com. You should update your Puppetfile
[Librarian] Post-Cached Sources:
[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
[Librarian]   [:git, "https://github.com/cescoffier/puppet-nexus.git", {}]
[Librarian]   [:git, "https://github.com/ripienaar/puppet-module-data.git", {}]
[Librarian]   [:git, "https://github.com/datacentred/datacentred-ldap.git", {}]
[Librarian]   [:git, "https://github.com/ghoneycutt/puppet-module-facter.git", {:ref=>"v2.0.0"}]
Dependency 'cescoffier-nexus' duplicated for module act-base, merging: ["cescoffier-nexus (>= 0.0.1) <https://forgeapi.puppetlabs.com>", "cescoffier-nexus (>= 0.0.1) <https://github.com/cescoffier/puppet-nexus.git#master>"]
Dependency 'datacentred-ldap' duplicated for module act-base, merging: ["datacentred-ldap (>= 0.3.0) <https://forgeapi.puppetlabs.com>", "datacentred-ldap (>= 0.3.0) <https://github.com/datacentred/datacentred-ldap.git#master>"]
Dependency 'ripienaar-module_data' duplicated for module act-base, merging: ["ripienaar-module_data (>= 0.0.4) <https://forgeapi.puppetlabs.com>", "ripienaar-module_data (>= 0.0.4) <https://github.com/ripienaar/puppet-module-data.git#master>"]
Dependency 'ghoneycutt-facter' duplicated for module act-base, merging: ["ghoneycutt-facter (>= 2.0.0) <https://forgeapi.puppetlabs.com>", "ghoneycutt-facter (>= 2.0.0) <https://github.com/ghoneycutt/puppet-module-facter.git#v2.0.0>"]
[Librarian]       Resolved act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop> at act-base/0.1.0 <git@github.com:weareact/puppet-base.git#develop>
[Librarian]   Resolved act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>
[Librarian] Resolving cescoffier-nexus (>= 0.0.1) <https://github.com/cescoffier/puppet-nexus.git#master>

However that doesn't help when I'm trying to run beaker tests using librarian-puppet on CentOS 6 hosts :(

Edit: I also thought that the dependency resolution was a function of librarianp rather than librarian-puppet, and those are the same version across both hosts...

carlossg commented 9 years ago

I've merged master into 1.x, you can try if the latest there works

fatmcgav commented 9 years ago

Better, but still not perfect...

librarian-puppet install --clean --verbose --path /etc/puppet/modules
[Librarian] Ruby Version: 1.8.7
[Librarian] Ruby Platform: x86_64-linux
[Librarian] Rubygems Version: 1.3.7
[Librarian] Librarian Version: 0.6.3
[Librarian] Librarian Adapter: puppet
[Librarian] Librarian Adapter Version: 1.5.0
[Librarian] Project: /tmp/cataloguesvc
[Librarian] Specfile: Puppetfile
[Librarian] Lockfile: Puppetfile.lock
[Librarian] Git: /usr/bin/git
[Librarian] Git Version: 1.7.1
[Librarian] Git Environment Variables:
[Librarian]   (empty)
[Librarian] Deleting .tmp/librarian/cache
[Librarian] Pre-Cached Sources:
[Librarian] Post-Cached Sources:
[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
[Librarian]   [:git, "git@github.com:weareact/puppet-base.git", {:ref=>"develop"}]
Dependency 'act-base' duplicated for module, merging: act-base (>= 0.1.0) <http://forge.puppetlabs.com>act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>
[Librarian] Resolving act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>
[Librarian]   Checking manifests
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --- No output
[Librarian]     --> origin
[Librarian]     -->   origin/HEAD -> origin/develop
[Librarian]     -->   origin/develop
[Librarian]     -->   origin/feature/beaker_acceptance
[Librarian]     -->   origin/master
[Librarian]     --> fbb058d72cd59089cb363c2aa1a2926601171365
[Librarian]     --> fbb058d72cd59089cb363c2aa1a2926601171365
[Librarian]     Checking act-base/0.1.0 <git@github.com:weareact/puppet-base.git#develop>
[Librarian] Pre-Cached Sources:
[Librarian] Post-Cached Sources:
[Librarian]   [:git, "https://github.com/ghoneycutt/puppet-module-facter.git", {:ref=>"v2.0.0"}]
[Librarian]   [:git, "https://github.com/ripienaar/puppet-module-data.git", {}]
[Librarian]   [:forge, "http://forge.puppetlabs.com", {}]
[Librarian]   [:git, "https://github.com/datacentred/datacentred-ldap.git", {}]
[Librarian]   [:git, "https://github.com/cescoffier/puppet-nexus.git", {}]
Dependency 'ripienaar-module_data' duplicated for module act-base, merging: ripienaar-module_data (>= 0.0.4) <https://github.com/ripienaar/puppet-module-data.git#master>ripienaar-module_data (>= 0.0.4) <http://forge.puppetlabs.com>
Dependency 'cescoffier-nexus' duplicated for module act-base, merging: cescoffier-nexus (>= 0.0.1) <http://forge.puppetlabs.com>cescoffier-nexus (>= 0.0.1) <https://github.com/cescoffier/puppet-nexus.git#master>
Dependency 'datacentred-ldap' duplicated for module act-base, merging: datacentred-ldap (>= 0.3.0) <http://forge.puppetlabs.com>datacentred-ldap (>= 0.3.0) <https://github.com/datacentred/datacentred-ldap.git#master>
Dependency 'ghoneycutt-facter' duplicated for module act-base, merging: ghoneycutt-facter (>= 2.0.0) <http://forge.puppetlabs.com>ghoneycutt-facter (>= 2.0.0) <https://github.com/ghoneycutt/puppet-module-facter.git#v2.0.0>
[Librarian]       Resolved act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop> at act-base/0.1.0 <git@github.com:weareact/puppet-base.git#develop>
[Librarian]   Resolved act-base (>= 0.1.0) <git@github.com:weareact/puppet-base.git#develop>

I thought the dependency resolution is a function of librarianp rather than librarian-puppet, so surely the version of that should be all that matters?

Cheers Gav

carlossg commented 9 years ago

yes, most likely. Take a look at https://github.com/carlossg/librarian/commit/befb958a380106143f178480962e646ef6e331b8

I'm not sure when I'll have time to look at it, so if you want to try to send a PR...

fatmcgav commented 9 years ago

OK, I'll see if I can find where the issue is...

Cheers Gav