** Description changed: [Impact] - Users trying to build software that links w/ jammy's libjsoncpp library will hit a build failure if that software uses cmake and another library that also requires libjsoncpp. This can be reproduced by building a a new version of cmake itself (reproduced w/ today's master, as well as going back to the 3.27.4 release). + Users trying to build software that links w/ jammy's libjsoncpp library will hit a build failure if that software uses cmake and another library that also requires libjsoncpp because libjsoncpp's cmake config does not protect against duplicate imports. This can be reproduced by building a a newer version of cmake itself using system libjsoncpp (I was trying to build 3.27.4, but I also checked that it impacts cmake master). [Test Case] This can be demonstrated by calling find_package twice in a row: $ mkdir test && cd test $ cat > CMakeLists.txt << EOF project(test) find_package(jsoncpp 1.9.5) find_package(jsoncpp 1.9.5) EOF $ cmake . -- The C compiler identification is GNU 11.4.0 -- The CXX compiler identification is GNU 11.4.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - 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: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done CMake Error at /usr/lib/x86_64-linux-gnu/cmake/jsoncpp/jsoncpp-namespaced-targets.cmake:5 (add_library): - add_library cannot create imported target "JsonCpp::JsonCpp" because - another target with the same name already exists. + add_library cannot create imported target "JsonCpp::JsonCpp" because + another target with the same name already exists. Call Stack (most recent call first): - /usr/lib/x86_64-linux-gnu/cmake/jsoncpp/jsoncppConfig.cmake:41 (include) - CMakeLists.txt:3 (find_package) - + /usr/lib/x86_64-linux-gnu/cmake/jsoncpp/jsoncppConfig.cmake:41 (include) + CMakeLists.txt:3 (find_package) CMake Warning (dev) in CMakeLists.txt: - No cmake_minimum_required command is present. A line of code such as + No cmake_minimum_required command is present. A line of code such as - cmake_minimum_required(VERSION 3.22) + cmake_minimum_required(VERSION 3.22) - should be added at the top of the file. The version specified may be lower - if you wish to support older CMake versions for this project. For more - information run "cmake --help-policy CMP0000". + should be added at the top of the file. The version specified may be lower + if you wish to support older CMake versions for this project. For more + information run "cmake --help-policy CMP0000". This warning is for project developers. Use -Wno-dev to suppress it. -- Configuring incomplete, errors occurred! See also "/home/ubuntu/test/CMakeFiles/CMakeOutput.log". - [ What Could Go Wrong ] We could cause reverse dependencies to fail to build from source due to an inadvertent error. We can mitigate this by doing a test rebuild of the reverse dependencies.
** Also affects: libjsoncpp (Ubuntu Noble) Importance: Undecided Status: New ** Also affects: libjsoncpp (Ubuntu Mantic) Importance: Undecided Status: New ** Changed in: libjsoncpp (Ubuntu Noble) Status: New => Fix Released ** Changed in: libjsoncpp (Ubuntu Mantic) Status: New => Fix Released -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2063950 Title: duplicate JsonCpp::JsonCpp leads to build failures To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/libjsoncpp/+bug/2063950/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs