dake 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dake/executor.rb +1 -1
- data/lib/dake/resolver.rb +17 -18
- data/lib/dake/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5cbfb1274b657c4a5e7c998d196af197ecbe2efe4ff8f48131a99220d5a76e3
|
4
|
+
data.tar.gz: 5f58940173637dc3e4733f2cb242d88b4a2e3080054108101831576890648c10
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 78aa071f1564255a83ac88c241b2ea3756ef63abbd65f201d918d580e1cd81ae2ae56065801fa1808cfd62e642f7aacbabcecca48e9f74689793451acf6e0e3e
|
7
|
+
data.tar.gz: e121ff5e715686e55d2922d16df895359b516809402b54223175b7c5c65245d9bdaa53496156aac5ccc9d9054b7ec135b5a71ccacc46486ceacb6ece01cd2efe
|
data/lib/dake/executor.rb
CHANGED
@@ -43,7 +43,7 @@ class DakeExecutor
|
|
43
43
|
end
|
44
44
|
|
45
45
|
lock = Concurrent::ReadWriteLock.new
|
46
|
-
|
46
|
+
rebuild_set.each { |step| queue << step if @dep_graph.dep_step[step].all? { |dep| not rebuild_set.include? dep} }
|
47
47
|
|
48
48
|
while next_step = queue.deq
|
49
49
|
@pool.post(next_step) do |step|
|
data/lib/dake/resolver.rb
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
# note that this is not nessesarily the complete graph,
|
3
3
|
# the graph is only used to produce the given targets
|
4
4
|
DepGraph = Struct.new(
|
5
|
-
:succ_step,
|
6
|
-
:dep_step,
|
7
|
-
:step_list,
|
8
|
-
:root_step,
|
9
|
-
:
|
10
|
-
:step_target
|
5
|
+
:succ_step, # a dict maps each step in the DepGraph to the steps depend on it
|
6
|
+
:dep_step, # a dict maps each step in the DepGraph to the steps it depends on
|
7
|
+
:step_list, # a list of steps represents one sequential execution order
|
8
|
+
:root_step, # a set of steps that hos no dependant
|
9
|
+
:step_prereq, # a dict maps step to its prerequisite which has no corresponding step
|
10
|
+
:step_target # a dict maps each step in the DepGraph to its output files used while resolving targets
|
11
11
|
)
|
12
12
|
|
13
13
|
class DakeResolver
|
@@ -57,8 +57,8 @@ class DakeResolver
|
|
57
57
|
else
|
58
58
|
stack.pop
|
59
59
|
|
60
|
-
if dep_graph.
|
61
|
-
step.
|
60
|
+
if dep_graph.step_prereq[step]
|
61
|
+
dep_graph.step_prereq[step].each do |prereq|
|
62
62
|
if prereq.flag != '?' and not prereq.scheme.exist?
|
63
63
|
raise "No step found for building file `#{prereq.scheme.path}'."
|
64
64
|
end
|
@@ -70,14 +70,10 @@ class DakeResolver
|
|
70
70
|
end
|
71
71
|
|
72
72
|
if target_opts.build_mode == :check and (up_tree_steps.include? step or down_tree_steps.include? step)
|
73
|
-
if dep_graph.
|
74
|
-
need_rebuild << step
|
73
|
+
if dep_graph.dep_step[step].any? { |dep_step| need_rebuild.include? dep_step }
|
74
|
+
need_rebuild << step
|
75
75
|
else
|
76
|
-
if dep_graph.
|
77
|
-
need_rebuild << step
|
78
|
-
else
|
79
|
-
need_rebuild << step if need_execute?(dep_graph.step_target[step], step)
|
80
|
-
end
|
76
|
+
need_rebuild << step if need_execute?(dep_graph.step_target[step], step)
|
81
77
|
end
|
82
78
|
end
|
83
79
|
|
@@ -239,12 +235,12 @@ class DakeResolver
|
|
239
235
|
step_list = []
|
240
236
|
visited = Set.new
|
241
237
|
path_visited = Set.new
|
242
|
-
leaf_steps = Set.new
|
243
238
|
target_steps = Set.new
|
244
239
|
succ_step_dict = {}
|
245
240
|
dep_step_dict = {}
|
246
241
|
dep_step_list = {}
|
247
242
|
succ_target_dict = {}
|
243
|
+
step_prereq_dict = {}
|
248
244
|
|
249
245
|
target_pairs.each do |target_name, target_opts|
|
250
246
|
if target_opts.tag
|
@@ -275,6 +271,10 @@ class DakeResolver
|
|
275
271
|
step.prerequisites.map! { |file| @analyzer.analyze_file(file, :prerequisites, step) }.flatten!
|
276
272
|
step.prerequisites.each do |dep|
|
277
273
|
dep_steps = find_steps(dep.scheme, dep.tag)
|
274
|
+
if dep_steps.empty?
|
275
|
+
step_prereq_dict[step] ||= Set.new
|
276
|
+
step_prereq_dict[step] << dep
|
277
|
+
end
|
278
278
|
dep_steps.each do |dep_step|
|
279
279
|
dep_step_dict[step] << dep_step
|
280
280
|
succ_step_dict[dep_step] ||= Set.new
|
@@ -302,11 +302,10 @@ class DakeResolver
|
|
302
302
|
stack.pop
|
303
303
|
path_visited.delete step
|
304
304
|
step_list << step
|
305
|
-
leaf_steps << step if dep_step_dict[step].empty?
|
306
305
|
end
|
307
306
|
end
|
308
307
|
end
|
309
308
|
root_steps = target_steps.select { |step| succ_step_dict[step].empty? }.to_set
|
310
|
-
DepGraph.new(succ_step_dict, dep_step_dict, step_list, root_steps,
|
309
|
+
DepGraph.new(succ_step_dict, dep_step_dict, step_list, root_steps, step_prereq_dict, succ_target_dict)
|
311
310
|
end
|
312
311
|
end
|
data/lib/dake/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dake
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- minor6th
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|