[QGIS-Developer] Understanding errors while building QGIS master
Hernán De Angelis
variablestarlight at gmail.com
Tue Apr 29 01:34:07 PDT 2025
Hi Stefanos,
Thanks for the suggestion, I will definitely try that. In any case it is
baffling that build fails using both internal and external (3.12).
I currently suspect deeper issues in gcc and how libstdc++ is linked in
my system or the may be the OS. Up to two weeks ago I could compile QGIS
painlessly.
Hernán
Den 2025-04-29 kl. 10:18, skrev Stefanos Natsis:
>
> Hi Hernan,
>
> Nlohmann json got updated to 3.11.3 in
> https://github.com/qgis/QGIS/pull/61597 a few days ago, maybe you
> could try building master before that?
>
> Best
>
> Stefanos
>
>
> On Tue, Apr 29, 2025, 10:04 AM Hernán De Angelis via QGIS-Developer
> <qgis-developer at lists.osgeo.org> wrote:
>
> Hi
>
> I seek help in understanding errors (see excerpt below) I am
> currently experiencing while building QGIS master in a fresh
> openSUSE Tumbleweed install. These errors seem to originate in
> nlohmann json. I am used to compile QGIS from source but never
> seen these errors before and have trouble figuring out where they
> originate and what a possible solution could be.
>
> I am using Qt 6.9.0, and tried compiling using both GCC 14 and 15.
> Passing the CXX flag "-std=c++17" does not seem to help. I tried
> using NLOHMANN both internal and also using the latest version
> compiled locally (3.12, as in error log below) but both fail in a
> similar way.
>
> I compiled QGIS master as late as 6 april without problems in a
> previous openSUSE install. There is a very real the possibility
> that recent changes in GCC14 and 15 regarding required standards
> are playing a part here, as well as packaging changes in openSUSE
> Tumbleweed. However, as I am unsure what the cause may be I would
> like to ask the developers if these errors look familiar to you
> and if they suggest something.
>
> Thanks in advance
>
> Hernán
>
>
>
>
>
>
>
>
> [ 12%] Built target staged-plugins-on-build
> In file included from
> /usr/local/src/QGIS/external/nlohmann/detail/value_t.hpp:16,
> from
> /usr/local/src/QGIS/external/nlohmann/detail/exceptions.hpp:20,
> from
> /usr/local/src/QGIS/external/nlohmann/detail/conversions/from_json.hpp:23,
> from
> /usr/local/src/QGIS/external/nlohmann/adl_serializer.hpp:14,
> from
> /usr/local/src/QGIS/external/nlohmann/json.hpp:34,
> from
> /usr/local/src/QGIS/external/pdal_wrench/vpc.cpp:26:
> /usr/local/src/QGIS/external/nlohmann/detail/macro_scope.hpp:257:63:
> error: wrong number of template arguments (11, should be at least 0)
> 257 | AllocatorType, JSONSerializer, BinaryType,
> CustomBaseClass>
> | ^
> /usr/local/src/QGIS/external/nlohmann/detail/meta/type_traits.hpp:53:22:
> note: in expansion of macro ‘NLOHMANN_BASIC_JSON_TPL’
> 53 | struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> :
> std::true_type {};
> | ^~~~~~~~~~~~~~~~~~~~~~~
> In file included from /usr/local/include/pdal/PDALUtils.hpp:39,
> from /usr/local/include/pdal/PointRef.hpp:37,
> from /usr/local/include/pdal/Geometry.hpp:37,
> from
> /usr/local/src/QGIS/external/pdal_wrench/vpc.hpp:18,
> from
> /usr/local/src/QGIS/external/pdal_wrench/vpc.cpp:19:
> /usr/local/include/pdal/JsonFwd.hpp:40:7: note: provided for
> ‘template<template<class U, class V, class ... Args> class
> ObjectType, template<class U, class ... Args> class ArrayType,
> class StringType, class BooleanType, class NumberIntegerType,
> class NumberUnsignedType, class NumberFloatType, template<class U>
> class AllocatorType, template<class T, class SFINAE> class
> JSONSerializer, class BinaryType> class nlohmann::basic_json’
> 40 | class basic_json;
> | ^~~~~~~~~~
> In file included from
> /usr/local/src/QGIS/external/nlohmann/detail/exceptions.hpp:25:
> /usr/local/src/QGIS/external/nlohmann/detail/meta/type_traits.hpp:53:45:
> error: template argument 1 is invalid
> 53 | struct is_basic_json<NLOHMANN_BASIC_JSON_TPL> :
> std::true_type {};
> | ^
> /usr/local/src/QGIS/external/nlohmann/detail/macro_scope.hpp:257:63:
> error: wrong number of template arguments (11, should be at least 0)
> 257 | AllocatorType, JSONSerializer, BinaryType,
> CustomBaseClass>
> | ^
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:51:28:
> note: in expansion of macro ‘NLOHMANN_BASIC_JSON_TPL’
> 51 | struct string_t_helper<NLOHMANN_BASIC_JSON_TPL>
> | ^~~~~~~~~~~~~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:40:7: note: provided for
> ‘template<template<class U, class V, class ... Args> class
> ObjectType, template<class U, class ... Args> class ArrayType,
> class StringType, class BooleanType, class NumberIntegerType,
> class NumberUnsignedType, class NumberFloatType, template<class U>
> class AllocatorType, template<class T, class SFINAE> class
> JSONSerializer, class BinaryType> class nlohmann::basic_json’
> 40 | class basic_json;
> | ^~~~~~~~~~
> In file included from
> /usr/local/src/QGIS/external/nlohmann/json.hpp:50:
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:51:51:
> error: template argument 1 is invalid
> 51 | struct string_t_helper<NLOHMANN_BASIC_JSON_TPL>
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:104:30: error:
> reference to ‘json_pointer’ is ambiguous
> 104 | friend class ::nlohmann::json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:166:26: error:
> reference to ‘json_pointer’ is ambiguous
> 166 | using json_pointer = ::nlohmann::json_pointer<StringType>;
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2327:21: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 2327 | ValueType value(const json_pointer& ptr, const
> ValueType& default_value) const
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2352:22: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 2352 | ReturnType value(const json_pointer& ptr, ValueType &&
> default_value) const
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2376:27: error:
> reference to ‘json_pointer’ is ambiguous
> 2376 | ValueType value(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr, const ValueType&
> default_value) const
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2376:51: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 2376 | ValueType value(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr, const ValueType&
> default_value) const
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2387:28: error:
> reference to ‘json_pointer’ is ambiguous
> 2387 | ReturnType value(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr, ValueType &&
> default_value) const
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2387:52: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 2387 | ReturnType value(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr, ValueType &&
> default_value) const
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2745:19: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 2745 | bool contains(const json_pointer& ptr) const
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2752:46: error:
> reference to ‘json_pointer’ is ambiguous
> 2752 | bool contains(const typename
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:2752:58: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 2752 | bool contains(const typename
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4618:26: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 4618 | reference operator[](const json_pointer& ptr)
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4618:15: error:
> ‘nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType,
> StringType, BooleanType, NumberIntegerType, NumberUnsignedType,
> NumberFloatType, AllocatorType, JSONSerializer, BinaryType,
> CustomBaseClass>::value_type&
> nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType,
> StringType, BooleanType, NumberIntegerType, NumberUnsignedType,
> NumberFloatType, AllocatorType, JSONSerializer, BinaryType,
> CustomBaseClass>::operator[](...)’ must not have variable number
> of arguments
> 4618 | reference operator[](const json_pointer& ptr)
> | ^~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4625:32: error:
> reference to ‘json_pointer’ is ambiguous
> 4625 | reference operator[](const
> ::nlohmann::json_pointer<BasicJsonType>& ptr)
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4625:56: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 4625 | reference operator[](const
> ::nlohmann::json_pointer<BasicJsonType>& ptr)
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4632:32: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 4632 | const_reference operator[](const json_pointer& ptr) const
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4632:21: error:
> ‘const nlohmann::json_abi_v3_11_3::basic_json<ObjectType,
> ArrayType, StringType, BooleanType, NumberIntegerType,
> NumberUnsignedType, NumberFloatType, AllocatorType,
> JSONSerializer, BinaryType, CustomBaseClass>::value_type&
> nlohmann::json_abi_v3_11_3::basic_json<ObjectType, ArrayType,
> StringType, BooleanType, NumberIntegerType, NumberUnsignedType,
> NumberFloatType, AllocatorType, JSONSerializer, BinaryType,
> CustomBaseClass>::operator[](...) const’ must not have variable
> number of arguments
> 4632 | const_reference operator[](const json_pointer& ptr) const
> | ^~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4639:38: error:
> reference to ‘json_pointer’ is ambiguous
> 4639 | const_reference operator[](const
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4639:62: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 4639 | const_reference operator[](const
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4646:18: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 4646 | reference at(const json_pointer& ptr)
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4653:24: error:
> reference to ‘json_pointer’ is ambiguous
> 4653 | reference at(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr)
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4653:48: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 4653 | reference at(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr)
> | ^
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4660:24: error:
> missing template argument list after
> ‘nlohmann::json_abi_v3_11_3::json_pointer’; template placeholder
> not permitted in parameter
> 4660 | const_reference at(const json_pointer& ptr) const
> | ^~~~~
> | <>
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’ declared here
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4667:30: error:
> reference to ‘json_pointer’ is ambiguous
> 4667 | const_reference at(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^~
> /usr/local/src/QGIS/external/nlohmann/detail/json_pointer.hpp:35:7:
> note: candidates are: ‘template<class RefStringType> class
> nlohmann::json_abi_v3_11_3::json_pointer’
> 35 | class json_pointer
> | ^~~~~~~~~~~~
> /usr/local/include/pdal/JsonFwd.hpp:45:7: note:
> ‘template<class BasicJsonType> class nlohmann::json_pointer’
> 45 | class json_pointer;
> | ^~~~~~~~~~~~
> /usr/local/src/QGIS/external/nlohmann/json.hpp:4667:54: error:
> expected ‘,’ or ‘...’ before ‘<’ token
> 4667 | const_reference at(const
> ::nlohmann::json_pointer<BasicJsonType>& ptr) const
> | ^
>
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20250429/d7449929/attachment-0001.htm>
More information about the QGIS-Developer
mailing list