Opened 22 months ago

Last modified 8 months ago

#66927 assigned defect

boost: backport fix for context from boost181 — at Version 6

Reported by: barracuda156 Owned by: barracuda156
Priority: Normal Milestone:
Component: ports Version: 2.8.1
Keywords: powerpc, leopard, snowleopard Cc: mascguy (Christopher Nielsen), michaelld (Michael Dickens)
Port: boost

Description (last modified by mascguy (Christopher Nielsen))

Boost context has been somewhat better fixed in: https://github.com/macports/macports-ports/pull/17086 It remains broken in earlier versions.

This makes it impossible to build some ports for ppc (ex., folly).

Change History (6)

comment:1 Changed 18 months ago by ryandesign (Ryan Carsten Schmidt)

There is also some commentary on this commit requesting that the default boost version be updated for Darwin 9 and earlier.

Changing the default version of boost in the boost portgroup would change the dependencies of every port that uses the boost portgroup and does not specify the boost version, and it might cause those ports to fail to build since boost versions are inherently not backward compatible; that's the whole reason why we offer multiple boost ports.

So if we want to change the default boost version in the boost portgroup, we have to simultaneously make one of two changes in every port that uses the boost portgroup and does not specify the boost version: either revbump and verify it still builds and works with the new boost version, or modify the port to specify the old formerly-default boost version.

That would be a large amount of work to do at once, so I would be in favor of an approach where, for every port that uses the boost portgroup and does not specify the boost version, we modify them, gradually over time (for example when updating them to a new version) so that they specify the boost version. Then eventually we can remove the default boost version from the boost portgroup, ensuring that every port that subsequently uses the boost portgroup will have to specify the boost version.

comment:2 in reply to:  1 Changed 18 months ago by mascguy (Christopher Nielsen)

Cc: michaelld added
Owner: set to mascguy
Status: newassigned

comment:3 Changed 18 months ago by mascguy (Christopher Nielsen)

Replying to ryandesign:

So if we want to change the default boost version in the boost portgroup, we have to simultaneously make one of two changes in every port that uses the boost portgroup and does not specify the boost version: either revbump and verify it still builds and works with the new boost version, or modify the port to specify the old formerly-default boost version.

That would be a large amount of work to do at once, so I would be in favor of an approach where, for every port that uses the boost portgroup and does not specify the boost version, we modify them, gradually over time (for example when updating them to a new version) so that they specify the boost version. Then eventually we can remove the default boost version from the boost portgroup, ensuring that every port that subsequently uses the boost portgroup will have to specify the boost version.

Yes, compared to all of that, applying the context fix - assuming the same patch can be used verbatim (?) for 1.76 to 1.80 - is downright trivial.

So Sergey, if you want to submit a PR with that change for 1.76 to 1.80, that's certainly fine. Particularly if it only affects PPC builds.

comment:4 in reply to:  3 Changed 18 months ago by barracuda156

Replying to mascguy:

Replying to ryandesign:

So if we want to change the default boost version in the boost portgroup, we have to simultaneously make one of two changes in every port that uses the boost portgroup and does not specify the boost version: either revbump and verify it still builds and works with the new boost version, or modify the port to specify the old formerly-default boost version.

That would be a large amount of work to do at once, so I would be in favor of an approach where, for every port that uses the boost portgroup and does not specify the boost version, we modify them, gradually over time (for example when updating them to a new version) so that they specify the boost version. Then eventually we can remove the default boost version from the boost portgroup, ensuring that every port that subsequently uses the boost portgroup will have to specify the boost version.

Yes, compared to all of that, applying the context fix - assuming the same patch can be used verbatim (?) for 1.76 to 1.80 - is downright trivial.

So Sergey, if you want to submit a PR with that change for 1.76 to 1.80, that's certainly fine. Particularly if it only affects PPC builds.

We could do that, sure.

Perhaps let us try fixing ppc64 first? So that we do not need an extra PR affecting every Boost version.

  1. S. Reminder to myself and FYI: there are several fixes to backport in order for old Boost to be as usable as newer ones:
  2. Fixes for ppc (and hopefully ppc64) libcontext.
  3. Fix for fiber.
  4. Fix for multiprecision header inclusion.
  5. Fix for atomics.

All of these are PPC-only, yes. Boost 1.80 is broken with GCC, I believe, so a fix for that may be also backported from 1.81 (this is not PPC-specific).

comment:5 Changed 18 months ago by mascguy (Christopher Nielsen)

Cc: mascguy added
Owner: changed from mascguy to barracuda156

comment:6 Changed 18 months ago by mascguy (Christopher Nielsen)

Description: modified (diff)
Summary: Boost: backport fix for context from boost181 or upgrade default one to boost181?boost: backport fix for context from boost181
Note: See TracTickets for help on using tickets.