build-dependency 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|