rbbt-util 5.16.0 → 5.16.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7eb0331120fec20040b7d6d0c2572e5d09b2a423
4
- data.tar.gz: 689c858bc997cfc925e2be00a3a71a8c1d708e85
3
+ metadata.gz: 29417065f1fbfa88cb5c271a16378bd256a4c212
4
+ data.tar.gz: 93e3c4e913359512c90fc5de892a39a0a485a97f
5
5
  SHA512:
6
- metadata.gz: 976840c06b1e1c277beaf3852920c1fc6f7be6f25d1eb0b9f41fbbe920e140649ab23bc32e6c081567d7236fe37b6cc3339de4094de407e6a77da023cd591a94
7
- data.tar.gz: ad29facb7a20e308c8045ef1ef7134fdd425568408acff53e20db772416b7d7a78989307197427ec163aa96c8aeac83e7f1cb77823bc20d9ea2394ee182d7091
6
+ metadata.gz: 483bcaa453d07b7f7fbb09241dceb3ab8cd8f7b87ff430be52dcaad9998a393b919a82242f6b0eca2005a4a5ad559ce6ac2f73850c765fc22e351a3c8b057b1e
7
+ data.tar.gz: 4a89efa036fbfadaea7f553d5396469eecd78e7702857f77db829e55249f63511d3b1472afe31e8a2aa0d3e481e9699a6e1936d0e2c4e341ed0eb4dfefed1b6a
data/lib/rbbt/util/log.rb CHANGED
@@ -70,7 +70,6 @@ module Log
70
70
  self.nocolor = ENV["RBBT_NOCOLOR"] == 'true'
71
71
 
72
72
  self.ignore_stderr do
73
- require 'nokogiri'
74
73
  self.tty_size = begin
75
74
  require "highline/system_extensions.rb"
76
75
  HighLine::SystemExtensions.terminal_size.first
@@ -6,138 +6,140 @@ rescue Exception
6
6
  continue = false
7
7
  end
8
8
 
9
- module RbbtSemaphore
10
- inline(:C) do |builder|
11
- builder.prefix <<-EOF
12
- #include <unistd.h>
13
- #include <stdio.h>
14
- #include <stdlib.h>
15
- #include <semaphore.h>
16
- #include <time.h>
17
- #include <assert.h>
18
- #include <errno.h>
19
- #include <signal.h>
20
- #include <fcntl.h>
21
- EOF
22
-
23
- builder.c_singleton <<-EOF
24
- void create_semaphore(char* name, int value){
25
- sem_open(name, O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO, value);
26
- }
27
- EOF
28
- builder.c_singleton <<-EOF
29
- void delete_semaphore(char* name){
30
- sem_unlink(name);
31
- }
32
- EOF
33
-
34
- builder.c_singleton <<-EOF
35
- void wait_semaphore(char* name){
36
- sem_t* sem;
37
- sem = sem_open(name, 0);
38
- sem_wait(sem);
39
- sem_close(sem);
40
- }
41
- EOF
42
-
43
- builder.c_singleton <<-EOF
44
- void post_semaphore(char* name){
45
- sem_t* sem;
46
- sem = sem_open(name, 0);
47
- sem_post(sem);
48
- sem_close(sem);
49
- }
50
- EOF
51
- end
52
-
53
- SEM_MUTEX = Mutex.new
54
- def self.synchronize(sem)
55
- RbbtSemaphore.wait_semaphore(sem)
56
- begin
57
- yield
58
- ensure
59
- RbbtSemaphore.post_semaphore(sem)
9
+ if continue
10
+ module RbbtSemaphore
11
+ inline(:C) do |builder|
12
+ builder.prefix <<-EOF
13
+ #include <unistd.h>
14
+ #include <stdio.h>
15
+ #include <stdlib.h>
16
+ #include <semaphore.h>
17
+ #include <time.h>
18
+ #include <assert.h>
19
+ #include <errno.h>
20
+ #include <signal.h>
21
+ #include <fcntl.h>
22
+ EOF
23
+
24
+ builder.c_singleton <<-EOF
25
+ void create_semaphore(char* name, int value){
26
+ sem_open(name, O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO, value);
27
+ }
28
+ EOF
29
+ builder.c_singleton <<-EOF
30
+ void delete_semaphore(char* name){
31
+ sem_unlink(name);
32
+ }
33
+ EOF
34
+
35
+ builder.c_singleton <<-EOF
36
+ void wait_semaphore(char* name){
37
+ sem_t* sem;
38
+ sem = sem_open(name, 0);
39
+ sem_wait(sem);
40
+ sem_close(sem);
41
+ }
42
+ EOF
43
+
44
+ builder.c_singleton <<-EOF
45
+ void post_semaphore(char* name){
46
+ sem_t* sem;
47
+ sem = sem_open(name, 0);
48
+ sem_post(sem);
49
+ sem_close(sem);
50
+ }
51
+ EOF
60
52
  end
61
- end
62
53
 
