Skip to content

Conan default package id mode considered harmful#215

Merged
jonathan-r-thorpe merged 2 commits into
sony:masterfrom
garethsb:conan-boost
Nov 30, 2021
Merged

Conan default package id mode considered harmful#215
jonathan-r-thorpe merged 2 commits into
sony:masterfrom
garethsb:conan-boost

Conversation

@garethsb
Copy link
Copy Markdown
Contributor

The build-test #297 logs show that bumping Boost from 1.76.0 to 1.77.0 caused nmos-cpp-node to terminate with a segmentation fault on Ubuntu 18.04 and 20.04.

This is because by default Conan assumes semver compatibility. Boost and other C++ libraries do not meet this expectation and break ABI compatibility between e.g. minor versions. The recipes in Conan Center Index do not generally customize their package_id method to take this into account.

Conan outputs this message in the log, but it's highly misleading!

WARN: cpprestsdk/2.10.18: requirement boost/1.76.0 overridden by your conanfile to boost/1.77.0

The cpprestsdk binary package used is still one built against Boost 1.76.0. When nmos-cpp(-node) is then built against Boost 1.77.0, this results in a seg fault.

A workaround is to change Conan's default package id mode to minor_mode or a stricter mode such as recipe_revision_mode.

conan config set general.default_package_id_mode=minor_mode

I wish there were something better we could do than put this in CI and documentation, but I haven't come up with anything.

…tion fault seen with default semver_direct_mode due to incompatibility between nmos-cpp built with boost/1.77.0 linked with cpprestsdk/2.10.18 built with boost/1.76.0
@garethsb
Copy link
Copy Markdown
Contributor Author

Since the mode affects the binary package ids, this has the downside that packages cannot be downloaded from Conan Center Index and must be built locally.

Without further work, builds on GitHub Actions are all going to take a lot longer, about an hour rather than 30 minutes.

I think the solution would be to use the Conan Cache GitHub Action.

@jonathan-r-thorpe jonathan-r-thorpe merged commit 20e1000 into sony:master Nov 30, 2021
garethsb added a commit to garethsb/nmos-cpp that referenced this pull request Jan 21, 2022
…boost)

If this works out, the guidance in Dependencies.md could be updated...
garethsb added a commit to garethsb/nmos-cpp that referenced this pull request Jan 21, 2022
…boost)

If this works out, the guidance in Dependencies.md could be updated...
@garethsb garethsb deleted the conan-boost branch April 22, 2022 07:51
garethsb added a commit to garethsb/nmos-cpp that referenced this pull request Apr 28, 2022
* for build and dependencies, e.g. sony#197, sony#198, sony#207, sony#211, sony#215, sony#229, sony#230, sony#235, sony#243
* for SDP parser/generator, e.g. sony#201, sony#205, sony#219, sony#241, sony#242, sony#244
* for RQL, e.g. sony#224
* for CI tests, e.g. sony#218, sony#231, sony#239, sony#250
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants