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 +4 -4
- data/lib/pub_grub.rb +1 -0
- data/lib/pub_grub/package.rb +1 -1
- data/lib/pub_grub/version.rb +1 -1
- data/lib/pub_grub/version_solver.rb +21 -13
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 77a0d3a900e165738c32a45c4f6218118fdb4d2789a8ada9488ae75036a16bd2
|
4
|
+
data.tar.gz: df30c5a36123db7bb05da53e04e1380076bdeb547e66bc0beb270cbb376d7467
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c324be012eb25169bc76cc77ffda085fd4cb87c2e5bf142bb3c34476164e3b21e4957e161ae4352f77269ba5885051a359f5fcd41b002fea033e36235de8aaab
|
7
|
+
data.tar.gz: 6d3ea95559f7088d7ed58620f64bc0c3123642563267ac2bc483fddc57c606a6ca284869e25986293dcd60f5d71c82f17356a6a48ff6f5519bf01832f002c9e0
|
data/lib/pub_grub.rb
CHANGED
data/lib/pub_grub/package.rb
CHANGED
data/lib/pub_grub/version.rb
CHANGED
@@ -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
|
104
|
-
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
|
-
|
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
|
-
|
112
|
-
|
113
|
-
|
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
|
+
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:
|
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:
|
135
|
+
version: 1.3.1
|
136
136
|
requirements: []
|
137
137
|
rubyforge_project:
|
138
138
|
rubygems_version: 2.7.7
|