Message ID | dd1dccc9c61eb6612af35544b53eb4bdda6b52c3.camel@member.fsf.org |
---|---|
State | Accepted |
Headers | show |
Series | [bug#47966] gnu: Add python-graph-tool. | expand |
Context | Check | Description |
---|---|---|
cbaines/submitting builds | success | |
cbaines/comparison | success | View comparision |
cbaines/git branch | success | View Git branch |
cbaines/applying patch | success | View Laminar job |
cbaines/issue | success | View issue |
Hi Alexandre, Alexandre Hannud Abdo <abdo@member.fsf.org> skriver: > * gnu/packages/graph.scm (python-graph-tool): New variable. Thanks for the patch. [...] > +(define-public python-graph-tool > + (package > + (name "python-graph-tool") > + (version "2.37") > + (source (origin > + (method url-fetch) > + (uri (string-append > + "https://downloads.skewed.de/graph-tool/graph-tool-" > + version > + ".tar.bz2")) > + (sha256 > + (base32 > + "0w2i4d4zyk051zkykcg0ksngspajznwmp523hbsx50xnxc6jliyz")))) > + (build-system gnu-build-system) > + ;; (arguments '(#:configure-flags '("--disable-openmp"))) This comment can probably be removed? > + (arguments > + `(#:configure-flags > + (list (string-append "--with-boost=" > + (assoc-ref %build-inputs "boost")) > + (string-append "--with-python-module-path=" > + (assoc-ref %outputs "out") > + "/lib/python" > + ((lambda (version) > + (substring version 0 (string-rindex version #\.))) > + ,(package-version > + (car (assoc-ref > + (package-propagated-inputs this-package) > + "python")))) > + "/site-packages/")))) That's clever. :-) (guix utils) has a handy (version-major+minor ...) procedure that can be accessed in the unquoted context. Thus the expression above can be simplified to: (string-append "--with-python-module-path=" (assoc-ref %outputs "out") "/lib/python" ,(version-major+minor (package-version (car (assoc-ref (package-propagated-inputs this-package) "python")))) "/site-packages/") > + (native-inputs `(("pkg-config" ,pkg-config) > + ("gcc-10" ,gcc-10) > + ("ncurses" ,ncurses))) The indentation here and below is unusual. :-) > + (inputs `(("boost" ,boost) > + ("expat" ,expat) > + ("gmp" ,gmp) > + ("cgal" ,cgal) > + ("sparsehash" ,sparsehash) > + ("gtk+" ,gtk+) > + ("cairomm" ,cairomm))) > + (propagated-inputs `(("python" ,python-wrapper) Python should be a regular input. It will be available in just about any context where this package is used, and propagating it can cause conflicts if users have custom variants in their profile/manifests/packages. > + ("python-scipy" ,python-scipy) > + ("python-numpy" ,python-numpy) > + ("python-pycairo" ,python-pycairo) > + ("python-matplotlib" ,python-matplotlib))) > + (synopsis "Efficient python module for analysis of graphs") Perhaps just 'Analyze graphs with Python' to avoid overlapping with the description which has more detail? > + (description "Graph-tool is an efficient Python module for > +manipulation and statistical analysis of graphs (a.k.a. networks). > +Contrary to most other Python modules with similar functionality, the > +core data structures and algorithms are implemented in C++, making > +extensive use of template metaprogramming, based heavily on the Boost > +Graph Library. This confers it a level of performance that is > +comparable (both in memory usage and computation time) to that of a > +pure C/C++ library.") > + (home-page "https://graph-tool.skewed.de/") > + (license license:lgpl3+))) Otherwise LGTM. Can you send an updated patch? TIA, Marius
Ni! Thanks for the tips, Marius. The new patch should have those issues fixed. Let me know if there's anything else! Cheers, ale .~´
diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm index d2e4c875a1..94125ebdba 100644 --- a/gnu/packages/graph.scm +++ b/gnu/packages/graph.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2020 Alexander Krotov <krotov@iitp.ru> ;;; Copyright © 2020 Pierre Langlois <pierre.langlos@gmx.com> +;;; Copyright © 2021 Alexandre Hannud Abdo <abdo@member.fsf.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,13 +38,18 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages bioconductor) #:use-module (gnu packages bioinformatics) + #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages cran) + #:use-module (gnu packages datastructures) #:use-module (gnu packages gd) + #:use-module (gnu packages graphics) #:use-module (gnu packages graphviz) + #:use-module (gnu packages gtk) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-science) @@ -510,3 +516,59 @@ MSCs need not be complicated to create or use. Mscgen aims to provide a simple text language that is clear to create, edit and understand, which can also be transformed into common image formats for display or printing.") (license license:gpl2+))) + +(define-public python-graph-tool + (package + (name "python-graph-tool") + (version "2.37") + (source (origin + (method url-fetch) + (uri (string-append + "https://downloads.skewed.de/graph-tool/graph-tool-" + version + ".tar.bz2")) + (sha256 + (base32 + "0w2i4d4zyk051zkykcg0ksngspajznwmp523hbsx50xnxc6jliyz")))) + (build-system gnu-build-system) + ;; (arguments '(#:configure-flags '("--disable-openmp"))) + (arguments + `(#:configure-flags + (list (string-append "--with-boost=" + (assoc-ref %build-inputs "boost")) + (string-append "--with-python-module-path=" + (assoc-ref %outputs "out") + "/lib/python" + ((lambda (version) + (substring version 0 (string-rindex version #\.))) + ,(package-version + (car (assoc-ref + (package-propagated-inputs this-package) + "python")))) + "/site-packages/")))) + (native-inputs `(("pkg-config" ,pkg-config) + ("gcc-10" ,gcc-10) + ("ncurses" ,ncurses))) + (inputs `(("boost" ,boost) + ("expat" ,expat) + ("gmp" ,gmp) + ("cgal" ,cgal) + ("sparsehash" ,sparsehash) + ("gtk+" ,gtk+) + ("cairomm" ,cairomm))) + (propagated-inputs `(("python" ,python-wrapper) + ("python-scipy" ,python-scipy) + ("python-numpy" ,python-numpy) + ("python-pycairo" ,python-pycairo) + ("python-matplotlib" ,python-matplotlib))) + (synopsis "Efficient python module for analysis of graphs") + (description "Graph-tool is an efficient Python module for +manipulation and statistical analysis of graphs (a.k.a. networks). +Contrary to most other Python modules with similar functionality, the +core data structures and algorithms are implemented in C++, making +extensive use of template metaprogramming, based heavily on the Boost +Graph Library. This confers it a level of performance that is +comparable (both in memory usage and computation time) to that of a +pure C/C++ library.") + (home-page "https://graph-tool.skewed.de/") + (license license:lgpl3+)))