From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pierre Neidhardt Subject: Guix & IPFS Date: Mon, 15 Oct 2018 09:59:04 +0200 Message-ID: <87r2grk5dj.fsf@ambrevar.xyz> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:34679) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gBxmQ-00084K-AU for guix-devel@gnu.org; Mon, 15 Oct 2018 03:59:11 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gBxmN-0000Xz-3d for guix-devel@gnu.org; Mon, 15 Oct 2018 03:59:10 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:36905) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gBxmM-0000XQ-Td for guix-devel@gnu.org; Mon, 15 Oct 2018 03:59:07 -0400 List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Guix-devel --=-=-= Content-Type: text/plain 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 ))))) 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/ --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEUPM+LlsMPZAEJKvom9z0l6S7zH8FAlvESMgACgkQm9z0l6S7 zH/P8Af+JVUTYQ2w8FzjcgEbCHsL+uB7M+jMGpBp0hkOWImzx7Di49tI9/8zbvpr FMRyXcTs0cDxt9XeIjvrB/xg3IhYODaMMsUSNrwZHkRNEeYHrOy1C9h258Cq8Uj7 W/V3JgJi0UpgfCkIqxXP0LtPc5WfKyne9EHKEJ/cSfePO7sB3mB4+CXOSVQ1bqFW CbjHCjlmrYk77dt/ydPBQGihMJzf/TNVXWfj8jD7RaaLWeyzllAd75eAKisBgIcL bPLRucbH1DhTZDssI/tqQ4sBL8vr0t88hSmsCnW6Z4ImXYuWRfrNq+xhIFfA8+Gf DIyziumzkoLui4XKlm2gtQo/ZyMPVw== =JHAS -----END PGP SIGNATURE----- --=-=-=--