Hi Åke, Thanks anyway for the tips regarding the hooks.
Cheers, Loris Åke Sandgren <[email protected]> writes: > 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]> writes: >> >>> What does your hooks look like? >> >> def pre_configure_hook(self, *args, **kwargs): >> >> """Pre-configure hook""" >> >> # Build RStan with threading >> ################################################## >> if self.name == 'RStan': >> self.cfg['buildopts'] = self.cfg['buildopts'] \ >> + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"' >> 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 == 'RStan': >> self.cfg['buildopts'] = self.cfg['buildopts'] \ >> + 'CXX14FLAGS="$CXX14FLAGS -DSTAN_THREADS"' >> 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]> 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]> 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 == 'RStan': >>>>>>> self.cfg['buildopts'] = self.cfg['buildopts'] \ >>>>>>> + 'CXXFLAGS="$CXXFLAGS -DSTAN_THREADS"' >>>>>>> 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] >>>>>> -- Dr. Loris Bennett (Mr.) ZEDAT, Freie Universität Berlin Email [email protected]

