odb-api includes mpi-default-dev, which defaults to libopenmpi-dev.

This may be failing if another mpi (mpich-dev) is installed instead. I agree hard-coding including libopenmpi-dev is needed for the moment.

The CMake code in the ECMWF stack (eccodes, magics++, metview, ...) is brittle, and leaks dependencies. Adding a dependency lower down the chain (eg odb-api)  breaks packages up the chain (metview) unless they include all dev libraries, etc. which in turn is bad for transitions.

I've recently packaged the underlying build cmake code (ecbuild, currently bundled into the ECMWF tarballs), and will start patching it to fix this brittleness; if eg libodb-api.so is built with libssl.so, libssl-dev should not be needed for metview to build.

Secondly, i'm refactoring some of the components. eckit, fckit, atlas are available independently at github so I'm packaging them separately from odb-api.

regards

Alastair


On 29/08/2019 13:35, Gianfranco Costamagna wrote:
Source: odb-api
Version: 0.18.1-6
Severity: serious
tags: patch

Hello, looks like for some reasons eckit in Ubuntu fails to see the include 
directory for openmpi, because it simply doesn't exist

adding libopenmpi-dev dependency to odb-api should fix the issue, bringing the 
directory back when cmake tries to find header files
/usr/lib/x86_64-linux-gnu/pkgconfig/odb.pc:ODB_CC=/usr/bin/cc -pthread 
-I/usr/lib/x86_64-linux-gnu/openmpi/include 
-I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -Wdate-time 
-D_FORTIFY_SOURCE=2 -pipe -fopenmp -fPIC -I${prefix}/include
/usr/lib/x86_64-linux-gnu/cmake/odb/odb-import.cmake:set(ODB_ENVIRONMENT 
"ODB_ROOT=/usr;ODB_SYSPATH=/usr/include;ODB_BINPATH=/usr/bin;ODB_BEBINPATH=/usr/bin;ODB_FEBINPATH=/usr/bin;ODB_LIBPATH=/usr/lib;ODB_RTABLE_PATH=/usr/share/odb;ODB_SYSDBPATH=/usr/share/odb;ODB_CC=/usr/bin/cc
 -pthread -I/usr/lib/x86_64-linux-gnu/openmpi/include 
-I/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -Wdate-time -D_FORTIFY_SOURCE=2 -pipe 
-fopenmp -fPIC -I/usr/include;ODB_F90=/usr/bin/gfortran -g -O2 
-fdebug-prefix-map=/build/odb-api=. -fstack-protector-strong -fopenmp -fPIC 
-ffree-line-length-none -I/usr/include -I/usr/module 
-I/usr/odb/module;ODB_COMPILER=/usr/bin/odb98.x -V 
-O3;ODB_COMPILER_FLAGS=/usr/share/odb/odb98.flags;ODB_STATIC_LINKING=1;ODB_LD_SHARED=none;ODB_LD_SHARED_SFX=.so;ODB_IOASSIGN_MAXPROC=32;ODB_IOASSIGN_PARAMS=-r
 1m -w 
1m;ODB_AR=/usr/bin/ar;ODB_GZIP=/bin/gzip;ODB_GUNZIP=/bin/gunzip;ODB_SETUP_SHELL=/bin/sh")

it looks like used and needed


snip of the failing log:

-- The following OPTIONAL packages have not been found:

  * Git
  * fckit (required version >= 0.6.2)
  * transi (required version >= 0.4.4)
  * CGAL
  * gridtools_storage

-- ENABLE_EXPOSE_SUBPACKAGES is On:
-- All packages in the bundle will be installed at the same level into:
--   /usr
-- Configuring done
CMake Error in atlas/src/atlas/CMakeLists.txt:
   Imported target "eckit_mpi" includes non-existent path

     "/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi"

   in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

   * The path was deleted, renamed, or moved to another location.

   * An install or uninstall procedure did not complete successfully.

   * The installation package was faulty and references files it does not
   provide.



CMake Error in atlas/src/atlas/CMakeLists.txt:
   Imported target "eckit_mpi" includes non-existent path

     "/usr/lib/x86_64-linux-gnu/openmpi/include/openmpi"

   in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

   * The path was deleted, renamed, or moved to another location.

   * An install or uninstall procedure did not complete successfully.

   * The installation package was faulty and references files it does not
   provide.


trivial patch here:
https://launchpad.net/ubuntu/+source/odb-api/0.18.1-6ubuntu1

Gianfranco

--
Alastair McKinstry, email: alast...@sceal.ie, matrix: @alastair:sceal.ie, 
phone: 087-6847928
Green Party Councillor, Galway County Council

Reply via email to