erigontech / erigontech/silkworm
Inncompatibility with cmake 4.0.0
- Dominant language
- C++
- Stars
- 318
- Forks
- 84
- PR merge metrics
- No merged PRs in 30d
Description
I just tried to run a fresh install of silkworm locally:
```
(main_env) user@debian:~/tmp$ pip3 freeze | grep conan
conan==2.10.2
(main_env) user@debian:~/tmp$ uname -r
6.1.0-25-amd64
(main_env) user@debian:~/tmp$ g++ --version
g++ (Debian 12.2.0-14) 12.2.0
(main_env) user@debian:~/tmp$ cmake --version
cmake version 4.0.0
(main_env) user@debian:~/tmp$ git clone --recurse-submodules https://github.com/erigontech/silkworm.git
(main_env) user@debian:~/tmp$ cd silkworm
(main_env) user@debian:~/tmp/silkworm$ mkdir build && cd build
(main_env) user@debian:~/tmp/silkworm/build$ cmake ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.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 Warning (dev) at third_party/evmone/evmone/cmake/cable/CableBuildInfo.cmake:33 (cmake_parse_arguments):
The GIT_BRANCH keyword was followed by an empty string or no value at all.
Policy CMP0174 is not set, so cmake_parse_arguments() will unset the
_GIT_BRANCH variable rather than setting it to an empty string.
Call Stack (most recent call first):
CMakeLists.txt:53 (cable_add_buildinfo_library)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at third_party/evmone/evmone/cmake/cable/CableBuildInfo.cmake:33 (cmake_parse_arguments):
The GIT_DESCRIBE keyword was followed by an empty string or no value at
all. Policy CMP0174 is not set, so cmake_parse_arguments() will unset the
_GIT_DESCRIBE variable rather than setting it to an empty string.
Call Stack (most recent call first):
CMakeLists.txt:53 (cable_add_buildinfo_library)
This warning is for project developers. Use -Wno-dev to suppress it.
-- CMake-Conan: conan install /home/user/tmp/silkworm --profile:host=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;--profile:build=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;-v;error;--output-folder;/home/user/tmp/silkworm/build/conan2;--settings:all;&:build_type=Release;--build=missing
-- Could NOT find Git (missing: Git_DIR)
-- Found Git: /usr/bin/git (found version "2.39.5")
CMake Error at third_party/libff/libff/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.5 has been removed from CMake.
Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.
Or, add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to try configuring anyway.
-- Configuring incomplete, errors occurred!
```
So I downgraded cmake to version 3.31.6 to confirm it.
```
(main_env) user@debian:~/tmp/silkworm$ pip3 uninstall cmake
(main_env) user@debian:~/tmp/silkworm$ pip3 install cmake==3.31.6
(main_env) user@debian:~/tmp/silkworm$ cmake --version
cmake version 3.31.6
CMake suite maintained and supported by Kitware (kitware.com/cmake).
(main_env) user@debian:~/tmp/silkworm/build$ rm -rf *
(main_env) user@debian:~/tmp/silkworm/build$ cmake ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.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 Warning (dev) at third_party/evmone/evmone/cmake/cable/CableBuildInfo.cmake:33 (cmake_parse_arguments):
The GIT_BRANCH keyword was followed by an empty string or no value at all.
Policy CMP0174 is not set, so cmake_parse_arguments() will unset the
_GIT_BRANCH variable rather than setting it to an empty string.
Call Stack (most recent call first):
CMakeLists.txt:53 (cable_add_buildinfo_library)
This warning is for project developers. Use -Wno-dev to suppress it.
CMake Warning (dev) at third_party/evmone/evmone/cmake/cable/CableBuildInfo.cmake:33 (cmake_parse_arguments):
The GIT_DESCRIBE keyword was followed by an empty string or no value at
all. Policy CMP0174 is not set, so cmake_parse_arguments() will unset the
_GIT_DESCRIBE variable rather than setting it to an empty string.
Call Stack (most recent call first):
CMakeLists.txt:53 (cable_add_buildinfo_library)
This warning is for project developers. Use -Wno-dev to suppress it.
-- CMake-Conan: conan install /home/user/tmp/silkworm --profile:host=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;--profile:build=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;-v;error;--output-folder;/home/user/tmp/silkworm/build/conan2;--settings:all;&:build_type=Release;--build=missing
-- Could NOT find Git (missing: Git_DIR)
-- Found Git: /usr/bin/git (found version "2.39.5")
CMake Deprecation Warning at third_party/libff/libff/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.10 will be removed from a future version of
CMake.
Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.
CMake Deprecation Warning at third_party/cbor-cpp/cbor-cpp/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.10 will be removed from a future version of
CMake.
Update the VERSION argument value. Or, use the ... syntax
to tell CMake that the project requires at least but has been updated
to work with policies introduced by or earlier.
-- Could NOT find Threads (missing: Threads_DIR)
-- Performing Test HAS_NO_DEPRECATED_PRAGMA
-- Performing Test HAS_NO_DEPRECATED_PRAGMA - Success
-- Configuring done (6.1s)
-- Generating done (4.1s)
-- Build files have been written to: /home/user/tmp/silkworm/build
```
Built but with some weird warnings.
Just to be sure this is not a weird behavior due to the virtual environment I ran it with my system-wide cmake:
```
(main_env) user@debian:~/tmp/silkworm/build$ pip3 uninstall cmake
(main_env) user@debian:~/tmp/silkworm/build$ cmake --version
cmake version 3.25.1
CMake suite maintained and supported by Kitware (kitware.com/cmake).
(main_env) user@debian:~/tmp/silkworm/build$ which cmake
/usr/bin/cmake
(main_env) user@debian:~/tmp/silkworm/build$ rm -rf *
(main_env) user@debian:~/tmp/silkworm/build$ cmake ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.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-Conan: conan install /home/user/tmp/silkworm --profile:host=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;--profile:build=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;-v;error;--output-folder;/home/user/tmp/silkworm/build/conan2;--settings:all;&:build_type=Release;--build=missing
-- Could NOT find Git (missing: Git_DIR)
-- Found Git: /usr/bin/git (found version "2.39.5")
-- Could NOT find Threads (missing: Threads_DIR)
-- Performing Test HAS_NO_DEPRECATED_PRAGMA
-- Performing Test HAS_NO_DEPRECATED_PRAGMA - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/tmp/silkworm/build
```
And then used the pip version again with the "same" version as my system's.
```
(main_env) user@debian:~/tmp/silkworm/build$ pip3 install cmake==3.25.2 //closest version on pips repository
(main_env) user@debian:~/tmp/silkworm/build$ cmake --version
cmake version 3.25.2
CMake suite maintained and supported by Kitware (kitware.com/cmake).
(main_env) user@debian:~/tmp/silkworm/build$ which cmake
/home/user/main_env/bin/cmake
(main_env) user@debian:~/tmp/silkworm/build$ rm -rf *
(main_env) user@debian:~/tmp/silkworm/build$ cmake ..
-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.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-Conan: conan install /home/user/tmp/silkworm --profile:host=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;--profile:build=/home/user/tmp/silkworm/cmake/profiles/linux_x64_gcc_11_release;-v;error;--output-folder;/home/user/tmp/silkworm/build/conan2;--settings:all;&:build_type=Release;--build=missing
-- Could NOT find Git (missing: Git_DIR)
-- Found Git: /usr/bin/git (found version "2.39.5")
-- Could NOT find Threads (missing: Threads_DIR)
-- Performing Test HAS_NO_DEPRECATED_PRAGMA
-- Performing Test HAS_NO_DEPRECATED_PRAGMA - Success
-- Configuring done
-- Generating done
-- Build files have been written to: /home/user/tmp/silkworm/build
```
So I'm guessing that CMake < 3.30~~ should be the official supported CMake version?
Contributor guide
Assessment
This issue has not been assessed yet.