From owner-svn-ports-all@freebsd.org Mon Sep 10 10:27:07 2018 Return-Path: Delivered-To: svn-ports-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 35D13108B260; Mon, 10 Sep 2018 10:27:07 +0000 (UTC) (envelope-from jbeich@freebsd.org) Received: from freefall.freebsd.org (freefall.freebsd.org [96.47.72.132]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "freefall.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id E1FEB7A0FD; Mon, 10 Sep 2018 10:27:06 +0000 (UTC) (envelope-from jbeich@freebsd.org) Received: by freefall.freebsd.org (Postfix, from userid 1354) id DAA66ADD6; Mon, 10 Sep 2018 10:27:06 +0000 (UTC) From: Jan Beich To: Alexey Dokuchaev Cc: svn-ports-head@freebsd.org, svn-ports-all@freebsd.org, ports-committers@freebsd.org Subject: Re: svn commit: r479222 - in head/devel: boost-all boost-libs boost-python-libs References: <201809080053.w880rArT081869@repo.freebsd.org> <20180910044521.GA90644@FreeBSD.org> Date: Mon, 10 Sep 2018 12:27:01 +0200 In-Reply-To: <20180910044521.GA90644@FreeBSD.org> (Alexey Dokuchaev's message of "Mon, 10 Sep 2018 04:45:21 +0000") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-BeenThere: svn-ports-all@freebsd.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: SVN commit messages for the ports tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 10 Sep 2018 10:27:07 -0000 Alexey Dokuchaev writes: > On Sat, Sep 08, 2018 at 12:53:10AM +0000, Jan Beich wrote: > >> New Revision: 479222 >> URL: https://svnweb.freebsd.org/changeset/ports/479222 >> >> Log: >> devel/boost-all: switch to C++17 on FreeBSD >= 11.2 > > Why? In order to keep system Boost usable for most consumers and avoid missing on new features on future upgrades. C++17 usage in ports is growing. If something starts to depend on C++17-only feature in Boost it'd require using non-default flavor but without variable dependencies depending on default and non-default conflicting flavor is impossible. > >> +# XXX Drop conditional after 10.4 EOL as both libstdc++ 7 and libc++ 6 >> +# have near complete C++17 support. >> +.if exists(/usr/lib/libstdc++.so) || exists(/usr/include/c++/v1/__undef_macros) >> +USES+= compiler:c++17-lang >> +USE_CXXSTD= gnu++17 >> +.else >> USES+= compiler:c++14-lang >> USE_CXXSTD= gnu++14 >> +.endif > > Shouldn't things like Boost use the least supported version by default? The opposite. Boost built against older C++ standards may be unusable in ports that use it with later standards. Bumping to C++17 is simply a continuation of C++03 -> C++11 -> C++14 change. https://github.com/DragonFlyBSD/DeltaPorts/pull/690 # C++11 https://github.com/boostorg/system/issues/24 # C++14 https://lists.boost.org/Archives/boost/2018/08/242885.php # bikeshed https://lists.boost.org/Archives/boost/2018/08/242770.php # ABI discussion https://stackoverflow.com/questions/46746878/is-it-safe-to-link-c17-c14-and-c11-objects # libstdc++ ABI