You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
7.2 KiB
159 lines
7.2 KiB
7 years ago
|
From a49f22efd84d1cc656242319cca27cbdf8852e05 Mon Sep 17 00:00:00 2001
|
||
|
From: William Hubbs <whubbs@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
|
||
|
|