63
- def self.with_semaphore(size, file = nil)
64
- if file.nil?
65
- file = "/" << Misc.digest(rand(1000000000000).to_s) if file.nil?
66
- else
67
- file = file.gsub('/', '_') if file
54
+ SEM_MUTEX = Mutex.new
55
+ def self.synchronize(sem)
56
+ RbbtSemaphore.wait_semaphore(sem)
57
+ begin
58
+ yield
59
+ ensure
60
+ RbbtSemaphore.post_semaphore(sem)
61
+ end
68
62
  end
69
63
 
70
- begin
71
- Log.low "Creating semaphore (#{ size }): #{file}"
72
- RbbtSemaphore.create_semaphore(file, size)
73
- yield file
74
- ensure
75
- Log.low "Removing semaphore #{ file }"
76
- RbbtSemaphore.delete_semaphore(file)
64
+ def self.with_semaphore(size, file = nil)
65
+ if file.nil?
66
+ file = "/" << Misc.digest(rand(1000000000000).to_s) if file.nil?
67
+ else
68
+ file = file.gsub('/', '_') if file
69
+ end
70
+
71
+ begin
72
+ Log.low "Creating semaphore (#{ size }): #{file}"
73
+ RbbtSemaphore.create_semaphore(file, size)
74
+ yield file
75
+ ensure
76
+ Log.low "Removing semaphore #{ file }"
77
+ RbbtSemaphore.delete_semaphore(file)
78
+ end
77
79
  end
78
- end
79
80
 
80
- def self.fork_each_on_semaphore(elems, size, file = nil)
81
+ def self.fork_each_on_semaphore(elems, size, file = nil)
81
82
 
82
- TSV.traverse elems, :cpus => size, :bar => "Fork each on semaphore: #{ Misc.fingerprint elems }", :into => Set.new do |elem|
83
- elems.annotate elem if elems.respond_to? :annotate
84
- begin
85
- yield elem
86
- rescue Interrupt
87
- Log.warn "Process #{Process.pid} was aborted"
83
+ TSV.traverse elems, :cpus => size, :bar => "Fork each on semaphore: #{ Misc.fingerprint elems }", :into => Set.new do |elem|
84
+ elems.annotate elem if elems.respond_to? :annotate
85
+ begin
86
+ yield elem
87
+ rescue Interrupt
88
+ Log.warn "Process #{Process.pid} was aborted"
89
+ end
90
+ nil
88
91
  end
89
92
  nil
90
93
  end
91
- nil
92
- end
93
-
94
- def self.thread_each_on_semaphore(elems, size)
95
- mutex = Mutex.new
96
- count = 0
97
- cv = ConditionVariable.new
98
- wait_mutex = Mutex.new
99
-
100
- begin
101
-
102
- threads = []
103
- wait_mutex.synchronize do
104
- threads = elems.collect do |elem|
105
- Thread.new(elem) do |elem|
106
-
107
- continue = false
108
- mutex.synchronize do
109
- while not continue do
110
- if count < size
111
- continue = true
112
- count += 1
94
+
95
+ def self.thread_each_on_semaphore(elems, size)
96
+ mutex = Mutex.new
97
+ count = 0
98
+ cv = ConditionVariable.new
99
+ wait_mutex = Mutex.new
100
+
101
+ begin
102
+
103
+ threads = []
104
+ wait_mutex.synchronize do
105
+ threads = elems.collect do |elem|
106
+ Thread.new(elem) do |elem|
107
+
108
+ continue = false
109
+ mutex.synchronize do
110
+ while not continue do
111
+ if count < size
112
+ continue = true
113
+ count += 1
114
+ end
115
+ mutex.sleep 1 unless continue
113
116
  end
114
- mutex.sleep 1 unless continue
115
117
  end
116
- end
117
118
 
118
- begin
119
- yield elem
120
- rescue Interrupt
121
- Log.error "Thread was aborted while processing: #{Misc.fingerprint elem}"
122
- raise $!
123
- ensure
124
- mutex.synchronize do
125
- count -= 1
126
- cv.signal if mutex.locked?
119
+ begin
120
+ yield elem
121
+ rescue Interrupt
122
+ Log.error "Thread was aborted while processing: #{Misc.fingerprint elem}"
123
+ raise $!
124
+ ensure
125
+ mutex.synchronize do
126
+ count -= 1
127
+ cv.signal if mutex.locked?
128
+ end
127
129
  end
128
130
  end
129
131
  end
130
132
  end
131
- end
132
133
 
133
- threads.each do |thread|
134
- thread.join
134
+ threads.each do |thread|
135
+ thread.join
136
+ end
137
+ rescue Exception
138
+ Log.exception $!
139
+ Log.info "Ensuring threads are dead: #{threads.length}"
140
+ threads.each do |thread| thread.kill end
135
141
  end
136
- rescue Exception
137
- Log.exception $!
138
- Log.info "Ensuring threads are dead: #{threads.length}"
139
- threads.each do |thread| thread.kill end
140
142
  end
141
- end
142
- end
143
+ end
144
+ end
143
145
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-util
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.16.0
4
+ version: 5.16.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
@@ -108,6 +108,20 @@ dependencies:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rest-client
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
111
125
  description: Utilities for handling tsv files, caches, etc
112
126
  email: miguel.vazquez@cnio.es
113
127
  executables: