gnu: Add docker-registry.

* gnu/packages/docker.scm (docker-registry): New variable.

Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
Signed-off-by: Christopher Baines <mail@cbaines.net>
This commit is contained in:
Denis 'GNUtoo' Carikli 2023-01-14 19:26:00 +01:00 committed by Christopher Baines
parent fc36ea0a0a
commit 46013fccb7
No known key found for this signature in database
GPG key ID: 5E28A33B0B84F577

View file

@ -724,3 +724,85 @@ (define-public tini
processes produced from it are reaped and that signals are properly forwarded. processes produced from it are reaped and that signals are properly forwarded.
Tini is integrated with Docker.") Tini is integrated with Docker.")
(license license:expat))) (license license:expat)))
(define-public docker-registry
(package
(name "docker-registry")
(version "2.8.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/docker/distribution")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1w8zr97p2c62gm1lrdwqa704ivjsy25ylznrddbbpv63idwdbi9k"))))
(build-system go-build-system)
(arguments
(list
#:import-path "github.com/docker/distribution"
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'chdir-to-src
(lambda _ (chdir "src/github.com/docker/distribution")))
(add-after 'chdir-to-src 'fix-versioning
(lambda _
;; The Makefile use git to compute the version and the
;; revision. This requires the .git directory that we don't have
;; anymore in the unpacked source.
(substitute* "Makefile"
(("^VERSION=\\$\\(.*\\)")
(string-append "VERSION=v" #$version))
;; The revision originally used the git hash with .m appended
;; if there was any local modifications.
(("^REVISION=\\$\\(.*\\)") "REVISION=0"))))
(replace 'build
(lambda _
(invoke "make" "binaries")))
(replace 'install
(lambda _
(let ((bin (string-append #$output "/bin")))
(mkdir-p bin)
(for-each
(lambda (file)
(install-file (string-append "bin/" file) bin))
'("digest"
"registry"
"registry-api-descriptor-template")))
(let ((doc (string-append
#$output "/share/doc/" #$name "-" #$version)))
(mkdir-p doc)
(for-each
(lambda (file)
(install-file file doc))
'("BUILDING.md"
"CONTRIBUTING.md"
"LICENSE"
"MAINTAINERS"
"README.md"
"ROADMAP.md"))
(copy-recursively "docs/" (string-append doc "/docs")))
(let ((examples
(string-append
#$output "/share/doc/" #$name "-" #$version
"/registry-example-configs")))
(mkdir-p examples)
(for-each
(lambda (file)
(install-file (string-append "cmd/registry/" file) examples))
'("config-cache.yml"
"config-example.yml"
"config-dev.yml")))))
(delete 'install-license-files))))
(home-page "https://github.com/docker/distribution")
(synopsis "Docker registry server and associated tools")
(description "The Docker registry server enable you to host your own
docker registry. With it, there is also two other utilities:
@itemize
@item The digest utility is a tool that generates checksums compatibles with
various docker manifest files.
@item The registry-api-descriptor-template is a tool for generating API
specifications from the docs/spec/api.md.tmpl file.
@end itemize")
(license license:asl2.0)))