Hello, 

I have an issue with upgrading a port, about which I would like to ask for 
advice. I looked into upgrading kdevelop and its dependency kdevplatform, and 
ran into an issue which finally relates to Qt, apparently.

In details, kdevplatform links to grantlee, which appears to have issues with 
Qt. When compiling, it breaks with messages of the sort:
In file included from 
/opt/local/var/macports/build/_Users_nicos_ports_local_kde_kdevplatform/kdevplatform/work/kdevplatform-1.5.1/language/codegen/codedescriptionmetatypes.h:25:
In file included from /opt/local/include/grantlee/metatype.h:27:
In file included from /opt/local/include/grantlee/typeaccessor.h:24:
/opt/local/include/grantlee/containeraccessor.h:146:35: error: no matching 
function for call to 'distance'
  list.reserve( static_cast<int>( std::distance( it, end ) ) );

This error seem to appear because Qt forward-declares 
random_access_iterator_tag in qiterator.h in the part:
#ifdef QT_NO_STL
namespace std {
    struct bidirectional_iterator_tag;
    struct random_access_iterator_tag;
}
#endif
This declaration overrides the ones in std libraries, so that the compiler does 
not recognise the code in grantlee as being valid, as reported in 
http://llvm.org/bugs/show_bug.cgi?id=13925.

The fix proposed in the link above is to patch qiterator.h, by suppressing the 
forward declarations, and include <iterator> instead. I tested it, and this 
indeed works. However, it seems rather overreaching to have to patch Qt (a huge 
port), in order to get kdevelop to compile. Would anyone have another idea ?

Cheers, 

Nicolas

_______________________________________________
macports-dev mailing list
[email protected]
https://lists.macosforge.org/mailman/listinfo/macports-dev

Reply via email to