[MacPorts] #55471: Use separate portindexes for libc++ on older systems

MacPorts noreply at macports.org
Tue Dec 5 12:59:37 UTC 2017


#55471: Use separate portindexes for libc++ on older systems
-------------------------+-----------------
 Reporter:  ryandesign   |      Owner:
     Type:  enhancement  |     Status:  new
 Priority:  Normal       |  Milestone:
Component:  base         |    Version:
 Keywords:               |       Port:
-------------------------+-----------------
 All of our portindexes are generated by `mprsyncup` on a server running a
 version of macOS that uses libc++ by default. As such, all of the
 portindexes contain information that applies to systems running libc++.
 This means the portindexes are inaccurate on default installations of 10.8
 and earlier, which use libstdc++ (but are accurate for 10.8 and earlier
 systems using the configuration in LibcxxOnOlderSystems).

 Some ports may wish to offer a newer version of software (which requires
 C++11) to libc++ users while continuing to offer an older version (which
 does not require C++11) to libstdc++ users—gnome-online-accounts and
 libomp are examples. Or a port may need a different compiler, or other
 different dependencies, depending on the C++ library—rethinkdb is an
 example.

 The result of this is that, on 10.8 and earlier systems with libstdc++
 today, `port outdated` will show that e.g. libomp 5.0.0 is available, but
 when the user tries to upgrade, nothing happens, because the user already
 has the latest version of libomp that is compatible with libstdc++.

 We need to change `portindex`, to be able to simulate an alternate C++
 standard library; `mprsyncup`, to generate separate libstdc++ and libc++
 portindexes for 10.8 and earlier systems; and `port sync`, to download the
 right portindex for the chosen C++ library.

 We would need to decide what the parent directory name should be so that
 we can make equivalent changes in all the relevant places. Currently, we
 have PortIndex files in the following directories:

 {{{
 $ rsync --no-motd
 rsync://rsync.macports.org/macports/release/ports/PortIndex*
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_10_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_11_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:03 PortIndex_darwin_12_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:04 PortIndex_darwin_13_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_14_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_15_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_16_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:03 PortIndex_darwin_17_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:03 PortIndex_darwin_8_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_8_powerpc
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_9_i386
 drwxr-xr-x          4,096 2017/11/24 13:04:06 PortIndex_darwin_9_powerpc
 }}}

 It makes the most sense to me to consider the C++ library part of the
 platform, i.e. "darwin 10" (libstdc++) and "darwin 10 libc++" are two
 different platforms.

 If we agree on that, then we could put older systems' libc++ portindexes
 into e.g.:

 {{{
 PortIndex_darwin_10_libcxx_i386
 PortIndex_darwin_11_libcxx_i386
 PortIndex_darwin_12_libcxx_i386
 PortIndex_darwin_8_libcxx_i386
 PortIndex_darwin_8_libcxx_powerpc
 PortIndex_darwin_9_libcxx_i386
 PortIndex_darwin_9_libcxx_powerpc
 }}}

--
Ticket URL: <https://trac.macports.org/ticket/55471>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list