[MacPorts] #58898: libcxx bootstrapping needs a method to upgrade to the +emulatedtls variant on 10.6 and less

MacPorts noreply at macports.org
Thu May 21 01:54:30 UTC 2020


#58898: libcxx bootstrapping needs a method to upgrade to the +emulatedtls variant
on 10.6 and less
---------------------+---------------------------------------
  Reporter:  kencu   |      Owner:  jeremyhu
      Type:  defect  |     Status:  assigned
  Priority:  Normal  |  Milestone:
 Component:  ports   |    Version:
Resolution:          |   Keywords:  snowleopard leopard tiger
      Port:  libcxx  |
---------------------+---------------------------------------

Comment (by kencu):

 I have been wrapping my head around this, but I always wind up back where
 I started with circular dependencies if there are to be no manual steps.

 The simplest thing would be to make the +emulated_tls variant a default
 variant, and have Ryan build it manually one time on 10.6. Then it's in
 the archives, and can be downloaded and installed. But it's a manual step.

 It is trivial to make up a port that could either be called {{{libcxx-
 bootstrap}}} or {{{libcxx +bootstrap}}} that builds the current non-
 emulated-tls libcxx. And then the standard {{{libcxx}}} port could enable
 {{{emulated_tls}}} by default. {{{libcxx}}} could depend on {{{libcxx-
 bootstrap}}} if there is nothing at {{{/usr/lib/libc++.dylib}}}, for
 example.

 But for that to work, everything that is in the line to build libcxx would
 have also be satisfied by libcxx-bootstrap instead of just by libcxx, and
 that is a lot of ports leading all the way up to clang-9.0. It's messy.

 Alternately, we could build libcxx 7.0 using gcc7 or gcc8. We can
 bootstrap to gcc7 right now from the base OS, and to gcc8. And those
 compilers can build libcxx 7.0. Totally different than what we do now, and
 there is going to be something messy about the libcxxabi ABI linking into
 gcc I think to be managed somehow.

 I could build libcxx mostly with clang-3.4, but use gcc7 to build the
 troublesome cxa_thread_atexit.cpp file that needs a __thread supporting
 compiler. That's a bit ugly. Hard to see how that would be the best way
 forward.

 Or I could just download a fully intact, pre-build
 libcxx+universal+emulated_tls from some webserver or github repo where I
 keep it, and be done with it. That is dead simple.

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


More information about the macports-tickets mailing list