[sword-devel] cmake python
Ben
cricketc at gmail.com
Sat Dec 1 20:44:08 MST 2012
On 11/21/2012 10:27 PM, Ben wrote:
> Hello,
>
> A couple thoughts related to building python bindings with cmake:
>
> 1. <build dir>/bindings/swig/python/setup.py has the following line:
> #!/usr/bin/python python
> Looks like that should just be /usr/bin/python, or /usr/bin/env python?
>
> 2. It'd be nice to be able to install the python module to some
> non-standard location, so as to not require root access or conflict with
> system packages.
> <source dir>/bindings/swig/python/install.cmake - I added --user to the
> python setup.py install command, and that installed it just to my user
> directory. That doesn't require root access, although it still might
> conflict some with a system package. Another option might be to just
> install the python bindings to the same custom prefix as the sword
> library? Not sure what the best way is to implement this option.
I'm attaching a patch that corrects number 1. For number 2, I set it up
to allow installing the python Sword module to the user's directory, if
-DPYTHON_USER_INSTALL=Yes is passed to the cmake command. If the
option's not there, it just operates as normal.
I tried to set it up with running "python setup.py install
--home=<dir>", but I didn't get it working with directories with spaces
in the path.
Feedback and suggestions are welcome.
Thanks,
-Ben
-------------- next part --------------
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt (revision 2746)
+++ CMakeLists.txt (working copy)
@@ -13,7 +13,7 @@
FIND_PACKAGE(PythonInterp REQUIRED)
-SET(PY_SCRIPT "#!${PYTHON_EXECUTABLE} python
+SET(PY_SCRIPT "#!${PYTHON_EXECUTABLE}
from distutils.core import setup, Extension
setup(name='sword',version='${SWORD_VERSION}',
@@ -38,6 +38,28 @@
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/Sword.cxx ${SWORD_LINK_NAME}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-INSTALL(SCRIPT install.cmake)
+#add error/output variables
+IF(PYTHON_USER_INSTALL STREQUAL "Yes")
+ SET(INSTALL_CODE
+ "
+ MESSAGE(\"Running python setup.py install to user directory...\")
+ EXECUTE_PROCESS(COMMAND python setup.py install --user
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ "
+ )
+ELSE()
+ SET(INSTALL_CODE
+ "
+ MESSAGE(\"Running python setup.py install to system directory...\")
+ EXECUTE_PROCESS(COMMAND python setup.py install
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ )
+ "
+ )
+ENDIF()
+FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/install_script.cmake "${INSTALL_CODE}")
+INSTALL(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/install_script.cmake)
+
MESSAGE(STATUS "Python: yes")
Index: install.cmake
===================================================================
--- install.cmake (revision 2746)
+++ install.cmake (working copy)
@@ -1,4 +0,0 @@
-EXECUTE_PROCESS(COMMAND
- python setup.py install
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/bindings/swig/python"
-)
More information about the sword-devel
mailing list