> On 6 May 2018, at 11:28 am, Ryan Schmidt <[email protected]> wrote: > > >> On May 6, 2018, at 05:27, Chris Jones wrote: >> >>> On 6 May 2018, at 11:19 am, Ryan Schmidt wrote: >>> >>>> On May 6, 2018, at 05:18, Rainer Müller wrote: >>>> >>>>> On 2018-05-06 12:07, Ryan Schmidt wrote: >>>>> >>>>>> On May 5, 2018, at 19:36, Craig Treleaven wrote: >>>>>> >>>>>> A couple of times recently, I’ve noticed boilerplate in ports that >>>>>> require C++14. After including the compiler_blacklist_versions >>>>>> portgroup, they then do some gymnastics like: >>>>>> >>>>>> compiler.blacklist *gcc-3.* *gcc-4.* {*gcc-5.[0-3]} \ >>>>>> {clang < 800} macports-clang-3.4 >>>>>> macports-clang-3.5 macports-clang-3.6 macports-clang-3.7 >>>>>> >>>>>> Would it not be easier to use and maintain if we had some shorthand >>>>>> definitions. Maybe something like: >>>>>> >>>>>> compiler.blacklist ${min_cxx14} >>>>>> >>>>>> “min_cxx14” would be defined in the portgroup and then expand to the >>>>>> above...assuming the above actually does a good job of blacklisting >>>>>> compilers that don’t support C++14! >>>>>> >>>>>> A major advantage is that if our list of non-C++14 compilers ever >>>>>> changes, it only needs to be updated in one spot. >>>>>> >>>>>> I suspect there would be a few other shorthand lists that could be >>>>>> pre-defined. >>>>>> >>>>>> Thoughts? >>>>> >>>>> Yes, we should have support for specifying the required language >>>>> standard(s) in Portfile, so that MacPorts could then select a compatible >>>>> compiler. >>>>> >>>>> Until we have that, you need to blacklist incompatible compilers. >>>>> >>>>> If you require C++11, include the cxx11 1.1 portgroup which will do >>>>> what's needed for you, including blacklisting incompatible compilers and >>>>> ensuring the right C++ standard library is used. >>>>> >>>>> If you require C++14, include the cxx11 1.1 portgroup and additionally >>>>> use "compiler.blacklist-append {clang < 602}". >>>> >>>> This does not seem very intuitive. Maybe that should be put into a >>>> simple cxx14 port group acting as a thin wrapper as shown below? >>>> >>>> # cxx14-1.1.tcl >>>> PortGroup cxx11 1.1 >>>> compiler.blacklist-append {clang < 602} >>> >>> I didn't say it was intuitive; I just said that's how it is right now. >>> >>> Such a portgroup could be created, but I dislike the proliferation of >>> portgroups. >> >> Agreed. We would already now require additional cxx14 and cxx17 portgroups, >> with more coming in the future (gcc8 has provisional support for the next >> cxx2y standard.). It just doesn’t scale well. >> >> We should, I think, instead look towards instead migrating the functionality >> to do this from cxx11 into a new (better named) group that can handle all >> the standards going forward. Like the languages group Marcus previously >> mentioned. Then cxx11 should be retired and ports moved over to this new >> group. > > As I've said in a different thread some months ago, I think it should be in > base.
That would also make sense.
