From 46013fccb701ebd6d55a9be3374e4fbbf877e3a2 Mon Sep 17 00:00:00 2001 From: Denis 'GNUtoo' Carikli Date: Sat, 14 Jan 2023 19:26:00 +0100 Subject: gnu: Add docker-registry. * gnu/packages/docker.scm (docker-registry): New variable. Signed-off-by: Denis 'GNUtoo' Carikli Signed-off-by: Christopher Baines --- gnu/packages/docker.scm | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) (limited to 'gnu/packages/docker.scm') diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 7d109dc94c..44e9ddd2e8 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -724,3 +724,85 @@ containers. It manages a single child process and ensures that any zombie processes produced from it are reaped and that signals are properly forwarded. Tini is integrated with Docker.") (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))) -- cgit v1.2.3