Open gdt opened 6 days ago
Likely this was a latent bug, and expressed because of newer boost. The issue is that pcl_visualizer.cpp
declares
unsigned int digest[5];
and passes that to digest.sha1. However, that takes a reference to an array of 20 unsigned chars. At best this is improper type conversion. It also assumes that an int is int32_t, which while true on many CPUs is not true on e.g. alpha.
A fix almost certainly involves treating the sha1 digest as 20 bytes, and not pretending it is a smaller number of larger types.
Hi, PCL 1.14.1 was released in May, while Boost 1.86.0 was released in August. That is why they do not work together. The PCL master branch however does work with Boost 1.86.0. The relevant commits are: https://github.com/PointCloudLibrary/pcl/commit/4d0a15bb7bb85d304a7c1f7e2a4c5b5ca58cbb10 https://github.com/PointCloudLibrary/pcl/commit/c6bbf02a084a39a02d9e2fc318a59fe2f1ff55c1
To my knowledge, some other package managers (e.g. vcpkg) apply patches to their ports in cases like this one. Perhaps that is an option in pkgsrc as well. The next PCL release is planned for December 2024 or early 2025, by the way. I hope that helps.
I found one of the commits but missed the other. yes, packaging systems often pull up fixes. And I realize that there is no release newer than the latest boost release. But, I think that if a project uses a dependency and that dependency is unstable, then there needs to be a prompt release when the project's latest release doesn't build with the latest release. I also realize that's work, but my feeling is that this work is part of the downside of using boost and presumably balanced by the goodness of doing so.
Apparently I'm off about NetBSD/alpha being ILP64, but the point remains that C does not require int to be 4 bytes.
Describe the bug
1.14.1 (the latest release,according to github) fails to build with boost 1.86.0. Because the nature of packaging systems is to carry one version of each package, it's necessary for every package to have a release that will build with the latest release of all dependencies.
pkgsrc recently got boost 1.86.0, and now the pcl build is failing:
Context
I'm building pcl in the context of pkgsrc, in a way that worked before. I had a successful build on September 19, with boost 1.85.0. This is on NetBSD 10 amd64, but the error hints at boost having an API change.
Expected behavior
The latest release builds with the latest release of boost.
Current Behavior
See build failure bove.
To Reproduce
Obtain pkgsrc from pkgsrc.org and build pcl.
Your Environment (please complete the following information):