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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions