Are there some tools in debugging Berks dependency with Berksfile?
I spent some time debugging the chef-openstack repo and it seemed like there should be a better way to debug it. My strategy was to take the Berksfile to a smaller and smaller subset until there error message went to something obvious enough to deal with. What are people using to debug Berksfiles?
The case I had was complex in having multiple problems, but the log below gives you an idea of how you get from an error message that tells, graph does not have a solution to something that is actionable, it is the tree pruned so that you can see what is going on...
$ chef exec rake berks_vendor
chef exec berks vendor cookbooks
Resolving cookbook dependencies...
.....
Fetching cookbook index from https://supermarket.chef.io...
Unable to satisfy constraints on package openstack-common due to solution constraint (openstack-block-storage = 10.1.0). Solution constraints that may result in a constraint on openstack-common: [(openstack-block-storage = 10.1.0) -> (openstack-common >= 10.2.0)], [(openstack-block-storage = 10.1.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-block-storage = 10.1.0) -> (openstack-image = 10.1.0) -> (openstack-common >= 10.2.0)], [(openstack-block-storage = 10.1.0) -> (openstack-image = 10.1.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-common = 10.3.0)], [(openstack-compute = 10.0.0) -> (openstack-common >= 10.2.0)], [(openstack-compute = 10.0.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-compute = 10.0.0) -> (openstack-image = 10.1.0) -> (openstack-common >= 10.2.0)], [(openstack-compute = 10.0.0) -> (openstack-image = 10.1.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-compute = 10.0.0) -> (openstack-network = 10.1.1) -> (openstack-common >= 10.2.0)], [(openstack-compute = 10.0.0) -> (openstack-network = 10.1.1) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-dashboard = 10.0.0) -> (openstack-common >= 10.2.0)], [(openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-image = 10.1.0) -> (openstack-common >= 10.2.0)], [(openstack-image = 10.1.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-network = 10.1.1) -> (openstack-common >= 10.2.0)], [(openstack-network = 10.1.1) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-object-storage = 10.0.0) -> (openstack-common >= 10.2.0)], [(openstack-object-storage = 10.0.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-ops-database = 10.0.0) -> (openstack-common >= 10.0.0)], [(openstack-ops-messaging = 10.0.1) -> (openstack-common >= 10.0.0)], [(openstack-orchestration = 10.0.0) -> (openstack-common >= 10.2.0)], [(openstack-orchestration = 10.0.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-image = 10.1.0) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-image = 10.1.0) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-network = 10.1.1) -> (openstack-common >= 10.2.0)], [(openstack-telemetry = 10.0.1) -> (openstack-compute = 10.0.0) -> (openstack-network = 10.1.1) -> (openstack-identity = 10.0.1) -> (openstack-common >= 10.2.0)]
Demand that cannot be met: (openstack-block-storage = 10.1.0)
Artifacts for which there are conflicting dependencies: openstack-common = 10.3.0 -> [(apt >= 2.3.8), (database >= 4.0.2), (mysql >= 6.0.13), (yum >= 3.5.2), (yum-epel >= 0.6.0)],ceph = 0.2.0 -> [(apache2 >= 1.1.12), (apt >= 0.0.0), (yum >= 3.0.0), (yum-epel >= 0.0.0)]Unable to find a solution for demands: apache2 (= 3.0.0), apt (= 2.6.1), aws (= 2.1.1), build-essential (= 1.4.2), database (= 2.2.0), erlang (= 1.4.2), memcached (= 1.7.2), mysql (>= 0.0.0), mysql-chef_gem (= 0.0.4), openssl (= 1.1.0), openstack-block-storage (10.1.0), openstack-common (10.3.0), openstack-compute (10.0.0), openstack-dashboard (10.0.0), openstack-identity (10.0.1), openstack-image (10.1.0), openstack-network (10.1.1), openstack-object-storage (10.0.0), openstack-ops-database (10.0.0), openstack-ops-messaging (10.0.1), openstack-orchestration (10.0.0), openstack-telemetry (10.0.1), postgresql (= 3.4.14), python (= 1.4.6), rabbitmq (= 3.9.0), selinux (= 0.7.2), statsd (0.1.6), xfs (= 1.1.0), yum (= 3.5.2), yum-epel (= 0.6.0)
rake aborted!
to this one:
$ chef exec rake berks_vendor
chef exec berks vendor cookbooks
Resolving cookbook dependencies...
.....
Fetching cookbook index from https://supermarket.chef.io...
Required artifacts do not exist at the desired version
Constraints that match no available version: (ceph = 0.2.1)
Unable to find a solution for demands: apache2 (>= 0.0.0), apt (= 2.6.1), aws (= 2.1.1), build-essential (= 1.4.2), ceph (= 0.2.1), database (= 4.0.2), erlang (= 1.4.2), memcached (= 1.7.2), mysql (= 6.0.13), mysql2_chef_gem (= 1.0.1), openssl (= 1.1.0), postgresql (= 3.4.14), python (= 1.4.6), rabbitmq (= 3.9.0), selinux (= 0.7.2), statsd (0.1.6), xfs (= 1.1.0), yum (= 3.5.2), yum-epel (= 0.6.0)
rake aborted!
Archive powered by MHonArc 2.6.16.