Dear Jakob,
On 13/03/2019 15:27, Jakob Schiøtz wrote:
Thank you to all of you for your help. It turned out that OpenKIM does some
magic in the API package to make CMake remember what compilers were used to
build the API, and then use the same for the models. That somehow goes wrong
in an EasyBuild environment.
In the end, the solution was simply to add these lines to the easyconfig of the
models:
configopts += '-DCMAKE_C_COMPILER=`which icc` '
configopts += '-DCMAKE_CXX_COMPILER=`which icpc` '
configopts += '-DCMAKE_Fortran_COMPILER=`which ifort` ‘
I have updated my OpenKIM PR #7569 to reflect this.
https://github.com/easybuilders/easybuild-easyconfigs/pull/7569
Thanks again for your help.
Good to hear you've got it figured out.
I would prefer a slightly cleaner approach though, by enhancing the
CMakeMake easyblock, see
https://github.com/easybuilders/easybuild-easyblocks/pull/1652 .
regards,
Kenneth
Jakob
On 12 Mar 2019, at 14:04, Jakob Schiøtz <schi...@fysik.dtu.dk> wrote:
On 12 Mar 2019, at 11:03, Paul Melis <paul.me...@surfsara.nl> wrote:
Hi Jakob,
Whoops, sorry, didn't read your post in enough detail. I saw the options
-DCMAKE_C_COMPILER='icc' and such and didn't expect those to come from EB
and/or the package's CMAKE. In general it is best to use full paths for those
values.
Actually, the OpenKIM developers just told me that the kim API does some
“magic” to remember what compilers were used for the API itself, and that is
what breaks CMAKE. The solution is to use your suggestion and give the full
path to the compilers.
Do you (or anybody else) know how to find the full path for the compiler, so I
can add that to the CMake command line? And if so, how do I prevent EasyBuild
from also adding a -DCMAKE_C_COMPILER='icc’ to the command line, so my own
definition takes precedence?
Best regards
Jakob
Paul
----- Original Message -----
From: "Jakob Schiøtz" <schi...@fysik.dtu.dk>
To: "easybuild" <easybuild@lists.ugent.be>
Sent: Tuesday, 12 March, 2019 10:35:36
Subject: Re: [easybuild] Problems building with CMake
On 12 Mar 2019, at 10:25, Paul Melis <paul.me...@surfsara.nl> wrote:
You need to set CMAKE_C_COMPILER and CMAKE_CXX_COMPILER values to the full path to the compilers,
not just "icc" and "icpc". CMake's error is pretty clear about it.
Dear Paul,
Thanks for your suggestion, but are you sure?
It is the easybuild itself that sets them to icc and icpc, not my easyconfig.
And the error message says (my emphasis):
Tell CMake where to find the compiler by setting either the environment variable
"CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path to the
compiler, ***or to the compiler name if it is in the PATH.***
Best regards
Jakob
Paul
I am trying to make a .eb files for a module using the CMakeMake block. I am
having a strange problem, and my lack of experience with CMake makes it hard
for me to figure out what is going on.
Apparently, cmake cannot find the compilers, since it somehow gets the idea
that they are placed in the build directory:
== 2019-03-11 11:07:25,450 run.py:192 INFO running cmd: cmake
-DCMAKE_INSTALL_PREFIX=/home/niflheim/schiotz/easybuild/broadwell/software/OpenKIM-Models/20190221-intel-2018b
-DCMAKE_C_COMPILER='icc' -DCMAKE_Fortran_FLAGS='-O2 -xHost -ftz
-fp-speculation=safe -fp-model source' -DCMAKE_CXX_FLAGS='-O2 -xHost -ftz
-fp-speculation=safe -fp-model source' -DCMAKE_CXX_COMPILER='icpc'
-DCMAKE_Fortran_COMPILER='ifort' -DCMAKE_C_FLAGS='-O2 -xHost -ftz
-fp-speculation=safe -fp-model source' -DCMAKE_VERBOSE_MAKEFILE=ON
-DKIM_API_INSTALL_COLLECTION=SYSTEM
-DKIM_API_MODEL_INSTALL_PREFIX=/home/niflheim/schiotz/easybuild/broadwell/software/OpenKIM-Models/20190221-intel-2018b/lib/kim-api-v2/models
-DKIM_API_MODEL_DRIVER_INSTALL_PREFIX=/home/niflheim/schiotz/easybuild/broadwell/software/OpenKIM-Models/20190221-intel-2018b/lib/kim-api-v2/model-drivers
/home/niflheim/schiotz/easybuild/broadwell/build/OpenKIMModels/20190221/intel-2018b/OpenKIM-Models-v2-2019-02-21/
...
CMake Error at CMakeLists.txt:37 (project):
The CMAKE_CXX_COMPILER:
/home/niflheim/schiotz/easybuild/broadwell/build/OpenKIMModels/20190221/intel-2018b/easybuild_obj/icpc
is not a full path to an existing compiler tool.
Tell CMake where to find the compiler by setting either the environment
variable "CXX" or the CMake cache entry CMAKE_CXX_COMPILER to the full path
to the compiler, or to the compiler name if it is in the PATH.
and the same for the C and Fortran compilers.
--
Jakob Schiøtz, professor, Ph.D.
Department of Physics
Technical University of Denmark
DK-2800 Kongens Lyngby, Denmark
http://www.fysik.dtu.dk/~schiotz/
--
Jakob Schiøtz, professor, Ph.D.
Department of Physics
Technical University of Denmark
DK-2800 Kongens Lyngby, Denmark
http://www.fysik.dtu.dk/~schiotz/
--
Jakob Schiøtz, professor, Ph.D.
Department of Physics
Technical University of Denmark
DK-2800 Kongens Lyngby, Denmark
http://www.fysik.dtu.dk/~schiotz/
--
Jakob Schiøtz, professor, Ph.D.
Department of Physics
Technical University of Denmark
DK-2800 Kongens Lyngby, Denmark
http://www.fysik.dtu.dk/~schiotz/