Hi John,

thanks for your detailed explaination.

Actually I am a bit surprised now that openSUSE ships such an
old (outdated) gcc. Everything used to work with GnuCash 4.x, so I never cared.

I installed one of the community builds of gcc 12 and it builds and runs just 
fine.

Thanks again for your support!

Best regards,
 Herbert

Am 03.04.23 um 00:30 schrieb John Ralls:
Herbert,

gcc 8 is the minimum required since 2019: 
https://github.com/Gnucash/gnucash/commit/e4bbf7257f6555808ffbac85e446ed0cb53c6015

According to https://software.opensuse.org/package/gcc there's no official gcc package 
for leap 15.4, but there are three community builds of gcc 12 and an experimental build 
of gcc 13. Under the heading "Unsupported distributions The following distributions 
are not officially supported. Use these packages at your own risk." it lists 
official releases and updates for gcc 7 under Leap 15.0, 15.1, and 15.2... so I guess 
building software isn't a supported activity on openSuSE. Maybe you should consider a 
different distro.

In case you insist on using this obsolete compiler, I found an old Ubuntu 18.04 
VM that has gcc 7.5 and built GnuCash all the way through.

Although the static char* empty is easy to fix (and is actually wrong for a 
different reason), the next problem in gcc 7.5 is
   gnucash/gnome/dialog-report-column-view.cpp:533:29: error: unused variable 
‘id’ [-Werror=unused-variable]
          auto [id, wide, high] = r->contents_list[r->contents_selected];
and the correct work-around (since 8 and later recognize that unless an rv is 
marked no discard in the function decl that it's normal to not use all of the 
values returned in a structured binding) of marking the decl with 
[[maybe_unused]] doesn't work:

gnucash/gnome/dialog-report-column-view.cpp:533:46: error: unused variable ‘id’ 
[-Werror=unused-variable]
          [[maybe_unused]] auto [id, wide, high] =
                                               ^
so to get it to build on gcc 7 one must
--- a/gnucash/gnome/dialog-report-column-view.cpp
+++ b/gnucash/gnome/dialog-report-column-view.cpp
@@ -530,7 +530,11 @@ gnc_column_view_edit_size_cb(GtkButton * button, gpointer 
user_data)
if (r->contents_list.size() > static_cast<size_t>(r->contents_selected))
      {
-        auto [id, wide, high] = r->contents_list[r->contents_selected];
+#pragma GCC diagnostic push
+#pragma GCC diagnostic warning "-Wunused-variable"
+        [[maybe_unused]] auto [id, wide, high] =
+            r->contents_list[r->contents_selected];
+#pragma GCC diagnostic pop
gtk_spin_button_set_value(GTK_SPIN_BUTTON(colspin),
                                    static_cast<float>(wide));

I'm not willing to do that to support a compiler that we said we don't 4 years 
ago, but the beauty of free software is that you can patch your own repo.

Once it all builds it fails a test:
/home/john/gnucash-git/libgnucash/engine/test/test-gnc-guid.cpp:82: Failure
Value of: fail
   Actual: false
Expected: true
Parsing the bogus string should throw

That's not good, it means that passing an invalid string to create a GUID will 
generate bogus output instead of signaling an error. I don't know why it's not 
throwing and I'm not sufficiently motivated to debug it. IMO it's far safer to 
upgrade to a more up-to-date compiler.

Regards,
John Ralls

On Apr 2, 2023, at 10:59 AM, Herbert Thoma <herbert.th...@iis.fraunhofer.de> 
wrote:

Am 02.04.23 um 19:23 schrieb john:
Herbert,
Hmm, I tested with gcc 8, 9, 10, and 12 . What version are you using?

gcc --version
gcc (SUSE Linux) 7.5.0
Copyright (C) 2017 Free Software Foundation, Inc.

This is the latest stable open SUSE 15.4

Herbert.

The SWIG version doesn't matter as long as it's at least 3.0.12.
Regards,
John Ralls
On Apr 2, 2023, at 8:59 AM, Herbert Thoma <herbert.th...@iis.fraunhofer.de> 
wrote:

Hi John, Maarten,

thnaks for the fixes. This error is now gone on my machine.
But it finds another one a bit later:

[ 20%] Building CXX object 
bindings/guile/CMakeFiles/gnucash-guile.dir/swig-engine.cpp.o
/home/tma/gnucash/gnucash_cvs/build_stable/bindings/guile/swig-engine.cpp: In 
function ‘GncMultichoiceOptionIndexVec scm_to_multichoices(SCM, const 
GncOptionMultichoiceValue&)’:
/home/tma/gnucash/gnucash_cvs/build_stable/bindings/guile/swig-engine.cpp:2153:28:
 error: variable ‘empty’ set but not used [-Werror=unused-but-set-variable]
         static const char* empty{""};
                            ^~~~~
cc1plus: all warnings being treated as errors

I understand that this is an autogenerated file. My version of swig is:

SWIG Version 3.0.12

Compiled with g++ [x86_64-suse-linux-gnu]

Configured options: +pcre

Best,
Herbert.

Am 02.04.23 um 17:36 schrieb john:
On Apr 2, 2023, at 1:38 AM, Maarten Bosmans <mkbosm...@gmail.com> wrote:

Op ma 27 mrt 2023 om 17:59 schreef Herbert Thoma
<herbert.th...@iis.fraunhofer.de>:
/home/tma/gnucash/gnucash_cvs/gnucash_stable/libgnucash/engine/gnc-option.cpp:448:35:
   required from here
/home/tma/gnucash/gnucash_cvs/gnucash_stable/libgnucash/engine/gnc-option-impl.hpp:331:45:
 error: variable ‘value’ set but not used [-Werror=unused-but-set-variable]
cc1plus: all warnings being treated as errors

This is fixed in my PR #1582  (
https://github.com/Gnucash/gnucash/pull/1582/commits/9a3316bea883e46737abc12d35e76e625de3c2e2
)
I still need to push a new version of that though, taking care of all
the review remarks that I got.
That along with other workarounds for deficiencies in gcc 8 & 9, is already 
committed in 
https://github.com/Gnucash/gnucash/commit/9fa2a48fe17ead2791b9481ef9ce61a2ac8ddbeb.
Regards,
John Ralls
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

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

Reply via email to