[GNC-dev] I need help building GnuCash on master

Christian Gruber christian.gruber at posteo.de
Mon Jun 1 16:25:15 EDT 2020


Am 31.05.20 um 02:47 schrieb John Ralls:
>
>> On May 30, 2020, at 4:45 AM, Christian Gruber <christian.gruber at posteo.de> wrote:
>>
>>
>> Am 29.05.20 um 01:49 schrieb Frank H. Ellenberger:
>>> Christian,
>>>
>>> did you clean ~/.cache/guile ? That is the place, where the precompiled
>>> .go bytecode from the .scm files is stored.
>> Thanks for this advise, I haven't tried this yet. Unfortunately it didn't help.
>>> Frank
>>>
>>> Am 28.05.20 um 17:42 schrieb Christian Gruber:
>>>> Am 28.05.20 um 12:24 schrieb Frank H. Ellenberger:
>>>>> Hi,
>>>>>
>>>>> Am 28.05.20 um 08:13 schrieb Christian Gruber:
>>>>>> I have to search for left *.go files, right? There are a lot in
>>>>>> /usr/lib/x86_64-linux-gnu/guile/2.2/ccache. Can I remove the complete
>>>>>> directory without hesitation?
>>>>> The easier way is to uninstall guile-modules-2_2 to get rid of them. ;-)
>>>>> They are part of that package.
>>>> Ok, I checked that with inverse file search ("apt-file search"). On my
>>>> Ubuntu system these files belong to package guile-2.2-libs. And the
>>>> *.scm files in /usr/share/guile/2.2 belong to that package as well. But
>>>> after uninstalling guile-2.2-libs CMake complains, when building GnuCash:
>>>>
>>>> CMake Error at CMakeLists.txt:311 (message):
>>>>    Neither guile 2.2 nor guile 2.0 were found GnuCash can't run without
>>>> one of
>>>>    them.  Ensure that one is installed and can be found with pkg-config.
>>>>
>>>> Therefore I installed guile-2.2-libs again. And the build error is the
>>>> same again as at the beginning:
>>>>
>>>> ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
>>>> no code for module (gnucash core-utils)
>>>>
>>>> Is this maybe a problem of a missing CMake dependency?
>>>>
>>>> Another idea, I updated my Ubuntu system from 19.10 Eoan Ermine to 20.04
>>>> Focal Fossa a few days ago. Could this be a reason?
>> Can anybody please try to reproduce the build process on Linux from the current master branch in a completely clean build directory and with a clean guile cache (~/.cache/guile)?
>>
>> I did the following:
>>
>> cd ~/gnucash/build
>> rm rf *
>> cmake -DCMAKE_BUILD_TYPE=Debug ~/gnucash/src
>> make all
>>
>> Can anybody tell me more precisely, what this error message actually means? Does "no code for module (gnucash core-utils)" mean, that something is not built yet? If yes, what is not built? Target "gnc-core-utils" is already built.
> Christian,
>
> Sorry, I gave you bad advice Wednesday and that damaged your guile installation.
>
> "no code for module (gnucash core-utils)" means that guile wants to load <builddir>/lib/guile/2.2/site-ccache/gnucash/core-utils.go
Is this directory system dependent? On my Ubuntu the *.go files are in 
<builddir>/lib/x86_64-linux-gnu/guile/2.2/site-ccache.
> and it's either not there, is empty, or can't find lib/libgnc-core-utils.so, the library on which it depends...

That was finally the missing hint. This file was missing.

And the reason for that really seems to be a missing CMake dependency. 
After building target "scm-core-utils", the file 
/x86_64-linux-gnu/guile/2.2/site-ccache/gnucash/core-utils.go was built. 
And now I could go on with "make all" successfully until the end.

> *unless* it finds an old core-utils.go that wants to link to an installed libgnc-core-utils.so or if it's from maint libgncmod-core-utils.go. It searches system directories (i.e. /usr/lib*) first which is why you can't develop gnucash on a Linux system with an installed gnucash.
>
> I've just finished clean builds of master on Ubuntu 18.04 and freshly updated Arch Linux and Debian Unstable, the last of which I'd think would be pretty close to your Ubuntu 20.04. Note that we run continuous integration tests after every push, you can see the results at https://travis-ci.org/github/Gnucash/gnucash/builds/. Those run on dockers with Ubuntu 18.04 and Arch Linux that are spun up and configured from scratch for each test run.

I know and that puzzles me. Why do the CI builds run successfully, if 
this is really a missing CMake dependency? Maybe the problem doesn't 
occur, when doing parallel builds on several cores, since there are 
other targets, which depend on scm-core-utils. And if these targets are 
built in parallel and finish before target scm-engine-2 is built, the 
missing dependency doesn't lead to a build error.

>
> Regards,
> John Ralls
>


More information about the gnucash-devel mailing list