Message ID | 06dceecde661574f95f3a6324285077d0bc6896a.1664725832.git.david.elsing@posteo.net |
---|---|
State | Accepted |
Headers | show |
Series | Add rdkit. | expand |
Context | Check | Description |
---|---|---|
cbaines/comparison | success | View comparision |
cbaines/git-branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
cbaines/comparison | success | View comparision |
cbaines/git-branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
cbaines/comparison | success | View comparision |
cbaines/git-branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Am Montag, dem 03.10.2022 um 00:19 +0000 schrieb David Elsing: > * gnu/packages/chemistry.scm (rdkit): New variable. > --- > gnu/packages/chemistry.scm | 198 > ++++++++++++++++++ > .../rdkit-cmake-external-dependencies.patch | 102 +++++++++ > 2 files changed, 300 insertions(+) > create mode 100644 gnu/packages/patches/rdkit-cmake-external- > dependencies.patch > > diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm > index a39deff4bf..869cf264e3 100644 > --- a/gnu/packages/chemistry.scm > +++ b/gnu/packages/chemistry.scm > @@ -34,6 +34,7 @@ (define-module (gnu packages chemistry) > #:use-module (gnu packages algebra) > #:use-module (gnu packages autotools) > #:use-module (gnu packages backup) > + #:use-module (gnu packages base) > #:use-module (gnu packages bison) > #:use-module (gnu packages boost) > #:use-module (gnu packages check) > @@ -41,10 +42,12 @@ (define-module (gnu packages chemistry) > #:use-module (gnu packages cpp) > #:use-module (gnu packages documentation) > #:use-module (gnu packages flex) > + #:use-module (gnu packages fonts) > #:use-module (gnu packages fontutils) > #:use-module (gnu packages gcc) > #:use-module (gnu packages gl) > #:use-module (gnu packages graphviz) > + #:use-module (gnu packages gtk) > #:use-module (gnu packages gv) > #:use-module (gnu packages image) > #:use-module (gnu packages maths) > @@ -56,6 +59,7 @@ (define-module (gnu packages chemistry) > #:use-module (gnu packages qt) > #:use-module (gnu packages serialization) > #:use-module (gnu packages sphinx) > + #:use-module (gnu packages sqlite) > #:use-module (gnu packages stb) > #:use-module (gnu packages web) > #:use-module (gnu packages xml) > @@ -899,3 +903,197 @@ (define-public yaehmop-tightbind > (description "@code{YAeHMOP} contains a program and library for > performing > extended Hückel calculations.") > (license license:bsd-2))) > + > +(define-public rdkit > + (package > + (name "rdkit") > + (version "2022.03.5") > + (source (origin > + (method git-fetch) > + (uri (git-reference > + (url "https://github.com/rdkit/rdkit") > + (commit > + (string-append > + "Release_" (string-replace-substring version > "." "_"))))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + > "19idgilabh04cbr1qj6zgrgsfjm248mmfz6fsr0smrd68d0xnml9")) > + (patches > + (search-patches "rdkit-cmake-external- > dependencies.patch")) > + (modules '((guix build utils))) > + (snippet > + #~(begin > + ;; Remove pickle files (only used in tests), > + ;; as they are compiled programs > + (for-each > + (lambda (name) > + (display (string-append name "\n")) > + (delete-file name)) > + (find-files "." "\\.pkl(\\.gz)?$")) > + ;; Remove SQLite data files (can be generated) > + (delete-file "Data/RDData.sqlt") > + (delete-file "Data/RDTests.sqlt") > + #t)))) > + (build-system cmake-build-system) > + (native-inputs > + `(("bison" ,bison) > + ("boost" ,boost) > + ("catch2" ,catch2) > + ("eigen" ,eigen) > + ("flex" ,flex) > + ("freesasa" ,freesasa) > + ("pkg-config" ,pkg-config) > + ("rapidjson" ,rapidjson) > + ("tar" ,tar) > + ("avalontoolkit-src" > + ,(let ((version "1.2.0")) > + (origin > + (method url-fetch) > + (uri (string-append > + > "http://sourceforge.net/projects/avalontoolkit/files/" > + "AvalonToolkit_" (substring version 0 3) > "/AvalonToolkit_" > + version ".source.tar")) > + (sha256 > + (base32 > + > "0rnnyy6axs2da7aa4q6l30ldavbk49v6l22llj1adn74h1i67bpv")) > + (modules '((guix build utils) (ice-9 ftw) (srfi srfi- > 26))) > + (snippet > + #~(begin > + (chdir "..") > + (delete-file-recursively "StandardFiles") > + (delete-file-recursively > "SourceDistribution/java") > + #t))))) > + ("ringdecomposerlib-src" > + ,(let ((version "1.1.3")) > + (origin > + (method git-fetch) > + (uri (git-reference > + (url > "https://github.com/rareylab/RingDecomposerLib") > + (commit (string-append "v" version "_rdkit")))) > + (file-name (git-file-name name version)) > + (sha256 > + (base32 > + > "1rxzs2wpkkdi40wdzxc4sn0brk7dm7ivgqyfh38gf2f5c7pbg0wi"))))))) > + (inputs > + (list cairo > + coordgenlibs > + font-comic-neue > + freetype > + inchi > + maeparser > + python > + sqlite > + yaehmop-tightbind)) > + (propagated-inputs > + (list python-numpy python-cairocffi python-pillow)) > + (arguments > + (list > + #:imported-modules (append %cmake-build-system-modules > + '((guix build python-build- > system))) > + #:modules '((guix build cmake-build-system) > + (guix build utils) > + ((guix build python-build-system) > + #:select (add-installed-pythonpath))) > + #:configure-flags > + #~(list > + "-DRDK_BUILD_AVALON_SUPPORT=ON" > + "-DRDK_BUILD_CAIRO_SUPPORT=ON" > + "-DRDK_BUILD_CPP_TESTS=ON" > + "-DRDK_BUILD_FREESASA_SUPPORT=ON" > + "-DRDK_BUILD_INCHI_SUPPORT=ON" > + "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" > + (string-append "-DCATCH_DIR=" > + #$(this-package-native-input "catch2") > + "/include/catch2") > + "-DRDK_INSTALL_DEV_COMPONENT=ON" > + "-DRDK_INSTALL_INTREE=OFF" > + "-DRDK_INSTALL_STATIC_LIBS=OFF" > + (string-append > + "-DRDK_OPTIMIZE_POPCNT=" > + #$(let ((system (or (%current-target-system) > + (%current-system)))) > + (cond > + ((string-prefix? "x86_64" system) "ON") > + ((string-prefix? "i686" system) "ON") > + (else "OFF")))) > + "-DRDK_USE_BOOST_IOSTREAMS=ON" > + "-DRDK_USE_FLEXBISON=ON") > + #:phases > + #~(modify-phases %standard-phases > + (add-after 'unpack 'copy-external-dependencies > + (lambda _ > + (symlink > + (string-append > + #$(this-package-input "font-comic-neue") > + "/share/fonts/truetype/ComicNeue-Regular.ttf") > + "Data/Fonts/ComicNeue-Regular.ttf") > + (symlink #$(this-package-native-input "rapidjson") > + "External/rapidjson-1.1.0") > + (invoke "tar" "xvf" > + #$(this-package-native-input "avalontoolkit- > src") > + "-C" "External/AvalonTools") > + (symlink #$(this-package-native-input > "ringdecomposerlib-src") > + "External/RingFamilies/RingDecomposerLib") > + #t)) You might want to try unbundling those. Either way, you should find a solution that doesn't depend on native-input labels. > + (add-after 'copy-external-dependencies 'patch-source > + (lambda _ > + (with-directory-excursion "External/AvalonTools" > + (invoke "patch" "-p0" "-i" > + "AvalonToolkit_1.2_patch.txt")) > + (substitute* "External/YAeHMOP/EHTTools.cpp" > + (("<yaehmop/tightbind/bind.h>") "<yaehmop/bind.h>")) > + #t)) See my comment on yaehmop. > + (add-after 'unpack 'create-sqlite-data-files > + (lambda _ > + (invoke "sqlite3" "Data/RDData.sqlt" > + ".read rdkit/Dbase/test_data/RDData.sqlite") > + (invoke "sqlite3" "Data/RDTests.sqlt" > + ".read rdkit/Dbase/test_data/RDTests.sqlite") > + #t)) Do you only need this for tests? If so, do this in a pre-check phase. > + (add-after 'unpack 'fix-inchi-include > + (lambda _ > + (substitute* "Code/cmake/Modules/FindInchi.cmake" > + (("inchi_api.h.*\\)") "inchi/inchi_api.h)") > + (("INCHI_LIBRARY NAMES.*\\)") > + "INCHI_LIBRARY NAMES inchi PATH_SUFFIXES inchi)") > + (("find_library" prev) > + (string-append > + "list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .so.1)\n" > + prev))) > + (substitute* "External/INCHI-API/inchi.cpp" > + (("<inchi_api.h>") "<inchi/inchi_api.h>")) > + #t)) > + (add-before 'build 'enable-bytecode-determinism > + (lambda _ > + (setenv "PYTHONHASHSEED" "0") > + (setenv "PYTHONDONTWRITEBYTECODE" "1") > + #t)) > + (delete 'check) > + (add-after 'install 'check > + (lambda* (#:key inputs outputs tests? parallel-tests? > + #:allow-other-keys) > + (when tests? > + (let > + ((job-count (number->string > + (or (and parallel-tests? > + (parallel-job-count)) > + 1)))) > + (setenv "RDBASE" (canonicalize-path "../source")) > + (add-installed-pythonpath inputs outputs) This line should also be pre-check, maybe even these two lines. > + (invoke "ctest" > + "-j" job-count > + "-E" (string-append > + ;; need pickled data > + "(pyDiscreteValueVect" > "|pySparseIntVect" > + "|graphmoltestPickler" > "|pyPartialCharges" > + "|substructLibraryTest" > "|pyFeatures" > + "|pythonTestDirML" > "|pythonTestDirChem" > + ;; Catching Python exception fails > + "|pyRanker)")))) Use string-join instead. > + #t))))) > + (home-page "https://rdkit.org/") > + (synopsis "Open-Source Cheminformatics Software") "Open-Source" is meaningless in Guix. > + (description "RDKit is a collection of cheminformatics and > +machine-learning software written in C++ and Python.") Not particularly descriptive, but then again, neither is rdkit itself. Cheers
Liliana Marie Prikler <liliana.prikler@ist.tugraz.at> writes: > Am Montag, dem 03.10.2022 um 00:19 +0000 schrieb David Elsing: >> * gnu/packages/chemistry.scm (rdkit): New variable. >> --- >> gnu/packages/chemistry.scm | 198 >> ++++++++++++++++++ >> .../rdkit-cmake-external-dependencies.patch | 102 +++++++++ >> 2 files changed, 300 insertions(+) >> create mode 100644 gnu/packages/patches/rdkit-cmake-external- >> dependencies.patch >> >> diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm >> index a39deff4bf..869cf264e3 100644 >> --- a/gnu/packages/chemistry.scm >> +++ b/gnu/packages/chemistry.scm >> @@ -34,6 +34,7 @@ (define-module (gnu packages chemistry) >> #:use-module (gnu packages algebra) >> #:use-module (gnu packages autotools) >> #:use-module (gnu packages backup) >> + #:use-module (gnu packages base) >> #:use-module (gnu packages bison) >> #:use-module (gnu packages boost) >> #:use-module (gnu packages check) >> @@ -41,10 +42,12 @@ (define-module (gnu packages chemistry) >> #:use-module (gnu packages cpp) >> #:use-module (gnu packages documentation) >> #:use-module (gnu packages flex) >> + #:use-module (gnu packages fonts) >> #:use-module (gnu packages fontutils) >> #:use-module (gnu packages gcc) >> #:use-module (gnu packages gl) >> #:use-module (gnu packages graphviz) >> + #:use-module (gnu packages gtk) >> #:use-module (gnu packages gv) >> #:use-module (gnu packages image) >> #:use-module (gnu packages maths) >> @@ -56,6 +59,7 @@ (define-module (gnu packages chemistry) >> #:use-module (gnu packages qt) >> #:use-module (gnu packages serialization) >> #:use-module (gnu packages sphinx) >> + #:use-module (gnu packages sqlite) >> #:use-module (gnu packages stb) >> #:use-module (gnu packages web) >> #:use-module (gnu packages xml) >> @@ -899,3 +903,197 @@ (define-public yaehmop-tightbind >> (description "@code{YAeHMOP} contains a program and library for >> performing >> extended Hückel calculations.") >> (license license:bsd-2))) >> + >> +(define-public rdkit >> + (package >> + (name "rdkit") >> + (version "2022.03.5") >> + (source (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url "https://github.com/rdkit/rdkit") >> + (commit >> + (string-append >> + "Release_" (string-replace-substring version >> "." "_"))))) >> + (file-name (git-file-name name version)) >> + (sha256 >> + (base32 >> + >> "19idgilabh04cbr1qj6zgrgsfjm248mmfz6fsr0smrd68d0xnml9")) >> + (patches >> + (search-patches "rdkit-cmake-external- >> dependencies.patch")) >> + (modules '((guix build utils))) >> + (snippet >> + #~(begin >> + ;; Remove pickle files (only used in tests), >> + ;; as they are compiled programs >> + (for-each >> + (lambda (name) >> + (display (string-append name "\n")) >> + (delete-file name)) >> + (find-files "." "\\.pkl(\\.gz)?$")) >> + ;; Remove SQLite data files (can be generated) >> + (delete-file "Data/RDData.sqlt") >> + (delete-file "Data/RDTests.sqlt") >> + #t)))) >> + (build-system cmake-build-system) >> + (native-inputs >> + `(("bison" ,bison) >> + ("boost" ,boost) >> + ("catch2" ,catch2) >> + ("eigen" ,eigen) >> + ("flex" ,flex) >> + ("freesasa" ,freesasa) >> + ("pkg-config" ,pkg-config) >> + ("rapidjson" ,rapidjson) >> + ("tar" ,tar) >> + ("avalontoolkit-src" >> + ,(let ((version "1.2.0")) >> + (origin >> + (method url-fetch) >> + (uri (string-append >> + >> "http://sourceforge.net/projects/avalontoolkit/files/" >> + "AvalonToolkit_" (substring version 0 3) >> "/AvalonToolkit_" >> + version ".source.tar")) >> + (sha256 >> + (base32 >> + >> "0rnnyy6axs2da7aa4q6l30ldavbk49v6l22llj1adn74h1i67bpv")) >> + (modules '((guix build utils) (ice-9 ftw) (srfi srfi- >> 26))) >> + (snippet >> + #~(begin >> + (chdir "..") >> + (delete-file-recursively "StandardFiles") >> + (delete-file-recursively >> "SourceDistribution/java") >> + #t))))) >> + ("ringdecomposerlib-src" >> + ,(let ((version "1.1.3")) >> + (origin >> + (method git-fetch) >> + (uri (git-reference >> + (url >> "https://github.com/rareylab/RingDecomposerLib") >> + (commit (string-append "v" version "_rdkit")))) >> + (file-name (git-file-name name version)) >> + (sha256 >> + (base32 >> + >> "1rxzs2wpkkdi40wdzxc4sn0brk7dm7ivgqyfh38gf2f5c7pbg0wi"))))))) >> + (inputs >> + (list cairo >> + coordgenlibs >> + font-comic-neue >> + freetype >> + inchi >> + maeparser >> + python >> + sqlite >> + yaehmop-tightbind)) >> + (propagated-inputs >> + (list python-numpy python-cairocffi python-pillow)) >> + (arguments >> + (list >> + #:imported-modules (append %cmake-build-system-modules >> + '((guix build python-build- >> system))) >> + #:modules '((guix build cmake-build-system) >> + (guix build utils) >> + ((guix build python-build-system) >> + #:select (add-installed-pythonpath))) >> + #:configure-flags >> + #~(list >> + "-DRDK_BUILD_AVALON_SUPPORT=ON" >> + "-DRDK_BUILD_CAIRO_SUPPORT=ON" >> + "-DRDK_BUILD_CPP_TESTS=ON" >> + "-DRDK_BUILD_FREESASA_SUPPORT=ON" >> + "-DRDK_BUILD_INCHI_SUPPORT=ON" >> + "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" >> + (string-append "-DCATCH_DIR=" >> + #$(this-package-native-input "catch2") >> + "/include/catch2") >> + "-DRDK_INSTALL_DEV_COMPONENT=ON" >> + "-DRDK_INSTALL_INTREE=OFF" >> + "-DRDK_INSTALL_STATIC_LIBS=OFF" >> + (string-append >> + "-DRDK_OPTIMIZE_POPCNT=" >> + #$(let ((system (or (%current-target-system) >> + (%current-system)))) >> + (cond >> + ((string-prefix? "x86_64" system) "ON") >> + ((string-prefix? "i686" system) "ON") >> + (else "OFF")))) >> + "-DRDK_USE_BOOST_IOSTREAMS=ON" >> + "-DRDK_USE_FLEXBISON=ON") >> + #:phases >> + #~(modify-phases %standard-phases >> + (add-after 'unpack 'copy-external-dependencies >> + (lambda _ >> + (symlink >> + (string-append >> + #$(this-package-input "font-comic-neue") >> + "/share/fonts/truetype/ComicNeue-Regular.ttf") >> + "Data/Fonts/ComicNeue-Regular.ttf") >> + (symlink #$(this-package-native-input "rapidjson") >> + "External/rapidjson-1.1.0") >> + (invoke "tar" "xvf" >> + #$(this-package-native-input "avalontoolkit- >> src") >> + "-C" "External/AvalonTools") >> + (symlink #$(this-package-native-input >> "ringdecomposerlib-src") >> + "External/RingFamilies/RingDecomposerLib") >> + #t)) > You might want to try unbundling those. Either way, you should find a > solution that doesn't depend on native-input labels. Ok, I unbundled them, but the package definitions became a bit long. :) Do you think it is ok like that? >> + (add-after 'copy-external-dependencies 'patch-source >> + (lambda _ >> + (with-directory-excursion "External/AvalonTools" >> + (invoke "patch" "-p0" "-i" >> + "AvalonToolkit_1.2_patch.txt")) >> + (substitute* "External/YAeHMOP/EHTTools.cpp" >> + (("<yaehmop/tightbind/bind.h>") "<yaehmop/bind.h>")) >> + #t)) > See my comment on yaehmop. >> + (add-after 'unpack 'create-sqlite-data-files >> + (lambda _ >> + (invoke "sqlite3" "Data/RDData.sqlt" >> + ".read rdkit/Dbase/test_data/RDData.sqlite") >> + (invoke "sqlite3" "Data/RDTests.sqlt" >> + ".read rdkit/Dbase/test_data/RDTests.sqlite") >> + #t)) > Do you only need this for tests? If so, do this in a pre-check phase. Ok. >> + (add-after 'unpack 'fix-inchi-include >> + (lambda _ >> + (substitute* "Code/cmake/Modules/FindInchi.cmake" >> + (("inchi_api.h.*\\)") "inchi/inchi_api.h)") >> + (("INCHI_LIBRARY NAMES.*\\)") >> + "INCHI_LIBRARY NAMES inchi PATH_SUFFIXES inchi)") >> + (("find_library" prev) >> + (string-append >> + "list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .so.1)\n" >> + prev))) >> + (substitute* "External/INCHI-API/inchi.cpp" >> + (("<inchi_api.h>") "<inchi/inchi_api.h>")) >> + #t)) >> + (add-before 'build 'enable-bytecode-determinism >> + (lambda _ >> + (setenv "PYTHONHASHSEED" "0") >> + (setenv "PYTHONDONTWRITEBYTECODE" "1") >> + #t)) >> + (delete 'check) >> + (add-after 'install 'check >> + (lambda* (#:key inputs outputs tests? parallel-tests? >> + #:allow-other-keys) >> + (when tests? >> + (let >> + ((job-count (number->string >> + (or (and parallel-tests? >> + (parallel-job-count)) >> + 1)))) >> + (setenv "RDBASE" (canonicalize-path "../source")) >> + (add-installed-pythonpath inputs outputs) > This line should also be pre-check, maybe even these two lines. >> + (invoke "ctest" >> + "-j" job-count >> + "-E" (string-append >> + ;; need pickled data >> + "(pyDiscreteValueVect" >> "|pySparseIntVect" >> + "|graphmoltestPickler" >> "|pyPartialCharges" >> + "|substructLibraryTest" >> "|pyFeatures" >> + "|pythonTestDirML" >> "|pythonTestDirChem" >> + ;; Catching Python exception fails >> + "|pyRanker)")))) > Use string-join instead. Thanks! >> + #t))))) >> + (home-page "https://rdkit.org/") >> + (synopsis "Open-Source Cheminformatics Software") > "Open-Source" is meaningless in Guix. >> + (description "RDKit is a collection of cheminformatics and >> +machine-learning software written in C++ and Python.") > Not particularly descriptive, but then again, neither is rdkit itself. > > Cheers
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm index a39deff4bf..869cf264e3 100644 --- a/gnu/packages/chemistry.scm +++ b/gnu/packages/chemistry.scm @@ -34,6 +34,7 @@ (define-module (gnu packages chemistry) #:use-module (gnu packages algebra) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) + #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages boost) #:use-module (gnu packages check) @@ -41,10 +42,12 @@ (define-module (gnu packages chemistry) #:use-module (gnu packages cpp) #:use-module (gnu packages documentation) #:use-module (gnu packages flex) + #:use-module (gnu packages fonts) #:use-module (gnu packages fontutils) #:use-module (gnu packages gcc) #:use-module (gnu packages gl) #:use-module (gnu packages graphviz) + #:use-module (gnu packages gtk) #:use-module (gnu packages gv) #:use-module (gnu packages image) #:use-module (gnu packages maths) @@ -56,6 +59,7 @@ (define-module (gnu packages chemistry) #:use-module (gnu packages qt) #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) + #:use-module (gnu packages sqlite) #:use-module (gnu packages stb) #:use-module (gnu packages web) #:use-module (gnu packages xml) @@ -899,3 +903,197 @@ (define-public yaehmop-tightbind (description "@code{YAeHMOP} contains a program and library for performing extended Hückel calculations.") (license license:bsd-2))) + +(define-public rdkit + (package + (name "rdkit") + (version "2022.03.5") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rdkit/rdkit") + (commit + (string-append + "Release_" (string-replace-substring version "." "_"))))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "19idgilabh04cbr1qj6zgrgsfjm248mmfz6fsr0smrd68d0xnml9")) + (patches + (search-patches "rdkit-cmake-external-dependencies.patch")) + (modules '((guix build utils))) + (snippet + #~(begin + ;; Remove pickle files (only used in tests), + ;; as they are compiled programs + (for-each + (lambda (name) + (display (string-append name "\n")) + (delete-file name)) + (find-files "." "\\.pkl(\\.gz)?$")) + ;; Remove SQLite data files (can be generated) + (delete-file "Data/RDData.sqlt") + (delete-file "Data/RDTests.sqlt") + #t)))) + (build-system cmake-build-system) + (native-inputs + `(("bison" ,bison) + ("boost" ,boost) + ("catch2" ,catch2) + ("eigen" ,eigen) + ("flex" ,flex) + ("freesasa" ,freesasa) + ("pkg-config" ,pkg-config) + ("rapidjson" ,rapidjson) + ("tar" ,tar) + ("avalontoolkit-src" + ,(let ((version "1.2.0")) + (origin + (method url-fetch) + (uri (string-append + "http://sourceforge.net/projects/avalontoolkit/files/" + "AvalonToolkit_" (substring version 0 3) "/AvalonToolkit_" + version ".source.tar")) + (sha256 + (base32 + "0rnnyy6axs2da7aa4q6l30ldavbk49v6l22llj1adn74h1i67bpv")) + (modules '((guix build utils) (ice-9 ftw) (srfi srfi-26))) + (snippet + #~(begin + (chdir "..") + (delete-file-recursively "StandardFiles") + (delete-file-recursively "SourceDistribution/java") + #t))))) + ("ringdecomposerlib-src" + ,(let ((version "1.1.3")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/rareylab/RingDecomposerLib") + (commit (string-append "v" version "_rdkit")))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rxzs2wpkkdi40wdzxc4sn0brk7dm7ivgqyfh38gf2f5c7pbg0wi"))))))) + (inputs + (list cairo + coordgenlibs + font-comic-neue + freetype + inchi + maeparser + python + sqlite + yaehmop-tightbind)) + (propagated-inputs + (list python-numpy python-cairocffi python-pillow)) + (arguments + (list + #:imported-modules (append %cmake-build-system-modules + '((guix build python-build-system))) + #:modules '((guix build cmake-build-system) + (guix build utils) + ((guix build python-build-system) + #:select (add-installed-pythonpath))) + #:configure-flags + #~(list + "-DRDK_BUILD_AVALON_SUPPORT=ON" + "-DRDK_BUILD_CAIRO_SUPPORT=ON" + "-DRDK_BUILD_CPP_TESTS=ON" + "-DRDK_BUILD_FREESASA_SUPPORT=ON" + "-DRDK_BUILD_INCHI_SUPPORT=ON" + "-DRDK_BUILD_YAEHMOP_SUPPORT=ON" + (string-append "-DCATCH_DIR=" + #$(this-package-native-input "catch2") + "/include/catch2") + "-DRDK_INSTALL_DEV_COMPONENT=ON" + "-DRDK_INSTALL_INTREE=OFF" + "-DRDK_INSTALL_STATIC_LIBS=OFF" + (string-append + "-DRDK_OPTIMIZE_POPCNT=" + #$(let ((system (or (%current-target-system) + (%current-system)))) + (cond + ((string-prefix? "x86_64" system) "ON") + ((string-prefix? "i686" system) "ON") + (else "OFF")))) + "-DRDK_USE_BOOST_IOSTREAMS=ON" + "-DRDK_USE_FLEXBISON=ON") + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'copy-external-dependencies + (lambda _ + (symlink + (string-append + #$(this-package-input "font-comic-neue") + "/share/fonts/truetype/ComicNeue-Regular.ttf") + "Data/Fonts/ComicNeue-Regular.ttf") + (symlink #$(this-package-native-input "rapidjson") + "External/rapidjson-1.1.0") + (invoke "tar" "xvf" + #$(this-package-native-input "avalontoolkit-src") + "-C" "External/AvalonTools") + (symlink #$(this-package-native-input "ringdecomposerlib-src") + "External/RingFamilies/RingDecomposerLib") + #t)) + (add-after 'copy-external-dependencies 'patch-source + (lambda _ + (with-directory-excursion "External/AvalonTools" + (invoke "patch" "-p0" "-i" + "AvalonToolkit_1.2_patch.txt")) + (substitute* "External/YAeHMOP/EHTTools.cpp" + (("<yaehmop/tightbind/bind.h>") "<yaehmop/bind.h>")) + #t)) + (add-after 'unpack 'create-sqlite-data-files + (lambda _ + (invoke "sqlite3" "Data/RDData.sqlt" + ".read rdkit/Dbase/test_data/RDData.sqlite") + (invoke "sqlite3" "Data/RDTests.sqlt" + ".read rdkit/Dbase/test_data/RDTests.sqlite") + #t)) + (add-after 'unpack 'fix-inchi-include + (lambda _ + (substitute* "Code/cmake/Modules/FindInchi.cmake" + (("inchi_api.h.*\\)") "inchi/inchi_api.h)") + (("INCHI_LIBRARY NAMES.*\\)") + "INCHI_LIBRARY NAMES inchi PATH_SUFFIXES inchi)") + (("find_library" prev) + (string-append + "list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .so.1)\n" + prev))) + (substitute* "External/INCHI-API/inchi.cpp" + (("<inchi_api.h>") "<inchi/inchi_api.h>")) + #t)) + (add-before 'build 'enable-bytecode-determinism + (lambda _ + (setenv "PYTHONHASHSEED" "0") + (setenv "PYTHONDONTWRITEBYTECODE" "1") + #t)) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs tests? parallel-tests? + #:allow-other-keys) + (when tests? + (let + ((job-count (number->string + (or (and parallel-tests? + (parallel-job-count)) + 1)))) + (setenv "RDBASE" (canonicalize-path "../source")) + (add-installed-pythonpath inputs outputs) + (invoke "ctest" + "-j" job-count + "-E" (string-append + ;; need pickled data + "(pyDiscreteValueVect" "|pySparseIntVect" + "|graphmoltestPickler" "|pyPartialCharges" + "|substructLibraryTest" "|pyFeatures" + "|pythonTestDirML" "|pythonTestDirChem" + ;; Catching Python exception fails + "|pyRanker)")))) + #t))))) + (home-page "https://rdkit.org/") + (synopsis "Open-Source Cheminformatics Software") + (description "RDKit is a collection of cheminformatics and +machine-learning software written in C++ and Python.") + (license license:bsd-3))) diff --git a/gnu/packages/patches/rdkit-cmake-external-dependencies.patch b/gnu/packages/patches/rdkit-cmake-external-dependencies.patch new file mode 100644 index 0000000000..5b73864f51 --- /dev/null +++ b/gnu/packages/patches/rdkit-cmake-external-dependencies.patch @@ -0,0 +1,102 @@ +diff -ur a/External/FreeSASA/CMakeLists.txt b/External/FreeSASA/CMakeLists.txt +--- a/External/FreeSASA/CMakeLists.txt ++++ b/External/FreeSASA/CMakeLists.txt +@@ -10,7 +10,7 @@ + endif() + endif() + +-if(needDownload) ++if(FALSE) + # don't actually use the md5 here + set(FREESASA_VERSION "2.0.3") + set(FREESASA_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/freesasa-${FREESASA_VERSION}") +@@ -66,24 +66,24 @@ + endif() + + set (freesasa_h ${FREESASA_SRC_DIR}/src/freesasa.h) +-file(READ ${freesasa_h} freesasa_h_data) ++#file(READ ${freesasa_h} freesasa_h_data) + string(REGEX REPLACE "(#include <stdio.h>)" "\\1\n#include <RDGeneral/export.h>" freesasa_h_data "${freesasa_h_data}") + string(REGEX REPLACE "([^R][^D][^K][^I][^T][^_][^F][^R][^E][^E][^S][^A][^S][^A][^_][^C][^L][^I][^B][^_][^E][^X][^P][^O][^R][^T][^ ])(extern const)" "\\1RDKIT_FREESASA_CLIB_EXPORT \\2" freesasa_h_data "${freesasa_h_data}") +-file(WRITE ${freesasa_h} "${freesasa_h_data}") ++#file(WRITE ${freesasa_h} "${freesasa_h_data}") + + add_definitions(-DUSE_THREADS=0) + add_definitions(-DUSE_JSON=0) + add_definitions(-DUSE_XML=0) +-rdkit_library(freesasa_clib ${freesasa_clib_srcs}) +-target_compile_definitions(freesasa_clib PRIVATE RDKIT_FREESASALIB_BUILD) ++#rdkit_library(freesasa_clib ${freesasa_clib_srcs}) ++#target_compile_definitions(freesasa_clib PRIVATE RDKIT_FREESASALIB_BUILD) + + if((MSVC AND RDK_INSTALL_DLLS_MSVC) OR ((NOT MSVC) AND WIN32)) + set_target_properties(freesasa_clib PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + endif() +-include_directories("${FREESASA_SRC_DIR}/src") ++#include_directories("${FREESASA_SRC_DIR}/src") + + rdkit_library(FreeSASALib RDFreeSASA.cpp SHARED +- LINK_LIBRARIES freesasa_clib GraphMol ) ++ LINK_LIBRARIES -lfreesasa GraphMol ) + target_compile_definitions(FreeSASALib PRIVATE RDKIT_FREESASALIB_BUILD) + + rdkit_headers(RDFreeSASA.h DEST GraphMol) +diff -ur a/External/YAeHMOP/CMakeLists.txt b/External/YAeHMOP/CMakeLists.txt +--- a/External/YAeHMOP/CMakeLists.txt ++++ b/External/YAeHMOP/CMakeLists.txt +@@ -18,32 +18,32 @@ + + include_directories( ${RDKit_ExternalDir}/YAeHMOP ) + +-ExternalProject_Add(yaehmop_project +- GIT_REPOSITORY https://github.com/greglandrum/yaehmop.git +- GIT_TAG master +- UPDATE_COMMAND "" +- PATCH_COMMAND "" +- PREFIX ${CMAKE_CURRENT_SOURCE_DIR} +- SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/yaehmop" +- SOURCE_SUBDIR "tightbind" +- CMAKE_ARGS -DUSE_BLAS_LAPACK=OFF -DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} +- TEST_COMMAND "") +- +-include_directories(${PROJECT_BINARY_DIR}/include) +-link_directories(${PROJECT_BINARY_DIR}/lib) +-link_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/yaehmop_project-build) +- +-set(EHT_PARAM_FILE ${CMAKE_CURRENT_SOURCE_DIR}/yaehmop/tightbind/eht_parms.dat ) +-install(FILES ${EHT_PARAM_FILE} +- DESTINATION ${RDKit_ShareDir}/Data +- COMPONENT data) ++#ExternalProject_Add(yaehmop_project ++# GIT_REPOSITORY https://github.com/greglandrum/yaehmop.git ++# GIT_TAG master ++# UPDATE_COMMAND "" ++# PATCH_COMMAND "" ++# PREFIX ${CMAKE_CURRENT_SOURCE_DIR} ++# SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/yaehmop" ++# SOURCE_SUBDIR "tightbind" ++# CMAKE_ARGS -DUSE_BLAS_LAPACK=OFF -DCMAKE_INSTALL_PREFIX=${PROJECT_BINARY_DIR} -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ++# TEST_COMMAND "") ++ ++#include_directories(${PROJECT_BINARY_DIR}/include) ++#link_directories(${PROJECT_BINARY_DIR}/lib) ++#link_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/yaehmop_project-build) ++ ++#set(EHT_PARAM_FILE ${CMAKE_CURRENT_SOURCE_DIR}/yaehmop/tightbind/eht_parms.dat ) ++#install(FILES ${EHT_PARAM_FILE} ++# DESTINATION ${RDKit_ShareDir}/Data ++# COMPONENT data) + +-message("YAeHMOP include_dirs: ${PROJECT_BINARY_DIR}/include") +-message("YAeHMOP link_dirs: ${PROJECT_BINARY_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/src/yaehmop_project-build") ++#message("YAeHMOP include_dirs: ${PROJECT_BINARY_DIR}/include") ++#message("YAeHMOP link_dirs: ${PROJECT_BINARY_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/src/yaehmop_project-build") + +-rdkit_library(EHTLib EHTTools.cpp SHARED LINK_LIBRARIES yaehmop_eht GraphMol ) ++rdkit_library(EHTLib EHTTools.cpp SHARED LINK_LIBRARIES -lyaehmop_eht GraphMol ) + target_compile_definitions(EHTLib PRIVATE RDKIT_EHTLIB_BUILD) +-add_dependencies(EHTLib yaehmop_project) ++#add_dependencies(EHTLib yaehmop_project) + rdkit_headers(EHTTools.h DEST GraphMol) + rdkit_catch_test(testEHTLib1 test1.cpp + LINK_LIBRARIES EHTLib FileParsers SmilesParse )