pub_grub 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/pub_grub/incompatibility.rb +1 -1
- data/lib/pub_grub/version_solver.rb +10 -10
- data/lib/pub_grub/version_union.rb +23 -2
- data/pub_grub.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90903e9ac8d79a7f74af0ef80ad36f53bd485e3c359369a861b609426b3146a9
|
4
|
+
data.tar.gz: 6d3e1d1f6989e4b22825eeed08bfd8476b138efd0d436ea2ab707391a2e759c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 10d228e102328e2d112c79eaebd50b35e77667b290986ef36685081eb517101f68f741b489accbab9a46e8f5628b757924b57faf265d7a3913c38333eabb0088
|
7
|
+
data.tar.gz: 90dcf1cfe0921f95cef532d92affe813ac30bbef2c57e736cc706d55265a2fb4f42a6e4e0886c0b667c8d0f4f7a3e7f4f73c858436ff0c01295648479937632b
|
data/Gemfile.lock
CHANGED
@@ -18,7 +18,7 @@ module PubGrub
|
|
18
18
|
@terms = cleanup_terms(terms)
|
19
19
|
|
20
20
|
if cause == :dependency && @terms.length != 2
|
21
|
-
raise ArgumentError, "a dependency Incompatibility must have exactly two terms. Got #{terms.inspect}"
|
21
|
+
raise ArgumentError, "a dependency Incompatibility must have exactly two terms. Got #{@terms.inspect}"
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
@@ -37,9 +37,9 @@ module PubGrub
|
|
37
37
|
propagate(next_package)
|
38
38
|
|
39
39
|
if solved?
|
40
|
-
logger.info "Solution found after #{solution.attempted_solutions} attempts:"
|
40
|
+
logger.info { "Solution found after #{solution.attempted_solutions} attempts:" }
|
41
41
|
solution.decisions.each do |package, version|
|
42
|
-
logger.info "* #{package} #{version}"
|
42
|
+
logger.info { "* #{package} #{version}" }
|
43
43
|
end
|
44
44
|
|
45
45
|
false
|
@@ -92,7 +92,7 @@ module PubGrub
|
|
92
92
|
return :conflict
|
93
93
|
end
|
94
94
|
|
95
|
-
logger.debug
|
95
|
+
logger.debug { "derived: #{unsatisfied.invert}" }
|
96
96
|
|
97
97
|
solution.derive(unsatisfied.invert, incompatibility)
|
98
98
|
|
@@ -135,7 +135,7 @@ module PubGrub
|
|
135
135
|
end
|
136
136
|
|
137
137
|
unless conflict
|
138
|
-
logger.info
|
138
|
+
logger.info { "selecting #{package} #{version}" }
|
139
139
|
|
140
140
|
solution.decide(package, version)
|
141
141
|
end
|
@@ -144,7 +144,7 @@ module PubGrub
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def resolve_conflict(incompatibility)
|
147
|
-
logger.info "conflict: #{incompatibility}"
|
147
|
+
logger.info { "conflict: #{incompatibility}" }
|
148
148
|
|
149
149
|
new_incompatibility = false
|
150
150
|
|
@@ -184,7 +184,7 @@ module PubGrub
|
|
184
184
|
if previous_level < most_recent_satisfier.decision_level ||
|
185
185
|
most_recent_satisfier.decision?
|
186
186
|
|
187
|
-
logger.info "backtracking to #{previous_level}"
|
187
|
+
logger.info { "backtracking to #{previous_level}" }
|
188
188
|
solution.backtrack(previous_level)
|
189
189
|
|
190
190
|
if new_incompatibility
|
@@ -208,16 +208,16 @@ module PubGrub
|
|
208
208
|
new_incompatibility = true
|
209
209
|
|
210
210
|
partially = difference ? " partially" : ""
|
211
|
-
logger.info "! #{most_recent_term} is#{partially} satisfied by #{most_recent_satisfier.term}"
|
212
|
-
logger.info "! which is caused by #{most_recent_satisfier.cause}"
|
213
|
-
logger.info "! thus #{incompatibility}"
|
211
|
+
logger.info { "! #{most_recent_term} is#{partially} satisfied by #{most_recent_satisfier.term}" }
|
212
|
+
logger.info { "! which is caused by #{most_recent_satisfier.cause}" }
|
213
|
+
logger.info { "! thus #{incompatibility}" }
|
214
214
|
end
|
215
215
|
|
216
216
|
raise SolveFailure.new(incompatibility)
|
217
217
|
end
|
218
218
|
|
219
219
|
def add_incompatibility(incompatibility)
|
220
|
-
logger.debug
|
220
|
+
logger.debug { "fact: #{incompatibility}" }
|
221
221
|
incompatibility.terms.each do |term|
|
222
222
|
package = term.package
|
223
223
|
@incompatibilities[package] << incompatibility
|
@@ -18,7 +18,7 @@ module PubGrub
|
|
18
18
|
return [] if ranges.empty?
|
19
19
|
|
20
20
|
mins, ranges = ranges.partition { |r| !r.min }
|
21
|
-
original_ranges = mins + ranges.sort_by { |r| [r.include_min ? 0 : 1
|
21
|
+
original_ranges = mins + ranges.sort_by { |r| [r.min, r.include_min ? 0 : 1] }
|
22
22
|
ranges = [original_ranges.shift]
|
23
23
|
original_ranges.each do |range|
|
24
24
|
if ranges.last.contiguous_to?(range)
|
@@ -124,7 +124,28 @@ module PubGrub
|
|
124
124
|
end
|
125
125
|
|
126
126
|
def to_s
|
127
|
-
|
127
|
+
output = []
|
128
|
+
|
129
|
+
ranges = self.ranges.dup
|
130
|
+
while !ranges.empty?
|
131
|
+
ne = []
|
132
|
+
range = ranges.shift
|
133
|
+
while !ranges.empty? && ranges[0].min == range.max
|
134
|
+
ne << range.max
|
135
|
+
range = range.span(ranges.shift)
|
136
|
+
end
|
137
|
+
|
138
|
+
ne.map! {|x| "!= #{x}" }
|
139
|
+
if ne.empty?
|
140
|
+
output << range.to_s
|
141
|
+
elsif range.any?
|
142
|
+
output << ne.join(', ')
|
143
|
+
else
|
144
|
+
output << "#{range}, #{ne.join(', ')}"
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
output.join(" OR ")
|
128
149
|
end
|
129
150
|
|
130
151
|
def inspect
|
data/pub_grub.gemspec
CHANGED
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.
|
4
|
+
version: 0.4.1
|
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-
|
11
|
+
date: 2018-12-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|