From 0dd683d24e2ad8cb63eefe30d50303f5375a54db Mon Sep 17 00:00:00 2001 From: Ken Conley Date: Fri, 13 Jan 2012 16:09:07 -0800 Subject: [PATCH] #50 first pass at fixing python install layout for non deb layout systems --- bin/em/rules.python_distutils.em | 2 +- cmake/em/rules.python_distutils.em | 2 +- cmake/python.cmake | 12 +++++++++++- cmake/templates/python_distutils_install.sh.in | 4 ++-- cmake/templates/setup.sh.installable.in | 4 ++-- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/bin/em/rules.python_distutils.em b/bin/em/rules.python_distutils.em index ea087831f..b4a7c260e 100755 --- a/bin/em/rules.python_distutils.em +++ b/bin/em/rules.python_distutils.em @@ -10,7 +10,7 @@ pyversion="%u.%u" % (v[0], v[1]) export DH_VERBOSE=1 export DH_OPTIONS=-v # this is the --install-layout=deb variety -export PYTHONPATH=@(INSTALL_PREFIX)/lib/python@(pyversion)/dist-packages +export PYTHONPATH=@(INSTALL_PREFIX)/lib/python@(pyversion)/@(PYTHON_PACKAGES_DIR) %: dh $@@ diff --git a/cmake/em/rules.python_distutils.em b/cmake/em/rules.python_distutils.em index 725a54020..16495d517 100755 --- a/cmake/em/rules.python_distutils.em +++ b/cmake/em/rules.python_distutils.em @@ -9,7 +9,7 @@ pyversion="%u.%u" % (v.major, v.minor) export DH_VERBOSE=1 export DH_OPTIONS=-v # this is the --install-layout=deb variety -export PYTHONPATH=@(CMAKE_INSTALL_PREFIX)/lib/python@(pyversion)/dist-packages +export PYTHONPATH=@(CMAKE_INSTALL_PREFIX)/lib/python@(pyversion)/@(PYTHON_PACKAGES_DIR) %: dh $@@ diff --git a/cmake/python.cmake b/cmake/python.cmake index 55f4fa9c1..913553778 100644 --- a/cmake/python.cmake +++ b/cmake/python.cmake @@ -4,7 +4,17 @@ execute_process(COMMAND ${PYTHON_EXECUTABLE} ${catkin_EXTRAS_DIR}/python_version OUTPUT_STRIP_TRAILING_WHITESPACE) set(PYTHON_VERSION_XDOTY ${PYTHON_VERSION_XDOTY} CACHE STRING "python version") -set(INSTALLED_PYTHONPATH ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_XDOTY}/dist-packages + +# this should actually be for anything non-dist-packages +if(APPLE) + set(PYTHON_PACKAGES_DIR site-packages CACHE STRING "dist-packages or site-packages") + set(SETUPTOOLS_ARG_EXTRA "" CACHE STRING "extra arguments to setuptools") +else() + set(PYTHON_PACKAGES_DIR dist-packages CACHE STRING "dist-packages or site-packages") + set(SETUPTOOLS_ARG_EXTRA "--install-layout=deb" CACHE STRING "extra arguments to setuptools") +endif() + +set(INSTALLED_PYTHONPATH ${CMAKE_INSTALL_PREFIX}/lib/python${PYTHON_VERSION_XDOTY}/site-packages CACHE INTERNAL "This needs to be in pythonpath when setup.py install is called. And it needs to match. But setuptools won't tell us where it will install things.") diff --git a/cmake/templates/python_distutils_install.sh.in b/cmake/templates/python_distutils_install.sh.in index eee833e4a..352bc3aa9 100755 --- a/cmake/templates/python_distutils_install.sh.in +++ b/cmake/templates/python_distutils_install.sh.in @@ -14,11 +14,11 @@ fi cd @INSTALL_CMD_WORKING_DIRECTORY@ +# todo --install-layout=deb per platform /usr/bin/env \ PYTHONPATH=@PACKAGE_PYTHONPATH@:@INSTALLED_PYTHONPATH@:@CMAKE_BINARY_DIR@/gen/py @PYTHON_EXECUTABLE@ \ @CMAKE_CURRENT_SOURCE_DIR@/setup.py \ install \ $DESTDIR_ARG \ - --install-layout=deb \ - --prefix=@CMAKE_INSTALL_PREFIX@ + @SETUPTOOLS_ARG_EXTRA@ --prefix=@CMAKE_INSTALL_PREFIX@ diff --git a/cmake/templates/setup.sh.installable.in b/cmake/templates/setup.sh.installable.in index 9e6ad2014..60908fe4d 100644 --- a/cmake/templates/setup.sh.installable.in +++ b/cmake/templates/setup.sh.installable.in @@ -1,9 +1,9 @@ # -# path segment PREFIX/lib/pythonX.Y/dist-packages in PYTHONPATH is calculated +# path segment PREFIX/lib/pythonX.Y/[dist|site]-packages in PYTHONPATH is calculated # by us... this appears to be what setuptools does under --install-layout=deb # -PYTHONPATH=@CMAKE_INSTALL_PREFIX@/lib/python@PYTHON_VERSION_XDOTY@/dist-packages:$PYTHONPATH +PYTHONPATH=@CMAKE_INSTALL_PREFIX@/lib/python@PYTHON_VERSION_XDOTY@/@PYTHON_PACKAGES_DIR@:$PYTHONPATH export PYTHONPATH PATH=@CMAKE_INSTALL_PREFIX@/bin:$PATH