Boost: what to do about it?

Michael Dickens michaelld at macports.org
Thu Dec 17 16:23:52 UTC 2020


In MacPorts, "boost" is currently at 1.71.0. There are traditionally 3 Boost releases per year: late April, mid August, and early December. The current release of 1.75.0 was on December 11, 2020 < https://www.boost.org/users/history/version_1_75_0.html >.

Boost is a challenging port to get updated. The API changes regularly which breaks backwards compatibility. It takes time even for actively-in-development ports to get working with these releases; and older ports that are not actively in development will just fail eventually because the updated Boost API is so different. We can't just update the "boost" port because it breaks other ports; reliably; potentially for weeks if not months until fixes are in place. Some ports will of course work without modification; but many will not. Some of those ports are not trivially updated to work with newer Boost, whether by us directly or via upstream fixes. These reasons are why Boost is stuck where it is for such a long time.

Prior PRs have failed because too many boost-dependent ports could not be updated, and it would take too much aggregate time to do all of this work -- and so some of the ports updated in the PR get stale & need to be rebased, which takes even more time ... just not enough time in the day / week / month to get all of this done!

I don't know what the ideal solution here is, hence this email to start a discussion. What I do know is that -something- has to change, since MacPorts can't keep up with current Boost releases in the current way we handle the Boost ports ("boost" and "boost169").

The best solution I've been able to come up with is to make new boostXYZ ports that are installable in parallel: boost169 already exists, as noted; I don't have it installed yet, but it's on my list to do so, to try to figure out the right way to do such parallel installs. We would then move the current "port:boost" to "port:boost171" and change the dependency for all ports that depend on it. Then, we can add in Boost 1.72 / 73 / 74 / 75, and any port that can be updated to newer Boost has the option to be updated; and, also, all future Boost releases will be simple to add in as a new port.

The primary downside of just having boostXYZ is keeping those older Boost versions building on newer macOS and newer compilers ... but, this is almost always challenging anyway, so I don't see this is a new issue.

What does the MacPorts-hive think here? I should have some time in the coming month or so to do this work; I'd like to have some general agreement as to what the work should be. - MLD


More information about the macports-dev mailing list