I and others are trying to work with the FV3 JEDI interface and have attempted to use fv3-bundle on Hera, Hercules, and inside the published gnu-openmpi-dev
containers. However, on all the platforms we’ve tried, we’ve discovered that the develop
branch of https://github.com/JCSDA/fv3-bundle
appears to be broken in multiple ways. It will not complete the ecbuild
step successfully without multiple modifications to its CMakeLists.txt
file.
None of these problems exist in the jedi-bundle
. It is also very surprising to me that these significant issues exist on the develop
branch and it makes me think maybe fv3-bundle
isn’t really maintained anymore?
Can someone please confirm the status of fv3-bundle
development?
For your reference the following outlines at least three big problems we’ve found so far when trying to build on multiple platforms.
The first issue is a problem with jedi-cmake:
-- Adding bundle project crtm
-- Cloning crtm from https://github.com/jcsda/crtm.git into /home/nonroot/fv3-bundle/crtm...
-- /home/nonroot/fv3-bundle/crtm retrieved.
-- Updating crtm to TAG v2.3-jedi.0...
-- git fetch --all @ /home/nonroot/fv3-bundle/crtm
-- git fetch --all --tags @ /home/nonroot/fv3-bundle/crtm
-- git checkout v2.3-jedi.0 @ /home/nonroot/fv3-bundle/crtm
-- ---------------------------------------------------------
-- [crtm] (2.3.0) [46e3292]
-- Feature TESTS enabled
CMake Error at build/jedicmake/jedicmake-config.cmake:19 (message):
File or directory /home/nonroot/fv3-bundle/jedicmake/cmake/Functions
referenced by variable jedicmake_FUNCTIONS does not exist !
Call Stack (most recent call first):
build/jedicmake/jedicmake-config.cmake:35 (set_and_check)
crtm/CMakeLists.txt:20 (find_package)
-- Configuring incomplete, errors occurred!
See also "/home/nonroot/fv3-bundle/build/CMakeFiles/CMakeOutput.log".
The above can be fixed by replacing that part of the bundle with the corresponding piece from jedi-bundle
as follows:
# Use external jedi-cmake or build in bundle
if(DEFINED ENV{jedi_cmake_ROOT})
include( $ENV{jedi_cmake_ROOT}/share/jedicmake/Functions/git_functions.cmake )
else()
ecbuild_bundle( PROJECT jedicmake GIT "https://github.com/jcsda/jedi-cmake.git" BRANCH develop UPDATE RECURSIVE )
include( jedicmake/cmake/Functions/git_functions.cmake )
endif()
The next problem is that it can’t find vader because it’s not in the bundle!
CMake Error at fv3-jedi/CMakeLists.txt:109 (find_package):
By not providing "Findvader.cmake" in CMAKE_MODULE_PATH this project has
asked CMake to find a package configuration file provided by "vader", but
CMake did not find one.
Could not find a package configuration file provided by "vader" (requested
version 1.4.0) with any of the following names:
vaderConfig.cmake
vader-config.cmake
Add the installation prefix of "vader" to CMAKE_PREFIX_PATH or set
"vader_DIR" to a directory containing one of the above files. If "vader"
provides a separate development package or SDK, be sure it has been
installed.
The above is easily fixed by adding vader to the fv3-bundle
:
ecbuild_bundle( PROJECT vader GIT "https://github.com/jcsda/vader.git" BRANCH develop UPDATE )
And, finally, after fixing those two problems, there is still a third problem to fix:
-- [fv3jedi] (1.7.0) [07e3621]
-- Feature TESTS enabled
-- Found NetCDF: /opt/view/include (found version "4.9.2") found components: Fortran
-- FindNetCDF defines targets:
-- - NetCDF_VERSION [4.9.2]
-- - NetCDF_PARALLEL [TRUE]
-- - NetCDF_C_CONFIG_EXECUTABLE [/opt/view/bin/nc-config]
-- - NetCDF::NetCDF_C [SHARED] [Root: /opt/view] Lib: /opt/view/lib/libnetcdf.so
-- - NetCDF_Fortran_CONFIG_EXECUTABLE [/opt/view/bin/nf-config]
-- - NetCDF::NetCDF_Fortran [SHARED] [Root: /opt/view] Lib: /opt/view/lib/libnetcdff.so
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: CXX
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: CXX Fortran
-- Found OpenMP_Fortran: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: Fortran
-- Found OpenMP_Fortran: -fopenmp (found version "4.5")
-- Found sp: /opt/view/lib/libsp_4.a (found version "2.3.3")
-- Found OpenMP_Fortran: -fopenmp (found version "4.5")
-- FV3-SABER block GSI is enabled
-- Found sp: /opt/view/lib/libsp_4.a (found version "2.3.3")
-- Found OpenMP_CXX: -fopenmp (found version "4.5")
-- Found OpenMP_Fortran: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: C CXX Fortran
-- Found OpenMP_Fortran: -fopenmp (found version "4.5")
-- Found OpenMP: TRUE (found version "4.5") found components: Fortran
-- Found MPI: TRUE (found version "3.1") found components: CXX Fortran
CMake Error at fv3-jedi/test/CMakeLists.txt:11 (message):
Found crtm but UFO_CRTM_TESTFILES_PATH was not set by ufo
-- Configuring incomplete, errors occurred!
It is unclear what the correct solution to the above is, but replacing the version of CRTM used in the bundle with the one used in jedi-bundle
allows ecbuild
to complete without errors.