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