NCAR / ParallelIO

A high-level Parallel I/O Library for structured grid applications
Apache License 2.0
134 stars 52 forks source link

Shared parallelio library is missing path information #1960

Closed climbfuji closed 9 months ago

climbfuji commented 1 year ago

Please describe the problem. This is a parallelio build system problem, I think, but I'll see it in our spack installations so it's possible that it's a problem there. I checked 2.5.7 and 2.5.9 installed in spack-stack-1.1.0, 1.2.0, and 1.3.0:

> otool -L /Users/heinzell/prod/spack-stack-v1/envs/skylab-2.0.0/install/apple-clang/13.1.6/parallelio-2.5.7-j7hsgc6/lib/libpioc.dylib
/Users/heinzell/prod/spack-stack-v1/envs/skylab-2.0.0/install/apple-clang/13.1.6/parallelio-2.5.7-j7hsgc6/lib/libpioc.dylib:
    libpioc.dylib (compatibility version 0.0.0, current version 0.0.0)
    /Users/heinzell/prod/spack-stack-v1/envs/skylab-2.0.0/install/apple-clang/13.1.6/netcdf-c-4.8.1-vzayhsp/lib/libnetcdf.19.dylib (compatibility version 20.0.0, current version 20.1.0)
    /Users/heinzell/prod/spack-stack-v1/envs/skylab-2.0.0/install/apple-clang/13.1.6/parallel-netcdf-1.12.2-e5p4ijk/lib/libpnetcdf.4.dylib (compatibility version 5.0.0, current version 5.2.0)
    /Users/heinzell/prod/spack-stack-v1/envs/skylab-2.0.0/install/apple-clang/13.1.6/openmpi-4.1.4-hys7din/lib/libmpi.40.dylib (compatibility version 71.0.0, current version 71.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

The library doesn't identify its own path correctly. For comparison, hdf5 uses rpath:

> otool -L /Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/hdf5-1.12.2-h75jr26/lib/libhdf5_hl.dylib
/Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/hdf5-1.12.2-h75jr26/lib/libhdf5_hl.dylib:
    @rpath/libhdf5_hl.200.dylib (compatibility version 200.0.0, current version 200.1.0)
    @rpath/libhdf5.200.dylib (compatibility version 200.0.0, current version 200.2.0)
    /Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/openmpi-4.1.4-2w5uhmt/lib/libmpi.40.dylib (compatibility version 71.0.0, current version 71.4.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.100.3)

and netcdf-c uses an absolute path:

> otool -L /Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/netcdf-c-4.9.2-dj7rkty/lib/libnetcdf.dylib
/Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/netcdf-c-4.9.2-dj7rkty/lib/libnetcdf.dylib:
    /Users/heinzell/work/spack-stack/spack-stack-1.3.1/envs/unified-env/install/apple-clang/13.1.6/netcdf-c-4.9.2-dj7rkty/lib/libnetcdf.19.dylib (compatibility version 22.0.0, current version 22.2.0)
    @rpath/libhdf5_hl.200.dylib (compatibility version 200.0.0, current version 200.1.0)
    @rpath/libhdf5.200.dylib (compatibility version 200.0.0, current version 200.2.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1311.0.0)
    @rpath/libz.1.dylib (compatibility version 1.0.0, current version 1.2.13)
    @rpath/libsz.2.dylib (compatibility version 2.0.0, current version 2.0.1)
    /usr/lib/libbz2.1.0.dylib (compatibility version 1.0.0, current version 1.0.8)
    @rpath/libzstd.1.dylib (compatibility version 1.0.0, current version 1.5.2)
    @rpath/libxml2.2.dylib (compatibility version 13.0.0, current version 13.3.0)
    /usr/local/opt/curl/lib/libcurl.4.dylib (compatibility version 13.0.0, current version 13.0.0)
    @rpath/libmpi.40.dylib (compatibility version 71.0.0, current version 71.4.0)

Additional context This is a problem only when using the shared library, but it needs to be fixed. We could work around it in spack, but I think the proper fix needs to be in the parallelio build system.

I also created an issue in spack-stack for this: https://github.com/NOAA-EMC/spack-stack/issues/551

climbfuji commented 1 year ago

@jedwards4b @edhartnett Did you see this bug report?

jedwards4b commented 1 year ago

@climbfuji - just back from vacation, will look into this soon.

climbfuji commented 9 months ago

Thanks @jedwards4b !