gnu: opendht: Add Python bindings, tools.
* gnu/packages/networking.scm (opendht) [outputs]: Add tools and debug outputs. [native-inputs]: Add python and python-cython. [imported-modules, modules, phases]: New arguments. [configure-flags]: Disable static compilation. Enable Python support and the tools. [synopsis]: Update synopsis. [description]: Expound description.
This commit is contained in:
		
							parent
							
								
									b7e5ae2ed4
								
							
						
					
					
						commit
						ee720b5798
					
				
					 1 changed files with 66 additions and 9 deletions
				
			
		|  | @ -3474,6 +3474,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.") | ||||||
|                (base32 |                (base32 | ||||||
|                 "0wkynjzwzl5q46hy1yb9npi5hvknnj17rjkax5v3acqjmd0y48h9")))) |                 "0wkynjzwzl5q46hy1yb9npi5hvknnj17rjkax5v3acqjmd0y48h9")))) | ||||||
|     ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug? |     ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug? | ||||||
|  |     (outputs '("out" "tools" "debug")) | ||||||
|     (build-system cmake-build-system) |     (build-system cmake-build-system) | ||||||
|     (inputs |     (inputs | ||||||
|      `(("argon2" ,argon2) |      `(("argon2" ,argon2) | ||||||
|  | @ -3490,23 +3491,79 @@ and targeted primarily for asynchronous processing of HTTP-requests.") | ||||||
|      `(("autoconf" ,autoconf) |      `(("autoconf" ,autoconf) | ||||||
|        ("automake" ,automake) |        ("automake" ,automake) | ||||||
|        ("pkg-config" ,pkg-config) |        ("pkg-config" ,pkg-config) | ||||||
|  |        ("python" ,python) | ||||||
|  |        ("python-cython" ,python-cython) | ||||||
|        ("libtool" ,libtool) |        ("libtool" ,libtool) | ||||||
|        ("cppunit" ,cppunit))) |        ("cppunit" ,cppunit))) | ||||||
|     (arguments |     (arguments | ||||||
|      `(#:tests? #f                      ; Tests require network connection. |      `(#:imported-modules ((guix build python-build-system) ;for site-packages | ||||||
|  |                            ,@%cmake-build-system-modules) | ||||||
|  |        #:modules (((guix build python-build-system) #:prefix python:) | ||||||
|  |                   (guix build cmake-build-system) | ||||||
|  |                   (guix build utils)) | ||||||
|  |        #:tests? #f                      ; Tests require network connection. | ||||||
|        #:configure-flags |        #:configure-flags | ||||||
|        '(;;"-DOPENDHT_TESTS=on" |        '( ;;"-DOPENDHT_TESTS=on" | ||||||
|          "-DOPENDHT_TOOLS=off" |          "-DOPENDHT_STATIC=off" | ||||||
|          "-DOPENDHT_PYTHON=off" |          "-DOPENDHT_TOOLS=on" | ||||||
|  |          "-DOPENDHT_PYTHON=on" | ||||||
|          "-DOPENDHT_PROXY_SERVER=on" |          "-DOPENDHT_PROXY_SERVER=on" | ||||||
|          "-DOPENDHT_PUSH_NOTIFICATIONS=on" |          "-DOPENDHT_PUSH_NOTIFICATIONS=on" | ||||||
|          "-DOPENDHT_PROXY_SERVER_IDENTITY=on" |          "-DOPENDHT_PROXY_SERVER_IDENTITY=on" | ||||||
|          "-DOPENDHT_PROXY_CLIENT=on"))) |          "-DOPENDHT_PROXY_CLIENT=on") | ||||||
|  |        #:phases | ||||||
|  |        (modify-phases %standard-phases | ||||||
|  |          (add-after 'unpack 'fix-python-installation-prefix | ||||||
|  |            ;; Specify the installation prefix for the compiled Python module | ||||||
|  |            ;; that would otherwise attempt to installs itself to Python's own | ||||||
|  |            ;; site-packages directory. | ||||||
|  |            (lambda* (#:key inputs outputs #:allow-other-keys) | ||||||
|  |              (substitute* "python/CMakeLists.txt" | ||||||
|  |                (("--root=\\\\\\$ENV\\{DESTDIR\\}") | ||||||
|  |                 (string-append "--root=/ --single-version-externally-managed " | ||||||
|  |                                "--prefix=${CMAKE_INSTALL_PREFIX}"))))) | ||||||
|  |          (add-after 'unpack 'specify-runpath-for-python-module | ||||||
|  |            (lambda* (#:key outputs #:allow-other-keys) | ||||||
|  |              (let ((out (assoc-ref outputs "out"))) | ||||||
|  |                (substitute* "python/setup.py.in" | ||||||
|  |                  (("extra_link_args=\\[(.*)\\]" _ args) | ||||||
|  |                   (string-append "extra_link_args=[" args | ||||||
|  |                                  ", '-Wl,-rpath=" out "/lib']")))))) | ||||||
|  |          (add-after 'install 'move-and-wrap-tools | ||||||
|  |            (lambda* (#:key inputs outputs #:allow-other-keys) | ||||||
|  |              (let ((out (assoc-ref outputs "out")) | ||||||
|  |                    (tools (assoc-ref outputs "tools")) | ||||||
|  |                    (site-packages (python:site-packages inputs outputs))) | ||||||
|  |                (mkdir tools) | ||||||
|  |                (rename-file (string-append out "/bin") | ||||||
|  |                             (string-append tools "/bin")) | ||||||
|  |                (wrap-program (string-append tools "/bin/dhtcluster") | ||||||
|  |                  `("PYTHONPATH" prefix (,site-packages))))))))) | ||||||
|     (home-page "https://github.com/savoirfairelinux/opendht/") |     (home-page "https://github.com/savoirfairelinux/opendht/") | ||||||
|     (synopsis "Distributed Hash Table (DHT) library") |     (synopsis "Lightweight Distributed Hash Table (DHT) library") | ||||||
|     (description "OpenDHT is a Distributed Hash Table (DHT) library.  It may |     (description "OpenDHT provides an easy to use distributed in-memory data | ||||||
| be used to manage peer-to-peer network connections as needed for real time | store.  Every node in the network can read and write values to the store. | ||||||
| communication.") | Values are distributed over the network, with redundancy.  It includes the | ||||||
|  | following features: | ||||||
|  | @itemize | ||||||
|  | @item Lightweight and scalable, designed for large networks and small devices; | ||||||
|  | @item High resilience to network disruption; | ||||||
|  | @item Public key cryptography layer providing optional data signature and | ||||||
|  | encryption (using GnuTLS); | ||||||
|  | @item IPv4 and IPv6 support; | ||||||
|  | @item Clean and powerful C++14 map API; | ||||||
|  | @item Bindings for C, Rust & Python 3; | ||||||
|  | @item REST API with an optional HTTP client and server with push notification | ||||||
|  | support. | ||||||
|  | @end itemize | ||||||
|  | The following tools are also included: | ||||||
|  | @table @command | ||||||
|  | @item dhtnode | ||||||
|  | A command line tool to run a DHT node and perform operations supported by the | ||||||
|  | library (get, put, etc.) with text values. | ||||||
|  | @item dhtchat | ||||||
|  | A very simple IM client working over the DHT. | ||||||
|  | @end table") | ||||||
|     (license license:gpl3+))) |     (license license:gpl3+))) | ||||||
| 
 | 
 | ||||||
| (define-public frrouting | (define-public frrouting | ||||||
|  |  | ||||||
		Reference in a new issue