[Rcpp-devel] Dependence on GNU make because of $(shell)
Hi Christoph,
On 16 November 2010 at 15:59, Christoph Bergmeir wrote:
| Hi Rcpp list, | | the CRAN maintainers still don't seem to be too happy about the dependence on GNU make that gets introduced by $(shell) in the Makevars files. | | The package I recently submitted to CRAN, RSNNS, uses exactly the same mechanism as proposed in the Rcpp vignette or is implemented e.g. in termstrc and many other Rcpp packages. | | Brian Ripley proposed now in an email on CRAN at r-project.org to just use: | | PKG_LIBS = `$(R_HOME)/bin/Rscript -e "Rcpp:::LdFlags()"` | | Is this a solution? Or are there other drawbacks? It's a somewhat long story. It's been about two years since I started to maintain and extend the Rcpp package which its previous maintainer had left dead and rotting in the digital archives for two years already at that point. Sane build processes have always been one of many core concerns we tried to address, and we have gained some experience. I do think we provide them. Now, thanks in large part to Doug Bates who suggested it, the situation is also much better now with "LinkingTo: Rcpp" which most of the Rcpp-using packages on CRAN have adopted -- as this reduces the need for two shell-or-backtick expressions down to one. Moreover, before LinkingTo, the expression for the proper include directory had to be invoked each time a source file in a package using Rcpp was being compiled, ie N times for N source files. And there had been side effects with this which have frustrating particularly to the maintainers of the Windows build service, ie Uwe Ligges and to some extend Brian Ripley. What we recommend now is our best effort at a reliable solution. It works for all packages employing it, but I should add that I think some of the now 16 packages on CRAN and BioC that employ Rcpp use the scheme suggested by Brian Ripley. Personally, I think I don't use it in any of my packages. I also believe we do not recommended it anywhere in the documentation (and if we forget to prune an older recommendation to use it, let us know and we amend it). But we are all grown-ups so you are free to use whatever you prefer. We ourselves went back and forth once or twice earlier in the year. You can always try, especially with the win-builder service, and see how it does. Worst case, you get a new upload to fix your build variables. But if your package were to break, I might feel less inclined to help if you don't employ the solution I recommended to avoid the breakage in the first place. ;-) Finally, in practice, the "SystemRequirements: GNU make" is not all that onerous for any systems used in the real world which are bound to have GNU make anyway. Oh, and last but not least, we do have some plans to address LinkingTo: completely at the R level, but Romain, Uwe, Doug, Martin, myself, ... are also busy with other things so this has not seen real progress. So that's my $0.02. | As it seems to me that this problem is not so much a problem of a specific package, as more a general Rcpp problem, I'd like to discuss this topic here.. Yup. Hope the mail was somewhat helpful. Cheers, Dirk
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com