;;; This file is part of GNUnet.
-;;; Copyright (C) 2016, 2017 GNUnet e.V.
+;;; Copyright (C) 2016, 2017, 2018 GNUnet e.V.
;;;
-;;; GNUnet is free software; you can redistribute it and/or modify
-;;; it under the terms of the GNU General Public License as published
-;;; by the Free Software Foundation; either version 3, or (at your
-;;; option) any later version.
+;;; GNUnet is free software: you can redistribute it and/or modify it
+;;; under the terms of the GNU Affero General Public License as published
+;;; by the Free Software Foundation, either version 3 of the License,
+;;; or (at your option) any later version.
;;;
;;; GNUnet is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;;; General Public License for more details.
+;;; Affero General Public License for more details.
;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with GNUnet; see the file COPYING. If not, write to the
-;;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;;; Boston, MA 02110-1301, USA.
-;;;
-;; Guix package for GNUnet development
-;;
-;; INSTALL
-;; -------
-;;
-;; To build and install the package in the user environment, use:
-;;
-;; guix package --install-from-file=guix-env.scm
-;;
-;; BUILD ONLY
-;; ----------
-;;
-;; Precondition for using this file is that you run Guix and have a
-;; development setup for this setup, which involves a version of Guile in
-;; your PATH.
-;;
-;; guix build -f guix-env.scm
-;;
-;; We'd like to provide advanced functions such as guix environment specific
-;; gnunet-git package and usage of gnunet-gtk-git, but this is subject
-;; to tests right now.
-;;
-;; Further versions of GNUnet for Guix can currently be found in
-;; https://git.pragmatique.xyz/ng0-packages/log.html, mirrored at
-;; https://notabug.org/ng0/ng0-packages
+;;; You should have received a copy of the GNU Affero General Public License
+;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
(use-modules
(ice-9 popen)
(guix gexp)
((guix build utils) #:select (with-directory-excursion))
(guix git-download)
+ (guix utils) ; current-source-directory
(gnu packages)
(gnu packages aidc)
(gnu packages autotools)
(gnu packages pulseaudio)
(gnu packages python)
(gnu packages tex)
+ (gnu packages texinfo)
+ (gnu packages tex)
(gnu packages tls)
+ (gnu packages upnp)
(gnu packages video)
(gnu packages web)
(gnu packages xiph)
((guix licenses) #:prefix license:))
-(define %source-dir (dirname (current-filename)))
-
-(define gnunet-git
- (package
- (name "gnunet-git")
- (version (string-append "0.10.1-" "dev"))
- (source
- (local-file %source-dir
- #:recursive? #t
- #:select? (git-predicate %source-dir)))
- (build-system gnu-build-system)
- (inputs
- `(("glpk" ,glpk)
- ("gnurl" ,gnurl)
- ("gstreamer" ,gstreamer)
- ("gst-plugins-base" ,gst-plugins-base)
- ("gnutls" ,gnutls)
- ("libextractor" ,libextractor)
- ("libgcrypt" ,libgcrypt)
- ("libidn" ,libidn)
- ("libmicrohttpd" ,libmicrohttpd)
- ("libltdl" ,libltdl)
- ("libunistring" ,libunistring)
- ("openssl" ,openssl)
- ("opus" ,opus)
- ("pulseaudio" ,pulseaudio)
- ("sqlite" ,sqlite)
- ("postgresql" ,postgresql)
- ("mysql" ,mysql)
- ("zlib" ,zlib)
- ("perl" ,perl)
- ("python" ,python) ; tests and gnunet-qr
- ("jansson" ,jansson)
- ("nss" ,nss)
- ("gmp" ,gmp)
- ("bluez" ,bluez) ; for optional bluetooth feature
- ("glib" ,glib)
- ;; There are currently no binary substitutes for texlive on
- ;; hydra.gnu.org or its mirrors due to its size. Uncomment if you need it.
- ;;("texlive-minimal" ,texlive-minimal) ; optional.
- ("libogg" ,libogg)))
- (native-inputs
- `(("pkg-config" ,pkg-config)
- ("autoconf" ,autoconf)
- ("automake" ,automake)
- ("gnu-gettext" ,gnu-gettext)
- ("libtool" ,libtool)))
- ;; TODO: To make use of out:debug, which carries the symbols,
- ;; this file needs to fixed.
- (outputs '("out" "debug"))
- (arguments
- `(#:configure-flags
- (list (string-append "--with-nssdir=" %output "/lib")
- "--enable-gcc-hardening"
- "--enable-linker-hardening"
+(define %source-dir (current-source-directory))
- "--enable-poisoning"
- "--enable-sanitizer"
- "--enable-experimental"
- "--enable-logging=verbose"
- "CFLAGS=-ggdb -O0")
- ;;#:parallel-tests? #f ; parallel building seems to fail
- ;;#:tests? #f ; fail: test_gnunet_statistics.py
- #:phases
- ;; swap check and install phases and set paths to installed bin
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-bin-sh
- (lambda _
- (substitute* "bootstrap"
- (("contrib/pogen.sh") "sh contrib/pogen.sh"))
- (for-each (lambda (f) (chmod f #o755))
- (find-files "po" ""))
- #t))
- (add-after 'patch-bin-sh 'bootstrap
- (lambda _
- (zero? (system* "sh" "bootstrap"))))
- (delete 'check))))
- ;; XXX: https://gnunet.org/bugs/view.php?id=4619
- ;; (add-after 'install 'set-path-for-check
- ;; (lambda* (#:key outputs #:allow-other-keys)
- ;; (let* ((out (assoc-ref outputs "out"))
- ;; (bin (string-append out "/bin"))
- ;; (lib (string-append out "/lib")))
- ;; (setenv "GNUNET_PREFIX" lib)
- ;; (setenv "PATH" (string-append (getenv "PATH") ":" bin))
- ;; (zero? (system* "make" "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:gpl3+)
- (home-page "https://gnunet.org/")))
+(define gnunet-dev-env
+ (let* ((revision "1")
+ (select? (delay (or (git-predicate
+ (current-source-directory))
+ source-file?))))
+ (package
+ (inherit gnunet)
+ (name "gnunet")
+ (version (string-append "git" revision))
+ (source
+ (local-file
+ (string-append (getcwd))
+ #:recursive? #t))
+ (inputs
+ `(("glpk" ,glpk)
+ ("gnurl" ,gnurl)
+ ("gstreamer" ,gstreamer)
+ ("gst-plugins-base" ,gst-plugins-base)
+ ("gnutls/dane" ,gnutls/dane)
+ ("libextractor" ,libextractor)
+ ("libgcrypt" ,libgcrypt)
+ ("libidn" ,libidn)
+ ("libmicrohttpd" ,libmicrohttpd)
+ ("libltdl" ,libltdl)
+ ("libunistring" ,libunistring)
+ ("openssl" ,openssl)
+ ("opus" ,opus)
+ ("pulseaudio" ,pulseaudio)
+ ("sqlite" ,sqlite)
+ ("postgresql" ,postgresql)
+ ("mysql" ,mariadb)
+ ("zlib" ,zlib)
+ ("perl" ,perl)
+ ("python-2" ,python-2) ; tests and gnunet-qr
+ ("python2-future" ,python2-future)
+ ("jansson" ,jansson)
+ ("nss" ,nss)
+ ("glib" ,glib "bin")
+ ("gmp" ,gmp)
+ ("bluez" ,bluez) ; for optional bluetooth feature
+ ("glib" ,glib)
+ ;; ("texlive" ,texlive) ;FIXME: minimize.
+ ("texlive-tiny" ,texlive-tiny) ;; Seems to be enough for _just_ info output.
+ ("miniupnpc" ,miniupnpc)
+ ("libogg" ,libogg)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("autoconf" ,autoconf)
+ ("automake" ,automake)
+ ("gnu-gettext" ,gnu-gettext)
+ ("which" ,which)
+ ("texinfo" ,texinfo-5) ; Debian stable: 5.2
+ ("libtool" ,libtool)))
+ (outputs '("out" "debug"))
+ (arguments
+ `(;#:configure-flags
+ ;;(list (string-append "--with-nssdir=" %output "/lib")
+ ;;"--enable-gcc-hardening"
+ ;;"--enable-linker-hardening"
+ ;;;;"--enable-documentation-only")
+ ;;;"--enable-logging=verbose"
+ ;;;"CFLAGS=-ggdb -O0")
+ #:phases
+ ;; swap check and install phases and set paths to installed bin
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-bin-sh
+ (lambda _
+ (for-each (lambda (f) (chmod f #o755))
+ (find-files "po" ""))
+ #t))
+ (add-after 'patch-bin-sh 'bootstrap
+ (lambda _
+ (invoke "sh" "bootstrap")))
+ ;;(add-before 'build 'chdir
+ ;; (lambda _
+ ;; (chdir "doc/documentation")))
+ (delete 'check)
+ ;; XXX: https://gnunet.org/bugs/view.php?id=4619
+ (add-after 'install 'set-path-for-check
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin"))
+ (lib (string-append out "/lib")))
+ (setenv "GNUNET_PREFIX" lib)
+ (setenv "PATH" (string-append (getenv "PATH") ":" bin))
+ (invoke "make" "check"))))))))))
-gnunet-git
+gnunet-dev-env