at 22.05-pre 4.3 kB view raw
1{ lib 2, buildPythonPackage 3, fetchFromGitHub 4, fetchzip 5, cmake 6, boost 7, catch 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 = "1b13b52e2738a77715b1bad876e3b4e93f2b5269"; 31 sha256 = "1jp7wz8win4mgwxkaz2gnrgsaaqgln04n2lwgfr96isdv1klf62d"; 32 }; 33 freesasa = fetchFromGitHub 34 { 35 owner = "mittinatten"; 36 repo = "freesasa"; 37 rev = "2.0.3"; 38 sha256 = "0x686zm9fpyg5647fdgxnxgbwav99nc6ymh4bmkr2063yyda4kzc"; 39 }; 40 }; 41in 42buildPythonPackage rec { 43 pname = "rdkit"; 44 version = "2020.09.5"; 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 = "1ycbjia223d0w9xiwk36x2vkdidsx198rzkfyxz48cbax9vvklzq"; 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 catch 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=${catch}/include/catch" 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_BUILD_INCHI_SUPPORT=ON" 118 "-DRDK_BUILD_AVALON_SUPPORT=ON" 119 "-DRDK_BUILD_FREESASA_SUPPORT=ON" 120 "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" 121 "-DRDK_BUILD_MAEPARSER_SUPPORT=ON" 122 "-DMAEPARSER_DIR=${maeparser}" 123 "-DRDK_BUILD_COORDGEN_SUPPORT=ON" 124 "-DCOORDGEN_DIR=${coordgenlibs}" 125 "-DRDK_USE_URF=OFF" 126 "-DRDK_USE_FLEXBISON=OFF" 127 "-DRDK_BUILD_CAIRO_SUPPORT=ON" 128 "-DRDK_BUILD_THREADSAFE_SSS=ON" 129 "-DRDK_TEST_MULTITHREADED=ON" 130 "-DRDK_BUILD_CPP_TESTS=ON" 131 "-DRDK_TEST_MULTITHREADED=ON" 132 "-DPYTHON_EXECUTABLE=${python}/bin/python" 133 "-DBOOST_ROOT=${boost}" 134 "-DBoost_NO_SYSTEM_PATHS=ON" 135 "-DBoost_NO_BOOST_CMAKE=TRUE" 136 ]; 137 138 checkPhase = '' 139 export QT_QPA_PLATFORM='offscreen' 140 export RDBASE=$(realpath ..) 141 export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" 142 (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py) 143 ''; 144 145 pythonImportsCheck = [ 146 "rdkit" 147 "rdkit.Chem" 148 "rdkit.Chem.AllChem" 149 ]; 150 151 meta = with lib; { 152 description = "Open source toolkit for cheminformatics"; 153 maintainers = [ maintainers.rmcgibbo ]; 154 license = licenses.bsd3; 155 homepage = "https://www.rdkit.org"; 156 }; 157}