summaryrefslogtreecommitdiff
path: root/ext/lazar/extconf.rb
blob: aa031e5124093e1fabb7d7189a3424ed03044b4e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require 'fileutils'
require 'rbconfig'
require 'mkmf'

main_dir = File.expand_path(File.join(File.dirname(__FILE__),"..",".."))

# check for required programs
programs = ["R","Rscript","mongod","java","getconf","wget","unzip","xls2csv","xlsx2csv"]
programs.each do |program|
  abort "Please install #{program} on your system." unless find_executable program
end

abort "Please install the latest Rserve version on your system (the CRAN version is outdated). Execute 'install.packages('Rserve',,'http://www.rforge.net/')' in a R console running as root ('sudo R')."  unless `R CMD Rserve --version`.match(/^Rserve v1.8/)

# install R packages
r_dir = File.join main_dir, "R"
FileUtils.mkdir_p r_dir
#FileUtils.mkdir_p File.join(main_dir,"bin") # for Rserve binary
rinstall = File.expand_path(File.join(File.dirname(__FILE__),"rinstall.R"))
puts `Rscript --vanilla #{rinstall} #{r_dir}`

r_libs = Dir[File.join(r_dir,"*")].collect{|l| l.sub(r_dir, '').sub('/','')}.sort
["caret","doMC","foreach","ggplot2","gridExtra","iterators","pls"].each do |lib|
  abort "Failed to install R package '#{lib}'." unless r_libs.include?(lib)
end

# create a fake Makefile
File.open(File.join(File.dirname(__FILE__),"Makefile"),"w+") do |makefile|
  makefile.puts "all:\n\ttrue\n\ninstall:\n\ttrue\n"
end

$makefile_created = true