lbl-srg / docker-ubuntu-jmodelica

Dockerfile that is used for the JModelica regression testing of the Buildings library and of BuildingsPy
Other
16 stars 18 forks source link

Hiccup in running python script in container based on ubuntu-1804_jmodelica #10

Closed amyeallen1 closed 4 years ago

amyeallen1 commented 4 years ago

I'm trying to use the Docker image (ubuntu-1804_jmodelica_trunk) to build and run a container in Singularity (for use on an HPC system where Docker itself isn't available). In the container, I'm also trying to run a python script that calls "compile_fmu" from pymodelica. (I'm trying this approach instead of the "jm_ipython.sh" script, to try to avoid having to adapt that for Singularity.)

When I try to run the container to compile a sample model, I get the following error. This FMU does compile in a JModelica Docker container (with a slightly different underlying Docker image), using the same Python script.

" File "compile_fmu.py", line 25, in fmupath = compile_fmu(modelpath,[mopath], jvm_args='-Xmx1g') File "/usr/local/JModelica/Python/pymodelica/compiler.py", line 148, in compile_fmu separate_process, jvm_args) File "/usr/local/JModelica/Python/pymodelica/compiler.py", line 257, in _compile_unit compiler_options, compile_to, compiler_log_level, jvm_args) File "/usr/local/JModelica/Python/pymodelica/compiler.py", line 378, in compile_separate_process return log.end(); File "/usr/local/JModelica/Python/pymodelica/compiler_logging.py", line 332, in end raise CcodeCompilationError(exception.message) pymodelica.compiler_exceptions.CcodeCompilationError: Compilation of generated C code failed."

I also get this output: "/usr/bin/ld: cannot find -l:libsundials_kinsol.a /usr/bin/ld: cannot find -l:libsundials_nvecserial.a /usr/bin/ld: cannot find -l:libsundials_cvode.a" Do I need to separately install sundials in the container?

I would appreciate any advice on troubleshooting this error message. Thanks very much!

mwetter commented 4 years ago

The message

/usr/bin/ld: cannot find -l:libsundials_nvecserial.a
/usr/bin/ld: cannot find -l:libsundials_cvode.a"

shows that sundials cannot be found. Your manual installation does not seem to provide this. The docker image installs this library, so something must have gone wrong when you edited it.