aboutsummaryrefslogtreecommitdiff
(use-modules (gnu packages golang)
             (gnu packages golang-build)
             (gnu packages golang-check)
             (gnu packages golang-compression)
             (gnu packages golang-crypto)
             (gnu packages golang-web)
             (gnu packages golang-xyz)
             (gnu packages prometheus)
             (guix build-system go)
             (guix git-download)
             (guix gexp)
             ((guix licenses) #:prefix license:)
             (guix packages)
             (guix utils))

(define-public go-github-com-aleksi-pointer
  (package
    (name "go-github-com-aleksi-pointer")
    (version "1.2.0")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/AlekSi/pointer")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0rncmanv62wwy7ihvjhvb695mkvy4kdzhgnn90zygs9yrfzzk0wk"))))
    (build-system go-build-system)
    (arguments
     (list
      #:import-path "github.com/AlekSi/pointer"))
    (home-page "https://github.com/AlekSi/pointer")
    (synopsis "pointer")
    (description
     "Package pointer provides helpers to convert between pointers and values of
built-in (and, with generics, of any) types.")
    (license license:expat)))

(define-public go-go-mongodb-org-mongo-driver
  (package
    (name "go-go-mongodb-org-mongo-driver")
    (version "1.17.6")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/mongodb/mongo-go-driver")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "0n1vxs3dcjcrj3lmhw8jvqnwqnbj82jxqcb1l74ga1r8vp2qqrcb"))))
    (build-system go-build-system)
    (arguments
     (list
      #:import-path "go.mongodb.org/mongo-driver"
      #:skip-build? #t
      #:tests? #f)) ;; Some tests require network access.
    (propagated-inputs (list go-golang-org-x-sync
                             go-golang-org-x-crypto
                             go-github-com-youmark-pkcs8
                             go-github-com-xdg-go-stringprep
                             go-github-com-xdg-go-scram
                             go-github-com-klauspost-compress
                             go-github-com-google-go-cmp
                             go-github-com-golang-snappy
                             go-github-com-davecgh-go-spew))
    (home-page "https://go.mongodb.org/mongo-driver")
    (synopsis "MongoDB Go Driver")
    (description "The @code{MongoDB} supported driver for Go.")
    (license license:asl2.0)))

(define-public go-go-mongodb-org-mongo-driver-2
  (let ((base go-go-mongodb-org-mongo-driver))
    (package
      (inherit base)
      (name "go-go-mongodb-org-mongo-driver-2")
      (version "2.4.1")
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
                (url "https://github.com/mongodb/mongo-go-driver")
                (commit (string-append "v" version))))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0x1v8p6wkviqabiqzdrydd1n520h77b29yvm779r82gmj593zxa9"))))
      (arguments
       (substitute-keyword-arguments (package-arguments base)
         ((#:import-path import-path) "go.mongodb.org/mongo-driver/v2")))
      (propagated-inputs `(("go-github-com-golang-snappy"
                            ,go-github-com-golang-snappy)
                           . ,(package-propagated-inputs base)))
      (synopsis "MongoDB Go Driver, version 2"))))

(define-public go-github-com-ferretdb-wire
  (package
    (name "go-github-com-ferretdb-wire")
    (version "0.0.8")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/FerretDB/wire")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "19klzbdjhhkdxslnx8ls3i7n421z4ihra4zigrv52bdv90l4xmdf"))))
    (build-system go-build-system)
    (arguments
     (list
      #:import-path "github.com/FerretDB/wire"
      #:tests? #f)) ;; Some tests require network access.
    (propagated-inputs (list go-github-com-xdg-go-scram
                             go-github-com-stretchr-testify))
    (home-page "https://github.com/FerretDB/wire")
    (synopsis "wire")
    (description
     "Package wire provides
@@url{https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/,@code{MongoDB}
wire protocol} implementation.")
    (license license:asl2.0)))

(define-public go-ferretdb
  (package
    (name "go-github-com-ferretdb-ferretdb")
    (version "1.24.2")
    (source
     (origin
       (method git-fetch)
       (uri (git-reference
             (url "https://github.com/FerretDB/FerretDB")
             (commit (string-append "v" version))))
       (file-name (git-file-name name version))
       (sha256
        (base32 "1436ba27asaw2c35nklgar6b2zas1clgsm8fz8a6c8wcy901qnxg"))))
    (build-system go-build-system)
    (arguments
     (list
      #:unpack-path "github.com/FerretDB/FerretDB"
      #:import-path "github.com/FerretDB/FerretDB/cmd/ferretdb"
      #:install-source? #f
      #:tests? #f ;; Tests expect .git.
      #:phases
      #~(modify-phases %standard-phases
          (add-after 'unpack 'do-not-use-fallback-x509roots
            (lambda* (#:key unpack-path #:allow-other-keys)
              (substitute* (map (lambda (subpath)
                                  (format #f "src/~a/~a" unpack-path subpath))
                                '("go.mod" "cmd/ferretdb/main.go"))
                ((".*x509roots/fallback.*" line)
                 (format #f "//~a" line)))))
          (add-after 'unpack 'do-not-use-statsviz
            (lambda* (#:key unpack-path #:allow-other-keys)
              (substitute* (map (lambda (subpath)
                                  (format #f "src/~a/~a" unpack-path subpath))
                                '("go.mod"
                                  "integration/go.mod"
                                  "internal/util/debug/debug.go"))
                ((".*arl/statsviz.*" line)
                 (format #f "//~a" line)))
              (substitute* (format #f "src/~a/~a" unpack-path
                                   "internal/util/debug/debug.go")
                ((".*svOpts := .*" line)
                 (format #f "/*~a" line))
                ((".*statsviz.Register.*" line)
                 (format #f "~a*/" line))))))))
    (native-inputs (list go-modernc-org-sqlite
                         go-golang-org-x-sys
                         go-golang-org-x-exp
                         go-go-uber-org-automaxprocs
                         go-go-opentelemetry-io-otel-trace
                         go-go-opentelemetry-io-otel-sdk
                         go-go-opentelemetry-io-otel-exporters-otlp-otlptrace
                         go-go-opentelemetry-io-otel-exporters-otlp-otlptrace-otlptracehttp
                         go-go-opentelemetry-io-otel
                         go-go-mongodb-org-mongo-driver
                         go-github-com-prometheus-common
                         go-github-com-prometheus-client-model
                         go-github-com-prometheus-client-golang
                         go-github-com-jackc-pgx-v5
                         go-github-com-jackc-pgerrcode
                         go-github-com-google-uuid
                         go-github-com-go-sql-driver-mysql
                         go-github-com-alecthomas-kong
                         go-github-com-sap-go-hdb
                         go-github-com-ferretdb-wire
                         go-github-com-aleksi-pointer))
    (home-page "https://github.com/FerretDB/FerretDB")
    (synopsis "FerretDB")
    (description
     "@code{FerretDB} was founded to become the de-facto open-source substitute to
@code{MongoDB}. @code{FerretDB} is an open-source proxy, converting the
@code{MongoDB} 5.0+ wire protocol queries to SQL - using @code{PostgreSQL} or
SQLite as a database engine.")
    (license license:asl2.0)))

go-ferretdb