Date: Fri, 01 Nov 2013 12:02:03 +1030 From: Shane Ambler <FreeBSD@ShaneWare.Biz> To: Michael Gmelin <freebsd@grem.de> Cc: "freebsd-ports@freebsd.org list" <freebsd-ports@freebsd.org> Subject: Re: Build C++ based packages using C++11 Message-ID: <52730493.6060401@ShaneWare.Biz> In-Reply-To: <20131031172935.1fcb8a95@bsd64.grem.de> References: <20131028195708.53325afe@bsd64.grem.de> <CA2B36F5-2251-471B-A375-52A1582474ED@FreeBSD.org> <20131029133424.391625c3@bsd64.grem.de> <20131031172935.1fcb8a95@bsd64.grem.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On 01/11/2013 02:59, Michael Gmelin wrote: > On Tue, 29 Oct 2013 13:34:24 +0100 > Michael Gmelin <freebsd@grem.de> 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.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52730493.6060401>