[Bug 196127] New: Fix math/qhull build with clang 3.5.0

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Fri Dec 19 14:33:26 UTC 2014


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=196127

            Bug ID: 196127
           Summary: Fix math/qhull build with clang 3.5.0
           Product: Ports Tree
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Many People
          Priority: ---
         Component: Individual Port(s)
          Assignee: stephen at FreeBSD.org
          Reporter: dim at FreeBSD.org
          Assignee: stephen at FreeBSD.org
             Flags: maintainer-feedback?(stephen at FreeBSD.org)

Created attachment 150764
  --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=150764&action=edit
Fix math/qhull build with clang 3.5.0

The math/qhull port fails to compile with clang 3.5.0, due to the following
error:

In file included from
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/Coordinates.cpp:11:
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/Coordinates.h:154:22:
error: reference to 'random_access_iterator_tag' is ambiguous
        typedef std::random_access_iterator_tag  iterator_category;
                     ^
/usr/include/c++/v1/iterator:354:30: note: candidate found by name lookup is
'std::__1::random_access_iterator_tag'
struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public
bidirectional_iterator_tag {};
                             ^
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/QhullIterator.h:20:59:
note: candidate found by name lookup is 'std::random_access_iterator_tag'
namespace std { struct bidirectional_iterator_tag; struct
random_access_iterator_tag; }
                                                          ^
In file included from
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/Coordinates.cpp:11:
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/Coordinates.h:201:22:
error: reference to 'random_access_iterator_tag' is ambiguous
        typedef std::random_access_iterator_tag  iterator_category;
                     ^
/usr/include/c++/v1/iterator:354:30: note: candidate found by name lookup is
'std::__1::random_access_iterator_tag'
struct _LIBCPP_TYPE_VIS_ONLY random_access_iterator_tag : public
bidirectional_iterator_tag {};
                             ^
/wrkdirs/usr/ports/math/qhull/work/qhull-2012.1/src/libqhullcpp/QhullIterator.h:20:59:
note: candidate found by name lookup is 'std::random_access_iterator_tag'
namespace std { struct bidirectional_iterator_tag; struct
random_access_iterator_tag; }
                                                          ^
2 errors generated.

This is because qhull tries to avoid including <iterator>, and rolls its own
(incompatible) std::random_access_iterator_tag and
std::bidrectional_iterator_tag.  These are not full compatible with libc++'s
own declarations, and clang 3.5.x has become more strict about matching them.

The fix is to replace the hand-rolled declarations with #include <iterator>
statements.  This will work for any C++ standard library.

--- Comment #1 from Bugzilla Automation <bugzilla at FreeBSD.org> ---
Auto-assigned to maintainer stephen at FreeBSD.org

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-ports-bugs mailing list