pub_grub 0.4.3 → 0.5.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3fb8a4eb75ab624c0460ae89a756058d8fc98747296d5b0422b63c0d915756e3
4
- data.tar.gz: 99a4e76956dd0368acb67f87afe5f36357496fe1504bc4eb6f9670e10095cbf7
3
+ metadata.gz: 77a0d3a900e165738c32a45c4f6218118fdb4d2789a8ada9488ae75036a16bd2
4
+ data.tar.gz: df30c5a36123db7bb05da53e04e1380076bdeb547e66bc0beb270cbb376d7467
5
5
  SHA512:
6
- metadata.gz: d9977b304c9ca7f483d95cbc1c3a385a6bb553d780600f07b7669368afdb3d07cd86e5021df4e5f63f1e31dd2fb607ff9d8f427024828b26a82af38248e4cd37
7
- data.tar.gz: 1545a55656626c8b0575dc4b058f6eed4bf63c40f58f8cf25268bcdd1623e72e6ea7df9914727ab262783579ff154463146da0cddf2ceafd3a719390ebab9ea4
6
+ metadata.gz: c324be012eb25169bc76cc77ffda085fd4cb87c2e5bf142bb3c34476164e3b21e4957e161ae4352f77269ba5885051a359f5fcd41b002fea033e36235de8aaab
7
+ data.tar.gz: 6d3ea95559f7088d7ed58620f64bc0c3123642563267ac2bc483fddc57c606a6ca284869e25986293dcd60f5d71c82f17356a6a48ff6f5519bf01832f002c9e0
@@ -8,6 +8,7 @@ require "pub_grub/version_solver"
8
8
  require "pub_grub/incompatibility"
9
9
  require 'pub_grub/solve_failure'
10
10
  require 'pub_grub/failure_writer'
11
+ require 'pub_grub/version'
11
12
 
12
13
  require "logger"
13
14
 
@@ -29,7 +29,7 @@ module PubGrub
29
29
  end
30
30
 
31
31
  def to_s
32
- name
32
+ name.to_s
33
33
  end
34
34
  end
35
35
  end
@@ -1,3 +1,3 @@
1
1
  module PubGrub
2
- VERSION = "0.4.3"
2
+ VERSION = "0.5.0.alpha"
3
3
  end
@@ -18,6 +18,8 @@ module PubGrub
18
18
 
19
19
  @solution = PartialSolution.new
20
20
 
21
+ @package_depth = { root => 0 }
22
+
21
23
  add_incompatibility Incompatibility.new([
22
24
  Term.new(VersionConstraint.any(root), false)
23
25
  ], cause: :root)
@@ -100,24 +102,24 @@ module PubGrub
100
102
  unsatisfied.package
101
103
  end
102
104
 
103
- def choose_package_version
104
- unsatisfied = solution.unsatisfied
105
+ def next_package_to_try
106
+ solution.unsatisfied.min_by do |term|
107
+ package = term.package
108
+ versions = source.versions_for(package, term.constraint.range)
105
109
 
106
- if unsatisfied.empty?
110
+ [@package_depth[package], versions.count]
111
+ end.package
112
+ end
113
+
114
+ def choose_package_version
115
+ if solution.unsatisfied.empty?
107
116
  logger.info "No packages unsatisfied. Solving complete!"
108
117
  return nil
109
118
  end
110
119
 
111
- unsatisfied_term, versions =
112
- unsatisfied.map do |term|
113
- range = term.constraint.range
114
- [term, source.versions_for(term.package, range)]
115
- end.min_by do |(_, v)|
116
- v.count
117
- end
118
-
119
- package = unsatisfied_term.package
120
- version = versions.first
120
+ package = next_package_to_try
121
+ unsatisfied_term = solution.unsatisfied.find { |t| t.package == package }
122
+ version = source.versions_for(package, unsatisfied_term.constraint.range).first
121
123
 
122
124
  if version.nil?
123
125
  cause = Incompatibility::NoVersions.new(unsatisfied_term)
@@ -133,6 +135,12 @@ module PubGrub
133
135
  conflict ||= incompatibility.terms.all? do |term|
134
136
  term.package == package || solution.satisfies?(term)
135
137
  end
138
+
139
+ # Update depths of new packages
140
+ depth = @package_depth[package] + 1
141
+ incompatibility.terms.each do |term|
142
+ @package_depth[term.package] ||= depth
143
+ end
136
144
  end
137
145
 
138
146
  unless conflict
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pub_grub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.5.0.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Hawthorn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-12-30 00:00:00.000000000 Z
11
+ date: 2019-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -130,9 +130,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
- - - ">="
133
+ - - ">"
134
134
  - !ruby/object:Gem::Version
135
- version: '0'
135
+ version: 1.3.1
136
136
  requirements: []
137
137
  rubyforge_project:
138
138
  rubygems_version: 2.7.7