Skip site navigation (1)Skip section navigation (2)
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>