evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / development / python-modules / rdkit / default.nix
blobec98f19c271f545bdb16d0ea2f1fe958e8401e51
2   lib,
3   stdenv,
4   buildPythonPackage,
5   fetchFromGitHub,
6   cmake,
7   comic-neue,
8   boost,
9   catch2_3,
10   inchi,
11   cairo,
12   eigen,
13   python,
14   rapidjson,
15   maeparser,
16   coordgenlibs,
17   numpy,
18   pandas,
19   pillow,
20   memorymappingHook,
22 let
23   external = {
24     avalon = fetchFromGitHub {
25       owner = "rdkit";
26       repo = "ava-formake";
27       rev = "AvalonToolkit_2.0.5-pre.3";
28       hash = "sha256-2MuFZgRIHXnkV7Nc1da4fa7wDx57VHUtwLthrmjk+5o=";
29     };
30     yaehmop = fetchFromGitHub {
31       owner = "greglandrum";
32       repo = "yaehmop";
33       rev = "v2024.03.1";
34       hash = "sha256-rhR7Ev+9Fk/Ks7R2x2SjWu1L/48a4zHDHUBohx1Dw/M=";
35     };
36     freesasa = fetchFromGitHub {
37       owner = "mittinatten";
38       repo = "freesasa";
39       rev = "2.0.3";
40       hash = "sha256-7E+imvfDAJFnXQRWb5hNaSu+Xrf9NXeIKc9fl+o3yHQ=";
41     };
42     pubchem-align3d = fetchFromGitHub {
43       owner = "ncbi";
44       repo = "pubchem-align3d";
45       rev = "daefab3dd0c90ca56da9d3d5e375fe4d651e6be3";
46       hash = "sha256-tQB4wqza9rlSoy4Uj9bA99ddawjxGyN9G7DYbcv/Qdo=";
47     };
48   };
49   boost' = boost.override { enableNumpy = true; };
51 buildPythonPackage rec {
52   pname = "rdkit";
53   version = "2024.09.1";
54   pyproject = false;
56   src =
57     let
58       versionTag = lib.replaceStrings [ "." ] [ "_" ] version;
59     in
60     fetchFromGitHub {
61       owner = "rdkit";
62       repo = "rdkit";
63       rev = "Release_${versionTag}";
64       hash = "sha256-UsyPlAJ8FISblF8szEmRqWansunIhW/gbEBZx13YM+A=";
65     };
67   unpackPhase = ''
68     cp -r $src/* .
69     find . -type d -exec chmod +w {} +
71     mkdir External/AvalonTools/avalon
72     # In buildPhase, CMake patches the file in this directory
73     # see https://github.com/rdkit/rdkit/pull/5928
74     cp -r ${external.avalon}/* External/AvalonTools/avalon
76     mkdir External/YAeHMOP/yaehmop
77     ln -s ${external.yaehmop}/* External/YAeHMOP/yaehmop
79     mkdir -p External/FreeSASA/freesasa
80     cp -r ${external.freesasa}/* External/FreeSASA/freesasa
81     chmod +w External/FreeSASA/freesasa/src
82     cp External/FreeSASA/freesasa2.c External/FreeSASA/freesasa/src
84     ln -s ${external.pubchem-align3d} External/pubchem_shape/pubchem-align3d
85     ln -s ${rapidjson} External/rapidjson-1.1.0
86     ln -s ${comic-neue}/share/fonts/truetype/ComicNeue-Regular.ttf Data/Fonts/
87   '';
89   nativeBuildInputs = [ cmake ];
91   buildInputs = [
92     boost'
93     cairo
94     catch2_3
95     coordgenlibs
96     eigen
97     inchi
98     maeparser
99   ] ++ lib.optionals (stdenv.system == "x86_64-darwin") [ memorymappingHook ];
101   dependencies = [
102     numpy
103     pandas
104     pillow
105   ];
107   hardeningDisable = [ "format" ]; # required by yaehmop
109   cmakeFlags = [
110     (lib.cmakeBool "Boost_NO_BOOST_CMAKE" true)
111     (lib.cmakeBool "Boost_NO_SYSTEM_PATHS" true)
112     (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) # fails to find libs in pythonImportsCheckPhase otherwise
113     (lib.cmakeBool "RDK_BUILD_AVALON_SUPPORT" true)
114     (lib.cmakeBool "RDK_BUILD_CAIRO_SUPPORT" true)
115     (lib.cmakeBool "RDK_BUILD_COORDGEN_SUPPORT" true)
116     (lib.cmakeBool "RDK_BUILD_CPP_TESTS" true)
117     (lib.cmakeBool "RDK_BUILD_FREESASA_SUPPORT" true)
118     (lib.cmakeBool "RDK_BUILD_INCHI_SUPPORT" true)
119     (lib.cmakeBool "RDK_BUILD_MAEPARSER_SUPPORT" true)
120     (lib.cmakeBool "RDK_BUILD_THREADSAFE_SSS" true)
121     (lib.cmakeBool "RDK_BUILD_YAEHMOP_SUPPORT" true)
122     (lib.cmakeBool "RDK_INSTALL_INTREE" false)
123     (lib.cmakeBool "RDK_INSTALL_STATIC_LIBS" false)
124     (lib.cmakeBool "RDK_TEST_MULTITHREADED" true)
125     (lib.cmakeBool "RDK_TEST_MULTITHREADED" true)
126     (lib.cmakeBool "RDK_USE_FLEXBISON" false)
127     (lib.cmakeBool "RDK_USE_URF" false)
128     (lib.cmakeFeature "AVALONTOOLS_DIR" "avalon")
129     (lib.cmakeFeature "FREESASA_SRC_DIR" "freesasa")
130     (lib.cmakeFeature "INCHI_INCLUDE_DIR" "${inchi}/include/inchi")
131     (lib.cmakeFeature "PUBCHEMSHAPE_DIR" "External/pubchem_shape/pubchem-align3d")
132   ];
134   checkPhase = ''
135     export QT_QPA_PLATFORM='offscreen'
136     export RDBASE=$(realpath ..)
137     export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH"
138     (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py)
139   '';
141   pythonImportsCheck = [
142     "rdkit"
143     "rdkit.Chem"
144     "rdkit.Chem.AllChem"
145   ];
147   meta = with lib; {
148     description = "Open source toolkit for cheminformatics";
149     maintainers = with maintainers; [
150       rmcgibbo
151       natsukium
152     ];
153     license = licenses.bsd3;
154     homepage = "https://www.rdkit.org";
155     changelog = "https://github.com/rdkit/rdkit/releases/tag/${src.rev}";
156   };