sharlatan pushed a commit to branch go-team
in repository guix.

commit d553ef491a33579476943359d1d5afa06ef40276
Author: Sharlatan Hellseher <sharlata...@gmail.com>
AuthorDate: Thu Feb 27 23:23:45 2025 +0000

    gnu: Add go-github-com-ipfs-boxo.
    
    * gnu/packages/ipfs.scm (go-github-com-ipfs-boxo): New variable.
    
    Change-Id: Id0c25e9f8fbb6474c0b36031c30a31602b4448c2
---
 gnu/packages/ipfs.scm | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 175 insertions(+)

diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 152fe459d5..5ea1eba831 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -118,6 +118,181 @@ JSONMarshal/JSONUnmarshal to store/reload the Bloom 
filter.")
     (license (list license:expat             ; bbloom.go
                    license:public-domain)))) ; siphash.go
 
+(define-public go-github-com-ipfs-boxo
+  (package
+    (name "go-github-com-ipfs-boxo")
+    (version "0.28.0")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/ipfs/boxo";)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "152g98g4j0pw5az1pc9xdrrzp4qd3cb9xflc98w69migq9il6k68"))
+       (modules '((guix build utils)))
+       (snippet
+        #~(begin
+            ;; Submodules with their own go.mod files and packed as
+            ;; separated packages:
+            ;;
+            ;; - github.com/ipfs/boxo/cmd/boxo-migrate
+            ;; - github.com/ipfs/boxo/cmd/deprecator
+            ;; - github.com/ipfs/boxo/examples
+            (for-each delete-file-recursively
+                      (list "cmd" "examples"))))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:go go-1.23
+      #:skip-build? #t
+      #:embed-files #~(list "sorted-network-list.bin")
+      #:test-subdirs #~(list "bitswap/..."
+                             "blockservice/..."
+                             "blockstore/..."
+                             "bootstrap/..."
+                             "chunker/..."
+                             "datastore/..."
+                             "exchange/..."
+                             "fetcher/..."
+                             "files/..."
+                             "filestore/..."
+                             ;; "gateway/..." ; missing packages
+                             "ipld/..."
+                             "ipns/..."
+                             "keystore/..."
+                             "mfs/..."
+                             ;; "namesys/..." ; missing packages
+                             "path/..."
+                             "peering/..."
+                             "pinning/..."
+                             "provider/..."
+                             ;; "routing/..." ; missing packages
+                             "tar/..."
+                             ;; "tracing/..." ; missing packages
+                             "util/..."
+                             "verifcid/...")
+      #:import-path "github.com/ipfs/boxo"))
+    (native-inputs
+     (list go-github-com-stretchr-testify))
+    (propagated-inputs
+     (list go-github-com-alecthomas-units
+           go-github-com-cespare-xxhash-v2
+           go-github-com-crackcomm-go-gitignore
+           go-github-com-cskr-pubsub
+           go-github-com-dustin-go-humanize
+           go-github-com-filecoin-project-go-clock
+           go-github-com-gabriel-vasile-mimetype
+           go-github-com-gammazero-chanqueue
+           go-github-com-gammazero-deque
+           go-github-com-google-uuid
+           go-github-com-gorilla-mux
+           go-github-com-hashicorp-go-multierror
+           go-github-com-hashicorp-golang-lru-v2
+           go-github-com-ipfs-bbloom
+           go-github-com-ipfs-go-bitfield
+           go-github-com-ipfs-go-block-format
+           go-github-com-ipfs-go-cid
+           go-github-com-ipfs-go-cidutil
+           go-github-com-ipfs-go-datastore
+           go-github-com-ipfs-go-detect-race
+           go-github-com-ipfs-go-ipfs-delay
+           go-github-com-ipfs-go-ipfs-redirects-file
+           go-github-com-ipfs-go-ipld-format
+           go-github-com-ipfs-go-ipld-legacy
+           go-github-com-ipfs-go-log-v2
+           go-github-com-ipfs-go-metrics-interface
+           go-github-com-ipfs-go-peertaskqueue
+           go-github-com-ipfs-go-test
+           go-github-com-ipfs-go-unixfsnode
+           go-github-com-ipld-go-car
+           go-github-com-ipld-go-car-v2
+           go-github-com-ipld-go-codec-dagpb
+           go-github-com-ipld-go-ipld-prime
+           go-github-com-libp2p-go-buffer-pool
+           go-github-com-libp2p-go-doh-resolver
+           go-github-com-libp2p-go-libp2p
+           ;; go-github-com-libp2p-go-libp2p-kad-dht
+           go-github-com-libp2p-go-libp2p-record
+           go-github-com-libp2p-go-libp2p-routing-helpers
+           go-github-com-libp2p-go-libp2p-testing
+           go-github-com-libp2p-go-msgio
+           go-github-com-miekg-dns
+           go-github-com-mr-tron-base58
+           go-github-com-multiformats-go-base32
+           go-github-com-multiformats-go-multiaddr
+           go-github-com-multiformats-go-multiaddr-dns
+           go-github-com-multiformats-go-multibase
+           go-github-com-multiformats-go-multicodec
+           go-github-com-multiformats-go-multihash
+           go-github-com-multiformats-go-multistream
+           go-github-com-polydawn-refmt
+           go-github-com-prometheus-client-golang
+           go-github-com-samber-lo
+           ;; go-github-com-slok-go-http-metrics
+           go-github-com-spaolacci-murmur3
+           go-github-com-whyrusleeping-base32
+           go-github-com-whyrusleeping-chunker
+           go-go-opencensus-io
+           go-go-opentelemetry-io-contrib-instrumentation-net-http-otelhttp
+           go-go-opentelemetry-io-otel
+           ;; 
go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracegrpc
+           ;; 
go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracehttp
+           ;; go-go-opentelemetry-io-otel-exporters-stdout-stdouttrace
+           ;; go-go-opentelemetry-io-otel-exporters-zipkin
+           go-go-opentelemetry-io-otel-sdk
+           go-go-opentelemetry-io-otel-trace
+           go-go-uber-org-multierr
+           go-go-uber-org-zap
+           go-golang-org-x-exp
+           go-golang-org-x-oauth2
+           go-golang-org-x-sync
+           go-golang-org-x-sys
+           go-google-golang-org-protobuf))
+    (home-page "https://github.com/ipfs/boxo";)
+    (synopsis "Collection of reference libraries for building IPFS 
applications")
+    (description
+     "This package provides a set of libraries for building IPFS applications
+and implementations in Golang.
+
+Included subpackaged:
+@itemize
+@item @code{bitswap} - implementation of the bitswap protocol, the data
+trading module for ipfs
+
+@item @code{blockservice} - implements a BlockService interface that
+provides a single GetBlock/AddBlock interface that seamlessly retrieves data
+either locally or from a remote peer through the exchange
+
+@item @code{blockstore} - implements a thin wrapper over a datastore,
+giving a clean interface for Getting and Putting block objects
+
+@item @code{datastore/dshelp} - provides utilities for parsing and creating
+datastore keys used by go-ipfs
+
+@item @code{exchange} - defines the IPFS exchange interface
+
+@item @code{files} - file interfaces and utils used in Golang implementations
+of IPFS
+
+@item @code{filestore} - implements a Blockstore which is able to read certain
+blocks of data directly from its original location in the filesystem
+
+@item @code{ipld/unixfs} - provides additinoal @code{importer}, @code{io},
+@code{mod}, @code{hamt}, @code{archive} and @code{test} packages
+
+@item @code{ipld/merkledag} - implements the IPFS Merkle DAG data structures
+
+@item @code{ipns} - reference implementation of the IPNS Record and
+Verification specification
+
+@item @code{mfs} - implements an in memory model of a mutable IPFS filesystem
+
+@item @code{path} - contains utilities to work with IPFS paths
+@end itemize")
+    (license (list license:expat license:asl2.0))))
+
 (define-public go-github-com-ipfs-go-bitfield
   (package
     (name "go-github-com-ipfs-go-bitfield")

Reply via email to