bake-toolkit 2.34.1 → 2.34.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/bakery +2 -2
- data/lib/blocks/block.rb +5 -2
- data/lib/common/process.rb +27 -11
- data/lib/common/version.rb +8 -1
- data/lib/multithread/job.rb +12 -24
- metadata +15 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98b05bb56fe7c5eaf9c8d6c6a3c542736a790ced
|
4
|
+
data.tar.gz: 79780886841138ccce28d47f67debb6233d55da5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f986ef4d25e75f8e6afed97a91205a5794f5165509a2afcb501863276475e79fff702dec233300d9011cc1373ae9bc3a80b37097090bd8e1c6c7434d4ed3c419
|
7
|
+
data.tar.gz: c3af0083a89660fc6bd08d86a3ea6a27ab9778e5a604cb10ce9abdc6108c739737eea2c275d3b9933139ce729458f03c4be7c2cff5c6ef5807d5505743e26987
|
data/bin/bakery
CHANGED
@@ -138,11 +138,11 @@ module Bake
|
|
138
138
|
Bake::cleanup
|
139
139
|
ExitHelper.reset_exit_code
|
140
140
|
|
141
|
-
if runOk == false
|
141
|
+
if runOk == false && abort == false
|
142
142
|
exitValue = 1
|
143
143
|
failedRuns << "bake " + cmd.join(" ")
|
144
144
|
if @options.error
|
145
|
-
msg1 << "
|
145
|
+
msg1 << "stopped on first error"
|
146
146
|
abort = true
|
147
147
|
break
|
148
148
|
end
|
data/lib/blocks/block.rb
CHANGED
@@ -187,7 +187,9 @@ module Bake
|
|
187
187
|
def self.waitForAllThreads
|
188
188
|
if @@threads.length > 0
|
189
189
|
STDOUT.puts "DEBUG_THREADS: Wait for all threads." if Bake.options.debug_threads
|
190
|
-
ThreadsWait.all_waits(@@threads)
|
190
|
+
ThreadsWait.all_waits(@@threads) { |t|
|
191
|
+
STDOUT.puts "DEBUG_THREADS: Waited for #{t.object_id}"
|
192
|
+
}
|
191
193
|
@@threads = []
|
192
194
|
STDOUT.puts "DEBUG_THREADS: All threads finished." if Bake.options.debug_threads
|
193
195
|
end
|
@@ -289,7 +291,7 @@ module Bake
|
|
289
291
|
begin
|
290
292
|
STDOUT.puts "DEBUG_THREADS: Wait for free thread." if Bake.options.debug_threads
|
291
293
|
endedThread = ThreadsWait.new(@@threads).next_wait
|
292
|
-
STDOUT.puts "DEBUG_THREADS: Thread free." if Bake.options.debug_threads
|
294
|
+
STDOUT.puts "DEBUG_THREADS: Thread free: #{endedThread.object_id}" if Bake.options.debug_threads
|
293
295
|
@@threads.delete(endedThread)
|
294
296
|
rescue ErrNoWaitingThread
|
295
297
|
end
|
@@ -494,6 +496,7 @@ module Bake
|
|
494
496
|
@@threads = []
|
495
497
|
@@result = true
|
496
498
|
@@mutex = Mutex.new
|
499
|
+
Bake::Multithread::Jobs.init_semaphore()
|
497
500
|
end
|
498
501
|
|
499
502
|
def startup
|
data/lib/common/process.rb
CHANGED
@@ -6,7 +6,7 @@ module Bake
|
|
6
6
|
|
7
7
|
def self.run(cmdLineArray, immediateOutput=false, force=true, outpipe=nil, exitCodeArray = [0], dir = Dir.pwd)
|
8
8
|
rd, wr = IO.pipe
|
9
|
-
@@rd = rd
|
9
|
+
@@rd = force ? rd : nil
|
10
10
|
duppedCmdLineArray = cmdLineArray.dup
|
11
11
|
duppedCmdLineArray << { :chdir=>dir, :err=>wr, :out=>(outpipe ? outpipe : wr) }
|
12
12
|
begin
|
@@ -14,7 +14,7 @@ module Bake
|
|
14
14
|
rescue Exception => e
|
15
15
|
return [false, e.message]
|
16
16
|
end
|
17
|
-
@@pid = pid
|
17
|
+
@@pid = force ? pid : nil
|
18
18
|
wr.close
|
19
19
|
output = ""
|
20
20
|
begin
|
@@ -42,22 +42,38 @@ module Bake
|
|
42
42
|
pid, status = Process.wait2(pid)
|
43
43
|
@@pid = nil
|
44
44
|
@@rd = nil
|
45
|
+
|
46
|
+
if status.nil? && output.empty?
|
47
|
+
puts output.inspect
|
48
|
+
output = "Process returned with unknown exit status"
|
49
|
+
puts output if immediateOutput
|
50
|
+
end
|
45
51
|
return [false, output] if status.nil?
|
52
|
+
|
46
53
|
exitCodeArray = [0] if exitCodeArray.empty?
|
47
|
-
|
54
|
+
ret = (exitCodeArray.include?status.exitstatus)
|
55
|
+
if ret == false && output.empty?
|
56
|
+
output = "Process returned with exit status #{status.exitstatus}"
|
57
|
+
puts output if immediateOutput
|
58
|
+
end
|
59
|
+
[ret, output]
|
48
60
|
end
|
49
61
|
|
50
62
|
def self.killProcess(force) # do not kill compile processes or implement rd and pid array if really needed
|
51
|
-
|
52
|
-
|
53
|
-
|
63
|
+
if @@rd
|
64
|
+
begin
|
65
|
+
@@rd.close
|
66
|
+
rescue Exception => e
|
67
|
+
end
|
68
|
+
@@rd = nil
|
54
69
|
end
|
55
|
-
|
56
|
-
|
57
|
-
|
70
|
+
if @@pid
|
71
|
+
begin
|
72
|
+
Process.kill("KILL",@@pid)
|
73
|
+
rescue Exception => e
|
74
|
+
end
|
75
|
+
@@pid = nil
|
58
76
|
end
|
59
|
-
@@rd = nil
|
60
|
-
@@pid = nil
|
61
77
|
end
|
62
78
|
|
63
79
|
end
|
data/lib/common/version.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Bake
|
2
2
|
class Version
|
3
3
|
def self.number
|
4
|
-
"2.34.
|
4
|
+
"2.34.2"
|
5
5
|
end
|
6
6
|
|
7
7
|
def self.printBakeVersion(ry = "")
|
@@ -23,6 +23,7 @@ module Bake
|
|
23
23
|
|
24
24
|
expectedRGen = "0.8.2"
|
25
25
|
expectedRText = "0.9.0"
|
26
|
+
expectedConcurrent = "1.0.5"
|
26
27
|
|
27
28
|
begin
|
28
29
|
gem "rgen", "=#{expectedRGen}"
|
@@ -36,4 +37,10 @@ module Bake
|
|
36
37
|
puts "Warning: Failed to load rtext #{expectedRText}, using latest version"
|
37
38
|
end
|
38
39
|
|
40
|
+
begin
|
41
|
+
gem "concurrent-ruby", "=#{expectedConcurrent}"
|
42
|
+
rescue Exception => e
|
43
|
+
puts "Warning: Failed to load concurrent-ruby #{expectedConcurrent}, using latest version"
|
44
|
+
end
|
45
|
+
|
39
46
|
end
|
data/lib/multithread/job.rb
CHANGED
@@ -1,36 +1,21 @@
|
|
1
1
|
require 'common/ext/stdout'
|
2
2
|
require 'stringio'
|
3
3
|
require 'thread'
|
4
|
+
require 'concurrent/atomic/mutex_semaphore'
|
4
5
|
|
5
6
|
module Bake
|
6
7
|
module Multithread
|
7
8
|
|
8
9
|
class Jobs
|
9
10
|
|
10
|
-
@@mutex_sempaphore = Mutex.new
|
11
|
-
@@running_threads = 0
|
12
|
-
@@waiting_threads = 0
|
13
|
-
@@cv = ConditionVariable.new
|
14
|
-
|
15
11
|
def self.incThread
|
16
|
-
@@
|
17
|
-
if @@running_threads >= Bake.options.threads
|
18
|
-
@@waiting_threads += 1
|
19
|
-
@@cv.wait(@@mutex_sempaphore)
|
20
|
-
@@waiting_threads -= 1
|
21
|
-
@@running_threads += 1
|
22
|
-
else
|
23
|
-
@@running_threads += 1
|
24
|
-
end
|
25
|
-
end
|
12
|
+
@@semaphore.acquire
|
26
13
|
end
|
27
14
|
def self.decThread
|
28
|
-
@@
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
end
|
15
|
+
@@semaphore.release
|
16
|
+
end
|
17
|
+
def self.init_semaphore
|
18
|
+
@@semaphore = ::Concurrent::MutexSemaphore.new(Bake.options.threads)
|
34
19
|
end
|
35
20
|
|
36
21
|
def initialize(jobs, &block)
|
@@ -41,9 +26,12 @@ module Bake
|
|
41
26
|
@threads << ::Thread.new(Thread.current[:stdout], Thread.current[:errorStream]) do |outStr, errStr|
|
42
27
|
Thread.current[:stdout] = outStr
|
43
28
|
Thread.current[:errorStream] = errStr
|
44
|
-
|
45
|
-
|
46
|
-
|
29
|
+
begin
|
30
|
+
Jobs.incThread()
|
31
|
+
block.call(self)
|
32
|
+
ensure
|
33
|
+
Jobs.decThread()
|
34
|
+
end
|
47
35
|
end
|
48
36
|
end
|
49
37
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bake-toolkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.34.
|
4
|
+
version: 2.34.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Schaal
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.7.8
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: concurrent-ruby
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 1.0.5
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.0.5
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: colored
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|