Le 27/09/16 à 16:17, Kasper Daniel Hansen a écrit :
As a package author, it is in my opinion irresponsible to override these
system settings (which is why it is also impossible). You have no idea
what system it is being deployed on,
as the it guy dedicated to install and maintain softs on our cluster I
have a reasonable knowledge of the systems I work on.
I don't want to distribute any of the piece of code I was asked to made
available on the cluster.
I just need (and succeded plus functional test succeded) to build the
Rpackage requested by a specific software.
I mean, you don't even know if the
compiler is gcc.If a user wants (say) heavy optimization they will
compile R with optimization. (For this reason I also don't think users
should modify their ~/.R/Makevars, unless for testing purposes).
my question was not in a R package developer context, but in the R user
that grabs some piece of code and is not abble to compile it because of
1) a developper that mixed C and C++ code which is legit.
2) a silly interaction beetween C and C++ symbol generation because of
the use, in our case, of CC = gcc -std=gnu99
3) a dev that answwer: "I have no clue, in debian it works" ;-(
anyway I still convinced that if R provides a mechanisn hierachical way
of variable overwrite pkg / user/ system it _SHOULD_ be consistent at
all levels
my question was raised because of our install mechanism that (hopefully)
does not allow
modification of files like ~/.R/Makevars.
I can only "play" with the sources of the software it is working on
and//or environment variables. so I wanted to have a temporary way of
setting CC to be plain gcc without ISO C99 language standard support
just for this specific R library.
The exception is (in my opinion) if you need to decrease the level of
optimization because you know or suspect the compiler to generate wrong
code.
What you should do, is use
PKG_CFLAGS
as documented in R-exts, 1.2.1 under "Using Makevars".
in the documentation you pointed (and trust me I read it), keyword is
_set additional_ preprocessor options and//or compiler flags
only way to _remove_ is to overwrite
back to logic.
either Makevars, whatever level, allow to overwrite CC definition
either Makevars, whatever level, disable CC redefinition
but not a mix
Eric
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel