boost: Remove execution monitors from unit_test_framework dependencies - #30932
boost: Remove execution monitors from unit_test_framework dependencies#30932harmenwierenga wants to merge 1 commit into
Conversation
uilianries
left a comment
There was a problem hiding this comment.
@harmenwierenga Hello! Thank you for pushing this fix.
That's something interesting. Your changes look correct, there is no interdependency between those libraries: https://github.com/boostorg/test/blob/boost-1.89.0/build/Jamfile.v2
I also checked Boost.Test 1.55 and 1.91 and both follow same rule under its b2 and cmake.
Also, checking with otool, it proves the case too:
$ otool -L libboost_unit_test_framework.dylib
libboost_unit_test_framework.dylib:
@rpath/libboost_unit_test_framework.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 2000.63.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1356.0.0)
$ otool -L libboost_prg_exec_monitor.dylib
libboost_prg_exec_monitor.dylib:
@rpath/libboost_prg_exec_monitor.dylib (compatibility version 0.0.0, current version 0.0.0)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 2000.63.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1356.0.0)
That rule has been there since the beginning, +6 years ago. Interesting how it only came up now. Let's wait for the CI result.
There was a problem hiding this comment.
LGTM.
Boost.Test builds those libraries, but they are independent. This is clear not only in its b2 recipe (consumed by Conan), but also reflected in the cmake recipe as well:
- https://github.com/boostorg/test/blob/boost-1.92.0/build/Jamfile.v2#L87
- https://github.com/boostorg/test/blob/boost-1.92.0/build/CMakeLists.txt#L98
Tested after building using otool (see previous comment).
|
Thank you for checking it Uilian! |
Summary
Changes to recipe: boost/all
Motivation
fixes #30926
Details
The boost recipe has a complicated mechanism for discovering the dependencies between different Boost libraries. The CMakeDeps generator forwards these dependencies to consumers when linking to a shared version of Boost.
I removed the manually added lines to rebuild-dependencies.py that added prg_exec_monitor and test_exec_monitor to the dependencies of unit_test_framework. These are three different top level drivers, not dependencies of each other.
I managed to run the rebuild-dependencies.py script after the change. This generates the dependencies/yml files for all boost versions. It turns out that there were also manual edits to these files that were committed to this repo, so I kept those differences with the generated result, only removing the two execution monitors.
The local test consists of the same diff applied to our copy of the boost recipe in https://github.com/Deltares/Delft3D/tree/main/conan/recipes/boost
Add a 👍 reaction to pull requests you find important to help the team prioritize, thanks!