diff options
author | Manuel Rüger <mrueg@gentoo.org> | 2017-05-19 16:47:59 +0200 |
---|---|---|
committer | Manuel Rüger <mrueg@gentoo.org> | 2017-05-19 16:47:59 +0200 |
commit | 21eba0700591adc9435adc2b75bbdddddbf98915 (patch) | |
tree | 026560185d75687dfc756d5550854b4e8d2f740e /app-emulation | |
parent | app-eselect/eselect-postgresql: Support FEATURES="noman" (diff) | |
download | gentoo-21eba0700591adc9435adc2b75bbdddddbf98915.tar.gz gentoo-21eba0700591adc9435adc2b75bbdddddbf98915.tar.bz2 gentoo-21eba0700591adc9435adc2b75bbdddddbf98915.zip |
app-emulation/docker-registry: Include patch to fix json in notifications endpoint
Package-Manager: Portage-2.3.5, Repoman-2.3.2
Diffstat (limited to 'app-emulation')
-rw-r--r-- | app-emulation/docker-registry/docker-registry-2.6.1-r1.ebuild | 42 | ||||
-rw-r--r-- | app-emulation/docker-registry/files/docker-registry-2.6.1-notifications-expvar.patch | 64 |
2 files changed, 106 insertions, 0 deletions
diff --git a/app-emulation/docker-registry/docker-registry-2.6.1-r1.ebuild b/app-emulation/docker-registry/docker-registry-2.6.1-r1.ebuild new file mode 100644 index 000000000000..45aac739ef06 --- /dev/null +++ b/app-emulation/docker-registry/docker-registry-2.6.1-r1.ebuild @@ -0,0 +1,42 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI=6 +inherit golang-vcs-snapshot systemd user + +KEYWORDS="~amd64" +EGO_PN="github.com/docker/distribution/..." +EGIT_COMMIT="v${PV}" +SRC_URI="https://${EGO_PN%/*}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz" +DESCRIPTION="Docker Registry 2.0" +HOMEPAGE="https://github.com/docker/distribution" +LICENSE="Apache-2.0" +SLOT="0" +IUSE="" +SVCNAME=registry + +PATCHES=( "${FILESDIR}/${P}-notifications-expvar.patch" ) + +pkg_setup() { + enewgroup ${SVCNAME} + enewuser ${SVCNAME} -1 -1 /dev/null ${SVCNAME} +} + +src_compile() { + GOPATH="${S}" \ + go install -v -work -x ${EGO_BUILD_FLAGS} "${EGO_PN}" || die +} + +src_install() { + exeinto /usr/libexec/${PN} + doexe bin/* + insinto /etc/docker/registry + newins src/${EGO_PN%/*}/cmd/registry/config-example.yml config.yml.example + newinitd "${FILESDIR}/${SVCNAME}.initd" "${SVCNAME}" + newconfd "${FILESDIR}/${SVCNAME}.confd" "${SVCNAME}" + systemd_dounit "${FILESDIR}/${SVCNAME}.service" + keepdir /var/{lib,log}/${SVCNAME} + fowners ${SVCNAME}:${SVCNAME} /var/{lib,log}/${SVCNAME} + insinto /etc/logrotate.d + newins "${FILESDIR}/${SVCNAME}.logrotated" "${SVCNAME}" +} diff --git a/app-emulation/docker-registry/files/docker-registry-2.6.1-notifications-expvar.patch b/app-emulation/docker-registry/files/docker-registry-2.6.1-notifications-expvar.patch new file mode 100644 index 000000000000..1d40edf1f0cd --- /dev/null +++ b/app-emulation/docker-registry/files/docker-registry-2.6.1-notifications-expvar.patch @@ -0,0 +1,64 @@ +From 9a58c91051e03b46f1461e371a7bf527c1284612 Mon Sep 17 00:00:00 2001 +From: Noah Treuhaft <noah.treuhaft@docker.com> +Date: Wed, 8 Feb 2017 11:38:44 -0800 +Subject: [PATCH] notifications: fix expvar for Go 1.7 + +Remove EndpointConfig.Transport from the return value of the +registry.notifications.endpoints expvar.Func. It results in an empty +value for that expvar variable under Go 1.7 because it is a non-nil +*http.Transport, which Go 1.7 can no longer encode as JSON. + +Signed-off-by: Noah Treuhaft <noah.treuhaft@docker.com> +--- + notifications/endpoint.go | 2 +- + notifications/metrics_test.go | 28 ++++++++++++++++++++++++++++ + 2 files changed, 29 insertions(+), 1 deletion(-) + create mode 100644 notifications/metrics_test.go + +diff --git a/src/github.com/docker/distribution/notifications/endpoint.go b/src/github.com/docker/distribution/notifications/endpoint.go +index 29a9e27b5..44d0f6d7b 100644 +--- a/src/github.com/docker/distribution/notifications/endpoint.go ++++ b/src/github.com/docker/distribution/notifications/endpoint.go +@@ -13,7 +13,7 @@ type EndpointConfig struct { + Threshold int + Backoff time.Duration + IgnoredMediaTypes []string +- Transport *http.Transport ++ Transport *http.Transport `json:"-"` + } + + // defaults set any zero-valued fields to a reasonable default. +diff --git a/src/github.com/docker/distribution/notifications/metrics_test.go b/src/github.com/docker/distribution/notifications/metrics_test.go +new file mode 100644 +index 000000000..03a08e2c8 +--- /dev/null ++++ b/notifications/metrics_test.go +@@ -0,0 +1,28 @@ ++package notifications ++ ++import ( ++ "encoding/json" ++ "expvar" ++ "testing" ++) ++ ++func TestMetricsExpvar(t *testing.T) { ++ endpointsVar := expvar.Get("registry").(*expvar.Map).Get("notifications").(*expvar.Map).Get("endpoints") ++ ++ var v interface{} ++ if err := json.Unmarshal([]byte(endpointsVar.String()), &v); err != nil { ++ t.Fatalf("unexpected error unmarshaling endpoints: %v", err) ++ } ++ if v != nil { ++ t.Fatalf("expected nil, got %#v", v) ++ } ++ ++ NewEndpoint("x", "y", EndpointConfig{}) ++ ++ if err := json.Unmarshal([]byte(endpointsVar.String()), &v); err != nil { ++ t.Fatalf("unexpected error unmarshaling endpoints: %v", err) ++ } ++ if slice, ok := v.([]interface{}); !ok || len(slice) != 1 { ++ t.Logf("expected one-element []interface{}, got %#v", v) ++ } ++} |