about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/python-modules/rdkit
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-02-16 18:32:21 +0000
committerAlyssa Ross <hi@alyssa.is>2021-02-16 18:32:21 +0000
commit9becdcc5df71b47a5da84ad670e9a7eae9e0c65a (patch)
tree2ddf0335eb393f89501e3753b50c3f7ab0552d12 /nixpkgs/pkgs/development/python-modules/rdkit
parent49f2a77ac9abc88c253f68952eda26557fc3b555 (diff)
parentff96a0fa5635770390b184ae74debea75c3fd534 (diff)
downloadnixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar.gz
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar.bz2
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar.lz
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar.xz
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.tar.zst
nixlib-9becdcc5df71b47a5da84ad670e9a7eae9e0c65a.zip
nixpkgs: merge nixos-unstable
Diffstat (limited to 'nixpkgs/pkgs/development/python-modules/rdkit')
-rw-r--r--nixpkgs/pkgs/development/python-modules/rdkit/default.nix157
1 files changed, 157 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/python-modules/rdkit/default.nix b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
new file mode 100644
index 000000000000..b747304446b7
--- /dev/null
+++ b/nixpkgs/pkgs/development/python-modules/rdkit/default.nix
@@ -0,0 +1,157 @@
+{ lib
+, buildPythonPackage
+, fetchFromGitHub
+, fetchzip
+, cmake
+, boost
+, catch
+, inchi
+, cairo
+, eigen
+, python
+, rapidjson
+, maeparser
+, coordgenlibs
+, numpy
+, pandas
+, pillow
+, git
+}:
+let
+  external = {
+    avalon = fetchzip {
+      url = "http://sourceforge.net/projects/avalontoolkit/files/AvalonToolkit_1.2/AvalonToolkit_1.2.0.source.tar";
+      sha256 = "0nhxfxckb5a5qs0g148f55yarhncqjgjzcvdskkv9rxi2nrs7160";
+      stripRoot = false;
+    };
+    yaehmop = fetchFromGitHub {
+      owner = "greglandrum";
+      repo = "yaehmop";
+      rev = "1b13b52e2738a77715b1bad876e3b4e93f2b5269";
+      sha256 = "1jp7wz8win4mgwxkaz2gnrgsaaqgln04n2lwgfr96isdv1klf62d";
+    };
+    freesasa = fetchFromGitHub
+      {
+        owner = "mittinatten";
+        repo = "freesasa";
+        rev = "2.0.3";
+        sha256 = "0x686zm9fpyg5647fdgxnxgbwav99nc6ymh4bmkr2063yyda4kzc";
+      };
+  };
+in
+buildPythonPackage rec {
+  version = "2020.09.3";
+  pname = "rdkit";
+
+  src =
+    let
+      versionTag = lib.replaceStrings [ "." ] [ "_" ] version;
+    in
+    fetchFromGitHub {
+      owner = pname;
+      repo = pname;
+      rev = "Release_${versionTag}";
+      sha256 = "1k1wvzcd1yfx4nhz3iq2aaadzdk5w6sfcb4imhvm7pkbzij0nicx";
+    };
+
+  unpackPhase = ''
+    mkdir -p source/External/AvalonTools/avalon source/External/YAeHMOP/yaehmop source/External/FreeSASA/freesasa
+    cp -r ${src}/* source
+    cp -r ${external.avalon}/SourceDistribution/* source/External/AvalonTools/avalon
+    cp -r ${external.yaehmop}/* source/External/YAeHMOP/yaehmop
+    cp -r ${external.freesasa}/* source/External/FreeSASA/freesasa
+
+    find source -type d -exec chmod 755 {} +
+    cp source/External/FreeSASA/freesasa2.c source/External/FreeSASA/freesasa/src
+    ln -s ${rapidjson} source/External/rapidjson-1.1.0
+  '';
+
+  sourceRoot = "source";
+
+  nativeBuildInputs = [
+    cmake
+    git # required by freesasa
+  ];
+
+  buildInputs = [
+    boost
+    catch
+    inchi
+    eigen
+    cairo
+    rapidjson
+  ];
+
+  propagatedBuildInputs = [
+    numpy
+    pandas
+    pillow
+  ];
+
+  hardeningDisable = [ "format" ]; # required by yaehmop
+  # doCheck = false;
+  dontUseSetuptoolsBuild = true;
+  dontUsePipInstall = true;
+  dontUseSetuptoolsCheck = true;
+
+  preConfigure = ''
+    # Don't want this contacting the git remote during the build
+    substituteInPlace External/YAeHMOP/CMakeLists.txt --replace \
+      'GIT_TAG master' 'DOWNLOAD_COMMAND true'
+
+    # Since we can't expand with bash in cmakeFlags
+    cmakeFlags="$cmakeFlags -DPYTHON_NUMPY_INCLUDE_PATH=$(${python}/bin/python -c 'import numpy; print(numpy.get_include())')"
+    cmakeFlags="$cmakeFlags -DFREESASA_DIR=$PWD/External/FreeSASA/freesasa"
+    cmakeFlags="$cmakeFlags -DFREESASA_SRC_DIR=$PWD/External/FreeSASA/freesasa"
+    cmakeFlags="$cmakeFlags -DAVALONTOOLS_DIR=$PWD/External/AvalonTools/avalon"
+  '';
+
+  cmakeFlags = [
+    "-DCATCH_DIR=${catch}/include/catch"
+    "-DINCHI_LIBRARY=${inchi}/lib/libinchi.so"
+    "-DINCHI_LIBRARIES=${inchi}/lib/libinchi.so"
+    "-DINCHI_INCLUDE_DIR=${inchi}/include/inchi"
+    "-DEIGEN3_INCLUDE_DIR=${eigen}/include/eigen3"
+    "-DRDK_INSTALL_INTREE=OFF"
+    "-DRDK_INSTALL_STATIC_LIBS=OFF"
+    "-DRDK_BUILD_INCHI_SUPPORT=ON"
+    "-DRDK_BUILD_AVALON_SUPPORT=ON"
+    "-DRDK_BUILD_FREESASA_SUPPORT=ON"
+    "-DRDK_BUILD_YAEHMOP_SUPPORT=ON"
+    "-DRDK_BUILD_MAEPARSER_SUPPORT=ON"
+    "-DMAEPARSER_DIR=${maeparser}"
+    "-DRDK_BUILD_COORDGEN_SUPPORT=ON"
+    "-DCOORDGEN_DIR=${coordgenlibs}"
+    "-DRDK_USE_URF=OFF"
+    "-DRDK_USE_FLEXBISON=OFF"
+    "-DRDK_BUILD_CAIRO_SUPPORT=ON"
+    "-DRDK_BUILD_THREADSAFE_SSS=ON"
+    "-DRDK_TEST_MULTITHREADED=ON"
+    "-DRDK_BUILD_CPP_TESTS=ON"
+    "-DRDK_TEST_MULTITHREADED=ON"
+    "-DPYTHON_EXECUTABLE=${python}/bin/python"
+    "-DBOOST_ROOT=${boost}"
+    "-DBoost_NO_SYSTEM_PATHS=ON"
+    "-DBoost_NO_BOOST_CMAKE=TRUE"
+  ];
+
+  checkPhase = ''
+    export QT_QPA_PLATFORM='offscreen'
+    export RDBASE=$(realpath ..)
+    export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
+    (cd $RDBASE/rdkit/Chem && python $RDBASE/rdkit/TestRunner.py test_list.py)
+  '';
+
+  pythonImportsCheck = [
+     "rdkit"
+     "rdkit.Chem"
+     "rdkit.Chem.AllChem"
+  ];
+
+  meta = with lib; {
+    description = "Open source toolkit for cheminformatics";
+    maintainers = [ maintainers.rmcgibbo ];
+    license = licenses.bsd3;
+    homepage = "https://www.rdkit.org";
+  };
+}