From owner-freebsd-ports@FreeBSD.ORG Fri Nov 1 01:32:07 2013 Return-Path: Delivered-To: freebsd-ports@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id D22F99A7 for ; Fri, 1 Nov 2013 01:32:07 +0000 (UTC) (envelope-from FreeBSD@shaneware.biz) Received: from ipmail06.adl6.internode.on.net (ipmail06.adl6.internode.on.net [IPv6:2001:44b8:8060:ff02:300:1:6:6]) by mx1.freebsd.org (Postfix) with ESMTP id 6A0E0219F for ; Fri, 1 Nov 2013 01:32:07 +0000 (UTC) Received: from ppp118-210-126-13.lns20.adl2.internode.on.net (HELO leader.local) ([118.210.126.13]) by ipmail06.adl6.internode.on.net with ESMTP; 01 Nov 2013 12:02:05 +1030 Message-ID: <52730493.6060401@ShaneWare.Biz> Date: Fri, 01 Nov 2013 12:02:03 +1030 From: Shane Ambler User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Michael Gmelin Subject: Re: Build C++ based packages using C++11 References: <20131028195708.53325afe@bsd64.grem.de> <20131029133424.391625c3@bsd64.grem.de> <20131031172935.1fcb8a95@bsd64.grem.de> In-Reply-To: <20131031172935.1fcb8a95@bsd64.grem.de> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: "freebsd-ports@freebsd.org list" X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Nov 2013 01:32:07 -0000 On 01/11/2013 02:59, Michael Gmelin wrote: > On Tue, 29 Oct 2013 13:34:24 +0100 > Michael Gmelin wrote: > >> I was thinking more of building the entire stack using C++11 (libc++ >> requires it anyway). To give you an example I know personally, the >> port devel/ice provides a bigger feature set if C++11 is available. >> If it's used, it's advised to also build dependencies (e.g. >> databases/db5) using C++11 as well, to make sure symbols and >> exception handling works properly. >> The way I would approach this is to set up poudriere to build the >> entire tree using clang++ -std=c++11 -stdlib=libc++ and then start >> dealing with the fallout, fixing smaller problems immediately (or make >> the maintainers fix them) and mark ports that are to hard to fix as >> "NEEDS_CPP98" or something like this. > > So, how could I get that started? I'm willing to put effort into > this myself, but I would need pointers on how to do this in a way > that makes sure it leads to some productive result. Basically it would > be some project to make as much of the ports tree as possible work with > libc++ and C++1x, starting with devel/*. Not sure if there is anybody > interested in this besides me right now - given the feedback so far I > doubt it. I actually think fixing builds for 10.0 is achieving this, at least with clang and libc++ as the older libstdc++ has been removed with gcc. 10.0 also appears to be stricter on things like math.h, eg. isnan(int) produces an error in 10.0 but not 9.2. The only issue I would think you'll find working on this is that every port maintainer has ports that need updating and most are working on fixing their own ports. So there is a high chance that you will fix a port the same time as the maintainer is doing it. So if you start, I would suggest building against 10.0 (with or without -std=c++11) and try starting with unmaintained ports. I believe that would be with MAINTAINER=ports@freebsd.org. If you submit fixes for these then you should probably update for staging as well. If you start doing this I would suggest keeping examples of what you fix and creating a changes table. eg if you get error: xxxx then try replacing this with this or this.