rbbt-util 5.25.32 → 5.25.33
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rbbt/resource/util.rb +11 -7
- data/lib/rbbt/tsv/util.rb +2 -1
- data/lib/rbbt/tsv.rb +1 -1
- data/lib/rbbt/util/open.rb +1 -0
- data/lib/rbbt/util/python.rb +22 -0
- data/share/Rlib/util.R +7 -3
- data/share/install/software/lib/install_helpers +133 -41
- data/share/rbbt_commands/tsv/info +2 -2
- data/share/rbbt_commands/workflow/info +3 -4
- data/share/workflow_config.ru +17 -8
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5224ee57ce9c9356d168864d1457989ab094b579
|
4
|
+
data.tar.gz: ee950dc591700be501b2d1f84e23bae4492cea1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 64f17229abeefc9faecec3519b347c069f2fd387205f59513fd5d2cf1b38d71eb8352dabefa9fc08c968cf76f0c6e544b061a8841d17ef9a7825930c7553b214
|
7
|
+
data.tar.gz: 76975c93b0151e609959817f158130d0db5e57235cc4f5a6850f3d879912b09d7a3996b6fde0da1f1435ea769ebcd921050d1a54d40c08d99118576218063e6f
|
data/lib/rbbt/resource/util.rb
CHANGED
@@ -91,13 +91,17 @@ module Resource
|
|
91
91
|
|
92
92
|
if File.exist?(File.join(opt_dir, '.post_install')) and File.directory?(File.join(opt_dir, '.post_install'))
|
93
93
|
Dir.glob(File.join(opt_dir, '.post_install','*')).each do |file|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
94
|
+
|
95
|
+
# Load exports
|
96
|
+
Open.read(file).split("\n").each do |line|
|
97
|
+
next unless line =~ /^\s*export\s+([^=]+)=(.*)/
|
98
|
+
var = $1.strip
|
99
|
+
value = $2.strip
|
100
|
+
value.sub!(/^['"]/,'')
|
101
|
+
value.sub!(/['"]$/,'')
|
102
|
+
value.gsub!(/\$[a-z_0-9]+/i){|var| ENV[var[1..-1]] }
|
103
|
+
Log.debug "Set variable export from .post_install: #{Misc.fingerprint [var,value]*"="}"
|
104
|
+
ENV[var] = value
|
101
105
|
end
|
102
106
|
end
|
103
107
|
end
|
data/lib/rbbt/tsv/util.rb
CHANGED
@@ -32,8 +32,9 @@ module TSV
|
|
32
32
|
TmpFile.with_file(values.uniq * "\n", false) do |value_file|
|
33
33
|
cmd = "cat '#{ path }' | sed 's/\\t/\\tHEADERNOMATCH/' | grep -w -F -f '#{ value_file }' | sed 's/HEADERNOMATCH//' |sort -u|cut -f 2 |sort|uniq -c|sed 's/^ *//;s/ /\t/'"
|
34
34
|
begin
|
35
|
-
TSV.open(CMD.cmd(cmd), :key_field => 1, :type => :single, :cast => :to_i)
|
35
|
+
TSV.open(CMD.cmd(cmd), :key_field => 1, :fields => [0], :type => :single, :cast => :to_i)
|
36
36
|
rescue
|
37
|
+
Log.exception $!
|
37
38
|
TSV.setup({}, :type => :single, :cast => :to_i)
|
38
39
|
end
|
39
40
|
end
|
data/lib/rbbt/tsv.rb
CHANGED
data/lib/rbbt/util/open.rb
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rbbt-util'
|
2
|
+
|
3
|
+
require 'pycall/import'
|
4
|
+
|
5
|
+
module RbbtPython
|
6
|
+
extend PyCall::Import
|
7
|
+
def self.run(mod = nil, &block)
|
8
|
+
begin
|
9
|
+
pyimport mod unless mod.nil?
|
10
|
+
case block.arity
|
11
|
+
when 0
|
12
|
+
yield
|
13
|
+
when 1
|
14
|
+
yield self.send(mod)
|
15
|
+
else
|
16
|
+
raise "Unknown arity on block of code #{block.arity}"
|
17
|
+
end
|
18
|
+
rescue
|
19
|
+
Log.exception $!
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/share/Rlib/util.R
CHANGED
@@ -526,7 +526,7 @@ rbbt.png_plot <- function(filename, p, width=500, height=500, ...){
|
|
526
526
|
rbbt.pheatmap <- function(filename, data, width=800, height=800, take_log=FALSE, stdize=FALSE, positive=FALSE, ...){
|
527
527
|
rbbt.require('pheatmap')
|
528
528
|
|
529
|
-
opar = par()
|
529
|
+
#opar = par()
|
530
530
|
png(filename=filename, width=width, height=height);
|
531
531
|
|
532
532
|
data = as.matrix(data)
|
@@ -556,8 +556,8 @@ rbbt.pheatmap <- function(filename, data, width=800, height=800, take_log=FALSE,
|
|
556
556
|
pheatmap(data, ...)
|
557
557
|
}
|
558
558
|
|
559
|
+
#par(opar)
|
559
560
|
dev.off();
|
560
|
-
par(opar)
|
561
561
|
}
|
562
562
|
|
563
563
|
rbbt.heatmap <- function(filename, data, width=800, height=800, take_log=FALSE, stdize=FALSE, ...){
|
@@ -725,18 +725,22 @@ rbbt.plot.text_scatter <- function(formula, data) {
|
|
725
725
|
}
|
726
726
|
|
727
727
|
rbbt.install.CRAN <- function(pkg){
|
728
|
+
cat("Try CRAN install:", pkg, "\n")
|
728
729
|
res = FALSE
|
729
|
-
tryCatch({ install.packages(pkg);
|
730
|
+
tryCatch({ install.packages(pkg); res = TRUE; }, error = function(e){ str(e); warning(paste("Could not install CRAN ", pkg)); res = FALSE })
|
731
|
+
cat("CRAN", res)
|
730
732
|
return(res)
|
731
733
|
}
|
732
734
|
|
733
735
|
rbbt.install.bioc <-function(pkg){
|
736
|
+
cat("Try BIOC install:", pkg, "\n")
|
734
737
|
res = FALSE
|
735
738
|
tryCatch({ source("http://bioconductor.org/biocLite.R"); biocLite(pkg, ask=FALSE, suppressUpdates = TRUE); res = TRUE }, error = function(e){ warning(paste("Could not install Bioconductor ", pkg)); res = FALSE })
|
736
739
|
return(res)
|
737
740
|
}
|
738
741
|
|
739
742
|
rbbt.install.github <- function(pkg, ...){
|
743
|
+
cat("Try GITHUB install:", pkg, "\n")
|
740
744
|
res = FALSE
|
741
745
|
tryCatch({ library(devtools); install_github(pkg, ...); res = TRUE }, error = function(e){ warning(paste("Could not install GITHUB ", pkg)); res = FALSE })
|
742
746
|
return(res)
|
@@ -10,10 +10,38 @@ OPT_BUILD_DIR="$SOFTWARE_DIR/.build"; [ -d $OPT_BUILD_DIR ] || mkdir -p $OPT_BUI
|
|
10
10
|
|
11
11
|
mkdir -p "$OPT_BUILD_DIR"
|
12
12
|
|
13
|
+
if command -v realpath > /dev/null; then
|
14
|
+
function relative_path(){
|
15
|
+
local basedir=$1
|
16
|
+
local path=$2
|
17
|
+
echo $(realpath --relative-to="$basedir" "$path")
|
18
|
+
}
|
19
|
+
else
|
20
|
+
realpath(){
|
21
|
+
OURPWD=$PWD
|
22
|
+
echo "REALPATH $@" >&2
|
23
|
+
cd "$(dirname "$1")"
|
24
|
+
LINK=$(readlink "$(basename "$1")")
|
25
|
+
while [ "$LINK" ]; do
|
26
|
+
cd "$(dirname "$LINK")"
|
27
|
+
LINK=$(readlink "$(basename "$1")")
|
28
|
+
done
|
29
|
+
REALPATH="$PWD/$(basename "$1")"
|
30
|
+
cd "$OURPWD"
|
31
|
+
echo "$REALPATH"
|
32
|
+
}
|
33
|
+
|
34
|
+
function relative_path(){
|
35
|
+
local basedir="$(realpath $1)"
|
36
|
+
local path="$(realpath "$2")"
|
37
|
+
echo ${path/$basedir\/}
|
38
|
+
}
|
39
|
+
fi
|
40
|
+
|
13
41
|
function link(){
|
14
42
|
local source="$1"
|
15
43
|
local target="$2"
|
16
|
-
local rel_source=$(
|
44
|
+
local rel_source=$(relative_path "$(dirname $target)" "$source")
|
17
45
|
|
18
46
|
[ -h "$target" ] && rm "$target"
|
19
47
|
echo ln -s "$rel_source" "$target" 1>&2
|
@@ -31,7 +59,7 @@ function add2file(){
|
|
31
59
|
file=$1
|
32
60
|
line=$2
|
33
61
|
|
34
|
-
rel
|
62
|
+
local rel=$(relative_path "$OPT_DIR" "$line")
|
35
63
|
grep "$rel" "$file" || echo "$rel" >> "$file"
|
36
64
|
}
|
37
65
|
|
@@ -168,22 +196,15 @@ compile(){
|
|
168
196
|
fi
|
169
197
|
}
|
170
198
|
|
171
|
-
|
199
|
+
prepare_make(){
|
172
200
|
local name=$1; shift
|
173
201
|
local extra="$@"
|
174
202
|
|
175
|
-
echo "Building $name"
|
176
|
-
if [ "x$extra" != "x" ]; then
|
177
|
-
echo "Extra params: $extra"
|
178
|
-
fi
|
179
|
-
|
180
203
|
local old_pwd="`expand_path $(pwd)`"
|
181
204
|
cd "`build_dir`"
|
182
205
|
|
183
206
|
[ -d src -a ! -e CMakeLists.txt -a ! -e Makefile -a ! -e configure ] && cd src
|
184
207
|
|
185
|
-
echo PWD: `pwd`
|
186
|
-
ls
|
187
208
|
|
188
209
|
if [ -f config/m4 ]; then
|
189
210
|
libtoolize --force
|
@@ -192,7 +213,7 @@ build(){
|
|
192
213
|
fi
|
193
214
|
|
194
215
|
if [ -f Makefile.am -a ! -f configure ]; then
|
195
|
-
|
216
|
+
autoreconf
|
196
217
|
fi
|
197
218
|
|
198
219
|
if [ -f aclocal.m4 ]; then
|
@@ -216,55 +237,117 @@ build(){
|
|
216
237
|
ln -s config configure
|
217
238
|
fi
|
218
239
|
|
219
|
-
|
220
|
-
|
221
|
-
cd build
|
222
|
-
cmake -DCMAKE_INSTALL_PREFIX=/install_dir ..
|
240
|
+
cd "$old_pwd"
|
241
|
+
}
|
223
242
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
make install || (cd .. ; mv build "$(opt_dir "$name")")
|
228
|
-
else
|
229
|
-
make DESTDIR="$(opt_dir "$name")" -j4
|
230
|
-
make DESTDIR="$(opt_dir "$name")" install || (cd .. ; mv build "$(opt_dir "$name")")
|
243
|
+
build_make(){
|
244
|
+
local name=$1; shift
|
245
|
+
local extra="$@"
|
231
246
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
fi
|
247
|
+
local old_pwd="`expand_path $(pwd)`"
|
248
|
+
cd "`build_dir`"
|
249
|
+
echo PWD: `pwd`
|
250
|
+
ls
|
237
251
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
252
|
+
|
253
|
+
[ -d src -a ! -e CMakeLists.txt -a ! -e Makefile -a ! -e configure ] && cd src
|
254
|
+
|
255
|
+
echo "Building with configure $name"
|
256
|
+
if [ "x$extra" != "x" ]; then
|
257
|
+
echo "Extra params: $extra"
|
258
|
+
fi
|
259
|
+
|
260
|
+
prepare_make $name
|
261
|
+
|
262
|
+
if [ -f configure ]; then
|
242
263
|
./configure --prefix="$(opt_dir "$name")" $extra
|
243
264
|
compile "$name" $extra
|
244
265
|
[ -d "$(opt_dir "$name")" ] || move_opt "$name"
|
245
266
|
setup "$name"
|
246
267
|
clean_build
|
247
|
-
|
268
|
+
else
|
248
269
|
compile "$name" $extra
|
249
270
|
move_opt "$name"
|
250
271
|
setup "$name"
|
251
272
|
clean_build
|
252
|
-
fi
|
253
273
|
fi
|
254
|
-
|
274
|
+
|
275
|
+
cd "$old_pwd"
|
276
|
+
}
|
277
|
+
|
278
|
+
buid_cmake(){
|
279
|
+
local name=$1; shift
|
280
|
+
local extra="$@"
|
281
|
+
|
282
|
+
local old_pwd="`expand_path $(pwd)`"
|
283
|
+
cd "`build_dir`"
|
284
|
+
echo PWD: `pwd`
|
285
|
+
ls
|
286
|
+
|
287
|
+
|
288
|
+
[ -d src -a ! -e CMakeLists.txt -a ! -e Makefile -a ! -e configure ] && cd src
|
289
|
+
|
290
|
+
echo "Building with cmake $name"
|
291
|
+
if [ "x$extra" != "x" ]; then
|
292
|
+
echo "Extra params: $extra"
|
293
|
+
fi
|
294
|
+
|
295
|
+
echo "Using cmake"
|
296
|
+
[ -d build ] || mkdir build
|
297
|
+
|
298
|
+
cd build
|
299
|
+
cmake -DMAKE_INSTALL_PREFIX=/ $extra ..
|
300
|
+
if [ ! -f Makefile -a -f ../configure ]; then
|
301
|
+
../configure --prefix="$(opt_dir "$name")" $extra
|
302
|
+
make -j4
|
303
|
+
make install || (cd .. ; mv build "$(opt_dir "$name")")
|
304
|
+
else
|
305
|
+
make DESTDIR="$(opt_dir "$name")" -j4 && make DESTDIR="$(opt_dir "$name")" install
|
306
|
+
fi
|
307
|
+
cd ..
|
308
|
+
|
309
|
+
if [ ! -d "$(opt_dir "$name")" ]; then
|
310
|
+
mkdir -p "$(opt_dir "$name")"
|
311
|
+
for subd in bin lib lib64 include pkgdir; do
|
312
|
+
[ -d $subd ] && mv $subd "$(opt_dir "$name")"/$subd
|
313
|
+
done
|
314
|
+
fi
|
315
|
+
|
316
|
+
setup "$name"
|
317
|
+
clean_build
|
318
|
+
|
255
319
|
cd "$old_pwd"
|
256
320
|
}
|
257
321
|
|
322
|
+
build(){
|
323
|
+
local name=$1; shift
|
324
|
+
local extra="$@"
|
325
|
+
|
326
|
+
echo "Building $name"
|
327
|
+
if [ "x$extra" != "x" ]; then
|
328
|
+
echo "Extra params: $extra"
|
329
|
+
fi
|
330
|
+
|
331
|
+
[ -d src -a ! -e CMakeLists.txt -a ! -e Makefile -a ! -e configure ] && cd src
|
332
|
+
|
333
|
+
if [ -f CMakeLists.txt ]; then
|
334
|
+
buid_cmake "$name" $extra
|
335
|
+
else
|
336
|
+
build_make "$name" $extra
|
337
|
+
fi
|
338
|
+
|
339
|
+
}
|
340
|
+
|
258
341
|
#{{{ SETUP
|
259
342
|
|
260
|
-
|
343
|
+
is_versioned(){
|
261
344
|
local name="$1"
|
262
345
|
[[ $name =~ : ]]
|
263
346
|
}
|
264
347
|
|
265
348
|
opt_dir(){
|
266
349
|
local name="$1"
|
267
|
-
if
|
350
|
+
if is_versioned "$name"; then
|
268
351
|
local real_name=`echo $1 | sed 's/:.*//'`
|
269
352
|
local version=`echo $1 | sed 's/.*://'`
|
270
353
|
echo "$OPT_DIR/$real_name/$version"
|
@@ -292,7 +375,7 @@ setup(){
|
|
292
375
|
local name="$1"
|
293
376
|
local pkg_dir="`opt_dir \"$name\"`"
|
294
377
|
|
295
|
-
if
|
378
|
+
if is_versioned "$name"; then
|
296
379
|
rm -f "$(dirname $pkg_dir)/current"
|
297
380
|
link "$pkg_dir" "$(dirname $pkg_dir)/current"
|
298
381
|
pkg_dir="$(dirname $pkg_dir)/current"
|
@@ -326,14 +409,22 @@ setup(){
|
|
326
409
|
|
327
410
|
#{{{ HELPERS
|
328
411
|
|
329
|
-
|
412
|
+
prepare_src_pkg(){
|
330
413
|
local name="$1"
|
331
414
|
local url="$2"
|
332
415
|
shift;shift;
|
333
|
-
|
334
|
-
|
416
|
+
|
335
417
|
get_pkg "$name" "$url"
|
336
418
|
uncompress_pkg "$name"
|
419
|
+
}
|
420
|
+
|
421
|
+
install_src(){
|
422
|
+
local name="$1"
|
423
|
+
local url="$2"
|
424
|
+
shift;shift;
|
425
|
+
local extra="$@"
|
426
|
+
|
427
|
+
prepare_src_pkg "$name" "$url"
|
337
428
|
build "$name" "$extra"
|
338
429
|
}
|
339
430
|
|
@@ -342,7 +433,7 @@ install_svn(){
|
|
342
433
|
local url="$2"
|
343
434
|
shift;shift;
|
344
435
|
local extra="$@"
|
345
|
-
|
436
|
+
|
346
437
|
get_svn "$name" "$url"
|
347
438
|
build "$name" $extra
|
348
439
|
}
|
@@ -384,6 +475,7 @@ install_jar(){
|
|
384
475
|
|
385
476
|
[ -d "$OPT_DIR/$name/" ] || mkdir -p "$OPT_DIR/$name/"
|
386
477
|
wget "$url" -O "$OPT_DIR/jars/$name.jar" | wget "$url" -O "$OPT_DIR/jars/$name.jar" --no-check-certificate
|
478
|
+
link "$OPT_DIR/$name/$name.jar" "$OPT_JAR_DIR/$name.jar"
|
387
479
|
}
|
388
480
|
|
389
481
|
jar2bin(){
|
@@ -56,7 +56,7 @@ else
|
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
|
-
if String === file and not Open.remote? file and File.exist? file
|
59
|
+
if String === file and not Open.remote? file and File.exist? file and not Open.gzip? file
|
60
60
|
rows = `wc -l '#{ file }' 2> /dev/null|cut -f 1 -d' '`.strip
|
61
61
|
header_rows = `(head '#{ file }' |grep "#" | wc -l) 2> /dev/null|cut -f 1 -d' '`
|
62
62
|
if header_rows.to_i <= 2 and header_rows.to_i >= 1
|
@@ -65,7 +65,7 @@ else
|
|
65
65
|
rows << ' (possibly including header)'
|
66
66
|
end
|
67
67
|
else
|
68
|
-
rows = "Could not get
|
68
|
+
rows = "Could not get number of rows for #{Misc.fingerprint file}"
|
69
69
|
end
|
70
70
|
|
71
71
|
puts "Rows: #{Log.color :blue, rows}"
|
@@ -146,15 +146,14 @@ if all
|
|
146
146
|
end
|
147
147
|
|
148
148
|
if recursive
|
149
|
-
inputs = step.info[:inputs]
|
150
|
-
|
151
|
-
deps = (step.info[:dependencies] || []).collect{|v| get_step v.last }
|
149
|
+
inputs = step.info[:inputs] || {}
|
150
|
+
deps = step.dependencies
|
152
151
|
|
153
152
|
while deps.any? do
|
154
153
|
dep = deps.shift
|
155
154
|
inputs = {} if inputs.nil?
|
156
155
|
inputs = inputs.merge(dep.info[:inputs] || {})
|
157
|
-
deps.concat
|
156
|
+
deps = deps.concat dep.dependencies
|
158
157
|
end
|
159
158
|
|
160
159
|
if inputs.any?
|
data/share/workflow_config.ru
CHANGED
@@ -51,11 +51,11 @@ end
|
|
51
51
|
#{{{ BASE
|
52
52
|
app_eval app, etc_dir['app.d/base.rb'].find
|
53
53
|
|
54
|
-
app.add_workflow wf, :priority
|
55
|
-
|
56
54
|
#{{{ WORKFLOWS
|
57
55
|
app_eval app, etc_dir['app.d/workflows.rb'].find_all
|
58
56
|
|
57
|
+
app.add_workflow wf, :priority
|
58
|
+
|
59
59
|
#{{{ RESOURCES
|
60
60
|
load_file etc_dir['app.d/resources.rb'].find
|
61
61
|
|
@@ -123,13 +123,22 @@ app.get '/reload_workflow' do
|
|
123
123
|
halt 500, "Not allowed in production"
|
124
124
|
end
|
125
125
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
126
|
+
begin
|
127
|
+
workflow = params[:workflow] if params[:workflow]
|
128
|
+
wf_file = Workflow.local_workflow_filename(workflow)
|
129
|
+
wf_dir = File.dirname(wf_file)
|
130
|
+
$LOADED_FEATURES.delete_if do |path|
|
131
|
+
Misc.path_relative_to(wf_dir, path)
|
132
|
+
end
|
133
|
+
load wf_file
|
134
|
+
rescue Exception
|
135
|
+
if File.exists?(Rbbt.etc['target_workflow'].read.strip)
|
136
|
+
load Rbbt.etc['target_workflow'].read.strip
|
137
|
+
else
|
138
|
+
raise $!
|
139
|
+
end
|
131
140
|
end
|
132
|
-
|
141
|
+
|
133
142
|
halt 200, "Workflow #{ workflow } reloaded"
|
134
143
|
end
|
135
144
|
|
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.25.
|
4
|
+
version: 5.25.33
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Miguel Vazquez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-03-
|
11
|
+
date: 2019-03-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -302,6 +302,7 @@ files:
|
|
302
302
|
- lib/rbbt/util/misc/system.rb
|
303
303
|
- lib/rbbt/util/named_array.rb
|
304
304
|
- lib/rbbt/util/open.rb
|
305
|
+
- lib/rbbt/util/python.rb
|
305
306
|
- lib/rbbt/util/semaphore.rb
|
306
307
|
- lib/rbbt/util/simpleDSL.rb
|
307
308
|
- lib/rbbt/util/simpleopt.rb
|