rizsotto / Bear

Bear is a tool that generates a compilation database for clang tooling.
GNU General Public License v3.0
4.79k stars 314 forks source link

Build fails with nlohmann/json 3.10.0 #397

Closed sternenseemann closed 3 years ago

sternenseemann commented 3 years ago

Describe the bug

Tried upgrading nlohmann/json to 3.10.0, bear is one of the reverse deps that start to fail:

cmake flags: -DCMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY=OFF -DCMAKE_FIND_USE_PACKAGE_REGISTRY=OFF -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_SKIP_BUILD_RPATH=ON -DBUILD_TESTING=OFF -DCMAKE_INSTALL_LOCALEDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/share/locale -DCMAKE_INSTALL_LIBEXECDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/libexec -DCMAKE_INSTALL_LIBDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/lib -DCMAKE_INSTALL_DOCDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/share/doc/Bear -DCMAKE_INSTALL_INFODIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/share/info -DCMAKE_INSTALL_MANDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/share/man -DCMAKE_INSTALL_OLDINCLUDEDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/include -DCMAKE_INSTALL_INCLUDEDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/include -DCMAKE_INSTALL_SBINDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/sbin -DCMAKE_INSTALL_BINDIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/bin -DCMAKE_INSTALL_NAME_DIR=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13/lib -DCMAKE_POLICY_DEFAULT_CMP0025=NEW -DCMAKE_OSX_SYSROOT= -DCMAKE_FIND_FRAMEWORK=LAST -DCMAKE_STRIP=/nix/store/7whwzj6l52qcnlg8ym82gmzsdr9x5p20-binutils-2.35.1/bin/strip -DCMAKE_RANLIB=/nix/store/7whwzj6l52qcnlg8ym82gmzsdr9x5p20-binutils-2.35.1/bin/ranlib -DCMAKE_AR=/nix/store/7whwzj6l52qcnlg8ym82gmzsdr9x5p20-binutils-2.35.1/bin/ar -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ -DCMAKE_INSTALL_PREFIX=/nix/store/adz2v3ssnjawwgca8rj0wln22vw9i852-bear-3.0.13  
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/6v68kjn0ih1am041bhxaykq5gb5s3fq2-gcc-wrapper-9.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/6v68kjn0ih1am041bhxaykq5gb5s3fq2-gcc-wrapper-9.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for nlohman_json dependency
-- Looking for nlohman_json dependency -- found
-- Looking for fmt dependency
-- Looking for fmt dependency -- found
-- Looking for spdlog dependency
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for spdlog dependency -- found
-- Looking for gRPC::grpc++ dependency
-- Found PkgConfig: pkg-config (found version "0.29.2") 
-- Checking for modules 'protobuf>=3.11;grpc++>=1.26'
--   Found protobuf, version 3.17.3
--   Found grpc++, version 1.39.0
-- Looking for gRPC::grpc++ dependency -- found
-- Looking for protoc
-- Looking for protoc -- found
-- Looking for grpc_cpp_plugin
-- Looking for grpc_cpp_plugin -- found
-- Looking for GTest dependency
-- Checking for modules 'gtest>=1.10;gtest_main>=1.10;gmock>=1.10'
--   Found gtest, version 1.11.0
--   Found gtest_main, version 1.11.0
--   Found gmock, version 1.11.0
-- Looking for GTest dependency -- found
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    BUILD_TESTING
    CMAKE_EXPORT_NO_PACKAGE_REGISTRY
    CMAKE_INSTALL_NAME_DIR
    CMAKE_POLICY_DEFAULT_CMP0025
    CMAKE_SKIP_BUILD_RPATH

