build-dependency 1.3.0 → 1.4.0
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/.travis.yml +12 -14
- data/build-dependency.gemspec +2 -1
- data/full.svg +37 -37
- data/lib/build/dependency/chain.rb +3 -1
- data/lib/build/dependency/provider.rb +7 -3
- data/lib/build/dependency/set.rb +86 -0
- data/lib/build/dependency/version.rb +1 -1
- data/partial.svg +27 -27
- data/spec/build/dependency/chain_spec.rb +2 -0
- data/spec/build/dependency/package.rb +89 -0
- data/spec/build/dependency/partial_chain_spec.rb +4 -2
- data/spec/build/dependency/provider_spec.rb +36 -2
- data/spec/build/dependency/set_spec.rb +87 -0
- data/spec/build/dependency/visualization_spec.rb +3 -1
- data/spec/build/dependency/wildcard_spec.rb +2 -0
- data/spec/spec_helper.rb +1 -87
- data/visualization.svg +45 -45
- metadata +26 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e75821952292fe3d139db84771db2b5270afdb26039a5637c2584889caffeec
|
4
|
+
data.tar.gz: 2d6088783e2ab1dddb8510c40ad0fae285ab560ba7e03c8a1cbcf5ef4b3371a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d38ed1a6a757143480bb7f9daa122a3d89977ae886a553ce4e6123ce7f8d562185e76a925a828b8c7f089a660a26c496f135baf06cda3afe3b42ebe809f83edc
|
7
|
+
data.tar.gz: 4cccf4a5c64f3294d4669b371b72357895942dc785b39371cd545c1c3d945eac3108a911491b14bb98d3a80dbb57c33a1d3748198652349e7defc070538d678a
|
data/.travis.yml
CHANGED
@@ -1,19 +1,17 @@
|
|
1
1
|
language: ruby
|
2
|
-
|
3
|
-
dist: trusty
|
2
|
+
dist: xenial
|
4
3
|
cache: bundler
|
5
|
-
|
6
|
-
- 2.1
|
7
|
-
- 2.2
|
8
|
-
- 2.3
|
9
|
-
- 2.4
|
10
|
-
- ruby-head
|
11
|
-
- jruby-head
|
12
|
-
matrix:
|
13
|
-
allow_failures:
|
14
|
-
- rvm: "ruby-head"
|
15
|
-
- rvm: "jruby-head"
|
4
|
+
|
16
5
|
addons:
|
17
6
|
apt:
|
18
7
|
packages:
|
19
|
-
- graphviz
|
8
|
+
- graphviz
|
9
|
+
|
10
|
+
matrix:
|
11
|
+
include:
|
12
|
+
- rvm: 2.3
|
13
|
+
- rvm: 2.4
|
14
|
+
- rvm: 2.5
|
15
|
+
- rvm: 2.6
|
16
|
+
- rvm: 2.6
|
17
|
+
env: COVERAGE=BriefSummary,Coveralls
|
data/build-dependency.gemspec
CHANGED
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
|
|
17
17
|
|
18
18
|
spec.add_dependency "graphviz"
|
19
19
|
|
20
|
-
spec.add_development_dependency "
|
20
|
+
spec.add_development_dependency "covered"
|
21
|
+
spec.add_development_dependency "bundler"
|
21
22
|
spec.add_development_dependency "rspec", "~> 3.6"
|
22
23
|
spec.add_development_dependency "rake"
|
23
24
|
end
|
data/full.svg
CHANGED
@@ -4,120 +4,120 @@
|
|
4
4
|
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
5
5
|
-->
|
6
6
|
<!-- Title: G Pages: 1 -->
|
7
|
-
<svg width="
|
8
|
-
viewBox="0.00 0.00
|
7
|
+
<svg width="360pt" height="404pt"
|
8
|
+
viewBox="0.00 0.00 359.50 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
9
9
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
|
10
10
|
<title>G</title>
|
11
|
-
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400
|
11
|
+
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 355.5,-400 355.5,4 -4,4"/>
|
12
12
|
<!-- Variant/debug -->
|
13
13
|
<g id="node1" class="node">
|
14
14
|
<title>Variant/debug</title>
|
15
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
16
|
-
<text text-anchor="middle" x="
|
15
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="117,-36 0,-36 0,0 117,0 117,-36"/>
|
16
|
+
<text text-anchor="middle" x="58.5" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
|
17
17
|
</g>
|
18
18
|
<!-- variant -->
|
19
19
|
<g id="node2" class="node">
|
20
20
|
<title>variant</title>
|
21
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
22
|
-
<text text-anchor="middle" x="
|
21
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="92,-108 25,-108 25,-72 92,-72 92,-108"/>
|
22
|
+
<text text-anchor="middle" x="58.5" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
|
23
23
|
</g>
|
24
24
|
<!-- variant->Variant/debug -->
|
25
25
|
<g id="edge1" class="edge">
|
26
26
|
<title>variant->Variant/debug</title>
|
27
|
-
<path fill="none" stroke="#000000" d="
|
27
|
+
<path fill="none" stroke="#000000" d="M58.5,-71.8314C58.5,-61 58.5,-47.2876 58.5,-36.4133"/>
|
28
28
|
</g>
|
29
29
|
<!-- Platform/linux -->
|
30
30
|
<g id="node3" class="node">
|
31
31
|
<title>Platform/linux</title>
|
32
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
33
|
-
<text text-anchor="middle" x="
|
32
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="116.5,-180 .5,-180 .5,-144 116.5,-144 116.5,-180"/>
|
33
|
+
<text text-anchor="middle" x="58.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
|
34
34
|
</g>
|
35
35
|
<!-- Platform/linux->variant -->
|
36
36
|
<g id="edge2" class="edge">
|
37
37
|
<title>Platform/linux->variant</title>
|
38
|
-
<path fill="none" stroke="#000000" d="
|
39
|
-
<polygon fill="#000000" stroke="#000000" points="
|
38
|
+
<path fill="none" stroke="#000000" d="M58.5,-143.8314C58.5,-136.131 58.5,-126.9743 58.5,-118.4166"/>
|
39
|
+
<polygon fill="#000000" stroke="#000000" points="62.0001,-118.4132 58.5,-108.4133 55.0001,-118.4133 62.0001,-118.4132"/>
|
40
40
|
</g>
|
41
41
|
<!-- platform -->
|
42
42
|
<g id="node4" class="node">
|
43
43
|
<title>platform</title>
|
44
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
45
|
-
<text text-anchor="middle" x="
|
44
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="97.5,-252 19.5,-252 19.5,-216 97.5,-216 97.5,-252"/>
|
45
|
+
<text text-anchor="middle" x="58.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
|
46
46
|
</g>
|
47
47
|
<!-- platform->Platform/linux -->
|
48
48
|
<g id="edge3" class="edge">
|
49
49
|
<title>platform->Platform/linux</title>
|
50
|
-
<path fill="none" stroke="#000000" d="
|
50
|
+
<path fill="none" stroke="#000000" d="M58.5,-215.8314C58.5,-205 58.5,-191.2876 58.5,-180.4133"/>
|
51
51
|
</g>
|
52
52
|
<!-- Compiler/clang -->
|
53
53
|
<g id="node5" class="node">
|
54
54
|
<title>Compiler/clang</title>
|
55
|
-
<polygon fill="#add8e6" stroke="#000000" points="
|
56
|
-
<text text-anchor="middle" x="
|
55
|
+
<polygon fill="#add8e6" stroke="#000000" points="303.5,-180 179.5,-180 179.5,-144 303.5,-144 303.5,-180"/>
|
56
|
+
<text text-anchor="middle" x="241.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
|
57
57
|
</g>
|
58
58
|
<!-- Language/C++14 -->
|
59
59
|
<g id="node6" class="node">
|
60
60
|
<title>Language/C++14</title>
|
61
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
62
|
-
<text text-anchor="middle" x="
|
61
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="351.5,-324 207.5,-324 207.5,-288 351.5,-288 351.5,-324"/>
|
62
|
+
<text text-anchor="middle" x="279.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
|
63
63
|
</g>
|
64
64
|
<!-- Language/C++14->Compiler/clang -->
|
65
65
|
<g id="edge4" class="edge">
|
66
66
|
<title>Language/C++14->Compiler/clang</title>
|
67
|
-
<path fill="none" stroke="#000000" d="
|
67
|
+
<path fill="none" stroke="#000000" d="M279.0847,-287.6971C278.246,-269.2427 275.7655,-240.1153 268.5,-216 264.7507,-203.5554 258.2988,-190.4971 252.6421,-180.3393"/>
|
68
68
|
</g>
|
69
69
|
<!-- Language/C++17 -->
|
70
70
|
<g id="node7" class="node">
|
71
71
|
<title>Language/C++17</title>
|
72
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
73
|
-
<text text-anchor="middle" x="
|
72
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="259.5,-252 115.5,-252 115.5,-216 259.5,-216 259.5,-252"/>
|
73
|
+
<text text-anchor="middle" x="187.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
|
74
74
|
</g>
|
75
75
|
<!-- Language/C++17->Compiler/clang -->
|
76
76
|
<g id="edge5" class="edge">
|
77
77
|
<title>Language/C++17->Compiler/clang</title>
|
78
|
-
<path fill="none" stroke="#000000" d="
|
78
|
+
<path fill="none" stroke="#000000" d="M201.1265,-215.8314C209.25,-205 219.5343,-191.2876 227.69,-180.4133"/>
|
79
79
|
</g>
|
80
80
|
<!-- lib -->
|
81
81
|
<g id="node8" class="node">
|
82
82
|
<title>lib</title>
|
83
|
-
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="
|
84
|
-
<text text-anchor="middle" x="
|
83
|
+
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="182.5,-324 128.5,-324 128.5,-288 182.5,-288 182.5,-324"/>
|
84
|
+
<text text-anchor="middle" x="155.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
|
85
85
|
</g>
|
86
86
|
<!-- lib->platform -->
|
87
87
|
<g id="edge6" class="edge">
|
88
88
|
<title>lib->platform</title>
|
89
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
90
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
89
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M131.0228,-287.8314C118.9605,-278.8779 104.246,-267.9558 91.2314,-258.2955"/>
|
90
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="93.0852,-255.3127 82.9694,-252.1628 88.913,-260.9335 93.0852,-255.3127"/>
|
91
91
|
</g>
|
92
92
|
<!-- lib->Language/C++17 -->
|
93
93
|
<g id="edge7" class="edge">
|
94
94
|
<title>lib->Language/C++17</title>
|
95
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
96
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
95
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M163.575,-287.8314C167.1102,-279.8771 171.336,-270.369 175.2456,-261.5723"/>
|
96
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="178.4532,-262.9729 179.3163,-252.4133 172.0565,-260.1299 178.4532,-262.9729"/>
|
97
97
|
</g>
|
98
98
|
<!-- app -->
|
99
99
|
<g id="node9" class="node">
|
100
100
|
<title>app</title>
|
101
|
-
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="
|
102
|
-
<text text-anchor="middle" x="
|
101
|
+
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="182.5,-396 128.5,-396 128.5,-360 182.5,-360 182.5,-396"/>
|
102
|
+
<text text-anchor="middle" x="155.5" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
|
103
103
|
</g>
|
104
104
|
<!-- app->platform -->
|
105
105
|
<g id="edge9" class="edge">
|
106
106
|
<title>app->platform</title>
|
107
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
108
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
107
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M143.2149,-359.7623C126.3057,-334.66 95.7518,-289.3017 76.3285,-260.4671"/>
|
108
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="79.1751,-258.4281 70.6854,-252.0896 73.3694,-262.3389 79.1751,-258.4281"/>
|
109
109
|
</g>
|
110
110
|
<!-- app->Language/C++14 -->
|
111
111
|
<g id="edge10" class="edge">
|
112
112
|
<title>app->Language/C++14</title>
|
113
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
114
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
113
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M182.7123,-362.1993C199.3768,-352.5231 220.9988,-339.9685 239.5782,-329.1804"/>
|
114
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="241.5292,-332.0949 248.4196,-324.0467 238.0142,-326.0413 241.5292,-332.0949"/>
|
115
115
|
</g>
|
116
116
|
<!-- app->lib -->
|
117
117
|
<g id="edge8" class="edge">
|
118
118
|
<title>app->lib</title>
|
119
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
120
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
119
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M155.5,-359.8314C155.5,-352.131 155.5,-342.9743 155.5,-334.4166"/>
|
120
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="159.0001,-334.4132 155.5,-324.4133 152.0001,-334.4133 159.0001,-334.4132"/>
|
121
121
|
</g>
|
122
122
|
</g>
|
123
123
|
</svg>
|
@@ -20,6 +20,8 @@
|
|
20
20
|
|
21
21
|
require_relative 'resolver'
|
22
22
|
|
23
|
+
require 'set'
|
24
|
+
|
23
25
|
module Build
|
24
26
|
module Dependency
|
25
27
|
class Chain < Resolver
|
@@ -40,7 +42,7 @@ module Build
|
|
40
42
|
super()
|
41
43
|
|
42
44
|
# Explicitly selected dependencies which will be used when resolving ambiguity:
|
43
|
-
@selection = Set.new(selection)
|
45
|
+
@selection = ::Set.new(selection)
|
44
46
|
|
45
47
|
# The list of dependencies that needs to be satisfied:
|
46
48
|
@dependencies = dependencies.collect{|dependency| Depends[dependency]}
|
@@ -18,7 +18,7 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
-
|
21
|
+
require_relative 'set'
|
22
22
|
|
23
23
|
module Build
|
24
24
|
module Dependency
|
@@ -102,8 +102,12 @@ module Build
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
+
def public?
|
106
|
+
!!@options[:public]
|
107
|
+
end
|
108
|
+
|
105
109
|
def private?
|
106
|
-
|
110
|
+
!!@options[:private]
|
107
111
|
end
|
108
112
|
|
109
113
|
def alias?
|
@@ -144,7 +148,7 @@ module Build
|
|
144
148
|
@provisions ||= {}
|
145
149
|
end
|
146
150
|
|
147
|
-
# @return
|
151
|
+
# @return [IdentitySet<Dependency>]
|
148
152
|
def dependencies
|
149
153
|
@dependencies ||= Set.new
|
150
154
|
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# Copyright, 2015, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require 'forwardable'
|
22
|
+
|
23
|
+
module Build
|
24
|
+
module Dependency
|
25
|
+
# Very similar to a set but uses a specific callback (defaults to &:name) for object identity.
|
26
|
+
class Set
|
27
|
+
include Enumerable
|
28
|
+
|
29
|
+
def initialize(contents = [])
|
30
|
+
@table = {}
|
31
|
+
|
32
|
+
contents.each do |object|
|
33
|
+
add(object)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
attr :table
|
38
|
+
|
39
|
+
extend Forwardable
|
40
|
+
|
41
|
+
def_delegators :@table, :size, :empty?, :clear, :count, :[], :to_s, :inspect
|
42
|
+
|
43
|
+
def freeze
|
44
|
+
return self if frozen?
|
45
|
+
|
46
|
+
@table.freeze
|
47
|
+
|
48
|
+
super
|
49
|
+
end
|
50
|
+
|
51
|
+
def initialize_dup(other)
|
52
|
+
@table = other.table.dup
|
53
|
+
end
|
54
|
+
|
55
|
+
def identity(object)
|
56
|
+
object.name
|
57
|
+
end
|
58
|
+
|
59
|
+
def add(object)
|
60
|
+
if include?(object)
|
61
|
+
raise KeyError, "Object #{identity(object)} already exists!"
|
62
|
+
end
|
63
|
+
|
64
|
+
@table[identity(object)] = object
|
65
|
+
end
|
66
|
+
|
67
|
+
alias << add
|
68
|
+
|
69
|
+
def delete(object)
|
70
|
+
@table.delete(identity(object))
|
71
|
+
end
|
72
|
+
|
73
|
+
def include?(object)
|
74
|
+
@table.include?(identity(object))
|
75
|
+
end
|
76
|
+
|
77
|
+
def each(&block)
|
78
|
+
@table.each_value(&block)
|
79
|
+
end
|
80
|
+
|
81
|
+
def slice(names)
|
82
|
+
names.collect{|name| @table[name]}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
data/partial.svg
CHANGED
@@ -4,90 +4,90 @@
|
|
4
4
|
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
5
5
|
-->
|
6
6
|
<!-- Title: G Pages: 1 -->
|
7
|
-
<svg width="
|
8
|
-
viewBox="0.00 0.00
|
7
|
+
<svg width="472pt" height="332pt"
|
8
|
+
viewBox="0.00 0.00 471.50 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
9
9
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 328)">
|
10
10
|
<title>G</title>
|
11
|
-
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-328
|
11
|
+
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-328 467.5,-328 467.5,4 -4,4"/>
|
12
12
|
<!-- Variant/debug -->
|
13
13
|
<g id="node1" class="node">
|
14
14
|
<title>Variant/debug</title>
|
15
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
16
|
-
<text text-anchor="middle" x="
|
15
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="117,-36 0,-36 0,0 117,0 117,-36"/>
|
16
|
+
<text text-anchor="middle" x="58.5" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
|
17
17
|
</g>
|
18
18
|
<!-- variant -->
|
19
19
|
<g id="node2" class="node">
|
20
20
|
<title>variant</title>
|
21
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
22
|
-
<text text-anchor="middle" x="
|
21
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="92,-108 25,-108 25,-72 92,-72 92,-108"/>
|
22
|
+
<text text-anchor="middle" x="58.5" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
|
23
23
|
</g>
|
24
24
|
<!-- variant->Variant/debug -->
|
25
25
|
<g id="edge1" class="edge">
|
26
26
|
<title>variant->Variant/debug</title>
|
27
|
-
<path fill="none" stroke="#000000" d="
|
27
|
+
<path fill="none" stroke="#000000" d="M58.5,-71.8314C58.5,-61 58.5,-47.2876 58.5,-36.4133"/>
|
28
28
|
</g>
|
29
29
|
<!-- Platform/linux -->
|
30
30
|
<g id="node3" class="node">
|
31
31
|
<title>Platform/linux</title>
|
32
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
33
|
-
<text text-anchor="middle" x="
|
32
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="116.5,-180 .5,-180 .5,-144 116.5,-144 116.5,-180"/>
|
33
|
+
<text text-anchor="middle" x="58.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
|
34
34
|
</g>
|
35
35
|
<!-- Platform/linux->variant -->
|
36
36
|
<g id="edge2" class="edge">
|
37
37
|
<title>Platform/linux->variant</title>
|
38
|
-
<path fill="none" stroke="#000000" d="
|
39
|
-
<polygon fill="#000000" stroke="#000000" points="
|
38
|
+
<path fill="none" stroke="#000000" d="M58.5,-143.8314C58.5,-136.131 58.5,-126.9743 58.5,-118.4166"/>
|
39
|
+
<polygon fill="#000000" stroke="#000000" points="62.0001,-118.4132 58.5,-108.4133 55.0001,-118.4133 62.0001,-118.4132"/>
|
40
40
|
</g>
|
41
41
|
<!-- platform -->
|
42
42
|
<g id="node4" class="node">
|
43
43
|
<title>platform</title>
|
44
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
45
|
-
<text text-anchor="middle" x="
|
44
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="97.5,-252 19.5,-252 19.5,-216 97.5,-216 97.5,-252"/>
|
45
|
+
<text text-anchor="middle" x="58.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
|
46
46
|
</g>
|
47
47
|
<!-- platform->Platform/linux -->
|
48
48
|
<g id="edge3" class="edge">
|
49
49
|
<title>platform->Platform/linux</title>
|
50
|
-
<path fill="none" stroke="#000000" d="
|
50
|
+
<path fill="none" stroke="#000000" d="M58.5,-215.8314C58.5,-205 58.5,-191.2876 58.5,-180.4133"/>
|
51
51
|
</g>
|
52
52
|
<!-- lib -->
|
53
53
|
<g id="node5" class="node">
|
54
54
|
<title>lib</title>
|
55
|
-
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="
|
56
|
-
<text text-anchor="middle" x="
|
55
|
+
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="85.5,-324 31.5,-324 31.5,-288 85.5,-288 85.5,-324"/>
|
56
|
+
<text text-anchor="middle" x="58.5" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
|
57
57
|
</g>
|
58
58
|
<!-- lib->platform -->
|
59
59
|
<g id="edge4" class="edge">
|
60
60
|
<title>lib->platform</title>
|
61
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
62
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
61
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M58.5,-287.8314C58.5,-280.131 58.5,-270.9743 58.5,-262.4166"/>
|
62
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="62.0001,-262.4132 58.5,-252.4133 55.0001,-262.4133 62.0001,-262.4132"/>
|
63
63
|
</g>
|
64
64
|
<!-- Compiler/clang -->
|
65
65
|
<g id="node6" class="node">
|
66
66
|
<title>Compiler/clang</title>
|
67
|
-
<polygon fill="#add8e6" stroke="#000000" points="
|
68
|
-
<text text-anchor="middle" x="
|
67
|
+
<polygon fill="#add8e6" stroke="#000000" points="334.5,-180 210.5,-180 210.5,-144 334.5,-144 334.5,-180"/>
|
68
|
+
<text text-anchor="middle" x="272.5" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
|
69
69
|
</g>
|
70
70
|
<!-- Language/C++14 -->
|
71
71
|
<g id="node7" class="node">
|
72
72
|
<title>Language/C++14</title>
|
73
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
74
|
-
<text text-anchor="middle" x="
|
73
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="301.5,-252 157.5,-252 157.5,-216 301.5,-216 301.5,-252"/>
|
74
|
+
<text text-anchor="middle" x="229.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
|
75
75
|
</g>
|
76
76
|
<!-- Language/C++14->Compiler/clang -->
|
77
77
|
<g id="edge5" class="edge">
|
78
78
|
<title>Language/C++14->Compiler/clang</title>
|
79
|
-
<path fill="none" stroke="#000000" d="
|
79
|
+
<path fill="none" stroke="#000000" d="M240.3507,-215.8314C246.8194,-205 255.0088,-191.2876 261.5032,-180.4133"/>
|
80
80
|
</g>
|
81
81
|
<!-- Language/C++17 -->
|
82
82
|
<g id="node8" class="node">
|
83
83
|
<title>Language/C++17</title>
|
84
|
-
<polygon fill="#ffffff" stroke="#000000" points="
|
85
|
-
<text text-anchor="middle" x="
|
84
|
+
<polygon fill="#ffffff" stroke="#000000" points="463.5,-252 319.5,-252 319.5,-216 463.5,-216 463.5,-252"/>
|
85
|
+
<text text-anchor="middle" x="391.5" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
|
86
86
|
</g>
|
87
87
|
<!-- Language/C++17->Compiler/clang -->
|
88
88
|
<g id="edge6" class="edge">
|
89
89
|
<title>Language/C++17->Compiler/clang</title>
|
90
|
-
<path fill="none" stroke="#000000" d="
|
90
|
+
<path fill="none" stroke="#000000" d="M361.4713,-215.8314C343.4318,-204.9167 320.5569,-191.0764 302.5191,-180.1628"/>
|
91
91
|
</g>
|
92
92
|
</g>
|
93
93
|
</svg>
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# Copyright, 2019, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require 'build/dependency'
|
22
|
+
|
23
|
+
class Package
|
24
|
+
include Build::Dependency
|
25
|
+
|
26
|
+
def initialize(name = nil)
|
27
|
+
@name = name
|
28
|
+
end
|
29
|
+
|
30
|
+
attr :name
|
31
|
+
|
32
|
+
def inspect
|
33
|
+
"<Package:#{@name}>"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
RSpec.shared_context "app packages" do
|
38
|
+
let(:app) do
|
39
|
+
Package.new('app').tap do |package|
|
40
|
+
package.provides 'app'
|
41
|
+
package.depends 'lib', private: true
|
42
|
+
package.depends :platform, private: true
|
43
|
+
package.depends 'Language/C++14', private: true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
let(:tests) do
|
48
|
+
Package.new('tests').tap do |package|
|
49
|
+
package.provides 'tests'
|
50
|
+
package.depends 'lib', private: true
|
51
|
+
package.depends :platform, private: true
|
52
|
+
package.depends 'Language/C++17', private: true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
let(:lib) do
|
57
|
+
Package.new('lib').tap do |package|
|
58
|
+
package.provides 'lib'
|
59
|
+
package.depends :platform, private: true
|
60
|
+
package.depends 'Language/C++17', private: true
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
let(:platform) do
|
65
|
+
Package.new('Platform/linux').tap do |package|
|
66
|
+
package.provides platform: 'Platform/linux'
|
67
|
+
package.provides 'Platform/linux'
|
68
|
+
package.depends :variant
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
let(:variant) do
|
73
|
+
Package.new('Variant/debug').tap do |package|
|
74
|
+
package.provides variant: 'Variant/debug'
|
75
|
+
package.provides 'Variant/debug'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
let(:compiler) do
|
80
|
+
Package.new('Compiler/clang').tap do |package|
|
81
|
+
package.provides 'Language/C++14'
|
82
|
+
package.provides 'Language/C++17'
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
let(:packages) {[app, tests, lib, platform, variant, compiler]}
|
87
|
+
|
88
|
+
let(:visualization) {Build::Dependency::Visualization.new}
|
89
|
+
end
|
@@ -18,6 +18,8 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
+
require_relative 'package'
|
22
|
+
|
21
23
|
RSpec.describe Build::Dependency::PartialChain do
|
22
24
|
describe "app chain" do
|
23
25
|
include_context "app packages"
|
@@ -46,7 +48,7 @@ RSpec.describe Build::Dependency::PartialChain do
|
|
46
48
|
|
47
49
|
graph = visualization.generate(chain)
|
48
50
|
|
49
|
-
Graphviz
|
51
|
+
Graphviz.output(graph, path: "full.svg", format: 'svg')
|
50
52
|
end
|
51
53
|
|
52
54
|
subject {described_class.new(chain, app.dependencies)}
|
@@ -61,7 +63,7 @@ RSpec.describe Build::Dependency::PartialChain do
|
|
61
63
|
|
62
64
|
graph = visualization.generate(subject)
|
63
65
|
|
64
|
-
Graphviz
|
66
|
+
Graphviz.output(graph, path: "partial.svg", format: 'svg')
|
65
67
|
end
|
66
68
|
end
|
67
69
|
|
@@ -18,13 +18,15 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
+
require_relative 'package'
|
22
|
+
|
21
23
|
RSpec.describe Build::Dependency::Provider do
|
22
24
|
include_context "app packages"
|
23
25
|
|
24
26
|
let(:provider) do
|
25
27
|
Package.new("test").tap do |package|
|
26
28
|
package.depends "a", private: true
|
27
|
-
package.depends "b"
|
29
|
+
package.depends "b", public: true
|
28
30
|
package.depends :variant
|
29
31
|
|
30
32
|
package.provides "c" do
|
@@ -60,7 +62,7 @@ RSpec.describe Build::Dependency::Provider do
|
|
60
62
|
end
|
61
63
|
|
62
64
|
describe Build::Dependency::Depends do
|
63
|
-
subject {provider.dependencies
|
65
|
+
subject {provider.dependencies["a"]}
|
64
66
|
|
65
67
|
it "should have a name" do
|
66
68
|
expect(subject.name).to be == "a"
|
@@ -73,6 +75,38 @@ RSpec.describe Build::Dependency::Provider do
|
|
73
75
|
it "should format nicely" do
|
74
76
|
expect(subject.to_s).to be == 'depends on "a" {:private=>true}'
|
75
77
|
end
|
78
|
+
|
79
|
+
it "should be private" do
|
80
|
+
expect(subject).to be_private
|
81
|
+
end
|
82
|
+
|
83
|
+
it "should not be public" do
|
84
|
+
expect(subject).to_not be_public
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe Build::Dependency::Depends do
|
89
|
+
subject {provider.dependencies["b"]}
|
90
|
+
|
91
|
+
it "should be public" do
|
92
|
+
expect(subject).to be_public
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should not be private" do
|
96
|
+
expect(subject).to_not be_private
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
describe Build::Dependency::Depends do
|
101
|
+
subject {provider.dependencies[:variant]}
|
102
|
+
|
103
|
+
it "should not be public" do
|
104
|
+
expect(subject).to_not be_public
|
105
|
+
end
|
106
|
+
|
107
|
+
it "should not be private" do
|
108
|
+
expect(subject).to_not be_private
|
109
|
+
end
|
76
110
|
end
|
77
111
|
|
78
112
|
describe Build::Dependency::Alias do
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# Copyright, 2012, by Samuel G. D. Williams. <http://www.codeotaku.com>
|
2
|
+
#
|
3
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
# of this software and associated documentation files (the "Software"), to deal
|
5
|
+
# in the Software without restriction, including without limitation the rights
|
6
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
# copies of the Software, and to permit persons to whom the Software is
|
8
|
+
# furnished to do so, subject to the following conditions:
|
9
|
+
#
|
10
|
+
# The above copyright notice and this permission notice shall be included in
|
11
|
+
# all copies or substantial portions of the Software.
|
12
|
+
#
|
13
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
# THE SOFTWARE.
|
20
|
+
|
21
|
+
require 'build/dependency/set'
|
22
|
+
|
23
|
+
RSpec.describe Build::Dependency::Set do
|
24
|
+
NamedObject = Struct.new(:name, :age)
|
25
|
+
|
26
|
+
let(:object_class) {Struct.new(:name, :age)}
|
27
|
+
|
28
|
+
describe "empty set" do
|
29
|
+
it "is empty" do
|
30
|
+
expect(subject).to be_empty
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "non-empty set" do
|
35
|
+
let(:bob) {object_class.new('Bob', 10)}
|
36
|
+
subject {described_class.new([bob])}
|
37
|
+
|
38
|
+
it "should contain named objects" do
|
39
|
+
expect(subject).to be_include bob
|
40
|
+
end
|
41
|
+
|
42
|
+
it "can enumerate all contained objects" do
|
43
|
+
expect(subject.each.to_a).to be == [bob]
|
44
|
+
end
|
45
|
+
|
46
|
+
it "contains one item" do
|
47
|
+
expect(subject).to_not be_empty
|
48
|
+
expect(subject.size).to be == 1
|
49
|
+
end
|
50
|
+
|
51
|
+
it "can be cleared" do
|
52
|
+
expect(subject).to_not be_empty
|
53
|
+
subject.clear
|
54
|
+
expect(subject).to be_empty
|
55
|
+
end
|
56
|
+
|
57
|
+
it "can delete items" do
|
58
|
+
expect(subject).to_not be_empty
|
59
|
+
subject.delete(bob)
|
60
|
+
expect(subject).to be_empty
|
61
|
+
end
|
62
|
+
|
63
|
+
it "can be frozen" do
|
64
|
+
subject.freeze
|
65
|
+
|
66
|
+
expect(subject).to be_frozen
|
67
|
+
end
|
68
|
+
|
69
|
+
it "can look up named items" do
|
70
|
+
expect(subject[bob.name]).to be == bob
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should have string representation" do
|
74
|
+
expect(subject.to_s).to be =~ /Bob/
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
it "could contain many items" do
|
79
|
+
names = ["Apple", "Orange", "Banana", "Kiwifruit"]
|
80
|
+
|
81
|
+
names.each_with_index do |name, index|
|
82
|
+
subject << NamedObject.new(name, index)
|
83
|
+
end
|
84
|
+
|
85
|
+
expect(subject.size).to be == names.size
|
86
|
+
end
|
87
|
+
end
|
@@ -18,6 +18,8 @@
|
|
18
18
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
19
|
# THE SOFTWARE.
|
20
20
|
|
21
|
+
require_relative 'package'
|
22
|
+
|
21
23
|
RSpec.describe Build::Dependency::Visualization do
|
22
24
|
include_context "app packages"
|
23
25
|
|
@@ -26,6 +28,6 @@ RSpec.describe Build::Dependency::Visualization do
|
|
26
28
|
|
27
29
|
graph = subject.generate(chain)
|
28
30
|
|
29
|
-
Graphviz
|
31
|
+
Graphviz.output(graph, path: "visualization.svg", format: 'svg')
|
30
32
|
end
|
31
33
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,91 +1,5 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
begin
|
4
|
-
require 'simplecov'
|
5
|
-
|
6
|
-
SimpleCov.start do
|
7
|
-
add_filter "/spec/"
|
8
|
-
end
|
9
|
-
|
10
|
-
if ENV['TRAVIS']
|
11
|
-
require 'coveralls'
|
12
|
-
Coveralls.wear!
|
13
|
-
end
|
14
|
-
rescue LoadError
|
15
|
-
warn "Could not load simplecov: #{$!}"
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
require "bundler/setup"
|
20
|
-
require "build/dependency"
|
21
|
-
|
22
|
-
class Package
|
23
|
-
include Build::Dependency
|
24
|
-
|
25
|
-
def initialize(name = nil)
|
26
|
-
@name = name
|
27
|
-
end
|
28
|
-
|
29
|
-
attr :name
|
30
|
-
|
31
|
-
def inspect
|
32
|
-
"<Package:#{@name}>"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
RSpec.shared_context "app packages" do
|
37
|
-
let(:app) do
|
38
|
-
Package.new('app').tap do |package|
|
39
|
-
package.provides 'app'
|
40
|
-
package.depends 'lib', private: true
|
41
|
-
package.depends :platform, private: true
|
42
|
-
package.depends 'Language/C++14', private: true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:tests) do
|
47
|
-
Package.new('tests').tap do |package|
|
48
|
-
package.provides 'tests'
|
49
|
-
package.depends 'lib', private: true
|
50
|
-
package.depends :platform, private: true
|
51
|
-
package.depends 'Language/C++17', private: true
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
let(:lib) do
|
56
|
-
Package.new('lib').tap do |package|
|
57
|
-
package.provides 'lib'
|
58
|
-
package.depends :platform, private: true
|
59
|
-
package.depends 'Language/C++17', private: true
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
let(:platform) do
|
64
|
-
Package.new('Platform/linux').tap do |package|
|
65
|
-
package.provides platform: 'Platform/linux'
|
66
|
-
package.provides 'Platform/linux'
|
67
|
-
package.depends :variant
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
let(:variant) do
|
72
|
-
Package.new('Variant/debug').tap do |package|
|
73
|
-
package.provides variant: 'Variant/debug'
|
74
|
-
package.provides 'Variant/debug'
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
let(:compiler) do
|
79
|
-
Package.new('Compiler/clang').tap do |package|
|
80
|
-
package.provides 'Language/C++14'
|
81
|
-
package.provides 'Language/C++17'
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
let(:packages) {[app, tests, lib, platform, variant, compiler]}
|
86
|
-
|
87
|
-
let(:visualization) {Build::Dependency::Visualization.new}
|
88
|
-
end
|
2
|
+
require 'covered/rspec'
|
89
3
|
|
90
4
|
RSpec.configure do |config|
|
91
5
|
# Enable flags like --only-failures and --next-failure
|
data/visualization.svg
CHANGED
@@ -4,144 +4,144 @@
|
|
4
4
|
<!-- Generated by graphviz version 2.40.1 (20161225.0304)
|
5
5
|
-->
|
6
6
|
<!-- Title: G Pages: 1 -->
|
7
|
-
<svg width="
|
8
|
-
viewBox="0.00 0.00
|
7
|
+
<svg width="400pt" height="404pt"
|
8
|
+
viewBox="0.00 0.00 400.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
9
9
|
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 400)">
|
10
10
|
<title>G</title>
|
11
|
-
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400
|
11
|
+
<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-400 396,-400 396,4 -4,4"/>
|
12
12
|
<!-- Variant/debug -->
|
13
13
|
<g id="node1" class="node">
|
14
14
|
<title>Variant/debug</title>
|
15
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
16
|
-
<text text-anchor="middle" x="
|
15
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="268.5,-36 151.5,-36 151.5,0 268.5,0 268.5,-36"/>
|
16
|
+
<text text-anchor="middle" x="210" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
|
17
17
|
</g>
|
18
18
|
<!-- variant -->
|
19
19
|
<g id="node2" class="node">
|
20
20
|
<title>variant</title>
|
21
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
22
|
-
<text text-anchor="middle" x="
|
21
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="243.5,-108 176.5,-108 176.5,-72 243.5,-72 243.5,-108"/>
|
22
|
+
<text text-anchor="middle" x="210" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
|
23
23
|
</g>
|
24
24
|
<!-- variant->Variant/debug -->
|
25
25
|
<g id="edge1" class="edge">
|
26
26
|
<title>variant->Variant/debug</title>
|
27
|
-
<path fill="none" stroke="#000000" d="
|
27
|
+
<path fill="none" stroke="#000000" d="M210,-71.8314C210,-61 210,-47.2876 210,-36.4133"/>
|
28
28
|
</g>
|
29
29
|
<!-- Platform/linux -->
|
30
30
|
<g id="node3" class="node">
|
31
31
|
<title>Platform/linux</title>
|
32
|
-
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="
|
33
|
-
<text text-anchor="middle" x="
|
32
|
+
<polygon fill="#add8e6" stroke="#000000" stroke-width="2" points="268,-180 152,-180 152,-144 268,-144 268,-180"/>
|
33
|
+
<text text-anchor="middle" x="210" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
|
34
34
|
</g>
|
35
35
|
<!-- Platform/linux->variant -->
|
36
36
|
<g id="edge2" class="edge">
|
37
37
|
<title>Platform/linux->variant</title>
|
38
|
-
<path fill="none" stroke="#000000" d="
|
39
|
-
<polygon fill="#000000" stroke="#000000" points="
|
38
|
+
<path fill="none" stroke="#000000" d="M210,-143.8314C210,-136.131 210,-126.9743 210,-118.4166"/>
|
39
|
+
<polygon fill="#000000" stroke="#000000" points="213.5001,-118.4132 210,-108.4133 206.5001,-118.4133 213.5001,-118.4132"/>
|
40
40
|
</g>
|
41
41
|
<!-- platform -->
|
42
42
|
<g id="node4" class="node">
|
43
43
|
<title>platform</title>
|
44
|
-
<polygon fill="#d3d3d3" stroke="#000000" points="
|
45
|
-
<text text-anchor="middle" x="
|
44
|
+
<polygon fill="#d3d3d3" stroke="#000000" points="230,-252 152,-252 152,-216 230,-216 230,-252"/>
|
45
|
+
<text text-anchor="middle" x="191" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
|
46
46
|
</g>
|
47
47
|
<!-- platform->Platform/linux -->
|
48
48
|
<g id="edge3" class="edge">
|
49
49
|
<title>platform->Platform/linux</title>
|
50
|
-
<path fill="none" stroke="#000000" d="
|
50
|
+
<path fill="none" stroke="#000000" d="M195.7945,-215.8314C198.6528,-205 202.2713,-191.2876 205.1409,-180.4133"/>
|
51
51
|
</g>
|
52
52
|
<!-- Compiler/clang -->
|
53
53
|
<g id="node5" class="node">
|
54
54
|
<title>Compiler/clang</title>
|
55
|
-
<polygon fill="#add8e6" stroke="#000000" points="134,-180
|
56
|
-
<text text-anchor="middle" x="
|
55
|
+
<polygon fill="#add8e6" stroke="#000000" points="134,-180 10,-180 10,-144 134,-144 134,-180"/>
|
56
|
+
<text text-anchor="middle" x="72" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
|
57
57
|
</g>
|
58
58
|
<!-- Language/C++14 -->
|
59
59
|
<g id="node6" class="node">
|
60
60
|
<title>Language/C++14</title>
|
61
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
62
|
-
<text text-anchor="middle" x="
|
61
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="144,-324 0,-324 0,-288 144,-288 144,-324"/>
|
62
|
+
<text text-anchor="middle" x="72" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
|
63
63
|
</g>
|
64
64
|
<!-- Language/C++14->Compiler/clang -->
|
65
65
|
<g id="edge4" class="edge">
|
66
66
|
<title>Language/C++14->Compiler/clang</title>
|
67
|
-
<path fill="none" stroke="#000000" d="
|
67
|
+
<path fill="none" stroke="#000000" d="M72,-287.7623C72,-260.0633 72,-207.7005 72,-180.0896"/>
|
68
68
|
</g>
|
69
69
|
<!-- Language/C++17 -->
|
70
70
|
<g id="node7" class="node">
|
71
71
|
<title>Language/C++17</title>
|
72
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
73
|
-
<text text-anchor="middle" x="
|
72
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="392,-252 248,-252 248,-216 392,-216 392,-252"/>
|
73
|
+
<text text-anchor="middle" x="320" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
|
74
74
|
</g>
|
75
75
|
<!-- Language/C++17->Compiler/clang -->
|
76
76
|
<g id="edge5" class="edge">
|
77
77
|
<title>Language/C++17->Compiler/clang</title>
|
78
|
-
<path fill="none" stroke="#000000" d="
|
78
|
+
<path fill="none" stroke="#000000" d="M257.7392,-215.9243C220.0037,-204.9688 172.0266,-191.04 134.2864,-180.0831"/>
|
79
79
|
</g>
|
80
80
|
<!-- lib -->
|
81
81
|
<g id="node8" class="node">
|
82
82
|
<title>lib</title>
|
83
|
-
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="
|
84
|
-
<text text-anchor="middle" x="
|
83
|
+
<polygon fill="#ffffff" stroke="#000000" stroke-width="2" points="292,-324 238,-324 238,-288 292,-288 292,-324"/>
|
84
|
+
<text text-anchor="middle" x="265" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
|
85
85
|
</g>
|
86
86
|
<!-- lib->platform -->
|
87
87
|
<g id="edge6" class="edge">
|
88
88
|
<title>lib->platform</title>
|
89
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
90
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
89
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M246.3267,-287.8314C237.4751,-279.219 226.7514,-268.7851 217.1105,-259.4048"/>
|
90
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="219.2754,-256.6279 209.6674,-252.1628 214.3939,-261.645 219.2754,-256.6279"/>
|
91
91
|
</g>
|
92
92
|
<!-- lib->Language/C++17 -->
|
93
93
|
<g id="edge7" class="edge">
|
94
94
|
<title>lib->Language/C++17</title>
|
95
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
96
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
95
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M278.8788,-287.8314C285.2136,-279.5386 292.8384,-269.557 299.7926,-260.4533"/>
|
96
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="302.6452,-262.4847 305.9343,-252.4133 297.0825,-258.2353 302.6452,-262.4847"/>
|
97
97
|
</g>
|
98
98
|
<!-- app -->
|
99
99
|
<g id="node9" class="node">
|
100
100
|
<title>app</title>
|
101
|
-
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="
|
102
|
-
<text text-anchor="middle" x="
|
101
|
+
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="199,-396 145,-396 145,-360 199,-360 199,-396"/>
|
102
|
+
<text text-anchor="middle" x="172" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
|
103
103
|
</g>
|
104
104
|
<!-- app->platform -->
|
105
105
|
<g id="edge9" class="edge">
|
106
106
|
<title>app->platform</title>
|
107
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
108
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
107
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M174.4064,-359.7623C177.6471,-335.201 183.4465,-291.2474 187.2588,-262.3541"/>
|
108
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="190.7749,-262.4616 188.6132,-252.0896 183.8351,-261.5458 190.7749,-262.4616"/>
|
109
109
|
</g>
|
110
110
|
<!-- app->Language/C++14 -->
|
111
111
|
<g id="edge10" class="edge">
|
112
112
|
<title>app->Language/C++14</title>
|
113
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
114
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
113
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M146.7658,-359.8314C134.212,-350.7927 118.8717,-339.7476 105.3609,-330.0198"/>
|
114
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="107.3866,-327.1655 97.2261,-324.1628 103.2964,-332.8463 107.3866,-327.1655"/>
|
115
115
|
</g>
|
116
116
|
<!-- app->lib -->
|
117
117
|
<g id="edge8" class="edge">
|
118
118
|
<title>app->lib</title>
|
119
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
120
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
119
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M195.4678,-359.8314C207.0327,-350.8779 221.1404,-339.9558 233.6183,-330.2955"/>
|
120
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="235.775,-333.0521 241.5397,-324.1628 231.4898,-327.5171 235.775,-333.0521"/>
|
121
121
|
</g>
|
122
122
|
<!-- tests -->
|
123
123
|
<g id="node10" class="node">
|
124
124
|
<title>tests</title>
|
125
|
-
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="
|
126
|
-
<text text-anchor="middle" x="
|
125
|
+
<polygon fill="#ffa500" stroke="#000000" stroke-width="2" points="292,-396 238,-396 238,-360 292,-360 292,-396"/>
|
126
|
+
<text text-anchor="middle" x="265" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">tests</text>
|
127
127
|
</g>
|
128
128
|
<!-- tests->platform -->
|
129
129
|
<g id="edge12" class="edge">
|
130
130
|
<title>tests->platform</title>
|
131
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
132
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
131
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M251.438,-359.5475C244.2749,-349.3566 235.6216,-336.3027 229,-324 218.0804,-303.712 208.0496,-279.6131 201.039,-261.4605"/>
|
132
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="204.2882,-260.1576 197.4685,-252.0494 197.7434,-262.6407 204.2882,-260.1576"/>
|
133
133
|
</g>
|
134
134
|
<!-- tests->Language/C++17 -->
|
135
135
|
<g id="edge13" class="edge">
|
136
136
|
<title>tests->Language/C++17</title>
|
137
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
138
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
137
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M279.8853,-359.5185C287.2462,-349.5296 295.672,-336.6716 301,-324 309.3306,-304.1876 314.1533,-280.3321 316.8541,-262.1605"/>
|
138
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="320.3302,-262.5721 318.2095,-252.1917 313.3941,-261.6289 320.3302,-262.5721"/>
|
139
139
|
</g>
|
140
140
|
<!-- tests->lib -->
|
141
141
|
<g id="edge11" class="edge">
|
142
142
|
<title>tests->lib</title>
|
143
|
-
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="
|
144
|
-
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="
|
143
|
+
<path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M265,-359.8314C265,-352.131 265,-342.9743 265,-334.4166"/>
|
144
|
+
<polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="268.5001,-334.4132 265,-324.4133 261.5001,-334.4133 268.5001,-334.4132"/>
|
145
145
|
</g>
|
146
146
|
</g>
|
147
147
|
</svg>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: build-dependency
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Williams
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphviz
|
@@ -24,20 +24,34 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: covered
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rspec
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,12 +102,15 @@ files:
|
|
88
102
|
- lib/build/dependency/partial_chain.rb
|
89
103
|
- lib/build/dependency/provider.rb
|
90
104
|
- lib/build/dependency/resolver.rb
|
105
|
+
- lib/build/dependency/set.rb
|
91
106
|
- lib/build/dependency/version.rb
|
92
107
|
- lib/build/dependency/visualization.rb
|
93
108
|
- partial.svg
|
94
109
|
- spec/build/dependency/chain_spec.rb
|
110
|
+
- spec/build/dependency/package.rb
|
95
111
|
- spec/build/dependency/partial_chain_spec.rb
|
96
112
|
- spec/build/dependency/provider_spec.rb
|
113
|
+
- spec/build/dependency/set_spec.rb
|
97
114
|
- spec/build/dependency/visualization_spec.rb
|
98
115
|
- spec/build/dependency/wildcard_spec.rb
|
99
116
|
- spec/spec_helper.rb
|
@@ -117,15 +134,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
117
134
|
- !ruby/object:Gem::Version
|
118
135
|
version: '0'
|
119
136
|
requirements: []
|
120
|
-
|
121
|
-
rubygems_version: 2.7.8
|
137
|
+
rubygems_version: 3.0.2
|
122
138
|
signing_key:
|
123
139
|
specification_version: 4
|
124
140
|
summary: A set of data structures and algorithms for dependency resolution.
|
125
141
|
test_files:
|
126
142
|
- spec/build/dependency/chain_spec.rb
|
143
|
+
- spec/build/dependency/package.rb
|
127
144
|
- spec/build/dependency/partial_chain_spec.rb
|
128
145
|
- spec/build/dependency/provider_spec.rb
|
146
|
+
- spec/build/dependency/set_spec.rb
|
129
147
|
- spec/build/dependency/visualization_spec.rb
|
130
148
|
- spec/build/dependency/wildcard_spec.rb
|
131
149
|
- spec/spec_helper.rb
|