#67811 closed defect (fixed)

wesnoth @1.16.9 build fails with gcc: error: 'quick_exit' is not a member of 'std'

Reported by: barracuda156 Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Low Milestone:
Component: ports Version: 2.8.1
Keywords: Cc:
Port: wesnoth

Description

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_games_wesnoth/wesnoth/work/wesnoth-1.16.9/src/serialization/schema/type.cpp:38:36: error: 'monostate' in namespace 'std' does not name a type
:info:build    38 |         bool operator()(const std::monostate&) const
:info:build       |                                    ^~~~~~~~~

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_games_wesnoth/wesnoth/work/wesnoth-1.16.9/src/gui/dialogs/loading_screen.cpp:185:22: error: 'quick_exit' is not a member of 'std'
:info:build   185 |                 std::quick_exit(0);
:info:build       |                      ^~~~~~~~~~

After the first error the build proceeds further, failing only after the second, much later.

  1. S. I had to use Boost 1.81 due to a need for coroutine, but apparently the error is not due to Boost version.

Change History (3)

comment:1 in reply to:  description Changed 14 months ago by ryandesign (Ryan Carsten Schmidt)

Replying to barracuda156:

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_games_wesnoth/wesnoth/work/wesnoth-1.16.9/src/serialization/schema/type.cpp:38:36: error: 'monostate' in namespace 'std' does not name a type
:info:build    38 |         bool operator()(const std::monostate&) const
:info:build       |                                    ^~~~~~~~~

According to this one must #include <variant> to get std::monostate. Does adding that to type.cpp help?

:info:build /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_macports_release_tarballs_ports_games_wesnoth/wesnoth/work/wesnoth-1.16.9/src/gui/dialogs/loading_screen.cpp:185:22: error: 'quick_exit' is not a member of 'std'
:info:build   185 |                 std::quick_exit(0);
:info:build       |                      ^~~~~~~~~~

There is a similar report here which was closed without being fixed.

We have successful builds on the buildbot on 10.7 and later. According to this macOS libc didn't implement std::quick_exit as recently as March 2020. Perhaps for that reason, six years ago this commit disabled the use of std::quick_exit on macOS, but half an hour later this commit re-enabled the use of std::quick_exit on macOS when using libstdc++, which you are since you're using gcc.

These are upstream issues that should be reported to the developers.

comment:3 Changed 13 months ago by ryandesign (Ryan Carsten Schmidt)

Resolution: fixed
Status: assignedclosed
Summary: wesnoth build fails with gcc: error: 'quick_exit' is not a member of 'std'wesnoth @1.16.9 build fails with gcc: error: 'quick_exit' is not a member of 'std'
Note: See TracTickets for help on using tickets.