A bit of feedback trying to install (compile) wesnoth from source - a few suggestions to improve this part of wesnoth

Having trouble with the game? Report issues and get help here. Read this first!

Moderators: Forum Moderators, Developers

Forum rules
Before reporting issues in this section, you must read the following topic:
Post Reply
shevegen
Posts: 195
Joined: June 3rd, 2004, 4:35 pm

A bit of feedback trying to install (compile) wesnoth from source - a few suggestions to improve this part of wesnoth

Post by shevegen » October 12th, 2018, 1:30 pm

Hello wesnoth-devs,

Some months ago I was able to compile wesnoth on my first try (on slackware); wesnoth-1.14.2 or something like.

Since then I did some changes on my system and right now I can not compile wesnoth. The reason is my old
nemesis aka ... boost.

Anyway, I did lots of changes on my system and somehow ended up breaking boost. No problem, I will sort
this out eventually, but here I have a few suggestions to make for the wesnoth team to improve some
things related to the wesnoth project;
boost is merely one example of more.

(1) I am trying to see instructions how to get wesnoth to install, which includes compiling the source.
Yes, not everyone wants to do the latter, or can do so, but I think a project should provide instructions
for all possibilities, as part of the documentation.

The first page I looked at was this one here:

https://wiki.wesnoth.org/Project

The page is good, but it misses a link towards building/installation. So I would like to suggest to add such
a link for people who want to find out more about building or installing the project in general. So just an
additional link.

The wiki actually has more information; and I found this via an in-wiki search there:

https://wiki.wesnoth.org/CompilingWesnoth

At libboost we have this:

"libboost >= 1.50.0 (https://www.boost.org/)

If your distro splits boost, you need: boost_filesystem, boost_iostreams, boost_locale, boost_random, boost_regex, boost_asio, boost_program_options, boost_system, boost_thread.
You need gzip and bzip2 support in boost_iostreams
You must use the icu backend of boost_locale"

But I am not sure that boost-1.68.0 works. Let me show you the error:
[ 77%] Linking CXX executable ../wesnothd
CMakeFiles/wesnothd.dir/server/game.cpp.o:game.cpp:function boost::system::error_category::std_category::equivalent(std::error_code const&, int) const: error: undefined reference to 'boost::system::detail::generic_category_ncx()'
CMakeFiles/wesnothd.dir/server/game.cpp.o:game.cpp:function boost::system::error_category::std_category::equivalent(std::error_code const&, int) const: error: undefined reference to 'boost::system::detail::generic_category_ncx()'
CMakeFiles/wesnothd.dir/server/game.cpp.o:game.cpp:function boost::system::error_category::std_category::equivalent(std::error_code const&, int) const: error: undefined reference to 'boost::system::detail::generic_category_ncx()'
CMakeFiles/wesnothd.dir/server/game.cpp.o:game.cpp:function __static_initialization_and_destruction_0(int, int) [clone .constprop.393]: error: undefined reference to 'boost::system::detail::system_category_ncx()'
CMakeFiles/wesnothd.dir/server/game.cpp.o:game.cpp:function boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const: error: undefined reference to 'boost::system::detail::generic_category_ncx()'
CMakeFiles/wesnothd.dir/server/player_connection.cpp.o:player_connection.cpp:function _GLOBAL__sub_I__ZNK8wesnothd13player_record8get_gameEv: error: undefined reference to 'boost::system::detail::system_category_ncx()'
CMakeFiles/wesnothd.dir/server/server.cpp.o:server.cpp:function boost::asio::detail::object_pool<boost::asio::detail::epoll_reactor::descriptor_state>::destroy_list(boost::asio::detail::epoll_reactor::descriptor_state*) [clone .isra.319]: error: undefined reference to 'boost::system::detail::system_category_ncx()'
CMakeFiles/wesnothd.dir/server/server.cpp.o:server.cpp:function wesnothd::server::setup_fifo(): error: undefined reference to 'boost::system::detail::system_category_ncx()'
collect2: error: ld returned 1 exit status
make[2]: *** [src/CMakeFiles/wesnothd.dir/build.make:268: wesnothd] Error 1
make[1]: *** [CMakeFiles/Makefile2:264: src/CMakeFiles/wesnothd.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
I'll make a few changes... re-compiling boost in particular, a somewhat older version.

Now ... it is NOT the responsibility of the wesnoth team to ensure that all versions of
boost work, I understand this part. Still this leads me to a specific suggestion to be made,
which is more general:

(2) Perhaps there is a way to automatically keep track of the dependencies in some
extra file?

What I would love to see is if the wesnoth team could not only tell us about the
minimum version, but also the maximum version for which something has been
tested
. I will explain why I think this would be useful:

- Sometimes the API of other projects changes, I guess you all know that. OpenSSL
for example is currently in the process of changing from 1.0.x to 1.1.x and some
things are changing there. This may also be the case with boost. I am not keeping
track of boost that much really but I guess more recent versions of boost are behaving
differently from older versions.

Now if the information would exist somewhere that these boost versions are working
on wesnoth 1.14.x, this would help me immensely because I can easily install
different versions of boost. But right now I am not sure if all boost versions higher
than the listed ones there will work. Is anyone able to understand what I am trying
to say here? Mostly I'd love to see a way to know which is a maximum version,
so not only the minimum version.

This is not necessary for all pre-requisites, mind you; but boost in particular can be
so hugely annoying that I think it would really help to know which versions of boost
are supported.

In theory this could of course happen on the wiki pages, but in practice, I think it
may be simpler if this information is kept in a file, which gets updated, and then
can be used for the wiki for automatic extraction rather than manual updating
(in the long run; or I could check on that file easily, via ruby; I batch-compile
all software from source on my system via ruby scripts, so it is easy to make
changes here). If i know the maximum version for e. g. boost that other
developers managed to compile wesnoth with
, then I know that something
is wrong on my system rather than with the wesnoth codebase itself. Hopefully
I am able to explain why I would like to have this information - I am never sure if
my english is up to the job of describing a problem successfully ... :)

Hmm. I have more suggestions/ideas perhaps but I don't want to make this note
too long.

gfgtdf
Developer
Posts: 1090
Joined: February 10th, 2013, 2:25 pm

Re: A bit of feedback trying to install (compile) wesnoth from source - a few suggestions to improve this part of wesnot

Post by gfgtdf » October 12th, 2018, 2:04 pm

We usually try to make wesnoth buildable with all boost versions newer than the one speicified (not sure about other dependencies), and at least for the windows build i know for sure that it does successfully build with boost 1.68 since this is what our windows ci uses.

Also note that the erro you got is from wenosthd that is, the multiplayer server which is not really needed to play the game unless you want to play with others on a local network.
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.

Post Reply