On 16/02/2012 13:38, Dirk Eddelbuettel wrote:
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.
Yes, and I don't see that as being burdensome.
| * 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.
What I have there is:
"R_HOME","d:/Rcompile/recent/R-214~1.1",
and
"R_LIBS_USER","C:/Users/CRAN/Documents/R/win-library/2.14",
That R_HOME is certainly not going
to work on my machine. R_LIBS_USER
would be right for me if my name were
CRAN.
| * 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.
Far be it from me to screw anything up, but
perhaps others will have different results
anyway.
| 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?
I think the explanation is that I made a
wrong assumption. I was so happy to have
it not crash that my definition of success
was probably a little weak. Doing the double
click means that the window disappears before
I can read it. So instead of having real
output it probably says Rcpp not found.
That is, I think things are fine -- the mystery
was inside my head rather than outside it.
Pat
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
|> |> |> |> | [email protected]
|> |> |> |> | http://www.burns-stat.com
|> |> |> |> | http://www.portfolioprobe.com/blog
|> |> |> |> | twitter: @portfolioprobe
|> |> |> |>
|> |> |> |
|> |> |> | --
|> |> |> | Patrick Burns
|> |> |> | [email protected]
|> |> |> | http://www.burns-stat.com
|> |> |> | http://www.portfolioprobe.com/blog
|> |> |> | twitter: @portfolioprobe
|> |> |>
|> |> |
|> |> | --
|> |> | Patrick Burns
|> |> | [email protected]
|> |> | http://www.burns-stat.com
|> |> | http://www.portfolioprobe.com/blog
|> |> | twitter: @portfolioprobe
|> |>
|> |
|> | --
|> | Patrick Burns
|> | [email protected]
|> | http://www.burns-stat.com
|> | http://www.portfolioprobe.com/blog
|> | twitter: @portfolioprobe
|>
|
| --
| Patrick Burns
| [email protected]
| http://www.burns-stat.com
| http://www.portfolioprobe.com/blog
| twitter: @portfolioprobe
--
Patrick Burns
[email protected]
http://www.burns-stat.com
http://www.portfolioprobe.com/blog
twitter: @portfolioprobe
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel