Switching cxx_stdlib for C++11 on legacy macOS (was: Re: [GSoC] migration)
Ryan Schmidt
ryandesign at macports.org
Mon Sep 4 08:47:42 UTC 2017
On Sep 2, 2017, at 11:25, Rainer Müller wrote:
> The following goes beyond your GSoC project, but I think it fits into this
> discussion. Back in May, I published an experiment on my GitHub repo that I had
> lying around. This adds functionality to stores the cxx_stdlib option in
> registry, such that 'port outdated' will consider ports as outdated if the
> registry entry does not match the cxx_stdlib option in macports.conf.
Thanks Rainer, I didn't remember this.
> This was originally written to support switching the cxx_stdlib from libstdc++
> to libc++ on old releases of OS X in order to support C++11. However, I
> personally lost interest to support legacy systems any longer and do not run any
> of them any more.
>
> https://github.com/raimue/macports-base/commit/c4386f8c5be01e3f8eeba9e351373df860d9d8ab
>
> WARNING: Do not install this commit/branch over your regular prefix as
> it will upgrade the SQLite registry.db and make it incompatible with
> MacPorts 2.4.x or master!
>
> I am not sure how useful this experiment is yet, because this approach
> still has a number of problems and shortcomings:
>
> * show stopper: cxx_stdlib is stored for all ports, not only those
> actually linking against the C++ stdlib
I don't consider this a show stopper; I think it's fine to store cxx_stdlib for all ports, even non-C++ ports. I consider cxx_stdlib basically part of the platform/version, and we store that for all ports, even those that don't change how they build on different platforms/versions.
> * cxx_stdlib cannot be changed separately for a single port
> This might be necessary for some ports that want to link against
> system frameworks and do not link against anything else. Such a port
> is now always be considered outdated.
Yeah I would want to fix this. There are already several ports that do this and there will be more.
> * I did not know/think of libstdc++ vs. macports-libstdc++
I also don't know how to think about that.
> * archivefetch does not yet respect cxx_stdlib in any way
Yeah that would need adjustment, based on how we decide to differentiate libc++ archives from libstdc++ archives.
> For some of these problems, I don't know how they should be solved,
> especially the first show stopper. But maybe this helps to get the ball
> rolling a bit more.
More information about the macports-dev
mailing list