diff --git a/.atomic.metadata b/.atomic.metadata index 410fb9b..d07d291 100644 --- a/.atomic.metadata +++ b/.atomic.metadata @@ -1,2 +1 @@ b8ff92dd0acefe9ea01f67e99082c5bcf53316ca SOURCES/ce09e40922c3f35877d381612280195e445d41c7.tar.gz -dc887ec157d9e06ba74b9c68c5d1c7b9b690b09a SOURCES/skopeo-9e971b4.tar.gz diff --git a/.gitignore b/.gitignore index c4fdbc9..c717a7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ SOURCES/ce09e40922c3f35877d381612280195e445d41c7.tar.gz -SOURCES/skopeo-9e971b4.tar.gz diff --git a/SOURCES/skopeo-go142.patch b/SOURCES/skopeo-go142.patch deleted file mode 100644 index 07b94e1..0000000 --- a/SOURCES/skopeo-go142.patch +++ /dev/null @@ -1,203 +0,0 @@ -diff --git a/signature/json.go b/signature/json.go -index a612db0..48f3a5c 100644 ---- a/signature/json.go -+++ b/signature/json.go -@@ -1,10 +1,8 @@ - package signature - - import ( -- "bytes" - "encoding/json" - "fmt" -- "io" - ) - - // jsonFormatError is returned when JSON does not match expected format. -@@ -64,28 +62,14 @@ func stringField(m map[string]interface{}, fieldName string) (string, error) { - func paranoidUnmarshalJSONObject(data []byte, fieldResolver func(string) interface{}) error { - seenKeys := map[string]struct{}{} - -- dec := json.NewDecoder(bytes.NewReader(data)) -- t, err := dec.Token() -- if err != nil { -+ // NOTE: This is a go 1.4 implementation, very much non-paranoid! The json.Unmarshal below -+ // already throws out duplicate keys. -+ var obj map[string]json.RawMessage -+ if err := json.Unmarshal(data, &obj); err != nil { - return jsonFormatError(err.Error()) - } -- if t != json.Delim('{') { -- return jsonFormatError(fmt.Sprintf("JSON object expected, got \"%s\"", t)) -- } -- for { -- t, err := dec.Token() -- if err != nil { -- return jsonFormatError(err.Error()) -- } -- if t == json.Delim('}') { -- break -- } - -- key, ok := t.(string) -- if !ok { -- // Coverage: This should never happen, dec.Token() rejects non-string-literals in this state. -- return jsonFormatError(fmt.Sprintf("Key string literal expected, got \"%s\"", t)) -- } -+ for key, valueJSON := range obj { - if _, ok := seenKeys[key]; ok { - return jsonFormatError(fmt.Sprintf("Duplicate key \"%s\"", key)) - } -@@ -95,13 +79,9 @@ func paranoidUnmarshalJSONObject(data []byte, fieldResolver func(string) interfa - if valuePtr == nil { - return jsonFormatError(fmt.Sprintf("Unknown key \"%s\"", key)) - } -- // This works like json.Unmarshal, in particular it allows us to implement UnmarshalJSON to implement strict parsing of the field value. -- if err := dec.Decode(valuePtr); err != nil { -+ if err := json.Unmarshal(valueJSON, valuePtr); err != nil { - return jsonFormatError(err.Error()) - } - } -- if _, err := dec.Token(); err != io.EOF { -- return jsonFormatError("Unexpected data after JSON object") -- } - return nil - } -diff --git a/signature/json_test.go b/signature/json_test.go -index 8d0f63c..80719e0 100644 ---- a/signature/json_test.go -+++ b/signature/json_test.go -@@ -131,12 +131,12 @@ func TestParanoidUnmarshalJSONObject(t *testing.T) { - - // Various kinds of invalid input - for _, input := range []string{ -- ``, // Empty input -- `&`, // Entirely invalid JSON -- `1`, // Not an object -- `{&}`, // Invalid key JSON -- `{1:1}`, // Key not a string -- `{"b":1, "b":1}`, // Duplicate key -+ ``, // Empty input -+ `&`, // Entirely invalid JSON -+ `1`, // Not an object -+ `{&}`, // Invalid key JSON -+ `{1:1}`, // Key not a string -+ // `{"b":1, "b":1}`, // Duplicate key - `{"thisdoesnotexist":1}`, // Key rejected by resolver - `{"a":&}`, // Invalid value JSON - `{"a":1}`, // Type mismatch -@@ -144,6 +144,6 @@ func TestParanoidUnmarshalJSONObject(t *testing.T) { - } { - ts = testStruct{} - err := paranoidUnmarshalJSONObject([]byte(input), tsResolver) -- assert.Error(t, err) -+ assert.Error(t, err, input) - } - } -diff --git a/signature/policy_config_test.go b/signature/policy_config_test.go -index 63fd8c7..579aa5f 100644 ---- a/signature/policy_config_test.go -+++ b/signature/policy_config_test.go -@@ -203,7 +203,7 @@ func TestPolicyUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"default", "specific"} { -+ for _, field := range []string{ /*"default", "specific"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -367,7 +367,7 @@ func TestPRInsecureAcceptAnythingUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type"} { -+ for _, field := range []string{ /*"type"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -438,7 +438,7 @@ func TestPRRejectUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type"} { -+ for _, field := range []string{ /*"type"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -601,7 +601,7 @@ func TestPRSignedByUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type", "keyType", "keyData", "signedIdentity"} { -+ for _, field := range []string{ /*"type", "keyType", "keyData", "signedIdentity"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -613,14 +613,14 @@ func TestPRSignedByUnmarshalJSON(t *testing.T) { - assert.Error(t, err) - } - // Handle "keyPath", which is not in validJSON, specially -- pathPR, err := NewPRSignedByKeyPath(SBKeyTypeGPGKeys, "/foo/bar", NewPRMMatchExact()) -- require.NoError(t, err) -- testJSON, err = json.Marshal(pathPR) -- require.NoError(t, err) -- testJSON = addExtraJSONMember(t, testJSON, "keyPath", pr.KeyPath) -- pr = prSignedBy{} -- err = json.Unmarshal(testJSON, &pr) -- assert.Error(t, err) -+ // pathPR, err := NewPRSignedByKeyPath(SBKeyTypeGPGKeys, "/foo/bar", NewPRMMatchExact()) -+ // require.NoError(t, err) -+ // testJSON, err = json.Marshal(pathPR) -+ // require.NoError(t, err) -+ // testJSON = addExtraJSONMember(t, testJSON, "keyPath", pr.KeyPath) -+ // pr = prSignedBy{} -+ // err = json.Unmarshal(testJSON, &pr) -+ // assert.Error(t, err) - - // Various allowed modifications to the requirement - allowedModificationFns := []func(mSI){ -@@ -779,7 +779,7 @@ func TestPRSignedBaseLayerUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type", "baseLayerIdentity"} { -+ for _, field := range []string{ /*"type", "baseLayerIdentity"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -881,7 +881,7 @@ func TestPRMMatchExactUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type"} { -+ for _, field := range []string{ /*"type"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -952,7 +952,7 @@ func TestPRMMatchRepositoryUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type"} { -+ for _, field := range []string{ /*"type"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -1059,7 +1059,7 @@ func TestPRMExactReferenceUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type", "baseLayerIdentity"} { -+ for _, field := range []string{ /*"type", "baseLayerIdentity"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) -@@ -1163,7 +1163,7 @@ func TestPRMExactRepositoryUnmarshalJSON(t *testing.T) { - } - - // Duplicated fields -- for _, field := range []string{"type", "baseLayerIdentity"} { -+ for _, field := range []string{ /*"type", "baseLayerIdentity"*/ } { - var tmp mSI - err := json.Unmarshal(validJSON, &tmp) - require.NoError(t, err) diff --git a/SPECS/atomic.spec b/SPECS/atomic.spec index f294896..ba25824 100644 --- a/SPECS/atomic.spec +++ b/SPECS/atomic.spec @@ -16,32 +16,17 @@ %global commit0 ce09e40922c3f35877d381612280195e445d41c7 %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) -%global provider github -%global provider_tld com -%global project projectatomic -%global repo skopeo -# https://github.com/projectatomic/skopeo -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path %{provider_prefix} -%global commit1 9e971b4937d176aa7ac3af6377b69e58bfd789eb -%global shortcommit1 %(c=%{commit1}; echo ${c:0:7}) -%global skopeo_version 0.1.13 - Name: atomic Epoch: 1 Version: 1.10.5 -Release: 5%{?dist} +Release: 7%{?dist} Summary: Tool for managing ProjectAtomic systems and containers License: LGPLv2+ -URL: https://github.com/projectatomic/atomic +URL: https://github.com/projectatomic/%{name} ExclusiveArch: x86_64 Source0: https://github.com/projectatomic/%{name}/archive/%{commit0}.tar.gz -Source1: https://%{provider_prefix}/archive/%{commit1}/%{repo}-%{shortcommit1}.tar.gz -# https://github.com/mtrmac/skopeo/tree/go142 -# This should be dropped as soon as we start building againt golang >= 1.5 -Patch0: skopeo-go142.patch -Patch1: 0001-If-OSTree-is-not-installed-atomic-images-is-blowing-.patch -Patch2: 0002-Atomic-scan-fix-image-naming-error.patch +Patch0: 0001-If-OSTree-is-not-installed-atomic-images-is-blowing-.patch +Patch1: 0002-Atomic-scan-fix-image-naming-error.patch BuildRequires: %{pypkg}-devel BuildRequires: %{pypkg}-requests >= 2.4.3 @@ -50,7 +35,9 @@ BuildRequires: %{pypkg}-tools BuildRequires: %{pypkg}-dbus BuildRequires: %{pypkg}-setuptools BuildRequires: policycoreutils-%{pypkg} +BuildRequires: git BuildRequires: go-md2man +BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} >= 1.6.2 BuildRequires: %{pypkg}-dbus BuildRequires: %{pypkg}-docker-py >= 1.7.2-1 BuildRequires: rpm-%{pypkg} @@ -66,7 +53,7 @@ Requires: %{pypkg}-requests Requires: %{pypkg}-docker-py >= 1.7.2-1 Requires: %{pypkg}-websocket-client >= 0.11.0 Requires: %{pypkg}-six >= 1.3.0 -Requires: skopeo >= %{epoch}:%{skopeo_version}-%{release} +Requires: skopeo >= 1:0.1.13-7 Requires: PyYAML %description @@ -80,49 +67,15 @@ The atomic host subcommand wraps rpm-ostree, currently just providing a friendlier name, but in the future Atomic may provide more unified management. -%package -n skopeo -Summary: Inspect Docker images and repositories on registries -License: ASL 2.0 -URL: https://%{provider_prefix} -Version: %{skopeo_version} -BuildRequires: %{?go_compiler:compiler(go-compiler)}%{!?go_compiler:golang} -BuildRequires: gpgme-devel -BuildRequires: libassuan-devel - -%description -n skopeo -Command line utility to inspect images and repositories directly on Docker -registries without the need to pull them - %prep -%setup -qn %{name}-%{commit0} -%patch1 -p1 -%patch2 -p1 +%autosetup -Sgit -n %{name}-%{commit0} if [ %{pypkg} == 'python3' ]; then sed -i 's/input = raw_input/pass/' Atomic/util.py fi -# untar skopeo -tar zxf %{SOURCE1} -pushd skopeo-%{commit1} -%patch0 -p1 -popd - %build make PYTHON=%{__python} python-build docs dockertar-sha256-helper -pushd skopeo-%{commit1} -mkdir -p src/github.com/projectatomic -ln -s ../../../ src/github.com/projectatomic/skopeo - -mkdir -p vendor/src -mv vendor/{github.com,gopkg.in,k8s.io} vendor/src/. - -export GOPATH=$(pwd):$(pwd)/vendor:%{gopath} -export GO15VENDOREXPERIMENT=1 -#go build -o skopeo . -make all -popd - %install make PYTHON=%{__python} install-only DESTDIR=%{buildroot} @@ -130,11 +83,6 @@ make PYTHON=%{__python} install-only DESTDIR=%{buildroot} make install-openscap DESTDIR=%{buildroot} %endif -pushd skopeo-%{commit1} -mkdir -p %{buildroot}%{_mandir}/man1 -make DESTDIR=%{buildroot} install -popd - # Better support for doing continuous delivery by supporting optional # components. The canonical copy of this is in `rpm-ostree.spec`. cat > autofiles.py < - 1:1.10.5-7 +- use skopeo >= 1:0.1.13-7 + +* Tue Jul 12 2016 Lokesh Mandvekar - 1:1.10.5-6 +- skopeo is an independent package +- use autosetup +- dockertar-sha256-helper needs golang + * Wed Jun 15 2016 Lokesh Mandvekar - 1:1.10.5-5 - Resolves: #1343939 - fix image naming error - Resolves: #1346942 - don't depend on ostree if it's not available