pub_grub 0.5.0.alpha2 → 0.5.0.alpha3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/pub_grub/partial_solution.rb +15 -18
- data/lib/pub_grub/version.rb +1 -1
- data/lib/pub_grub/version_range.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2318849a1cea100c14280880d29b53fad23da9bb6e56035d16c8526304d02570
|
4
|
+
data.tar.gz: 06f54f9d158a9cc20684ae48eaccb2626276a8c3bec4e8b5ef301e1ceafb1958
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f043f66fe1ba07cbf5bf9e60c632e4a1100456125a66e09ba6512835808a1c5187576f4106c64ff600397d4a7ff87e590e8f30b2d5395d94d72a0358e6ac8f88
|
7
|
+
data.tar.gz: f46c47b204a5e7dc2b51a1e9eb26f798289a9d674adef3b2102c6fe2d697cbdf4509dca66482e317968fc386ad31f51638d682b4bfa90dcc75f62ec6205f5cd1
|
data/Gemfile.lock
CHANGED
@@ -21,7 +21,8 @@ module PubGrub
|
|
21
21
|
package = term.package
|
22
22
|
return :overlap if !@terms.key?(package)
|
23
23
|
|
24
|
-
@
|
24
|
+
@relation_cache[package][term] ||=
|
25
|
+
@terms[package].relation(term)
|
25
26
|
end
|
26
27
|
|
27
28
|
def satisfies?(term)
|
@@ -33,21 +34,12 @@ module PubGrub
|
|
33
34
|
end
|
34
35
|
|
35
36
|
def satisfier(term)
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
if assigned_term
|
40
|
-
assigned_term = assigned_term.intersect(assignment.term)
|
41
|
-
else
|
42
|
-
assigned_term = assignment.term
|
37
|
+
assignment =
|
38
|
+
@assignments_by[term.package].bsearch do |assignment|
|
39
|
+
@cumulative_assignments[assignment].satisfies?(term)
|
43
40
|
end
|
44
41
|
|
45
|
-
|
46
|
-
return assignment
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
raise "#{term} unsatisfied"
|
42
|
+
assignment || raise("#{term} unsatisfied")
|
51
43
|
end
|
52
44
|
|
53
45
|
# A list of unsatisfied terms
|
@@ -94,32 +86,37 @@ module PubGrub
|
|
94
86
|
|
95
87
|
# { Package => Array<Assignment> }
|
96
88
|
@assignments_by = Hash.new { |h,k| h[k] = [] }
|
89
|
+
@cumulative_assignments = {}.compare_by_identity
|
97
90
|
|
98
91
|
# { Package => Package::Version }
|
99
92
|
@decisions = {}
|
100
93
|
|
101
94
|
# { Package => Term }
|
102
95
|
@terms = {}
|
96
|
+
@relation_cache = Hash.new { |h,k| h[k] = {} }
|
103
97
|
|
104
98
|
# { Package => Boolean }
|
105
99
|
@required = Set.new
|
106
100
|
end
|
107
101
|
|
108
102
|
def add_assignment(assignment)
|
109
|
-
@assignments << assignment
|
110
|
-
@assignments_by[assignment.term.package] << assignment
|
111
|
-
|
112
103
|
term = assignment.term
|
113
104
|
package = term.package
|
114
105
|
|
106
|
+
@assignments << assignment
|
107
|
+
@assignments_by[package] << assignment
|
108
|
+
|
115
109
|
@required.add(package) if term.positive?
|
116
110
|
|
117
111
|
if @terms.key?(package)
|
118
112
|
old_term = @terms[package]
|
119
113
|
@terms[package] = old_term.intersect(term)
|
120
114
|
else
|
121
|
-
@terms[
|
115
|
+
@terms[package] = term
|
122
116
|
end
|
117
|
+
@relation_cache[package].clear
|
118
|
+
|
119
|
+
@cumulative_assignments[assignment] = @terms[package]
|
123
120
|
end
|
124
121
|
end
|
125
122
|
end
|
data/lib/pub_grub/version.rb
CHANGED