From f5eacdf247c6ebabcb4e05ac792caa4f58b16653 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Mon, 6 Oct 2025 09:40:20 +0300 Subject: [PATCH] lemon-graph: fix build with CMake 4.0 Pull in https://github.com/The-OpenROAD-Project/lemon-graph/pull/2. Upstream seems to be down (at least currently), and while this is an unofficial fork, the patch applies cleanly and fixes the build. --- .../le/lemon-graph/cmake_version.patch | 95 +++++++++++++++++++ pkgs/by-name/le/lemon-graph/package.nix | 5 + 2 files changed, 100 insertions(+) create mode 100644 pkgs/by-name/le/lemon-graph/cmake_version.patch diff --git a/pkgs/by-name/le/lemon-graph/cmake_version.patch b/pkgs/by-name/le/lemon-graph/cmake_version.patch new file mode 100644 index 000000000000..8a8827f65b0b --- /dev/null +++ b/pkgs/by-name/le/lemon-graph/cmake_version.patch @@ -0,0 +1,95 @@ +From 0073156cc16cecc597902e9294e4996dafacc1a3 Mon Sep 17 00:00:00 2001 +From: hiaselhans +Date: Wed, 21 May 2025 08:12:37 +0200 +Subject: [PATCH] update cmake to work with newer versions + +--- + .gitignore | 1 + + CMakeLists.txt | 61 +++++++++----------------------------------------- + 2 files changed, 11 insertions(+), 51 deletions(-) + create mode 100644 .gitignore + +diff --git a/.gitignore b/.gitignore +new file mode 100644 +index 0000000..c795b05 +--- /dev/null ++++ b/.gitignore +@@ -0,0 +1 @@ ++build +\ No newline at end of file +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 03e1cc7..26ec718 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1,61 +1,20 @@ +-CMAKE_MINIMUM_REQUIRED(VERSION 2.8) +- +-CMAKE_POLICY(SET CMP0048 OLD) ++CMAKE_MINIMUM_REQUIRED(VERSION 3.12...5.0) + + SET(PROJECT_NAME "LEMON") +-PROJECT(${PROJECT_NAME}) +- +-INCLUDE(FindPythonInterp) +-INCLUDE(FindWget) + +-IF(EXISTS ${PROJECT_SOURCE_DIR}/cmake/version.cmake) +- INCLUDE(${PROJECT_SOURCE_DIR}/cmake/version.cmake) +-ELSEIF(DEFINED ENV{LEMON_VERSION}) ++IF(DEFINED ENV{LEMON_VERSION}) + SET(LEMON_VERSION $ENV{LEMON_VERSION} CACHE STRING "LEMON version string.") ++ELSEIF(EXISTS ${CMAKE_SOURCE_DIR}/cmake/version.cmake) ++ INCLUDE(${CMAKE_SOURCE_DIR}/cmake/version.cmake) + ELSE() +- EXECUTE_PROCESS( +- COMMAND +- hg log -r. --template "{latesttag}" +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} +- OUTPUT_VARIABLE HG_REVISION_TAG +- ERROR_QUIET +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- EXECUTE_PROCESS( +- COMMAND +- hg log -r. --template "{latesttagdistance}" +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} +- OUTPUT_VARIABLE HG_REVISION_DIST +- ERROR_QUIET +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- EXECUTE_PROCESS( +- COMMAND +- hg log -r. --template "{node|short}" +- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} +- OUTPUT_VARIABLE HG_REVISION_ID +- ERROR_QUIET +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) ++ MESSAGE(FATAL_ERROR "LEMON_VERSION is not defined. Please set it in the environment") ++ENDIF() + +- IF(HG_REVISION_TAG STREQUAL "") +- SET(HG_REVISION_ID "hg-tip") +- ELSE() +- IF(HG_REVISION_TAG STREQUAL "null") +- SET(HG_REVISION_TAG "trunk") +- ELSEIF(HG_REVISION_TAG MATCHES "^r") +- STRING(SUBSTRING ${HG_REVISION_TAG} 1 -1 HG_REVISION_TAG) +- ENDIF() +- IF(HG_REVISION_DIST STREQUAL "0") +- SET(HG_REVISION ${HG_REVISION_TAG}) +- ELSE() +- SET(HG_REVISION +- "${HG_REVISION_TAG}+${HG_REVISION_DIST}-${HG_REVISION_ID}") +- ENDIF() +- ENDIF() + +- SET(LEMON_VERSION ${HG_REVISION} CACHE STRING "LEMON version string.") +-ENDIF() ++PROJECT(${PROJECT_NAME} VERSION ${LEMON_VERSION}) ++ ++find_package(Python3 REQUIRED COMPONENTS Interpreter) ++INCLUDE(FindWget) + + SET(PROJECT_VERSION ${LEMON_VERSION}) + diff --git a/pkgs/by-name/le/lemon-graph/package.nix b/pkgs/by-name/le/lemon-graph/package.nix index 1d687d237d94..71cd026e7811 100644 --- a/pkgs/by-name/le/lemon-graph/package.nix +++ b/pkgs/by-name/le/lemon-graph/package.nix @@ -3,6 +3,7 @@ stdenv, fetchurl, cmake, + python3, }: stdenv.mkDerivation rec { @@ -14,6 +15,7 @@ stdenv.mkDerivation rec { sha256 = "1j6kp9axhgna47cfnmk1m7vnqn01hwh7pf1fp76aid60yhjwgdvi"; }; + buildInputs = [ python3 ]; nativeBuildInputs = [ cmake ]; # error: no viable conversion from ... @@ -22,6 +24,9 @@ stdenv.mkDerivation rec { patches = [ # error: ISO C++17 does not allow 'register' storage class specifier ./remove-register.patch + + # fix cmake compatibility. vendored from https://github.com/The-OpenROAD-Project/lemon-graph/pull/2 + ./cmake_version.patch ]; meta = with lib; {