;; 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.
-;; Let us assume you checked out https://gnunet.org/svn/, and you exported
-;; a variable named GNUNET_SVN_PATH="/home/alice/src/gnunet/svn/".
;;
-;; export GNUNET_SVN_PATH="/home/alice/src/gnunet/svn/"
+;; Simply run "guix build -f guix-env.scm"
;;
-;; A directory in GUILE_LOAD_PATH is a root, this means that the value of
-;; GNUNET_SVN_PATH dictates how we call this Guix module.
-;; We now have to append $GNUNET_SVN_PATH to GUILE_LOAD_PATH and are almost
-;; ready to go.
-;;
-;; export GUILE_LOAD_PATH="/home/alice/.guix-profile/share/guile/site/2.0${GUILE_LOAD_PATH:+:}$GUILE_LOAD_PATH:$GNUNET_SVN_PATH
-;;
-;; Now we make use of the function of Guix to build from expressions:
-;;
-;; guix build --expression="(@ (gnunet guix-env) gnunet-svn)"
-;;
-;; This will build the public exported value gnunet-svn from this file.
-;; See `info guix-build' for more about this magic.
-;;
-;; While this might look complicated, it adds options which will
-;; be added later to this file, for example invoking a development
-;; environment (guix env) etc...
+;; We'd like to provide advanced functions such as guix environment specific
+;; gnunet-svn package, but this is subject to tests right now.
-(define-module (gnunet guix-env)
- #:use-modules (ice-9 popen)
- #:use-modules (ice-9 match)
- #:use-modules (ice-9 rdelim)
- #:use-modules (guix packages)
- #:use-modules (guix build-system gnu)
- #:use-modules (guix gexp)
- #:use-modules ((guix build utils) #:select (with-directory-excursion))
- #:use-modules (gnu packages)
- #:use-modules (gnu packages base)
- #:use-modules (gnu packages gnunet)
- #:use-modules (gnu packages file)
- #:use-modules (gnu packages aidc)
- #:use-modules (gnu packages autotools)
- #:use-modules (gnu packages compression)
- #:use-modules (gnu packages curl)
- #:use-modules (gnu packages geeqie)
- #:use-modules (gnu packages gettext)
- #:use-modules (gnu packages glib)
- #:use-modules (gnu packages gnome)
- #:use-modules (gnu packages gnupg)
- #:use-modules (gnu packages groff)
- #:use-modules (gnu packages gtk)
- #:use-modules (gnu packages guile)
- #:use-modules (gnu packages gstreamer)
- #:use-modules (gnu packages gnuzilla)
- #:use-modules (gnu packages libidn)
- #:use-modules (gnu packages linux)
- #:use-modules (gnu packages image)
- #:use-modules (gnu packages libunistring)
- #:use-modules (gnu packages maths)
- #:use-modules (gnu packages multiprecision)
- #:use-modules (gnu packages pkg-config)
- #:use-modules (gnu packages perl)
- #:use-modules (gnu packages pulseaudio)
- #:use-modules (gnu packages python)
- #:use-modules (gnu packages databases)
- #:use-modules (gnu packages tls)
- #:use-modules (gnu packages tex)
- #:use-modules (gnu packages video)
- #:use-modules (gnu packages web)
- #:use-modules (gnu packages xiph)
- #:use-modules (gnu packages backup)
- #:use-modules ((guix licenses) #:prefix license:))
+(use-modules
+ (ice-9 popen)
+ (ice-9 match)
+ (ice-9 rdelim)
+ (guix packages)
+ (guix build-system gnu)
+ (guix gexp)
+ ((guix build utils) #:select (with-directory-excursion))
+ (gnu packages)
+ (gnu packages base)
+ (gnu packages gnunet)
+ (gnu packages file)
+ (gnu packages aidc)
+ (gnu packages autotools)
+ (gnu packages compression)
+ (gnu packages curl)
+ (gnu packages geeqie)
+ (gnu packages gettext)
+ (gnu packages glib)
+ (gnu packages gnome)
+ (gnu packages gnupg)
+ (gnu packages groff)
+ (gnu packages gtk)
+ (gnu packages guile)
+ (gnu packages gstreamer)
+ (gnu packages gnuzilla)
+ (gnu packages libidn)
+ (gnu packages linux)
+ (gnu packages image)
+ (gnu packages libunistring)
+ (gnu packages maths)
+ (gnu packages multiprecision)
+ (gnu packages pkg-config)
+ (gnu packages perl)
+ (gnu packages pulseaudio)
+ (gnu packages python)
+ (gnu packages databases)
+ (gnu packages tls)
+ (gnu packages tex)
+ (gnu packages video)
+ (gnu packages web)
+ (gnu packages xiph)
+ (gnu packages backup)
+ ((guix licenses) #:prefix license:))
(define %source-dir (dirname (current-filename)))
-;; This will be needed when gnunet source moves to git.
-;; Taken from https://gitlab.com/dustyweb/pubstrate/blob/master/guix.scm
(define git-file?
(let* ((pipe (with-directory-excursion %source-dir
(open-pipe* OPEN_READ "git" "ls-files")))
(any (cut string-suffix? <> file) files))
(_ #f)))))
-(define-public gnunet-svn
+(define gnunet-git
(package
- (name "gnunet-svn")
+ (name "gnunet-git")
(version (string-append "0.10.1-" "dev"))
(source
(local-file %source-dir
#:recursive? #t))
- ;;#:select? git-file?))
+ ;;#:select? git-file?)) ; XXX: FIXME.
(build-system gnu-build-system)
(inputs
`(("glpk" ,glpk)
("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-experimental"
;; These appear to be "broken" on Guix, needs debugging.
- ;;"--enable-gcc-hardening"
+ "--enable-gcc-hardening"
"--enable-linker-hardening"
+
+ "--enable-poisoning"
+ "--enable-sanitizer"
+ "--enable-experimental"
"--enable-logging=verbose"
- "--enable-poisoning")
+ "CFLAGS=-ggdb -O0")
;;#:parallel-tests? #f ; parallel building seems to fail
;;#:tests? #f ; fail: test_gnunet_statistics.py
#:phases
(add-after 'patch-bin-sh 'bootstrap
(lambda _
(zero? (system* "sh" "bootstrap"))))
- (delete 'check)
+ (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"))))))))
+ ;; (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
kinds of basic applications for the foundation of a GNU internet.")
(license license:gpl3+)
(home-page "https://gnunet.org/")))
+
+gnunet-git