gnucash maint: Fix issues with loading and running init.py

Geert Janssens gjanssens at code.gnucash.org
Tue Sep 12 07:45:58 EDT 2017


Updated	 via  https://github.com/Gnucash/gnucash/commit/6ec9aa36 (commit)
	from  https://github.com/Gnucash/gnucash/commit/65f18589 (commit)



commit 6ec9aa362b647f6d24fd3836e3fee7117f6613e7
Author: Rob Gowin <robgowin at gmail.com>
Date:   Mon Sep 11 15:44:41 2017 -0500

    Fix issues with loading and running init.py

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 70d3380..94f74c1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -383,6 +383,20 @@ IF (WITH_PYTHON)
   IF (NOT PYTHONLIBS_FOUND)
     MESSAGE(SEND_ERROR "Python support enabled, but Python libraries not found.")
   ENDIF()
+
+  # Determine where to install the python libraries.
+  EXECUTE_PROCESS(
+    COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print sysconfig.get_path('platlib', vars = { 'platbase' : '${CMAKE_INSTALL_PREFIX}' }  )"
+    RESULT_VARIABLE PYTHON_SYSCONFIG_RESULT
+    OUTPUT_VARIABLE PYTHON_SYSCONFIG_OUTPUT
+    ERROR_VARIABLE PYTHON_SYSCONFIG_ERROR
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+    ERROR_STRIP_TRAILING_WHITESPACE
+  )
+  IF (PYTHON_SYSCONFIG_RESULT)
+    MESSAGE(SEND_ERROR "Could not determine Python site-package directory:\n${PYTHON_SYSCONFIG_ERROR}")
+  ENDIF()
+  STRING(REPLACE ${CMAKE_INSTALL_PREFIX} ${CMAKE_BINARY_DIR} PYTHON_SYSCONFIG_BUILD ${PYTHON_SYSCONFIG_OUTPUT})  
 ENDIF()
 
 
diff --git a/src/bin/CMakeLists.txt b/src/bin/CMakeLists.txt
index 9599994..c552e96 100644
--- a/src/bin/CMakeLists.txt
+++ b/src/bin/CMakeLists.txt
@@ -105,7 +105,7 @@ ENDIF()
 
 IF (NOT(${DATADIR} STREQUAL "/usr/share") AND NOT(${DATADIR} STREQUAL "/usr/local/share"))
   FILE(APPEND ${ENV_FILE_OUT} ${XDG_TEXT})
-  FILE(APPEND ${ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR};{XDG_DATA_DIRS}" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
+  FILE(APPEND ${ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR};{XDG_DATA_DIRS};" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
 ENDIF()
 
 FILE(APPEND ${BUILD_ENV_FILE_OUT} "GNC_DBD_DIR=${LIBDBI_DRIVERS_DIR}/dbd")
@@ -113,6 +113,19 @@ FILE(APPEND ${BUILD_ENV_FILE_OUT} "GNC_DBD_DIR=${LIBDBI_DRIVERS_DIR}/dbd")
 FILE(APPEND ${BUILD_ENV_FILE_OUT} ${XDG_TEXT})
 FILE(APPEND ${BUILD_ENV_FILE_OUT} "XDG_DATA_DIRS=${DATADIR_BUILD};{XDG_DATA_DIRS};" "${GNC_SYSTEM_XDG_DATA_DIRS}\n")
 
+SET(PYTHON_TEXT "
+# Define PYTHONPATH for non default installation path.\n"
+ )
+IF (NOT(${CMAKE_INSTALL_PREFIX} STREQUAL "/usr") AND NOT(${CMAKE_INSTALL_PREFIX} STREQUAL "/usr/local"))
+ 
+  FILE(APPEND ${ENV_FILE_OUT} ${PYTHON_TEXT})
+  FILE(APPEND ${ENV_FILE_OUT} "PYTHONPATH=${PYTHON_SYSCONFIG_OUTPUT};{PYTHONPATH}")
+ENDIF()
+
+FILE(APPEND ${BUILD_ENV_FILE_OUT} ${PYTHON_TEXT})
+FILE(APPEND ${BUILD_ENV_FILE_OUT} "PYTHONPATH=${PYTHON_SYSCONFIG_BUILD};{PYTHONPATH}")
+
+
 FILE(COPY ${BUILD_ENV_FILE_OUT}
   DESTINATION ${SYSCONFDIR_BUILD}/gnucash
   FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
diff --git a/src/optional/python-bindings/CMakeLists.txt b/src/optional/python-bindings/CMakeLists.txt
index eb1e6e9..92ea1d8 100644
--- a/src/optional/python-bindings/CMakeLists.txt
+++ b/src/optional/python-bindings/CMakeLists.txt
@@ -80,35 +80,24 @@ IF(WITH_PYTHON)
   ADD_TEST(NAME sqlite3test COMMAND sqlite3test)
   ADD_DEPENDENCIES(check sqlite3test)
 
-
-  # Determine where to install the python libraries.
-  EXECUTE_PROCESS(
-    COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print sysconfig.get_path('platlib', vars = { 'platbase' : '${CMAKE_INSTALL_PREFIX}' }  )"
-    RESULT_VARIABLE PYTHON_SYSCONFIG_RESULT
-    OUTPUT_VARIABLE PYTHON_SYSCONFIG_OUTPUT
-    ERROR_VARIABLE PYTHON_SYSCONFIG_ERROR
-    OUTPUT_STRIP_TRAILING_WHITESPACE
-    ERROR_STRIP_TRAILING_WHITESPACE
-  )
-  IF (PYTHON_SYSCONFIG_RESULT)
-    MESSAGE(SEND_ERROR "Could not determine Python site-package directory:\n${PYTHON_SYSCONFIG_ERROR}")
-  ENDIF()
-
   INSTALL(TARGETS gnucash_core_c
     LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
     ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
   )
-  INSTALL(FILES __init__.py function_class.py gnucash_business.py gnucash_core.py
-    ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py
+  INSTALL(FILES ${PYEXEC_FILES} ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py
     DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
   )
 
-  FILE(COPY ${PYEXEC_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/gnucash)
+  FILE(COPY ${PYEXEC_FILES} DESTINATION ${PYTHON_SYSCONFIG_BUILD}/gnucash)
 
   ADD_CUSTOM_TARGET(gnucash-core-c-py ALL
-    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py ${CMAKE_CURRENT_BINARY_DIR}/gnucash
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/gnucash_core_c.py ${PYTHON_SYSCONFIG_BUILD}/gnucash
     DEPENDS ${SWIG_GNUCASH_CORE_C})
 
+  ADD_CUSTOM_TARGET(gnucash-core-c-build ALL
+    COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/lib/gnucash/_gnucash_core_c${CMAKE_SHARED_LIBRARY_SUFFIX} ${PYTHON_SYSCONFIG_BUILD}/gnucash
+    DEPENDS gnucash_core_c)
+    
 ENDIF()
 
 SET(python_bindings_DATA ${PYEXEC_FILES}
@@ -118,4 +107,4 @@ SET(python_bindings_DATA ${PYEXEC_FILES}
 
 SET_LOCAL_DIST(python_bindings_DIST_local CMakeLists.txt Makefile.am ${python_bindings_DATA})
 
-SET(python_bindings_DIST ${python_bindings_DIST_local} ${test_python_bindings_DIST} ${example_scripts_DIST} PARENT_SCOPE)
\ No newline at end of file
+SET(python_bindings_DIST ${python_bindings_DIST_local} ${test_python_bindings_DIST} ${example_scripts_DIST} PARENT_SCOPE)
diff --git a/src/optional/python-bindings/tests/CMakeLists.txt b/src/optional/python-bindings/tests/CMakeLists.txt
index f900fa1..78b244d 100644
--- a/src/optional/python-bindings/tests/CMakeLists.txt
+++ b/src/optional/python-bindings/tests/CMakeLists.txt
@@ -3,7 +3,7 @@ IF (WITH_PYTHON)
   ADD_TEST(python-bindings ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/runTests.py.in)
   SET_PROPERTY(TEST python-bindings PROPERTY ENVIRONMENT
     GNC_BUILDDIR=${CMAKE_BINARY_DIR}
-    PYTHONPATH=${CMAKE_BINARY_DIR}/src/optional/python-bindings:${CMAKE_BINARY_DIR}/lib/gnucash:${CMAKE_BINARY_DIR}/src/test-core
+    PYTHONPATH=${PYTHON_SYSCONFIG_BUILD}:${CMAKE_BINARY_DIR}/lib/gnucash:${CMAKE_BINARY_DIR}/src/test-core
   )
 ENDIF()
 
@@ -15,4 +15,4 @@ SET(test_python_bindings_DATA
         test_split.py
         test_transaction.py)
 
-SET_DIST_LIST(test_python_bindings_DIST CMakeLists.txt Makefile.am ${test_python_bindings_DATA})
\ No newline at end of file
+SET_DIST_LIST(test_python_bindings_DIST CMakeLists.txt Makefile.am ${test_python_bindings_DATA})
diff --git a/src/python/CMakeLists.txt b/src/python/CMakeLists.txt
index 6698f3f..79d27ba 100644
--- a/src/python/CMakeLists.txt
+++ b/src/python/CMakeLists.txt
@@ -16,7 +16,11 @@ IF (WITH_PYTHON)
     RUNTIME DESTINATION bin
   )
 
-  INSTALL(FILES init.py DESTINATION share/python)
+  INSTALL(DIRECTORY pycons DESTINATION share/gnucash/python)
+  INSTALL(FILES init.py DESTINATION share/gnucash/python)
+
+  FILE(COPY init.py DESTINATION ${CMAKE_BINARY_DIR}/share/gnucash/python)
+  FILE(COPY pycons DESTINATION ${CMAKE_BINARY_DIR}/share/gnucash/python)
 ENDIF(WITH_PYTHON)
 
 SET_LOCAL_DIST(python_DIST_local CMakeLists.txt Makefile.am gncmod-python.c init.py)



Summary of changes:
 CMakeLists.txt                                    | 14 ++++++++++++
 src/bin/CMakeLists.txt                            | 15 ++++++++++++-
 src/optional/python-bindings/CMakeLists.txt       | 27 +++++++----------------
 src/optional/python-bindings/tests/CMakeLists.txt |  4 ++--
 src/python/CMakeLists.txt                         |  6 ++++-
 5 files changed, 43 insertions(+), 23 deletions(-)



More information about the gnucash-changes mailing list