[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-developers] GSoC: Binary package distribution through GnuNet (re

From: Rémi Birot-Delrue
Subject: [GNUnet-developers] GSoC: Binary package distribution through GnuNet (report 2)
Date: Thu, 25 Jun 2015 13:02:43 +0200

Hello GnuNet!

Here’s my second report on the “Guix through GnuNet” project. I am still
working on the GnuNet bindings: it’s been a much harder and longer work
than I thought, but the trickiest parts are done (for instance, Guile
had no utility to handle unions, therefore I had to write one to handle
the struct GNUNET_FS_ProgressInfo).

The main data structures (URIs, configuration handles, metadata…) have
been bound and tested, the scheduler has also be bound. Moreover, the
dependency on GOOPS as well as the need of separated C library have been
completely removed.

Code for the bindings are available on the Savannah repository:

You’ll find, in the file `examples/search.scm`, a loose clone of the
`gnunet-search` utility that shows the (uncomplete) API.

These next days, I’ll complete the bindings (upload & download, more
metadata, some syntactic sugar if needed) and start designing the next
step: how to share packages through GnuNet.

Testing the bindings

You’ll need a working GnuNet installation, of course, and Guile (which
is probably already installed on your computer, as it is often needed by
GNU Make).

First, we assure Guile finds libgnunet — a step only necessary if you
installed Gnunet in a directory outside ld’s path:

    $ export LD_LIBRARY_PATH="/.guix-profile/lib/"

The gnunet-search clone currently accepts no argument other than the
keywords of the search, and will start a 5 second search on them. As I
do not advise yet installing the bindings in your system, we have to
execute `search.scm` from the repository’s root (otherwise, Guile won’t
find the bindings). Here’s an example:

    $ echo "hi gnunet!" > foo.txt
    $ gnunet-publish foo.txt
    Publishing `/home/remi/foo.txt' done.
    URI is `gnunet://fs/chk/R2VQDF2ORAIV9JJS6HQVAHTSQJ04VF7U599MJCFSG…'.
    $ git clone git://
    $ cd gnunet/
    $ examples/search.scm "foo"
    gnunet-download -o "foo.txt" gnunet://fs/chk/R2VQDF2ORAIV9JJS6HQV…'.


As usual, if you have any question, suggestion or remark, please do not
hesitate to contact me! (through email or IRC; nick remi`bd)

Good afternoon,
Rémi Birot-Delrue

reply via email to

[Prev in Thread] Current Thread [Next in Thread]