Subject: [PATCH 3/4] gnu: Add go-github-com-ipld-go-ipld-prime.

From: "Artyom V. Poptsov" <[email-masked]>
Date: Tue, 18 Jun 2024 22:43:44 +0300

* gnu/packages/ipfs.scm (go-github-com-ipld-go-ipld-prime): New variable.

Change-Id: Icbf768341fda23154b82f10e3701ce435c9ec6e9
---
 gnu/packages/ipfs.scm | 51 ++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 7fb50452b6..b487062672 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -37,7 +37,8 @@ (define-module (gnu packages ipfs)
   #:use-module (gnu packages golang-web)
   #:use-module (gnu packages golang-xyz)
   #:use-module (gnu packages python)
-  #:use-module (gnu packages shells))
+  #:use-module (gnu packages shells)
+  #:use-module (gnu packages specifications))
 
 (define-public go-github-com-ipfs-go-block-format
   (package
@@ -298,6 +299,54 @@ (define-public go-github-com-ipfs-go-ipld-format
 order to be a part of the @acronym{IPLD, InterPlanetary Linked Data} merkle-forest.")
     (license license:expat)))
 
+(define-public go-github-com-ipld-go-ipld-prime
+  (package
+    (name "go-github-com-ipld-go-ipld-prime")
+    (version "0.21.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ipld/go-ipld-prime")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1ycb08h0hvq3mw3sbjkjzp5sfcxmss155jxiv5gjg7myxvzk91ja"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:go go-1.21
+      #:unpack-path "github.com/ipld/go-ipld-prime/"
+      #:import-path "github.com/ipld/go-ipld-prime/"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'copy-ipld-specfs
+            (lambda* (#:key import-path #:allow-other-keys)
+              (copy-recursively
+               (string-append #$(this-package-native-input
+                                 "specification-ipld")
+                              "/share/ipld/")
+               (string-append "src/" import-path "/ipld")))))))
+    (native-inputs
+     (list go-github-com-frankban-quicktest
+           go-github-com-warpfork-go-testmark
+           specification-ipld))
+    (propagated-inputs
+     (list go-github-com-google-go-cmp-cmp
+           go-github-com-multiformats-go-multicodec
+           go-github-com-multiformats-go-multihash
+           go-github-com-ipfs-go-block-format
+           go-github-com-ipfs-go-cid
+           go-github-com-polydawn-refmt
+           go-gopkg-in-yaml-v2))
+    (home-page "https://github.com/ipld/go-ipld-prime")
+    (synopsis "Golang interfaces for the IPLD Data Model")
+    (description
+     "@code{go-ipld-prime} is an implementation of the IPLD spec interfaces, a
+batteries-included codec implementations of IPLD for CBOR and JSON, and tooling for
+basic operations on IPLD objects (traversals, etc).")
+    (license license:expat)))
+
 (define-public go-github-com-ipfs-go-ipfs-api
   (let ((commit
           "dafc2a13a4389ac1a6c2786e34ab70a4f26d3a3f")
-- 
2.45.1