[R-SIG-Mac] Rcpp on OSX?
Simon Urbanek
simon.urbanek at r-project.org
Fri Nov 21 03:22:05 CET 2008
On Nov 20, 2008, at 6:39 PM, Dirk Eddelbuettel wrote:
>
> Simon, David,
>
> On 20 November 2008 at 18:17, Simon Urbanek wrote:
> | David,
> |
> | you may want to tell the maintainer (hopefully CCed here ;)). That
> | package is horribly non-portable (for no real reason) so it's not
> just
>
> The reason is that I need to work around restrictions in R about how
> and I
> where I can build libraries. And e.g. the complete lack of follow-
> up from R
> Core about the suggested additions to the R CMD INSTALL
> functionality (cf
> r-devel in the summer).
>
> Rcpp builds and works for me under Linux and Windows -- the only
> platforms I
> have access too -- and I use it daily.
See Brian's e-mail - it builds on very specific setups of some Linux
systems only (Windows is a different story since you have a separate
makefile for that and it's a closed system).
> I had asked a friend who uses OS X to
> test this, but he hadn't gotten around to it. So OS X is simply
> untested.
>
> On Windows and Linux I now install one copy of Rcpp and have other
> package
> compile and link against it.
>
> | a matter of setting some flags to get it to work. (Re the message
> you
> | quoted - It's not really excluded, it simply doesn't work).
> |
> | Just to get you started, *remove* src/Makefile and create the
> | following src/Makevars:
> |
> | all: $(SHLIB) userLibrary
> |
> | USERLIB=libRcpp$(DYLIB_EXT)
> | USERDIR=../inst/lib
> |
> | userLibrary: $(USERLIB)
> | - at if test ! -e $(USERDIR)$(R_ARCH); then mkdir -p $(USERDIR)$
> | (R_ARCH); fi
> | cp $(USERLIB) $(USERDIR)$(R_ARCH)
> | cp Rcpp.h $(USERDIR)
>
> The platforms I work on don't need the $R_ARCH stuff which is why I
> didn't
> add it. If this is portable, we can surely talk about making it more
> generic.
>
The R_ARCH part is just the icing on the cake - the main problems are
hard-coding flags like "-shared", how to compile so's, wrong names for
the package library etc. etc.
Using a Makefile is always a very last resort that one should take
only if you are sure that you won't need anything from R (not true
here) and you are really sure that you know what you're doing.
> If David is willing to test this, we can probably sort this out over
> a few
> off-list emails. I'd be up for that.
>
> | $(USERLIB): Rcpp.o
> | $(SHLIB_CXXLD) -o $(USERLIB) $^ $(SHLIB_CXXLDFLAGS) $(ALL_LIBS)
> |
> | .PHONY: all clean userLibrary
> |
> | clean:
> | rm -f $(OBJECTS) $(SHLIB) $(USERLIB)
>
> That is overall a pretty small change.
Small? Wow - it's a completely different approach...
> So I don't see the need for the belligerent tone above, especially
> given that I have no access to OS X.
>
Hm... I don't see any mention of 'altruistic' in the dictionary for
'belligerent' so I hope it's just a typo ;).
Cheers,
S
> Thanks, Dirk
>
>
> |
> | Cheers,
> | Simon
> |
> |
> | On Nov 20, 2008, at 16:57 , David Reiss wrote:
> |
> | > Hi,
> | > I am very eager to use Rcpp on my Mac. However, the package
> doesn't
> | > compile,
> | > as reported at CRAN ("MacOS X binary: not available as excluded
> from
> | > build,
> | > see excludes<https://svn.r-project.org/R-dev-web/trunk/QA/Simon/packages/excludes
> | > >.")
> | > I thought I'd check if any R/OSX experts here have gotten it to
> | > work, or
> | > have any ideas on how to compile it on OSX, before I tried
> | > contacting the
> | > package maintainer. Here are the compilation errors I get when I
> try
> | > (on my
> | > 2nd-gen Mac Pro running Tiger; similar results on a Leopard box).
> | > Thanks for
> | > any assistance.
> | >
> | > % R CMD INSTALL Rcpp_0.6.0.tar.gz
> | > * Installing *source* package 'Rcpp' ...
> | > ** libs
> | > ** arch - i386
> | > g++ -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
> | > -mmacosx-version-min=10.4
> | > -I/Library/Frameworks/R.framework/Resources/include
> | > -I/Library/Frameworks/R.framework/Resources/include/i386 -
> msse3 -
> | > fPIC
> | > -I. `/Library/Frameworks/R.framework/Resources/bin/R CMD config --
> | > cppflags`
> | > -Wall -O2 -c Rcpp.cpp -o Rcpp.o
> | > g++ -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk
> | > -mmacosx-version-min=10.4 -shared -o ../inst/lib/libRcpp.dylib
> Rcpp.o
> | > i686-apple-darwin8-g++-4.0.1: unrecognized option '-shared'
> | > /usr/bin/ld: Undefined symbols:
> | > _main
> | > _INTEGER
> | > _LOGICAL
> | > _REAL
> | > _R_CHAR
> | > _R_ClassSymbol
> | > _R_DimSymbol
> | > _R_LevelsSymbol
> | > _R_NamesSymbol
> | > _R_NilValue
> | > _R_alloc
> | > _Rf_allocMatrix
> | > _Rf_allocVector
> | > _Rf_eval
> | > _Rf_getAttrib
> | > _Rf_isFactor
> | > _Rf_isInteger
> | > _Rf_isLogical
> | > _Rf_isMatrix
> | > _Rf_isNewList
> | > _Rf_isNumeric
> | > _Rf_isReal
> | > _Rf_isString
> | > _Rf_isVector
> | > _Rf_lang2
> | > _Rf_length
> | > _Rf_mkChar
> | > _Rf_protect
> | > _Rf_setAttrib
> | > _Rf_unprotect
> | > _SETCADR
> | > _SET_STRING_ELT
> | > _SET_VECTOR_ELT
> | > _STRING_ELT
> | > _VECTOR_ELT
> | > collect2: ld returned 1 exit status
> | > make: *** [../inst/lib/libRcpp.dylib] Error 1
> | > ERROR: compilation failed for package 'Rcpp'
> | > ** Removing '/Users/dreiss/.R/packages/Rcpp'
> | >
> | > [[alternative HTML version deleted]]
> | >
> | > _______________________________________________
> | > R-SIG-Mac mailing list
> | > R-SIG-Mac at stat.math.ethz.ch
> | > https://stat.ethz.ch/mailman/listinfo/r-sig-mac
> | >
> | >
> |
>
> --
> Three out of two people have difficulties with fractions.
>
>
More information about the R-SIG-Mac
mailing list