aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Formula/r.rb
blob: 6696a3760334c2aa0c1d0e2c7d086974eca33344 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
require 'formula'

class RBashCompletion < Formula
  # This is the same script that Debian packages use.
  url 'http://rcompletion.googlecode.com/svn-history/r28/trunk/bash_completion/R', :using => :curl
  version 'r28'
  sha1 'af734b8624b33f2245bf88d6782bea0dc5d829a4'
end

class R < Formula
  homepage 'http://www.r-project.org'
  url 'http://cran.r-project.org/src/base/R-2/R-2.15.2.tar.gz'
  sha1 'c80da687d66ee88d1e34fc1ae5c1bd525f9513dd'

  head 'https://svn.r-project.org/R/trunk'

  option 'with-valgrind', 'Compile an unoptimized build with support for the Valgrind debugger'

  depends_on 'readline'
  depends_on 'libtiff'
  depends_on 'jpeg'
  depends_on :x11

  depends_on 'valgrind' if build.include? 'with-valgrind'

  def patches
    # Fix detection of Objective-C++ in configure. Reported upstream:
    #   https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15107
    DATA
  end if MacOS.version >= :mountain_lion

  def install
    ENV.Og if build.include? 'with-valgrind'
    ENV.fortran

    args = [
      "--prefix=#{prefix}",
      "--with-aqua",
      "--enable-R-framework",
      "--with-lapack"
    ]
    args << '--with-valgrind-instrumentation=2' if build.include? 'with-valgrind'

    # Pull down recommended packages if building from HEAD.
    system './tools/rsync-recommended' if build.head?

    system "./configure", *args
    system "make"
    ENV.j1 # Serialized installs, please
    system "make install"

    # Link binaries and manpages from the Framework
    # into the normal locations
    bin.mkpath
    man1.mkpath

    ln_s prefix+"R.framework/Resources/bin/R", bin
    ln_s prefix+"R.framework/Resources/bin/Rscript", bin
    ln_s prefix+"R.framework/Resources/man1/R.1", man1
    ln_s prefix+"R.framework/Resources/man1/Rscript.1", man1

    bash_dir = prefix + 'etc/bash_completion.d'
    bash_dir.mkpath
    RBashCompletion.new.brew { bash_dir.install 'R' }
  end

  def caveats; <<-EOS.undent
    R.framework was installed to:
      #{opt_prefix}/R.framework

    To use this Framework with IDEs such as RStudio, it must be linked
    to the standard OS X location:
      sudo ln -s "#{opt_prefix}/R.framework" /Library/Frameworks

    To enable rJava support, run the following command:
      R CMD javareconf JAVA_CPPFLAGS=-I/System/Library/Frameworks/JavaVM.framework/Headers
    EOS
  end
end

__END__

Patch configure so that Objective-C++ tests pass on OS X 10.8.x. The problem is
that every test uses the header file `objc/Object.h` to define Objective-C
objects and this header is a no-op include on 10.8 unless the `__OBJC2__`
preprocessor variable is undefined.

Upstream bug:

  https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=15107

diff --git a/configure b/configure
index 5bae281..baf4f47 100755
--- a/configure
+++ b/configure
@@ -8328,6 +8328,7 @@ $as_echo_n "checking whether ${OBJCXX} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -8368,6 +8369,7 @@ $as_echo_n "checking whether ${CXX} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -8403,6 +8405,7 @@ $as_echo_n "checking whether ${OBJC} can compile ObjC++... " >&6; }
 ## we don't use AC_LANG_xx because ObjC++ is not defined as a language (yet)
 ## (the test program is from the gcc test suite)
 cat << \EOF > conftest.mm
+#undef __OBJC2__
 #include <objc/Object.h>
 #include <iostream>
 
@@ -24389,7 +24392,7 @@ else
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
-
+#undef __OBJC2__
 #include <objc/Object.h>
 
 #ifdef F77_DUMMY_MAIN