On 23 Aug 2019, at 21:00, Joshua Root wrote:

Bill Cole wrote:
So it's that time of the month: time for a port
{reclaim,selfupdate,upgrade outdated} cycle on my Snow Leopard machine,
which has a stable working "LibcxxOnOlderSystems" setup.

Or at least, it HAD a stable working "LibcxxOnOlderSystems" setup. Now,
upgrades are broken because ultimately everything wants to upgrade
clang-8.0 which means rebuilding cmake which for no reason I can make
sense of requires clang-3.4 which wants whatever 'ncurses-botstrap' is. Note that I have a wortking and up-to-date installation of ncurses. I'm
having apparently initial success from doing a 'port -n upgrade
outdated' but that makes me a bit nervous...

This new flavor of breakage appears to have been instigated by commit
640b7e0aa8710d26cd0af15bde29bb6290ad6b20, which inexplicably sets
$prefix to a non-existent directory for bootstrapping libcxx even if
libcxx is already installed and working. It's not entirely clear to me
how seemingly everything ultimately ends up tryting to do that as a
dependency, but apparently it is rooted in an update to clang-8.0.

Before making the recent commits, I tested installing all of the above
on a 10.6 VM running macports-base master and configured to use libc++.
I admit I did not test with 2.5.4 modified according to the
LibcxxOnOlderSystems instructions. So there's probably some difference
in what those instructions do vs what 2.6.0 will do.

It is also possible that the organic evolution of my environment has made it diverge from any norm, but it had been pretty quiet for many months. The worst problems I've had with MP recently are ports bypassing ccache and the general nuisance of needing to build everything from source.

In any case, "doesn't build" isn't enough information to do anything
about it; please file a ticket and attach the log.

See https://trac.macports.org/ticket/58876

I thought the problem was simply a failure to recognize a pre-existing working environment of ports linked to libc++, but the closer I look at it, the less I think I understand about it...

The reason for the *-bootstrap ports is that 10.6 doesn't come with
libc++. So you need to be able to build a compiler capable of building
libc++, while only using the system's libstdc++. That compiler is
clang-3.4, and it depends on a number of ports that use C++ and have
other dependents, so you'd want them to be using libc++. Hence the ports
like ncurses-bootstrap link with libstdc++ and install in a different
location so that the normal ncurses port can be installed too.

I understand that would be needed if you're bootstrapping a libc++ world but *I think* I've already got a working libc++ compiler world:

# port installed llvm* clang*
The following ports are currently installed:
  clang-3.4 @3.4.2_12+analyzer+assertions (active)
  clang-5.0 @5.0.2_3+analyzer+defaultlibcxx+emulated_tls (active)
  clang-6.0 @6.0.1_2+analyzer+defaultlibcxx+emulated_tls (active)
clang-8.0 @8.0.0_0+analyzer+defaultlibcxx+emulated_tls+libstdcxx (active)
  clang_select @2_0 (active)
  llvm-3.4 @3.4.2_12+assertions (active)
  llvm-5.0 @5.0.2_0 (active)
  llvm-6.0 @6.0.1_0 (active)
  llvm-8.0 @8.0.0_0+emulated_tls (active)
  llvm_select @2_0 (active)

# port select clang
Available versions for clang:
        mp-clang-3.4
        mp-clang-5.0
        mp-clang-6.0
        mp-clang-8.0 (active)
        none

# port select llvm
Available versions for llvm:
        mp-llvm-3.4
        mp-llvm-5.0
        mp-llvm-6.0
        mp-llvm-8.0 (active)
        none


--
Bill Cole
[email protected] or [email protected]
(AKA @grumpybozo and many *@billmail.scconsult.com addresses)

Reply via email to