Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at domenkozar-patch-1 154 lines 4.1 kB view raw
1{ lib 2, buildPythonPackage 3, fetchFromGitHub 4, cmake 5, comic-neue 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}: 19let 20 external = { 21 avalon = fetchFromGitHub { 22 owner = "rohdebe1"; 23 repo = "ava-formake"; 24 rev = "AvalonToolkit_2.0.2"; 25 hash = "sha256-YI39OknHiSyArNGqRKrSVzEJnFc1xJ0W3UcTZrTKeME="; 26 }; 27 yaehmop = fetchFromGitHub { 28 owner = "greglandrum"; 29 repo = "yaehmop"; 30 rev = "v2022.09.1"; 31 hash = "sha256-QMnc5RyHlY3giw9QmrkGntiA+Srs7OhCIKs9GGo5DfQ="; 32 }; 33 freesasa = fetchFromGitHub { 34 owner = "mittinatten"; 35 repo = "freesasa"; 36 rev = "2.0.3"; 37 hash = "sha256-7E+imvfDAJFnXQRWb5hNaSu+Xrf9NXeIKc9fl+o3yHQ="; 38 }; 39 }; 40in 41buildPythonPackage rec { 42 pname = "rdkit"; 43 version = "2022.09.1"; 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 hash = "sha256-AaawjCv3/ShByOKU0c37/hjuyfD7NhFC8UngDoG7C0s="; 55 }; 56 57 unpackPhase = '' 58 cp -r $src/* . 59 find . -type d -exec chmod +w {} + 60 61 mkdir External/AvalonTools/avalon 62 ln -s ${external.avalon}/* External/AvalonTools/avalon 63 64 mkdir External/YAeHMOP/yaehmop 65 ln -s ${external.yaehmop}/* External/YAeHMOP/yaehmop 66 67 mkdir -p External/FreeSASA/freesasa 68 cp -r ${external.freesasa}/* External/FreeSASA/freesasa 69 chmod +w External/FreeSASA/freesasa/src 70 cp External/FreeSASA/freesasa2.c External/FreeSASA/freesasa/src 71 72 ln -s ${rapidjson} External/rapidjson-1.1.0 73 ln -s ${comic-neue}/share/fonts/truetype/ComicNeue-Regular.ttf Data/Fonts/ 74 ''; 75 76 nativeBuildInputs = [ 77 cmake 78 ]; 79 80 buildInputs = [ 81 boost 82 cairo 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 # Since we can't expand with bash in cmakeFlags 99 cmakeFlags="$cmakeFlags -DPYTHON_NUMPY_INCLUDE_PATH=$(${python}/bin/python -c 'import numpy; print(numpy.get_include())')" 100 cmakeFlags="$cmakeFlags -DFREESASA_DIR=$PWD/External/FreeSASA/freesasa" 101 cmakeFlags="$cmakeFlags -DFREESASA_SRC_DIR=$PWD/External/FreeSASA/freesasa" 102 cmakeFlags="$cmakeFlags -DAVALONTOOLS_DIR=$PWD/External/AvalonTools/avalon" 103 ''; 104 105 cmakeFlags = [ 106 "-DCATCH_DIR=${catch2}/include/catch2" 107 "-DINCHI_LIBRARY=${inchi}/lib/libinchi.so" 108 "-DINCHI_LIBRARIES=${inchi}/lib/libinchi.so" 109 "-DINCHI_INCLUDE_DIR=${inchi}/include/inchi" 110 "-DEIGEN3_INCLUDE_DIR=${eigen}/include/eigen3" 111 "-DRDK_INSTALL_INTREE=OFF" 112 "-DRDK_INSTALL_STATIC_LIBS=OFF" 113 "-DRDK_BUILD_INCHI_SUPPORT=ON" 114 "-DRDK_BUILD_AVALON_SUPPORT=ON" 115 "-DRDK_BUILD_FREESASA_SUPPORT=ON" 116 "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" 117 "-DRDK_BUILD_MAEPARSER_SUPPORT=ON" 118 "-DMAEPARSER_DIR=${maeparser}" 119 "-DRDK_BUILD_COORDGEN_SUPPORT=ON" 120 "-DCOORDGEN_DIR=${coordgenlibs}" 121 "-DRDK_USE_URF=OFF" 122 "-DRDK_USE_FLEXBISON=OFF" 123 "-DRDK_BUILD_CAIRO_SUPPORT=ON" 124 "-DRDK_BUILD_THREADSAFE_SSS=ON" 125 "-DRDK_TEST_MULTITHREADED=ON" 126 "-DRDK_BUILD_CPP_TESTS=ON" 127 "-DRDK_TEST_MULTITHREADED=ON" 128 "-DPYTHON_EXECUTABLE=${python}/bin/python" 129 "-DBOOST_ROOT=${boost}" 130 "-DBoost_NO_SYSTEM_PATHS=ON" 131 "-DBoost_NO_BOOST_CMAKE=TRUE" 132 "-DCMAKE_SKIP_BUILD_RPATH=ON" # fails to find libs in pythonImportsCheckPhase otherwise 133 ]; 134 135 checkPhase = '' 136 export QT_QPA_PLATFORM='offscreen' 137 export RDBASE=$(realpath ..) 138 export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH" 139 (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py) 140 ''; 141 142 pythonImportsCheck = [ 143 "rdkit" 144 "rdkit.Chem" 145 "rdkit.Chem.AllChem" 146 ]; 147 148 meta = with lib; { 149 description = "Open source toolkit for cheminformatics"; 150 maintainers = [ maintainers.rmcgibbo ]; 151 license = licenses.bsd3; 152 homepage = "https://www.rdkit.org"; 153 }; 154}