On 16 February 2012 at 11:00, Patrick Burns wrote: | Success. Nice. | I'll tentatively offer this summary of the | important things to do. There are three | environment variables to set:
I should document some of this. Maybe in Makefile.win? Better ideas? | * PATH needs to include the path to the R DLLs | for example the bin\i386 under your R_HOME. Right. And I think there is little we can do -- the PATH has to be there for the dll files to be found so that the executable can run. | * R_HOME needs to be set. That one is odder. It definitely is found on Linux, and set. From my build directory: "R_HOME","/usr/lib64/R", Is R_HOME set inside your file RInsideEnvVars.h (which we generate during the build process). Maybe there is a bug there. | * R_LIBS_USER needs to be set. (Trying to do it | in .Rprofile didn't work for me.) Also not sure why .Rprofile doesn't work. | There is still a puzzle in my mind. Setting | R_LIBS_USER was necessary to get: | make -f Makefile.win | to work. Fine. Because we query Rcpp and RInside from R about their locations. So the location must be known. | But when it is not set and the exe files already | exist, there is strange (to me) behavior. Double | clicking runs the code, but running it in a | command window does not. Essentially R_LIBS_USER | is okay in the double click route but the environment | variable is necessary when run in a command window. Is that related to setting environment variables, and have it take effect only for new shells / command windows? Dirk | Pat | | On 15/02/2012 14:03, Dirk Eddelbuettel wrote: | > | > On 15 February 2012 at 11:14, Patrick Burns wrote: | > | Dirk is once again correct. The "missing R.dll" | > | is a PATH problem. | > | | > | One way of solving it is to add the path to the | > | R DLLs to the end of PATH. For instance adding: | > | | > | C:\Program Files\R\R-2.14.1\bin\i386 | > | | > | Once I've arranged those DLLs to be visible, the | > | new problem is: | > | | > | Fatal error: unable to open the base package | > | > If I recall correctly I solved that by setting R_HOME as | > your embedded R interpreter doesn't know its location... | > | > Dirk | > | > | That seems like it might be a path problem as well | > | but I'm not seeing how to fix it. | > | | > | Pat | > | | > | On 14/02/2012 21:52, Dirk Eddelbuettel wrote: | > |> | > |> On 14 February 2012 at 21:05, Patrick Burns wrote: | > |> | On 14/02/2012 20:59, Dirk Eddelbuettel wrote: | > |> |> | > |> |> (resending with CC to list which I omitted a minute ago --Dirk) | > |> |> | > |> |> On 14 February 2012 at 20:47, Patrick Burns wrote: | > |> |> | | > |> |> | | > |> |> | On 14/02/2012 20:14, Dirk Eddelbuettel wrote: | > |> |> |> | > |> |> |> On 14 February 2012 at 20:04, Patrick Burns wrote: | > |> |> |> | Obviously I don't *really* know what I'm | > |> |> |> | doing, or even *sort of* know what I'm | > |> |> |> | doing. But that never stopped me before. | > |> |> |> | | > |> |> |> | Here is hopefully enough breadcrumbs to | > |> |> |> | help someone, or even all of us. | > |> |> |> | | > |> |> |> | | > |> |> |> | I've reinstalled RInside so that I am | > |> |> |> | starting with the original Makefile.win | > |> |> |> | | > |> |> |> | *) There is an extraneous "n" on the first | > |> |> |> | line (first character) of Makefile.win -- 'make' | > |> |> |> | doesn't like that. | > |> |> |> | > |> |> |> I don't know for sure what your are talking about. A common fix would be to | > |> |> |> send a diff. Could you do that? | > |> |> | | > |> |> | This is Windows, remember -- perhaps there is a | > |> |> | > |> |> This is R, remember, and these tools come with Rtools by Duncan Murdoch. | > |> |> | > |> |> | way of doing a diff, I don't know it. But the | > |> |> | start of Makefile.win that I see out of the box is: | > |> |> | | > |> |> | n## -*- mode: makefile; tab-width: 8; -*- | > |> |> | ## | > |> |> | ## Simple Makefile for Windows | > |> |> | | > |> |> | Note the bizarre first character. | > |> |> | > |> |> Got it. Was still present here. Sorry about that, and thanks for catching it. | > |> |> | > |> |> Next release will fix, now corrected in SVN. | > |> |> | > |> |> |> | *) I need to comment out the command setting | > |> |> |> | R_HOME and set it in DOS instead. | > |> |> |> | > |> |> |> Works for me in the Makefile.win | > |> |> |> | > |> |> |> | *) The next problem is two instances each of: | > |> |> |> | | > |> |> |> | there is no package called [Rcpp, RInside] | > |> |> |> | | > |> |> |> | This is because .libPaths() is only finding | > |> |> |> | the main library and not the one where the | > |> |> |> | installed packages go. | > |> |> |> | | > |> |> |> | This is diagnosed by adding a line to Makefile.win: | > |> |> |> | | > |> |> |> | Rlibpaths := $(shell echo '.libPaths()' | $(R_HOME)/bin/R $(R_ARCH) | > |> |> |> | --vanilla --slave) | > |> |> |> | > |> |> |> I would recommend using ~/.Rprofile which strikes me as easier. | > |> |> |> | > |> |> |> | Adding a line to the checkR task: | > |> |> |> | | > |> |> |> | echo $(Rlibpaths) | > |> |> |> | | > |> |> |> | And then doing: | > |> |> |> | | > |> |> |> | make checkR -f Makefile.win | > |> |> |> | | > |> |> |> | This is the same in 32-bit and 64-bit. | > |> |> |> | | > |> |> |> | This problem can be remedied by setting the | > |> |> |> | R_LIBS_USER environment variable. You can | > |> |> |> | see what that is with the R command: | > |> |> |> | | > |> |> |> | Sys.getenv('R_LIBS_USER') | > |> |> |> | | > |> |> |> | | > |> |> |> | *) Now there is some progress, but not much. | > |> |> |> | | > |> |> |> | It compiles: | > |> |> |> | rinside_callbacks0 | > |> |> |> | rinside_module_sample0 | > |> |> |> | rinside_sample0 | > |> |> |> | > |> |> |> Can you run rinside_sample0.exe ? | > |> |> | > |> |> Does that run? | > |> | | > |> | There is the missing R.dll problem. | > |> | > |> That is "just" a PATH problem. For now, copy this dll (and there will be | > |> four or five more from R, and then possibly from Rcpp and RInside) into a | > |> working (temp) directory and try. | > |> | > |> Seeing "hello, world" is a good proof. The rest is setup issues, which on | > |> Windows often descend into man-to-machine combat. | > |> | > |> Dirk | > |> | > |> |> | > |> |> |> | And gets an error on rinside_sample1: | > |> |> |> | | > |> |> |> | reopening rinside_sample1.exe: Permission denied | > |> |> |> | > |> |> |> Huh? | > |> |> | | > |> |> | Agreed. That is the only indication of it | > |> |> | being upset. | > |> |> | | > |> |> | But I renamed that file to try to make it do it last. | > |> |> | Running it again there was no error -- everything | > |> |> | compiled. | > |> |> | | > |> |> | Compiled for 32-bit. | > |> |> | | > |> |> | There is not an x64 subdirectory to 'lib' (as there is | > |> |> | with 'libs') so nothing compiles. | > |> |> | > |> |> Are you talking about RInside or Rcpp? Did you install from source or via | > |> |> the prebuilt CRAN binary? | > |> |> | > |> |> Everything from CRAN should now be multiarch, 32 and 64 bit. | > |> | | > |> | Prebuilt from CRAN. Rcpp is fine, | > |> | RInside/lib/x64 went AWOL. | > |> | | > |> | Pat | > |> | | > |> |> | > |> |> Dirk | > |> |> | > |> |> |> | However the three that did compile don't run. They | > |> |> |> | all have the error message: | > |> |> |> | | > |> |> |> | The program can't start because R.dll is missing from | > |> |> |> | your computer. Try reinstalling the program to fix | > |> |> |> | this problem. | > |> |> |> | > |> |> |> Could that be a Win7 security setting or something like it? | > |> |> | | > |> |> | That's an interesting idea. Anyone have | > |> |> | ideas about testing it? | > |> |> | | > |> |> | Pat | > |> |> | | > |> |> |> | > |> |> |> | This is using Rtools2.14 and R 2.14.1 with | > |> |> |> | RInside_0.2.6 Rcpp_0.9.9 | > |> |> |> | > |> |> |> I think I used the same combination with success. | > |> |> |> | > |> |> |> Dirk | > |> |> |> | > |> |> |> | > |> |> |> | Pat | > |> |> |> | | > |> |> |> | On 14/02/2012 17:53, Dirk Eddelbuettel wrote: | > |> |> |> |> | > |> |> |> |> Hi Pat, | > |> |> |> |> | > |> |> |> |> On 14 February 2012 at 17:43, Patrick Burns wrote: | > |> |> |> |> | Good point about the Rtools version. I started | > |> |> |> |> | with 2.13, but I get the same thing with 2.14. | > |> |> |> |> | | > |> |> |> |> | Here are the key changes that I made to Makefile.win: | > |> |> |> |> | | > |> |> |> |> | RCPPINCL := -IC:/Users/pat/Documents/R/win-library/2.14/Rcpp/include | > |> |> |> |> | RCPPLIBS := | > |> |> |> |> | C:/Users/pat/Documents/R/win-library/2.14/Rcpp/libs/i386/Rcpp.dll | > |> |> |> |> | | > |> |> |> |> | RINSIDEINCL := -IC:/Users/pat/Documents/R/win-library/2.14/RInside/include | > |> |> |> |> | RINSIDELIBS := | > |> |> |> |> | C:/Users/pat/Documents/R/win-library/2.14/RInside/libs/i386/libRInside.dll | > |> |> |> |> | > |> |> |> |> That's not quite right, is it? What do (quoting from examples/standard/Makefile.win) | > |> |> |> |> these do: | > |> |> |> |> | > |> |> |> |> ## include headers and libraries for RInside embedding classes | > |> |> |> |> RINSIDEINCL := $(shell echo 'RInside:::CxxFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave) | > |> |> |> |> RINSIDELIBS := $(shell echo 'RInside:::LdFlags()' | $(R_HOME)/bin/R $(R_ARCH) --vanilla --slave) | > |> |> |> |> | > |> |> |> |> | I then do: | > |> |> |> |> | | > |> |> |> |> | make -f Makefile.win | > |> |> |> |> | | > |> |> |> |> | I seem to have failed in my attempt to | > |> |> |> |> | tell it where R lives -- I get a cygwin | > |> |> |> |> | warning about MS-DOS style path, but I | > |> |> |> |> | don't think that is really a problem. | > |> |> |> |> | > |> |> |> |> R_HOME must be defined. You can get it from R, or hardcode it. | > |> |> |> |> | > |> |> |> |> The single best start is to try | > |> |> |> |> | > |> |> |> |> cd examples/standard | > |> |> |> |> make -f Makefile.win | > |> |> |> |> | > |> |> |> |> which should create 10+ executable. And you can borrow freely from that | > |> |> |> |> Makefile.win which should work. | > |> |> |> |> | > |> |> |> |> Lastly, the Cygwin thing is line noise which you can suppress by setting an | > |> |> |> |> env var appropriately. This comes from the newer Rtools. | > |> |> |> |> | > |> |> |> |> | It then attempts the g++ command, gives | > |> |> |> |> | the multiple definition statements, and: | > |> |> |> |> | > |> |> |> |> Linking is still wrong then. | > |> |> |> |> | > |> |> |> |> Dirk | > |> |> |> |> | > |> |> |> |> | > |> |> |> | | > |> |> |> | -- | > |> |> |> | Patrick Burns | > |> |> |> | patr...@burns-stat.com | > |> |> |> | http://www.burns-stat.com | > |> |> |> | http://www.portfolioprobe.com/blog | > |> |> |> | twitter: @portfolioprobe | > |> |> |> | > |> |> | | > |> |> | -- | > |> |> | Patrick Burns | > |> |> | patr...@burns-stat.com | > |> |> | http://www.burns-stat.com | > |> |> | http://www.portfolioprobe.com/blog | > |> |> | twitter: @portfolioprobe | > |> |> | > |> | | > |> | -- | > |> | Patrick Burns | > |> | patr...@burns-stat.com | > |> | http://www.burns-stat.com | > |> | http://www.portfolioprobe.com/blog | > |> | twitter: @portfolioprobe | > |> | > | | > | -- | > | Patrick Burns | > | patr...@burns-stat.com | > | http://www.burns-stat.com | > | http://www.portfolioprobe.com/blog | > | twitter: @portfolioprobe | > | | -- | Patrick Burns | patr...@burns-stat.com | http://www.burns-stat.com | http://www.portfolioprobe.com/blog | twitter: @portfolioprobe -- "Outside of a dog, a book is a man's best friend. Inside of a dog, it is too dark to read." -- Groucho Marx _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel