Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
at gcc-offload 157 lines 4.5 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 memorymappingHook, 21}: 22let 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; }; 50in 51buildPythonPackage rec { 52 pname = "rdkit"; 53 version = "2024.09.1"; 54 pyproject = false; 55 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 }; 66 67 unpackPhase = '' 68 cp -r $src/* . 69 find . -type d -exec chmod +w {} + 70 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 75 76 mkdir External/YAeHMOP/yaehmop 77 ln -s ${external.yaehmop}/* External/YAeHMOP/yaehmop 78 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 83 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 ''; 88 89 nativeBuildInputs = [ cmake ]; 90 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 ]; 100 101 dependencies = [ 102 numpy 103 pandas 104 pillow 105 ]; 106 107 hardeningDisable = [ "format" ]; # required by yaehmop 108 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 ]; 133 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 ''; 140 141 pythonImportsCheck = [ 142 "rdkit" 143 "rdkit.Chem" 144 "rdkit.Chem.AllChem" 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}