Patchwork [1/2] gnu: gnunet: Add inputs.

login
register
mail settings
Submitter non such
Date Sept. 16, 2016, 1:49 p.m.
Message ID <20160916134921.17987-1-ng0@we.make.ritual.n0.is>
Download mbox | patch
Permalink /patch/15691/
State New
Headers show

Comments

non such - Sept. 16, 2016, 1:49 p.m.
* gnu/packages/gnunet.scm (gnunet)[inputs]: Add inputs
zlib, perl, jansson, ncurses, nss, gmp, bluez, glib, libogg.
(gnunet)[native-inputs]: Move python-2 from here ...
to (gnunet)[inputs].
---
 gnu/packages/gnunet.scm | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)
Ricardo Wurmus - Sept. 19, 2016, 1:30 p.m.
ng0 <ng0@we.make.ritual.n0.is> writes:

> * gnu/packages/gnunet.scm (gnunet)[inputs]: Add inputs
> zlib, perl, jansson, ncurses, nss, gmp, bluez, glib, libogg.
> (gnunet)[native-inputs]: Move python-2 from here ...
> to (gnunet)[inputs].

Have you checked that the resulting build artifacts retain references to
all these new inputs?

Is adding “bluez” and “libogg” really needed?  They seem a little
unusual for networking software.

~~ Ricardo
non such - Sept. 19, 2016, 2:30 p.m.
Ricardo Wurmus <rekado@elephly.net> writes:

> ng0 <ng0@we.make.ritual.n0.is> writes:
>
>> * gnu/packages/gnunet.scm (gnunet)[inputs]: Add inputs
>> zlib, perl, jansson, ncurses, nss, gmp, bluez, glib, libogg.
>> (gnunet)[native-inputs]: Move python-2 from here ...
>> to (gnunet)[inputs].
>
> Have you checked that the resulting build artifacts retain references to
> all these new inputs?

With the assumption that currently our gnunet usage is limited because
we ship out 0.10.1 which is no longer compatible to HEAD but a release
will happen soon, I don't know if all of this is featured in the very
old version 0.10.1, but iirc there weren't many changes in dependencies,
so they should be used.
Could be that I need to pass some switches. I'll send an updated patch
later and document which dependency is needed for which part.

> Is adding “bluez” and “libogg” really needed?  They seem a little
> unusual for networking software.

It is not just networking software.
It's been to long since I found out all these dependencies, I just
decided to add them to guix master now. Bluez is for bluetooth support
of whatever feature (look it up in either documentation or the
Makefile), libogg is needed for audio playback I think. I could be wrong
about this one. You know, the longer you work on something the more you
find and without comments it all gets obscure. But I really think libogg
in addition to libopus is for something audio related.
If you think comments are needed because someone in the future could
decide to cut down the "bloat", I can comment all the dependencies with
which part of GNUnet needs them.

https://gnunet.org/bugs/view.php?id=4618 I could also add tex, but I
will add a variant of gnunet later which adds tex as a dependency.

> ~~ Ricardo
>
>
Ricardo Wurmus - Sept. 19, 2016, 2:46 p.m.
ng0 <ng0@we.make.ritual.n0.is> writes:

>> Is adding “bluez” and “libogg” really needed?  They seem a little
>> unusual for networking software.
>
> It is not just networking software.
> It's been to long since I found out all these dependencies, I just
> decided to add them to guix master now. Bluez is for bluetooth support
> of whatever feature (look it up in either documentation or the
> Makefile), libogg is needed for audio playback I think. I could be wrong
> about this one. You know, the longer you work on something the more you
> find and without comments it all gets obscure. But I really think libogg
> in addition to libopus is for something audio related.

Well, that’s why I’m asking as I don’t have time to investigate the
reasons for the suggested changes myself.  I know what “bluez” and
“libogg” do, but it’s a bit odd to have them as dependencies of GNUnet.

GNUnet doesn’t encode/decode ogg audio files, does it?

> If you think comments are needed because someone in the future could
> decide to cut down the "bloat", I can comment all the dependencies with
> which part of GNUnet needs them.

Commenting unusual inputs should be enough.

~~ Ricardo
non such - Sept. 19, 2016, 3:04 p.m.
ng0 <ng0@we.make.ritual.n0.is> writes:

