at 23.05-pre 4.5 kB view raw
1{ lib 2, buildPythonPackage 3, fetchFromGitHub 4, fetchzip 5, cmake 6, boost 7, catch2 8, inchi 9, cairo 10, eigen 11, python 12, rapidjson 13, maeparser 14, coordgenlibs 15, numpy 16, pandas 17, pillow 18, git 19}: 20let 21 external = { 22 avalon = fetchzip { 23 url = "http://sourceforge.net/projects/avalontoolkit/files/AvalonToolkit_1.2/AvalonToolkit_1.2.0.source.tar"; 24 sha256 = "0nhxfxckb5a5qs0g148f55yarhncqjgjzcvdskkv9rxi2nrs7160"; 25 stripRoot = false; 26 }; 27 yaehmop = fetchFromGitHub { 28 owner = "greglandrum"; 29 repo = "yaehmop"; 30 rev = "cfb5aeebbdf5ae93c4f4eeb14c7a507dea54ae9e"; 31 sha256 = "sha256-QMnc5RyHlY3giw9QmrkGntiA+Srs7OhCIKs9GGo5DfQ="; 32 }; 33 freesasa = fetchFromGitHub { 34 owner = "mittinatten"; 35 repo = "freesasa"; 36 rev = "2.1.1"; 37 sha256 = "sha256-fUJvLDTVhpBWl9MavZwp0kAO5Df1QuHEKqe20CXNfcg="; 38 }; 39 }; 40in 41buildPythonPackage rec { 42 pname = "rdkit"; 43 version = "2022.03.5"; 44 format = "other"; 45 46 src = 47 let 48 versionTag = lib.replaceStrings [ "." ] [ "_" ] version; 49 in 50 fetchFromGitHub { 51 owner = pname; 52 repo = pname; 53 rev = "Release_${versionTag}"; 54 sha256 = "19idgilabh04cbr1qj6zgrgsfjm248mmfz6fsr0smrd68d0xnml9"; 55 }; 56 57 unpackPhase = '' 58 mkdir -p source/External/AvalonTools/avalon source/External/YAeHMOP/yaehmop source/External/FreeSASA/freesasa 59 cp -r ${src}/* source 60 cp -r ${external.avalon}/SourceDistribution/* source/External/AvalonTools/avalon 61 cp -r ${external.yaehmop}/* source/External/YAeHMOP/yaehmop 62 cp -r ${external.freesasa}/* source/External/FreeSASA/freesasa 63 64 find source -type d -exec chmod 755 {} + 65 cp source/External/FreeSASA/freesasa2.c source/External/FreeSASA/freesasa/src 66 ln -s ${rapidjson} source/External/rapidjson-1.1.0 67 ''; 68 69 sourceRoot = "source"; 70 71 nativeBuildInputs = [ 72 cmake 73 git # required by freesasa 74 ]; 75 76 buildInputs = [ 77 boost 78 catch2 79 inchi 80 eigen 81 cairo 82 rapidjson 83 ]; 84 85 propagatedBuildInputs = [ 86 numpy 87 pandas 88 pillow 89 ]; 90 91 hardeningDisable = [ "format" ]; # required by yaehmop 92 93 dontUseSetuptoolsBuild = true; 94 dontUsePipInstall = true; 95 dontUseSetuptoolsCheck = true; 96 97 preConfigure = '' 98 # Don't want this contacting the git remote during the build 99 substituteInPlace External/YAeHMOP/CMakeLists.txt --replace \ 100 'GIT_TAG master' 'DOWNLOAD_COMMAND true' 101 102 # Since we can't expand with bash in cmakeFlags 103 cmakeFlags="$cmakeFlags -DPYTHON_NUMPY_INCLUDE_PATH=$(${python}/bin/python -c 'import numpy; print(numpy.get_include())')" 104 cmakeFlags="$cmakeFlags -DFREESASA_DIR=$PWD/External/FreeSASA/freesasa" 105 cmakeFlags="$cmakeFlags -DFREESASA_SRC_DIR=$PWD/External/FreeSASA/freesasa" 106 cmakeFlags="$cmakeFlags -DAVALONTOOLS_DIR=$PWD/External/AvalonTools/avalon" 107 ''; 108 109 cmakeFlags = [ 110 "-DCATCH_DIR=${catch2}/include/catch2" 111 "-DINCHI_LIBRARY=${inchi}/lib/libinchi.so" 112 "-DINCHI_LIBRARIES=${inchi}/lib/libinchi.so" 113 "-DINCHI_INCLUDE_DIR=${inchi}/include/inchi" 114 "-DEIGEN3_INCLUDE_DIR=${eigen}/include/eigen3" 115 "-DRDK_INSTALL_INTREE=OFF" 116 "-DRDK_INSTALL_STATIC_LIBS=OFF" 117 "-DRDK_INSTALL_COMIC_FONTS=OFF" 118 "-DRDK_BUILD_INCHI_SUPPORT=ON" 119 "-DRDK_BUILD_AVALON_SUPPORT=ON" 120 "-DRDK_BUILD_FREESASA_SUPPORT=ON" 121 "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" 122 "-DRDK_BUILD_MAEPARSER_SUPPORT=ON" 123 "-DMAEPARSER_DIR=${maeparser}" 124 "-DRDK_BUILD_COORDGEN_SUPPORT=ON" 125 "-DCOORDGEN_DIR=${coordgenlibs}" 126 "-DRDK_USE_URF=OFF" 127 "-DRDK_USE_FLEXBISON=OFF" 128 "-DRDK_BUILD_CAIRO_SUPPORT=ON" 129 "-DRDK_BUILD_THREADSAFE_SSS=ON" 130 "-DRDK_TEST_MULTITHREADED=ON" 131 "-DRDK_BUILD_CPP_TESTS=ON" 132 "-DRDK_TEST_MULTITHREADED=ON" 133 "-DPYTHON_EXECUTABLE=${python}/bin/python" 134 "-DBOOST_ROOT=${boost}" 135 "-DBoost_NO_SYSTEM_PATHS=ON" 136 "-DBoost_NO_BOOST_CMAKE=TRUE" 137 "-DCMAKE_SKIP_BUILD_RPATH=ON" # fails to find libs in pythonImportsCheckPhase otherwise 138 ]; 139 140 checkPhase = '' 141 export QT_QPA_PLATFORM='offscreen' 142 export RDBASE=$(realpath ..) 143 export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" 144 (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py) 145 ''; 146 147 pythonImportsCheck = [ 148 "rdkit" 149 "rdkit.Chem" 150 "rdkit.Chem.AllChem" 151 ]; 152 153 meta = with lib; { 154 description = "Open source toolkit for cheminformatics"; 155 maintainers = [ maintainers.rmcgibbo ]; 156 license = licenses.bsd3; 157 homepage = "https://www.rdkit.org"; 158 }; 159}