-
Notifications
You must be signed in to change notification settings - Fork 312
-DROARING_USE_CPM=false causes roaring-config.cmake to have cmake_minimum_required(VERSION 2.8) #793
Description
Describe the bug
NixOS/nixpkgs#501403
When building CRoaring from source with -DROARING_USE_CPM=false, it causes roaring-config.cmake to have cmake_minimum_required(VERSION 2.8)
Which CMake 4.0 doesn't support anymore:
Compatibility with CMake < 3.5 has been removed from CMake.
To Reproduce
Ran in docker -it ubuntu /bin/bash
mkdir -p build
cd build
cmake .. -DROARING_USE_CPM=false
cmake --build .And if we check the generated files:
$ rg 'cmake_minimum_required'
roaring-config.cmake
45:cmake_minimum_required(VERSION 2.8)
lib/cmake/roaring/roaring-config.cmake
45:cmake_minimum_required(VERSION 2.8) If we were to build with -DROARING_USE_CPM=true:
$ rg 'cmake_minimum_required'
cmake/CPM_0.42.0.cmake
29:cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
roaring-config.cmake
45:cmake_minimum_required(VERSION 3.14)
_deps/cmocka-src/CMakeLists.txt
2:cmake_minimum_required(VERSION 3.10.0)
lib/cmake/roaring/roaring-config.cmake
45:cmake_minimum_required(VERSION 3.14)
_deps/cmocka-subbuild/CMakeLists.txt
4:cmake_minimum_required(VERSION 3.28.3)
_deps/cmocka-subbuild/cmocka-populate-prefix/tmp/cmocka-populate-mkdirs.cmake
4:cmake_minimum_required(VERSION 3.5)
_deps/cmocka-subbuild/cmocka-populate-prefix/tmp/cmocka-populate-gitupdate.cmake
4:cmake_minimum_required(VERSION 3.5)
_deps/cmocka-subbuild/cmocka-populate-prefix/tmp/cmocka-populate-gitclone.cmake
4:cmake_minimum_required(VERSION 3.5) CRoaring release
master
Configuration
Built from scratch following https://github.com/RoaringBitmap/CRoaring#building-with-cmake-linux-and-macos-visual-studio-or-openharmony-users-should-see-below in a docker
CMake from Docker is 3.28.3, but it's 4.1.2 on Nix unstable (where we discovered the issue)
Indicate whether you are willing or able to provide a bug fix as a pull request
Definitely not a CMake expert
From my understanding the 2.8 comes from
Line 1 in 598077e
| cmake_minimum_required(VERSION 2.8...3.15) |
From the documentation, write_basic_package_version_file should support version ranges with SameMajorVersion, but it doesn't seem like it ?
Lines 92 to 95 in 598077e
| write_basic_package_version_file( | |
| "${build_location}/roaring-config-version.cmake" | |
| VERSION ${ROARING_LIB_VERSION} | |
| COMPATIBILITY SameMajorVersion) |
Maybe this is relevant: https://discourse.cmake.org/t/write-basic-package-version-file-and-version-range/10021
FWIW:
- cmake_minimum_required(VERSION 2.8...3.15)
+ cmake_minimum_required(VERSION 3.15)Fixes the problem, but may not be the ideal solution