From 89cba03868c07d10d3133d738164b1822553a4f6 Mon Sep 17 00:00:00 2001 From: Maxime Devos Date: Thu, 14 Jan 2021 21:55:33 +0000 Subject: [PATCH] gnu: gnunet: Update to 0.14.0. The v0.14.0 tarball doesn't build from source, so build from git instead. This requires some additional inputs. * gnu/packages/gnunet.scm (gnunet): Update to 0.14.0. [arguments]{phases}: Add phase `add-build-common-submodule`, `fixup-pofile-writability' and `remove-ftbfs-tests'. [native-inputs]: add libtool, autoconf, automake, gettext, texinfo and build-common. * gnu/packages/gnunet.scm (build-common): New variable. --- gnu/packages/gnunet.scm | 225 ++++++++++++++++++++++++---------------- 1 file changed, 136 insertions(+), 89 deletions(-) diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 80e4aba29b..6a3b827dea 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2019 Brett Gilio ;;; Copyright © 2020 Tanguy Le Carrour ;;; Copyright © 2020 Michael Rohleder +;;; Copyright © 2021 Maxime Devos ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,6 +59,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages sqlite) + #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages upnp) #:use-module (gnu packages video) @@ -253,103 +255,148 @@ supports HTTP, HTTPS and GnuTLS.") (ftp-directory . "/gnunet"))) (home-page "https://gnunet.org/en/gnurl.html"))) -(define-public gnunet - (package - (name "gnunet") - (version "0.13.1") - (source +(define build-common + (let ((commit "1915a74bbb4cd2ae9bc541a382dfebc37064a2fd")) (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gnunet/gnunet-" version - ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://git.taler.net/build-common.git") + (commit commit))) + (file-name (git-file-name "build-common" commit)) (sha256 (base32 - "15jnca5zxng7r6m3qzq9lr73xxq0v6mvcp0lny3zrlkz5s2nmmq3")))) - (build-system gnu-build-system) - (inputs - `(("bluez" ,bluez) - ("glpk" ,glpk) - ("gnurl" ,gnurl) - ("gnutls" ,gnutls/dane) - ("gstreamer" ,gstreamer) - ("jansson" ,jansson) - ("libextractor" ,libextractor) - ("libidn" ,libidn2) - ("libgcrypt" ,libgcrypt) - ("libjpeg" ,libjpeg-turbo) - ("libltdl" ,libltdl) - ("libmicrohttpd" ,libmicrohttpd) - ("libogg" ,libogg) - ("libsodium" ,libsodium) - ("libunistring" ,libunistring) - ("miniupnpc" ,miniupnpc) - ("opus" ,opus) - ("pulseaudio" ,pulseaudio) - ("sqlite" ,sqlite) - ("zbar" ,zbar) - ("zlib" ,zlib))) - (native-inputs - `(("curl" ,curl) - ("pkg-config" ,pkg-config) - ("python" ,python) - ("xxd" ,xxd) - ("which" ,(@ (gnu packages base) which)))) - (arguments - '(#:parallel-tests? #f ; Parallel tests aren't supported. - #:phases - (modify-phases %standard-phases - (add-after 'configure 'remove-failing-tests - ;; These tests fail in Guix's building environment. - (lambda _ - (substitute* "src/transport/Makefile" - (("\\$\\(am__EXEEXT_15\\)") "") ; test_transport_api_https - (("test_transport_api_manipulation_cfg\\$\\(EXEEXT\\) \\\\\n") "") - (("test_transport_api_udp_nat\\$\\(EXEEXT\\) \\\\\n") "") - (("test_transport_blacklisting_multiple_plugins\\$\\(EXEEXT\\) \\\\\n") "")) - (substitute* "src/testbed/Makefile" - (("test_testbed_api_2peers_1controller\\$\\(EXEEXT\\) \\\\\n") "") - (("test_testbed_api_statistics\\$\\(EXEEXT\\) \\\\\n") "") - (("test_testbed_api_test\\$\\(EXEEXT\\) \\\\\n") "") - (("test_testbed_api_test_timeout\\$\\(EXEEXT\\) \\\\\n") "") - (("test_testbed_api_topology\\$\\(EXEEXT\\) \\\\\n") "") - (("test_testbed_api_topology_clique\\$\\(EXEEXT\\) \\\\\n") "")) - (substitute* "src/topology/Makefile" - (("^check_PROGRAMS.*") "\n") - (("test_gnunet_daemon_topology\\$\\(EXEEXT\\)\n") "")) - (substitute* "src/namestore/Makefile" - (("\\$\\(am__append_2\\)") "")) - (substitute* "src/gns/Makefile" - (("\\$\\(am__append_4\\)") "")) - (substitute* "contrib/Makefile" - (("^check_PROGRAMS.*") "\n")) - ;; 'test' from coreutils doesn't behave as the test expects. - (substitute* '("src/gns/gnunet-gns-proxy-setup-ca.in" - "src/transport/gnunet-transport-certificate-creation.in") - (("gnutls-certtool") "certtool")) - #t)) - (add-before 'check 'set-env-var-for-tests - (lambda _ - (setenv "LANG" "en_US.UTF-8"))) - ;; Swap 'check and 'install phases and add installed binaries to $PATH. - (add-before 'check 'set-path-for-check - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "GNUNET_PREFIX" (string-append out "/lib")) - (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))) - #t)) - (delete 'check) - (add-after 'install 'check - (assoc-ref %standard-phases 'check))))) - (synopsis "Secure, decentralized, peer-to-peer networking framework") - (description - "GNUnet is a framework for secure peer-to-peer networking. The + "18a44qf8hdq5hqb9ygi45k0zxlhy5d764kan0cz72ir7p0lxcj2h"))))) + +(define-public gnunet + (let ((commit "d36019fe48ff1e4e56754ef3e689bd67445a38f6")) + (package + (name "gnunet") + (version "0.14.0") + ;; 'test_proxy.sh' is missing from the tarball + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.gnunet.org/gnunet.git/") + (commit commit))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "0llwz6ng5hl2bmv4yyb8l39frj9kkzdd1x8wx63dy988hkv8l1w1")))) + (build-system gnu-build-system) + (inputs + `(("bluez" ,bluez) + ("glpk" ,glpk) + ("gnurl" ,gnurl) + ("gnutls" ,gnutls/dane) + ("gstreamer" ,gstreamer) + ("jansson" ,jansson) + ("libextractor" ,libextractor) + ("libidn" ,libidn2) + ("libgcrypt" ,libgcrypt) + ("libjpeg" ,libjpeg-turbo) + ("libltdl" ,libltdl) + ("libmicrohttpd" ,libmicrohttpd) + ("libogg" ,libogg) + ("libsodium" ,libsodium) + ("libunistring" ,libunistring) + ("miniupnpc" ,miniupnpc) + ("opus" ,opus) + ("pulseaudio" ,pulseaudio) + ("sqlite" ,sqlite) + ("zbar" ,zbar) + ("zlib" ,zlib))) + (native-inputs + `(("curl" ,curl) + ("libtool" ,libtool) + ("autoconf" ,autoconf-wrapper) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ("texinfo" ,texinfo) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("xxd" ,xxd) + ("build-common" ,build-common) + ("which" ,(@ (gnu packages base) which)))) + (arguments + '(#:parallel-tests? #f ; Parallel tests aren't supported. + #:phases + (modify-phases %standard-phases + (add-before 'bootstrap 'add-build-common-submodule + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((build-common (assoc-ref (or native-inputs inputs) + "build-common"))) + ;; When building from git, include the contrib/build-common + ;; submodule. + (when build-common + (delete-file-recursively "contrib/build-common") + (symlink build-common "contrib/build-common") + ;; bootstrap expects this to be writable + ;; or non-existent, which isn't the case. + (delete-file "contrib/Makefile.inc"))) + #t)) + (add-after 'unpack 'fixup-pofile-writability + (lambda _ + ;; bootstrap expects this to be writable + (chmod "po/POTFILES.in" #o700) + #t)) + (add-after 'configure 'remove-ftbfs-tests + ;; These tests fail to compile + (lambda _ + (substitute* "src/conversation/Makefile" + (("test_conversation_api\\$\\(EXEEXT\\) \\\\\n") "")) + #t)) + (add-after 'configure 'remove-failing-tests + ;; These tests fail in Guix's building environment. + (lambda _ + (substitute* "src/transport/Makefile" + (("\\$\\(am__EXEEXT_15\\)") "") ; test_transport_api_https + (("test_transport_api_manipulation_cfg\\$\\(EXEEXT\\) \\\\\n") "") + (("test_transport_api_udp_nat\\$\\(EXEEXT\\) \\\\\n") "") + (("test_transport_blacklisting_multiple_plugins\\$\\(EXEEXT\\) \\\\\n") "")) + (substitute* "src/testbed/Makefile" + (("test_testbed_api_2peers_1controller\\$\\(EXEEXT\\) \\\\\n") "") + (("test_testbed_api_statistics\\$\\(EXEEXT\\) \\\\\n") "") + (("test_testbed_api_test\\$\\(EXEEXT\\) \\\\\n") "") + (("test_testbed_api_test_timeout\\$\\(EXEEXT\\) \\\\\n") "") + (("test_testbed_api_topology\\$\\(EXEEXT\\) \\\\\n") "") + (("test_testbed_api_topology_clique\\$\\(EXEEXT\\) \\\\\n") "")) + (substitute* "src/topology/Makefile" + (("^check_PROGRAMS.*") "\n") + (("test_gnunet_daemon_topology\\$\\(EXEEXT\\)\n") "")) + (substitute* "src/namestore/Makefile" + (("\\$\\(am__append_2\\)") "")) + (substitute* "src/gns/Makefile" + (("\\$\\(am__append_4\\)") "")) + (substitute* "contrib/Makefile" + (("^check_PROGRAMS.*") "\n")) + ;; 'test' from coreutils doesn't behave as the test expects. + (substitute* '("src/gns/gnunet-gns-proxy-setup-ca.in" + "src/transport/gnunet-transport-certificate-creation.in") + (("gnutls-certtool") "certtool")) + #t)) + (add-before 'check 'set-env-var-for-tests + (lambda _ + (setenv "LANG" "en_US.UTF-8"))) + ;; Swap 'check and 'install phases and add installed binaries to $PATH. + (add-before 'check 'set-path-for-check + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "GNUNET_PREFIX" (string-append out "/lib")) + (setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))) + #t)) + (delete 'check) + (add-after 'install 'check + (assoc-ref %standard-phases 'check))))) + (synopsis "Secure, decentralized, peer-to-peer networking framework") + (description + "GNUnet is a framework for secure peer-to-peer networking. The high-level goal is to provide a strong foundation of free software for a global, distributed network that provides security and privacy. GNUnet in that sense aims to replace the current internet protocol stack. Along with an application for secure publication of files, it has grown to include all kinds of basic applications for the foundation of a GNU internet.") - (license license:agpl3+) - (home-page "https://gnunet.org/"))) + (license license:agpl3+) + (home-page "https://gnunet.org/")))) (define-public guile-gnunet ;GSoC 2015! (let ((commit "d12167ab3c8d7d6caffd9c606e389ef043760602") -- 2.30.0