[MacPorts] #69351: v8-8.3: Update and fix livecheck

MacPorts noreply at macports.org
Sat Feb 17 01:08:44 UTC 2024


#69351: v8-8.3: Update and fix livecheck
-------------------------+--------------------------
  Reporter:  ryandesign  |      Owner:  barracuda156
      Type:  update      |     Status:  assigned
  Priority:  Normal      |  Milestone:
 Component:  ports       |    Version:
Resolution:              |   Keywords:
      Port:  v8-8.3      |
-------------------------+--------------------------

Comment (by barracuda156):

 Replying to [ticket:69351 ryandesign]:

 Let me elaborate a bit.

 Initial choice of the version for the port was motivated by feasibility to
 support PowerPC builds. There was no reason to restrict the port to
 PowerPC, but I wanted to avoid having multiple versions of the port, to
 keep it maintainable. That still made sense, since `R`, for example, does
 not require latest versions of V8 and seems to support pretty archaic ones
 (`R-V8` builds on x86_64 and passes tests with our existing version of
 V8-8.3).

 While we technically ''can'' keep ppc pegged to the current version and
 update 64-bit archs to 8.3.129, it makes a better sense to just add a port
 for 8.9 (or whatever chosen) instead. I actually wanted to do that, but it
 did not work out-of-the-box on arm64, and I had no time to fix it.
 (I am fine if anyone wants to update 8.3 for x86_64 and arm64 to its
 latest 8.3.x, but I am not planning to do that myself.)

 Notice also, there is a PR to update it to 11.x:
 https://github.com/bnoordhuis/v8-cmake/pull/66

 P. S. Re PowerPC: there are technical reasons why going beyond 8.3 appears
 problematic. There were two attempts to fix V8 for `ppc` (not on macOS,
 but on AIX? and Linux), which I know of, one for NodeJS 12 (which has 7.x
 V8, I think), and one for V8 as such, around 8.2.x if not 8.1.x. I think
 upstream did some work on it back then, but eventually only the half got
 merged. Upstream code in the master has a broken implementation (to an
 extent it cannot possibly build, I believe), and even the second, unmerged
 PR, was incomplete.

 The code changes between 8.3 and 8.4 quite substantially, and given
 complexity and even size, porting those patches (and fixes for those
 patches) is rather painful. I started with NodeJS 12 and stupidly wasted
 more time on forward-porting fixes for the build trying to catch up with
 their mad release schedule than on anything else :) Eventually I got
 NodeJS 20 building – but failing at linking apparently due to 32-bit
 address-space limit. So I came to a conclusion I rather try finding time
 to ensure this old version of V8 actually works – the build itself is
 fixed, but more work needed on code coherency.

 To make things worse, it is not merely code structure changed after 8.3.x
 (I think there was quite specific reason to use the version I picked,
 likely one of the following); there were two major changes which broken
 specifically PowerPC implementation: addition of VSX instructions (sure
 enough, without making it conditional appropriately) and a PR introducing
 “compressed pointers” (which distorted logic of fallbacks introduced
 earlier by those Linux folks). I might have had even some early 8.4.x
 building or almost building, but reverted back to a slightly earlier
 version with a less broken code and therefore requiring less patches.

-- 
Ticket URL: <https://trac.macports.org/ticket/69351#comment:2>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list