[GNC-dev] Build error with scm-engine on current master

Christian Gruber christian.gruber at posteo.de
Fri Sep 13 15:27:41 EDT 2019


I tried again.

"make all" works fine now, but "make check" still generates errors. But this is probably due to some still missing dependencies, as I already mentioned in the previous thread "Need help - several tests fail". When I invoke "make check" in a fresh build dir directly after CMake, then the following error is generated when compiling gnucash/report/html-chart.scm:

Backtrace:
In scripts/compile.scm:
    259:26 19 (_ _)
In system/base/target.scm:
      57:6 18 (with-target _ _)
In system/base/compile.scm:
     152:6 17 (compile-file _ #:output-file _ #:from _ #:to _ #:env _ …)
      43:4 16 (call-once _)
In ice-9/boot-9.scm:
     841:4 15 (with-throw-handler _ _ _)
In system/base/compile.scm:
     59:11 14 (_)
    155:11 13 (_ #<closed: file 55fd66137230>)
    235:18 12 (read-and-compile #<input: html-chart.scm 13> #:from _ # …)
    183:32 11 (compile-fold (#<procedure compile-tree-il (x e opts)>) …)
In ice-9/boot-9.scm:
    2312:4 10 (save-module-excursion #<procedure 55fd660bb680 at lang…>)
In language/scheme/compile-tree-il.scm:
     31:15  9 (_)
In ice-9/psyntax.scm:
   1235:36  8 (expand-top-sequence ((use-modules (gnucash json #))) _ …)
   1182:24  7 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
    285:10  6 (parse _ (("placeholder" placeholder)) (()) _ c&e (# #) #)
In ice-9/boot-9.scm:
   3377:20  5 (process-use-modules _)
    222:17  4 (map1 (((gnucash json builder))))
   3378:31  3 (_ ((gnucash json builder)))
    2803:6  2 (resolve-interface _ #:select _ #:hide _ #:prefix _ # _ …)
In unknown file:
            1 (scm-error misc-error #f "~A ~S" ("no code for modu…" …) …)
In ice-9/boot-9.scm:
    752:25  0 (dispatch-exception _ _ _)

ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
no code for module (gnucash json builder)



Instead if I invoke "make all" first after CMake and then "make "check", everything builds correctly.

The target with missing dependencies seems to be scm-report-2.



Finally I tried to clarify the question, if and how an existing GnuCash installation can interfere with the build process, just out of interest.

In PR #574 <https://github.com/Gnucash/gnucash/pull/574> you wrote:

> the linker picks up a 3.x version of gnucash installed system-wide

And John Ralls wrote:

> The problem is that Guile loads C libraries with dlopen and that looks on the system path [...] before it looks in the build directory

But as far as I can see when guile is invoked LD_LIBRARY_PATH is always set to "${LIBDIR_BUILD}:${LIBDIR_BUILD}/gnucash", i.e. that these directories are searched first before any system paths (see http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html).

Did I miss something?

Christian



Am 12.09.19 um 10:45 schrieb Geert Janssens:
> Hi Christian,
>
> With the last commit on master it works here now.
>
> Can you retry ?
>
> Geert
>
> Op donderdag 12 september 2019 09:47:43 CEST schreef Geert Janssens:
>> Hi Christian,
>>
>> Thanks to your detailed description I can now reproduce the problem when
>> building master with "make" rather than "ninja".
>>
>> Turns out there's a hidden circular dependency between engine.scm and
>> engine- utilities.scm via the call to
>> (gnc:module-begin-syntax (gnc:module-load "gnucash/engine" 0))
>>
>> I have a fix ready for this particular case, but there are more of these so
>> I'm still working through the others.
>>
>> Regards,
>>
>> Geert
>>
>> Op donderdag 12 september 2019 00:46:13 CEST schreef Christian Gruber:
>>> This thread is related to the build issue I encountered when finally
>>> building PR #574 <https://github.com/Gnucash/gnucash/pull/574> locally.
>>>
>>> Invoking "make all" on current master lead to the following build error
>>> when compiling libgnucash/engine/engine-utilities.scm:
>>>
>>> Backtrace:            1 (primitive-load-path
>>> "gnucash/engine/gnc-numeric") In ice-9/boot-9.scm:    752:25  0
>>> (dispatch-exception _ _ _) ice-9/boot-9.scm:752:25: In procedure
>>> dispatch-exception: In procedure primitive-load-path: Unable to find
>>> file "gnucash/engine/gnc-numeric" in load path
>>>
>>> File libgnucash/engine/engine-utilities.scm is built with target
>>> scm-engine-1, therefore the same build error can be reproduced by
>>> invoking "make scm-engine-1" or "make scm-engine" as well.
>>>
>>> According to PR #574 <https://github.com/Gnucash/gnucash/pull/574>  I
>>> can preclude, that this is due to reusing a maint build directory, since
>>> I built in a clean and fresh build dir.
>>>
>>> Next I tried to build again after moving directories
>>> /usr/lib/x86_64-linux-gnu/gnucash/gnucash and files
>>> /usr/lib/x86_64-linux-gnu/gnucash/libgnc*.so.
>>>
>>> After that I uninstalled my GnuCash 3.5, which was installed before from
>>> distros package manager.
>>>
>>> Finally I searched my whole system for gnucash directories and removed
>>> them in /usr/local/... where I previously installed GnuCash built from
>>> source repo.
>>>
>>> Everytime I built in a clean and fresh build dir, but the build error
>>> was always the same.
>>>
>>> Finally I further investigated sources and found a maybe important
>>> change in file libgnucash/engine/engine.scm made in commit 53f59f7.
>>> Therefore I tried two builds at the end, one with commit 53f59f7 and the
>>> second with commit cb50f7a, which is one commit before 53f59f7. The
>>> result was, that commit 53f59f7 leads to the mentioned build error, but
>>> commit cb50f7a could successfully be built.
>>>
>>> Any ideas?
>>>
>>> Christian
>>>
>>> _______________________________________________
>>> gnucash-devel mailing list
>>> gnucash-devel at gnucash.org
>>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>> _______________________________________________
>> gnucash-devel mailing list
>> gnucash-devel at gnucash.org
>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>
>
>


More information about the gnucash-devel mailing list