Skip to content

Inncompatibility with cmake 4.0.0 #2862

@r-bazo

Description

@r-bazo

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 <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> 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 <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> 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 <min> value.  Or, use the <min>...<max> syntax
  to tell CMake that the project requires at least <min> but has been updated
  to work with policies introduced by <max> 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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions