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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65c0e1207b71d3690bd1563328d3769b961893495e22d864a5fe62f556e3d07e
4
- data.tar.gz: 313048959a43750d5870f3af1e76b7055f041f7993c5123d17c220df417937b2
3
+ metadata.gz: 5e75821952292fe3d139db84771db2b5270afdb26039a5637c2584889caffeec
4
+ data.tar.gz: 2d6088783e2ab1dddb8510c40ad0fae285ab560ba7e03c8a1cbcf5ef4b3371a6
5
5
  SHA512:
6
- metadata.gz: 2cb579aa45e4e3909ae9fae81672d3840bd19e83edab636a5e82ed321c894c2d15b4e16793ccbc6f8746c7990e6c3b1e2f8c660878e7a63841f38118cbb5c93c
7
- data.tar.gz: b5856d282613dc9b3751180f3f2e2f25eda993d61bbfb4a088c4375357f7db2b67392b9e9715349ed28a272b330bb99008f973ed799e65b63cea067d3c1a03ff
6
+ metadata.gz: d38ed1a6a757143480bb7f9daa122a3d89977ae886a553ce4e6123ce7f8d562185e76a925a828b8c7f089a660a26c496f135baf06cda3afe3b42ebe809f83edc
7
+ data.tar.gz: 4cccf4a5c64f3294d4669b371b72357895942dc785b39371cd545c1c3d945eac3108a911491b14bb98d3a80dbb57c33a1d3748198652349e7defc070538d678a
@@ -1,19 +1,17 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: trusty
2
+ dist: xenial
4
3
  cache: bundler
5
- rvm:
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
@@ -17,7 +17,8 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_dependency "graphviz"
19
19
 
20
- spec.add_development_dependency "bundler", "~> 1.3"
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="357pt" height="404pt"
8
- viewBox="0.00 0.00 357.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
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 353,-400 353,4 -4,4"/>
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="130,-36 4,-36 4,0 130,0 130,-36"/>
16
- <text text-anchor="middle" x="67" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
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="104.5,-108 29.5,-108 29.5,-72 104.5,-72 104.5,-108"/>
22
- <text text-anchor="middle" x="67" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
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&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M67,-71.8314C67,-61 67,-47.2876 67,-36.4133"/>
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="134,-180 0,-180 0,-144 134,-144 134,-180"/>
33
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
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&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M67,-143.8314C67,-136.131 67,-126.9743 67,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="70.5001,-118.4132 67,-108.4133 63.5001,-118.4133 70.5001,-118.4132"/>
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="109,-252 25,-252 25,-216 109,-216 109,-252"/>
45
- <text text-anchor="middle" x="67" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
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&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M67,-215.8314C67,-205 67,-191.2876 67,-180.4133"/>
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="321,-180 187,-180 187,-144 321,-144 321,-180"/>
56
- <text text-anchor="middle" x="254" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
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="349,-324 215,-324 215,-288 349,-288 349,-324"/>
62
- <text text-anchor="middle" x="282" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
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&#45;&gt;Compiler/clang -->
65
65
  <g id="edge4" class="edge">
66
66
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
67
- <path fill="none" stroke="#000000" d="M280.4243,-287.9292C278.6363,-269.6554 275.2651,-240.6656 270,-216 267.4281,-203.9513 263.5119,-190.6816 260.1978,-180.3117"/>
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="261,-252 127,-252 127,-216 261,-216 261,-252"/>
73
- <text text-anchor="middle" x="194" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
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&#45;&gt;Compiler/clang -->
76
76
  <g id="edge5" class="edge">
77
77
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
78
- <path fill="none" stroke="#000000" d="M209.1405,-215.8314C218.1666,-205 229.5937,-191.2876 238.6556,-180.4133"/>
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="190,-324 136,-324 136,-288 190,-288 190,-324"/>
84
- <text text-anchor="middle" x="163" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
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&#45;&gt;platform -->
87
87
  <g id="edge6" class="edge">
88
88
  <title>lib&#45;&gt;platform</title>
89
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M138.7751,-287.8314C126.8372,-278.8779 112.2744,-267.9558 99.394,-258.2955"/>
90
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="101.3171,-255.3629 91.2171,-252.1628 97.1171,-260.9629 101.3171,-255.3629"/>
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&#45;&gt;Language/C++17 -->
93
93
  <g id="edge7" class="edge">
94
94
  <title>lib&#45;&gt;Language/C++17</title>
95
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M170.8226,-287.8314C174.2109,-279.9617 178.2541,-270.5712 182.0076,-261.8533"/>
96
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="185.3321,-262.9822 186.0721,-252.4133 178.9027,-260.214 185.3321,-262.9822"/>
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="190,-396 136,-396 136,-360 190,-360 190,-396"/>
102
- <text text-anchor="middle" x="163" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
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&#45;&gt;platform -->
105
105
  <g id="edge9" class="edge">
106
106
  <title>app&#45;&gt;platform</title>
107
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M150.8415,-359.7623C134.1067,-334.66 103.8678,-289.3017 84.6447,-260.4671"/>
108
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="87.519,-258.4687 79.0597,-252.0896 81.6946,-262.3516 87.519,-258.4687"/>
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&#45;&gt;Language/C++14 -->
111
111
  <g id="edge10" class="edge">
112
112
  <title>app&#45;&gt;Language/C++14</title>
113
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M190.0029,-361.6621C205.7696,-352.1226 225.9279,-339.926 243.3541,-329.3824"/>
114
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="245.436,-332.2136 252.18,-324.0423 241.8123,-326.2245 245.436,-332.2136"/>
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&#45;&gt;lib -->
117
117
  <g id="edge8" class="edge">
118
118
  <title>app&#45;&gt;lib</title>
119
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M163,-359.8314C163,-352.131 163,-342.9743 163,-334.4166"/>
120
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="166.5001,-334.4132 163,-324.4133 159.5001,-334.4133 166.5001,-334.4132"/>
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
- require 'set'
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
- @options[:private]
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 Set<Dependency>
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
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Build
22
22
  module Dependency
23
- VERSION = "1.3.0"
23
+ VERSION = "1.4.0"
24
24
  end
25
25
  end
@@ -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="465pt" height="332pt"
8
- viewBox="0.00 0.00 465.00 332.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
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 461,-328 461,4 -4,4"/>
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="130,-36 4,-36 4,0 130,0 130,-36"/>
16
- <text text-anchor="middle" x="67" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
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="104.5,-108 29.5,-108 29.5,-72 104.5,-72 104.5,-108"/>
22
- <text text-anchor="middle" x="67" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
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&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M67,-71.8314C67,-61 67,-47.2876 67,-36.4133"/>
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="134,-180 0,-180 0,-144 134,-144 134,-180"/>
33
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
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&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M67,-143.8314C67,-136.131 67,-126.9743 67,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="70.5001,-118.4132 67,-108.4133 63.5001,-118.4133 70.5001,-118.4132"/>
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="109,-252 25,-252 25,-216 109,-216 109,-252"/>
45
- <text text-anchor="middle" x="67" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
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&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M67,-215.8314C67,-205 67,-191.2876 67,-180.4133"/>
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="94,-324 40,-324 40,-288 94,-288 94,-324"/>
56
- <text text-anchor="middle" x="67" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
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&#45;&gt;platform -->
59
59
  <g id="edge4" class="edge">
60
60
  <title>lib&#45;&gt;platform</title>
61
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M67,-287.8314C67,-280.131 67,-270.9743 67,-262.4166"/>
62
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="70.5001,-262.4132 67,-252.4133 63.5001,-262.4133 70.5001,-262.4132"/>
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="349,-180 215,-180 215,-144 349,-144 349,-180"/>
68
- <text text-anchor="middle" x="282" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
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="305,-252 171,-252 171,-216 305,-216 305,-252"/>
74
- <text text-anchor="middle" x="238" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
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&#45;&gt;Compiler/clang -->
77
77
  <g id="edge5" class="edge">
78
78
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
79
- <path fill="none" stroke="#000000" d="M249.1031,-215.8314C255.7222,-205 264.102,-191.2876 270.7474,-180.4133"/>
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="457,-252 323,-252 323,-216 457,-216 457,-252"/>
85
- <text text-anchor="middle" x="390" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
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&#45;&gt;Compiler/clang -->
88
88
  <g id="edge6" class="edge">
