guix-devel
[Top][All Lists]
Advanced

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

[GSoC] Guix + GNUnet: report


From: asgeir
Subject: [GSoC] Guix + GNUnet: report
Date: Fri, 21 Aug 2015 21:05:16 +0200 (CEST)

Hello!

it’s been a while since my last report, time for some news.

  What happened since last time?
  ——————————————————————————————

After our meeting with Ludovic and Christian, I started working on the
downloading and publication related functions. The tests and example
programs were rapidly riddled with bugs and segfaults, and I’ve spent
around one month trying to get the publication working.

Once these problems have been addressed (i.e. a week ago), I could
finally start working on the GNUnet publisher for Guix. Its first
version can only upload one store item at a time, and isn’t even
functional yet: a fikle segfault deems it unusable. Before noticing
this segfault (it doesn’t always happen), I started working on a more
complex version that would allow bulk publication of store items, but
this gain in complexity came with a hole new set of strange and hardly
traceable errors (SIGILL and SIGBUS), and it’s far from being
usable. Moreover, the two version seem to have difficulties handling
symlinks.

  Guile – GNUnet
  ——————————————

The bindings are focused on the FileSharing service, and seem
usable. I’ll write detailed documentation before the end of the GSoC,
and list the pitfalls to avoid (at least those I’m aware of). There’s
still work to do, notably:

  — unify the names, according to Scheme/Guile/Guix conventions, and
    reorganize the source.

  — check every function for lacks of arguments checking, verify
    everything that’s given to foreign functions.

  — replace all ad-hoc exceptions with more meaningful srfi-34
    exceptions;

  — replace `invalid-result` exceptions, raised whenever a foreign
    function returns NULL, with more meaningful ones (by inspecting
    the GNUnet source);

  — use the various “context pointers” to allow a more functional
    style: discarded in the current bindings, these are transmitted
    from one function call to another (akin `fold`).

  — improve testing, document everything, complete the bindings and
    extend them to other GNUnet services.

  Publishing packages
  ———————————————————

Eclosed you’ll find the more usable version of the publisher, “tested”
with the following software:

  — Guix:         commit 7cb6f648b2486b0e6060a333564432a0830637de
  — GNUnet:       rev.   36242
  — Libextractor: rev. 36031
  — the bindings: commit dc6f74d269fcb324d8649f3c511299b7ba2be2a4

It’s important to use a recent version of GNUnet, because its API
changed recently (especially, Guix’s currently packaged version isn’t
good).

This publisher can be tested: for that you’ll have to put
`publish-gnunet.scm` and `publish-utils.scm` in `guix/scripts`, and
start GNUnet (see my previous reports). Then you can create an ego:

  $ gnunet-identity -C mytestego

and call the publisher with:

  $ guix publish-gnunet -c /path/to/gnunet.conf -P mytestego \
                           /gnu/store/somedirectory

The file `publish-utils.scm` contains code shared between the HTTP
publisher and this one; I did not knew were to store it, thus the
improper module in (guix scripts). `publish-gnunet-multi.scm` is the
WIP second version, not usable at all :(

As usual, do not hesitate to contact me for any question or remark!
-- 
Rémi

Attachment: publish-gnunet-multi.scm
Description: Text Data

Attachment: publish-gnunet.scm
Description: Text Data

Attachment: publish-utils.scm
Description: Text Data


reply via email to

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