Skip to content

Incorrect CMAKE_INSTALL_RPATH on Rocky Linux 9 #1563

Description

@bas-jpro

When building MBSystem 5.8.3beta12 on Rocky Linux 9 using cmake 3.26.5 the CMAKE_INSTALL_RPATH is being set incorrectly to ${CMAKE_INSTALL_PREFIX}/lib, but the libraries are installed in ${CMAKE_INSTALL_PREFIX}/lib64, so the binaries don't find the mb libraries at runtime.

I was unable to override this by adding -DCMAKE_INSTALL_RPATH to the cmake command line.

Instead I had to modify CMakeLists.txt line 94 and change it to

set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib64")

To Reproduce
Attempt to build MBsystem 5.8.3beta12 while setting the CMAKE_INSTALL_PREFIX

In the build directory

cmake .. -DCMAKE_INSTALL_PREFIX=/packages/mb/5.8.3beta12 -DotpsDir=/packages/mb/otps \
             -DCMAKE_INSTALL_RPATH=/packages/mb/5.8.3beta12/lib64

Output of the cmake command is

----------------------------------------------------------
CMAKE_SYSTEM_NAME: Linux
CMAKE_C_COMPILER_ID: GNU
CMAKE_SOURCE_DIR: /packages/mb/src/MB-System-5.8.3beta12
CMAKE_MODULE_PATH: /packages/mb/src/MB-System-5.8.3beta12/build-utils
CMAKE_INSTALL_PREFIX: /packages/mb/5.8.3beta12
CMAKE_INSTALL_FULL_LIBDIR: /packages/mb/5.8.3beta12/lib64
CMAKE_INSTALL_FULL_INCLUDEDIR: /packages/mb/5.8.3beta12/include
CMAKE_INSTALL_FULL_BINDIR: /packages/mb/5.8.3beta12/bin
CMAKE_INSTALL_FULL_DOCDIR: /packages/mb/5.8.3beta12/share/doc/MB-System
CMAKE_INSTALL_FULL_DATADIR: /packages/mb/5.8.3beta12/share
CMAKE_INSTALL_FULL_DATAROOTDIR: /packages/mb/5.8.3beta12/share
CMAKE_SYSTEM_PREFIX_PATH: /usr/local;/usr;/;/usr;/packages/mb/5.8.3beta12;/usr/X11R6;/usr/pkg;/opt
CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES: /usr/lib/gcc/x86_64-redhatlinux/11/include;/usr/local/include;/usr/include
CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES: /usr/include/c++/11;/usr/include/c++/11/x86_64-redhat-linux;/usr/include/c++/11/backward;/usr/lib/gcc/x86_64-redhat-linux/11/include;/usr/local/include;/usr/include
BYTESWAPPED: 
CMAKE_C_FLAGS:  -DBYTESWAPPED -DENABLE_GSF -DTRN_USE_PROJ
CMAKE_CXX_FLAGS:  -DBYTESWAPPED -DENABLE_GSF -DTRN_USE_PROJ
CMAKE_INSTALL_RPATH: /packages/mb/5.8.3beta12/lib
OTPSdirectory:/packages/mb/otps
----------------------------------------------------------
-- Configuring done (1.7s)
-- Generating done (2.8s)
-- Build files have been written to: /packages/mb/src/MB-System-5.8.3beta12/build

Expected behavior
I expected CMAKE_INSTALL_RPATH to be set to lib64 instead of lib, or failing that to allow me to override with the -DCMAKE_INSTALL_RPATH=/packages/mb/5.8.3beta12/lib64 cmake parameter.

Additional context
This can be fixed by allowing a command line override - e.g

if (NOT CMAKE_INSTALL_RPATH)
  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
endif()

or by using CMAKE_INSTALL_FULL_LIBDIR - though this has to be done later in the file as CMAKE_INSTALL_FULL_LIBDIR isn't defined until later

if (NOT CMAKE_INSTALL_RPATH)
  set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}")
endif()

Thanks

Jeremy

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions