diff --git a/pkgs/development/libraries/openbabel/default.nix b/pkgs/development/libraries/openbabel/default.nix index d074db7d165c..301025dfd20b 100644 --- a/pkgs/development/libraries/openbabel/default.nix +++ b/pkgs/development/libraries/openbabel/default.nix @@ -1,34 +1,45 @@ -{stdenv, fetchurl, fetchpatch, cmake, zlib, libxml2, eigen, python, cairo, pcre, pkgconfig }: +{stdenv, lib, fetchurl, cmake, zlib, libxml2, eigen, python, cairo, pcre, pkg-config, swig, rapidjson }: stdenv.mkDerivation rec { pname = "openbabel"; - version = "2.4.1"; + version = "3.1.1"; src = fetchurl { url = "https://github.com/openbabel/openbabel/archive/openbabel-${stdenv.lib.replaceStrings ["."] ["-"] version}.tar.gz"; - sha256 = "0xm7y859ivq2cp0q08mwshfxm0jq31xkyr4x8s0j6l7khf57yk2r"; + sha256 = "c97023ac6300d26176c97d4ef39957f06e68848d64f1a04b0b284ccff2744f02"; }; - patches = [ - # ARM / AArch64 fixes. - (fetchpatch { - url = "https://github.com/openbabel/openbabel/commit/ee11c98a655296550710db1207b294f00e168216.patch"; - sha256 = "0wjqjrkr4pfirzzicdvlyr591vppydk572ix28jd2sagnfnf566g"; - }) + + buildInputs = [ zlib libxml2 eigen python cairo pcre swig rapidjson ]; + + nativeBuildInputs = [ cmake pkg-config ]; + + pythonMajorMinor = "${python.sourceVersion.major}.${python.sourceVersion.minor}"; + + cmakeFlags = [ + "-DRUN_SWIG=ON" + "-DPYTHON_BINDINGS=ON" ]; - # TODO : perl & python bindings; - # TODO : wxGTK: I have no time to compile - # TODO : separate lib and apps - buildInputs = [ zlib libxml2 eigen python cairo pcre ]; - nativeBuildInputs = [ cmake pkgconfig ]; + postFixup = '' + cat < $out/lib/python$pythonMajorMinor/site-packages/setup.py + from distutils.core import setup - meta = { + setup( + name = 'pyopenbabel', + version = '${version}', + packages = ['openbabel'], + package_data = {'openbabel' : ['_openbabel.so']} + ) + EOF + ''; + + meta = with lib; { description = "A toolbox designed to speak the many languages of chemical data"; homepage = "http://openbabel.org"; - platforms = stdenv.lib.platforms.all; - maintainers = [ ]; - license = stdenv.lib.licenses.gpl2Plus; + platforms = platforms.all; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ danielbarter ]; }; } diff --git a/pkgs/development/python-modules/openbabel-bindings/default.nix b/pkgs/development/python-modules/openbabel-bindings/default.nix new file mode 100644 index 000000000000..18a6a8dd032c --- /dev/null +++ b/pkgs/development/python-modules/openbabel-bindings/default.nix @@ -0,0 +1,27 @@ +{ stdenv, lib, openbabel, python, buildPythonPackage }: + +buildPythonPackage rec { + pname = "openbabel"; + version = "3.1.1"; + + src = "${openbabel}/lib/python${python.sourceVersion.major}.${python.sourceVersion.minor}/site-packages"; + + nativeBuildInputs = [ openbabel ]; + + # these env variables are used by the bindings to find libraries + # they need to be included explicitly in your nix-shell for + # some functionality to work (inparticular, pybel). + # see https://openbabel.org/docs/dev/Installation/install.html + BABEL_LIBDIR = "${openbabel}/lib/openbabel/3.1.0"; + LD_LIBRARY_PATH = "$LD_LIBRARY_PATH:${openbabel}/lib"; + + doCheck = false; + pythonImportsCheck = [ "openbabel" ]; + + meta = with lib; { + homepage = "http://openbabel.org/wiki/Main_Page"; + description = "Python bindings for openbabel"; + license = licenses.gpl2Plus; + maintainers = with maintainers; [ danielbarter ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 754e0d753108..ef69757042ea 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -4458,6 +4458,10 @@ in { openapi-spec-validator = callPackage ../development/python-modules/openapi-spec-validator { }; + openbabel-bindings = callPackage ../development/python-modules/openbabel-bindings { + openbabel = (callPackage ../development/libraries/openbabel { python = self.python; }); + }; + opencv3 = toPythonModule (pkgs.opencv3.override { enablePython = true; pythonPackages = self;