Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:alveus:main
nest
0001-Use-correct-relative-paths-for-RUNPATH.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Use-correct-relative-paths-for-RUNPATH.patch of Package nest
From 74922ef892d6e95848c1a46bb6962ac041eb064d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de> Date: Wed, 27 Jul 2022 15:39:23 +0200 Subject: [PATCH 1/2] Use correct relative paths for RUNPATH CMAKE_INSTALL_LIBDIR may be a path relative to CMAKE_INSTALL_PREFIX or absolute. Make sure used paths are absolute, and then calculate the relative paths between. For libraries, the relative path is trivially just "./" (all libraries are in the same directory). Partial fix for #2438. --- cmake/ProcessOptions.cmake | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/cmake/ProcessOptions.cmake b/cmake/ProcessOptions.cmake index fc4bd44..f789ecb 100644 --- a/cmake/ProcessOptions.cmake +++ b/cmake/ProcessOptions.cmake @@ -191,29 +191,40 @@ function( NEST_PROCESS_STATIC_LIBRARIES ) # ``${CMAKE_INSTALL_PREFIX}/bin`` for the nest and sli executables, ``${CMAKE_INSTALL_PREFIX}/lib/nest`` for all # dynamic libraries except PyNEST (libnestkernel.so, etc.), and something like # ``${CMAKE_INSTALL_PREFIX}/lib/python3.x/site-packages/nest`` for ``pynestkernel.so``. The RPATH is relative to - # this origin, so the binary ``bin/nest`` can find the files in the relative location ``../lib/nest``, and - # similarly for PyNEST and the other libraries. For simplicity, we set all the possibilities on all generated - # objects. + # this origin. For the libraries, the relative path is the same dir ("./"), for the exucutables and python + # module the relative path is calculated below. + # For simplicity, we set all the possibilities on all generated objects. # PyNEST can only act as an entry point; it does not need to be included in the other objects' RPATH itself. + cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_LIBDIR + BASE_DIRECTORY ${CMAKE_INSTALL_FULL_BINDIR} + OUTPUT_VARIABLE executable_libdir_relative_path) + + cmake_path(ABSOLUTE_PATH PYEXECDIR + BASE_DIRECTORY ${CMAKE_INSTALL_PREFIX} + OUTPUT_VARIABLE pyexecdir_full) + cmake_path(RELATIVE_PATH CMAKE_INSTALL_FULL_LIBDIR + BASE_DIRECTORY "${pyexecdir_full}/nest" + OUTPUT_VARIABLE python_libdir_relative_path) + if ( APPLE ) set( CMAKE_INSTALL_RPATH # for binaries - "@loader_path/../${CMAKE_INSTALL_LIBDIR}/nest" + "@executable_path/${executable_libdir_relative_path}/nest" # for libraries (except pynestkernel) - "@loader_path/../../${CMAKE_INSTALL_LIBDIR}/nest" + "@loader_path" # for pynestkernel: origin at <prefix>/lib/python3.x/site-packages/nest - "@loader_path/../../../nest" + "@loader_path/${python_libdir_relative_path}/nest" PARENT_SCOPE ) else () set( CMAKE_INSTALL_RPATH # for binaries - "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}/nest" + "\$ORIGIN/${executable_libdir_relative_path}/nest" # for libraries (except pynestkernel) - "\$ORIGIN/../../${CMAKE_INSTALL_LIBDIR}/nest" + "\$ORIGIN" # for pynestkernel: origin at <prefix>/lib/python3.x/site-packages/nest - "\$ORIGIN/../../../nest" + "\$ORIGIN/${python_libdir_relative_path}/nest" PARENT_SCOPE ) endif () -- 2.37.1
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor