Hi, I am trying to package some code to use with R and wanted to call Rscript from within the Makevars file (I am trying to automate the setting of the location of a third party library depending on what is available / the system the package is being installed on). If I just have a simple Makevars containing PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib the package is built without any errors, if I attempt to add a call to Rscript, for example (which I think is the way that "Writing R Extensions" recommends): R_SCRIPT_NAME=Rscript ifneq ($(R_HOME),) R_SCRIPT=$(R_HOME)/bin$(R_ARCH_BIN)/$(R_SCRIPT_NAME) else R_SCRIPT=$(R_SCRIPT_NAME) endif R_ARCH=$(shell $(R_SCRIPT) -e 'cat(R.version$$arch)') PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib I get the following error: * checking for file 'NAGFWrappers/DESCRIPTION' ... OK * preparing 'NAGFWrappers': * checking DESCRIPTION meta-information ... OK * cleaning src make: Nothing to be done for `clean'. * removing junk files * checking for LF line-endings in source and make files * checking for empty or unneeded directories * building binary distribution * installing *source* package 'NAGFWrappers' ... ** libs /usr/share/R/make/shlib.mk:3: /usr/lib64/R/etcx86_64/Makeconf: No such file or directory make: *** No rule to make target `/usr/lib64/R/etcx86_64/Makeconf'. Stop. ERROR: compilation failed for package 'NAGFWrappers' * removing '/tmp/Rinst1513764321/NAGFWrappers' ERROR * installation failed Any help / pointers would be appreciated. Cheers Martyn Output from R.version: platform x86_64-redhat-linux-gnu arch x86_64 os linux-gnu system x86_64, linux-gnu status major 2 minor 11.0 year 2010 month 04 day 22 svn rev 51801 language R version.string R version 2.11.0 (2010-04-22) ________________________________________________________________________ The Numerical Algorithms Group Ltd is a company registered in England and Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. Th...{{dropped:4}}
Hi, I've found this type of thing to be extremely confusing, myself, but I managed to get something to work. I'm not sure how well. I also don't know if R is running autoconf or just configure--at least I don't remember off the top of my head. However, here are some examples of commands I put in my configure.ac file: CC=`"${R_HOME}/bin/R" CMD config CC` CXX=`"${R_HOME}/bin/R" CMD config CXX` CFLAGS=`"${R_HOME}/bin/R" CMD config CFLAGS` CXXFLAGS=`"${R_HOME}/bin/R" CMD config CXXFLAGS` PKG_LIBS=`${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"` then you can use some preset commands such as: AC_PROG_CC or generic commands such as: AC_SUBST(whateverVariableYouLike) and make sure to put in the key command at the bottom before AC_OUTPUT: AC_CONFIG_FILES([src/Makefile]) If R runs autoconf before ./configure when packaging or installing, you will be fine with just the configure.ac. Otherwise you might have to run autoconf before packaging. Anyway, what this will do is create a configure script when autoconf is run. When ./configure is run by R when installing, it will execute replacement commands on src/Makefile.in to generate the new Makefile. Anything within two @ symbols will be replaced. examples inside my Makefile.in: CC = @CC@ CXX = @CXX@ I still haven't figured out how to do the Makevars thing, but I've completely given up on R documentation. The key part from the R documentation that I found useful was that it calls configure on install, so you can use autoconf documentation to figure out how to set things up. I'm sure I probably left out a ton of info, but those are my two cents. Please feel free to ask me for more details if you are interested. Good luck, Sean On 5/20/11 12:04 PM, "Martyn Byng" <Martyn.Byng at nag.co.uk> wrote:> Hi, > > I am trying to package some code to use with R and wanted to call > Rscript from within the Makevars file (I am trying to automate the > setting of the location of a third party library depending on what is > available / the system the package is being installed on). > > If I just have a simple Makevars containing > > > PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib > > > the package is built without any errors, if I attempt to add a call to > Rscript, for example (which I think is the way that "Writing R > Extensions" recommends): > > > R_SCRIPT_NAME=Rscript > ifneq ($(R_HOME),) > R_SCRIPT=$(R_HOME)/bin$(R_ARCH_BIN)/$(R_SCRIPT_NAME) > else > R_SCRIPT=$(R_SCRIPT_NAME) > endif > R_ARCH=$(shell $(R_SCRIPT) -e 'cat(R.version$$arch)') > > PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib > > > I get the following error: > > * checking for file 'NAGFWrappers/DESCRIPTION' ... OK > * preparing 'NAGFWrappers': > * checking DESCRIPTION meta-information ... OK > * cleaning src > make: Nothing to be done for `clean'. > * removing junk files > * checking for LF line-endings in source and make files > * checking for empty or unneeded directories > * building binary distribution > * installing *source* package 'NAGFWrappers' ... > ** libs > /usr/share/R/make/shlib.mk:3: /usr/lib64/R/etcx86_64/Makeconf: No such > file or directory > make: *** No rule to make target `/usr/lib64/R/etcx86_64/Makeconf'. > Stop. > ERROR: compilation failed for package 'NAGFWrappers' > * removing '/tmp/Rinst1513764321/NAGFWrappers' > ERROR > * installation failed > > > Any help / pointers would be appreciated. > > Cheers > > Martyn > > Output from R.version: > > platform x86_64-redhat-linux-gnu > arch x86_64 > os linux-gnu > system x86_64, linux-gnu > status > major 2 > minor 11.0 > year 2010 > month 04 > day 22 > svn rev 51801 > language R > version.string R version 2.11.0 (2010-04-22) > > > ________________________________________________________________________ > The Numerical Algorithms Group Ltd is a company registered in England > and Wales with company number 1249803. The registered office is: > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. > > This e-mail has been scanned for all viruses by Star. Th...{{dropped:4}} > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
On May 20, 2011, at 12:04 PM, Martyn Byng wrote:> Hi, > > I am trying to package some code to use with R and wanted to call > Rscript from within the Makevars file (I am trying to automate the > setting of the location of a third party library depending on what is > available / the system the package is being installed on). > > If I just have a simple Makevars containing > > > PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib > > > the package is built without any errors, if I attempt to add a call to > Rscript, for example (which I think is the way that "Writing R > Extensions" recommends): > > > R_SCRIPT_NAME=Rscript > ifneq ($(R_HOME),) > R_SCRIPT=$(R_HOME)/bin$(R_ARCH_BIN)/$(R_SCRIPT_NAME) > else > R_SCRIPT=$(R_SCRIPT_NAME) > endif > R_ARCH=$(shell $(R_SCRIPT) -e 'cat(R.version$$arch)') >That's all pretty much unnecessary since all settings carry over from the R invocation and also it is what causes your error (since your "arch" is wrong). On unix it's as simple as PKG_LIBS=`${R_HOME}/bin/Rscript -e 'whatever.you.meant.to.run()'` and on Windows it's PKG_LIBS=`${R_HOME}/bin${R_ARCH_BIN}/Rscript.exe -e 'whatever.you.meant.to.run()'` Note that you should NOT mess with the environment variables that R uses as you're likely to set them incorrectly. Cheers, Simon> PKG_LIBS= -lnag_nag -L/fserver/nagprod/FL22/fll6a22df/lib > > > I get the following error: > > * checking for file 'NAGFWrappers/DESCRIPTION' ... OK > * preparing 'NAGFWrappers': > * checking DESCRIPTION meta-information ... OK > * cleaning src > make: Nothing to be done for `clean'. > * removing junk files > * checking for LF line-endings in source and make files > * checking for empty or unneeded directories > * building binary distribution > * installing *source* package 'NAGFWrappers' ... > ** libs > /usr/share/R/make/shlib.mk:3: /usr/lib64/R/etcx86_64/Makeconf: No such > file or directory > make: *** No rule to make target `/usr/lib64/R/etcx86_64/Makeconf'. > Stop. > ERROR: compilation failed for package 'NAGFWrappers' > * removing '/tmp/Rinst1513764321/NAGFWrappers' > ERROR > * installation failed > > > Any help / pointers would be appreciated. > > Cheers > > Martyn > > Output from R.version: > > platform x86_64-redhat-linux-gnu > arch x86_64 > os linux-gnu > system x86_64, linux-gnu > status > major 2 > minor 11.0 > year 2010 > month 04 > day 22 > svn rev 51801 > language R > version.string R version 2.11.0 (2010-04-22) > > > ________________________________________________________________________ > The Numerical Algorithms Group Ltd is a company registered in England > and Wales with company number 1249803. The registered office is: > Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. > > This e-mail has been scanned for all viruses by Star. Th...{{dropped:4}} > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > >
Seemingly Similar Threads
- source problem
- grep fixed (?) in 2.14
- Use of R and Rscript in configure/Makevars in packages
- How to make an R package that uses Boost.Thread, qualified to be published on CRAN or shared by the most
- source file on startup question - why does an old version of a function show up? ggplot or R?