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