> * gnu/packages/gnunet.scm (gnunet)[inputs]: Add inputs
> zlib, perl, jansson, ncurses, nss, gmp, bluez, glib, libogg.
> (gnunet)[native-inputs]: Move python-2 from here ...
> to (gnunet)[inputs].
> ---
>  gnu/packages/gnunet.scm | 24 +++++++++++++++++++-----
>  1 file changed, 19 insertions(+), 5 deletions(-)
>
> diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
> index 56a5ea3..e4fd95e 100644
> --- a/gnu/packages/gnunet.scm
> +++ b/gnu/packages/gnunet.scm
> @@ -34,14 +34,18 @@
>    #:use-module (gnu packages glib)
>    #:use-module (gnu packages gnome)
>    #:use-module (gnu packages gnupg)
> +  #:use-module (gnu packages gnuzilla)
>    #:use-module (gnu packages groff)
>    #:use-module (gnu packages gtk)
>    #:use-module (gnu packages guile)
>    #:use-module (gnu packages gstreamer)
>    #:use-module (gnu packages libidn)
> +  #:use-module (gnu packages linux)
>    #:use-module (gnu packages image)
>    #:use-module (gnu packages libunistring)
>    #: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 perl)
>    #:use-module (gnu packages pulseaudio)
> @@ -49,6 +53,7 @@
>    #:use-module (gnu packages databases)
>    #:use-module (gnu packages tls)
>    #:use-module (gnu packages video)
> +  #:use-module (gnu packages web)
>    #:use-module (gnu packages xiph)
>    #:use-module (gnu packages backup)
>    #:use-module ((guix licenses) #:prefix license:)
> @@ -217,8 +222,9 @@ supports HTTP, HTTPS and GnuTLS.")
>        (method url-fetch)
>        (uri (string-append "mirror://gnu/gnunet/gnunet-" version
>                            ".tar.gz"))
> -      (sha256 (base32
> -               "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
> +      (sha256
> +       (base32
> +        "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
>     (build-system gnu-build-system)
>     (inputs
>      `(("glpk" ,glpk)
> @@ -236,10 +242,18 @@ supports HTTP, HTTPS and GnuTLS.")
>        ("opus" ,opus)
>        ("pulseaudio" ,pulseaudio)
>        ("sqlite" ,sqlite)
> -      ("zlib" ,zlib)))
> +      ("zlib" ,zlib)
> +      ("perl" ,perl)
> +      ("jansson" ,jansson)
> +      ("ncurses" ,ncurses)

I just grepped the code for curses and ncurses and contacted the
translators where the only source of this is. There's no single
curses/ncurses reference in svn/gnunet/. They write something about
"wizard-curses", a text interface based configuration... well I'd like
to have that one, because at the moment the config is either textfile or
X desktop.

> +      ("nss" ,nss)
> +      ("gmp" ,gmp)
> +      ("bluez" ,bluez)
> +      ("glib" ,glib)
> +      ("libogg" ,libogg)
> +      ("python-2" ,python-2))) ; tests and gnunet-qr
>     (native-inputs
> -    `(("pkg-config" ,pkg-config)
> -      ("python" ,python-2)))
> +    `(("pkg-config" ,pkg-config)))
>     (arguments
>      '(#:configure-flags
>        (list (string-append "--with-nssdir=" %output "/lib"))
> -- 
> 2.10.0
>
>
non such - Sept. 19, 2016, 3:17 p.m.
Ricardo Wurmus <rekado@elephly.net> writes:

> ng0 <ng0@we.make.ritual.n0.is> writes:
>
>>> Is adding “bluez” and “libogg” really needed?  They seem a little
>>> unusual for networking software.
>>
>> It is not just networking software.
>> It's been to long since I found out all these dependencies, I just
>> decided to add them to guix master now. Bluez is for bluetooth support
>> of whatever feature (look it up in either documentation or the
>> Makefile), libogg is needed for audio playback I think. I could be wrong
>> about this one. You know, the longer you work on something the more you
>> find and without comments it all gets obscure. But I really think libogg
>> in addition to libopus is for something audio related.
>
> Well, that’s why I’m asking as I don’t have time to investigate the
> reasons for the suggested changes myself.  I know what “bluez” and
> “libogg” do, but it’s a bit odd to have them as dependencies of GNUnet.

GNUnet has the ability to create an adhoc meshnetwork over bluetooth if
I remember correctly. I'll ask christian again, I never used this part.

greping gets you this:

ABOUT-NLS:157:     bluez-pin          | []             []                                |
ABOUT-NLS:341:     bluez-pin          |     [] []  []  []                [] []          |
ABOUT-NLS:525:     bluez-pin          | []  []  []                [] [] []  []    []       |
ABOUT-NLS:709:     bluez-pin          |    [] []    [] []             []              |
ABOUT-NLS:893:     bluez-pin          | []           []         []   [] []    [] []    [] |
ABOUT-NLS:1077:     bluez-pin          | []              [] [] [] []  []  []          []   | 37
src/transport/gnunet-helper-transport-bluetooth.c:100: * In bluez library, the maximum name length of a device is 8

Which is why I have to ask about this.

>
> GNUnet doesn’t encode/decode ogg audio files, does it?

It has this telephony feature (gnunet-conversation, despite the README
it no longer is experimental) and gnunet-helper-audio-record-gst
references ogg.
src/conversation/gnunet-helper-audio-record.c:41:#include <ogg/ogg.h>

configure.ac:424:# libogg
configure.ac:425:AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
configure.ac:426:        [AC_CHECK_HEADERS([ogg/ogg.h],
configure.ac:428:          ogg=1
configure.ac:429:          AC_DEFINE(HAVE_OGG,1,[Have ogg]),
configure.ac:431:          ogg=0
configure.ac:432:          AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
configure.ac:434:        ogg=0)


>> If you think comments are needed because someone in the future could
>> decide to cut down the "bloat", I can comment all the dependencies with
>> which part of GNUnet needs them.
>
> Commenting unusual inputs should be enough.
>
> ~~ Ricardo
>
>
Ricardo Wurmus - Sept. 19, 2016, 3:21 p.m.
ng0 <ng0@we.make.ritual.n0.is> writes:

>> GNUnet doesn’t encode/decode ogg audio files, does it?
>
> It has this telephony feature (gnunet-conversation, despite the README
> it no longer is experimental) and gnunet-helper-audio-record-gst
> references ogg.
> src/conversation/gnunet-helper-audio-record.c:41:#include <ogg/ogg.h>
>
> configure.ac:424:# libogg
> configure.ac:425:AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
> configure.ac:426:        [AC_CHECK_HEADERS([ogg/ogg.h],
> configure.ac:428:          ogg=1
> configure.ac:429:          AC_DEFINE(HAVE_OGG,1,[Have ogg]),
> configure.ac:431:          ogg=0
> configure.ac:432:          AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
> configure.ac:434:        ogg=0)

Ah, thanks.  This makes sense.  I wonder if it were possible to split
the applications.  Not now but in the future.  Would be nice to be able
install these things separately.

~~ Ricardo
Hartmut Goebel - Sept. 19, 2016, 3:34 p.m.
Am 19.09.2016 um 17:21 schrieb Ricardo Wurmus:
> Ah, thanks.  This makes sense.  I wonder if it were possible to split
> the applications.  Not now but in the future.  Would be nice to be able
> install these things separately.

I'm afraid this would require larger changes to gnunet - which I do not
expect to happen anytime soon. They even added an option `--with-taler`
(AFAIR) to compile only the parts relevant for the taler payment. This
sound like gnunet being a huge pile of software which is hard to split. :-(
non such - Sept. 19, 2016, 3:37 p.m.
Ricardo Wurmus <rekado@elephly.net> writes:

> ng0 <ng0@we.make.ritual.n0.is> writes:
>
>>> GNUnet doesn’t encode/decode ogg audio files, does it?
>>
>> It has this telephony feature (gnunet-conversation, despite the README
>> it no longer is experimental) and gnunet-helper-audio-record-gst
>> references ogg.
>> src/conversation/gnunet-helper-audio-record.c:41:#include <ogg/ogg.h>
>>
>> configure.ac:424:# libogg
>> configure.ac:425:AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
>> configure.ac:426:        [AC_CHECK_HEADERS([ogg/ogg.h],
>> configure.ac:428:          ogg=1
>> configure.ac:429:          AC_DEFINE(HAVE_OGG,1,[Have ogg]),
>> configure.ac:431:          ogg=0
>> configure.ac:432:          AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
>> configure.ac:434:        ogg=0)
>
> Ah, thanks.  This makes sense.  I wonder if it were possible to split
> the applications.  Not now but in the future.  Would be nice to be able
> install these things separately.

Maybe.. I think this needs some work on the build system, and I don't
feel up to doing that now (or anyone else I know of), higher priority is
also a change in some part of the build system so that releases can
happen more regulary.

What I did for taler preparation packaging for Guix is that I inherited
gnunet-svn and created a gnunet with postgresql bindings instead of
wateversql is our default again. If taler once a release candidate is
out will remain postgresql only, I will have to move this gnunet-variant
over to guix master.

> ~~ Ricardo
>
>
non such - Sept. 19, 2016, 4 p.m.
Hartmut Goebel <h.goebel@goebel-consult.de> writes:

> [ Unknown signature status ]
> Am 19.09.2016 um 17:21 schrieb Ricardo Wurmus:
>> Ah, thanks.  This makes sense.  I wonder if it were possible to split
>> the applications.  Not now but in the future.  Would be nice to be able
>> install these things separately.
>
> I'm afraid this would require larger changes to gnunet - which I do not
> expect to happen anytime soon. They even added an option `--with-taler`
> (AFAIR) to compile only the parts relevant for the taler payment. This
> sound like gnunet being a huge pile of software which is hard to split. :-(

I don't know about taler-payment. I just package merchant and that other
part which requires building, the rest does not need packaging.

About a huge piece of software, I don't see this. I see modules, and at
the rootlevel svn it has many individual pieces, one of them being
gnunet. I have no access to the roadmap, but I can ask for a further
splitup / makefile options to be added. Makefiles are not so much my
domain and I wiuld like to add this, but I focus on other things.
ng0 - Sept. 24, 2016, 9:56 p.m.
Ricardo Wurmus <rekado@elephly.net> writes:

> ng0 <ng0@we.make.ritual.n0.is> writes:
>
>>> GNUnet doesn’t encode/decode ogg audio files, does it?
>>
>> It has this telephony feature (gnunet-conversation, despite the README
>> it no longer is experimental) and gnunet-helper-audio-record-gst
>> references ogg.
>> src/conversation/gnunet-helper-audio-record.c:41:#include <ogg/ogg.h>
>>
>> configure.ac:424:# libogg
>> configure.ac:425:AC_CHECK_LIB(ogg, ogg_stream_flush_fill,
>> configure.ac:426:        [AC_CHECK_HEADERS([ogg/ogg.h],
>> configure.ac:428:          ogg=1
>> configure.ac:429:          AC_DEFINE(HAVE_OGG,1,[Have ogg]),
>> configure.ac:431:          ogg=0
>> configure.ac:432:          AC_DEFINE(HAVE_OGG,0,[lacking ogg]))],
>> configure.ac:434:        ogg=0)
>
> Ah, thanks.  This makes sense.  I wonder if it were possible to split
> the applications.  Not now but in the future.  Would be nice to be able
> install these things separately.
>
> ~~ Ricardo

We continued this discussion for various reasons outside of the list.

On topic, this is not possible at the moment, however you can build all
databases at once into gnunet core.

I think it would be enough to apply the changes I suggested for the
moment, as time goes by there'll be according patches by myself and
other contributors of gnunet to the gnunet related parts in guix to
address the needs of applications which require gnunet.

Patch

diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm
index 56a5ea3..e4fd95e 100644
--- a/gnu/packages/gnunet.scm
+++ b/gnu/packages/gnunet.scm
@@ -34,14 +34,18 @@ 
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
   #:use-module (gnu packages gnupg)
+  #:use-module (gnu packages gnuzilla)
   #:use-module (gnu packages groff)
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages guile)
   #:use-module (gnu packages gstreamer)
   #:use-module (gnu packages libidn)
+  #:use-module (gnu packages linux)
   #:use-module (gnu packages image)
   #:use-module (gnu packages libunistring)
   #: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 perl)
   #:use-module (gnu packages pulseaudio)
@@ -49,6 +53,7 @@ 
   #:use-module (gnu packages databases)
   #:use-module (gnu packages tls)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages web)
   #:use-module (gnu packages xiph)
   #:use-module (gnu packages backup)
   #:use-module ((guix licenses) #:prefix license:)
@@ -217,8 +222,9 @@  supports HTTP, HTTPS and GnuTLS.")
       (method url-fetch)
       (uri (string-append "mirror://gnu/gnunet/gnunet-" version
                           ".tar.gz"))
-      (sha256 (base32
-               "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
+      (sha256
+       (base32
+        "04wxzm3wkgqbn42b8ksr4cx6m5cckyig5cls1adh0nwdczwvnp7n"))))
    (build-system gnu-build-system)
    (inputs
     `(("glpk" ,glpk)
@@ -236,10 +242,18 @@  supports HTTP, HTTPS and GnuTLS.")
       ("opus" ,opus)
       ("pulseaudio" ,pulseaudio)
       ("sqlite" ,sqlite)
-      ("zlib" ,zlib)))
+      ("zlib" ,zlib)
+      ("perl" ,perl)
+      ("jansson" ,jansson)
+      ("ncurses" ,ncurses)
+      ("nss" ,nss)
+      ("gmp" ,gmp)
+      ("bluez" ,bluez)
+      ("glib" ,glib)
+      ("libogg" ,libogg)
+      ("python-2" ,python-2))) ; tests and gnunet-qr
    (native-inputs
-    `(("pkg-config" ,pkg-config)
-      ("python" ,python-2)))
+    `(("pkg-config" ,pkg-config)))
    (arguments
     '(#:configure-flags
       (list (string-append "--with-nssdir=" %output "/lib"))