guix-devel
[Top][All Lists]
Advanced

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

Guix & IPFS


From: Pierre Neidhardt
Subject: Guix & IPFS
Date: Mon, 15 Oct 2018 09:59:04 +0200
User-agent: mu4e 1.0; emacs 26.1

Hi Guix!

I'm in the process of packaging IPFS.
It has about 100 dependencies, most of which are currently missing in
Guix, so that's gonna take me some hours :p
Thankfully Go is rather straightforward to package so that should be
alright.

That said, the case of IPFS of particular: it uses it's own dependency
manager "gx" which retrieves the specific versions of its deps over the
IFPS protocol.

The build recipe is as follows (from the project's Rules.mk):

--8<---------------cut here---------------start------------->8---
install_unsupported:
        @echo "note: this command has yet to be tested to build in the system 
you are using"
        @echo "installing gx"
        go get -v -u github.com/whyrusleeping/gx
        go get -v -u github.com/whyrusleeping/gx-go
        @echo check gx and gx-go
        gx -v && gx-go -v
        @echo downloading dependencies
        gx install --global
        @echo "installing go-ipfs"
        go install -v -tags nofuse ./cmd/ipfs
--8<---------------cut here---------------end--------------->8---

This raises a few questions:

- IPFS is rather peculiar about its dependency versions.
If I package all those dependencies in Guix, I should use the same
versions.  But then we should make sure that no one is going to update
those packages independently, which would break the strict versioning of
IPFS.

Else I could package all those deps as usual (i.e. the latest version) and then 
for
the IPFS package I would use the native inputs as follows:

  ("go-path" ,(package (inherit go-path)
                       (version "1.1.9")
                       (source (origin...
                                  (base32 <new-hash-here>)))))

I should probably define a function of PACKAGE VERSION BASE32 arguments.

- gx retrieves the deps over IPFS: how important is this?  Should we do
  the same?  What about using "gx"?  We could also implement a new
  "gx-fetch" method fully written in Guile.

Thoughts?

--
Pierre Neidhardt
https://ambrevar.xyz/

Attachment: signature.asc
Description: PGP signature


reply via email to

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