-- Build files have been written to: /build/source/build
cmake: enabled parallel building
@nix { "action": "setPhase", "phase": "buildPhase" }
building
build flags: -j2 -l2 SHELL=/nix/store/kll877i3qbrhpakvjhh13mbjbvxiwjkw-bash-4.4-p23/bin/bash
Scanning dependencies of target nlohmann_json_dependency
Scanning dependencies of target googletest_dependency
[  0%] Built target nlohmann_json_dependency
[  0%] Built target googletest_dependency
Scanning dependencies of target fmt_dependency
Scanning dependencies of target spdlog_dependency
[  0%] Built target fmt_dependency
Scanning dependencies of target grpc_dependency
[  0%] Built target spdlog_dependency
[  0%] Built target grpc_dependency
Scanning dependencies of target BearSource
[  5%] Creating directories for 'BearSource'
[ 11%] No download step for 'BearSource'
[ 16%] No update step for 'BearSource'
[ 22%] No patch step for 'BearSource'
[ 27%] Performing configure step for 'BearSource'
loading initial cache file /build/source/build/subprojects/tmp/BearSource/BearSource-cache-Release.cmake
-- The C compiler identification is GNU 9.3.0
-- The CXX compiler identification is GNU 9.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /nix/store/6v68kjn0ih1am041bhxaykq5gb5s3fq2-gcc-wrapper-9.3.0/bin/gcc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /nix/store/6v68kjn0ih1am041bhxaykq5gb5s3fq2-gcc-wrapper-9.3.0/bin/g++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: pkg-config (found version "0.29.2") 
-- Checking for modules 'gtest;gtest_main;gmock'
--   Found gtest, version 1.11.0
--   Found gtest_main, version 1.11.0
--   Found gmock, version 1.11.0
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Found nlohmann_json: /nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/lib/cmake/nlohmann_json/nlohmann_jsonConfig.cmake (found version "3.10.0") 
-- Checking for modules 'protobuf;grpc++'
--   Found protobuf, version 3.17.3
--   Found grpc++, version 1.39.0
-- Looking for spawn.h
-- Looking for spawn.h - found
-- Looking for unistd.h
-- Looking for unistd.h - found
-- Looking for dlfcn.h
-- Looking for dlfcn.h - found
-- Looking for errno.h
-- Looking for errno.h - found
-- Looking for sys/utsname.h
-- Looking for sys/utsname.h - found
-- Looking for sys/wait.h
-- Looking for sys/wait.h - found
-- Looking for gnu/lib-names.h
-- Looking for gnu/lib-names.h - found
-- Looking for _NSGetEnviron
-- Looking for _NSGetEnviron - not found
-- Looking for dlopen
-- Looking for dlopen - found
-- Looking for dlsym
-- Looking for dlsym - found
-- Looking for dlerror
-- Looking for dlerror - found
-- Looking for dlclose
-- Looking for dlclose - found
-- Looking for RTLD_NEXT
-- Looking for RTLD_NEXT - found
-- Looking for EACCES
-- Looking for EACCES - found
-- Looking for ENOENT
-- Looking for ENOENT - found
-- Looking for strerror_r
-- Looking for strerror_r - found
-- Looking for environ
-- Looking for environ - found
-- Looking for uname
-- Looking for uname - found
-- Looking for confstr
-- Looking for confstr - found
-- Looking for _CS_PATH
-- Looking for _CS_PATH - found
-- Looking for _CS_GNU_LIBC_VERSION
-- Looking for _CS_GNU_LIBC_VERSION - found
-- Looking for _CS_GNU_LIBPTHREAD_VERSION
-- Looking for _CS_GNU_LIBPTHREAD_VERSION - found
-- Looking for protoc ... /nix/store/hscfpp9bmi4a7rnxpgazqnsb32kx63vd-protobuf-3.17.3/bin/protoc
-- Looking for grpc_cpp_plugin ... /nix/store/cks535ih98xd3wk0nplv3np4n6fv51l6-grpc-1.39.0/bin/grpc_cpp_plugin
-- Configuring done
-- Generating done
-- Build files have been written to: /build/source/build/subprojects/Build/BearSource
[ 33%] Performing build step for 'BearSource'
Scanning dependencies of target flags_a
Scanning dependencies of target result_unit_test
[  1%] Building CXX object libflags/CMakeFiles/flags_a.dir/source/Flags.cc.o
[  2%] Building CXX object libresult/CMakeFiles/result_unit_test.dir/test/ResultTest.cc.o
[  2%] Built target flags_a
Scanning dependencies of target shell_a
[  3%] Building CXX object libshell/CMakeFiles/shell_a.dir/source/Command.cc.o
[  4%] Linking CXX executable result_unit_test
[  4%] Built target result_unit_test
Scanning dependencies of target sys_a
[  5%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Os.cc.o
[  6%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Guard.cc.o
[  8%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Errors.cc.o
[  9%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Path.cc.o
[ 10%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Process.cc.o
[ 10%] Built target shell_a
Scanning dependencies of target main_a
[ 11%] Building CXX object libmain/CMakeFiles/main_a.dir/source/ApplicationLogConfig.cc.o
[ 12%] Building CXX object libsys/CMakeFiles/sys_a.dir/source/Signal.cc.o
[ 13%] Building CXX object libmain/CMakeFiles/main_a.dir/source/ApplicationFromArgs.cc.o
[ 13%] Built target sys_a
[ 14%] Generating supervise.pb.h, supervise.grpc.pb.h, supervise.pb.cc, supervise.grpc.pb.cc
[ 16%] Generating intercept.pb.h, intercept.grpc.pb.h, intercept.pb.cc, intercept.grpc.pb.cc
Scanning dependencies of target rpc_a
[ 17%] Building CXX object intercept/proto/CMakeFiles/rpc_a.dir/supervise.pb.cc.o
[ 17%] Built target main_a
[ 18%] Building CXX object intercept/proto/CMakeFiles/rpc_a.dir/supervise.grpc.pb.cc.o
[ 19%] Building CXX object intercept/proto/CMakeFiles/rpc_a.dir/intercept.pb.cc.o
[ 20%] Building CXX object intercept/proto/CMakeFiles/rpc_a.dir/intercept.grpc.pb.cc.o
Scanning dependencies of target exec_a
[ 21%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Buffer.cc.o
[ 22%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Environment.cc.o
[ 24%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Executor.cc.o
[ 25%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Linker.cc.o
[ 26%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Logger.cc.o
[ 27%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Paths.cc.o
[ 28%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Resolver.cc.o
[ 29%] Building CXX object intercept/CMakeFiles/exec_a.dir/source/report/libexec/Session.cc.o
[ 29%] Built target exec_a
Scanning dependencies of target citnames_json_a
[ 31%] Building CXX object citnames/CMakeFiles/citnames_json_a.dir/source/Configuration.cc.o
[ 31%] Built target rpc_a
Scanning dependencies of target bear
[ 32%] Building CXX object bear/CMakeFiles/bear.dir/main.cc.o
[ 33%] Linking CXX executable bear
[ 33%] Built target bear
[ 34%] Building CXX object citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o
/build/source/source/citnames/source/Output.cc: In function 'void cs::from_json(const json&, cs::Entry&)':
/build/source/source/citnames/source/Output.cc:187:101: error: no matching function for call to 'nlohmann::detail::out_of_range::create(int, const char [39])'
  187 |             throw nlohmann::json::out_of_range::create(403, "key 'command' or 'arguments' not found");
      |                                                                                                     ^
In file included from /nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/include/nlohmann/detail/conversions/from_json.hpp:15,
                 from /nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/include/nlohmann/adl_serializer.hpp:6,
                 from /nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/include/nlohmann/json.hpp:51,
                 from /build/source/source/citnames/source/Output.cc:30:
/nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/include/nlohmann/detail/exceptions.hpp:379:25: note: candidate: 'template<class BasicJsonType> static nlohmann::detail::out_of_range nlohmann::detail::out_of_range::create(int, const string&, const BasicJsonType&)'
  379 |     static out_of_range create(int id_, const std::string& what_arg, const BasicJsonType& context)
      |                         ^~~~~~
/nix/store/yqx6pz93r0m10qhxgmgw7xd095rmfw1y-nlohmann_json-3.10.0/include/nlohmann/detail/exceptions.hpp:379:25: note:   template argument deduction/substitution failed:
/build/source/source/citnames/source/Output.cc:187:101: note:   candidate expects 3 arguments, 2 provided
  187 |             throw nlohmann::json::out_of_range::create(403, "key 'command' or 'arguments' not found");
      |                                                                                                     ^
make[5]: *** [citnames/CMakeFiles/citnames_json_a.dir/build.make:95: citnames/CMakeFiles/citnames_json_a.dir/source/Output.cc.o] Error 1
make[4]: *** [CMakeFiles/Makefile2:1672: citnames/CMakeFiles/citnames_json_a.dir/all] Error 2
make[3]: *** [Makefile:160: all] Error 2
make[2]: *** [CMakeFiles/BearSource.dir/build.make:133: subprojects/Stamp/BearSource/BearSource-build] Error 2
make[1]: *** [CMakeFiles/Makefile2:250: CMakeFiles/BearSource.dir/all] Error 2
make: *** [Makefile:171: all] Error 2

Environment:

rizsotto commented 3 years ago

see #396 . The fix is already on master branch, will create a release soon.