ADIOS2
ADIOS2 copied to clipboard
Install/build issue: missing `libadios2.so` and `libadios2_sst.so`?
Hello,
Can you think of any reasons that would cause some ADIOS libraries, namely libadios2.so
and libadios2_sst.so
not to be installed?
Those libraries are then required by VisIt which fails to compile without them.
I am installing with Spack but I don't think the problem is related to Spack (at least I cannot see how).
Here is the build configuration from running CMake:
ADIOS2 build configuration:
ADIOS Version: 2.6.0
C++ Compiler : GNU 8.3.1
/.../spack/lib/spack/env/gcc/g++
Fortran Compiler : GNU 8.3.1
/.../spack/lib/spack/env/gcc/gfortran
Installation prefix: /.../spack_soft/adios2/2.6.0/gcc-8.3.1-zwvahyu277pmcg7it2dke47bixnq7hmz
bin: bin
lib: lib64
include: include
cmake: lib64/cmake/adios2
python: usr/lib64/python3.6/site-packages
Features:
Library Type: shared
Build Type: Release
Testing: OFF
Examples: OFF
Build Options:
Blosc : ON
BZip2 : ON
ZFP : ON
SZ : ON
MGARD : OFF
PNG : ON
MPI : ON
DataMan : ON
Table : ON
SSC : ON
SST : ON
DataSpaces: OFF
ZeroMQ : ON
HDF5 : ON
IME : OFF
Python : OFF
Fortran : ON
SysVShMem : ON
Profiling : ON
Endian_Reverse: OFF
RDMA Transport for Staging: Available
and the content of the /.../spack_soft/adios2/2.6.0/gcc-8.3.1-zwvahyu277pmcg7it2dke47bixnq7hmz/lib64/
:
drwxr-sr-x 3 user group 4096 Feb 23 17:01 cmake
lrwxrwxrwx 1 user group 18 Feb 23 17:01 libadios2_atl.so -> libadios2_atl.so.2
lrwxrwxrwx 1 user group 22 Feb 23 17:01 libadios2_atl.so.2 -> libadios2_atl.so.2.2.1
-rwxr-xr-x 1 user group 60120 Feb 23 16:59 libadios2_atl.so.2.2.1
lrwxrwxrwx 1 user group 16 Feb 23 17:01 libadios2_c.so -> libadios2_c.so.2
lrwxrwxrwx 1 user group 20 Feb 23 17:01 libadios2_c.so.2 -> libadios2_c.so.2.6.0
-rwxr-xr-x 1 user group 249344 Feb 23 17:00 libadios2_c.so.2.6.0
lrwxrwxrwx 1 user group 20 Feb 23 17:01 libadios2_c_mpi.so -> libadios2_c_mpi.so.2
lrwxrwxrwx 1 user group 24 Feb 23 17:01 libadios2_c_mpi.so.2 -> libadios2_c_mpi.so.2.6.0
-rwxr-xr-x 1 user group 23936 Feb 23 17:01 libadios2_c_mpi.so.2.6.0
-rwxr-xr-x 1 user group 42824 Feb 23 16:59 libadios2_cmenet.so
-rwxr-xr-x 1 user group 22624 Feb 23 16:59 libadios2_cmepoll.so
-rwxr-xr-x 1 user group 59456 Feb 23 16:59 libadios2_cmfabric.so
-rwxr-xr-x 1 user group 23376 Feb 23 16:59 libadios2_cmmulticast.so
-rwxr-xr-x 1 user group 22408 Feb 23 16:59 libadios2_cmselect.so
-rwxr-xr-x 1 user group 42616 Feb 23 16:59 libadios2_cmsockets.so
-rwxr-xr-x 1 user group 28120 Feb 23 16:59 libadios2_cmudp.so
-rwxr-xr-x 1 user group 68936 Feb 23 16:59 libadios2_cmzplenet.so
lrwxrwxrwx 1 user group 19 Feb 23 17:01 libadios2_core.so -> libadios2_core.so.2
lrwxrwxrwx 1 user group 23 Feb 23 17:01 libadios2_core.so.2 -> libadios2_core.so.2.6.0
-rwxr-xr-x 1 user group 9266864 Feb 23 17:00 libadios2_core.so.2.6.0
lrwxrwxrwx 1 user group 23 Feb 23 17:01 libadios2_core_mpi.so -> libadios2_core_mpi.so.2
lrwxrwxrwx 1 user group 27 Feb 23 17:01 libadios2_core_mpi.so.2 -> libadios2_core_mpi.so.2.6.0
-rwxr-xr-x 1 user group 1409608 Feb 23 17:01 libadios2_core_mpi.so.2.6.0
lrwxrwxrwx 1 user group 20 Feb 23 17:01 libadios2_cxx11.so -> libadios2_cxx11.so.2
lrwxrwxrwx 1 user group 24 Feb 23 17:01 libadios2_cxx11.so.2 -> libadios2_cxx11.so.2.6.0
-rwxr-xr-x 1 user group 1630216 Feb 23 17:00 libadios2_cxx11.so.2.6.0
lrwxrwxrwx 1 user group 24 Feb 23 17:01 libadios2_cxx11_mpi.so -> libadios2_cxx11_mpi.so.2
lrwxrwxrwx 1 user group 28 Feb 23 17:01 libadios2_cxx11_mpi.so.2 -> libadios2_cxx11_mpi.so.2.6.0
-rwxr-xr-x 1 user group 37224 Feb 23 17:01 libadios2_cxx11_mpi.so.2.6.0
lrwxrwxrwx 1 user group 19 Feb 23 17:01 libadios2_dill.so -> libadios2_dill.so.2
lrwxrwxrwx 1 user group 23 Feb 23 17:01 libadios2_dill.so.2 -> libadios2_dill.so.2.4.1
-rwxr-xr-x 1 user group 205056 Feb 23 16:59 libadios2_dill.so.2.4.1
lrwxrwxrwx 1 user group 19 Feb 23 17:01 libadios2_enet.so -> libadios2_enet.so.1
lrwxrwxrwx 1 user group 24 Feb 23 17:01 libadios2_enet.so.1 -> libadios2_enet.so.1.3.14
-rwxr-xr-x 1 user group 59248 Feb 23 16:59 libadios2_enet.so.1.3.14
-rwxr-xr-x 1 user group 528992 Feb 23 16:59 libadios2_evpath.so
lrwxrwxrwx 1 user group 18 Feb 23 17:01 libadios2_ffs.so -> libadios2_ffs.so.1
lrwxrwxrwx 1 user group 22 Feb 23 17:01 libadios2_ffs.so.1 -> libadios2_ffs.so.1.6.0
-rwxr-xr-x 1 user group 427184 Feb 23 16:59 libadios2_ffs.so.1.6.0
lrwxrwxrwx 1 user group 22 Feb 23 17:01 libadios2_fortran.so -> libadios2_fortran.so.2
lrwxrwxrwx 1 user group 26 Feb 23 17:01 libadios2_fortran.so.2 -> libadios2_fortran.so.2.6.0
-rwxr-xr-x 1 user group 612360 Feb 23 17:00 libadios2_fortran.so.2.6.0
lrwxrwxrwx 1 user group 26 Feb 23 17:01 libadios2_fortran_mpi.so -> libadios2_fortran_mpi.so.2
lrwxrwxrwx 1 user group 30 Feb 23 17:01 libadios2_fortran_mpi.so.2 -> libadios2_fortran_mpi.so.2.6.0
-rwxr-xr-x 1 user group 18472 Feb 23 17:01 libadios2_fortran_mpi.so.2.6.0
-rwxr-xr-x 1 user group 24792 Feb 23 16:59 libadios2_taustubs.so
As you can see, libadios2.so
and libadios2_sst.so
are nowhere to be found.
Looking at Adios source code, relevant parts seem to be:
https://github.com/ornladios/ADIOS2/blob/2a61c0ea3ca01153bf905b5752f62c1950116a6a/source/adios2/CMakeLists.txt#L336-L341
together with the commit log from 97f421208bded0755bf22744c8809e8f8738974c:
Preserve the original public-facing
adios2
target name as an interface library that links bothadios2_core
andadios2_core_mpi
so that clients using that name still get both.
and
https://github.com/ornladios/ADIOS2/blob/24efd7f41c449c62ec8d03c9c13e4f5b2a3313e4/source/adios2/toolkit/sst/CMakeLists.txt#L41-L46
Am I misunderstanding those (i.e. the library names did change and VisIt has to update) or is something indeed wrong with what I get in the install dir?
Best regards, Rémi
@RemiLacroix-IDRIS I can see that this is intended, at list for libadios2.
In CMAKE, an INTERFACE library is a sort of a way to to group together libraries within CMake. These group of libraries does not generate physically any library, this is we do not link those libraries together.
The reason why we need INTERFACE libraries is that when we have multiple libraries but for the sake of simplicity and ease to use we just want want to export it as a single library.
I am not sure if this was a good explanation, ping me if you need more info.
As for breaking compatibility, yeah, if you depended on those specific libraries, that commit will break it. However, if your project is a CMake project this can be easily resolved as we export those interface libraries targets.
@RemiLacroix-IDRIS if this resolves this please close this issue.