** 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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs