1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 cmake,
6 perl,
7 zlib,
8 libxml2,
9 eigen,
10 python3,
11 cairo,
12 pkg-config,
13 swig,
14 rapidjson,
15 boost,
16 maeparser,
17 coordgenlibs,
18}:
19
20stdenv.mkDerivation rec {
21 pname = "openbabel";
22 version = "unstable-06-12-23";
23
24 src = fetchFromGitHub {
25 owner = "openbabel";
26 repo = pname;
27 rev = "32cf131444c1555c749b356dab44fb9fe275271f";
28 hash = "sha256-V0wrZVrojCZ9Knc5H6cPzPoYWVosRZ6Sn4PX+UFEfHY=";
29 };
30
31 postPatch = ''
32 sed '1i#include <ctime>' -i include/openbabel/obutil.h # gcc12
33 '';
34
35 buildInputs = [
36 perl
37 zlib
38 libxml2
39 eigen
40 python3
41 cairo
42 rapidjson
43 boost
44 maeparser
45 coordgenlibs
46 ];
47
48 nativeBuildInputs = [
49 cmake
50 swig
51 pkg-config
52 ];
53
54 preConfigure = ''
55 cmakeFlagsArray+=(
56 "-DRUN_SWIG=ON"
57 "-DPYTHON_BINDINGS=ON"
58 "-DPYTHON_INSTDIR=$out/${python3.sitePackages}"
59 )
60 '';
61
62 # Setuptools only accepts PEP 440 version strings. The "unstable" identifier
63 # can not be used. Instead we pretend to be the 3.2 beta release.
64 postFixup = ''
65 cat << EOF > $out/${python3.sitePackages}/setup.py
66 from setuptools import setup
67
68 setup(
69 name = 'pyopenbabel',
70 version = '3.2b1',
71 packages = ['openbabel'],
72 package_data = {'openbabel' : ['_openbabel.so']}
73 )
74 EOF
75 '';
76
77 meta = with lib; {
78 description = "Toolbox designed to speak the many languages of chemical data";
79 homepage = "http://openbabel.org";
80 platforms = platforms.all;
81 license = licenses.gpl2Plus;
82 maintainers = with maintainers; [ danielbarter ];
83 };
84}