Sean, On May 20, 2011, at 9:00 PM, Sean Robert McGuffee wrote:
> >> Note that setting PKG_LIBS in configure won't work since configure doesn't >> know how to handle it. It may be ok if you don't care that the flags won't be >> checked, but then you better know what you're doing ;). >> > Why wouldn't PKG_LIBS work in configure? > > configure.ac: > > PKG_LIBS=`${R_HOME}/bin/Rscript -e "Rcpp:::LdFlags()"` > AC_SUBST(PKG_LIBS) > > src/Makefile.in: > PKG_LIBS = @PKG_LIBS@ > It will "work" as in the substitution will take place but any tests you run in configure will ignore it since autoconf only uses LIBS and not PKG_LIBS. That's why the standard procedure is to set LIBS and then use PKG_LIBS=@LIBS@ in Makevars.in (there are many ways to do this, though). >> You have to run autoconf yourself - R has no way of knowing how to bootstrap >> your setup. Some authors prefer to use the maintainer mode in configure for >> that, but you still have to create some configure script. > > Good to know--I hoped that explained what was happening sometimes when > autoconf needed to be run. > NOTE: The manual says, > "1.2 Configure and cleanup > Note that most of this section is specfic to Unix-alikes: see the comments > later on about the Windows port of R. > > If your package needs some system-dependent configuration before > installation you can include an executable (Bourne shell) script configure > in your package which (if present) is executed by R CMD INSTALL before any > other action is performed. This can be a script created by the Autoconf > mechanism, but may also be a script written by yourself. Use this to detect > if any nonstandard libraries are present such that corresponding code in the > package can be disabled at install time rather than giving error messages > when the package is compiled or used. To summarize, the full power of > Autoconf is available for your extension package (including variable > substitution, searching for libraries, etc.). " > > It might be worth someone revizing this to take out the Autoconf term if it > really isn't even being used. > It simply says that the configure can be created by autoconf or manually - entirely up to you. It also says explicitly that for this you must include a script named configure so it's quite unmistakable that R won't be creating it. Cheers, Simon > >> >> >>> 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@ >> >> You can omit all that if you use Makevars. Also using Makefile is discouraged >> because it forces you to replicate the whole building process which is very >> error prone (and may be different for each version of R). >> >> >>> I still haven't figured out how to do the Makevars thing, >> >> >> It's very simple - just remove all targets from your Makefile and you have >> Makevars since R will do the compilation and linking for you and correctly. >> If >> you feel like it, you can override its behavior by adding one rule (e.g., >> all:) that lists your desired dependency and you can pass on to the R default >> by depending on $(SHLIB). >> >> Cheers, >> Simon >> >> >> >>> 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.b...@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@r-project.org mailing list >>>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> ______________________________________________ >>> R-devel@r-project.org mailing list >>> https://stat.ethz.ch/mailman/listinfo/r-devel >>> >>> >> > > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel