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 08:21:35 -0600
On Mon, 2013-09-09 at 07:51 -0600, Ian Lepore wrote:
> 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.

Hrm.  I take that back.  You can't set _WITHOUT_SRCCONF and
then .include <bsd.prog.mk> and expect anything to work.  For some
reason all the setting of the MK_whatever knobs is disabled by setting
_WITHOUT_SRCCONF, and without all those things defined, the rest of the
bsd.*.mk files don't work.

::sigh:: What a mess.

-- Ian
Received on Mon Sep 09 2013 - 12:21:40 UTC

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