89
89
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
90
- <path fill="none" stroke="#000000" d="M362.747,-215.8314C346.3751,-204.9167 325.6147,-191.0764 309.2442,-180.1628"/>
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>
@@ -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 do
22
24
  describe "valid dependency resolution" do
23
25
  let(:a) do
@@ -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::output(graph, path: "full.svg")
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::output(graph, path: "partial.svg")
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.first}
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::output(graph, path: "visualization.svg")
31
+ Graphviz.output(graph, path: "visualization.svg", format: 'svg')
30
32
  end
31
33
  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 do
22
24
  describe "test packages" do
23
25
  let(:a) do
@@ -1,91 +1,5 @@
1
1
 
2
- if ENV['COVERAGE'] || ENV['TRAVIS']
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
@@ -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="385pt" height="404pt"
8
- viewBox="0.00 0.00 385.00 404.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
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 381,-400 381,4 -4,4"/>
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="282,-36 156,-36 156,0 282,0 282,-36"/>
16
- <text text-anchor="middle" x="219" y="-14.3" font-family="Monaco" font-size="14.00" fill="#000000">Variant/debug</text>
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="256.5,-108 181.5,-108 181.5,-72 256.5,-72 256.5,-108"/>
22
- <text text-anchor="middle" x="219" y="-86.3" font-family="Monaco" font-size="14.00" fill="#000000">variant</text>
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&#45;&gt;Variant/debug -->
25
25
  <g id="edge1" class="edge">
26
26
  <title>variant&#45;&gt;Variant/debug</title>
27
- <path fill="none" stroke="#000000" d="M219,-71.8314C219,-61 219,-47.2876 219,-36.4133"/>
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="286,-180 152,-180 152,-144 286,-144 286,-180"/>
33
- <text text-anchor="middle" x="219" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Platform/linux</text>
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&#45;&gt;variant -->
36
36
  <g id="edge2" class="edge">
37
37
  <title>Platform/linux&#45;&gt;variant</title>
38
- <path fill="none" stroke="#000000" d="M219,-143.8314C219,-136.131 219,-126.9743 219,-118.4166"/>
39
- <polygon fill="#000000" stroke="#000000" points="222.5001,-118.4132 219,-108.4133 215.5001,-118.4133 222.5001,-118.4132"/>
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="225,-252 141,-252 141,-216 225,-216 225,-252"/>
45
- <text text-anchor="middle" x="183" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">platform</text>
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&#45;&gt;Platform/linux -->
48
48
  <g id="edge3" class="edge">
49
49
  <title>platform&#45;&gt;Platform/linux</title>
50
- <path fill="none" stroke="#000000" d="M192.0843,-215.8314C197.5,-205 204.3562,-191.2876 209.7934,-180.4133"/>
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 0,-180 0,-144 134,-144 134,-180"/>
56
- <text text-anchor="middle" x="67" y="-158.3" font-family="Monaco" font-size="14.00" fill="#000000">Compiler/clang</text>
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="134,-324 0,-324 0,-288 134,-288 134,-324"/>
62
- <text text-anchor="middle" x="67" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++14</text>
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&#45;&gt;Compiler/clang -->
65
65
  <g id="edge4" class="edge">
66
66
  <title>Language/C++14&#45;&gt;Compiler/clang</title>
67
- <path fill="none" stroke="#000000" d="M67,-287.7623C67,-260.0633 67,-207.7005 67,-180.0896"/>
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="377,-252 243,-252 243,-216 377,-216 377,-252"/>
73
- <text text-anchor="middle" x="310" y="-230.3" font-family="Monaco" font-size="14.00" fill="#000000">Language/C++17</text>
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&#45;&gt;Compiler/clang -->
76
76
  <g id="edge5" class="edge">
77
77
  <title>Language/C++17&#45;&gt;Compiler/clang</title>
