From 143bc1e3c1e37b252478ae4f8d8794c04e47fd5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timo=20R=C3=B6hling?= Date: Wed, 21 Feb 2024 21:01:24 +0100 Subject: [PATCH] Improve Python install path detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit [ This is the companion PR to https://github.com/colcon/colcon-core/pull/601 ] This PR makes the customized Python path scheme logic in ament_cmake_python contingent on an install prefix other than `/usr`. This makes ament more distribution-friendly and prevents the accidental overwriting of system packages in case someone decides to install their Python packages to /usr. There is no other change in behavior. Signed-off-by: Timo Röhling --- ament_cmake_python/ament_cmake_python-extras.cmake | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/ament_cmake_python/ament_cmake_python-extras.cmake b/ament_cmake_python/ament_cmake_python-extras.cmake index d8825818..14bb2530 100644 --- a/ament_cmake_python/ament_cmake_python-extras.cmake +++ b/ament_cmake_python/ament_cmake_python-extras.cmake @@ -48,12 +48,13 @@ macro(_ament_cmake_python_get_python_install_dir) "\ import os import sysconfig -schemes = sysconfig.get_scheme_names() kwargs = {'vars': {'base': '${CMAKE_INSTALL_PREFIX}'}} -if 'deb_system' in schemes or 'osx_framework_library' in schemes: - kwargs['scheme'] = 'posix_prefix' -elif 'rpm_prefix' in schemes: - kwargs['scheme'] = 'rpm_prefix' +if sysconfig.get_config_var('base') != os.path.normpath('${CMAKE_INSTALL_PREFIX}'): + schemes = sysconfig.get_scheme_names() + if 'deb_system' in schemes or 'osx_framework_library' in schemes: + kwargs['scheme'] = 'posix_prefix' + elif 'rpm_prefix' in schemes: + kwargs['scheme'] = 'rpm_prefix' print(os.path.relpath(sysconfig.get_path('purelib', **kwargs), start='${CMAKE_INSTALL_PREFIX}').replace(os.sep, '/'))" ) get_executable_path(_python_interpreter Python3::Interpreter CONFIGURE)