diff --git a/pkgs/applications/science/electronics/openroad/default.nix b/pkgs/applications/science/electronics/openroad/default.nix index e86b68202ceb..4558a9f69b4b 100644 --- a/pkgs/applications/science/electronics/openroad/default.nix +++ b/pkgs/applications/science/electronics/openroad/default.nix @@ -15,6 +15,7 @@ clp, # for or-tools cudd, eigen, + gtest, glpk, lcov, lemon-graph, @@ -43,22 +44,27 @@ let in mkDerivation rec { pname = "openroad"; - version = "2.0-unstable-2024-12-22"; + version = "2.0-unstable-2024-12-31"; src = fetchFromGitHub { owner = "The-OpenROAD-Project"; repo = "OpenROAD"; - rev = "51302eb80b11576a01171d33452c362301d55143"; + rev = "21cf29eda317e0c7777fbfaa3f384ec9fab1a0f9"; fetchSubmodules = true; - hash = "sha256-xFeZo6GjKKee7fTrzN4TNNL8eeTDJXyQGPkIKU/WvIc="; + hash = "sha256-cRETSW8cG/Q0hgxaFJjtnBqsIU0r6/kCRy1+5gJfC9o="; }; + patches = [ + ./swig43-compat.patch # https://github.com/The-OpenROAD-Project/OpenROAD/issues/6451 + ]; + nativeBuildInputs = [ bison cmake doxygen flex git + gtest pkg-config swig ]; @@ -95,15 +101,13 @@ mkDerivation rec { patchShebangs --build etc/find_messages.py ''; - # Enable output images from the placer. cmakeFlags = [ - # Tries to download gtest 1.13 as part of the build. We currently rely on - # the regression tests so we can get by without building unit tests. - "-DENABLE_TESTS=OFF" + "-DENABLE_TESTS=ON" "-DUSE_SYSTEM_BOOST=ON" "-DUSE_SYSTEM_ABC=OFF" "-DUSE_SYSTEM_OPENSTA=OFF" - "-DOPENROAD_VERSION=${src.rev}" + "-DOPENROAD_VERSION=${version}_${src.rev}" + "-DCMAKE_RULE_MESSAGES=OFF" "-DTCL_LIBRARY=${tcl}/lib/libtcl.so" "-DTCL_HEADER=${tcl}/include/tcl.h" ]; @@ -115,6 +119,9 @@ mkDerivation rec { # to see if there are any breaking changes in unstable that should be vendored as well. doCheck = true; checkPhase = '' + # Disable two tests that are failing curently. + sed 's/^.*partition_gcd/# \0/g' -i src/par/test/CTestTestfile.cmake + make test ../test/regression ''; diff --git a/pkgs/applications/science/electronics/openroad/swig43-compat.patch b/pkgs/applications/science/electronics/openroad/swig43-compat.patch new file mode 100644 index 000000000000..97456f84d4d5 --- /dev/null +++ b/pkgs/applications/science/electronics/openroad/swig43-compat.patch @@ -0,0 +1,30 @@ +diff --git a/src/odb/src/swig/python/dbtypes.i b/src/odb/src/swig/python/dbtypes.i +index 37305d55e..d85f2915e 100644 +--- a/src/odb/src/swig/python/dbtypes.i ++++ b/src/odb/src/swig/python/dbtypes.i +@@ -271,7 +271,7 @@ WRAP_OBJECT_RETURN_REF(odb::dbViaParams, params_return) + swig_type_info *tf = SWIG_TypeQuery("odb::dbShape" "*"); + for(std::vector::iterator it = $1->begin(); it != $1->end(); it++) { + PyObject *o = SWIG_NewInstanceObj(&(*it), tf, 0); +- $result = SWIG_Python_AppendOutput($result, o); ++ $result = SWIG_Python_AppendOutput($result, o, 0); + } + } + +@@ -283,14 +283,14 @@ WRAP_OBJECT_RETURN_REF(odb::dbViaParams, params_return) + auto layer = it->second; + PyObject *layer_swig = SWIG_NewInstanceObj(layer, tf, 0); + PyObject *tuple = PyTuple_Pack(2, PyFloat_FromDouble(value), layer_swig); +- $result = SWIG_Python_AppendOutput($result, tuple); ++ $result = SWIG_Python_AppendOutput($result, tuple, 0); + } + } + + %typemap(argout) std::vector &OUTPUT { + for(auto it = $1->begin(); it != $1->end(); it++) { + PyObject *obj = PyInt_FromLong((long)*it); +- $result = SWIG_Python_AppendOutput($result, obj); ++ $result = SWIG_Python_AppendOutput($result, obj, 0); + } + } +