rbbt-util 5.28.10 → 5.28.11

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: 443812f3080048a2e39b95ceda4fda2b3f403788c4d32ae4822b0b6920ac1d1f
4
- data.tar.gz: e586076cca9dbd72b9dae8ba8be0061269e9bef5d04163f382f2d3b3f353d1b8
3
+ metadata.gz: 6ae5e7a2e944e3aabababe528af35f6d0b9002db33c661cf75dd3f6f49bd1b94
4
+ data.tar.gz: 94a6ec3c4a32e3632d59872c17b449a5c6be624cf999b2bb3469647933a0ba28
5
5
  SHA512:
6
- metadata.gz: ca6ea9a139a48dfcc76fb04b889d45881d023e9f6fda362da0bb7bd4c63b31217ca0a9bb9f4702186c78b741a1eb1b5c7ca2607512e6dced51026081bdcb8aa7
7
- data.tar.gz: 76f021c8d565e2833506f17fb54436d0fe80d29d8bface099cece0445cb70718f8f2126e6fa6eb139f6555e33fe9382d1401339aacb100073bb4964c62f1a260
6
+ metadata.gz: 433ee5aa750efe1f609d6ee37a30b4438fc512719de2a7062d8696e2e1f15dec5caa33e2e63dce2ea7082d9f741fadf3314991a6a5e4a30d770f9fe6c7a04207
7
+ data.tar.gz: d16905de756df32abacd314b8793d4792c9852d76267be7ef71b6c5e0ae4e08f8b9ce04f34f2ceba3cd36ed8cda18966e737a893439b2451a9cde43a334afcb6
@@ -26,12 +26,17 @@ module Persist
26
26
  MAX_FILE_LENGTH = 150
27
27
 
28
28
  # Is 'file' newer than 'path'? return non-true if path is newer than file
29
- def self.newer?(path, file)
29
+ def self.newer?(path, file, by_link = false)
30
30
  return true if not Open.exists?(file)
31
31
  path = path.find if Path === path
32
32
  file = file.find if Path === file
33
- patht = Open.mtime(path)
34
- filet = Open.mtime(file)
33
+ if by_link
34
+ patht = File.lstat(path).mtime
35
+ filet = File.lstat(file).mtime
36
+ else
37
+ patht = Open.mtime(path)
38
+ filet = Open.mtime(file)
39
+ end
35
40
  return true if patht.nil? || filet.nil?
36
41
  diff = patht - filet
37
42
  return diff if diff < 0
@@ -112,13 +112,19 @@ module Resource
112
112
  end
113
113
  when Net::HTTPRedirection, Net::HTTPFound
114
114
  location = response['location']
115
- Log.debug("Feching directory from: #{location}. Into: #{final_path}")
116
- FileUtils.mkdir_p final_path unless File.exist? final_path
117
- TmpFile.with_file do |tmp_dir|
118
- Misc.in_dir tmp_dir do
119
- CMD.cmd('tar xvfz -', :in => Open.open(location, :nocache => true))
115
+ if location.include? 'get_directory'
116
+ Log.debug("Feching directory from: #{location}. Into: #{final_path}")
117
+ FileUtils.mkdir_p final_path unless File.exist? final_path
118
+ TmpFile.with_file do |tmp_dir|
119
+ Misc.in_dir tmp_dir do
120
+ CMD.cmd('tar xvfz -', :in => Open.open(location, :nocache => true))
121
+ end
122
+ FileUtils.mv tmp_dir, final_path
123
+ end
124
+ else
125
+ Open.open(location, :nocache => true) do |s|
126
+ Misc.sensiblewrite(final_path, s)
120
127
  end
121
- FileUtils.mv tmp_dir, final_path
122
128
  end
123
129
  when Net::HTTPInternalServerError
124
130
  @server_missing_resource_cache << url
@@ -41,7 +41,7 @@ source('#{UTIL}');
41
41
 
42
42
  if monitor
43
43
  #io = CMD.cmd('R --no-save --quiet', options.merge(:in => cmd, :pipe => true, :log => true))
44
- io = CMD.cmd('R --no-save --quiet', options.merge(:in => cmd, :pipe => true, :log => true))
44
+ io = CMD.cmd('R --no-save --quiet', options.merge(:in => cmd, :pipe => true, :log => true, :xvfb => true))
45
45
  while line = io.gets
46
46
  case monitor
47
47
  when Proc
@@ -52,7 +52,7 @@ source('#{UTIL}');
52
52
  end
53
53
  nil
54
54
  else
55
- CMD.cmd('R --no-save --slave --quiet', options.merge(:in => cmd))
55
+ CMD.cmd('R --no-save --slave --quiet', options.merge(:in => cmd, :xvfb => true))
56
56
  end
57
57
  end
58
58
 
@@ -100,6 +100,7 @@ module CMD
100
100
  no_fail = options.delete(:no_fail)
101
101
  no_fail = options.delete(:nofail) if no_fail.nil?
102
102
  no_wait = options.delete(:no_wait)
103
+ xvfb = options.delete(:xvfb)
103
104
 
104
105
  dont_close_in = options.delete(:dont_close_in)
105
106
 
@@ -117,6 +118,14 @@ module CMD
117
118
 
118
119
  end
119
120
 
121
+ case xvfb
122
+ when TrueClass
123
+ cmd = "xvfb-run --server-args='-screen 0 1024x768x24' --auto-servernum #{cmd}"
124
+ when String
125
+ cmd = "xvfb-run --server-args='#{xvfb}' --auto-servernum --server-num=1 #{cmd}"
126
+ when String
127
+ end
128
+
120
129
  if stderr == true
121
130
  stderr = Log::HIGH
122
131
  end
@@ -287,15 +287,19 @@ module Misc
287
287
  when Symbol
288
288
  obj.to_s
289
289
  when (defined?(Path) and Path)
290
- if obj.exists?
291
- if obj.directory?
292
- files = obj.glob("**/*")
293
- "directory: #{Misc.fingerprint(files)}"
290
+ if Step === obj.resource
291
+ "Step file: " + obj
292
+ else
293
+ if obj.exists?
294
+ if obj.directory?
295
+ files = obj.glob("**/*")
296
+ "directory: #{Misc.fingerprint(files)}"
297
+ else
298
+ "file: " << Open.realpath(obj) << "--" << mtime_str(obj)
299
+ end
294
300
  else
295
- "file: " << Open.realpath(obj) << "--" << mtime_str(obj)
301
+ obj + " (file missing)"
296
302
  end
297
- else
298
- obj + " (file missing)"
299
303
  end
300
304
  when String
301
305
  if Misc.is_filename?(obj) and ! %w(. ..).include?(obj)
@@ -360,7 +360,7 @@ module Workflow
360
360
  compute = options[:compute]
361
361
 
362
362
  options = IndiferentHash.setup(options.dup)
363
- dep = dependency.call jobname, options.merge(_inputs), real_dependencies
363
+ dep = dependency.call jobname, _inputs.merge(options), real_dependencies
364
364
 
365
365
  dep = [dep] unless Array === dep
366
366
 
@@ -156,7 +156,7 @@ class Step
156
156
 
157
157
  def dependencies=(dependencies)
158
158
  @dependencies = dependencies
159
- set_info :dependencies, dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]}
159
+ set_info :dependencies, dependencies.collect{|dep| [dep.task_name, dep.name, dep.path]} if dependencies
160
160
  end
161
161
 
162
162
  def recursive_inputs
@@ -188,7 +188,7 @@ class Step
188
188
  info_lock.lock if check_lock and false
189
189
  begin
190
190
  Open.open(info_file, :mode => 'rb') do |file|
191
- INFO_SERIALIZER.load(file) #|| {}
191
+ IndiferentHash.setup(INFO_SERIALIZER.load(file)) #|| {}
192
192
  end
193
193
  ensure
194
194
  info_lock.unlock if check_lock and false
@@ -227,7 +227,7 @@ class Step
227
227
  Open.lock(info_file, :lock => info_lock) do
228
228
  i = info(false).dup
229
229
  i[key] = value
230
- @info_cache = i
230
+ @info_cache = IndiferentHash.setup(i)
231
231
  dump = INFO_SERIALIZER.dump(i)
232
232
  Misc.sensiblewrite(info_file, dump, :force => true, :lock => false)
233
233
  @info_cache_time = Time.now
@@ -242,7 +242,7 @@ class Step
242
242
  Open.lock(info_file, :lock => info_lock) do
243
243
  i = info(false)
244
244
  i.merge! hash
245
- @info_cache = i
245
+ @info_cache = IndiferentHash.setup(i)
246
246
  dump = INFO_SERIALIZER.dump(i)
247
247
  Misc.sensiblewrite(info_file, dump, :force => true, :lock => false)
248
248
  @info_cache_time = Time.now
@@ -537,7 +537,7 @@ class Step
537
537
  end
538
538
 
539
539
  def file(name)
540
- Path.setup(File.join(files_dir, name.to_s))
540
+ Path.setup(File.join(files_dir, name.to_s), workflow, self)
541
541
  end
542
542
 
543
543
  def save_file(name, content)
@@ -66,7 +66,7 @@ class Step
66
66
  str << "\n"
67
67
  end
68
68
 
69
- def self.prov_report(step, offset = 0, task = nil, seen = [])
69
+ def self.prov_report(step, offset = 0, task = nil, seen = [], expand_repeats = false)
70
70
  info = step.info || {}
71
71
  info[:task_name] = task
72
72
  path = step.path
@@ -82,9 +82,13 @@ class Step
82
82
  new = ! seen.include?(path)
83
83
  if new
84
84
  seen << path
85
- str << prov_report(dep, offset + 1, task, seen)
85
+ str << prov_report(dep, offset + 1, task, seen, expand_repeats)
86
86
  else
87
- str << Log.color(:green, Log.uncolor(prov_report(dep, offset+1, task)))
87
+ if expand_repeats
88
+ str << Log.color(:green, Log.uncolor(prov_report(dep, offset+1, task)))
89
+ else
90
+ str << Log.color(:green, " " * (offset + 1) + Log.uncolor(prov_report_msg(status, name, path, info)))
91
+ end
88
92
  end
89
93
  end if step.dependencies
90
94
  str
@@ -49,27 +49,27 @@ def pid_msg(pid)
49
49
  end
50
50
 
51
51
 
52
- def status_msg(status)
53
- color = case status.to_sym
54
- when :error, :aborted, :missing, :dead, :broken
55
- :red
56
- when :streaming, :started
57
- :cyan
58
- when :done
59
- :green
60
- when :noinfo
61
- :blue
62
- when :dependencies, :waiting, :setup
63
- :yellow
64
- else
65
- if status.to_s.index ">"
66
- :cyan
67
- else
68
- :cyan
69
- end
70
- end
71
- Log.color(color, status.to_s)
72
- end
52
+ #def status_msg(status)
53
+ # color = case status.to_sym
54
+ # when :error, :aborted, :missing, :dead, :broken
55
+ # :red
56
+ # when :streaming, :started
57
+ # :cyan
58
+ # when :done
59
+ # :green
60
+ # when :noinfo, :notfound
61
+ # :blue
62
+ # when :dependencies, :waiting, :setup
63
+ # :yellow
64
+ # else
65
+ # if status.to_s.index ">"
66
+ # :cyan
67
+ # else
68
+ # :cyan
69
+ # end
70
+ # end
71
+ # Log.color(color, status.to_s)
72
+ #end
73
73
 
74
74
  def input_msg(file, inputs)
75
75
 
@@ -218,7 +218,7 @@ workflows.sort.each do |workflow,tasks|
218
218
  status << Log.color(:red, " (dead)")
219
219
  end
220
220
  end
221
- str << " #{ status_msg status }"
221
+ str << " #{ Step.prov_status_msg status }"
222
222
  str << " (dirty)" if status == 'done' && Workflow.load_step(file).dirty?
223
223
 
224
224
  if inputs and inputs.any?
@@ -24,6 +24,7 @@ $ rbbt workflow prov <job-result>
24
24
  -i--inputs* List of inputs to print
25
25
  -if--info_fields* List of info fields to print
26
26
  -t--touch Update modification times to be consistent
27
+ -e--expand_repeats Show all the dependency tree even if reapeated dependencies have already been seen before
27
28
  EOF
28
29
 
29
30
  SOPT.usage if options[:help]
@@ -130,6 +131,6 @@ if options[:plot]
130
131
  end
131
132
 
132
133
  else
133
- puts Step.prov_report(step).strip
134
+ puts Step.prov_report(step, 0, nil, [], options[:expand_repeats]).strip
134
135
  end
135
136
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.28.10
4
+ version: 5.28.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-17 00:00:00.000000000 Z
11
+ date: 2020-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake