Boost logo

Boost :

Subject: [boost] Fw: Mysterious Boost.System-related errors when running Beast tests
From: Peter Dimov (lists_at_[hidden])
Date: 2018-05-05 12:10:23


The story starts with

https://travis-ci.org/vinniefalco/beast/jobs/375049193

which gives the error

dyld: Symbol not found: __ZN5boost6system6detail19system_category_ncxEv
  Referenced from:
/Users/travis/build/vinniefalco/boost-root/bin.v2/libs/beast/test/beast/core/clang-darwin-4.2.1/debug/threadapi-pthread/threading-multi/fat-tests
  Expected in: /usr/local/lib/libboost_system.dylib

boost::system::detail::system_category_ncx is a new function (in develop),
and careful reading of the above reveals that the compiler is trying to link
to a preinstalled libboost_system.dylib, in /usr/local/lib.

Looking at the log, Boost.System is not even being built. This is odd; the
Beast root Jamfile contains

    <library>/boost/system//boost_system

(at https://github.com/boostorg/beast/blob/develop/Jamfile#L78)

but even if it didn't, it also links to Filesystem, which _is_ being built,
and Filesystem also depends on System in its build/Jamfile:

https://github.com/boostorg/filesystem/blob/develop/build/Jamfile.v2#L29

So Boost.System should be built, but it isn't. Its Jamfile hasn't been
touched in 10 years:

https://github.com/boostorg/system/blob/develop/build/Jamfile.v2

In addition, there's not even a `mklink-or-dir boost/system` in the log,
even though the link must be created because the new headers are being used
(this could be a separate issue).

The Linux/g++ job, https://travis-ci.org/vinniefalco/beast/jobs/375049187,
also doesn't seem to build Boost.System, but it works for some reason.

When I try `b2 libs/beast/test` on Windows, with msvc-14.1, Boost.System is
being built, in the very beginning:

...patience...
...patience...
...patience...
...found 6992 targets...
...updating 1090 targets...
link.hardlink ..\..\boost\utility\string_view.hpp
Hardlink created for ..\..\boost\utility\string_view.hpp <<===>>
..\utility\include\boost\utility\string_view.hpp
compile-c-c++
..\..\bin.v2\libs\beast\test\beast\core\type_traits.test\msvc-14.1\debug\threadapi-win32\threading-multi\type_traits.obj
type_traits.cpp
compile-c-c++
..\..\bin.v2\libs\beast\test\beast\core\type_traits.test\msvc-14.1\debug\threadapi-win32\threading-multi\main.obj
main.cpp
compile-c-c++
..\..\bin.v2\libs\system\build\msvc-14.1\debug\threading-multi\error_code.obj
error_code.cpp
msvc.link.dll
..\..\bin.v2\libs\system\build\msvc-14.1\debug\threading-multi\boost_system-vc141-mt-gd-x32-1_66.dll

(The 1.66 version instead of 1.68 was caused by a typo in the superproject
which is now fixed.)

When I try the same on Ubuntu Trusty, the result is the same as on Travis;
no `mklink-or-dir boost/system`, no building of Boost.System, yet everything
compiles and works, and I don't have a preinstalled Boost on my VM.

It makes no sense at all.

Does anyone have any ideas what might be happening here?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk