Re: ports/181913: devel/qt4-script: /usr/include/c++/v1/type_traits:3175:22: error: call to 'swap' is ambiguous

From: Ian Lepore <ian_at_FreeBSD.org>
Date: Mon, 09 Sep 2013 07:51:44 -0600
On Mon, 2013-09-09 at 08:57 +0200, Stefan Esser wrote:
> Am 08.09.2013 08:14, schrieb O. Hartmann:
> > On Sat, 7 Sep 2013 22:49:54 GMT rakuco_at_FreeBSD.org wrote:
> > 
> >> Synopsis: devel/qt4-script:
> >> /usr/include/c++/v1/type_traits:3175:22: error: call to 'swap' is
> >> ambiguous
> >> 
> >> State-Changed-From-To: open->patched State-Changed-By: rakuco 
> >> State-Changed-When: Sat Sep 7 22:47:43 UTC 2013 
> >> State-Changed-Why: I don't think the previous version worked.
> >> 
> >> From your description, it looks like you've switched to building
> >> with libc++ whereas libstdc++ was being used before.
> >> 
> >> The upcoming Qt 4.8.5 plus a few patches which only made it to
> >> 4.8.6 (but we've backported) will finally make Qt build with
> >> libc++.
> >> 
> >> We've just sent an exp-run request for Qt 4.8.5, and will
> >> hopefully fix all these errors once it is committed.
> >> 
> >> http://www.freebsd.org/cgi/query-pr.cgi?pr=181913
> > 
> > 
> > I build the world/kernel since early this year with
> > 
> > CXXFLAGS+=              -stdlib=libc++ CXXFLAGS+=
> > -std=c++11
> > 
> > 
> > in /etc/src.conf. I do not use those flags in /etc/make.conf!
> > /etc/src.conf is supposed to target ONLY the /usr/src world, not
> > the ports - this is as I interpret the man page for /etc/src.conf
> > and it would be logical. But this rule/thinking seems to be broken
> > by some includes from /usr/ports/Mk ingredients.
> 
> There are ports that use bsd.prog.mk instead of the Makefile supplied
> with the source files. Just grep for bsd.port.mk in the port's "files"
> sub directory, if you find that /etc/src.conf settings affect a port.
> 
> I think these ports are in violation of POLA and had a longer mail
> exchange with a port maintainer, who told me that use of bsd.prog.mk
> was the preferred method to build binaries on FreeBSD, for base and
> for ports.
> 
> So no file under /usr/ports/Mk is to blame, but some ports do
> implicitly reference /etc/src.conf via their use of bsd.prog.mk.
> 
> Regards, STefan
> 
> NB: I just performed the grep suggested above and found that the
>     following ports mention bsd.prog.mk in files/*:
> 
> <list snipped>

If those ports .include <bsd.port.mk> before bsd.prog.mk, I think
everything should work properly.  It looks like src.conf is an "opt-out"
system, and bsd.port.mk sets the variable to opt out.

I don't especially like this (opt-in would be better), but I don't see
an easy fix either.  We use bsd.prog.mk at $work (I'd better go add the
opt-out now), it seems like others probably do the same.  

It would be much better if the base build opted in, but the only way I
can see to do that would be to install a "makefile.up" system where a
makefile.up in every directory under the base src allows "walking up" to
the top of the src hierarchy no matter where the build is started from,
so that you can always get some top-level file to do the opt-in.

-- Ian
Received on Mon Sep 09 2013 - 11:51:54 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:41 UTC