From 436d2122acffdef90fe4f9733257a06982f7c014 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Fri, 26 Sep 2025 12:34:11 +0000 Subject: [PATCH] python3Packages.rdkit: 2024.09.1 -> 2025.03.1 --- .../python-modules/rdkit/default.nix | 92 +++++++++++++++---- .../rdkit/dont-fetch-better-enums.patch | 14 +++ 2 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 pkgs/development/python-modules/rdkit/dont-fetch-better-enums.patch diff --git a/pkgs/development/python-modules/rdkit/default.nix b/pkgs/development/python-modules/rdkit/default.nix index 77cd25503084..55d548fbdfab 100644 --- a/pkgs/development/python-modules/rdkit/default.nix +++ b/pkgs/development/python-modules/rdkit/default.nix @@ -1,13 +1,14 @@ { lib, - stdenv, buildPythonPackage, fetchFromGitHub, + fetchzip, + applyPatches, + replaceVars, cmake, comic-neue, boost, catch2_3, - inchi, cairo, eigen, python, @@ -26,11 +27,27 @@ let rev = "AvalonToolkit_2.0.5-pre.3"; hash = "sha256-2MuFZgRIHXnkV7Nc1da4fa7wDx57VHUtwLthrmjk+5o="; }; - yaehmop = fetchFromGitHub { - owner = "greglandrum"; - repo = "yaehmop"; - rev = "v2024.03.1"; - hash = "sha256-rhR7Ev+9Fk/Ks7R2x2SjWu1L/48a4zHDHUBohx1Dw/M="; + chemdraw = fetchFromGitHub { + owner = "Glysade"; + repo = "chemdraw"; + tag = "v1.0.10"; + hash = "sha256-ee2Oxvo2d7Yb59lN0zkrbFqy/3rOvVLo6qdS+f23wVQ="; + }; + yaehmop = applyPatches { + src = fetchFromGitHub { + owner = "greglandrum"; + repo = "yaehmop"; + rev = "v2025.03.1"; + hash = "sha256-rhR7Ev+9Fk/Ks7R2x2SjWu1L/48a4zHDHUBohx1Dw/M="; + }; + + # Compatibility with CMake < 3.5 has been removed from CMake. + postPatch = '' + substituteInPlace tightbind/CMakeLists.txt \ + --replace-fail \ + "cmake_minimum_required(VERSION 3.0)" \ + "cmake_minimum_required(VERSION 3.5)" + ''; }; freesasa = fetchFromGitHub { owner = "mittinatten"; @@ -44,12 +61,23 @@ let rev = "daefab3dd0c90ca56da9d3d5e375fe4d651e6be3"; hash = "sha256-tQB4wqza9rlSoy4Uj9bA99ddawjxGyN9G7DYbcv/Qdo="; }; + better_enums = fetchFromGitHub { + owner = "aantron"; + repo = "better-enums"; + tag = "0.11.3"; + hash = "sha256-UYldCOkRTySc78oEOJzgoY9h2lB386W/D5Rz3KjVCO8="; + }; + # We cannot use the inchi from nixpkgs as the version is too old + inchi = fetchzip { + url = "https://github.com/IUPAC-InChI/InChI/releases/download/v1.07.3/INCHI-1-SRC.zip"; + hash = "sha256-TUC2175HifB63EfSsg/ixA3wYzAxsvUnY6ZyNjVR/Fc="; + }; }; boost' = boost.override { enableNumpy = true; }; in buildPythonPackage rec { pname = "rdkit"; - version = "2024.09.1"; + version = "2025.03.6"; pyproject = false; src = @@ -59,8 +87,8 @@ buildPythonPackage rec { fetchFromGitHub { owner = "rdkit"; repo = "rdkit"; - rev = "Release_${versionTag}"; - hash = "sha256-UsyPlAJ8FISblF8szEmRqWansunIhW/gbEBZx13YM+A="; + tag = "Release_${versionTag}"; + hash = "sha256-DqnwfT+lX7OnArIcFlCBrDl+QDmNpbPO9u7OGwu8fJo="; }; unpackPhase = '' @@ -72,19 +100,46 @@ buildPythonPackage rec { # see https://github.com/rdkit/rdkit/pull/5928 cp -r ${external.avalon}/* External/AvalonTools/avalon + mkdir External/ChemDraw/chemdraw + cp -r ${external.chemdraw}/* External/ChemDraw/chemdraw/ + chmod -R +w External/ChemDraw/chemdraw + mkdir External/YAeHMOP/yaehmop ln -s ${external.yaehmop}/* External/YAeHMOP/yaehmop - mkdir -p External/FreeSASA/freesasa + mkdir External/FreeSASA/freesasa cp -r ${external.freesasa}/* External/FreeSASA/freesasa chmod +w External/FreeSASA/freesasa/src cp External/FreeSASA/freesasa2.c External/FreeSASA/freesasa/src - ln -s ${external.pubchem-align3d} External/pubchem_shape/pubchem-align3d + mkdir External/pubchem_shape/pubchem-align3d + cp -r ${external.pubchem-align3d}/* External/pubchem_shape/pubchem-align3d + + mkdir External/INCHI-API/src + ln -s ${external.inchi}/* External/INCHI-API/src + ln -s ${rapidjson} External/rapidjson-1.1.0 ln -s ${comic-neue}/share/fonts/truetype/ComicNeue-Regular.ttf Data/Fonts/ ''; + patches = [ + (replaceVars ./dont-fetch-better-enums.patch { + inherit (external) better_enums; + }) + ]; + + # Prevent linking to libpython which fails on darwin with: + # Undefined symbols for architecture arm64 + # Reverts https://github.com/rdkit/rdkit/commit/470df8cd2fab78d64ef1dd254576097b651c3dd9 + postPatch = '' + substituteInPlace \ + CMakeLists.txt \ + External/pubchem_shape/Wrap/CMakeLists.txt \ + --replace-fail \ + "find_package(Python3 COMPONENTS Interpreter Development.Module NumPy" \ + "find_package(Python3 COMPONENTS Interpreter Development NumPy" \ + ''; + nativeBuildInputs = [ cmake ]; buildInputs = [ @@ -93,7 +148,6 @@ buildPythonPackage rec { catch2_3 coordgenlibs eigen - inchi maeparser ]; @@ -126,8 +180,8 @@ buildPythonPackage rec { (lib.cmakeBool "RDK_USE_URF" false) (lib.cmakeFeature "AVALONTOOLS_DIR" "avalon") (lib.cmakeFeature "FREESASA_SRC_DIR" "freesasa") - (lib.cmakeFeature "INCHI_INCLUDE_DIR" "${inchi}/include/inchi") - (lib.cmakeFeature "PUBCHEMSHAPE_DIR" "External/pubchem_shape/pubchem-align3d") + (lib.cmakeFeature "maeparser_DIR" "${maeparser}/lib/cmake") + (lib.cmakeFeature "coordgen_DIR" "${coordgenlibs}/lib/cmake") ]; checkPhase = '' @@ -144,14 +198,14 @@ buildPythonPackage rec { "rdkit.Chem.rdDetermineBonds" ]; - meta = with lib; { + meta = { description = "Open source toolkit for cheminformatics"; - maintainers = with maintainers; [ + maintainers = with lib.maintainers; [ rmcgibbo natsukium ]; - license = licenses.bsd3; + license = lib.licenses.bsd3; homepage = "https://www.rdkit.org"; - changelog = "https://github.com/rdkit/rdkit/releases/tag/${src.rev}"; + changelog = "https://github.com/rdkit/rdkit/releases/tag/${src.tag}"; }; } diff --git a/pkgs/development/python-modules/rdkit/dont-fetch-better-enums.patch b/pkgs/development/python-modules/rdkit/dont-fetch-better-enums.patch new file mode 100644 index 000000000000..c52f30a2c20f --- /dev/null +++ b/pkgs/development/python-modules/rdkit/dont-fetch-better-enums.patch @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 77939f452..9cace7fe1 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -184,8 +184,7 @@ Include(FetchContent) + + FetchContent_Declare( + better_enums +- GIT_REPOSITORY https://github.com/aantron/better-enums.git +- GIT_TAG c35576bed0295689540b39873126129adfa0b4c8 # 0.11.3 ++ URL @better_enums@ + ) + + if(RDK_INSTALL_INTREE)