Building outside of containers

Hi all!

I’m attempting to build the MPAS-JEDI bundle outside of a container because of some requirements and I’m encountering errors while doing so.

When the make process gets to OOPS (~58% completion), it terminated with several similar errors:
CMakeFiles/test_assimilation_solvematrixequation.dir/test/assimilation/ In function `eckit::AssertionFailed::~AssertionFailed()’:

/home/user/jedi/mpas-bundle/eckit/src/eckit/exception/Exceptions.h:46: undefined reference to `operator delete(void*, unsigned long)’

Since this operator was introduced with C++14, I have been looking at the C++ versioning angle:

I’m using the Release build option, and I have -DBUNDLE_SKIP_* turned off, i.e. not skipping eckit etc and compiling them with this process. CXX_STANDARD is set to 14, and I can confirm --c++14 flags are used at least when oops is being compiled. I’m using MPI-wrapped pgcc/pgc++ 19.7

Couple of routes I have attempted to resolve the error:

  • eckit is compiled with C++11, but attempts to compile eckit with 14 have been unsuccessful.
  • Later versions of eckit also only compiles with C++11 (while also seem to be causing other issues with the bundle)
  • Downgrading everything to 11 by setting CMAKE_CXX_STANDARD=11 is also unsuccessful

Any suggestions on what else to try?



Problem resolved.

Looks like this is due to the GCC backing the PGI compiler on our system is too old and C++14 is not fully supported as a result.

There could be an issue with OOPS compiling against Eigen 3.4.0. Downgrading back to 3.3.7 resolved the issue.