From 7cae61d97a495b1280a4c17686cb9d6c3c4f142f Mon Sep 17 00:00:00 2001 From: Richard Cohen Date: Thu, 23 Feb 2023 21:53:03 +0000 Subject: [PATCH 1/2] Make the scheme tests fail immediately if they load an external gnucash file This would be a mistake in the build, but can happen if there is already a gnucash installed in the standard guile load path. --- common/cmake_modules/GncAddTest.cmake | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake index e5043bff30..6ee6aa62bc 100644 --- a/common/cmake_modules/GncAddTest.cmake +++ b/common/cmake_modules/GncAddTest.cmake @@ -109,7 +109,17 @@ endfunction() function(gnc_add_scheme_test _TARGET _SOURCE_FILE) add_test(${_TARGET} ${CMAKE_COMMAND} -E env - ${GUILE_EXECUTABLE} --debug -c "(load-from-path \"${_TARGET}\")(exit (run-test))" + ${GUILE_EXECUTABLE} --debug -c " + (set! %load-hook + (lambda (filename) + (when (and filename + (string-contains filename \"${GUILE_REL_SITEDIR}\") + (not (string-prefix? \"${CMAKE_BINARY_DIR}\" filename))) + (format #t \"%load-path = ~s~%\" %load-path) + (format #t \"%load-compiled-path = ~s~%\" %load-compiled-path) + (error \"Loading guile/site file from outside build tree!\" filename)))) + (load-from-path \"${_TARGET}\") + (exit (run-test))" ) get_guile_env() set_tests_properties(${_TARGET} PROPERTIES ENVIRONMENT "${GUILE_ENV};${ARGN}") From be41bde58aeb245fc59a0b1e85d850fc6e51762f Mon Sep 17 00:00:00 2001 From: Richard Cohen Date: Sun, 26 Feb 2023 11:42:35 +0000 Subject: [PATCH 2/2] Add missing MAKE_LINKS, and the local scm directory to %load-path Before this change, "make check" would fail after rm -rf ${build}/share/guile/site/*/gnucash/ --- bindings/guile/CMakeLists.txt | 9 ++++++--- common/cmake_modules/GncAddTest.cmake | 2 +- gnucash/gnome-utils/CMakeLists.txt | 3 ++- gnucash/html/CMakeLists.txt | 3 ++- gnucash/report/CMakeLists.txt | 6 ++++-- libgnucash/tax/CMakeLists.txt | 3 ++- 6 files changed, 17 insertions(+), 9 deletions(-) diff --git a/bindings/guile/CMakeLists.txt b/bindings/guile/CMakeLists.txt index f95f78b02c..cd130ca846 100644 --- a/bindings/guile/CMakeLists.txt +++ b/bindings/guile/CMakeLists.txt @@ -127,7 +127,8 @@ endif() gnc_add_scheme_targets(scm-core-utils SOURCES "${core_utils_SCHEME}" OUTPUT_DIR ${GUILE_OUTPUT_DIR} - DEPENDS "${GUILE_DEPENDS}") + DEPENDS "${GUILE_DEPENDS}" + MAKE_LINKS) set (engine_SCHEME_0 gnc-numeric.scm @@ -162,12 +163,14 @@ gnc_add_scheme_targets(scm-engine-0 gnc_add_scheme_targets(scm-engine-1 SOURCES "${engine_SCHEME_1}" OUTPUT_DIR gnucash - DEPENDS "scm-core-utils;scm-engine-0;${GUILE_DEPENDS}") + DEPENDS "scm-core-utils;scm-engine-0;${GUILE_DEPENDS}" + MAKE_LINKS) gnc_add_scheme_targets(scm-engine-2 SOURCES "${engine_SCHEME_2}" OUTPUT_DIR gnucash - DEPENDS "scm-engine-1;${GUILE_DEPENDS}") + DEPENDS "scm-engine-1;${GUILE_DEPENDS}" + MAKE_LINKS) gnc_add_scheme_targets(scm-options diff --git a/common/cmake_modules/GncAddTest.cmake b/common/cmake_modules/GncAddTest.cmake index 6ee6aa62bc..0bd7183cd7 100644 --- a/common/cmake_modules/GncAddTest.cmake +++ b/common/cmake_modules/GncAddTest.cmake @@ -32,7 +32,7 @@ function(get_guile_env) list(APPEND env "GUILE=${GUILE_EXECUTABLE}") set(guile_load_paths "") - #list(APPEND guile_load_paths "${CMAKE_BINARY_DIR}/${GUILE_REL_SITEDIR}") + list(APPEND guile_load_paths "${CMAKE_BINARY_DIR}/${GUILE_REL_SITEDIR}") list(APPEND guile_load_paths "${CMAKE_BINARY_DIR}/${GUILE_REL_SITEDIR}/gnucash/deprecated") # Path to gnucash' deprecated modules set(guile_load_path "${guile_load_paths}") diff --git a/gnucash/gnome-utils/CMakeLists.txt b/gnucash/gnome-utils/CMakeLists.txt index 0144319745..7839eb27b8 100644 --- a/gnucash/gnome-utils/CMakeLists.txt +++ b/gnucash/gnome-utils/CMakeLists.txt @@ -267,7 +267,8 @@ gnc_add_scheme_targets(scm-gnome-utils-1 gnc_add_scheme_targets(scm-gnome-utils-2 SOURCES gnome-utils.scm OUTPUT_DIR gnucash - DEPENDS "scm-gnome-utils-1") + DEPENDS "scm-gnome-utils-1" + MAKE_LINKS) add_custom_target(scm-gnome-utils ALL DEPENDS scm-gnome-utils-2 scm-gnome-utils-1) diff --git a/gnucash/html/CMakeLists.txt b/gnucash/html/CMakeLists.txt index 1ac6a9fe02..acd8ea0b5d 100644 --- a/gnucash/html/CMakeLists.txt +++ b/gnucash/html/CMakeLists.txt @@ -41,7 +41,8 @@ set(GUILE_DEPENDS gnc-html gnucash-guile scm-core-utils) gnc_add_scheme_targets(scm-gnc-html SOURCES "${gnc_html_SCHEME}" OUTPUT_DIR ${GUILE_OUTPUT_DIR} - DEPENDS "${GUILE_DEPENDS}") + DEPENDS "${GUILE_DEPENDS}" + MAKE_LINKS) set_dist_list(html_DIST CMakeLists.txt ${html_HEADERS} ${html_SOURCES} gnc-html.i ${html_EXTRA_DIST} html.scm) diff --git a/gnucash/report/CMakeLists.txt b/gnucash/report/CMakeLists.txt index 3e33038b00..25331a1d88 100644 --- a/gnucash/report/CMakeLists.txt +++ b/gnucash/report/CMakeLists.txt @@ -108,12 +108,14 @@ gnc_add_scheme_targets(scm-report-2 gnc_add_scheme_targets(scm-report-eguile-parts SOURCES "${report_eguile_parts_SCHEME}" OUTPUT_DIR "gnucash/eguile" - DEPENDS scm-report-2) + DEPENDS scm-report-2 + MAKE_LINKS) gnc_add_scheme_targets(scm-report-eguile SOURCES "${report_eguile_SCHEME}" OUTPUT_DIR "gnucash" - DEPENDS scm-report-eguile-parts) + DEPENDS scm-report-eguile-parts + MAKE_LINKS) add_custom_target(scm-report ALL DEPENDS scm-report-2 scm-report-eguile) diff --git a/libgnucash/tax/CMakeLists.txt b/libgnucash/tax/CMakeLists.txt index e0ffe9df7a..945bc7b8c5 100644 --- a/libgnucash/tax/CMakeLists.txt +++ b/libgnucash/tax/CMakeLists.txt @@ -56,7 +56,8 @@ gnc_add_scheme_targets(scm-tax-us-2 gnc_add_scheme_targets(scm-tax-us-3 SOURCES "${gncmod_tax_us_SCHEME_3}" OUTPUT_DIR "gnucash/locale/us" - DEPENDS "scm-tax-us-2;${GUILE_DEPENDS}") + DEPENDS "scm-tax-us-2;${GUILE_DEPENDS}" + MAKE_LINKS) gnc_add_scheme_targets(scm-tax-de_DE-1 SOURCES "${gncmod_tax_de_DE_SCHEME_1}"