I think in your case it would be enough to use
preinstallopts = 'export  PKG_CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" &&'
(be warned though, I don't use R, this is just an mildly educated guess based 
on that issue you mentioned).

On Wed, 27 Nov 2019 at 14:17, Loris Bennett 
<[email protected]<mailto:[email protected]>> wrote:
Alan O'Cais <[email protected]<mailto:[email protected]>> writes:

> I took a quick look at  
> https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-Makevars 
> and it looks like you need to use  PKG_CXXFLAGS

Yes, I just found a reference to PKG_CXXFLAGS here:

  https://github.com/easybuilders/easybuild-easyconfigs/issues/8930

where the following construction is given:

  toolchainopts = {'cstd': 'c99'}
  preinstallopts = 'export PKG_CFLAGS="$CFLAGS" && '

How would this look in my case?  Does the macro STAN_THREADS need to be
set as a toolchain option?  If so, what is the correct dictionary key?

Cheers,

Loris

> On Wed, 27 Nov 2019 at 13:41, Åke Sandgren 
> <[email protected]<mailto:[email protected]>> wrote:
>
>  Ahhh R package.... no I think that's a lot harder.
>  Not sure how R packages are built so can't currently help there.
>
>  Anyway, you should use this way of changing things like buildopts
>
>  self.cfg.update('buildopts', "BIGNUMA=1 ")
>
>  And in pre_configure_hook you should only change opts related to
>  configure step. build step opts should be done in pre_build_hook
>
>  On 11/27/19 1:29 PM, Loris Bennett wrote:
>  > Åke Sandgren <[email protected]<mailto:[email protected]>> 
> writes:
>  >
>  >> What does your hooks look like?
>  >
>  >   def pre_configure_hook(self, *args, **kwargs):
>  >
>  >       """Pre-configure hook"""
>  >
>  >       # Build RStan with threading
>  >       ##################################################
>  >       if self.name<http://self.name> == 'RStan':
>  >           self.cfg['buildopts'] = self.cfg['buildopts'] \
>  >               + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"'
>  >           self.log.info<http://self.log.info>("[pre-build hook] Added 
> -DSTAN_THREADS to CXX14FLAGS to buildopts")
>  >           return
>  >
>  >   def pre_extensions_hook(self, *args, **kwargs):
>  >
>  >       """Pre-extensions hook"""
>  >
>  >       # Build RStan with threading
>  >       ##################################################
>  >       if self.name<http://self.name> == 'RStan':
>  >           self.cfg['buildopts'] = self.cfg['buildopts'] \
>  >               + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"'
>  >           self.log.info<http://self.log.info>("[pre-extensions hook] Added 
> -DSTAN_THREADS to CXX14FLAGS to buildopts")
>  >           return
>  >
>  > I have also tried this with CXXFLAGS.
>  >
>  > In my own copy of the EC I have tried various things:
>  >
>  >   #preconfigopts = "-DSTAN_THREADS"
>  >   #buildopts = "-DSTAN_THREADS"
>  >   #preconfigopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>  >   #buildopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>  >   buildopts = ' -DSTAN_THREADS CC="$CC" FC="$F77"'
>  >
>  > My impression is that none of these things affect the way the R packages
>  > are build.
>  >
>  > Cheers,
>  >
>  > Loris
>  >
>  >> And in what hook are you trying to do this? (Which i'll see when you
>  >> show me the hook ...)
>  >>
>  >> On 11/27/19 10:19 AM, Loris Bennett wrote:
>  >>> Hi Åke,
>  >>>
>  >>> Åke Sandgren 
> <[email protected]<mailto:[email protected]>> writes:
>  >>>
>  >>>> You might need to add it to the configopts (preconfigopts). Not sure
>  >>>> which steps that easyconfig/block is going through.
>  >>>
>  >>> I have tried tweaking the EC directly with
>  >>>
>  >>>   preconfigopts = 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS" '
>  >>>
>  >>> but this doesn't help.  In the log I see
>  >>>
>  >>>   == 2019-11-27 10:01:00,566 easyconfig.py:583 INFO setting easyconfig
>  >>>   parameter preconfigopts: value CXXFLAGS="$CXXFLAGS -DSTAN_THREADS"
>  >>>   (type: <type 'str'>)
>  >>>
>  >>> but subsequently
>  >>>
>  >>>   == 2019-11-27 10:01:01,750 environment.py:97 INFO Environment variable
>  >>>   CXXFLAGS set to -O2 -ftree-vectorize -march=native -fno-math-errno
>  >>>   (previously undefined)
>  >>>
>  >>> A heavy-handed approach would seem to be redefining the default value of
>  >>> CXXFLAGS global.  Is that possible?
>  >>>
>  >>> Otherwise it looks like I'll have to patch the Makefiles in the sources.
>  >>>
>  >>> Cheers,
>  >>>
>  >>> Loris
>  >>>
>  >>>> On 11/21/19 10:05 AM, Loris Bennett wrote:
>  >>>>> Loris Bennett 
> <[email protected]<mailto:[email protected]>> writes:
>  >>>>>
>  >>>>>> Hi,
>  >>>>>>
>  >>>>>> I am trying to install
>  >>>>>>
>  >>>>>>   RStan-2.18.2-foss-2018b-R-3.5.1.eb
>  >>>>>>
>  >>>>>> with the additional compiler flag:
>  >>>>>>
>  >>>>>>   -DSTAN_THREADS
>  >>>>>>
>  >>>>>> I want to us a hook and tried
>  >>>>>>
>  >>>>>>   def pre_configure_hook(self, *args, **kwargs):
>  >>>>>>
>  >>>>>>       """Pre-build hook"""
>  >>>>>>
>  >>>>>>       # Build RStan with threading
>  >>>>>>       ##################################################
>  >>>>>>       if self.name<http://self.name> == 'RStan':
>  >>>>>>           self.cfg['buildopts'] = self.cfg['buildopts'] \
>  >>>>>>               + 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS"'
>  >>>>>>           self.log.info<http://self.log.info>("[pre-build hook] Added 
> -DSTAN_THREADS to CXXFLAGS to buildopts")
>  >>>>>>           return
>  >>>>>>
>  >>>>>> In the log file I can see that  the hooks is called, but the flag
>  >>>>>> doesn't seem to be used.
>  >>>>>>
>  >>>>>> What am I doing wrong?
>  >>>>>
>  >>>>> I have also tried adding
>  >>>>>
>  >>>>>   buildopts = "-DSTAN_THREADS"
>  >>>>>
>  >>>>> to my own copy of the easyconfig. This does appear in
>  >>>>> the log file has having been set:
>  >>>>>
>  >>>>>   == 2019-11-21 09:20:23,543 easyconfig.py:583 INFO setting easyconfig
>  >>>>>   parameter buildopts: value -DSTAN_THREADS (type: <type 'str'>)
>  >>>>>
>  >>>>> but it is not passed to the compiler.  The compile lines do contain
>  >>>>> other macros, but these are obviously coming from elsewhere:
>  >>>>>
>  >>>>>  g++ -std=gnu++14
>  >>>>>  
> -I"/trinity/shared/easybuild/software/R/3.5.1-foss-2018b/lib64/R/include"
>  >>>>>  -DNDEBUG -I"../inst/include"
>  >>>>>  
> -I"`"/trinity/shared/easybuild/software/R/3.5.1-foss-2018b/lib64/R/bin/Rscript"
>  >>>>>  --vanilla -e "cat(system.file('include', 'src', package =
>  >>>>>  'StanHeaders'))"`" -DBOOST_DISABLE_ASSERTS
>  >>>>>  -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION ...
>  >>>>>
>  >>>>> Any ideas how I could insert "-DSTAN_THREADS"?  Or can this kind of
>  >>>>> thing only be done by patching the Makefile?
>  >>>>>
>  >>>>> Cheers,
>  >>>>>
>  >>>>> Loris
>  >>>>>
>  >>>>> --
>  >>>>> Dr. Loris Bennett (Mr.)
>  >>>>> ZEDAT, Freie Universität Berlin         Email 
> [email protected]<mailto:[email protected]>
>  >>>>>
>
>  --
>  Ake Sandgren, HPC2N, Umea University, S-90187 Umea, Sweden
>  Internet: [email protected]<mailto:[email protected]>   Phone: +46 90 
> 7866134 Fax: +46 90-580 14
>  Mobile: +46 70 7716134 WWW: http://www.hpc2n.umu.se
--
Dr. Loris Bennett (Mr.)
ZEDAT, Freie Universität Berlin         Email 
[email protected]<mailto:[email protected]>


--
Dr. Alan O'Cais
E-CAM Software Manager
Juelich Supercomputing Centre
Forschungszentrum Juelich GmbH
52425 Juelich, Germany

Phone: +49 2461 61 5213
Fax: +49 2461 61 6656
E-mail: [email protected]<mailto:[email protected]>
WWW:    http://www.fz-juelich.de/ias/jsc/EN


------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------

Reply via email to