commit:     ea3aa51b57d560e10bc951aebb7c23f55073c695
Author:     William Hubbs <williamh <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 23 21:55:44 2017 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Fri Jun 23 21:56:25 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ea3aa51b

app-emulation/skopeo: new package

Package-Manager: Portage-2.3.6, Repoman-2.3.1

 app-emulation/skopeo/Manifest                      |   1 +
 .../files/skopeo-0.1.22-make-ostree-optional.patch | 158 +++++++++++++++++++++
 app-emulation/skopeo/metadata.xml                  |   8 ++
 app-emulation/skopeo/skopeo-0.1.22.ebuild          |  57 ++++++++
 4 files changed, 224 insertions(+)

diff --git a/app-emulation/skopeo/Manifest b/app-emulation/skopeo/Manifest
new file mode 100644
index 00000000000..cdca793499a
--- /dev/null
+++ b/app-emulation/skopeo/Manifest
@@ -0,0 +1 @@
+DIST skopeo-0.1.22.tar.gz 1921286 SHA256 
a2090f84e5318752bf506fd7aa6d8420285726c32dcbac3ab735ec5762104692 SHA512 
10ed4e577b07f672540ff86774b5c5b6b7531765fd36313b9e4e6bf974840fee98ede193014977c381b96875cb9147307ee690f4fc8dd4f97d87681d7fa2f4f2
 WHIRLPOOL 
94c88b784c8a7186ff6abd5d4a1f2c2307fb9c29c98f256a28a5d066546afc7cbb0c848aec77c8835c63f5c62628a8e983d25f4e63e3c6bfa5f4322dd9420522

diff --git 
a/app-emulation/skopeo/files/skopeo-0.1.22-make-ostree-optional.patch 
b/app-emulation/skopeo/files/skopeo-0.1.22-make-ostree-optional.patch
new file mode 100644
index 00000000000..1e81d8bff34
--- /dev/null
+++ b/app-emulation/skopeo/files/skopeo-0.1.22-make-ostree-optional.patch
@@ -0,0 +1,158 @@
+From a49f22efd84d1cc656242319cca27cbdf8852e05 Mon Sep 17 00:00:00 2001
+From: William Hubbs <whu...@gaikai.com>
+Date: Fri, 23 Jun 2017 12:34:25 -0500
+Subject: [PATCH] make ostree optional
+
+---
+ vendor/github.com/containers/image/README.md       | 14 ++++++---
+ .../transports/alltransports/alltransports.go      |  2 +-
+ .../image/transports/alltransports/ostree.go       |  8 +++++
+ .../image/transports/alltransports/ostree_stub.go  |  9 ++++++
+ .../github.com/containers/image/transports/stub.go | 36 ++++++++++++++++++++++
+ .../containers/image/transports/stub_test.go       | 18 +++++++++++
+ 6 files changed, 82 insertions(+), 5 deletions(-)
+ create mode 100644 
vendor/github.com/containers/image/transports/alltransports/ostree.go
+ create mode 100644 
vendor/github.com/containers/image/transports/alltransports/ostree_stub.go
+ create mode 100644 vendor/github.com/containers/image/transports/stub.go
+ create mode 100644 vendor/github.com/containers/image/transports/stub_test.go
+
+diff --git a/vendor/github.com/containers/image/README.md 
b/vendor/github.com/containers/image/README.md
+index ca8afd4..8e812bb 100644
+--- a/vendor/github.com/containers/image/README.md
++++ b/vendor/github.com/containers/image/README.md
+@@ -51,14 +51,20 @@ Ensure that the dependencies documented [in 
vendor.conf](https://github.com/cont
+ are also available
+ (using those exact versions or different versions of your choosing).
+ 
+-This library, by default, also depends on the GpgME C library. Either install 
it:
++This library, by default, also depends on the GpgME and libostree C 
libraries. Either install them:
+ ```sh
+-Fedora$ dnf install gpgme-devel libassuan-devel
++Fedora$ dnf install gpgme-devel libassuan-devel libostree-devel
+ macOS$ brew install gpgme
+ ```
+-or use the `containers_image_openpgp` build tag (e.g. using `go build -tags 
…`)
+-This will use a Golang-only OpenPGP implementation for signature verification 
instead of the default cgo/gpgme-based implementation;
++or use the build tags described below to avoid the dependencies (e.g. using 
`go build -tags …`)
++
++### Supported build tags
++
++- `containers_image_openpgp`: Use a Golang-only OpenPGP implementation for 
signature verification instead of the default cgo/gpgme-based implementation;
+ the primary downside is that creating new signatures with the Golang-only 
implementation is not supported.
++- `containers_image_ostree_stub`: Instead of importing `ostree:` transport in 
`github.com/containers/image/transports/alltransports`, use a stub which 
reports that the transport is not supported. This allows building the library 
without requiring the `libostree` development libraries.
++
++  (Note that explicitly importing `github.com/containers/image/ostree` will 
still depend on the `libostree` library, this build tag only affects generic 
users of …`/alltransports`.)
+ 
+ ## Contributing
+ 
+diff --git 
a/vendor/github.com/containers/image/transports/alltransports/alltransports.go 
b/vendor/github.com/containers/image/transports/alltransports/alltransports.go
+index dc70fad..dd80b7f 100644
+--- 
a/vendor/github.com/containers/image/transports/alltransports/alltransports.go
++++ 
b/vendor/github.com/containers/image/transports/alltransports/alltransports.go
+@@ -12,7 +12,7 @@ import (
+       _ "github.com/containers/image/docker/daemon"
+       _ "github.com/containers/image/oci/layout"
+       _ "github.com/containers/image/openshift"
+-      _ "github.com/containers/image/ostree"
++      // The ostree transport is registered by ostree*.go
+       _ "github.com/containers/image/storage"
+       "github.com/containers/image/transports"
+       "github.com/containers/image/types"
+diff --git 
a/vendor/github.com/containers/image/transports/alltransports/ostree.go 
b/vendor/github.com/containers/image/transports/alltransports/ostree.go
+new file mode 100644
+index 0000000..0fc5d7e
+--- /dev/null
++++ b/vendor/github.com/containers/image/transports/alltransports/ostree.go
+@@ -0,0 +1,8 @@
++// +build !containers_image_ostree_stub
++
++package alltransports
++
++import (
++      // Register the ostree transport
++      _ "github.com/containers/image/ostree"
++)
+diff --git 
a/vendor/github.com/containers/image/transports/alltransports/ostree_stub.go 
b/vendor/github.com/containers/image/transports/alltransports/ostree_stub.go
+new file mode 100644
+index 0000000..8b01afe
+--- /dev/null
++++ 
b/vendor/github.com/containers/image/transports/alltransports/ostree_stub.go
+@@ -0,0 +1,9 @@
++// +build containers_image_ostree_stub
++
++package alltransports
++
++import "github.com/containers/image/transports"
++
++func init() {
++      transports.Register(transports.NewStubTransport("ostree"))
++}
+diff --git a/vendor/github.com/containers/image/transports/stub.go 
b/vendor/github.com/containers/image/transports/stub.go
+new file mode 100644
+index 0000000..087f69b
+--- /dev/null
++++ b/vendor/github.com/containers/image/transports/stub.go
+@@ -0,0 +1,36 @@
++package transports
++
++import (
++      "fmt"
++
++      "github.com/containers/image/types"
++)
++
++// stubTransport is an implementation of types.ImageTransport which has a 
name, but rejects any references with “the transport $name: is not supported in 
this build”.
++type stubTransport string
++
++// NewStubTransport returns an implementation of types.ImageTransport which 
has a name, but rejects any references with “the transport $name: is not 
supported in this build”.
++func NewStubTransport(name string) types.ImageTransport {
++      return stubTransport(name)
++}
++
++// Name returns the name of the transport, which must be unique among other 
transports.
++func (s stubTransport) Name() string {
++      return string(s)
++}
++
++// ParseReference converts a string, which should not start with the 
ImageTransport.Name prefix, into an ImageReference.
++func (s stubTransport) ParseReference(reference string) 
(types.ImageReference, error) {
++      return nil, fmt.Errorf(`The transport "%s:" is not supported in this 
build`, string(s))
++}
++
++// ValidatePolicyConfigurationScope checks that scope is a valid name for a 
signature.PolicyTransportScopes keys
++// (i.e. a valid PolicyConfigurationIdentity() or 
PolicyConfigurationNamespaces() return value).
++// It is acceptable to allow an invalid value which will never be matched, it 
can "only" cause user confusion.
++// scope passed to this function will not be "", that value is always allowed.
++func (s stubTransport) ValidatePolicyConfigurationScope(scope string) error {
++      // Allowing any reference in here allows tools with some transports 
stubbed-out to still
++      // use signature verification policies which refer to these stubbed-out 
transports.
++      // See also the treatment of unknown transports in 
policyTransportScopesWithTransport.UnmarshalJSON .
++      return nil
++}
+diff --git a/vendor/github.com/containers/image/transports/stub_test.go 
b/vendor/github.com/containers/image/transports/stub_test.go
+new file mode 100644
+index 0000000..f181a1a
+--- /dev/null
++++ b/vendor/github.com/containers/image/transports/stub_test.go
+@@ -0,0 +1,18 @@
++package transports
++
++import (
++      "testing"
++
++      "github.com/stretchr/testify/assert"
++)
++
++func TestStubTransport(t *testing.T) {
++      const name = "whatever"
++
++      s := NewStubTransport(name)
++      assert.Equal(t, name, s.Name())
++      _, err := s.ParseReference("this is rejected regardless of content")
++      assert.Error(t, err)
++      err = s.ValidatePolicyConfigurationScope("this is accepted regardless 
of content")
++      assert.NoError(t, err)
++}
+-- 
+2.13.0
+

diff --git a/app-emulation/skopeo/metadata.xml 
b/app-emulation/skopeo/metadata.xml
new file mode 100644
index 00000000000..c36c37139fa
--- /dev/null
+++ b/app-emulation/skopeo/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+       <maintainer type="person">
+               <email>willi...@gentoo.org</email>
+               <name>William Hubbs</name>
+       </maintainer>
+</pkgmetadata>

diff --git a/app-emulation/skopeo/skopeo-0.1.22.ebuild 
b/app-emulation/skopeo/skopeo-0.1.22.ebuild
new file mode 100644
index 00000000000..21ccca2bc45
--- /dev/null
+++ b/app-emulation/skopeo/skopeo-0.1.22.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+EGO_PN=github.com/projectatomic/skopeo
+COMMIT=5d24b67
+inherit golang-vcs-snapshot
+
+DESCRIPTION="Command line utility foroperations on container images and image 
repositories"
+HOMEPAGE="http://github.com/projectatomic/skopeo";
+SRC_URI="https://github.com/projectatomic/${PN}/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+COMMON_DEPEND=">=app-crypt/gpgme-1.5.5:=
+       >=dev-libs/libassuan-2.4.3
+       >=sys-fs/btrfs-progs-4.0.1
+       >=sys-fs/lvm2-2.02.145"
+DEPEND="${COMMON_DEPEND}
+dev-go/go-md2man"
+RDEPEND="${COMMON_DEPEND}"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-make-ostree-optional.patch
+)
+
+S="${WORKDIR}/${P}/src/${EGO_PN}"
+
+RESTRICT="test"
+
+src_compile() {
+       local BUILDTAGS="containers_image_ostree_stub"
+       set -- env GOPATH="${WORKDIR}/${P}" \
+               go build -ldflags "-X main.gitCommit=${COMMIT}" \
+               -gcflags "${GOGCFLAGS}" -tags "${BUILDTAGS}" \
+               -o skopeo ./cmd/skopeo
+       echo "$@"
+       "$@" || die
+       cd docs
+       for f in *.1.md; do
+               go-md2man -in ${f} -out ${f%%.md} || die
+       done
+}
+
+src_install() {
+       dobin skopeo
+doman docs/*.1
+       insinto /etc/containers
+       newins default-policy.json policy.json
+       insinto /etc/containers/registries.d
+       doins default.yaml
+       dodir /var/lib/atomic/sigstore
+       einstalldocs
+}

Reply via email to