Am 01.06.20 um 22:47 schrieb John Ralls:

On Jun 1, 2020, at 1:25 PM, Christian Gruber <christian.gru...@posteo.de> wrote:


Am 31.05.20 um 02:47 schrieb John Ralls:
On May 30, 2020, at 4:45 AM, Christian Gruber <christian.gru...@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.
Well, it's more distro-dependent, with the Debian-based distros using the 
`uname` subdirectory for application-specific libraries. Some others use lib 
for 32-bit and lib64 for 64-bit libraries.

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.
Very good. I've just pushed that change to master.

*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.
Absent dependencies the build order of targets is somewhat random. It was 
working for you until you upgraded your OS and got different versions of cmake 
and make (have you tried ninja? It's about 4x faster than make) and the build 
order changed exposing the missing dependency.
I have tried ninja, but I can see no benefit for building GnuCash. The build time of "ninja -j8 all" is almost the same as "make -j8 all" from a clean build directory (2m28s vs. 2m29s). I guess the main difference is, that ninja utilizes all cores by default, whereas make uses one job by default.

Regards,
John Ralls

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to