78
- <path fill="none" stroke="#000000" d="M248.9945,-215.9243C212.0197,-204.9688 165.0099,-191.04 128.0306,-180.0831"/>
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="282,-324 228,-324 228,-288 282,-288 282,-324"/>
84
- <text text-anchor="middle" x="255" y="-302.3" font-family="Monaco" font-size="14.00" fill="#000000">lib</text>
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&#45;&gt;platform -->
87
87
  <g id="edge6" class="edge">
88
88
  <title>lib&#45;&gt;platform</title>
89
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M236.8314,-287.8314C228.2848,-279.2848 217.9443,-268.9443 208.6198,-259.6198"/>
90
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="210.9592,-257.0095 201.4133,-252.4133 206.0095,-261.9592 210.9592,-257.0095"/>
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&#45;&gt;Language/C++17 -->
93
93
  <g id="edge7" class="edge">
94
94
  <title>lib&#45;&gt;Language/C++17</title>
95
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M268.8788,-287.8314C275.2136,-279.5386 282.8384,-269.557 289.7926,-260.4533"/>
96
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="292.6452,-262.4847 295.9343,-252.4133 287.0825,-258.2353 292.6452,-262.4847"/>
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="189,-396 135,-396 135,-360 189,-360 189,-396"/>
102
- <text text-anchor="middle" x="162" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">app</text>
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&#45;&gt;platform -->
105
105
  <g id="edge9" class="edge">
106
106
  <title>app&#45;&gt;platform</title>
107
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M164.6597,-359.7623C168.2415,-335.201 174.6514,-291.2474 178.865,-262.3541"/>
108
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="182.3821,-262.4901 180.3619,-252.0896 175.4554,-261.4798 182.3821,-262.4901"/>
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&#45;&gt;Language/C++14 -->
111
111
  <g id="edge10" class="edge">
112
112
  <title>app&#45;&gt;Language/C++14</title>
113
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M138.0275,-359.8314C126.2139,-350.8779 111.8028,-339.9558 99.0565,-330.2955"/>
114
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="101.0486,-327.4137 90.9648,-324.1628 96.8205,-332.9925 101.0486,-327.4137"/>
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&#45;&gt;lib -->
117
117
  <g id="edge8" class="edge">
118
118
  <title>app&#45;&gt;lib</title>
119
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M185.4678,-359.8314C197.0327,-350.8779 211.1404,-339.9558 223.6183,-330.2955"/>
120
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="225.775,-333.0521 231.5397,-324.1628 221.4898,-327.5171 225.775,-333.0521"/>
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="284.5,-396 225.5,-396 225.5,-360 284.5,-360 284.5,-396"/>
126
- <text text-anchor="middle" x="255" y="-374.3" font-family="Monaco" font-size="14.00" fill="#000000">tests</text>
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&#45;&gt;platform -->
129
129
  <g id="edge12" class="edge">
130
130
  <title>tests&#45;&gt;platform</title>
131
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M241.3445,-359.5973C234.154,-349.4209 225.5044,-336.3651 219,-324 208.4065,-303.8615 198.9605,-279.8887 192.405,-261.7501"/>
132
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="195.6176,-260.3365 188.9822,-252.0768 189.0185,-262.6716 195.6176,-260.3365"/>
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&#45;&gt;Language/C++17 -->
135
135
  <g id="edge13" class="edge">
136
136
  <title>tests&#45;&gt;Language/C++17</title>
137
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M269.8853,-359.5185C277.2462,-349.5296 285.672,-336.6716 291,-324 299.3306,-304.1876 304.1533,-280.3321 306.8541,-262.1605"/>
138
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="310.3302,-262.5721 308.2095,-252.1917 303.3941,-261.6289 310.3302,-262.5721"/>
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&#45;&gt;lib -->
141
141
  <g id="edge11" class="edge">
142
142
  <title>tests&#45;&gt;lib</title>
143
- <path fill="none" stroke="#000000" stroke-opacity="0.372549" d="M255,-359.8314C255,-352.131 255,-342.9743 255,-334.4166"/>
144
- <polygon fill="none" stroke="#000000" stroke-opacity="0.372549" points="258.5001,-334.4132 255,-324.4133 251.5001,-334.4133 258.5001,-334.4132"/>
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.3.0
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-14 00:00:00.000000000 Z
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: '1.3'
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: '1.3'
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
- rubyforge_project:
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