Fw: Mysterious Boost.System-related errors when running Beast tests
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?
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.
Examining the boost/ and bin.v2/ directories however reveals that Boost.System has been symlinked and built. It almost looks like all lines containing 'system' are hidden from the b2 output, but cursory examination shows no such logic there.
participants (1)
-
Peter Dimov