Opened 6 years ago

Last modified 5 years ago

#56294 closed update

boost: update to 1.69.0 — at Version 14

Reported by: michaelld (Michael Dickens) Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version:
Keywords: haspatch maintainer Cc:
Port: boost

Description (last modified by michaelld (Michael Dickens))

Boost 1.69.0 is out as of 12/12/2018.

Because the Portfile currently uses "--layout=tagged", the resulting libraries names change from the Boost 1.68.0 to include an abbreviated architecture (e.g., "x64" for Intel 64-bit; "p32" for PPC 32-bit); thus for example, the prior naming might be "libboost_system-mt.dylib", while the new naming is "libbboost_system-mt-x64.dylib". This slight change combined with a defect in how CMake works with Clang results in the FindBoost.cmake script failing to detect the new library names with significant coercion.

This issue is resolved by moving to "--layout=system", which reverts the library names to just the minimum for each component; for example here "libboost_system.dylib".

Most of the changes to this latest Boost itself seem to be compatible with the ports I've tried building with it, once the Portfile is fixed to properly detect the changed name. That said, the 10 or so ports I checked pale compared with the total number of ports that depend on Boost (some 250 in total).

Verifying that "enough" of these ports build and function properly "enough" is an arduous task. We in MacPorts have yet to determine a reasonable approach to updating Boost, so the version provided in MacPorts regularly lags the latest release. Please be patient.

Change History (16)

Changed 6 years ago by michaelld (Michael Dickens)

Attachment: boost_1.67.0_0.diff added

comment:1 Changed 6 years ago by mf2k (Frank Schima)

Owner: set to ryandesign
Status: newassigned

comment:2 Changed 6 years ago by michaelld (Michael Dickens)

OK so there are some issues I'm coming upon with changes to boost::thread and boost::posix_time ... hopefully it's just slopping programming on the project's part. Or maybe the Boost folks fixed some type conversation issues. I'll work on fixing & verify back backward compatibility with (at least) boost 1.66.0.

comment:3 Changed 6 years ago by elfprince13 (Thomas Dickerson)

There are also some changes in the interaction between CMake and Boost::python, which may be non-backwards compatible.

comment:4 Changed 6 years ago by michaelld (Michael Dickens)

Description: modified (diff)
Summary: boost: update to 1.67.0boost: update to 1.68.0

comment:5 Changed 6 years ago by michaelld (Michael Dickens)

Given the ~4 months for projects to fix their issues with Boost 1.67.0, and possible more issues now with 1.68.0, let's test this release with ports that require Boost to make sure the vast majority work. I would like to get this updated Boost in place sooner rather than later, assuming compatibility is good.

comment:6 Changed 6 years ago by mf2k (Frank Schima)

Keywords: haspatch maintainer added

comment:7 Changed 6 years ago by michaelld (Michael Dickens)

Updated the patch to reset the revision to 0.

comment:8 Changed 6 years ago by ryandesign (Ryan Carsten Schmidt)

I'm not working on this; go ahead with what you think is best.

Changed 6 years ago by michaelld (Michael Dickens)

Attachment: boost_1.66.0_to_1.68.0.diff added

comment:9 Changed 6 years ago by michaelld (Michael Dickens)

Updated the patch to remove part of a patchfile incorporated into Boost master for +python3X only.

comment:10 Changed 6 years ago by michaelld (Michael Dickens)

One major ABI naming change: the Boost::Python library is renamed to include the major.minor Python version but with no "." ... so, "27" for Python 2.7 and "36" for Python 3.6 (for 2.,7 was "libboost_python-mt.dylib" is now "libboost_python27-mt.dylib"). Not sure if this is a change from 1.67.0 or 1.66.0 ... but it's important since any project using CMake to find Boost must now specify "python27" or "python36" as a component to look for, not just "python" or "python2" or "python3"; guessing other build systems will be impacted as well.

comment:11 Changed 6 years ago by michaelld (Michael Dickens)

The ABI name change was in Boost 1.67.0 ... so, projects might already be updating to check for it. Not sure where CMake is on this change.

comment:12 Changed 6 years ago by michaelld (Michael Dickens)

CMake is aware of this change: https://gitlab.kitware.com/cmake/cmake/blob/master/Modules/FindBoost.cmake#L43 . One just has to use the correct module name, which now depends on which version of Boost is installed ... so, some logic needs to be in place for projects looking for any Boost Python-based ABI (e.g., "python" or "numpy"). Fun fun!

comment:13 Changed 5 years ago by luzpaz

FYI 1.69.0 is latest stable

comment:14 Changed 5 years ago by michaelld (Michael Dickens)

Description: modified (diff)
Summary: boost: update to 1.68.0boost: update to 1.69.0
Note: See TracTickets for help on using tickets.