gnucash unstable: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Sun Mar 18 15:02:45 EDT 2018


Updated	 via  https://github.com/Gnucash/gnucash/commit/4ecd9c2d (commit)
	 via  https://github.com/Gnucash/gnucash/commit/b9d2344d (commit)
	 via  https://github.com/Gnucash/gnucash/commit/496f0faf (commit)
	from  https://github.com/Gnucash/gnucash/commit/1f7edb23 (commit)



commit 4ecd9c2dd41ae75ec4e82a662a241543fc075c01
Author: John Ralls <jralls at ceridwen.us>
Date:   Sun Mar 18 11:59:13 2018 -0700

    Fix the Python Console for Python3.
    
    Replacing libgncmod-python, libgncmod-core-utils-python, and
    libgncmod-app-utils-python with _sw_core_utils and _sw_app_utils.
    The latter two are the modules that init.py wants to load and with
    Python3 Swig appears to no longer make them available via libgncmod.
    
    Note that there may still be some problems with actually using the
    console, but it at least loads at startup without complaint.

diff --git a/gnucash/python/CMakeLists.txt b/gnucash/python/CMakeLists.txt
index 4285508..a6f689a 100644
--- a/gnucash/python/CMakeLists.txt
+++ b/gnucash/python/CMakeLists.txt
@@ -1,5 +1,3 @@
-SET(gncmod_python_SOURCES gncmod-python.c)
-
 SET(pycons_DATA
   pycons/__init__.py
   pycons/console.py
@@ -11,22 +9,6 @@ SET(pycons_DATA
 )
 
 IF (WITH_PYTHON)
-
-  ADD_LIBRARY(gncmod-python ${gncmod_python_SOURCES})
-  TARGET_LINK_LIBRARIES(gncmod-python gnc-module gnc-core-utils-python gncmod-app-utils-python
-   ${PYTHON_LIBRARIES} ${GLIB_LIBS})   # ${PYTHON_EXTRA_LIBS}
-  TARGET_INCLUDE_DIRECTORIES(gncmod-python
-    PRIVATE ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/core_utils ${CMAKE_SOURCE_DIR}/gnc-module ${PYTHON_INCLUDE_DIR})
-  TARGET_COMPILE_OPTIONS(gncmod-python PRIVATE -DG_LOG_DOMAIN=\"gnc.python\")
-IF (APPLE)
-  SET_TARGET_PROPERTIES (gncmod-python PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/gnucash")
-ENDIF()
-  INSTALL(TARGETS gncmod-python
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/gnucash
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/gnucash
-    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
-  )
-
   INSTALL(FILES ${pycons_DATA} DESTINATION  ${CMAKE_INSTALL_DATADIR}/gnucash/python/pycons)
   INSTALL(FILES init.py DESTINATION  ${CMAKE_INSTALL_DATADIR}/gnucash/python)
 
@@ -35,6 +17,6 @@ ENDIF()
 ENDIF(WITH_PYTHON)
 
 SET_LOCAL_DIST(pycons_DIST ${pycons_DATA})
-SET_LOCAL_DIST(python_DIST_local CMakeLists.txt gncmod-python.c init.py)
+SET_LOCAL_DIST(python_DIST_local CMakeLists.txt init.py)
 SET(python_DIST ${python_DIST_local} ${pycons_DIST} PARENT_SCOPE)
 
diff --git a/gnucash/python/gncmod-python.c b/gnucash/python/gncmod-python.c
deleted file mode 100644
index 19350d4..0000000
--- a/gnucash/python/gncmod-python.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*********************************************************************
- * gncmod-python.c
- * Python in GnuCash?! Sweet.
- *
- * Copyright (c) 2011 Andy Clayton
- *********************************************************************/
-/********************************************************************\
- * This program is free software; you can redistribute it and/or    *
- * modify it under the terms of the GNU General Public License as   *
- * published by the Free Software Foundation; either version 2 of   *
- * the License, or (at your option) any later version.              *
- *                                                                  *
- * This program is distributed in the hope that it will be useful,  *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
- * GNU General Public License for more details.                     *
- *                                                                  *
- * You should have received a copy of the GNU General Public License*
- * along with this program; if not, contact:                        *
- *                                                                  *
- * Free Software Foundation           Voice:  +1-617-542-5942       *
- * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
- * Boston, MA  02110-1301,  USA       gnu at gnu.org                   *
- *                                                                  *
-\********************************************************************/
-
-
-#include <Python.h>
-#include <config.h>
-#include <gmodule.h>
-#include <stdio.h>
-
-#include "gnc-module.h"
-#include "gnc-module-api.h"
-#include "gnc-path.h"
-
-GNC_MODULE_API_DECL(libgncmod_python)
-
-/* version of the gnc module system interface we require */
-int libgncmod_python_gnc_module_system_interface = 0;
-
-/* module versioning uses libtool semantics. */
-int libgncmod_python_gnc_module_current  = 0;
-int libgncmod_python_gnc_module_revision = 0;
-int libgncmod_python_gnc_module_age      = 0;
-
-
-char *
-libgncmod_python_gnc_module_path(void)
-{
-    return g_strdup("gnucash/python");
-}
-
-char *
-libgncmod_python_gnc_module_description(void)
-{
-    return g_strdup("An embedded Python interpreter");
-}
-
-#if PY_VERSION_HEX >= 0x03000000
-extern PyObject* PyInit__sw_app_utils(void);
-extern PyObject* PyInit__sw_core_utils(void);
-#else
-extern void init_sw_app_utils(void);
-extern void init_sw_core_utils(void);
-#endif
-
-int
-libgncmod_python_gnc_module_init(int refcount)
-{
-    /* There isn't yet a python module to init.
-    PyObject *pName, *pModule;
-    */
-    FILE *fp;
-    gchar *pkgdatadir, *init_filename;
-#if PY_VERSION_HEX >= 0x03000000
-    wchar_t* argv = NULL;
-#else
-    char* argv = "";
-#endif
-    Py_Initialize();
-    PySys_SetArgv(0, &argv);
-#if PY_VERSION_HEX >= 0x03000000
-    PyInit__sw_app_utils();
-    PyInit__sw_core_utils();
-#else
-    init_sw_app_utils();
-    init_sw_core_utils();
-#endif
-
-    /* There isn't yet a python module to init.
-    pName = PyString_FromString("path/to/init.py");
-    pModule = PyImport_Import(pName);
-
-    if (!pModule) {
-        PyErr_Print();
-        return FALSE;
-    }
-
-    Py_DECREF(pName);
-    Py_DECREF(pModule);
-    */
-
-    pkgdatadir = gnc_path_get_pkgdatadir();
-    init_filename = g_build_filename(pkgdatadir, "python/init.py", (char*)NULL);
-    g_debug("Looking for python init script at %s", (init_filename ? init_filename : "<null>"));
-    fp = fopen(init_filename, "r");
-    if (fp)
-    {
-        PyRun_SimpleFile(fp, init_filename);
-        fclose(fp);
-
-        /* PyRun_InteractiveLoop(stdin, "foo"); */
-    }
-    else
-    {
-        g_warning("Unable to initialize Python module (unable to open %s)", init_filename);
-    }
-    g_free(init_filename);
-    g_free(pkgdatadir);
-
-    return TRUE;
-}
-
-int
-libgncmod_python_gnc_module_end(int refcount)
-{
-    Py_Finalize();
-    return TRUE;
-}
diff --git a/gnucash/python/init.py b/gnucash/python/init.py
index 85febec..4ec0febd 100644
--- a/gnucash/python/init.py
+++ b/gnucash/python/init.py
@@ -9,7 +9,7 @@ import os
 sys.path.append(os.path.dirname(__file__))
 noisy = gnc_prefs_is_extra_enabled()
 if noisy:
-    print "woop", os.path.dirname(__file__)
+    print("woop", os.path.dirname(__file__))
 # Importing the console class causes SIGTTOU to be thrown if GnuCash is
 # started in the background.  This causes a hang if it is not handled, 
 # so ignore it for the duration
@@ -22,22 +22,22 @@ import pycons.console as cons
 signal.signal(signal.SIGTTOU, old_sigttou)
 
 if noisy:
-    print "Hello from python!"
-    print "test", sys.modules.keys()
-    print "test2", dir(_sw_app_utils)
+    print("Hello from python!")
+    print("test", sys.modules.keys())
+    print("test2", dir(_sw_app_utils))
 
    #root = _sw_app_utils.gnc_get_current_root_account()
 
-   #print "test", dir(root), root.__class__
-    print "test3", dir(gnucash_core_c)
+   #print("test", dir(root), root.__class__)
+    print("test3", dir(gnucash_core_c))
 
    #acct = Account(instance = root)
 
-   #print "test3", dir(acct)
-   #print acct.GetName()
-   #print acct.GetBalance()
-   #print acct.GetSplitList()
-   #print "test2", dir(gnucash.gnucash_core_c)
+   #print("test3", dir(acct))
+   #print(acct.GetName())
+   #print(acct.GetBalance())
+   #print(acct.GetSplitList())
+   #print("test2", dir(gnucash.gnucash_core_c))
 
 class Console (cons.Console):
     """ GTK python console """
diff --git a/libgnucash/app-utils/CMakeLists.txt b/libgnucash/app-utils/CMakeLists.txt
index 755ab1e..13a8f9e 100644
--- a/libgnucash/app-utils/CMakeLists.txt
+++ b/libgnucash/app-utils/CMakeLists.txt
@@ -110,25 +110,35 @@ INSTALL(TARGETS gncmod-app-utils
 )
 
 IF (WITH_PYTHON)
-  ADD_LIBRARY (gncmod-app-utils-python ${SWIG_APP_UTILS_PYTHON_C})
+  SET(PYEXEC_FILES sw_app_utils.py)
+  ADD_LIBRARY (sw_app_utils MODULE ${SWIG_APP_UTILS_PYTHON_C})
 
-  TARGET_LINK_LIBRARIES(gncmod-app-utils-python gncmod-app-utils ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+  TARGET_LINK_LIBRARIES(sw_app_utils gncmod-app-utils ${app_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+  SET_TARGET_PROPERTIES(sw_app_utils PROPERTIES PREFIX "_")
 
-  TARGET_INCLUDE_DIRECTORIES (gncmod-app-utils-python
+  TARGET_INCLUDE_DIRECTORIES (sw_app_utils
     PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
     PRIVATE ${app_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}
   )
-  TARGET_COMPILE_DEFINITIONS (gncmod-app-utils-python PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
+  TARGET_COMPILE_DEFINITIONS (sw_app_utils PRIVATE -DG_LOG_DOMAIN=\"gnc.app-utils\")
 
   IF (APPLE)
-    SET_TARGET_PROPERTIES (gncmod-app-utils-python PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/gnucash")
+    SET_TARGET_PROPERTIES (sw_app_utils PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/gnucash")
   ENDIF()
 
-  INSTALL(TARGETS gncmod-app-utils-python
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/gnucash
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/gnucash
-    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  INSTALL(TARGETS sw_app_utils
+    LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
+    ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
   )
+
+  ADD_CUSTOM_TARGET(sw-app-utils-py ALL
+    COMMAND ${CMAKE_COMMAND} -E copy ${SWIG_APP_UTILS_PYTHON_PY} ${PYTHON_SYSCONFIG_BUILD}/gnucash
+    DEPENDS ${SWIG_APP_UTILS_PYTHON_C})
+
+  ADD_CUSTOM_TARGET(sw-app-utils-build ALL
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR_BUILD}/gnucash/_sw_app_utils${CMAKE_SHARED_MODULE_SUFFIX} ${PYTHON_SYSCONFIG_BUILD}/gnucash
+    DEPENDS sw_app_utils)
+    
 ENDIF()
 
 
diff --git a/libgnucash/core-utils/CMakeLists.txt b/libgnucash/core-utils/CMakeLists.txt
index 4e21929..befab78 100644
--- a/libgnucash/core-utils/CMakeLists.txt
+++ b/libgnucash/core-utils/CMakeLists.txt
@@ -167,27 +167,34 @@ INSTALL(TARGETS gnc-core-utils
 )
 
 IF (WITH_PYTHON)
-  ADD_LIBRARY	(gnc-core-utils-python ${core_utils_ALL_SOURCES} ${SWIG_CORE_UTILS_PYTHON_C})
-  ADD_DEPENDENCIES(gnc-core-utils-python gnc-vcs-info)
+  ADD_LIBRARY (sw_core_utils MODULE ${SWIG_CORE_UTILS_PYTHON_C})
 
-  TARGET_LINK_LIBRARIES(gnc-core-utils-python ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+  TARGET_LINK_LIBRARIES(sw_core_utils gnc-core-utils ${core_utils_ALL_LIBRARIES} ${PYTHON_LIBRARIES})
+  SET_TARGET_PROPERTIES(sw_core_utils PROPERTIES PREFIX "_")
 
-  TARGET_COMPILE_DEFINITIONS(gnc-core-utils-python
-    PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\" ${GTK_MAC_CFLAGS_OTHER}
+  TARGET_INCLUDE_DIRECTORIES (sw_core_utils
+    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
+    PRIVATE ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS}
   )
+  TARGET_COMPILE_DEFINITIONS (sw_core_utils PRIVATE -DG_LOG_DOMAIN=\"gnc.core-utils\")
 
-  TARGET_INCLUDE_DIRECTORIES(gnc-core-utils-python PUBLIC ${core_utils_ALL_INCLUDES} ${PYTHON_INCLUDE_DIRS})
+  IF (CORELE)
+    SET_TARGET_PROPERTIES (sw_core_utils PROPERTIES INSTALL_NAME_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/gnucash")
+  ENDIF()
 
-  IF (MAC_INTEGRATION)
-    TARGET_COMPILE_OPTIONS(gnc-core-utils-python PRIVATE ${OSX_EXTRA_COMPILE_FLAGS})
-  ENDIF(MAC_INTEGRATION)
-
-  INSTALL(TARGETS gnc-core-utils-python
-    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
-    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+  INSTALL(TARGETS sw_core_utils
+    LIBRARY DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
+    ARCHIVE DESTINATION ${PYTHON_SYSCONFIG_OUTPUT}/gnucash
   )
 
+  ADD_CUSTOM_TARGET(sw-core-utils-py ALL
+    COMMAND ${CMAKE_COMMAND} -E copy ${SWIG_CORE_UTILS_PYTHON_PY} ${PYTHON_SYSCONFIG_BUILD}/gnucash
+    DEPENDS ${SWIG_CORE_UTILS_PYTHON_C})
+
+  ADD_CUSTOM_TARGET(sw-core-utils-build ALL
+    COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR_BUILD}/gnucash/_sw_core_utils${CMAKE_SHARED_MODULE_SUFFIX} ${PYTHON_SYSCONFIG_BUILD}/gnucash
+    DEPENDS sw_core_utils)
+    
 ENDIF()
 
 # No headers to install
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 0e02226..dc896a7 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -360,7 +360,6 @@ gnucash/import-export/qif-imp/qif-parse.scm
 gnucash/import-export/qif-imp/qif-to-gnc.scm
 gnucash/import-export/qif-imp/qif-utils.scm
 gnucash/import-export/qif-imp/string.scm
-gnucash/python/gncmod-python.c
 gnucash/register/ledger-core/gncEntryLedger.c
 gnucash/register/ledger-core/gncEntryLedgerControl.c
 gnucash/register/ledger-core/gncEntryLedgerDisplay.c

commit b9d2344d3412f1cb50b86c3adabb71da9236fbb1
Merge: 1f7edb2 496f0fa
Author: John Ralls <jralls at ceridwen.us>
Date:   Sat Mar 17 16:13:40 2018 -0700

    Merge Chris Lam's Increase default options dialog size PR into unstable.


commit 496f0faf6f635a6684b8c712a337a21bda750656
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Mar 6 13:11:42 2018 +0800

    Increase default options dialog size
    
    The old 400x400 was woefully inadequate for most options especially
    options involving account trees.

diff --git a/gnucash/gtkbuilder/dialog-options.glade b/gnucash/gtkbuilder/dialog-options.glade
index ba4853c..ae7435e 100644
--- a/gnucash/gtkbuilder/dialog-options.glade
+++ b/gnucash/gtkbuilder/dialog-options.glade
@@ -5,8 +5,8 @@
   <object class="GtkDialog" id="gnucash_options_dialog">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">GnuCash Options</property>
-    <property name="default_width">400</property>
-    <property name="default_height">400</property>
+    <property name="default_width">640</property>
+    <property name="default_height">480</property>
     <property name="type_hint">dialog</property>
     <signal name="response" handler="gnc_options_dialog_response_cb" swapped="no"/>
     <child internal-child="vbox">



Summary of changes:
 gnucash/gtkbuilder/dialog-options.glade |   4 +-
 gnucash/python/CMakeLists.txt           |  20 +----
 gnucash/python/gncmod-python.c          | 130 --------------------------------
 gnucash/python/init.py                  |  22 +++---
 libgnucash/app-utils/CMakeLists.txt     |  28 ++++---
 libgnucash/core-utils/CMakeLists.txt    |  35 +++++----
 po/POTFILES.in                          |   1 -
 7 files changed, 54 insertions(+), 186 deletions(-)
 delete mode 100644 gnucash/python/gncmod-python.c



More information about the gnucash-changes mailing list