at 25.11-pre 4.4 kB view raw
1{ 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}: 21let 22 external = { 23 avalon = fetchFromGitHub { 24 owner = "rdkit"; 25 repo = "ava-formake"; 26 rev = "AvalonToolkit_2.0.5-pre.3"; 27 hash = "sha256-2MuFZgRIHXnkV7Nc1da4fa7wDx57VHUtwLthrmjk+5o="; 28 }; 29 yaehmop = fetchFromGitHub { 30 owner = "greglandrum"; 31 repo = "yaehmop"; 32 rev = "v2024.03.1"; 33 hash = "sha256-rhR7Ev+9Fk/Ks7R2x2SjWu1L/48a4zHDHUBohx1Dw/M="; 34 }; 35 freesasa = fetchFromGitHub { 36 owner = "mittinatten"; 37 repo = "freesasa"; 38 rev = "2.0.3"; 39 hash = "sha256-7E+imvfDAJFnXQRWb5hNaSu+Xrf9NXeIKc9fl+o3yHQ="; 40 }; 41 pubchem-align3d = fetchFromGitHub { 42 owner = "ncbi"; 43 repo = "pubchem-align3d"; 44 rev = "daefab3dd0c90ca56da9d3d5e375fe4d651e6be3"; 45 hash = "sha256-tQB4wqza9rlSoy4Uj9bA99ddawjxGyN9G7DYbcv/Qdo="; 46 }; 47 }; 48 boost' = boost.override { enableNumpy = true; }; 49in 50buildPythonPackage rec { 51 pname = "rdkit"; 52 version = "2024.09.1"; 53 pyproject = false; 54 55 src = 56 let 57 versionTag = lib.replaceStrings [ "." ] [ "_" ] version; 58 in 59 fetchFromGitHub { 60 owner = "rdkit"; 61 repo = "rdkit"; 62 rev = "Release_${versionTag}"; 63 hash = "sha256-UsyPlAJ8FISblF8szEmRqWansunIhW/gbEBZx13YM+A="; 64 }; 65 66 unpackPhase = '' 67 cp -r $src/* . 68 find . -type d -exec chmod +w {} + 69 70 mkdir External/AvalonTools/avalon 71 # In buildPhase, CMake patches the file in this directory 72 # see https://github.com/rdkit/rdkit/pull/5928 73 cp -r ${external.avalon}/* External/AvalonTools/avalon 74 75 mkdir External/YAeHMOP/yaehmop 76 ln -s ${external.yaehmop}/* External/YAeHMOP/yaehmop 77 78 mkdir -p External/FreeSASA/freesasa 79 cp -r ${external.freesasa}/* External/FreeSASA/freesasa 80 chmod +w External/FreeSASA/freesasa/src 81 cp External/FreeSASA/freesasa2.c External/FreeSASA/freesasa/src 82 83 ln -s ${external.pubchem-align3d} External/pubchem_shape/pubchem-align3d 84 ln -s ${rapidjson} External/rapidjson-1.1.0 85 ln -s ${comic-neue}/share/fonts/truetype/ComicNeue-Regular.ttf Data/Fonts/ 86 ''; 87 88 nativeBuildInputs = [ cmake ]; 89 90 buildInputs = [ 91 boost' 92 cairo 93 catch2_3 94 coordgenlibs 95 eigen 96 inchi 97 maeparser 98 ]; 99 100 dependencies = [ 101 numpy 102 pandas 103 pillow 104 ]; 105 106 hardeningDisable = [ "format" ]; # required by yaehmop 107 108 cmakeFlags = [ 109 (lib.cmakeBool "Boost_NO_BOOST_CMAKE" true) 110 (lib.cmakeBool "Boost_NO_SYSTEM_PATHS" true) 111 (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) # fails to find libs in pythonImportsCheckPhase otherwise 112 (lib.cmakeBool "RDK_BUILD_AVALON_SUPPORT" true) 113 (lib.cmakeBool "RDK_BUILD_CAIRO_SUPPORT" true) 114 (lib.cmakeBool "RDK_BUILD_COORDGEN_SUPPORT" true) 115 (lib.cmakeBool "RDK_BUILD_CPP_TESTS" true) 116 (lib.cmakeBool "RDK_BUILD_FREESASA_SUPPORT" true) 117 (lib.cmakeBool "RDK_BUILD_INCHI_SUPPORT" true) 118 (lib.cmakeBool "RDK_BUILD_MAEPARSER_SUPPORT" true) 119 (lib.cmakeBool "RDK_BUILD_THREADSAFE_SSS" true) 120 (lib.cmakeBool "RDK_BUILD_XYZ2MOL_SUPPORT" 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_USE_FLEXBISON" false) 126 (lib.cmakeBool "RDK_USE_URF" false) 127 (lib.cmakeFeature "AVALONTOOLS_DIR" "avalon") 128 (lib.cmakeFeature "FREESASA_SRC_DIR" "freesasa") 129 (lib.cmakeFeature "INCHI_INCLUDE_DIR" "${inchi}/include/inchi") 130 (lib.cmakeFeature "PUBCHEMSHAPE_DIR" "External/pubchem_shape/pubchem-align3d") 131 ]; 132 133 checkPhase = '' 134 export QT_QPA_PLATFORM='offscreen' 135 export RDBASE=$(realpath ..) 136 export PYTHONPATH="$out/${python.sitePackages}:$PYTHONPATH" 137 (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py) 138 ''; 139 140 pythonImportsCheck = [ 141 "rdkit" 142 "rdkit.Chem" 143 "rdkit.Chem.AllChem" 144 "rdkit.Chem.rdDetermineBonds" 145 ]; 146 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 }; 157}