From 623f21835c5e0171c018a856ab66f18e0428def3 Mon Sep 17 00:00:00 2001 From: DCCooper <1866858@gmail.com> Date: Mon, 29 Nov 2021 10:50:42 +0800 Subject: [PATCH] isula-build: bump version to 0.9.6 Signed-off-by: DCCooper <1866858@gmail.com> (cherry picked from commit 02013af4daa311ccfb4c10b8adc9d1c3143c5952) --- VERSION-openeuler | 2 +- apply-patches | 2 +- git-commit | 2 +- isula-build.spec | 10 +- ...uth.json-file-mode-from-0700-to-0600.patch | 29 - patch/0030-xattr-support-ima-and-evm.patch | 4 +- ...ve-docker-releated-path-for-authenti.patch | 6 +- ...ula-build-fix-goroutine-leak-problem.patch | 42 - ...althcheck-field-when-build-from-scra.patch | 26 - ...bulate-vendor-to-support-eliminate-s.patch | 121 -- ...ve-empty-lines-when-showing-image-li.patch | 24 - ...me-make-checkall-golangci-lint-flaws.patch | 136 -- ...nt-add-go-test-for-RUN-panic-problem.patch | 66 - patch/0044-fix-load-oci-image-panic.patch | 340 ----- ...es-command-when-only-give-repository.patch | 409 ------ ...ault-tag-to-image-name-when-using-pu.patch | 336 ----- ...ndTag-return-empty-when-tag-is-empty.patch | 55 - ...counting-length-of-fields-to-avoid-p.patch | 111 -- ...-root-not-effective-when-setting-con.patch | 120 -- ...0050-data-and-run-root-set-unit-test.patch | 133 -- ...et-user-s-uid-and-gid-for-containers.patch | 34 - ...-hack-make-isula-build-binary-static.patch | 1264 ----------------- ...-from-new-flaw-of-run-and-data-root-.patch | 186 --- ...d-cleancode-for-errors.Wrap-function.patch | 86 -- ...a-build-change-isula-build-file-mode.patch | 49 - ...ild-update-documents-about-file-mode.patch | 58 - ...der-do-not-set-when-running-a-new-ba.patch | 27 - patch/0058-shellcheck-fix-of-common.sh.patch | 90 -- ...ve-multiple-tags-single-image-failed.patch | 309 ---- ...test-for-saving-one-image-with-multi.patch | 281 ---- ...image-error-when-id-first-with-its-n.patch | 223 --- ...ccheck-fix-of-S1020-S1023-SA9003-S10.patch | 401 ------ ...rter-package-and-remove-unused-const.patch | 153 -- ...4-clean-code-tidy-FindImage-function.patch | 236 --- ...te-channel-within-the-same-goroutine.patch | 89 -- patch/0067-fix-golangci-lint-warnings.patch | 43 - ...lint-config-and-remove-redundant-che.patch | 97 -- ...0069-make-add-make-info-for-Makefile.patch | 151 -- ...atest-tag-checks-take-the-FindImage-.patch | 391 ----- ...edTaggedReference-instead-of-dockerf.patch | 236 --- ...2-protocol-define-separator-protocol.patch | 754 ---------- ...i-finish-client-save-separated-image.patch | 248 ---- ...n-finish-daemon-save-separated-image.patch | 995 ------------- ...i-finish-client-load-separated-image.patch | 274 ---- ...n-finish-daemon-load-separated-image.patch | 389 ----- ...ave-client-options-and-add-unit-test.patch | 440 ------ ...oad-client-options-and-add-unit-test.patch | 409 ------ ...en-load-separated-image-error-return.patch | 203 --- .../0080-util-add-unit-test-for-file.go.patch | 674 --------- ...cleancode-test-for-better-experience.patch | 391 ----- .../0082-test-optimize-scripts-in-hack.patch | 253 ---- ...function-for-testing-separated-image.patch | 124 -- ...tion-tests-for-saving-and-loading-se.patch | 523 ------- ...it-test-for-increment-util-functions.patch | 463 ------ ...m-sequence-for-saving-separated-imag.patch | 43 - ...087-bugfix-optimize-function-IsExist.patch | 443 ------ ...ages-cover-existing-images-name-and-.patch | 434 ------ ...panic-when-using-image-ID-to-save-se.patch | 305 ---- ...log-info-to-show-the-image-layer-num.patch | 117 -- ...l-image-when-output-transporter-is-d.patch | 45 - series.conf | 54 - v0.9.5.tar.gz | Bin 5434528 -> 0 bytes v0.9.6.tar.gz | Bin 0 -> 6157429 bytes 63 files changed, 16 insertions(+), 13943 deletions(-) delete mode 100644 patch/0013-vendor-change-auth.json-file-mode-from-0700-to-0600.patch delete mode 100644 patch/0037-isula-build-fix-goroutine-leak-problem.patch delete mode 100644 patch/0039-bugfix-remove-Healthcheck-field-when-build-from-scra.patch delete mode 100644 patch/0040-vendor-update-tabulate-vendor-to-support-eliminate-s.patch delete mode 100644 patch/0041-enhancement-remove-empty-lines-when-showing-image-li.patch delete mode 100644 patch/0042-fix-some-make-checkall-golangci-lint-flaws.patch delete mode 100644 patch/0043-enhancement-add-go-test-for-RUN-panic-problem.patch delete mode 100644 patch/0044-fix-load-oci-image-panic.patch delete mode 100644 patch/0045-fix-images-command-when-only-give-repository.patch delete mode 100644 patch/0046-check-if-add-default-tag-to-image-name-when-using-pu.patch delete mode 100644 patch/0047-checkAndExpandTag-return-empty-when-tag-is-empty.patch delete mode 100644 patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch delete mode 100644 patch/0049-fix-data-and-run-root-not-effective-when-setting-con.patch delete mode 100644 patch/0050-data-and-run-root-set-unit-test.patch delete mode 100644 patch/0051-bugfix-set-user-s-uid-and-gid-for-containers.patch delete mode 100644 patch/0052-hack-make-isula-build-binary-static.patch delete mode 100644 patch/0053-integration-test-from-new-flaw-of-run-and-data-root-.patch delete mode 100644 patch/0054-isula-build-cleancode-for-errors.Wrap-function.patch delete mode 100644 patch/0055-isula-build-change-isula-build-file-mode.patch delete mode 100644 patch/0056-isula-build-update-documents-about-file-mode.patch delete mode 100644 patch/0057-bugfix-pidofbuilder-do-not-set-when-running-a-new-ba.patch delete mode 100644 patch/0058-shellcheck-fix-of-common.sh.patch delete mode 100644 patch/0059-bugfix-fix-save-multiple-tags-single-image-failed.patch delete mode 100644 patch/0060-add-integration-test-for-saving-one-image-with-multi.patch delete mode 100644 patch/0061-fix-save-single-image-error-when-id-first-with-its-n.patch delete mode 100644 patch/0062-clean-code-staticcheck-fix-of-S1020-S1023-SA9003-S10.patch delete mode 100644 patch/0063-relocation-exporter-package-and-remove-unused-const.patch delete mode 100644 patch/0064-clean-code-tidy-FindImage-function.patch delete mode 100644 patch/0065-clean-code-delete-channel-within-the-same-goroutine.patch delete mode 100644 patch/0067-fix-golangci-lint-warnings.patch delete mode 100644 patch/0068-change-golangci-lint-config-and-remove-redundant-che.patch delete mode 100644 patch/0069-make-add-make-info-for-Makefile.patch delete mode 100644 patch/0070-clean-code-all-latest-tag-checks-take-the-FindImage-.patch delete mode 100644 patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch delete mode 100644 patch/0072-protocol-define-separator-protocol.patch delete mode 100644 patch/0073-cli-finish-client-save-separated-image.patch delete mode 100644 patch/0074-daemon-finish-daemon-save-separated-image.patch delete mode 100644 patch/0075-cli-finish-client-load-separated-image.patch delete mode 100644 patch/0076-daemon-finish-daemon-load-separated-image.patch delete mode 100644 patch/0077-test-optimize-save-client-options-and-add-unit-test.patch delete mode 100644 patch/0078-test-optimize-load-client-options-and-add-unit-test.patch delete mode 100644 patch/0079-bugfix-fix-when-load-separated-image-error-return.patch delete mode 100644 patch/0080-util-add-unit-test-for-file.go.patch delete mode 100644 patch/0081-test-cleancode-test-for-better-experience.patch delete mode 100644 patch/0082-test-optimize-scripts-in-hack.patch delete mode 100644 patch/0083-test-add-common-function-for-testing-separated-image.patch delete mode 100644 patch/0084-test-add-integration-tests-for-saving-and-loading-se.patch delete mode 100644 patch/0085-util-add-unit-test-for-increment-util-functions.patch delete mode 100644 patch/0086-bugfix-fix-random-sequence-for-saving-separated-imag.patch delete mode 100644 patch/0087-bugfix-optimize-function-IsExist.patch delete mode 100644 patch/0088-bugfix-loaded-images-cover-existing-images-name-and-.patch delete mode 100644 patch/0089-isula-build-fix-panic-when-using-image-ID-to-save-se.patch delete mode 100644 patch/0090-enhancement-add-log-info-to-show-the-image-layer-num.patch delete mode 100644 patch/0091-add-repo-to-local-image-when-output-transporter-is-d.patch delete mode 100644 v0.9.5.tar.gz create mode 100644 v0.9.6.tar.gz diff --git a/VERSION-openeuler b/VERSION-openeuler index e80a61f..fedb281 100644 --- a/VERSION-openeuler +++ b/VERSION-openeuler @@ -1 +1 @@ -0.9.5-21 +0.9.6-1 diff --git a/apply-patches b/apply-patches index 1b64e8c..c5733c8 100755 --- a/apply-patches +++ b/apply-patches @@ -11,7 +11,7 @@ cwd=${PWD} src=${cwd}/${pkg} tar_file=v"$(awk -F"-" '{print $1}' < VERSION-openeuler)".tar.gz -tar -zxvf "${tar_file}" +mkdir ${src} && tar -zxvf "${tar_file}" -C ${src} --strip-components 1 if [ ! -d patch ]; then tar -zxvf patch.tar.gz fi diff --git a/git-commit b/git-commit index 1b7ea05..7a8f4f0 100644 --- a/git-commit +++ b/git-commit @@ -1 +1 @@ -ec7c7a741944af0725c3446c6fe09513269a18c7 +8de0b373053da17a3dc3e63cda4ea2b8e49655ea diff --git a/isula-build.spec b/isula-build.spec index cb2905d..60114a8 100644 --- a/isula-build.spec +++ b/isula-build.spec @@ -1,8 +1,8 @@ %global is_systemd 1 Name: isula-build -Version: 0.9.5 -Release: 21 +Version: 0.9.6 +Release: 1 Summary: A tool to build container images License: Mulan PSL V2 URL: https://gitee.com/openeuler/isula-build @@ -85,6 +85,12 @@ fi /usr/share/bash-completion/completions/isula-build %changelog +* Mon Nov 29 2021 DCCooper <1866858@gmail.com> - 0.9.6-1 +- Type:enhancement +- CVE:NA +- SUG:restart +- DESC:Bump version to 0.9.6 + * Wed Nov 17 2021 jingxiaolu - 0.9.5-21 - Type:enhancement - CVE:NA diff --git a/patch/0013-vendor-change-auth.json-file-mode-from-0700-to-0600.patch b/patch/0013-vendor-change-auth.json-file-mode-from-0700-to-0600.patch deleted file mode 100644 index 26c3fc0..0000000 --- a/patch/0013-vendor-change-auth.json-file-mode-from-0700-to-0600.patch +++ /dev/null @@ -1,29 +0,0 @@ -From bde19bc4f9fce45ea09974fdd138cad111b9269c Mon Sep 17 00:00:00 2001 -From: lixiang -Date: Mon, 24 Aug 2020 10:17:20 +0800 -Subject: [PATCH] vendor:change auth.json file mode from 0700 to 0600 - -reason: change auth.json file mode from 0700 to 0600 -See details in https://github.com/containers/image/issues/974 - -Signed-off-by: lixiang ---- - .../github.com/containers/image/v5/pkg/docker/config/config.go | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go b/vendor/github.com/containers/image/v5/pkg/docker/config/config.go -index ce85af18..e0b8b9b1 100644 ---- a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go -+++ b/vendor/github.com/containers/image/v5/pkg/docker/config/config.go -@@ -326,7 +326,7 @@ func modifyJSON(sys *types.SystemContext, editor func(auths *dockerConfigFile) ( - } - - dir := filepath.Dir(path) -- if err = os.MkdirAll(dir, 0700); err != nil { -+ if err = os.MkdirAll(dir, 0600); err != nil { - return err - } - --- -2.19.1 - diff --git a/patch/0030-xattr-support-ima-and-evm.patch b/patch/0030-xattr-support-ima-and-evm.patch index 7287de1..c2b3ebd 100644 --- a/patch/0030-xattr-support-ima-and-evm.patch +++ b/patch/0030-xattr-support-ima-and-evm.patch @@ -14,14 +14,14 @@ diff --git a/vendor/github.com/containers/storage/pkg/archive/archive.go b/vendo index 4472511..479ade8 100644 --- a/vendor/github.com/containers/storage/pkg/archive/archive.go +++ b/vendor/github.com/containers/storage/pkg/archive/archive.go -@@ -396,7 +396,7 @@ func ReadSecurityXattrToTarHeader(path string, hdr *tar.Header) error { +@@ -397,7 +397,7 @@ func ReadSecurityXattrToTarHeader(path string, hdr *tar.Header) error { if hdr.Xattrs == nil { hdr.Xattrs = make(map[string]string) } - for _, xattr := range []string{"security.capability", "security.ima"} { + for _, xattr := range []string{"security.capability", "security.ima", "security.evm"} { capability, err := system.Lgetxattr(path, xattr) - if err != nil && err != system.EOPNOTSUPP && err != system.ErrNotSupportedPlatform { + if err != nil && !errors.Is(err, system.EOPNOTSUPP) && err != system.ErrNotSupportedPlatform { return errors.Wrapf(err, "failed to read %q attribute from %q", xattr, path) -- 2.27.0 diff --git a/patch/0033-isula-build-remove-docker-releated-path-for-authenti.patch b/patch/0033-isula-build-remove-docker-releated-path-for-authenti.patch index 79558ef..4d9a6f9 100644 --- a/patch/0033-isula-build-remove-docker-releated-path-for-authenti.patch +++ b/patch/0033-isula-build-remove-docker-releated-path-for-authenti.patch @@ -12,17 +12,17 @@ diff --git a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go b index cf82ee8..1165d15 100644 --- a/vendor/github.com/containers/image/v5/pkg/docker/config/config.go +++ b/vendor/github.com/containers/image/v5/pkg/docker/config/config.go -@@ -146,14 +146,7 @@ func getAuthFilePaths(sys *types.SystemContext) []authPath { +@@ -219,14 +219,7 @@ func getAuthFilePaths(sys *types.SystemContext, homeDir string) []authPath { paths = append(paths, authPath{path: filepath.Join(dockerConfig, "config.json"), legacyFormat: false}, ) - } else { - paths = append(paths, -- authPath{path: filepath.Join(homedir.Get(), dockerHomePath), legacyFormat: false}, +- authPath{path: filepath.Join(homeDir, dockerHomePath), legacyFormat: false}, - ) } - paths = append(paths, -- authPath{path: filepath.Join(homedir.Get(), dockerLegacyHomePath), legacyFormat: true}, +- authPath{path: filepath.Join(homeDir, dockerLegacyHomePath), legacyFormat: true}, - ) return paths } diff --git a/patch/0037-isula-build-fix-goroutine-leak-problem.patch b/patch/0037-isula-build-fix-goroutine-leak-problem.patch deleted file mode 100644 index 7d3b118..0000000 --- a/patch/0037-isula-build-fix-goroutine-leak-problem.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 56012b7a20cd09c91788f610321fefe82f4bbb5f Mon Sep 17 00:00:00 2001 -From: yangfeiyu -Date: Mon, 7 Sep 2020 20:57:34 +0800 -Subject: [PATCH] isula-build: fix goroutine leak problem - -reason: -when import a zstd tar file, goroutine will leak because of -the unclosing channel of tar stream - -Signed-off-by: yangfeiyu ---- - vendor/github.com/containers/storage/layers.go | 1 + - vendor/github.com/containers/storage/pkg/archive/archive.go | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/vendor/github.com/containers/storage/layers.go b/vendor/github.com/containers/storage/layers.go -index 1fc25bab..2d2cf08e 100644 ---- a/vendor/github.com/containers/storage/layers.go -+++ b/vendor/github.com/containers/storage/layers.go -@@ -1329,6 +1329,7 @@ func (r *layerStore) ApplyDiff(to string, diff io.Reader) (size int64, err error - if err != nil { - return -1, err - } -+ defer uncompressed.Close() - uncompressedDigest := digest.Canonical.Digester() - uncompressedCounter := ioutils.NewWriteCounter(uncompressedDigest.Hash()) - uidLog := make(map[uint32]struct{}) -diff --git a/vendor/github.com/containers/storage/pkg/archive/archive.go b/vendor/github.com/containers/storage/pkg/archive/archive.go -index dd3b7506..58c4d184 100755 ---- a/vendor/github.com/containers/storage/pkg/archive/archive.go -+++ b/vendor/github.com/containers/storage/pkg/archive/archive.go -@@ -139,6 +139,7 @@ func IsArchivePath(path string) bool { - if err != nil { - return false - } -+ defer rdr.Close() - r := tar.NewReader(rdr) - _, err = r.Next() - return err == nil --- -2.23.0 - diff --git a/patch/0039-bugfix-remove-Healthcheck-field-when-build-from-scra.patch b/patch/0039-bugfix-remove-Healthcheck-field-when-build-from-scra.patch deleted file mode 100644 index 877717d..0000000 --- a/patch/0039-bugfix-remove-Healthcheck-field-when-build-from-scra.patch +++ /dev/null @@ -1,26 +0,0 @@ -From dd2d69a851cba9619196166b78564093861ce46b Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 9 Feb 2021 19:11:05 +0800 -Subject: [PATCH] bugfix: remove Healthcheck field when build from scratch - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - image/image.go | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/image/image.go b/image/image.go -index b5b2264..bbbc7b9 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -289,7 +289,7 @@ func createScratchV2Image() *docker.Image { - ExposedPorts: make(docker.PortSet), - Env: make([]string, 0, 0), - Cmd: make([]string, 0, 0), -- Healthcheck: &docker.HealthConfig{}, -+ Healthcheck: nil, - Volumes: make(map[string]struct{}), - Entrypoint: make([]string, 0, 0), - OnBuild: make([]string, 0, 0), --- -1.8.3.1 - diff --git a/patch/0040-vendor-update-tabulate-vendor-to-support-eliminate-s.patch b/patch/0040-vendor-update-tabulate-vendor-to-support-eliminate-s.patch deleted file mode 100644 index a842e05..0000000 --- a/patch/0040-vendor-update-tabulate-vendor-to-support-eliminate-s.patch +++ /dev/null @@ -1,121 +0,0 @@ -From e38c2ef1e4dc0f7579027deb7c36cba2516e8161 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Wed, 10 Feb 2021 10:09:31 +0800 -Subject: [PATCH 1/2] vendor:update tabulate vendor to support eliminate space - line - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - go.mod | 2 +- - go.sum | 4 +-- - vendor/github.com/bndr/gotabulate/tabulate.go | 25 +++++++++++++------ - vendor/modules.txt | 2 +- - 4 files changed, 22 insertions(+), 11 deletions(-) - -diff --git a/go.mod b/go.mod -index 336dd2cc..b02071c9 100644 ---- a/go.mod -+++ b/go.mod -@@ -5,7 +5,7 @@ go 1.13 - require ( - github.com/BurntSushi/toml v0.3.1 - github.com/blang/semver v4.0.0+incompatible // indirect -- github.com/bndr/gotabulate v1.1.3-0.20170315142410-bc555436bfd5 -+ github.com/bndr/gotabulate v1.1.3-0.20210209140214-21a495b00e22 - github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340 // indirect - github.com/containerd/containerd v1.4.0-rc.0 - github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe // indirect -diff --git a/go.sum b/go.sum -index 1ecfa084..3a52a22f 100644 ---- a/go.sum -+++ b/go.sum -@@ -43,8 +43,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r - github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= - github.com/blang/semver v4.0.0+incompatible h1:hnDL+Ci6ZJmEDIbUvCUt3Gh3QsnkdiIj88cWsqe4C4I= - github.com/blang/semver v4.0.0+incompatible/go.mod h1:u4Z/LRonWXLVIJgtpeY3+xwWiIhiJ9ilXrKVGnfHe/c= --github.com/bndr/gotabulate v1.1.3-0.20170315142410-bc555436bfd5 h1:D48YSLPNJ8WpdwDqYF8bMMKUB2bgdWEiFx1MGwPIdbs= --github.com/bndr/gotabulate v1.1.3-0.20170315142410-bc555436bfd5/go.mod h1:0+8yUgaPTtLRTjf49E8oju7ojpU11YmXyvq1LbPAb3U= -+github.com/bndr/gotabulate v1.1.3-0.20210209140214-21a495b00e22 h1:IsKzSX8XqgT8xSo4nxtTOH7014e1L+vPB1wh3IqkWr0= -+github.com/bndr/gotabulate v1.1.3-0.20210209140214-21a495b00e22/go.mod h1:0+8yUgaPTtLRTjf49E8oju7ojpU11YmXyvq1LbPAb3U= - github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= - github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= - github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -diff --git a/vendor/github.com/bndr/gotabulate/tabulate.go b/vendor/github.com/bndr/gotabulate/tabulate.go -index a2e43265..e6684d22 100644 ---- a/vendor/github.com/bndr/gotabulate/tabulate.go -+++ b/vendor/github.com/bndr/gotabulate/tabulate.go -@@ -1,10 +1,13 @@ - package gotabulate - --import "fmt" --import "bytes" --import "github.com/mattn/go-runewidth" --import "unicode/utf8" --import "math" -+import ( -+ "bytes" -+ "fmt" -+ "math" -+ "unicode/utf8" -+ -+ "github.com/mattn/go-runewidth" -+) - - // Basic Structure of TableFormat - type TableFormat struct { -@@ -84,6 +87,7 @@ type Tabulate struct { - WrapStrings bool - WrapDelimiter rune - SplitConcat string -+ DenseMode bool - } - - // Represents normalized tabulate Row -@@ -292,7 +296,7 @@ func (t *Tabulate) Render(format ...interface{}) string { - // Add Data Rows - for index, element := range t.Data { - lines = append(lines, t.buildRow(t.padRow(element.Elements, t.TableFormat.Padding), padded_widths, cols, t.TableFormat.DataRow)) -- if index < len(t.Data)-1 { -+ if !t.DenseMode && index < len(t.Data)-1 { - if element.Continuos != true && !inSlice("betweenLine", t.HideLines) { - lines = append(lines, t.buildLine(padded_widths, cols, t.TableFormat.LineBetweenRows)) - } -@@ -385,7 +389,8 @@ func (t *Tabulate) SetEmptyString(empty string) { - // Can be: - // top - Top line of the table, - // belowheader - Line below the header, --// bottom - Bottom line of the table -+// bottomLine - Bottom line of the table -+// betweenLine - Between line of the table - func (t *Tabulate) SetHideLines(hide []string) { - t.HideLines = hide - } -@@ -401,6 +406,12 @@ func (t *Tabulate) SetMaxCellSize(max int) { - t.MaxSize = max - } - -+// Sets dense mode -+// Under dense mode, no space line between rows -+func (t *Tabulate) SetDenseMode() { -+ t.DenseMode = true -+} -+ - func (t *Tabulate) splitElement(e string) (bool, string) { - //check if we are not attempting to smartly wrap - if t.WrapDelimiter == 0 { -diff --git a/vendor/modules.txt b/vendor/modules.txt -index bb224e3e..0017d4a3 100644 ---- a/vendor/modules.txt -+++ b/vendor/modules.txt -@@ -33,7 +33,7 @@ github.com/acarl005/stripansi - github.com/beorn7/perks/quantile - # github.com/blang/semver v4.0.0+incompatible - github.com/blang/semver --# github.com/bndr/gotabulate v1.1.3-0.20170315142410-bc555436bfd5 -+# github.com/bndr/gotabulate v1.1.3-0.20210209140214-21a495b00e22 - github.com/bndr/gotabulate - # github.com/cespare/xxhash/v2 v2.1.1 - github.com/cespare/xxhash/v2 --- -2.27.0 - diff --git a/patch/0041-enhancement-remove-empty-lines-when-showing-image-li.patch b/patch/0041-enhancement-remove-empty-lines-when-showing-image-li.patch deleted file mode 100644 index 2a97023..0000000 --- a/patch/0041-enhancement-remove-empty-lines-when-showing-image-li.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 647011394abab7da261e827a3148c0c89467a6f8 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Wed, 10 Feb 2021 10:16:17 +0800 -Subject: [PATCH 2/2] enhancement: remove empty lines when showing image list - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/images.go | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/cmd/cli/images.go b/cmd/cli/images.go -index bded3617..19777ce8 100644 ---- a/cmd/cli/images.go -+++ b/cmd/cli/images.go -@@ -100,5 +100,6 @@ func formatAndPrint(images []*pb.ListResponse_ImageInfo) { - tabulate := gotabulate.Create(lines) - tabulate.SetHeaders(title) - tabulate.SetAlign("left") -+ tabulate.SetDenseMode() - fmt.Print(tabulate.Render("simple")) - } --- -2.27.0 - diff --git a/patch/0042-fix-some-make-checkall-golangci-lint-flaws.patch b/patch/0042-fix-some-make-checkall-golangci-lint-flaws.patch deleted file mode 100644 index c6f5b1e..0000000 --- a/patch/0042-fix-some-make-checkall-golangci-lint-flaws.patch +++ /dev/null @@ -1,136 +0,0 @@ -From 34fdae49f82410a8bcc9c6f5940af01a24538de6 Mon Sep 17 00:00:00 2001 -From: meilier -Date: Thu, 4 Feb 2021 18:40:31 +0800 -Subject: [PATCH 01/10] fix some make checkall golangci-lint flaws - ---- - builder/dockerfile/container/container_src.go | 2 +- - builder/dockerfile/container/help.go | 2 +- - daemon/load.go | 4 ++-- - daemon/login.go | 4 ++-- - daemon/logout.go | 4 ++-- - daemon/save.go | 2 -- - pkg/manifest/list.go | 2 +- - util/util.go | 2 -- - 8 files changed, 9 insertions(+), 13 deletions(-) - -diff --git a/builder/dockerfile/container/container_src.go b/builder/dockerfile/container/container_src.go -index ff52ee2c..9426ec76 100644 ---- a/builder/dockerfile/container/container_src.go -+++ b/builder/dockerfile/container/container_src.go -@@ -98,7 +98,7 @@ func (i *containerImageSource) GetBlob(ctx context.Context, blob types.BlobInfo, - return nil, -1, errors.Wrapf(err, "blob file %q is not exit", blobFile) - } - -- layerFile, err := os.OpenFile(blobFile, os.O_RDONLY, constant.DefaultRootFileMode) -+ layerFile, err := os.OpenFile(filepath.Clean(blobFile), os.O_RDONLY, constant.DefaultRootFileMode) - if err != nil { - return nil, -1, errors.Wrapf(err, "open the blob file %q failed", blobFile) - } -diff --git a/builder/dockerfile/container/help.go b/builder/dockerfile/container/help.go -index c5aa381d..475b479d 100644 ---- a/builder/dockerfile/container/help.go -+++ b/builder/dockerfile/container/help.go -@@ -170,7 +170,7 @@ func (ref *Reference) saveLayerToStorage(path string, layer *storage.Layer) (dif - }() - - filename := filepath.Join(path, "layer") -- layerFile, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY, constant.DefaultRootFileMode) -+ layerFile, err := os.OpenFile(filepath.Clean(filename), os.O_CREATE|os.O_WRONLY, constant.DefaultRootFileMode) - if err != nil { - return "", des, errors.Wrapf(err, "error opening file: %s", filename) - } -diff --git a/daemon/load.go b/daemon/load.go -index 08fb5b1f..d756f9ed 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -55,8 +55,8 @@ func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error - ) - opts := b.getLoadOptions(req) - -- if err := util.CheckLoadFile(req.Path); err != nil { -- return err -+ if cErr := util.CheckLoadFile(req.Path); cErr != nil { -+ return cErr - } - - repoTags, err = tryToParseImageFormatFromTarball(b.daemon.opts.DataRoot, &opts) -diff --git a/daemon/login.go b/daemon/login.go -index e3399983..6eeda28e 100644 ---- a/daemon/login.go -+++ b/daemon/login.go -@@ -60,8 +60,8 @@ func (b *Backend) Login(ctx context.Context, req *pb.LoginRequest) (*pb.LoginRes - } - - if loginWithAuthFile(req) { -- auth, err := config.GetCredentials(sysCtx, req.Server) -- if err != nil || auth.Password == "" { -+ auth, gErr := config.GetCredentials(sysCtx, req.Server) -+ if gErr != nil || auth.Password == "" { - auth = types.DockerAuthConfig{} - return &pb.LoginResponse{Content: errTryToUseAuth}, errors.Errorf("failed to read auth file: %v", errTryToUseAuth) - } -diff --git a/daemon/logout.go b/daemon/logout.go -index 355b1f7a..d1fbebcb 100644 ---- a/daemon/logout.go -+++ b/daemon/logout.go -@@ -47,8 +47,8 @@ func (b *Backend) Logout(ctx context.Context, req *pb.LogoutRequest) (*pb.Logout - } - - if req.All { -- if err := config.RemoveAllAuthentication(sysCtx); err != nil { -- return &pb.LogoutResponse{Result: "Remove authentications failed"}, err -+ if rErr := config.RemoveAllAuthentication(sysCtx); rErr != nil { -+ return &pb.LogoutResponse{Result: "Remove authentications failed"}, rErr - } - logrus.Info("Success logout from all servers") - -diff --git a/daemon/save.go b/daemon/save.go -index 3dce7bdf..c6411e04 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -17,7 +17,6 @@ import ( - "context" - "os" - -- "github.com/containers/image/v5/docker/archive" - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -34,7 +33,6 @@ import ( - ) - - type saveOptions struct { -- writer *archive.Writer - sysCtx *types.SystemContext - logger *logger.Logger - localStore *store.Store -diff --git a/pkg/manifest/list.go b/pkg/manifest/list.go -index 3f8b2fed..381746f7 100644 ---- a/pkg/manifest/list.go -+++ b/pkg/manifest/list.go -@@ -129,7 +129,7 @@ func (l *List) SaveListToImage(store *store.Store, imageID, name string) (string - return "", errors.Wrapf(err, "save manifest list to image %v error", imageID) - } - -- //marshal list instance information -+ // marshal list instance information - instancesBytes, err := json.Marshal(&l.instances) - if err != nil { - return "", errors.Wrap(err, "marshall list instances error") -diff --git a/util/util.go b/util/util.go -index 61458c73..3f46d796 100644 ---- a/util/util.go -+++ b/util/util.go -@@ -57,8 +57,6 @@ const ( - var ( - // DefaultRegistryPathPrefix is the map for registry and path - DefaultRegistryPathPrefix map[string]string -- // clientExporters to map exporter whether will export the image to client -- clientExporters map[string]bool - ) - - func init() { --- -2.27.0 - diff --git a/patch/0043-enhancement-add-go-test-for-RUN-panic-problem.patch b/patch/0043-enhancement-add-go-test-for-RUN-panic-problem.patch deleted file mode 100644 index ec828c8..0000000 --- a/patch/0043-enhancement-add-go-test-for-RUN-panic-problem.patch +++ /dev/null @@ -1,66 +0,0 @@ -From c0d4159d7719fb94b4b421415b8f367c6f61c68e Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 8 Feb 2021 10:22:33 +0800 -Subject: [PATCH 02/10] enhancement: add go test for RUN panic problem - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - builder/dockerfile/parser/parser_test.go | 18 ++++++++++++++---- - .../testfiles/preprocess/run_with_directive | 2 ++ - 2 files changed, 16 insertions(+), 4 deletions(-) - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/run_with_directive - -diff --git a/builder/dockerfile/parser/parser_test.go b/builder/dockerfile/parser/parser_test.go -index f0cce1e9..3da5bea6 100644 ---- a/builder/dockerfile/parser/parser_test.go -+++ b/builder/dockerfile/parser/parser_test.go -@@ -69,8 +69,9 @@ func TestPreProcess(t *testing.T) { - - func TestFormat(t *testing.T) { - type testcase struct { -- name string -- expect int -+ name string -+ expect int -+ wantErr bool - } - var testcases = []testcase{ - { -@@ -89,6 +90,10 @@ func TestFormat(t *testing.T) { - name: "yum_config", - expect: 8, - }, -+ { -+ name: "run_with_directive", -+ wantErr: true, -+ }, - } - - for _, tc := range testcases { -@@ -103,8 +108,13 @@ func TestFormat(t *testing.T) { - d, err := newDirective(bytes.NewReader(buf.Bytes())) - assert.NilError(t, err) - lines, err := format(rows, d) -- assert.NilError(t, err) -- assert.Equal(t, len(lines), tc.expect) -+ if (err != nil) != tc.wantErr { -+ t.Errorf("Testing failed. Expected: %v, got: %v", tc.wantErr, err) -+ } -+ if !tc.wantErr { -+ assert.NilError(t, err, file) -+ assert.Equal(t, len(lines), tc.expect) -+ } - }) - } - } -diff --git a/builder/dockerfile/parser/testfiles/preprocess/run_with_directive b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive -new file mode 100644 -index 00000000..3f3465d3 ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive -@@ -0,0 +1,2 @@ -+FROM scratch -+RUN \ --- -2.27.0 - diff --git a/patch/0044-fix-load-oci-image-panic.patch b/patch/0044-fix-load-oci-image-panic.patch deleted file mode 100644 index cc4bd3f..0000000 --- a/patch/0044-fix-load-oci-image-panic.patch +++ /dev/null @@ -1,340 +0,0 @@ -From 947fc1ef0c103f687e195c467ddabd3cf0aa746f Mon Sep 17 00:00:00 2001 -From: meilier -Date: Sat, 20 Feb 2021 00:42:55 +0800 -Subject: [PATCH 06/10] fix load oci image panic - ---- - cmd/cli/save.go | 3 + - cmd/cli/save_test.go | 18 +++++ - daemon/load.go | 11 +-- - daemon/load_test.go | 188 +++++++++++++++++++++++++++++++++++-------- - 4 files changed, 181 insertions(+), 39 deletions(-) - -diff --git a/cmd/cli/save.go b/cmd/cli/save.go -index 64dc8acc..fe676731 100644 ---- a/cmd/cli/save.go -+++ b/cmd/cli/save.go -@@ -72,6 +72,9 @@ func saveCommand(cmd *cobra.Command, args []string) error { - if len(args) == 0 { - return errors.New("save accepts at least one image") - } -+ if saveOpts.format == exporter.OCITransport && len(args) >= 2 { -+ return errors.New("oci image format now only supports saving single image") -+ } - if err := exporter.CheckImageFormat(saveOpts.format); err != nil { - return err - } -diff --git a/cmd/cli/save_test.go b/cmd/cli/save_test.go -index 4183aa8b..3fe6bf81 100644 ---- a/cmd/cli/save_test.go -+++ b/cmd/cli/save_test.go -@@ -38,6 +38,8 @@ func TestSaveCommand(t *testing.T) { - wantErr bool - } - -+ // For normal cases, default err is "invalid socket path: unix:///var/run/isula_build.sock". -+ // As daemon is not running as we run unit test. - var testcases = []testcase{ - { - name: "TC1 - normal case with format docker", -@@ -103,6 +105,22 @@ func TestSaveCommand(t *testing.T) { - errString: "colon in path", - format: "docker", - }, -+ { -+ name: "TC9 - normal case save multiple images with format docker", -+ path: tmpDir.Join("test9"), -+ args: []string{"testImage1", "testImage2"}, -+ wantErr: true, -+ errString: "isula_build.sock", -+ format: "docker", -+ }, -+ { -+ name: "TC10 - abnormal case save multiple images with format oci", -+ path: tmpDir.Join("test10"), -+ args: []string{"testImage1", "testImage2"}, -+ wantErr: true, -+ errString: "oci image format now only supports saving single image", -+ format: "oci", -+ }, - } - - for _, tc := range testcases { -diff --git a/daemon/load.go b/daemon/load.go -index d756f9ed..b557d386 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -147,7 +147,6 @@ func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([][]s - - func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([][]string, error) { - // tmp dir will be removed after NewSourceFromFileWithContext -- - tarfileSource, err := tarfile.NewSourceFromFileWithContext(systemContext, path) - if err != nil { - return nil, errors.Wrapf(err, "failed to get the source of loading tar file") -@@ -168,8 +167,7 @@ func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path strin - - func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([][]string, error) { - var ( -- allRepoTags [][]string -- err error -+ err error - ) - - srcRef, err := alltransports.ParseImageName(exporter.FormatTransport(exporter.OCIArchiveTransport, path)) -@@ -179,14 +177,13 @@ func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) - - tarManifest, err := ociarchive.LoadManifestDescriptorWithContext(systemContext, srcRef) - if err != nil { -- return nil, errors.Wrapf(err, "failed to loadmanifest descriptor of oci image format") -+ return nil, errors.Wrapf(err, "failed to load manifest descriptor of oci image format") - } - -- // If index.json has no reference name, compute the image digest instead - // For now, we only support load single image in archive file - if _, ok := tarManifest.Annotations[imgspecv1.AnnotationRefName]; ok { -- allRepoTags = [][]string{{tarManifest.Annotations[imgspecv1.AnnotationRefName]}} -+ return [][]string{{tarManifest.Annotations[imgspecv1.AnnotationRefName]}}, nil - } - -- return allRepoTags, nil -+ return [][]string{{}}, nil - } -diff --git a/daemon/load_test.go b/daemon/load_test.go -index 0513a889..cbcb5d8f 100644 ---- a/daemon/load_test.go -+++ b/daemon/load_test.go -@@ -30,6 +30,12 @@ import ( - "isula.org/isula-build/store" - ) - -+const ( -+ loadedTarFile = "load.tar" -+ manifestJSONFile = "manifest.json" -+ indexJSONFile = "index.json" -+) -+ - var ( - localStore store.Store - daemon *Daemon -@@ -51,10 +57,10 @@ func (x *controlLoadServer) Context() context.Context { - return context.Background() - } - --func prepareLoadTar(dir *fs.Dir) error { -- manifest := dir.Join("manifest.json") -+func prepareLoadTar(dir *fs.Dir, jsonFile string) error { -+ manifest := dir.Join(jsonFile) - -- fi, err := os.Create(dir.Join("load.tar")) -+ fi, err := os.Create(dir.Join(loadedTarFile)) - if err != nil { - return nil - } -@@ -88,9 +94,9 @@ func prepareLoadTar(dir *fs.Dir) error { - - } - --func prepareForLoad(t *testing.T, manifest string) *fs.Dir { -- tmpDir := fs.NewDir(t, t.Name(), fs.WithFile("manifest.json", manifest)) -- if err := prepareLoadTar(tmpDir); err != nil { -+func prepareForLoad(t *testing.T, jsonFile, manifest string) *fs.Dir { -+ tmpDir := fs.NewDir(t, t.Name(), fs.WithFile(jsonFile, manifest)) -+ if err := prepareLoadTar(tmpDir, jsonFile); err != nil { - tmpDir.Remove() - return nil - } -@@ -119,34 +125,152 @@ func clean(dir *fs.Dir) { - dir.Remove() - } - --func TestLoad(t *testing.T) { -- manifestJSON := -- `[ -- { -- "Config":"76a4dd2d5d6a18323ac8d90f959c3c8562bf592e2a559bab9b462ab600e9e5fc.json", -- "RepoTags":[ -- "hello:latest" -- ], -- "Layers":[ -- "6eb4c21cc3fcb729a9df230ae522c1d3708ca66e5cf531713dbfa679837aa287.tar", -- "37841116ad3b1eeea972c75ab8bad05f48f721a7431924bc547fc91c9076c1c8.tar" -- ] -+func TestLoadSingleImage(t *testing.T) { -+ testcases := []struct { -+ name string -+ manifest string -+ format string -+ tarPath string -+ withTag bool -+ wantErr bool -+ errString string -+ }{ -+ { -+ name: "TC1 normal case load docker tar", -+ manifest: `[ -+ { -+ "Config":"76a4dd2d5d6a18323ac8d90f959c3c8562bf592e2a559bab9b462ab600e9e5fc.json", -+ "RepoTags":[ -+ "hello:latest" -+ ], -+ "Layers":[ -+ "6eb4c21cc3fcb729a9df230ae522c1d3708ca66e5cf531713dbfa679837aa287.tar", -+ "37841116ad3b1eeea972c75ab8bad05f48f721a7431924bc547fc91c9076c1c8.tar" -+ ] -+ } -+ ]`, -+ format: "docker", -+ withTag: true, -+ }, -+ { -+ name: "TC2 normal case load oci tar", -+ manifest: `{ -+ "schemaVersion": 2, -+ "manifests": [ -+ { -+ "mediaType": "application/vnd.oci.image.manifest.v1+json", -+ "digest": "sha256:a65db259a719d915df30c82ce554ab3880ea567e2150d6288580408c2629b802", -+ "size": 347, -+ "annotations": { -+ "org.opencontainers.image.ref.name": "hello:latest" -+ } -+ } -+ ] -+ }`, -+ format: "oci", -+ withTag: true, -+ }, -+ { -+ name: "TC3 normal case load docker tar with no RepoTags", -+ manifest: `[ -+ { -+ "Config":"76a4dd2d5d6a18323ac8d90f959c3c8562bf592e2a559bab9b462ab600e9e5fc.json", -+ "RepoTags":[], -+ "Layers":[ -+ "6eb4c21cc3fcb729a9df230ae522c1d3708ca66e5cf531713dbfa679837aa287.tar", -+ "37841116ad3b1eeea972c75ab8bad05f48f721a7431924bc547fc91c9076c1c8.tar" -+ ] -+ } -+ ]`, -+ format: "docker", -+ withTag: false, -+ }, -+ { -+ name: "TC4 normal case load oci tar with no annotations", -+ manifest: `{ -+ "schemaVersion": 2, -+ "manifests": [ -+ { -+ "mediaType": "application/vnd.oci.image.manifest.v1+json", -+ "digest": "sha256:a65db259a719d915df30c82ce554ab3880ea567e2150d6288580408c2629b802", -+ "size": 347 -+ } -+ ] -+ }`, -+ format: "oci", -+ withTag: false, -+ }, -+ { -+ name: "TC5 abnormal case load docker tar with wrong manifestJSON", -+ manifest: `[ -+ { -+ :"76a4dd2d5d6a18323ac8d90f959c3c8562bf592e2a559bab9b462ab600e9e5fc.json", -+ "RepoTags":[ -+ "hello:latest" -+ ], -+ "Layers":[ -+ "6eb4c21cc3fcb729a9df230ae522c1d3708ca66e5cf531713dbfa679837aa287.tar", -+ "37841116ad3b1eeea972c75ab8bad05f48f721a7431924bc547fc91c9076c1c8.tar" -+ ] -+ } -+ ]`, -+ format: "docker", -+ withTag: true, -+ wantErr: true, -+ errString: "error loading index", -+ }, -+ { -+ name: "TC6 abnormal case with wrong tar path", -+ manifest: `[ -+ { -+ "Config":"76a4dd2d5d6a18323ac8d90f959c3c8562bf592e2a559bab9b462ab600e9e5fc.json", -+ "RepoTags":[ -+ "hello:latest" -+ ], -+ "Layers":[ -+ "6eb4c21cc3fcb729a9df230ae522c1d3708ca66e5cf531713dbfa679837aa287.tar", -+ "37841116ad3b1eeea972c75ab8bad05f48f721a7431924bc547fc91c9076c1c8.tar" -+ ] -+ } -+ ]`, -+ -+ tarPath: "/path/that/not/exist/load.tar", -+ format: "docker", -+ withTag: true, -+ wantErr: true, -+ errString: "no such file or directory", -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ var jsonFile string -+ if tc.format == "docker" { -+ jsonFile = manifestJSONFile - } -- ]` -- dir := prepareForLoad(t, manifestJSON) -- assert.Equal(t, dir != nil, true) -- defer clean(dir) -+ if tc.format == "oci" { -+ jsonFile = indexJSONFile -+ } -+ dir := prepareForLoad(t, jsonFile, tc.manifest) -+ assert.Equal(t, dir != nil, true) -+ defer clean(dir) - -- path := dir.Join("load.tar") -- repoTags, err := tryToParseImageFormatFromTarball(daemon.opts.DataRoot, &loadOptions{path: path}) -- assert.NilError(t, err) -- assert.Equal(t, repoTags[0][0], "hello:latest") -+ path := dir.Join(loadedTarFile) -+ if tc.tarPath == "" { -+ tc.tarPath = path -+ } -+ req := &pb.LoadRequest{Path: tc.tarPath} -+ stream := &controlLoadServer{} - -- req := &pb.LoadRequest{Path: path} -- stream := &controlLoadServer{} -+ err := daemon.backend.Load(req, stream) -+ if tc.wantErr { -+ assert.ErrorContains(t, err, tc.errString) -+ return -+ } -+ assert.ErrorContains(t, err, "failed to get the image") -+ }) -+ } - -- err = daemon.backend.Load(req, stream) -- assert.ErrorContains(t, err, "failed to get the image") - } - - func TestLoadMultipleImages(t *testing.T) { -@@ -181,11 +305,11 @@ func TestLoadMultipleImages(t *testing.T) { - ] - } - ]` -- dir := prepareForLoad(t, manifestJSON) -+ dir := prepareForLoad(t, manifestJSONFile, manifestJSON) - assert.Equal(t, dir != nil, true) - defer clean(dir) - -- path := dir.Join("load.tar") -+ path := dir.Join(loadedTarFile) - repoTags, err := tryToParseImageFormatFromTarball(daemon.opts.DataRoot, &loadOptions{path: path}) - assert.NilError(t, err) - assert.Equal(t, repoTags[0][0], "registry.example.com/sayhello:first") --- -2.27.0 - diff --git a/patch/0045-fix-images-command-when-only-give-repository.patch b/patch/0045-fix-images-command-when-only-give-repository.patch deleted file mode 100644 index 4176d52..0000000 --- a/patch/0045-fix-images-command-when-only-give-repository.patch +++ /dev/null @@ -1,409 +0,0 @@ -From 4e71f4409e53eadea0aa39383fba3e249072a932 Mon Sep 17 00:00:00 2001 -From: meilier -Date: Tue, 2 Feb 2021 00:46:23 +0800 -Subject: [PATCH 07/10] fix images command when only give repository - ---- - daemon/images.go | 145 +++++++++++++++++++++------------- - daemon/images_test.go | 178 ++++++++++++++++++++++++++++++++++++++++++ - image/image.go | 9 ++- - 3 files changed, 277 insertions(+), 55 deletions(-) - create mode 100644 daemon/images_test.go - -diff --git a/daemon/images.go b/daemon/images.go -index 5560d18c..e61817cc 100644 ---- a/daemon/images.go -+++ b/daemon/images.go -@@ -15,9 +15,11 @@ package daemon - - import ( - "context" -+ "fmt" - "sort" - "strings" - -+ "github.com/containers/storage" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - -@@ -29,79 +31,114 @@ import ( - ) - - const ( -- none = "" -- decimalPrefixBase = 1000 -+ none = "" -+ decimalPrefixBase = 1000 -+ minImageFieldLenWithTag = 2 - ) - -+type listOptions struct { -+ localStore *store.Store -+ logEntry *logrus.Entry -+ imageName string -+} -+ -+func (b *Backend) getListOptions(req *pb.ListRequest) listOptions { -+ return listOptions{ -+ localStore: b.daemon.localStore, -+ logEntry: logrus.WithFields(logrus.Fields{"ImageName": req.GetImageName()}), -+ imageName: req.GetImageName(), -+ } -+} -+ - // List lists all images - func (b *Backend) List(ctx context.Context, req *pb.ListRequest) (*pb.ListResponse, error) { -- logEntry := logrus.WithFields(logrus.Fields{"ImageName": req.GetImageName()}) -- logEntry.Info("ListRequest received") -- -- var reqRepository, reqTag string -- const minImageFieldLenWithTag = 2 -- if req.ImageName != "" { -- imageName := req.ImageName -- _, img, err := image.FindImage(b.daemon.localStore, imageName) -- if err != nil { -- logEntry.Error(err) -- return nil, errors.Wrapf(err, "find local image %v error", imageName) -- } -+ logrus.WithFields(logrus.Fields{ -+ "ImageName": req.GetImageName(), -+ }).Info("ListRequest received") - -- parts := strings.Split(imageName, ":") -- if len(parts) >= minImageFieldLenWithTag { -- reqRepository, reqTag = strings.Join(parts[0:len(parts)-1], ":"), parts[len(parts)-1] -- } -+ opts := b.getListOptions(req) - -- imageInfo := &pb.ListResponse_ImageInfo{ -- Repository: reqRepository, -- Tag: reqTag, -- Id: img.ID, -- Created: img.Created.Format(constant.LayoutTime), -- Size_: getImageSize(b.daemon.localStore, img.ID), -- } -+ slashLastIndex := strings.LastIndex(opts.imageName, "/") -+ colonLastIndex := strings.LastIndex(opts.imageName, ":") -+ if opts.imageName != "" && strings.Contains(opts.imageName, ":") && colonLastIndex > slashLastIndex { -+ return listOneImage(opts) -+ } -+ return listImages(opts) -+} - -- return &pb.ListResponse{Images: []*pb.ListResponse_ImageInfo{imageInfo}}, nil -+func listOneImage(opts listOptions) (*pb.ListResponse, error) { -+ _, image, err := image.FindImage(opts.localStore, opts.imageName) -+ if err != nil { -+ opts.logEntry.Error(err) -+ return nil, errors.Wrapf(err, "find local image %v error", opts.imageName) - } - -- images, err := b.daemon.localStore.Images() -+ result := make([]*pb.ListResponse_ImageInfo, 0, len(image.Names)) -+ appendImageToResult(&result, image, opts.localStore) -+ -+ for _, info := range result { -+ if opts.imageName == fmt.Sprintf("%s:%s", info.Repository, info.Tag) { -+ result = []*pb.ListResponse_ImageInfo{info} -+ } -+ } -+ -+ return &pb.ListResponse{Images: result}, nil -+} -+ -+func listImages(opts listOptions) (*pb.ListResponse, error) { -+ images, err := opts.localStore.Images() - if err != nil { -- logEntry.Error(err) -+ opts.logEntry.Error(err) - return &pb.ListResponse{}, errors.Wrap(err, "failed list images from local storage") - } -+ - sort.Slice(images, func(i, j int) bool { - return images[i].Created.After(images[j].Created) - }) - result := make([]*pb.ListResponse_ImageInfo, 0, len(images)) -- for _, image := range images { -- names := image.Names -- if len(names) == 0 { -- names = []string{none} -+ for i := range images { -+ appendImageToResult(&result, &images[i], opts.localStore) -+ } -+ -+ if opts.imageName == "" { -+ return &pb.ListResponse{Images: result}, nil -+ } -+ -+ sameRepositoryResult := make([]*pb.ListResponse_ImageInfo, 0, len(images)) -+ for _, info := range result { -+ if opts.imageName == info.Repository || strings.HasPrefix(info.Id, opts.imageName) { -+ sameRepositoryResult = append(sameRepositoryResult, info) -+ } -+ } -+ -+ if len(sameRepositoryResult) == 0 { -+ return &pb.ListResponse{}, errors.Errorf("failed to list images with repository %q in local storage", opts.imageName) -+ } -+ return &pb.ListResponse{Images: sameRepositoryResult}, nil -+} -+ -+func appendImageToResult(result *[]*pb.ListResponse_ImageInfo, image *storage.Image, store *store.Store) { -+ names := image.Names -+ if len(names) == 0 { -+ names = []string{none} -+ } -+ -+ for _, name := range names { -+ repository, tag := name, none -+ parts := strings.Split(name, ":") -+ if len(parts) >= minImageFieldLenWithTag { -+ repository, tag = strings.Join(parts[0:len(parts)-1], ":"), parts[len(parts)-1] - } -- for _, name := range names { -- repository, tag := name, none -- parts := strings.Split(name, ":") -- if len(parts) >= minImageFieldLenWithTag { -- repository, tag = strings.Join(parts[0:len(parts)-1], ":"), parts[len(parts)-1] -- } -- if reqRepository != "" && reqRepository != repository { -- continue -- } -- if reqTag != "" && reqTag != tag { -- continue -- } -- -- imageInfo := &pb.ListResponse_ImageInfo{ -- Repository: repository, -- Tag: tag, -- Id: image.ID, -- Created: image.Created.Format(constant.LayoutTime), -- Size_: getImageSize(b.daemon.localStore, image.ID), -- } -- result = append(result, imageInfo) -+ -+ imageInfo := &pb.ListResponse_ImageInfo{ -+ Repository: repository, -+ Tag: tag, -+ Id: image.ID, -+ Created: image.Created.Format(constant.LayoutTime), -+ Size_: getImageSize(store, image.ID), - } -+ *result = append(*result, imageInfo) - } -- return &pb.ListResponse{Images: result}, nil - } - - func getImageSize(store *store.Store, id string) string { -diff --git a/daemon/images_test.go b/daemon/images_test.go -new file mode 100644 -index 00000000..a970ce0b ---- /dev/null -+++ b/daemon/images_test.go -@@ -0,0 +1,178 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+// isula-build licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Weizheng Xing -+// Create: 2021-02-03 -+// Description: This file tests List interface -+ -+package daemon -+ -+import ( -+ "context" -+ "fmt" -+ "testing" -+ -+ "github.com/bndr/gotabulate" -+ "github.com/containers/storage" -+ "github.com/containers/storage/pkg/stringid" -+ "gotest.tools/v3/assert" -+ -+ constant "isula.org/isula-build" -+ pb "isula.org/isula-build/api/services" -+) -+ -+func TestList(t *testing.T) { -+ d := prepare(t) -+ defer tmpClean(d) -+ -+ options := &storage.ImageOptions{} -+ img, err := d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image:test1"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ _, err = d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image:test2"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ _, err = d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"egami:test"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ // image with no name and tag -+ _, err = d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ d.Daemon.localStore.SetNames(img.ID, append(img.Names, "image:test1-backup")) -+ // image who's repo contains port -+ _, err = d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"hub.example.com:8080/image:test"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ -+ testcases := []struct { -+ name string -+ req *pb.ListRequest -+ wantErr bool -+ errString string -+ }{ -+ { -+ name: "normal case list specific image with repository[:tag]", -+ req: &pb.ListRequest{ -+ ImageName: "image:test1", -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "normal case list specific image with image id", -+ req: &pb.ListRequest{ -+ ImageName: img.ID, -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "normal case list all images", -+ req: &pb.ListRequest{ -+ ImageName: "", -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "normal case list all images with repository", -+ req: &pb.ListRequest{ -+ ImageName: "image", -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "abnormal case no image found in local store", -+ req: &pb.ListRequest{ -+ ImageName: "coffee:costa", -+ }, -+ wantErr: true, -+ errString: "failed to parse image", -+ }, -+ { -+ name: "abnormal case no repository", -+ req: &pb.ListRequest{ -+ ImageName: "coffee", -+ }, -+ wantErr: true, -+ errString: "failed to list images with repository", -+ }, -+ { -+ name: "abnormal case ImageName only contains latest tag", -+ req: &pb.ListRequest{ -+ ImageName: ":latest", -+ }, -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "normal case ImageName contains port number and tag", -+ req: &pb.ListRequest{ -+ ImageName: "hub.example.com:8080/image:test", -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "normal case ImageName contains port number", -+ req: &pb.ListRequest{ -+ ImageName: "hub.example.com:8080/image", -+ }, -+ wantErr: false, -+ }, -+ { -+ name: "abnormal case wrong ImageName", -+ req: &pb.ListRequest{ -+ ImageName: "hub.example.com:8080/", -+ }, -+ wantErr: true, -+ errString: "failed to list images with repository", -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ ctx := context.TODO() -+ resp, err := d.Daemon.backend.List(ctx, tc.req) -+ -+ if tc.wantErr == true { -+ assert.ErrorContains(t, err, tc.errString) -+ } -+ if tc.wantErr == false { -+ assert.NilError(t, err) -+ formatAndPrint(resp.Images) -+ } -+ }) -+ } -+} -+ -+func formatAndPrint(images []*pb.ListResponse_ImageInfo) { -+ emptyStr := `----------- ---- --------- -------- -+ REPOSITORY TAG IMAGE ID CREATED -+ ----------- ---- --------- --------` -+ lines := make([][]string, 0, len(images)) -+ title := []string{"REPOSITORY", "TAG", "IMAGE ID", "CREATED", "SIZE"} -+ for _, image := range images { -+ if image == nil { -+ continue -+ } -+ line := []string{image.Repository, image.Tag, image.Id[:constant.DefaultIDLen], image.Created, image.Size_} -+ lines = append(lines, line) -+ } -+ if len(lines) == 0 { -+ fmt.Println(emptyStr) -+ return -+ } -+ tabulate := gotabulate.Create(lines) -+ tabulate.SetHeaders(title) -+ tabulate.SetAlign("left") -+ fmt.Print(tabulate.Render("simple")) -+} -diff --git a/image/image.go b/image/image.go -index bbbc7b94..36785bdf 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -590,12 +590,19 @@ func ResolveName(name string, sc *types.SystemContext, store *store.Store) ([]st - } - - func tryResolveNameInStore(name string, store *store.Store) string { -+ defaultTag := "latest" -+ - logrus.Infof("Try to find image: %s in local storage", name) - img, err := store.Image(name) -+ if err == nil { -+ return img.ID -+ } -+ -+ logrus.Infof("Try to find image: %s:%s in local storage", name, defaultTag) -+ img, err = store.Image(fmt.Sprintf("%s:%s", name, defaultTag)) - if err != nil { - return "" - } -- - return img.ID - } - --- -2.27.0 - diff --git a/patch/0046-check-if-add-default-tag-to-image-name-when-using-pu.patch b/patch/0046-check-if-add-default-tag-to-image-name-when-using-pu.patch deleted file mode 100644 index 70308be..0000000 --- a/patch/0046-check-if-add-default-tag-to-image-name-when-using-pu.patch +++ /dev/null @@ -1,336 +0,0 @@ -From 6ce9d998d0b8e15d7a673626a54477a0bfc9f768 Mon Sep 17 00:00:00 2001 -From: meilier -Date: Wed, 3 Feb 2021 01:04:17 +0800 -Subject: [PATCH 08/10] check if add default tag to image name when using push - and save command - ---- - daemon/pull_test.go | 6 +- - daemon/push.go | 6 ++ - daemon/push_test.go | 13 ++- - daemon/save.go | 8 ++ - daemon/save_test.go | 193 ++++++++++++++++++++++++++++++++++++++++++++ - image/image.go | 23 ++++++ - 6 files changed, 246 insertions(+), 3 deletions(-) - create mode 100644 daemon/save_test.go - -diff --git a/daemon/pull_test.go b/daemon/pull_test.go -index 67459d19..27a4d6e8 100644 ---- a/daemon/pull_test.go -+++ b/daemon/pull_test.go -@@ -58,7 +58,6 @@ func (c *controlPullServer) Send(response *pb.PullResponse) error { - - func init() { - reexec.Init() -- - } - - func prepare(t *testing.T) daemonTestOptions { -@@ -100,7 +99,10 @@ func TestPull(t *testing.T) { - defer tmpClean(d) - - options := &storage.ImageOptions{} -- d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image:test"}, "", "", options) -+ _, err := d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image:test"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } - - testcases := []struct { - name string -diff --git a/daemon/push.go b/daemon/push.go -index e6053dd8..4e3a6ed9 100644 ---- a/daemon/push.go -+++ b/daemon/push.go -@@ -63,6 +63,12 @@ func (b *Backend) Push(req *pb.PushRequest, stream pb.Control_PushServer) error - return err - } - -+ imageName, err := image.CheckAndAddDefaultTag(opt.imageName, opt.localStore) -+ if err != nil { -+ return err -+ } -+ opt.imageName = imageName -+ - manifestType, gErr := exporter.GetManifestType(opt.format) - if gErr != nil { - return gErr -diff --git a/daemon/push_test.go b/daemon/push_test.go -index 573e97fe..f4a9e2b1 100644 ---- a/daemon/push_test.go -+++ b/daemon/push_test.go -@@ -79,10 +79,21 @@ func TestPush(t *testing.T) { - Format: "oci", - }, - }, -+ { -+ name: "manifestNotExist fine without tag latest", -+ pushRequest: &pb.PushRequest{ -+ PushID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ ImageName: "127.0.0.1/no-repository/no-name", -+ Format: "oci", -+ }, -+ }, - } - - options := &storage.ImageOptions{} -- d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"127.0.0.1/no-repository/no-name:latest"}, "", "", options) -+ _, err := d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"127.0.0.1/no-repository/no-name:latest"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } - - for _, tc := range testcases { - t.Run(tc.name, func(t *testing.T) { -diff --git a/daemon/save.go b/daemon/save.go -index c6411e04..fd6174b4 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -79,6 +79,14 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - return errors.New("wrong image format provided") - } - -+ for i, imageName := range opts.oriImgList { -+ nameWithTag, cErr := image.CheckAndAddDefaultTag(imageName, opts.localStore) -+ if cErr != nil { -+ return cErr -+ } -+ opts.oriImgList[i] = nameWithTag -+ } -+ - defer func() { - if err != nil { - if rErr := os.Remove(opts.outputPath); rErr != nil && !os.IsNotExist(rErr) { -diff --git a/daemon/save_test.go b/daemon/save_test.go -new file mode 100644 -index 00000000..a59086a8 ---- /dev/null -+++ b/daemon/save_test.go -@@ -0,0 +1,193 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+// isula-build licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Weizheng Xing -+// Create: 2020-02-03 -+// Description: This file tests Save interface -+ -+package daemon -+ -+import ( -+ "context" -+ "testing" -+ -+ "github.com/containers/storage" -+ "github.com/containers/storage/pkg/reexec" -+ "github.com/containers/storage/pkg/stringid" -+ "github.com/pkg/errors" -+ "golang.org/x/sync/errgroup" -+ "google.golang.org/grpc" -+ "gotest.tools/v3/assert" -+ "gotest.tools/v3/fs" -+ -+ constant "isula.org/isula-build" -+ pb "isula.org/isula-build/api/services" -+ _ "isula.org/isula-build/exporter/register" -+ "isula.org/isula-build/pkg/logger" -+) -+ -+type controlSaveServer struct { -+ grpc.ServerStream -+} -+ -+func (c *controlSaveServer) Context() context.Context { -+ return context.Background() -+} -+ -+func (c *controlSaveServer) Send(response *pb.SaveResponse) error { -+ if response.Log == "error" { -+ return errors.New("error happened") -+ } -+ return nil -+} -+ -+func init() { -+ reexec.Init() -+} -+ -+func TestSave(t *testing.T) { -+ d := prepare(t) -+ defer tmpClean(d) -+ -+ //TODO: create image manually and save -+ options := &storage.ImageOptions{} -+ img, err := d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image:latest"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ -+ _, err = d.Daemon.localStore.CreateImage(stringid.GenerateRandomID(), []string{"image2:test"}, "", "", options) -+ if err != nil { -+ t.Fatalf("create image with error: %v", err) -+ } -+ -+ tempTarfileDir := fs.NewDir(t, t.Name()) -+ defer tempTarfileDir.Remove() -+ -+ testcases := []struct { -+ name string -+ req *pb.SaveRequest -+ wantErr bool -+ errString string -+ }{ -+ { -+ name: "normal case save with repository[:tag]", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{"image:latest"}, -+ Path: tempTarfileDir.Join("repotag.tar"), -+ Format: "docker", -+ }, -+ wantErr: true, -+ errString: "file does not exist", -+ }, -+ { -+ name: "normal case save with repository add default latest", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{"image"}, -+ Path: tempTarfileDir.Join("repolatest.tar"), -+ Format: "oci", -+ }, -+ wantErr: true, -+ errString: "file does not exist", -+ }, -+ { -+ name: "normal case with imageid", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{img.ID}, -+ Path: tempTarfileDir.Join("imageid.tar"), -+ Format: "docker", -+ }, -+ wantErr: true, -+ errString: "file does not exist", -+ }, -+ { -+ name: "normal case save multiple images with repository and ID", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{"image2:test", img.ID}, -+ Path: tempTarfileDir.Join("double.tar"), -+ Format: "docker", -+ }, -+ wantErr: true, -+ errString: "file does not exist", -+ }, -+ { -+ name: "abnormal case save image that not exist in local store", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{"noexist", img.ID}, -+ Path: tempTarfileDir.Join("notexist.tar"), -+ Format: "docker", -+ }, -+ wantErr: true, -+ errString: "failed to parse image", -+ }, -+ { -+ name: "abnormal case wrong image format", -+ req: &pb.SaveRequest{ -+ SaveID: stringid.GenerateNonCryptoID()[:constant.DefaultIDLen], -+ Images: []string{"image", img.ID}, -+ Path: tempTarfileDir.Join("image.tar"), -+ Format: "dock", -+ }, -+ wantErr: true, -+ errString: "wrong image format provided", -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ stream := &controlSaveServer{} -+ -+ err := d.Daemon.backend.Save(tc.req, stream) -+ if tc.wantErr == true { -+ assert.ErrorContains(t, err, tc.errString) -+ } -+ if tc.wantErr == false { -+ assert.NilError(t, err) -+ } -+ }) -+ } -+ -+} -+ -+func TestSaveHandler(t *testing.T) { -+ ctx := context.TODO() -+ eg, _ := errgroup.WithContext(ctx) -+ -+ eg.Go(saveHandlerPrint("Push Response")) -+ eg.Go(saveHandlerPrint("")) -+ eg.Go(saveHandlerPrint("error")) -+ -+ eg.Wait() -+} -+ -+func saveHandlerPrint(message string) func() error { -+ return func() error { -+ stream := &controlSaveServer{} -+ cliLogger := logger.NewCliLogger(constant.CliLogBufferLen) -+ -+ ctx := context.TODO() -+ eg, _ := errgroup.WithContext(ctx) -+ -+ eg.Go(messageHandler(stream, cliLogger)) -+ eg.Go(func() error { -+ cliLogger.Print(message) -+ cliLogger.CloseContent() -+ return nil -+ }) -+ -+ eg.Wait() -+ -+ return nil -+ } -+} -diff --git a/image/image.go b/image/image.go -index 36785bdf..1e480391 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -689,3 +689,26 @@ func tryResolveNameInRegistries(name string, sc *types.SystemContext) ([]string, - } - return candidates, exporter.DockerTransport - } -+ -+// CheckAndAddDefaultTag checks if src is format of repository[:tag], add default tag if src without tag -+func CheckAndAddDefaultTag(imageName string, store *store.Store) (string, error) { -+ _, img, err := FindImage(store, imageName) -+ if err != nil { -+ return "", errors.Wrapf(err, "find src image: %q failed", imageName) -+ } -+ -+ defaultTag := "latest" -+ for _, name := range img.Names { -+ // for imageName is the format of repository[:tag] -+ if imageName == name { -+ return imageName, nil -+ } -+ // for name is the format of repository -+ if fmt.Sprintf("%s:%s", imageName, defaultTag) == name { -+ return name, nil -+ } -+ } -+ -+ // for imageName is the format of imageID -+ return imageName, nil -+} --- -2.27.0 - diff --git a/patch/0047-checkAndExpandTag-return-empty-when-tag-is-empty.patch b/patch/0047-checkAndExpandTag-return-empty-when-tag-is-empty.patch deleted file mode 100644 index a3b9e30..0000000 --- a/patch/0047-checkAndExpandTag-return-empty-when-tag-is-empty.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 04dc1756a397edcf99caffd22a85902973a7c40f Mon Sep 17 00:00:00 2001 -From: meilier -Date: Wed, 3 Feb 2021 01:05:37 +0800 -Subject: [PATCH 09/10] checkAndExpandTag return empty when tag is empty - ---- - builder/dockerfile/builder.go | 2 +- - builder/dockerfile/builder_test.go | 2 +- - daemon/import.go | 4 +++- - 3 files changed, 5 insertions(+), 3 deletions(-) - -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index f860e60b..42229746 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -637,7 +637,7 @@ func parseOutputTag(output string) string { - // CheckAndExpandTag checks tag name. If it not include a tag, "latest" will be added. - func CheckAndExpandTag(tag string) (reference.Named, string, error) { - if tag == "" { -- return nil, ":", nil -+ return nil, "", nil - } - - newTag := tag -diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go -index f8de41f1..3b7513be 100644 ---- a/builder/dockerfile/builder_test.go -+++ b/builder/dockerfile/builder_test.go -@@ -1533,7 +1533,7 @@ func TestCheckAndExpandTag(t *testing.T) { - { - name: "test 9", - tag: "", -- output: ":", -+ output: "", - wantErr: false, - }, - { -diff --git a/daemon/import.go b/daemon/import.go -index 21ffeaa3..3d7c0d03 100644 ---- a/daemon/import.go -+++ b/daemon/import.go -@@ -121,7 +121,9 @@ func (b *Backend) Import(req *pb.ImportRequest, stream pb.Control_ImportServer) - return errors.Wrapf(err, "error locating image %q in local storage after import", transports.ImageName(dstRef)) - } - imageID = img.ID -- img.Names = append(img.Names, reference) -+ if reference != "" { -+ img.Names = append(img.Names, reference) -+ } - newNames := util.CopyStringsWithoutSpecificElem(img.Names, tmpName) - if err = localStore.SetNames(img.ID, newNames); err != nil { - return errors.Wrapf(err, "failed to prune temporary name from image %q", imageID) --- -2.27.0 - diff --git a/patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch b/patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch deleted file mode 100644 index b335c4f..0000000 --- a/patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch +++ /dev/null @@ -1,111 +0,0 @@ -From af2e9918063d2797ba9f16306a4e7d2bbb0e85f7 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 2 Mar 2021 15:48:52 +0800 -Subject: [PATCH 10/10] trim space when counting length of fields to avoid - panic - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - builder/dockerfile/parser/parser.go | 2 +- - builder/dockerfile/parser/parser_test.go | 22 ++++++++++++++++++- - .../testfiles/preprocess/cmd_with_directive | 2 ++ - .../preprocess/cmd_with_directive_with_space | 2 ++ - .../preprocess/entrypoint_with_directive | 2 ++ - .../entrypoint_with_directive_with_space | 2 ++ - .../preprocess/run_with_directive_with_space | 2 ++ - 7 files changed, 32 insertions(+), 2 deletions(-) - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space - create mode 100644 builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space - -diff --git a/builder/dockerfile/parser/parser.go b/builder/dockerfile/parser/parser.go -index 3caa516a..a21a3f59 100644 ---- a/builder/dockerfile/parser/parser.go -+++ b/builder/dockerfile/parser/parser.go -@@ -161,7 +161,7 @@ func format(rows []*rowLine, d *directive) ([]*parser.Line, error) { - fields := strings.SplitN(logicLine, " ", 2) - const validLineLen = 2 - // we do not allow empty raw command been passed -- if len(fields) < validLineLen || len(fields[1]) == 0 { -+ if len(fields) < validLineLen || len(strings.TrimSpace(fields[1])) == 0 { - return nil, errors.Errorf("line %q should have at least two fields", logicLine) - } - line.Command = strings.ToUpper(fields[0]) -diff --git a/builder/dockerfile/parser/parser_test.go b/builder/dockerfile/parser/parser_test.go -index 3da5bea6..870132f1 100644 ---- a/builder/dockerfile/parser/parser_test.go -+++ b/builder/dockerfile/parser/parser_test.go -@@ -91,7 +91,27 @@ func TestFormat(t *testing.T) { - expect: 8, - }, - { -- name: "run_with_directive", -+ name: "run_with_directive", -+ wantErr: true, -+ }, -+ { -+ name: "run_with_directive_with_space", -+ wantErr: true, -+ }, -+ { -+ name: "cmd_with_directive", -+ wantErr: true, -+ }, -+ { -+ name: "cmd_with_directive_with_space", -+ wantErr: true, -+ }, -+ { -+ name: "entrypoint_with_directive", -+ wantErr: true, -+ }, -+ { -+ name: "entrypoint_with_directive_with_space", - wantErr: true, - }, - } -diff --git a/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive -new file mode 100644 -index 00000000..545c278c ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive -@@ -0,0 +1,2 @@ -+FROM scratch -+CMD \ -diff --git a/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space -new file mode 100644 -index 00000000..fc309502 ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space -@@ -0,0 +1,2 @@ -+FROM scratch -+CMD \ -diff --git a/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive -new file mode 100644 -index 00000000..59369bea ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive -@@ -0,0 +1,2 @@ -+FROM scratch -+ENTRYPOINT \ -diff --git a/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space -new file mode 100644 -index 00000000..172aa714 ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space -@@ -0,0 +1,2 @@ -+FROM scratch -+ENTRYPOINT \ -diff --git a/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space -new file mode 100644 -index 00000000..c742c4c3 ---- /dev/null -+++ b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space -@@ -0,0 +1,2 @@ -+FROM scratch -+RUN \ --- -2.27.0 - diff --git a/patch/0049-fix-data-and-run-root-not-effective-when-setting-con.patch b/patch/0049-fix-data-and-run-root-not-effective-when-setting-con.patch deleted file mode 100644 index d12e2e6..0000000 --- a/patch/0049-fix-data-and-run-root-not-effective-when-setting-con.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 022e5f3bfe5ec9731cf2d8808780a07d7408c820 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Thu, 20 May 2021 15:58:43 +0800 -Subject: [PATCH 1/5] fix data and run root not effective when setting - configuration.toml after upgrading containers/storage - ---- - cmd/daemon/main.go | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++---- - 1 file changed, 59 insertions(+), 4 deletions(-) - -diff --git a/cmd/daemon/main.go b/cmd/daemon/main.go -index 41d2b60..4fd5356 100644 ---- a/cmd/daemon/main.go -+++ b/cmd/daemon/main.go -@@ -213,6 +213,35 @@ func loadConfig(path string) (config.TomlConfig, error) { - return conf, err - } - -+func checkRootSetInConfig(path string) (setRunRoot, setGraphRoot bool, err error) { -+ fi, err := os.Stat(path) -+ if err != nil { -+ return false, false, err -+ } -+ -+ if !fi.Mode().IsRegular() { -+ err = errors.New("config file must be a regular file") -+ return false, false, err -+ } -+ -+ if err = util.CheckFileSize(path, constant.MaxFileSize); err != nil { -+ return false, false, err -+ } -+ -+ configData, err := ioutil.ReadFile(filepath.Clean(path)) -+ if err != nil { -+ return false, false, err -+ } -+ conf := struct { -+ Storage struct { -+ RunRoot string `toml:"runroot"` -+ DataRoot string `toml:"graphroot"` -+ } `toml:"storage"` -+ }{} -+ _, err = toml.Decode(string(configData), &conf) -+ return conf.Storage.RunRoot != "", conf.Storage.DataRoot != "", err -+} -+ - func mergeStorageConfig(cmd *cobra.Command) error { - store.SetDefaultConfigFilePath(constant.StorageConfigPath) - option, err := store.GetDefaultStoreOptions(true) -@@ -226,13 +255,21 @@ func mergeStorageConfig(cmd *cobra.Command) error { - } - - var storeOpt store.DaemonStoreOptions -- if option.RunRoot == "" { -+ storeOpt.RunRoot = option.RunRoot -+ storeOpt.DataRoot = option.GraphRoot -+ -+ setRunRoot, setDataRoot, err := checkRootSetInConfig(constant.StorageConfigPath) -+ if err != nil { -+ return err -+ } -+ -+ if !setRunRoot { - storeOpt.RunRoot, err = securejoin.SecureJoin(daemonOpts.RunRoot, "storage") - if err != nil { - return err - } - } -- if option.GraphRoot == "" { -+ if !setDataRoot { - storeOpt.DataRoot, err = securejoin.SecureJoin(daemonOpts.DataRoot, "storage") - if err != nil { - return err -@@ -249,7 +286,7 @@ func mergeStorageConfig(cmd *cobra.Command) error { - return nil - } - --func mergeConfig(conf config.TomlConfig, cmd *cobra.Command) { -+func mergeConfig(conf config.TomlConfig, cmd *cobra.Command) error { - if conf.Debug && !cmd.Flag("debug").Changed { - daemonOpts.Debug = true - } -@@ -271,6 +308,22 @@ func mergeConfig(conf config.TomlConfig, cmd *cobra.Command) { - if conf.DataRoot != "" && !cmd.Flag("dataroot").Changed { - daemonOpts.DataRoot = conf.DataRoot - } -+ -+ runRoot, err := securejoin.SecureJoin(daemonOpts.RunRoot, "storage") -+ if err != nil { -+ return err -+ } -+ -+ dataRoot, err := securejoin.SecureJoin(daemonOpts.DataRoot, "storage") -+ if err != nil { -+ return err -+ } -+ store.SetDefaultStoreOptions(store.DaemonStoreOptions{ -+ DataRoot: dataRoot, -+ RunRoot: runRoot, -+ }) -+ -+ return nil - } - - func setupWorkingDirectories() error { -@@ -319,7 +372,9 @@ func checkAndValidateConfig(cmd *cobra.Command) error { - os.Exit(constant.DefaultFailedCode) - } - -- mergeConfig(conf, cmd) -+ if err = mergeConfig(conf, cmd); err != nil { -+ return err -+ } - } - - // file policy.json must be exist --- -1.8.3.1 - diff --git a/patch/0050-data-and-run-root-set-unit-test.patch b/patch/0050-data-and-run-root-set-unit-test.patch deleted file mode 100644 index a55f790..0000000 --- a/patch/0050-data-and-run-root-set-unit-test.patch +++ /dev/null @@ -1,133 +0,0 @@ -From d6c6c205122386b66ef82adc4af16c3c2eb86b18 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Mon, 31 May 2021 00:46:16 +0800 -Subject: [PATCH 2/5] data and run root set unit test - ---- - cmd/daemon/main_test.go | 103 ++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 103 insertions(+) - -diff --git a/cmd/daemon/main_test.go b/cmd/daemon/main_test.go -index 790fdfc..d98ea83 100644 ---- a/cmd/daemon/main_test.go -+++ b/cmd/daemon/main_test.go -@@ -18,9 +18,12 @@ import ( - "os" - "testing" - -+ "gotest.tools/v3/assert" - "gotest.tools/v3/fs" - - constant "isula.org/isula-build" -+ "isula.org/isula-build/cmd/daemon/config" -+ "isula.org/isula-build/store" - ) - - func TestSetupWorkingDirectories(t *testing.T) { -@@ -104,3 +107,103 @@ func TestSetupWorkingDirectories(t *testing.T) { - }) - } - } -+ -+func TestRunAndDataRootSet(t *testing.T) { -+ dataRoot := fs.NewDir(t, t.Name()) -+ runRoot := fs.NewDir(t, t.Name()) -+ -+ conf := config.TomlConfig{ -+ Debug: true, -+ Group: "isula", -+ LogLevel: "debug", -+ Runtime: "", -+ RunRoot: "", -+ DataRoot: "", -+ } -+ cmd := newDaemonCommand() -+ -+ result := store.DaemonStoreOptions{ -+ DataRoot: dataRoot.Join("storage"), -+ RunRoot: runRoot.Join("storage"), -+ } -+ -+ setStorage := func(content string) func() { -+ return func() { -+ if err := mergeConfig(conf, cmd); err != nil { -+ t.Fatalf("mrege config failed with error: %v", err) -+ } -+ -+ fileName := "storage.toml" -+ tmpDir := fs.NewDir(t, t.Name(), fs.WithFile(fileName, content)) -+ defer tmpDir.Remove() -+ -+ filePath := tmpDir.Join(fileName) -+ store.SetDefaultConfigFilePath(filePath) -+ option, err := store.GetDefaultStoreOptions(true) -+ if err != nil { -+ t.Fatalf("get default store options failed with error: %v", err) -+ } -+ -+ var storeOpt store.DaemonStoreOptions -+ storeOpt.RunRoot = option.RunRoot -+ storeOpt.DataRoot = option.GraphRoot -+ store.SetDefaultStoreOptions(storeOpt) -+ } -+ -+ } -+ -+ testcases := []struct { -+ name string -+ setF func() -+ expectation store.DaemonStoreOptions -+ }{ -+ { -+ name: "TC1 - cmd set, configuration and storage not set", -+ setF: func() { -+ cmd.PersistentFlags().Set("runroot", runRoot.Path()) -+ cmd.PersistentFlags().Set("dataroot", dataRoot.Path()) -+ checkAndValidateConfig(cmd) -+ }, -+ expectation: result, -+ }, -+ { -+ name: "TC2 - cmd and storage not set, configuration set", -+ setF: func() { -+ conf.DataRoot = dataRoot.Path() -+ conf.RunRoot = runRoot.Path() -+ checkAndValidateConfig(cmd) -+ }, -+ expectation: result, -+ }, -+ { -+ name: "TC3 - all not set", -+ setF: setStorage("[storage]"), -+ expectation: store.DaemonStoreOptions{ -+ DataRoot: "/var/lib/containers/storage", -+ RunRoot: "/var/run/containers/storage", -+ }, -+ }, -+ { -+ name: "TC4 - cmd and configuration not set, storage set", -+ setF: func() { -+ config := "[storage]\nrunroot = \"" + runRoot.Join("storage") + "\"\ngraphroot = \"" + dataRoot.Join("storage") + "\"" -+ sT := setStorage(config) -+ sT() -+ }, -+ expectation: result, -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ tc.setF() -+ storeOptions, err := store.GetDefaultStoreOptions(false) -+ if err != nil { -+ t.Fatalf("get default store options failed with error: %v", err) -+ } -+ assert.Equal(t, tc.expectation.DataRoot, storeOptions.GraphRoot) -+ assert.Equal(t, tc.expectation.RunRoot, storeOptions.RunRoot) -+ }) -+ -+ } -+} --- -1.8.3.1 - diff --git a/patch/0051-bugfix-set-user-s-uid-and-gid-for-containers.patch b/patch/0051-bugfix-set-user-s-uid-and-gid-for-containers.patch deleted file mode 100644 index 5994c3e..0000000 --- a/patch/0051-bugfix-set-user-s-uid-and-gid-for-containers.patch +++ /dev/null @@ -1,34 +0,0 @@ -From fbd95494e6e402fd123955fbaf337696cc22c750 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 31 May 2021 20:50:24 +0800 -Subject: [PATCH 3/5] bugfix: set user's uid and gid for containers - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - builder/dockerfile/run.go | 10 ++++++++++ - 1 file changed, 10 insertions(+) - -diff --git a/builder/dockerfile/run.go b/builder/dockerfile/run.go -index 6c38b55..828fe67 100644 ---- a/builder/dockerfile/run.go -+++ b/builder/dockerfile/run.go -@@ -95,6 +95,16 @@ func (c *cmdBuilder) setupRuntimeSpec(command []string) (*specs.Spec, error) { - } - - // set specific runtime spec config -+ user := c.stage.docker.Config.User -+ if user != "" { -+ pair, err := util.GetChownOptions(user, c.stage.mountpoint) -+ if err != nil { -+ return nil, err -+ } -+ g.SetProcessUID(uint32(pair.UID)) -+ g.SetProcessGID(uint32(pair.GID)) -+ g.SetProcessUsername(c.stage.docker.Config.User) -+ } - g.RemoveHostname() - g.SetProcessArgs(command) - g.SetProcessTerminal(false) --- -1.8.3.1 - diff --git a/patch/0052-hack-make-isula-build-binary-static.patch b/patch/0052-hack-make-isula-build-binary-static.patch deleted file mode 100644 index be007c0..0000000 --- a/patch/0052-hack-make-isula-build-binary-static.patch +++ /dev/null @@ -1,1264 +0,0 @@ -From b575a9ae9970bbdafe132f1ac73db1d0b7ee50ba Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Wed, 19 May 2021 09:36:12 +0800 -Subject: [PATCH 4/5] hack: make isula-build binary static - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - Makefile | 5 +- - builder/dockerfile/builder.go | 12 ++--- - cmd/cli/build.go | 17 +++---- - cmd/cli/build_test.go | 7 ++- - cmd/cli/import.go | 10 +--- - cmd/cli/pull.go | 8 +--- - cmd/cli/pull_test.go | 12 ----- - cmd/cli/push.go | 13 ++---- - cmd/cli/push_test.go | 14 ------ - cmd/cli/save.go | 10 ++-- - constant.go | 14 ++++++ - daemon/import.go | 7 +++ - daemon/load.go | 10 ++-- - daemon/pull.go | 5 ++ - daemon/push.go | 13 ++++-- - daemon/save.go | 8 ++-- - exporter/common.go | 30 ++---------- - exporter/common_test.go | 88 ++++------------------------------- - exporter/docker/archive/archive.go | 3 +- - exporter/docker/daemon/daemon.go | 3 +- - exporter/docker/docker.go | 3 +- - exporter/exporter.go | 23 ---------- - exporter/isulad/isulad.go | 2 +- - exporter/manifest/manifest.go | 3 +- - exporter/oci/archive/archive.go | 3 +- - exporter/oci/oci.go | 3 +- - image/image.go | 14 +++--- - image/image_test.go | 5 +- - pkg/manifest/list.go | 3 +- - util/util.go | 49 ++++++++++++++++++++ - util/util_test.go | 94 ++++++++++++++++++++++++++++++++++++++ - 31 files changed, 254 insertions(+), 237 deletions(-) - -diff --git a/Makefile b/Makefile -index cbace59..e03254c 100644 ---- a/Makefile -+++ b/Makefile -@@ -22,7 +22,8 @@ BUILDTAGS := seccomp - BUILDFLAGS := -tags "$(BUILDTAGS)" - TMPDIR := /tmp/isula_build_tmpdir - BEFLAG := -tmpdir=${TMPDIR} --SAFEBUILDFLAGS := -buildid=IdByIsula -buildmode=pie -extldflags=-ftrapv -extldflags=-static -extldflags=-zrelro -extldflags=-znow $(LDFLAGS) $(BEFLAG) -+SAFEBUILDFLAGS := -buildid=IdByIsula -buildmode=pie -extldflags=-ftrapv -extldflags=-zrelro -extldflags=-znow $(BEFLAG) $(LDFLAGS) -+STATIC_LDFLAGS := -linkmode=external -extldflags=-static - - IMAGE_BUILDARGS := $(if $(http_proxy), --build-arg http_proxy=$(http_proxy)) - IMAGE_BUILDARGS += $(if $(https_proxy), --build-arg https_proxy=$(https_proxy)) -@@ -56,7 +57,7 @@ isula-builder: ./cmd/daemon - safe: - @echo "Safe building isula-build..." - mkdir -p ${TMPDIR} -- $(GO_BUILD) -ldflags '$(SAFEBUILDFLAGS)' -o bin/isula-build $(BUILDFLAGS) ./cmd/cli -+ $(GO_BUILD) -ldflags '$(SAFEBUILDFLAGS) $(STATIC_LDFLAGS)' -o bin/isula-build $(BUILDFLAGS) ./cmd/cli 2>/dev/null - $(GO_BUILD) -ldflags '$(SAFEBUILDFLAGS)' -o bin/isula-builder $(BUILDFLAGS) ./cmd/daemon - @echo "Safe build isula-build done!" - -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index 4222974..cbd1e58 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -159,11 +159,11 @@ func NewBuilder(ctx context.Context, store *store.Store, req *pb.BuildRequest, r - } - - func (b *Builder) parseFormat(format string) error { -- if err := exporter.CheckImageFormat(format); err != nil { -+ if err := util.CheckImageFormat(format); err != nil { - return err - } - -- if format == exporter.OCITransport { -+ if format == constant.OCITransport { - b.manifestType = imgspecv1.MediaTypeImageManifest - } - -@@ -183,12 +183,12 @@ func (b *Builder) parseOutputManifest(output []string) error { - } - - transport := segments[0] -- if transport == exporter.OCITransport { -+ if transport == constant.OCITransport { - // When transport is oci, still, we need to set b.buildOpts.Output[i] starting with prefix "docker://". We only need to set the related b.outputManifestType. - // As a result, we can push oci format image into registry. When with prefix "oci://", image is exported to local dir, which is not what we expect. - // See github.com/containers/image package for more information. - b.outputManifestType = append(b.outputManifestType, imgspecv1.MediaTypeImageManifest) -- b.buildOpts.Output[i] = fmt.Sprintf("%s:%s", exporter.DockerTransport, segments[1]) -+ b.buildOpts.Output[i] = fmt.Sprintf("%s:%s", constant.DockerTransport, segments[1]) - } - b.outputManifestType = append(b.outputManifestType, manifest.DockerV2Schema2MediaType) - } -@@ -617,11 +617,11 @@ func parseOutputTag(output string) string { - - var tag string - switch { -- case (outputFields[0] == exporter.DockerDaemonTransport || outputFields[0] == exporter.IsuladTransport) && len(outputFields) > 1: -+ case (outputFields[0] == constant.DockerDaemonTransport || outputFields[0] == constant.IsuladTransport) && len(outputFields) > 1: - tag = strings.Join(outputFields[1:], ":") - case exporter.CheckArchiveFormat(outputFields[0]) == nil && len(outputFields) > archiveOutputWithoutTagLen: - tag = strings.Join(outputFields[archiveOutputWithoutTagLen:], ":") -- case exporter.CheckImageFormat(outputFields[0]) == nil && len(outputFields) > 1: -+ case util.CheckImageFormat(outputFields[0]) == nil && len(outputFields) > 1: - repoAndTag := strings.Join(outputFields[1:], ":") - // repo format regexp, "//registry.example.com/" for example - repo := regexp.MustCompile(`^\/\/[\w\.\-\:]+\/`).FindString(repoAndTag) -diff --git a/cmd/cli/build.go b/cmd/cli/build.go -index decf285..3d9f549 100644 ---- a/cmd/cli/build.go -+++ b/cmd/cli/build.go -@@ -25,7 +25,6 @@ import ( - "strings" - "time" - -- "github.com/containers/storage/pkg/stringid" - "github.com/gogo/protobuf/types" - "github.com/opencontainers/go-digest" - "github.com/pkg/errors" -@@ -35,8 +34,6 @@ import ( - - constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" -- "isula.org/isula-build/exporter" -- _ "isula.org/isula-build/exporter/register" - "isula.org/isula-build/pkg/opts" - "isula.org/isula-build/util" - ) -@@ -107,7 +104,7 @@ func NewBuildCmd() *cobra.Command { - if util.CheckCliExperimentalEnabled() { - buildCmd.PersistentFlags().StringVar(&buildOpts.format, "format", "oci", "Image format of the built image") - } else { -- buildOpts.format = exporter.DockerTransport -+ buildOpts.format = constant.DockerTransport - } - buildCmd.PersistentFlags().StringVarP(&buildOpts.output, "output", "o", "", "Destination of output images") - buildCmd.PersistentFlags().BoolVar(&buildOpts.proxyFlag, "proxy", true, "Inherit proxy environment variables from host") -@@ -161,7 +158,7 @@ func buildCommand(c *cobra.Command, args []string) error { - - func newBuildOptions(args []string) error { - // unique buildID for each build progress -- buildOpts.buildID = stringid.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ buildOpts.buildID = util.GenerateNonCryptoID()[:constant.DefaultIDLen] - - if len(args) < 1 { - // use current working directory as default context directory -@@ -219,7 +216,7 @@ func checkOutput(output string) ([]string, error) { - if len(transport) == 0 { - return nil, errors.New("transport should not be empty") - } -- if !exporter.IsSupport(transport) { -+ if !util.IsSupportExporter(transport) { - return nil, errors.Errorf("transport %q not support", transport) - } - -@@ -248,12 +245,12 @@ func checkAbsPath(path string) (string, error) { - func modifyLocalTransporter(transport string, absPath string, segments []string) error { - const validIsuladFieldsLen = 3 - switch transport { -- case exporter.DockerArchiveTransport, exporter.OCIArchiveTransport: -+ case constant.DockerArchiveTransport, constant.OCIArchiveTransport: - newSeg := util.CopyStrings(segments) - newSeg[1] = absPath - buildOpts.output = strings.Join(newSeg, ":") - return nil -- case exporter.IsuladTransport: -+ case constant.IsuladTransport: - if len(segments) != validIsuladFieldsLen { - return errors.Errorf("invalid isulad output format: %v", buildOpts.output) - } -@@ -275,7 +272,7 @@ func checkAndProcessOutput() error { - - transport := segments[0] - // just build, not need to export to any destination -- if !exporter.IsClientExporter(transport) { -+ if !util.IsClientExporter(transport) { - return nil - } - -@@ -325,7 +322,7 @@ func runBuild(ctx context.Context, cli Cli) (string, error) { - digest string - ) - -- if err = exporter.CheckImageFormat(buildOpts.format); err != nil { -+ if err = util.CheckImageFormat(buildOpts.format); err != nil { - return "", err - } - if err = checkAndProcessOutput(); err != nil { -diff --git a/cmd/cli/build_test.go b/cmd/cli/build_test.go -index fcdf6b4..a7fe64e 100644 ---- a/cmd/cli/build_test.go -+++ b/cmd/cli/build_test.go -@@ -25,7 +25,6 @@ import ( - "gotest.tools/v3/fs" - - constant "isula.org/isula-build" -- "isula.org/isula-build/exporter" - _ "isula.org/isula-build/exporter/register" - "isula.org/isula-build/util" - ) -@@ -175,7 +174,7 @@ func TestRunBuildWithNArchiveExporter(t *testing.T) { - format: "docker", - }, - { -- exporter: exporter.OCIArchiveTransport, -+ exporter: constant.OCIArchiveTransport, - descSpec: "oci-archive:isula:latest", - format: "oci", - }, -@@ -222,12 +221,12 @@ func TestRunBuildWithArchiveExporter(t *testing.T) { - - var testcases = []testcase{ - { -- exporter: exporter.DockerArchiveTransport, -+ exporter: constant.DockerArchiveTransport, - descSpec: "docker-archive:/tmp/image:isula:latest", - format: "docker", - }, - { -- exporter: exporter.OCIArchiveTransport, -+ exporter: constant.OCIArchiveTransport, - descSpec: "oci-archive:/tmp/image:isula:latest", - format: "oci", - }, -diff --git a/cmd/cli/import.go b/cmd/cli/import.go -index 320197b..96263db 100644 ---- a/cmd/cli/import.go -+++ b/cmd/cli/import.go -@@ -20,8 +20,6 @@ import ( - "os" - "path/filepath" - -- dockerref "github.com/containers/image/v5/docker/reference" -- "github.com/containers/storage/pkg/stringid" - "github.com/pkg/errors" - "github.com/spf13/cobra" - -@@ -76,12 +74,6 @@ func importCommand(c *cobra.Command, args []string) error { - } - - func runImport(ctx context.Context, cli Cli) error { -- if importOpts.reference != "" { -- if _, err := dockerref.Parse(importOpts.reference); err != nil { -- return err -- } -- } -- - if !filepath.IsAbs(importOpts.source) { - pwd, err := os.Getwd() - if err != nil { -@@ -90,7 +82,7 @@ func runImport(ctx context.Context, cli Cli) error { - importOpts.source = util.MakeAbsolute(importOpts.source, pwd) - } - -- importOpts.importID = stringid.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ importOpts.importID = util.GenerateNonCryptoID()[:constant.DefaultIDLen] - - stream, err := cli.Client().Import(ctx, &pb.ImportRequest{ - Source: importOpts.source, -diff --git a/cmd/cli/pull.go b/cmd/cli/pull.go -index 316c548..02951ec 100644 ---- a/cmd/cli/pull.go -+++ b/cmd/cli/pull.go -@@ -18,13 +18,12 @@ import ( - "fmt" - "io" - -- dockerref "github.com/containers/image/v5/docker/reference" -- "github.com/containers/storage/pkg/stringid" - "github.com/pkg/errors" - "github.com/spf13/cobra" - - constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" -+ "isula.org/isula-build/util" - ) - - const ( -@@ -46,9 +45,6 @@ func pullCommand(c *cobra.Command, args []string) error { - if len(args) != 1 { - return errors.New("pull requires exactly one argument") - } -- if _, err := dockerref.Parse(args[0]); err != nil { -- return err -- } - - ctx := context.TODO() - cli, err := NewClient(ctx) -@@ -60,7 +56,7 @@ func pullCommand(c *cobra.Command, args []string) error { - } - - func runPull(ctx context.Context, cli Cli, imageName string) error { -- pullID := stringid.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ pullID := util.GenerateNonCryptoID()[:constant.DefaultIDLen] - - pullStream, err := cli.Client().Pull(ctx, &pb.PullRequest{ - PullID: pullID, -diff --git a/cmd/cli/pull_test.go b/cmd/cli/pull_test.go -index a4dbd04..0a11b0b 100644 ---- a/cmd/cli/pull_test.go -+++ b/cmd/cli/pull_test.go -@@ -40,18 +40,6 @@ func TestPullCommand(t *testing.T) { - wantErr: true, - errString: "pull requires exactly one argument", - }, -- { -- name: "abnormal case with empty args", -- args: []string{""}, -- wantErr: true, -- errString: "repository name must have at least one component", -- }, -- { -- name: "abnormal case with invalid args", -- args: []string{"busybox-:latest"}, -- wantErr: true, -- errString: "invalid reference format", -- }, - } - - for _, tc := range testcases { -diff --git a/cmd/cli/push.go b/cmd/cli/push.go -index 7502abd..061c17b 100644 ---- a/cmd/cli/push.go -+++ b/cmd/cli/push.go -@@ -18,14 +18,11 @@ import ( - "fmt" - "io" - -- dockerref "github.com/containers/image/v5/docker/reference" -- "github.com/containers/storage/pkg/stringid" - "github.com/pkg/errors" - "github.com/spf13/cobra" - - constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" -- "isula.org/isula-build/exporter" - "isula.org/isula-build/util" - ) - -@@ -50,7 +47,7 @@ func NewPushCmd() *cobra.Command { - if util.CheckCliExperimentalEnabled() { - pushCmd.PersistentFlags().StringVarP(&pushOpts.format, "format", "f", "oci", "Format for image pushing to a registry") - } else { -- pushOpts.format = exporter.DockerTransport -+ pushOpts.format = constant.DockerTransport - } - return pushCmd - } -@@ -59,10 +56,8 @@ func pushCommand(c *cobra.Command, args []string) error { - if len(args) != 1 { - return errors.New("push requires exactly one argument") - } -- if _, err := dockerref.Parse(args[0]); err != nil { -- return err -- } -- if err := exporter.CheckImageFormat(pushOpts.format); err != nil { -+ -+ if err := util.CheckImageFormat(pushOpts.format); err != nil { - return err - } - -@@ -76,7 +71,7 @@ func pushCommand(c *cobra.Command, args []string) error { - } - - func runPush(ctx context.Context, cli Cli, imageName string) error { -- pushID := stringid.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ pushID := util.GenerateNonCryptoID()[:constant.DefaultIDLen] - - pushStream, err := cli.Client().Push(ctx, &pb.PushRequest{ - PushID: pushID, -diff --git a/cmd/cli/push_test.go b/cmd/cli/push_test.go -index 0f8db2e..27caef3 100644 ---- a/cmd/cli/push_test.go -+++ b/cmd/cli/push_test.go -@@ -43,20 +43,6 @@ func TestPushCommand(t *testing.T) { - errString: "push requires exactly one argument", - }, - { -- name: "abnormal case with empty args", -- args: []string{""}, -- format: "docker", -- wantErr: true, -- errString: "repository name must have at least one component", -- }, -- { -- name: "abnormal case with invalid args", -- args: []string{"busybox-:latest"}, -- format: "oci", -- wantErr: true, -- errString: "invalid reference format", -- }, -- { - name: "normal case with image format oci", - args: []string{"openeuler:latest"}, - format: "oci", -diff --git a/cmd/cli/save.go b/cmd/cli/save.go -index fe67673..cb78ecf 100644 ---- a/cmd/cli/save.go -+++ b/cmd/cli/save.go -@@ -21,13 +21,11 @@ import ( - "path/filepath" - "strings" - -- "github.com/containers/storage/pkg/stringid" - "github.com/pkg/errors" - "github.com/spf13/cobra" - - constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" -- "isula.org/isula-build/exporter" - "isula.org/isula-build/util" - ) - -@@ -59,7 +57,7 @@ func NewSaveCmd() *cobra.Command { - if util.CheckCliExperimentalEnabled() { - saveCmd.PersistentFlags().StringVarP(&saveOpts.format, "format", "f", "oci", "Format of image saving to local tarball") - } else { -- saveOpts.format = exporter.DockerTransport -+ saveOpts.format = constant.DockerTransport - } - - return saveCmd -@@ -72,10 +70,10 @@ func saveCommand(cmd *cobra.Command, args []string) error { - if len(args) == 0 { - return errors.New("save accepts at least one image") - } -- if saveOpts.format == exporter.OCITransport && len(args) >= 2 { -+ if saveOpts.format == constant.OCITransport && len(args) >= 2 { - return errors.New("oci image format now only supports saving single image") - } -- if err := exporter.CheckImageFormat(saveOpts.format); err != nil { -+ if err := util.CheckImageFormat(saveOpts.format); err != nil { - return err - } - if err := checkSavePath(); err != nil { -@@ -115,7 +113,7 @@ func checkSavePath() error { - } - - func runSave(ctx context.Context, cli Cli, args []string) error { -- saveOpts.saveID = stringid.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ saveOpts.saveID = util.GenerateNonCryptoID()[:constant.DefaultIDLen] - saveOpts.images = args - - saveStream, err := cli.Client().Save(ctx, &pb.SaveRequest{ -diff --git a/constant.go b/constant.go -index 30c1653..9926728 100644 ---- a/constant.go -+++ b/constant.go -@@ -75,6 +75,20 @@ const ( - BuildContainerImageType = "ctr-img" - // BufferSize is default buffer size for file transportation - BufferSize = 32 * 1024 -+ // DockerTransport used to export docker image format images to registry -+ DockerTransport = "docker" -+ // DockerArchiveTransport used to export docker image format images to local tarball -+ DockerArchiveTransport = "docker-archive" -+ // DockerDaemonTransport used to export images to docker daemon -+ DockerDaemonTransport = "docker-daemon" -+ // OCITransport used to export oci image format images to registry -+ OCITransport = "oci" -+ // OCIArchiveTransport used to export oci image format images to local tarball -+ OCIArchiveTransport = "oci-archive" -+ // IsuladTransport use to export images to isulad -+ IsuladTransport = "isulad" -+ // ManifestTransport used to export manifest list -+ ManifestTransport = "manifest" - ) - - var ( -diff --git a/daemon/import.go b/daemon/import.go -index 3d7c0d0..40a0a92 100644 ---- a/daemon/import.go -+++ b/daemon/import.go -@@ -18,6 +18,7 @@ import ( - "path/filepath" - - cp "github.com/containers/image/v5/copy" -+ dockerref "github.com/containers/image/v5/docker/reference" - is "github.com/containers/image/v5/storage" - "github.com/containers/image/v5/tarball" - "github.com/containers/image/v5/transports" -@@ -49,6 +50,12 @@ func (b *Backend) Import(req *pb.ImportRequest, stream pb.Control_ImportServer) - logEntry := logrus.WithFields(logrus.Fields{"ImportID": importID}) - logEntry.Info("ImportRequest received") - -+ if reference != "" { -+ if _, err := dockerref.Parse(reference); err != nil { -+ return err -+ } -+ } -+ - tmpName := importID + "-import-tmp" - dstRef, err := is.Transport.ParseStoreReference(localStore, tmpName) - if err != nil { -diff --git a/daemon/load.go b/daemon/load.go -index b557d38..f2d818f 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -127,16 +127,16 @@ func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([][]s - - allRepoTags, err = getDockerRepoTagFromImageTar(systemContext, opts.path) - if err == nil { -- logrus.Infof("Parse image successful with %q format", exporter.DockerTransport) -- opts.format = exporter.DockerArchiveTransport -+ logrus.Infof("Parse image successful with %q format", constant.DockerTransport) -+ opts.format = constant.DockerArchiveTransport - return allRepoTags, nil - } - logrus.Warnf("Try to Parse image of docker format failed with error: %v", err) - - allRepoTags, err = getOCIRepoTagFromImageTar(systemContext, opts.path) - if err == nil { -- logrus.Infof("Parse image successful with %q format", exporter.OCITransport) -- opts.format = exporter.OCIArchiveTransport -+ logrus.Infof("Parse image successful with %q format", constant.OCITransport) -+ opts.format = constant.OCIArchiveTransport - return allRepoTags, nil - } - logrus.Warnf("Try to parse image of oci format failed with error: %v", err) -@@ -170,7 +170,7 @@ func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) - err error - ) - -- srcRef, err := alltransports.ParseImageName(exporter.FormatTransport(exporter.OCIArchiveTransport, path)) -+ srcRef, err := alltransports.ParseImageName(exporter.FormatTransport(constant.OCIArchiveTransport, path)) - if err != nil { - return nil, errors.Wrapf(err, "failed to parse image name of oci image format") - } -diff --git a/daemon/pull.go b/daemon/pull.go -index 56be755..6d2e33d 100644 ---- a/daemon/pull.go -+++ b/daemon/pull.go -@@ -16,6 +16,7 @@ package daemon - import ( - "context" - -+ dockerref "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -53,6 +54,10 @@ func (b *Backend) Pull(req *pb.PullRequest, stream pb.Control_PullServer) error - imageName: req.GetImageName(), - } - -+ if _, err := dockerref.Parse(opt.imageName); err != nil { -+ return err -+ } -+ - ctx := context.WithValue(stream.Context(), util.LogFieldKey(util.LogKeySessionID), req.GetPullID()) - eg, egCtx := errgroup.WithContext(ctx) - eg.Go(pullHandler(egCtx, opt)) -diff --git a/daemon/push.go b/daemon/push.go -index 4e3a6ed..e36198d 100644 ---- a/daemon/push.go -+++ b/daemon/push.go -@@ -16,6 +16,7 @@ package daemon - import ( - "context" - -+ dockerref "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -59,7 +60,11 @@ func (b *Backend) Push(req *pb.PushRequest, stream pb.Control_PushServer) error - format: req.GetFormat(), - } - -- if err := exporter.CheckImageFormat(opt.format); err != nil { -+ if err := util.CheckImageFormat(opt.format); err != nil { -+ return err -+ } -+ -+ if _, err := dockerref.Parse(opt.imageName); err != nil { - return err - } - -@@ -111,11 +116,11 @@ func pushHandler(ctx context.Context, options pushOptions) func() error { - ManifestType: options.manifestType, - } - -- if err := exporter.Export(options.imageName, exporter.FormatTransport(exporter.DockerTransport, options.imageName), -+ if err := exporter.Export(options.imageName, exporter.FormatTransport(constant.DockerTransport, options.imageName), - exOpts, options.localStore); err != nil { - logrus.WithField(util.LogKeySessionID, options.pushID). -- Errorf("Push image %q of format %q failed with %v", options.imageName, exporter.DockerTransport, err) -- return errors.Wrapf(err, "push image %q of format %q failed", options.imageName, exporter.DockerTransport) -+ Errorf("Push image %q of format %q failed with %v", options.imageName, constant.DockerTransport, err) -+ return errors.Wrapf(err, "push image %q of format %q failed", options.imageName, constant.DockerTransport) - } - - return nil -diff --git a/daemon/save.go b/daemon/save.go -index fd6174b..de644c3 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -71,10 +71,10 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - opts := b.getSaveOptions(req) - - switch opts.format { -- case exporter.DockerTransport: -- opts.format = exporter.DockerArchiveTransport -- case exporter.OCITransport: -- opts.format = exporter.OCIArchiveTransport -+ case constant.DockerTransport: -+ opts.format = constant.DockerArchiveTransport -+ case constant.OCITransport: -+ opts.format = constant.OCIArchiveTransport - default: - return errors.New("wrong image format provided") - } -diff --git a/exporter/common.go b/exporter/common.go -index 8f390ac..bded6ec 100644 ---- a/exporter/common.go -+++ b/exporter/common.go -@@ -209,17 +209,7 @@ func NewPolicyContext(sc *types.SystemContext) (*signature.PolicyContext, error) - // CheckArchiveFormat used to check if save or load image format is either docker-archive or oci-archive - func CheckArchiveFormat(format string) error { - switch format { -- case DockerArchiveTransport, OCIArchiveTransport: -- return nil -- default: -- return errors.New("wrong image format provided") -- } --} -- --// CheckImageFormat used to check if the image format is either docker or oci --func CheckImageFormat(format string) error { -- switch format { -- case DockerTransport, OCITransport: -+ case constant.DockerArchiveTransport, constant.OCIArchiveTransport: - return nil - default: - return errors.New("wrong image format provided") -@@ -228,7 +218,7 @@ func CheckImageFormat(format string) error { - - // FormatTransport for formatting transport with corresponding path - func FormatTransport(transport, path string) string { -- if transport == DockerTransport { -+ if transport == constant.DockerTransport { - return fmt.Sprintf("%s://%s", transport, path) - } - return fmt.Sprintf("%s:%s", transport, path) -@@ -238,23 +228,13 @@ func FormatTransport(transport, path string) string { - func GetManifestType(format string) (string, error) { - var manifestType string - switch format { -- case OCITransport: -+ case constant.OCITransport: - manifestType = imgspecv1.MediaTypeImageManifest -- case DockerTransport: -+ case constant.DockerTransport: - manifestType = manifest.DockerV2Schema2MediaType - default: -- return "", errors.Errorf("unknown format %q. Choose one of the supported formats: %s,%s", format, DockerTransport, OCITransport) -+ return "", errors.Errorf("unknown format %q. Choose one of the supported formats: %s,%s", format, constant.DockerTransport, constant.OCITransport) - } - return manifestType, nil - } - --// IsClientExporter used to determinate exporter whether need to send the image to client --func IsClientExporter(exporter string) bool { -- clientExporters := map[string]bool{ -- DockerArchiveTransport: true, -- OCIArchiveTransport: true, -- IsuladTransport: true, -- } -- _, ok := clientExporters[exporter] -- return ok --} -diff --git a/exporter/common_test.go b/exporter/common_test.go -index ca29296..7434d3b 100644 ---- a/exporter/common_test.go -+++ b/exporter/common_test.go -@@ -21,6 +21,8 @@ import ( - imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1" - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ -+ "isula.org/isula-build" - ) - - func TestFormatTransport(t *testing.T) { -@@ -36,13 +38,13 @@ func TestFormatTransport(t *testing.T) { - }{ - { - name: "docker format transport", -- transport: DockerTransport, -+ transport: constant.DockerTransport, - path: "registry.example.com/library/image:test", - result: "docker://registry.example.com/library/image:test", - }, - { - name: "oci-archive format transport", -- transport: OCIArchiveTransport, -+ transport: constant.OCIArchiveTransport, - path: ociArchiveFilePath, - result: "oci-archive:", - }, -@@ -59,43 +61,6 @@ func TestFormatTransport(t *testing.T) { - } - } - --func TestCheckImageFormat(t *testing.T) { -- testcases := []struct { -- name string -- format string -- wantErr bool -- errString string -- }{ -- { -- name: "docker image format", -- format: DockerTransport, -- wantErr: false, -- }, -- { -- name: "oci image format", -- format: OCITransport, -- wantErr: false, -- }, -- { -- name: "unknown image format", -- format: "you guess", -- wantErr: true, -- }, -- } -- for _, tc := range testcases { -- t.Run(tc.name, func(t *testing.T) { -- err := CheckImageFormat(tc.format) -- if tc.wantErr { -- assert.Error(t, err, "wrong image format provided") -- return -- } -- if !tc.wantErr { -- assert.NilError(t, err) -- } -- }) -- } --} -- - func TestCheckArchiveFormat(t *testing.T) { - testcases := []struct { - name string -@@ -105,12 +70,12 @@ func TestCheckArchiveFormat(t *testing.T) { - }{ - { - name: "docker-archive image format", -- format: DockerArchiveTransport, -+ format: constant.DockerArchiveTransport, - wantErr: false, - }, - { - name: "oci-archive imagee format", -- format: OCIArchiveTransport, -+ format: constant.OCIArchiveTransport, - wantErr: false, - }, - { -@@ -143,13 +108,13 @@ func TestGetManifestType(t *testing.T) { - }{ - { - name: "docker format manifest type", -- format: DockerTransport, -+ format: constant.DockerTransport, - manifest: manifest.DockerV2Schema2MediaType, - wantErr: false, - }, - { - name: "oci format manifest type", -- format: OCITransport, -+ format: constant.OCITransport, - manifest: imgspecv1.MediaTypeImageManifest, - wantErr: false, - }, -@@ -173,40 +138,3 @@ func TestGetManifestType(t *testing.T) { - } - } - --func TestIsClientExporter(t *testing.T) { -- testcases := []struct { -- name string -- exporter string -- wantResult bool -- }{ -- { -- name: "normal docker archive exporter", -- exporter: DockerArchiveTransport, -- wantResult: true, -- }, -- { -- name: "normal oci archive exporter", -- exporter: OCIArchiveTransport, -- wantResult: true, -- }, -- { -- name: "normal isulad exporter", -- exporter: IsuladTransport, -- wantResult: true, -- }, -- { -- name: "abnormal unkown", -- exporter: "unkown", -- wantResult: false, -- }, -- } -- -- for _, tc := range testcases { -- t.Run(tc.name, func(t *testing.T) { -- isExporter := IsClientExporter(tc.exporter) -- if isExporter != tc.wantResult { -- t.Fatal("test client exporter failed") -- } -- }) -- } --} -diff --git a/exporter/docker/archive/archive.go b/exporter/docker/archive/archive.go -index 5da3f53..04654cf 100644 ---- a/exporter/docker/archive/archive.go -+++ b/exporter/docker/archive/archive.go -@@ -25,6 +25,7 @@ import ( - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/store" -@@ -47,7 +48,7 @@ var DockerArchiveExporter = dockerArchiveExporter{ - } - - func (d *dockerArchiveExporter) Name() string { -- return exporter.DockerArchiveTransport -+ return constant.DockerArchiveTransport - } - - func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/docker/daemon/daemon.go b/exporter/docker/daemon/daemon.go -index c7e06b7..308495c 100644 ---- a/exporter/docker/daemon/daemon.go -+++ b/exporter/docker/daemon/daemon.go -@@ -21,6 +21,7 @@ import ( - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/store" -@@ -40,7 +41,7 @@ var _dockerDaemonExporter = dockerDaemonExporter{ - } - - func (d *dockerDaemonExporter) Name() string { -- return exporter.DockerDaemonTransport -+ return constant.DockerDaemonTransport - } - - func (d *dockerDaemonExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/docker/docker.go b/exporter/docker/docker.go -index e830811..987ee94 100644 ---- a/exporter/docker/docker.go -+++ b/exporter/docker/docker.go -@@ -21,6 +21,7 @@ import ( - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/store" -@@ -41,7 +42,7 @@ var _dockerExporter = dockerExporter{ - } - - func (d *dockerExporter) Name() string { -- return exporter.DockerTransport -+ return constant.DockerTransport - } - - func (d *dockerExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/exporter.go b/exporter/exporter.go -index af1148f..60af001 100644 ---- a/exporter/exporter.go -+++ b/exporter/exporter.go -@@ -21,29 +21,6 @@ import ( - "isula.org/isula-build/store" - ) - --const ( -- // DockerTransport used to export docker image format images to registry -- DockerTransport = "docker" -- -- // DockerArchiveTransport used to export docker image format images to local tarball -- DockerArchiveTransport = "docker-archive" -- -- // DockerDaemonTransport used to export images to docker daemon -- DockerDaemonTransport = "docker-daemon" -- -- // OCITransport used to export oci image format images to registry -- OCITransport = "oci" -- -- // OCIArchiveTransport used to export oci image format images to local tarball -- OCIArchiveTransport = "oci-archive" -- -- // IsuladTransport use to export images to isulad -- IsuladTransport = "isulad" -- -- // ManifestTransport used to export manifest list -- ManifestTransport = "manifest" --) -- - type exportHub struct { - items map[string]Exporter - sync.RWMutex -diff --git a/exporter/isulad/isulad.go b/exporter/isulad/isulad.go -index dd41d2d..73b0496 100644 ---- a/exporter/isulad/isulad.go -+++ b/exporter/isulad/isulad.go -@@ -46,7 +46,7 @@ var _isuladExporter = isuladExporter{ - } - - func (d *isuladExporter) Name() string { -- return exporter.IsuladTransport -+ return constant.IsuladTransport - } - - func (d *isuladExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/manifest/manifest.go b/exporter/manifest/manifest.go -index b6b8d2a..1b06788 100644 ---- a/exporter/manifest/manifest.go -+++ b/exporter/manifest/manifest.go -@@ -22,6 +22,7 @@ import ( - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/pkg/manifest" - "isula.org/isula-build/store" -@@ -42,7 +43,7 @@ var _manifestExporter = manifestExporter{ - } - - func (d *manifestExporter) Name() string { -- return exporter.ManifestTransport -+ return constant.ManifestTransport - } - - func (d *manifestExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/oci/archive/archive.go b/exporter/oci/archive/archive.go -index 03f5e4f..9c39df3 100644 ---- a/exporter/oci/archive/archive.go -+++ b/exporter/oci/archive/archive.go -@@ -22,6 +22,7 @@ import ( - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/store" -@@ -42,7 +43,7 @@ var _ociArchiveExporter = ociArchiveExporter{ - } - - func (o *ociArchiveExporter) Name() string { -- return exporter.OCIArchiveTransport -+ return constant.OCIArchiveTransport - } - - func (o *ociArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/exporter/oci/oci.go b/exporter/oci/oci.go -index 2328a77..c0d703d 100644 ---- a/exporter/oci/oci.go -+++ b/exporter/oci/oci.go -@@ -20,6 +20,7 @@ import ( - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -+ constant "isula.org/isula-build" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/store" -@@ -39,7 +40,7 @@ var _ociExporter = ociExporter{ - } - - func (o *ociExporter) Name() string { -- return exporter.OCITransport -+ return constant.OCITransport - } - - func (o *ociExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -diff --git a/image/image.go b/image/image.go -index 1e48039..91ab720 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -152,7 +152,7 @@ func PullAndGetImageInfo(opt *PrepareImageOptions) (types.ImageReference, *stora - ) - - imageName := exporter.FormatTransport(transport, strImage) -- if transport == exporter.DockerArchiveTransport { -+ if transport == constant.DockerArchiveTransport { - srcRef, pErr = alltransports.ParseImageName(imageName + ":@" + strconv.Itoa(opt.ManifestIndex)) - } else { - srcRef, pErr = alltransports.ParseImageName(imageName) -@@ -255,7 +255,7 @@ func getLocalImageNameFromRef(store storage.Store, srcRef types.ImageReference) - return stringid.GenerateRandomID() + ":" + stringid.GenerateRandomID(), nil - } - -- if srcRef.Transport().Name() != exporter.DockerTransport { -+ if srcRef.Transport().Name() != constant.DockerTransport { - return "", errors.Errorf("the %s transport is not supported yet", srcRef.Transport().Name()) - } - -@@ -612,11 +612,11 @@ func tryResolveNameWithTransport(name string) (string, string) { - if len(splits) == 2 { - if trans := transports.Get(splits[0]); trans != nil { - switch trans.Name() { -- case exporter.DockerTransport: -+ case constant.DockerTransport: - // trim prefix if dest like docker://registry.example.com format - dest := strings.TrimPrefix(splits[1], "//") - return dest, trans.Name() -- case exporter.DockerArchiveTransport, exporter.OCIArchiveTransport: -+ case constant.DockerArchiveTransport, constant.OCIArchiveTransport: - dest := strings.TrimSpace(splits[1]) - return dest, trans.Name() - } -@@ -632,7 +632,7 @@ func tryResolveNameWithDockerReference(name string) (string, string, error) { - return "", "", errors.Wrapf(err, "error parsing image name %q", name) - } - if named.String() == name { -- return name, exporter.DockerTransport, nil -+ return name, constant.DockerTransport, nil - } - - domain := reference.Domain(named) -@@ -648,7 +648,7 @@ func tryResolveNameWithDockerReference(name string) (string, string, error) { - } - defaultPrefix := pathPrefix + string(os.PathSeparator) - if strings.HasPrefix(repoPath, defaultPrefix) && path.Join(domain, repoPath[len(defaultPrefix):])+tag+digest == name { -- return name, exporter.DockerTransport, nil -+ return name, constant.DockerTransport, nil - } - } - -@@ -687,7 +687,7 @@ func tryResolveNameInRegistries(name string, sc *types.SystemContext) ([]string, - candidate := path.Join(registry, middle, name) - candidates = append(candidates, candidate) - } -- return candidates, exporter.DockerTransport -+ return candidates, constant.DockerTransport - } - - // CheckAndAddDefaultTag checks if src is format of repository[:tag], add default tag if src without tag -diff --git a/image/image_test.go b/image/image_test.go -index 17176d4..c698b4d 100644 ---- a/image/image_test.go -+++ b/image/image_test.go -@@ -25,7 +25,6 @@ import ( - "gotest.tools/v3/fs" - - constant "isula.org/isula-build" -- "isula.org/isula-build/exporter" - "isula.org/isula-build/store" - ) - -@@ -65,7 +64,7 @@ func TestTryResolveNameWithDockerReference(t *testing.T) { - var testcases = []testcase{ - { - name: "docker.io/library/busybox:latest", -- expectTrans: exporter.DockerTransport, -+ expectTrans: constant.DockerTransport, - errStr: "", - }, { - name: "busybox:latest", -@@ -122,5 +121,5 @@ registries = [] - name := "busybox:latest" - candidates, transport := tryResolveNameInRegistries(name, nil) - assert.Assert(t, cmp.Contains(candidates, "localhost/busybox:latest")) -- assert.Equal(t, transport, exporter.DockerTransport) -+ assert.Equal(t, transport, constant.DockerTransport) - } -diff --git a/pkg/manifest/list.go b/pkg/manifest/list.go -index 381746f..bc6037f 100644 ---- a/pkg/manifest/list.go -+++ b/pkg/manifest/list.go -@@ -24,6 +24,7 @@ import ( - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - -+ constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" - "isula.org/isula-build/builder/dockerfile/container" - "isula.org/isula-build/exporter" -@@ -60,7 +61,7 @@ func NewManifestList() *List { - func (l *List) AddImage(ctx context.Context, store *store.Store, imageSpec string) (digest.Digest, error) { - img, _, err := image.ResolveFromImage(&image.PrepareImageOptions{ - Ctx: ctx, -- FromImage: exporter.FormatTransport(exporter.DockerTransport, imageSpec), -+ FromImage: exporter.FormatTransport(constant.DockerTransport, imageSpec), - SystemContext: image.GetSystemContext(), - Store: store, - }) -diff --git a/util/util.go b/util/util.go -index 3f46d79..f527608 100644 ---- a/util/util.go -+++ b/util/util.go -@@ -315,3 +315,52 @@ func ChangeGroup(path, g string) error { - } - return nil - } -+ -+// GenerateNonCryptoID generate none crypto id with length 32 -+func GenerateNonCryptoID() string { -+ b := make([]byte, 32) -+ _, err := rand.Read(b) -+ if err != nil { -+ panic(err) // This shouldn't happen -+ } -+ id := fmt.Sprintf("%x", b) -+ -+ return id -+} -+ -+// IsSupportExporter returns true when the specific exporter is supported -+func IsSupportExporter(name string) bool { -+ exporters := map[string]bool{ -+ constant.DockerTransport: true, -+ constant.DockerArchiveTransport: true, -+ constant.DockerDaemonTransport: true, -+ constant.OCITransport: true, -+ constant.OCIArchiveTransport: true, -+ constant.IsuladTransport: true, -+ constant.ManifestTransport: true, -+ } -+ _, ok := exporters[name] -+ -+ return ok -+} -+ -+// CheckImageFormat used to check if the image format is either docker or oci -+func CheckImageFormat(format string) error { -+ switch format { -+ case constant.DockerTransport, constant.OCITransport: -+ return nil -+ default: -+ return errors.New("wrong image format provided") -+ } -+} -+ -+// IsClientExporter used to determinate exporter whether need to send the image to client -+func IsClientExporter(exporter string) bool { -+ clientExporters := map[string]bool{ -+ constant.DockerArchiveTransport: true, -+ constant.OCIArchiveTransport: true, -+ constant.IsuladTransport: true, -+ } -+ _, ok := clientExporters[exporter] -+ return ok -+} -diff --git a/util/util_test.go b/util/util_test.go -index 722c2a3..db57393 100644 ---- a/util/util_test.go -+++ b/util/util_test.go -@@ -315,3 +315,97 @@ func TestSetDaemonLock(t *testing.T) { - _, err = SetDaemonLock(root, name) - assert.ErrorContains(t, err, "check if there is another daemon running") - } -+ -+func TestGenerateNonCryptoID(t *testing.T) { -+ tests := []struct { -+ name string -+ want int -+ }{ -+ { -+ name: "TC1 - generate id", -+ want:64, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if got := GenerateNonCryptoID(); len(got) != tt.want { -+ t.Errorf("GenerateNonCryptoID() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestCheckImageFormat(t *testing.T) { -+ testcases := []struct { -+ name string -+ format string -+ wantErr bool -+ errString string -+ }{ -+ { -+ name: "docker image format", -+ format: constant.DockerTransport, -+ wantErr: false, -+ }, -+ { -+ name: "oci image format", -+ format: constant.OCITransport, -+ wantErr: false, -+ }, -+ { -+ name: "unknown image format", -+ format: "you guess", -+ wantErr: true, -+ }, -+ } -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ err := CheckImageFormat(tc.format) -+ if tc.wantErr { -+ assert.Error(t, err, "wrong image format provided") -+ return -+ } -+ if !tc.wantErr { -+ assert.NilError(t, err) -+ } -+ }) -+ } -+} -+ -+func TestIsClientExporter(t *testing.T) { -+ testcases := []struct { -+ name string -+ exporter string -+ wantResult bool -+ }{ -+ { -+ name: "normal docker archive exporter", -+ exporter: constant.DockerArchiveTransport, -+ wantResult: true, -+ }, -+ { -+ name: "normal oci archive exporter", -+ exporter: constant.OCIArchiveTransport, -+ wantResult: true, -+ }, -+ { -+ name: "normal isulad exporter", -+ exporter: constant.IsuladTransport, -+ wantResult: true, -+ }, -+ { -+ name: "abnormal unkown", -+ exporter: "unkown", -+ wantResult: false, -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ isExporter := IsClientExporter(tc.exporter) -+ if isExporter != tc.wantResult { -+ t.Fatal("test client exporter failed") -+ } -+ }) -+ } -+} --- -1.8.3.1 - diff --git a/patch/0053-integration-test-from-new-flaw-of-run-and-data-root-.patch b/patch/0053-integration-test-from-new-flaw-of-run-and-data-root-.patch deleted file mode 100644 index 1e19829..0000000 --- a/patch/0053-integration-test-from-new-flaw-of-run-and-data-root-.patch +++ /dev/null @@ -1,186 +0,0 @@ -From 78d5ee37ff4b2b3ef0a3e3031087d8cdb2e0c0cd Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sun, 30 May 2021 20:55:07 +0800 -Subject: [PATCH 5/5] integration test from new flaw of run and data root set - ---- - Makefile | 18 ++++++--- - README.zh.md | 2 +- - tests/src/test_integration_set_new_root.sh | 60 ++++++++++++++++++++++++++++++ - tests/test.sh | 29 +++++++++++++-- - 4 files changed, 98 insertions(+), 11 deletions(-) - create mode 100644 tests/src/test_integration_set_new_root.sh - -diff --git a/Makefile b/Makefile -index cbace59..f8578a4 100644 ---- a/Makefile -+++ b/Makefile -@@ -73,13 +73,13 @@ debug: - build-image: - isula-build ctr-img build -f Dockerfile.proto ${IMAGE_BUILDARGS} -o isulad:${IMAGE_NAME}:latest . - --tests: test-integration test-unit -+tests: test-base test-unit test-integration - --.PHONY: test-integration --test-integration: -- @echo "Integration test starting..." -- @./tests/test.sh -- @echo "Integration test done!" -+.PHONY: test-base -+test-base: -+ @echo "Base test starting..." -+ @./tests/test.sh base -+ @echo "Base test done!" - - .PHONY: test-unit - test-unit: -@@ -87,6 +87,12 @@ test-unit: - @./hack/unit_test.sh - @echo "Unit test done!" - -+.PHONY: test-integration -+test-integration: -+ @echo "Integration test starting..." -+ @./tests/test.sh integration -+ @echo "Integration test done!" -+ - .PHONY: proto - proto: - @echo "Generating protobuf..." -diff --git a/README.zh.md b/README.zh.md -index 4b53ba3..15301c0 100644 ---- a/README.zh.md -+++ b/README.zh.md -@@ -106,7 +106,7 @@ sudo rpm -ivh isula-build-*.rpm - 如果需要使用`systemd`进行管理isula-build,请参考以下步骤: - - ```sh --sudo install -p -m 640 ./isula-build.service /etc/systemd/system/isula-build. -+sudo install -p -m 640 ./isula-build.service /etc/systemd/system/isula-build.service - sudo systemctl enable isula-build - sudo systemctl start isula-build - ``` -diff --git a/tests/src/test_integration_set_new_root.sh b/tests/src/test_integration_set_new_root.sh -new file mode 100644 -index 0000000..85b724a ---- /dev/null -+++ b/tests/src/test_integration_set_new_root.sh -@@ -0,0 +1,60 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Weizheng Xing -+# Create: 2021-05-29 -+# Description: test set new run and data root in configuration.toml -+ -+run_root="/var/run/new-isula-build" -+data_root="/var/lib/new-isula-build" -+config_file="/etc/isula-build/configuration.toml" -+base_image="hub.oepkgs.net/openeuler/openeuler:21.03" -+ -+function clean() -+{ -+ isula-build ctr-img rm $base_image >/dev/null 2>&1 -+ rm -f $config_file -+ mv "$config_file".bak $config_file -+ systemctl stop isula-build -+ rm -rf $run_root $data_root -+} -+ -+# change to new data and run root -+function pre_test() -+{ -+ cp $config_file "$config_file".bak -+ sed -i "/run_root/d;/data_root/d" $config_file -+ echo "run_root = \"${run_root}\"" >> $config_file -+ echo "data_root = \"${data_root}\"" >> $config_file -+ -+ systemctl restart isula-build -+} -+ -+# check if new resources are downloaded in new root -+function do_test() -+{ -+ tree_node_befor=$(tree -L 3 $data_root | wc -l) -+ isula-build ctr-img pull $base_image >/dev/null 2>&1 -+ tree_node_after=$(tree -L 3 $data_root | wc -l) -+ -+ if [ $(($tree_node_after - $tree_node_befor)) -eq 8 ]; then -+ echo "PASS" -+ else -+ echo "Sets of run and data root are not effective" -+ clean -+ exit 1 -+ fi -+} -+ -+# clean -+pre_test -+do_test -+clean -diff --git a/tests/test.sh b/tests/test.sh -index 79fde8a..e04cc96 100755 ---- a/tests/test.sh -+++ b/tests/test.sh -@@ -2,8 +2,8 @@ - - top_dir=$(git rev-parse --show-toplevel) - --# normal test --function normal() { -+# base test -+function base() { - source "$top_dir"/tests/lib/common.sh - pre_check - start_isula_builder -@@ -33,15 +33,36 @@ function fuzz() { - exit $failed - } - -+# base test -+function integration() { -+ source "$top_dir"/tests/lib/common.sh -+ pre_check -+ systemctl restart isula-build -+ -+ while IFS= read -r testfile; do -+ printf "%-45s" "test $(basename "$testfile"): " -+ if ! bash "$testfile"; then -+ exit 1 -+ fi -+ done < <(find "$top_dir"/tests/src -maxdepth 1 -name "test_integration*" -type f -print) -+} -+ - # main function to chose which kind of test - function main() { - case "$1" in - fuzz) - fuzz "$2" - ;; -+ base) -+ base -+ ;; -+ integration) -+ integration -+ ;; - *) -- normal -- ;; -+ echo "Unknow test type." -+ exit 1 -+ ;; - esac - } - --- -1.8.3.1 - diff --git a/patch/0054-isula-build-cleancode-for-errors.Wrap-function.patch b/patch/0054-isula-build-cleancode-for-errors.Wrap-function.patch deleted file mode 100644 index 35f834a..0000000 --- a/patch/0054-isula-build-cleancode-for-errors.Wrap-function.patch +++ /dev/null @@ -1,86 +0,0 @@ -From 80422e04f262f925458e7cee6986edb0903cef71 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 15 Jun 2021 20:01:25 +0800 -Subject: [PATCH] isula-build:cleancode for errors.Wrap function - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/grpc_client.go | 2 +- - daemon/load.go | 2 +- - exporter/common.go | 2 +- - image/image.go | 6 +++--- - 4 files changed, 6 insertions(+), 6 deletions(-) - -diff --git a/cmd/cli/grpc_client.go b/cmd/cli/grpc_client.go -index 5f10fb0..cab5950 100644 ---- a/cmd/cli/grpc_client.go -+++ b/cmd/cli/grpc_client.go -@@ -82,7 +82,7 @@ func NewClient(ctx context.Context) (*GrpcClient, error) { - defer cancel() - connected, err := cli.HealthCheck(healthCtx) - if !connected || err != nil { -- return nil, errors.Wrapf(err, "Cannot connect to the isula-builder at %s. Is the isula-builder running?\nError", constant.DefaultGRPCAddress) -+ return nil, errors.Errorf( "Cannot connect to the isula-builder at %s. Is the isula-builder running?\nError: %v", constant.DefaultGRPCAddress, err) - } - - return cli, nil -diff --git a/daemon/load.go b/daemon/load.go -index f2d818f..2fb8e27 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -154,7 +154,7 @@ func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path strin - - topLevelImageManifest, err := tarfileSource.LoadTarManifest() - if err != nil || len(topLevelImageManifest) == 0 { -- return nil, errors.Wrapf(err, "failed to get the top level image manifest") -+ return nil, errors.Errorf("failed to get the top level image manifest: %v", err) - } - - var allRepoTags [][]string -diff --git a/exporter/common.go b/exporter/common.go -index bded6ec..cd976d2 100644 ---- a/exporter/common.go -+++ b/exporter/common.go -@@ -132,7 +132,7 @@ func export(e Exporter, exOpts ExportOptions) (reference.Canonical, digest.Diges - - destRef, srcRef := e.GetDestRef(exOpts.ExportID), e.GetSrcRef(exOpts.ExportID) - if destRef == nil || srcRef == nil { -- return nil, "", errors.Wrapf(err, "get dest or src reference by export ID %v failed", exOpts.ExportID) -+ return nil, "", errors.Errorf("get dest or src reference by export ID %v failed %v", exOpts.ExportID, err) - } - - if manifestBytes, err = cp.Image(exOpts.Ctx, policyContext, destRef, srcRef, cpOpts); err != nil { -diff --git a/image/image.go b/image/image.go -index 91ab720..e06d253 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -314,7 +314,7 @@ func createImageV2Image(ctx context.Context, fromImage types.Image, targetMIMETy - ManifestMIMEType: targetMIMEType, - }) - if err2 != nil { -- return nil, errors.Wrapf(err, "failed to convert image %q", imageName) -+ return nil, errors.Wrapf(err2, "failed to convert image %q", imageName) - } - fromImage = updatedImg - } -@@ -533,7 +533,7 @@ func ParseImagesToReference(store *store.Store, names []string) (types.ImageRefe - // For support export archive file, we need provide reference.Named field when names is the format of name[:tag] not the image ID - pRef, pErr := reference.Parse(name) - if pErr != nil { -- return nil, nil, errors.Wrapf(err, "error parse name %q", name) -+ return nil, nil, errors.Wrapf(pErr, "error parse name %q", name) - } - namedRef, isNamed := pRef.(reference.Named) - if !isNamed { -@@ -543,7 +543,7 @@ func ParseImagesToReference(store *store.Store, names []string) (types.ImageRefe - var nErr error - ref, nErr = is.Transport.NewStoreReference(store, namedRef, img2.ID) - if nErr != nil { -- return nil, nil, errors.Wrap(err, "error get reference from store") -+ return nil, nil, errors.Wrap(nErr, "error get reference from store") - } - } - break --- -1.8.3.1 - diff --git a/patch/0055-isula-build-change-isula-build-file-mode.patch b/patch/0055-isula-build-change-isula-build-file-mode.patch deleted file mode 100644 index 2164b67..0000000 --- a/patch/0055-isula-build-change-isula-build-file-mode.patch +++ /dev/null @@ -1,49 +0,0 @@ -From f22214ca3bcb452238d2390a06891cf6d446e8ac Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 26 Jul 2021 16:58:31 +0800 -Subject: [PATCH] isula-build: change isula-build file mode - -reason: since isula-build client file mode is too large(0551), -we decided to remove other's permission(0550) on it. -Beside, we change the public key(isula-build.pub) file -mode to 0400(from 0444), so only the owner of the public -key can read the key. -After this commit, if the non-root user want to use command -login, logout, build with args(http_proxy, https_proxy, etc...), -they need use sudo to temporarily obtain root permission. - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - Makefile | 2 +- - constant.go | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index 925968a..a9d4c93 100644 ---- a/Makefile -+++ b/Makefile -@@ -102,7 +102,7 @@ proto: - - .PHONY: install - install: -- install -D -m0551 bin/isula-build $(BINDIR) -+ install -D -m0550 bin/isula-build $(BINDIR) - install -D -m0550 bin/isula-builder $(BINDIR) - @( getent group isula > /dev/null ) || ( groupadd --system isula ) - @[ ! -d ${CONFIG_DIR}/${CONFIG_FILE} ] && install -dm0650 ${CONFIG_DIR} -diff --git a/constant.go b/constant.go -index 9926728..bfe399b 100644 ---- a/constant.go -+++ b/constant.go -@@ -50,7 +50,7 @@ const ( - // DefaultRootDirMode is the default root dir mode - DefaultRootDirMode = 0700 - // DefaultReadOnlyFileMode is the default root read only file mode -- DefaultReadOnlyFileMode = 0444 -+ DefaultReadOnlyFileMode = 0400 - // DefaultUmask is the working umask of isula-builder as a process, not for users - DefaultUmask = 0022 - // CliLogBufferLen is log channel buffer size --- -1.8.3.1 - diff --git a/patch/0056-isula-build-update-documents-about-file-mode.patch b/patch/0056-isula-build-update-documents-about-file-mode.patch deleted file mode 100644 index 1ab181f..0000000 --- a/patch/0056-isula-build-update-documents-about-file-mode.patch +++ /dev/null @@ -1,58 +0,0 @@ -From e024b5b7ddabca7f7ff0cebd05366146df9832ab Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 26 Jul 2021 19:04:49 +0800 -Subject: [PATCH] isula-build: update documents about file mode - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - doc/manual_en.md | 4 ++-- - doc/manual_zh.md | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/doc/manual_en.md b/doc/manual_en.md -index c23b306..3064c17 100644 ---- a/doc/manual_en.md -+++ b/doc/manual_en.md -@@ -1070,7 +1070,7 @@ The isula-build component processes communicate with each other through the Unix - - | **File Path** | **File/Folder Permission** | **Description** | - | ------------------------------------------- | ------------------- | ------------------------------------------------------------ | --| /usr/bin/isula-build | 551 | Binary file of the command line tool. | -+| /usr/bin/isula-build | 550 | Binary file of the command line tool. | - | /usr/bin/isula-builder | 550 | Binary file of the isula-builder process on the server. | - | /usr/lib/systemd/system/isula-build.service | 640 | systemd configuration file, which is used to manage the isula-build service. | - | /usr/isula-build | 650 | Root directory of the isula-builder configuration file. | -@@ -1078,7 +1078,7 @@ The isula-build component processes communicate with each other through the Unix - | /etc/isula-build/policy.json | 600 | Syntax file of the signature verification policy file. | - | /etc/isula-build/registries.toml | 600 | Configuration file of each image repository, including the available image repository list and image repository blacklist. | - | /etc/isula-build/storage.toml | 600 | Configuration file for local persistent storage, including the configuration of the used storage driver. | --| /etc/isula-build/isula-build.pub | 444 | Asymmetric encryption public key file. | -+| /etc/isula-build/isula-build.pub | 400 | Asymmetric encryption public key file. | - | /var/run/isula_build.sock | 660 | Local socket of isula-builder. | - | /var/lib/isula-build | 700 | Local persistency directory. | - | /var/run/isula-build | 700 | Local runtime directory. | -diff --git a/doc/manual_zh.md b/doc/manual_zh.md -index c0234f1..8104305 100644 ---- a/doc/manual_zh.md -+++ b/doc/manual_zh.md -@@ -1060,7 +1060,7 @@ isula-build两个组件进程之间通过unix socket套接字文件进行通信 - - | **文件路径** | **文件/文件夹权限** | **说明** | - | ------------------------------------------- | ------------------- | ------------------------------------------------------------ | --| /usr/bin/isula-build | 551 | 命令行工具二进制文件。 | -+| /usr/bin/isula-build | 550 | 命令行工具二进制文件。 | - | /usr/bin/isula-builder | 550 | 服务端isula-builder进程二进制文件。 | - | /usr/lib/systemd/system/isula-build.service | 640 | systemd配置文件,用于管理isula-build服务。 | - | /etc/isula-build | 650 | isula-builder 配置文件根目录 | -@@ -1068,7 +1068,7 @@ isula-build两个组件进程之间通过unix socket套接字文件进行通信 - | /etc/isula-build/policy.json | 600 | 签名验证策略文件的语法文件。 | - | /etc/isula-build/registries.toml | 600 | 针对各个镜像仓库的配置文件,含可用的镜像仓库列表、镜像仓库黑名单。 | - | /etc/isula-build/storage.toml | 600 | 本地持久化存储的配置文件,包含所使用的存储驱动的配置。 | --| /etc/isula-build/isula-build.pub | 444 | 非对称加密公钥文件 | -+| /etc/isula-build/isula-build.pub | 400 | 非对称加密公钥文件 | - | /var/run/isula_build.sock | 660 | 服务端isula-builder的本地套接字。 | - | /var/lib/isula-build | 700 | 本地持久化目录。 | - | /var/run/isula-build | 700 | 本地运行时目录。 | --- -1.8.3.1 - diff --git a/patch/0057-bugfix-pidofbuilder-do-not-set-when-running-a-new-ba.patch b/patch/0057-bugfix-pidofbuilder-do-not-set-when-running-a-new-ba.patch deleted file mode 100644 index 63f03cd..0000000 --- a/patch/0057-bugfix-pidofbuilder-do-not-set-when-running-a-new-ba.patch +++ /dev/null @@ -1,27 +0,0 @@ -From c1061acaafa4120075fe83ca8075e593403cb6f8 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sun, 22 Aug 2021 12:21:21 +0800 -Subject: [PATCH 1/4] bugfix: pidofbuilder do not set when running a new bash - script in new child process - ---- - tests/lib/common.sh | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/tests/lib/common.sh b/tests/lib/common.sh -index f393ee1..5cd66ff 100755 ---- a/tests/lib/common.sh -+++ b/tests/lib/common.sh -@@ -13,6 +13,9 @@ - # Create: 2020-03-01 - # Description: common functions for tests - -+# cross process environment for killing isula-builder -+declare -x pidofbuilder -+ - # check if legacy builder exists - function pre_check() { - if pgrep isula-builder > /dev/null 2>&1; then --- -1.8.3.1 - diff --git a/patch/0058-shellcheck-fix-of-common.sh.patch b/patch/0058-shellcheck-fix-of-common.sh.patch deleted file mode 100644 index 32953a1..0000000 --- a/patch/0058-shellcheck-fix-of-common.sh.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 29ad6f4d4de67e143ba0ab7bba1ca3668cda9797 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Tue, 24 Aug 2021 19:23:55 +0800 -Subject: [PATCH 2/4] shellcheck fix of common.sh - ---- - tests/lib/common.sh | 28 +++++++++++++--------------- - 1 file changed, 13 insertions(+), 15 deletions(-) - -diff --git a/tests/lib/common.sh b/tests/lib/common.sh -index f393ee1..2099eac 100755 ---- a/tests/lib/common.sh -+++ b/tests/lib/common.sh -@@ -123,8 +123,7 @@ function test_build_with_oci_archive_output() { - - # test build image with docker-daemon output - function test_build_with_docker_daemon_output() { -- systemctl status docker > /dev/null 2>&1 -- if [ $? -ne 0 ]; then -+ if ! systemctl status docker > /dev/null 2>&1; then - return 0 - fi - -@@ -146,9 +145,8 @@ function test_build_with_docker_daemon_output() { - } - - # test build image with isulad output --function test_build_with_isulad_output() { -- systemctl status isulad > /dev/null 2>&1 -- if [ $? -ne 0 ]; then -+function test_build_with_isulad_output() { -+ if ! systemctl status isulad > /dev/null 2>&1; then - return 0 - fi - -@@ -172,41 +170,41 @@ function test_build_with_isulad_output() { - # test isula build base command - function test_isula_build_base_command() { - show_and_run_command "Build docker format image:" \ -- " isula-build ctr-img build --tag "$1"-docker:latest --output=docker-archive:/tmp/"$1"-docker.tar:"$1"-docker:latest "$2"" -+ " isula-build ctr-img build --tag $1-docker:latest --output=docker-archive:/tmp/$1-docker.tar:$1-docker:latest $2" - - show_and_run_command "Build oci format image:" \ -- "isula-build ctr-img build --tag "$1"-oci:latest --output=oci-archive:/tmp/"$1"-oci.tar:"$1"-oci:latest "$2"" -+ "isula-build ctr-img build --tag $1-oci:latest --output=oci-archive:/tmp/$1-oci.tar:$1-oci:latest $2" - - show_and_run_command "List all images:" \ - "isula-build ctr-img images" - - show_and_run_command "List docker format image:" \ -- "isula-build ctr-img images "$1"-docker:latest" -+ "isula-build ctr-img images $1-docker:latest" - - show_and_run_command "List oci format image:" \ -- "isula-build ctr-img images "$1"-oci:latest" -+ "isula-build ctr-img images $1-oci:latest" - - rm -f /tmp/"$1"-docker.tar /tmp/"$1"-oci.tar - - show_and_run_command "Save image with docker format:" \ -- "isula-build ctr-img save -f docker "$1"-docker:latest -o /tmp/"$1"-docker.tar" -+ "isula-build ctr-img save -f docker $1-docker:latest -o /tmp/$1-docker.tar" - - show_and_run_command "Save image with oci format:" \ -- "isula-build ctr-img save -f oci "$1"-oci:latest -o /tmp/"$1"-oci.tar" -+ "isula-build ctr-img save -f oci $1-oci:latest -o /tmp/$1-oci.tar" - - show_and_run_command "Load docker format images:" \ -- "isula-build ctr-img load -i /tmp/"$1"-docker.tar" -+ "isula-build ctr-img load -i /tmp/$1-docker.tar" - - show_and_run_command "Load oci format images:" \ -- "isula-build ctr-img load -i /tmp/"$1"-oci.tar" -+ "isula-build ctr-img load -i /tmp/$1-oci.tar" - - show_and_run_command "Save multipile images with docker format:" \ -- "isula-build ctr-img save -f docker "$1"-docker:latest "$1"-oci:latest -o /tmp/"$1"-all.tar" -+ "isula-build ctr-img save -f docker $1-docker:latest $1-oci:latest -o /tmp/$1-all.tar" - - rm -f /tmp/"$1"-docker.tar /tmp/"$1"-oci.tar /tmp/"$1"-all.tar - - show_and_run_command "Remove images:" \ -- "isula-build ctr-img rm "$1"-docker:latest "$1"-oci:latest" -+ "isula-build ctr-img rm $1-docker:latest $1-oci:latest" - } - - function show_and_run_command() { --- -1.8.3.1 - diff --git a/patch/0059-bugfix-fix-save-multiple-tags-single-image-failed.patch b/patch/0059-bugfix-fix-save-multiple-tags-single-image-failed.patch deleted file mode 100644 index ee957ae..0000000 --- a/patch/0059-bugfix-fix-save-multiple-tags-single-image-failed.patch +++ /dev/null @@ -1,309 +0,0 @@ -From caf11183fa91a301402a00a302e81894861f9957 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sun, 22 Aug 2021 12:31:04 +0800 -Subject: [PATCH 3/4] bugfix: fix save multiple tags single image failed - ---- - daemon/save.go | 145 ++++++++++++++++++++++++------------- - exporter/docker/archive/archive.go | 23 +----- - image/image.go | 18 ----- - 3 files changed, 95 insertions(+), 91 deletions(-) - -diff --git a/daemon/save.go b/daemon/save.go -index de644c3..7ad1285 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -17,6 +17,7 @@ import ( - "context" - "os" - -+ "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -33,26 +34,30 @@ import ( - ) - - type saveOptions struct { -- sysCtx *types.SystemContext -- logger *logger.Logger -- localStore *store.Store -- logEntry *logrus.Entry -- saveID string -- outputPath string -- oriImgList []string -- format string -+ sysCtx *types.SystemContext -+ localStore *store.Store -+ saveID string -+ format string -+ oriImgList []string -+ finalImageOrdered []string -+ finalImageSet map[string][]reference.NamedTagged -+ outputPath string -+ logger *logger.Logger -+ logEntry *logrus.Entry - } - - func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { - return saveOptions{ -- sysCtx: image.GetSystemContext(), -- logger: logger.NewCliLogger(constant.CliLogBufferLen), -- localStore: b.daemon.localStore, -- saveID: req.GetSaveID(), -- outputPath: req.GetPath(), -- oriImgList: req.GetImages(), -- format: req.GetFormat(), -- logEntry: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID(), "Format": req.GetFormat()}), -+ sysCtx: image.GetSystemContext(), -+ localStore: b.daemon.localStore, -+ saveID: req.GetSaveID(), -+ format: req.GetFormat(), -+ oriImgList: req.GetImages(), -+ finalImageOrdered: make([]string, 0), -+ finalImageSet: make(map[string][]reference.NamedTagged), -+ outputPath: req.GetPath(), -+ logger: logger.NewCliLogger(constant.CliLogBufferLen), -+ logEntry: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID(), "Format": req.GetFormat()}), - } - } - -@@ -63,28 +68,14 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - "Format": req.GetFormat(), - }).Info("SaveRequest received") - -- var ( -- ok bool -- err error -- ) -- -+ var err error - opts := b.getSaveOptions(req) - -- switch opts.format { -- case constant.DockerTransport: -- opts.format = constant.DockerArchiveTransport -- case constant.OCITransport: -- opts.format = constant.OCIArchiveTransport -- default: -- return errors.New("wrong image format provided") -+ if err = checkFormatAndExpandTag(&opts); err != nil { -+ return err - } -- -- for i, imageName := range opts.oriImgList { -- nameWithTag, cErr := image.CheckAndAddDefaultTag(imageName, opts.localStore) -- if cErr != nil { -- return cErr -- } -- opts.oriImgList[i] = nameWithTag -+ if err = filterImageName(&opts); err != nil { -+ return err - } - - defer func() { -@@ -98,26 +89,18 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - ctx := context.WithValue(stream.Context(), util.LogFieldKey(util.LogKeySessionID), opts.saveID) - eg, _ := errgroup.WithContext(ctx) - -- eg.Go(exportHandler(ctx, opts)) -+ eg.Go(exportHandler(ctx, &opts)) - eg.Go(messageHandler(stream, opts.logger)) -- errC := make(chan error, 1) - -- errC <- eg.Wait() -- defer close(errC) -- -- err, ok = <-errC -- if !ok { -- opts.logEntry.Info("Channel errC closed") -- return nil -- } -- if err != nil { -+ if err = eg.Wait(); err != nil { -+ opts.logEntry.Warnf("Save stream closed with: %v", err) - return err - } - - return nil - } - --func exportHandler(ctx context.Context, opts saveOptions) func() error { -+func exportHandler(ctx context.Context, opts *saveOptions) func() error { - return func() error { - defer func() { - opts.logger.CloseContent() -@@ -129,18 +112,22 @@ func exportHandler(ctx context.Context, opts saveOptions) func() error { - } - }() - -- for _, imageID := range opts.oriImgList { -+ for _, imageID := range opts.finalImageOrdered { -+ copyCtx := *opts.sysCtx -+ // It's ok for DockerArchiveAdditionalTags == nil, as a result, no additional tags will be appended to the final archive file. -+ copyCtx.DockerArchiveAdditionalTags = opts.finalImageSet[imageID] -+ - exOpts := exporter.ExportOptions{ - Ctx: ctx, -- SystemContext: opts.sysCtx, -+ SystemContext: ©Ctx, - ExportID: opts.saveID, - ReportWriter: opts.logger, - } - - if err := exporter.Export(imageID, exporter.FormatTransport(opts.format, opts.outputPath), - exOpts, opts.localStore); err != nil { -- opts.logEntry.Errorf("Save Image %s output to %s failed with: %v", imageID, opts.format, err) -- return errors.Wrapf(err, "save Image %s output to %s failed", imageID, opts.format) -+ opts.logEntry.Errorf("Save image %q in format %q failed: %v", imageID, opts.format, err) -+ return errors.Wrapf(err, "save image %q in format %q failed", imageID, opts.format) - } - } - -@@ -164,3 +151,59 @@ func messageHandler(stream pb.Control_SaveServer, cliLogger *logger.Logger) func - return nil - } - } -+ -+func checkFormatAndExpandTag(opts *saveOptions) error { -+ switch opts.format { -+ case constant.DockerTransport: -+ opts.format = constant.DockerArchiveTransport -+ case constant.OCITransport: -+ opts.format = constant.OCIArchiveTransport -+ default: -+ return errors.New("wrong image format provided") -+ } -+ -+ for i, imageName := range opts.oriImgList { -+ nameWithTag, err := image.CheckAndAddDefaultTag(imageName, opts.localStore) -+ if err != nil { -+ return errors.Wrapf(err, "check format and expand tag failed with image name %q", imageName) -+ } -+ opts.oriImgList[i] = nameWithTag -+ } -+ -+ return nil -+} -+ -+func filterImageName(opts *saveOptions) error { -+ if opts.format == constant.OCIArchiveTransport { -+ opts.finalImageOrdered = opts.oriImgList -+ return nil -+ } -+ -+ visitedImage := make(map[string]bool) -+ for _, imageName := range opts.oriImgList { -+ if _, exists := visitedImage[imageName]; exists { -+ continue -+ } -+ visitedImage[imageName] = true -+ -+ _, img, err := image.FindImageLocally(opts.localStore, imageName) -+ if err != nil { -+ return errors.Wrapf(err, "filter image name failed when finding image name %q", imageName) -+ } -+ if _, ok := opts.finalImageSet[img.ID]; !ok { -+ opts.finalImageOrdered = append(opts.finalImageOrdered, img.ID) -+ } -+ -+ ref, err := reference.Parse(imageName) -+ if err != nil { -+ return errors.Wrapf(err, "filter image name failed when parsing name %q", imageName) -+ } -+ tagged, withTag := ref.(reference.NamedTagged) -+ if !withTag { -+ continue -+ } -+ opts.finalImageSet[img.ID] = append(opts.finalImageSet[img.ID], tagged) -+ } -+ -+ return nil -+} -diff --git a/exporter/docker/archive/archive.go b/exporter/docker/archive/archive.go -index 04654cf..cc6b872 100644 ---- a/exporter/docker/archive/archive.go -+++ b/exporter/docker/archive/archive.go -@@ -21,9 +21,7 @@ import ( - "github.com/containers/image/v5/docker/archive" - "github.com/containers/image/v5/transports/alltransports" - "github.com/containers/image/v5/types" -- "github.com/docker/distribution/reference" - "github.com/pkg/errors" -- "github.com/sirupsen/logrus" - - constant "isula.org/isula-build" - "isula.org/isula-build/exporter" -@@ -91,32 +89,13 @@ func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec - DockerArchiveExporter.InitArchiveWriter(opts.ExportID, archWriter) - } - -- // There is a slightly difference between FindImageLocally and ParseImagesToReference to get a reference. -- // FindImageLocally or FindImage, both result a reference with a nil named field of *storageReference. -- // ParseImagesToReference returns a reference with non-nil named field of *storageReference that used to set destReference, if names is the format of name[:tag] with and without repository domain. -- -- // If using srcReferenceForDest to replace srcReference, When src is the format of name[:tag] without a registry domain name, -- // in which time, cp.Image() will be called and new image source will call imageMatchesRepo() to check If image matches repository or not. -- // ParseNormalizedNamed will finally called to add default docker.io/library/ prefix to name[:tag], return false result of the checking. -- // As a result, we will get error of no image matching reference found. - srcReference, _, err = image.FindImageLocally(localStore, src) - if err != nil { - return errors.Wrapf(err, "find src image: %q failed with transport %q", src, d.Name()) - } - -- imageReferenceForDest, _, err := image.ParseImagesToReference(localStore, []string{src}) -- if err != nil { -- return errors.Wrapf(err, "parse image: %q to reference failed with transport %q", src, d.Name()) -- } - archiveWriter := DockerArchiveExporter.GetArchiveWriter(opts.ExportID) -- nameAndTag, ok := imageReferenceForDest.DockerReference().(reference.NamedTagged) -- // src is the format of ImageID, ok is false -- if ok { -- destReference, err = archiveWriter.NewReference(nameAndTag) -- } else { -- logrus.Infof("Transform image reference failed, use nil instead") -- destReference, err = archiveWriter.NewReference(nil) -- } -+ destReference, err = archiveWriter.NewReference(nil) - if err != nil { - return errors.Wrapf(err, "parse dest spec: %q failed", destSpec) - } -diff --git a/image/image.go b/image/image.go -index e06d253..5ae7245 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -504,8 +504,6 @@ func FindImageLocally(store *store.Store, image string) (types.ImageReference, * - } - - // ParseImagesToReference get the image reference in store --// When names is the format of ImageID (sha256), return ref with nil named field of *storageReference --// When names is the format of name[:tag] with and without repository domain, such as registry.example.com/name:tag, name:tag, return corresponding ref with non-nil named field of *storageReference with and without domain - func ParseImagesToReference(store *store.Store, names []string) (types.ImageReference, *storage.Image, error) { - var ( - ref types.ImageReference -@@ -529,22 +527,6 @@ func ParseImagesToReference(store *store.Store, names []string) (types.ImageRefe - continue - } - img = img2 -- -- // For support export archive file, we need provide reference.Named field when names is the format of name[:tag] not the image ID -- pRef, pErr := reference.Parse(name) -- if pErr != nil { -- return nil, nil, errors.Wrapf(pErr, "error parse name %q", name) -- } -- namedRef, isNamed := pRef.(reference.Named) -- if !isNamed { -- return nil, nil, errors.Errorf("reference %s has no name", pRef.String()) -- } -- -- var nErr error -- ref, nErr = is.Transport.NewStoreReference(store, namedRef, img2.ID) -- if nErr != nil { -- return nil, nil, errors.Wrap(nErr, "error get reference from store") -- } - } - break - } --- -1.8.3.1 - diff --git a/patch/0060-add-integration-test-for-saving-one-image-with-multi.patch b/patch/0060-add-integration-test-for-saving-one-image-with-multi.patch deleted file mode 100644 index f7fb0c0..0000000 --- a/patch/0060-add-integration-test-for-saving-one-image-with-multi.patch +++ /dev/null @@ -1,281 +0,0 @@ -From 87c8603713cdcbd0f2abad29c73d3909b3f4c417 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Tue, 24 Aug 2021 17:14:47 +0800 -Subject: [PATCH 4/4] add integration test for saving one image with multiple - tags - ---- - Makefile | 1 + - tests/lib/common.sh | 8 +++ - ...gration_test_save_single_image_multiple_tags.sh | 58 ++++++++++++++++++++ - tests/src/integration_test_set_new_root.sh | 62 ++++++++++++++++++++++ - tests/src/test_integration_set_new_root.sh | 60 --------------------- - tests/test.sh | 9 ++-- - 6 files changed, 134 insertions(+), 64 deletions(-) - create mode 100644 tests/src/integration_test_save_single_image_multiple_tags.sh - create mode 100644 tests/src/integration_test_set_new_root.sh - delete mode 100644 tests/src/test_integration_set_new_root.sh - -diff --git a/Makefile b/Makefile -index a9d4c93..1d87625 100644 ---- a/Makefile -+++ b/Makefile -@@ -91,6 +91,7 @@ test-unit: - .PHONY: test-integration - test-integration: - @echo "Integration test starting..." -+ @./tests/test.sh base - @./tests/test.sh integration - @echo "Integration test done!" - -diff --git a/tests/lib/common.sh b/tests/lib/common.sh -index f393ee1..5e4c208 100755 ---- a/tests/lib/common.sh -+++ b/tests/lib/common.sh -@@ -219,3 +219,11 @@ function show_and_run_command() { - fi - echo "PASS" - } -+ -+function run_with_debug() { -+ if [ "${DEBUG:-0}" -eq 1 ]; then -+ $1 -+ else -+ $1 > /dev/null 2>&1 -+ fi -+} -\ No newline at end of file -diff --git a/tests/src/integration_test_save_single_image_multiple_tags.sh b/tests/src/integration_test_save_single_image_multiple_tags.sh -new file mode 100644 -index 0000000..a25786a ---- /dev/null -+++ b/tests/src/integration_test_save_single_image_multiple_tags.sh -@@ -0,0 +1,58 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Weizheng Xing -+# Create: 2021-08-24 -+# Description: check if saving single image with multiple tags has been corrected -+ -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "$top_dir"/tests/lib/common.sh -+ -+image_name=add-chown-basic -+context_dir="$top_dir"/tests/data/add-chown-basic -+ -+function clean() -+{ -+ systemctl stop isula-build -+ rm -rf "$temp_tar" -+} -+ -+function pre_test() -+{ -+ temp_tar=$(mktemp -u --suffix=.tar) -+ systemctl restart isula-build -+} -+ -+function do_test() -+{ -+ if ! run_with_debug "isula-build ctr-img build -t $image_name:latest $context_dir"; then -+ echo "FAIL" -+ fi -+ -+ if ! run_with_debug "isula-build ctr-img tag $image_name:latest $image_name:latest-child"; then -+ echo "FAIL" -+ fi -+ -+ if ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar"; then -+ echo "FAIL" -+ fi -+ -+ if ! run_with_debug "isula-build ctr-img rm $image_name:latest $image_name:latest-child"; then -+ echo "FAIL" -+ fi -+ -+ echo "PASS" -+} -+ -+pre_test -+do_test -+clean -diff --git a/tests/src/integration_test_set_new_root.sh b/tests/src/integration_test_set_new_root.sh -new file mode 100644 -index 0000000..7238240 ---- /dev/null -+++ b/tests/src/integration_test_set_new_root.sh -@@ -0,0 +1,62 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Weizheng Xing -+# Create: 2021-05-29 -+# Description: test set new run and data root in configuration.toml -+ -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "$top_dir"/tests/lib/common.sh -+ -+run_root="/var/run/new-isula-build" -+data_root="/var/lib/new-isula-build" -+config_file="/etc/isula-build/configuration.toml" -+base_image="hub.oepkgs.net/openeuler/openeuler:21.03" -+ -+function clean() -+{ -+ rm -f $config_file -+ mv "$config_file".bak $config_file -+ systemctl stop isula-build -+ rm -rf $run_root $data_root -+} -+ -+# change to new data and run root -+function pre_test() -+{ -+ cp $config_file "$config_file".bak -+ sed -i "/run_root/d;/data_root/d" $config_file -+ echo "run_root = \"${run_root}\"" >> $config_file -+ echo "data_root = \"${data_root}\"" >> $config_file -+ -+ systemctl restart isula-build -+} -+ -+# check if new resources are downloaded in new root -+function do_test() -+{ -+ tree_node_befor=$(tree -L 3 $data_root | wc -l) -+ run_with_debug "isula-build ctr-img pull $base_image" -+ tree_node_after=$(tree -L 3 $data_root | wc -l) -+ -+ if [ $((tree_node_after - tree_node_befor)) -eq 8 ] && run_with_debug "isula-build ctr-img rm $base_image"; then -+ echo "PASS" -+ else -+ echo "Sets of run and data root are not effective" -+ clean -+ exit 1 -+ fi -+} -+ -+pre_test -+do_test -+clean -diff --git a/tests/src/test_integration_set_new_root.sh b/tests/src/test_integration_set_new_root.sh -deleted file mode 100644 -index 85b724a..0000000 ---- a/tests/src/test_integration_set_new_root.sh -+++ /dev/null -@@ -1,60 +0,0 @@ --#!/bin/bash -- --# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. --# isula-build licensed under the Mulan PSL v2. --# You can use this software according to the terms and conditions of the Mulan PSL v2. --# You may obtain a copy of Mulan PSL v2 at: --# http://license.coscl.org.cn/MulanPSL2 --# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR --# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR --# PURPOSE. --# See the Mulan PSL v2 for more details. --# Author: Weizheng Xing --# Create: 2021-05-29 --# Description: test set new run and data root in configuration.toml -- --run_root="/var/run/new-isula-build" --data_root="/var/lib/new-isula-build" --config_file="/etc/isula-build/configuration.toml" --base_image="hub.oepkgs.net/openeuler/openeuler:21.03" -- --function clean() --{ -- isula-build ctr-img rm $base_image >/dev/null 2>&1 -- rm -f $config_file -- mv "$config_file".bak $config_file -- systemctl stop isula-build -- rm -rf $run_root $data_root --} -- --# change to new data and run root --function pre_test() --{ -- cp $config_file "$config_file".bak -- sed -i "/run_root/d;/data_root/d" $config_file -- echo "run_root = \"${run_root}\"" >> $config_file -- echo "data_root = \"${data_root}\"" >> $config_file -- -- systemctl restart isula-build --} -- --# check if new resources are downloaded in new root --function do_test() --{ -- tree_node_befor=$(tree -L 3 $data_root | wc -l) -- isula-build ctr-img pull $base_image >/dev/null 2>&1 -- tree_node_after=$(tree -L 3 $data_root | wc -l) -- -- if [ $(($tree_node_after - $tree_node_befor)) -eq 8 ]; then -- echo "PASS" -- else -- echo "Sets of run and data root are not effective" -- clean -- exit 1 -- fi --} -- --# clean --pre_test --do_test --clean -diff --git a/tests/test.sh b/tests/test.sh -index e04cc96..01f0f31 100755 ---- a/tests/test.sh -+++ b/tests/test.sh -@@ -33,18 +33,17 @@ function fuzz() { - exit $failed - } - --# base test -+# integration test - function integration() { - source "$top_dir"/tests/lib/common.sh -- pre_check - systemctl restart isula-build - - while IFS= read -r testfile; do -- printf "%-45s" "test $(basename "$testfile"): " -+ printf "%-65s" "test $(basename "$testfile"): " - if ! bash "$testfile"; then - exit 1 - fi -- done < <(find "$top_dir"/tests/src -maxdepth 1 -name "test_integration*" -type f -print) -+ done < <(find "$top_dir"/tests/src -maxdepth 1 -name "integration_test*" -type f -print) - } - - # main function to chose which kind of test -@@ -67,4 +66,6 @@ function main() { - } - - export "ISULABUILD_CLI_EXPERIMENTAL"="enabled" -+export DEBUG=0 -+ - main "$@" --- -1.8.3.1 - diff --git a/patch/0061-fix-save-single-image-error-when-id-first-with-its-n.patch b/patch/0061-fix-save-single-image-error-when-id-first-with-its-n.patch deleted file mode 100644 index 381d87e..0000000 --- a/patch/0061-fix-save-single-image-error-when-id-first-with-its-n.patch +++ /dev/null @@ -1,223 +0,0 @@ -From b7a8bfbf90d920662e0bf8119c2640ec7a6379ca Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Tue, 31 Aug 2021 22:42:18 +0800 -Subject: [PATCH] fix save single image error when id first with its name at - last - ---- - Makefile | 4 +- - daemon/save.go | 27 +++++++++---- - tests/lib/common.sh | 22 ++++++++-- - ...on_test_save_single_image_multiple_tags.sh | 40 ++++++++++++++----- - tests/src/integration_test_set_new_root.sh | 2 + - 5 files changed, 72 insertions(+), 23 deletions(-) - -diff --git a/Makefile b/Makefile -index 1d87625..d5b1c53 100644 ---- a/Makefile -+++ b/Makefile -@@ -74,7 +74,7 @@ debug: - build-image: - isula-build ctr-img build -f Dockerfile.proto ${IMAGE_BUILDARGS} -o isulad:${IMAGE_NAME}:latest . - --tests: test-base test-unit test-integration -+tests: test-unit test-integration - - .PHONY: test-base - test-base: -@@ -89,7 +89,7 @@ test-unit: - @echo "Unit test done!" - - .PHONY: test-integration --test-integration: -+test-integration: debug install - @echo "Integration test starting..." - @./tests/test.sh base - @./tests/test.sh integration -diff --git a/daemon/save.go b/daemon/save.go -index 7ad1285..8ba9dd1 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -33,6 +33,11 @@ import ( - "isula.org/isula-build/util" - ) - -+type savedImage struct { -+ exist bool -+ tags []reference.NamedTagged -+} -+ - type saveOptions struct { - sysCtx *types.SystemContext - localStore *store.Store -@@ -40,7 +45,7 @@ type saveOptions struct { - format string - oriImgList []string - finalImageOrdered []string -- finalImageSet map[string][]reference.NamedTagged -+ finalImageSet map[string]*savedImage - outputPath string - logger *logger.Logger - logEntry *logrus.Entry -@@ -54,7 +59,7 @@ func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { - format: req.GetFormat(), - oriImgList: req.GetImages(), - finalImageOrdered: make([]string, 0), -- finalImageSet: make(map[string][]reference.NamedTagged), -+ finalImageSet: make(map[string]*savedImage), - outputPath: req.GetPath(), - logger: logger.NewCliLogger(constant.CliLogBufferLen), - logEntry: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID(), "Format": req.GetFormat()}), -@@ -114,8 +119,10 @@ func exportHandler(ctx context.Context, opts *saveOptions) func() error { - - for _, imageID := range opts.finalImageOrdered { - copyCtx := *opts.sysCtx -- // It's ok for DockerArchiveAdditionalTags == nil, as a result, no additional tags will be appended to the final archive file. -- copyCtx.DockerArchiveAdditionalTags = opts.finalImageSet[imageID] -+ if opts.format == constant.DockerArchiveTransport { -+ // It's ok for DockerArchiveAdditionalTags == nil, as a result, no additional tags will be appended to the final archive file. -+ copyCtx.DockerArchiveAdditionalTags = opts.finalImageSet[imageID].tags -+ } - - exOpts := exporter.ExportOptions{ - Ctx: ctx, -@@ -190,7 +197,11 @@ func filterImageName(opts *saveOptions) error { - if err != nil { - return errors.Wrapf(err, "filter image name failed when finding image name %q", imageName) - } -- if _, ok := opts.finalImageSet[img.ID]; !ok { -+ -+ finalImage, ok := opts.finalImageSet[img.ID] -+ if !ok { -+ finalImage = &savedImage{exist: true} -+ finalImage.tags = []reference.NamedTagged{} - opts.finalImageOrdered = append(opts.finalImageOrdered, img.ID) - } - -@@ -199,10 +210,10 @@ func filterImageName(opts *saveOptions) error { - return errors.Wrapf(err, "filter image name failed when parsing name %q", imageName) - } - tagged, withTag := ref.(reference.NamedTagged) -- if !withTag { -- continue -+ if withTag { -+ finalImage.tags = append(finalImage.tags, tagged) - } -- opts.finalImageSet[img.ID] = append(opts.finalImageSet[img.ID], tagged) -+ opts.finalImageSet[img.ID] = finalImage - } - - return nil -diff --git a/tests/lib/common.sh b/tests/lib/common.sh -index 6a207da..4dd34aa 100755 ---- a/tests/lib/common.sh -+++ b/tests/lib/common.sh -@@ -222,9 +222,23 @@ function show_and_run_command() { - } - - function run_with_debug() { -- if [ "${DEBUG:-0}" -eq 1 ]; then -- $1 -- else -- $1 > /dev/null 2>&1 -+ function fail_and_exit(){ -+ echo "FAIL" -+ echo "Run \"journalctl -xefu isula-build\" to get the log." -+ systemctl stop isula-build -+ exit 1 -+ } -+ -+ if [ "${DEBUG:-0}" -eq 0 ]; then -+ if ! $1 > /dev/null 2>&1; then -+ fail_and_exit -+ fi -+ return -+ fi -+ echo "$1" -+ if ! $1; then -+ fail_and_exit - fi -+ echo "------------command-delimiter-----------" -+ echo " " - } -\ No newline at end of file -diff --git a/tests/src/integration_test_save_single_image_multiple_tags.sh b/tests/src/integration_test_save_single_image_multiple_tags.sh -index a25786a..1eaeb8d 100644 ---- a/tests/src/integration_test_save_single_image_multiple_tags.sh -+++ b/tests/src/integration_test_save_single_image_multiple_tags.sh -@@ -22,6 +22,7 @@ context_dir="$top_dir"/tests/data/add-chown-basic - - function clean() - { -+ isula-build ctr-img rm -p > /dev/null 2>&1 - systemctl stop isula-build - rm -rf "$temp_tar" - } -@@ -34,21 +35,42 @@ function pre_test() - - function do_test() - { -- if ! run_with_debug "isula-build ctr-img build -t $image_name:latest $context_dir"; then -+ # get image id -+ if ! image_id1=$(isula-build ctr-img build -t $image_name:latest "$context_dir"|grep "Build success with image id: "|cut -d ":" -f 2); then - echo "FAIL" - fi -- -- if ! run_with_debug "isula-build ctr-img tag $image_name:latest $image_name:latest-child"; then -+ if ! image_id2=$(isula-build ctr-img build -t $image_name:latest2 "$context_dir"|grep "Build success with image id: "|cut -d ":" -f 2); then - echo "FAIL" - fi - -- if ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar"; then -- echo "FAIL" -- fi -+ ! run_with_debug "isula-build ctr-img tag $image_name:latest $image_name:latest-child" - -- if ! run_with_debug "isula-build ctr-img rm $image_name:latest $image_name:latest-child"; then -- echo "FAIL" -- fi -+ # save with id + name -+ ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_name:latest-child -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ # save with name + id -+ ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest-child $image_id1 -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ # save with name + name -+ ! run_with_debug "isula-build ctr-img save -f docker $image_name:latest $image_name:latest-child -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ # save with different images id1 + id2 -+ ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_id2 -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ # save with different images "without latest tag" + id2 -+ ! run_with_debug "isula-build ctr-img save -f docker $image_name $image_id2 -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ # save with id1 + id2 + name -+ ! run_with_debug "isula-build ctr-img save -f docker $image_id1 $image_id2 $image_name:latest2 -o $temp_tar" -+ rm -rf "$temp_tar" -+ -+ ! run_with_debug "isula-build ctr-img rm $image_name:latest $image_name:latest-child" -+ ! run_with_debug "isula-build ctr-img rm $image_name:latest2" - - echo "PASS" - } -diff --git a/tests/src/integration_test_set_new_root.sh b/tests/src/integration_test_set_new_root.sh -index 7238240..bb11a08 100644 ---- a/tests/src/integration_test_set_new_root.sh -+++ b/tests/src/integration_test_set_new_root.sh -@@ -26,6 +26,8 @@ function clean() - { - rm -f $config_file - mv "$config_file".bak $config_file -+ -+ isula-build ctr-img rm -p > /dev/null 2>&1 - systemctl stop isula-build - rm -rf $run_root $data_root - } --- -2.27.0 - diff --git a/patch/0062-clean-code-staticcheck-fix-of-S1020-S1023-SA9003-S10.patch b/patch/0062-clean-code-staticcheck-fix-of-S1020-S1023-SA9003-S10.patch deleted file mode 100644 index 15c4aca..0000000 --- a/patch/0062-clean-code-staticcheck-fix-of-S1020-S1023-SA9003-S10.patch +++ /dev/null @@ -1,401 +0,0 @@ -From 6c355a7c9393982e648d79701a6c33ea0911a33a Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sat, 28 Aug 2021 21:55:14 +0800 -Subject: [PATCH 13/20] clean code: staticcheck fix of S1020, S1023, SA9003, - S1002 and some U1000 - ---- - builder/dockerfile/add_copy_test.go | 1 - - builder/dockerfile/builder.go | 2 +- - builder/dockerfile/builder_test.go | 7 ++----- - builder/dockerfile/container/help.go | 2 +- - builder/dockerfile/parser/command.go | 4 ++-- - builder/dockerfile/parser/parser.go | 14 +++++++------- - builder/dockerfile/parser/util.go | 1 - - builder/dockerfile/stage_builder.go | 2 +- - cmd/cli/logout_test.go | 3 +-- - daemon/info.go | 4 ++-- - daemon/remove.go | 6 +++--- - image/image.go | 12 ++++++------ - pkg/logger/logger.go | 2 +- - pkg/manifest/list.go | 2 +- - pkg/opts/opts.go | 2 +- - pkg/stack/stack.go | 2 +- - util/cipher.go | 6 +++--- - util/common.go | 2 +- - 18 files changed, 34 insertions(+), 40 deletions(-) - -diff --git a/builder/dockerfile/add_copy_test.go b/builder/dockerfile/add_copy_test.go -index 05fac1f3..8873872a 100644 ---- a/builder/dockerfile/add_copy_test.go -+++ b/builder/dockerfile/add_copy_test.go -@@ -158,7 +158,6 @@ func TestResolveCopySource(t *testing.T) { - isAdd bool - rawSources []string - dest string -- contextDir string - } - tests := []struct { - name string -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index cbd1e589..1e1e24dc 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -559,7 +559,7 @@ func (b *Builder) export(imageID string) error { - } - - func (b *Builder) applyTag(imageID string) error { -- tags := make([]string, 0, 0) -+ tags := make([]string, 0) - if b.buildOpts.Tag != "" { - tags = append(tags, b.buildOpts.Tag) - } -diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go -index 3b7513be..60668e1e 100644 ---- a/builder/dockerfile/builder_test.go -+++ b/builder/dockerfile/builder_test.go -@@ -21,7 +21,6 @@ import ( - "os" - "path/filepath" - "reflect" -- "regexp" - "strings" - "testing" - -@@ -725,8 +724,7 @@ func TestGetFlagsAndArgs(t *testing.T) { - // FROM alpine@digest@digest <- fail - func TestResolveImageName(t *testing.T) { - type args struct { -- s string -- reg *regexp.Regexp -+ s string - } - tests := []struct { - name string -@@ -882,8 +880,7 @@ func TestResolveImageName(t *testing.T) { - // FROM $imageName@${digest}$${digest2} <- fail - func TestResolveImageNameWithArgs(t *testing.T) { - type args struct { -- s string -- reg *regexp.Regexp -+ s string - } - tests := []struct { - name string -diff --git a/builder/dockerfile/container/help.go b/builder/dockerfile/container/help.go -index 475b479d..c2d5bd87 100644 ---- a/builder/dockerfile/container/help.go -+++ b/builder/dockerfile/container/help.go -@@ -69,7 +69,7 @@ func (ref *Reference) createConfigsAndManifests() (docker.Image, docker.Manifest - } - - func (ref *Reference) getContainerLayers() ([]string, error) { -- layers := make([]string, 0, 0) -+ layers := make([]string, 0) - layerID := ref.layerID - layer, err := ref.store.Layer(layerID) - if err != nil { -diff --git a/builder/dockerfile/parser/command.go b/builder/dockerfile/parser/command.go -index 1d62303d..635159ee 100644 ---- a/builder/dockerfile/parser/command.go -+++ b/builder/dockerfile/parser/command.go -@@ -322,7 +322,7 @@ func extractFlags(line *parser.Line, cmd string) (string, error) { - flagRegs := cmdFlagRegs[cmd] - parts := strings.Fields(line.Raw) - -- existFlags := make(map[string]bool, 0) -+ existFlags := make(map[string]bool) - var i int - for ; i <= len(parts)-1; i++ { - if !strings.HasPrefix(parts[i], "--") { -@@ -545,7 +545,7 @@ func parseKeyValue(line *parser.Line) error { - } - - func parseKeyEqualValuePairs(str string) []string { -- kvPairs := make([]string, 0, 0) -+ kvPairs := make([]string, 0) - - for i := 0; i <= len(str)-1; i++ { - word := []byte{} -diff --git a/builder/dockerfile/parser/parser.go b/builder/dockerfile/parser/parser.go -index a21a3f59..650c5e5c 100644 ---- a/builder/dockerfile/parser/parser.go -+++ b/builder/dockerfile/parser/parser.go -@@ -109,7 +109,7 @@ func newRowLine(num int, content string) *rowLine { - - // preprocess the Dockerfile and get the effective physical line - func preProcess(r io.Reader) []*rowLine { -- rowLines := make([]*rowLine, 0, 0) -+ rowLines := make([]*rowLine, 0) - scanner := bufio.NewScanner(r) - lineNum := 1 - for scanner.Scan() { -@@ -134,7 +134,7 @@ func format(rows []*rowLine, d *directive) ([]*parser.Line, error) { - text := rows[i].content - line := &parser.Line{ - Begin: rows[i].lineNum, -- Flags: make(map[string]string, 0), -+ Flags: make(map[string]string), - } - - var logicLine string -@@ -193,7 +193,7 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error) - - var ( - pageMap = make(map[string]*parser.Page) -- pages = make([]*parser.Page, 0, 0) -+ pages = make([]*parser.Page, 0) - currentPage *parser.Page - pageNum int - ) -@@ -204,7 +204,7 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error) - } - if onbuild && currentPage == nil { - currentPage = &parser.Page{ -- Lines: make([]*parser.Line, 0, 0), -+ Lines: make([]*parser.Line, 0), - Begin: line.Begin, - End: line.End, - } -@@ -227,7 +227,7 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error) - Name: name, - Begin: line.Begin, - End: line.End, -- Lines: make([]*parser.Line, 0, 0), -+ Lines: make([]*parser.Line, 0), - } - // page name comes from the last cell from "FROM {image} AS {name} - // or named it with the index of stage in this dockerfile -@@ -266,7 +266,7 @@ func constructPages(lines []*parser.Line, onbuild bool) ([]*parser.Page, error) - // truncHeadingArgs Handle those ARGs before first FROM in the file - // returns the truncated lines and converted heading args - func truncHeadingArgs(lines *[]*parser.Line, onbuild bool) ([]string, error) { -- args := make([]string, 0, 0) -+ args := make([]string, 0) - if onbuild { - return args, nil - } -@@ -295,7 +295,7 @@ const ignoreFile = ".dockerignore" - // ParseIgnore parses the .dockerignore file in the provide dir, which - // must be the context directory - func (df *dockerfile) ParseIgnore(dir string) ([]string, error) { -- var ignores = make([]string, 0, 0) -+ var ignores = make([]string, 0) - - fullPath := path.Join(dir, ignoreFile) - if _, err := os.Stat(fullPath); err != nil { -diff --git a/builder/dockerfile/parser/util.go b/builder/dockerfile/parser/util.go -index bac13fbd..b8867f7f 100644 ---- a/builder/dockerfile/parser/util.go -+++ b/builder/dockerfile/parser/util.go -@@ -136,7 +136,6 @@ func (r *resolver) noDollar() { - // not "\$", this must be hyphen between args, such as '/' in "hub/image" or '_' in 'module_arch' - r.resolved += string(r.origin[r.idx]) - r.idx++ -- return - } - - func (r *resolver) noBrace() error { -diff --git a/builder/dockerfile/stage_builder.go b/builder/dockerfile/stage_builder.go -index 23f488cb..f01bad54 100644 ---- a/builder/dockerfile/stage_builder.go -+++ b/builder/dockerfile/stage_builder.go -@@ -330,7 +330,7 @@ func (s *stageBuilder) updateStageBuilder() error { - onbuildData = append(onbuildData, []byte(fmt.Sprintf("%s\n", item))...) - } - // OnBuild is handled, clean it here so that we can add new ONBUILDs on cmd builder if needed -- s.docker.Config.OnBuild = make([]string, 0, 0) -+ s.docker.Config.OnBuild = make([]string, 0) - - p, err := parser.NewParser(parser.DefaultParser) - if err != nil { -diff --git a/cmd/cli/logout_test.go b/cmd/cli/logout_test.go -index f5f09057..1328c2a1 100644 ---- a/cmd/cli/logout_test.go -+++ b/cmd/cli/logout_test.go -@@ -157,9 +157,8 @@ func TestNewLogoutCmd(t *testing.T) { - cmd.SetArgs(strings.Split(tt.args, " ")) - err := cmd.Execute() - if err != nil { -- -+ assert.ErrorContains(t, err, tt.errString) - } -- assert.ErrorContains(t, err, tt.errString) - }) - } - } -diff --git a/daemon/info.go b/daemon/info.go -index 8462be1b..cfc658c1 100644 ---- a/daemon/info.go -+++ b/daemon/info.go -@@ -108,8 +108,8 @@ func (b *Backend) Info(ctx context.Context, req *pb.InfoRequest) (*pb.InfoRespon - } - - func getRegistryInfo() ([]string, []string, []string, error) { -- registriesInsecure := make([]string, 0, 0) -- registriesBlock := make([]string, 0, 0) -+ registriesInsecure := make([]string, 0) -+ registriesBlock := make([]string, 0) - systemContext := image.GetSystemContext() - - registriesSearch, err := sysregistriesv2.UnqualifiedSearchRegistries(systemContext) -diff --git a/daemon/remove.go b/daemon/remove.go -index 89e68cfc..4d90bf53 100644 ---- a/daemon/remove.go -+++ b/daemon/remove.go -@@ -73,7 +73,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) - continue - } - -- if removed == true { -+ if removed { - imageString := fmt.Sprintf("Untagged image: %v", imageID) - logrus.Debug(imageString) - if err = stream.Send(&pb.RemoveResponse{LayerMessage: imageString}); err != nil { -@@ -118,7 +118,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) - } - - func untagImage(imageID string, store storage.Store, image *storage.Image) (bool, error) { -- newNames := make([]string, 0, 0) -+ newNames := make([]string, 0) - removed := false - for _, imgName := range image.Names { - if imgName == imageID { -@@ -128,7 +128,7 @@ func untagImage(imageID string, store storage.Store, image *storage.Image) (bool - newNames = append(newNames, imgName) - } - -- if removed == true { -+ if removed { - if err := store.SetNames(image.ID, newNames); err != nil { - return false, errors.Wrapf(err, "remove name %v from image %v error", imageID, image.ID) - } -diff --git a/image/image.go b/image/image.go -index e06d2530..1f3944d1 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -287,19 +287,19 @@ func createScratchV2Image() *docker.Image { - ContainerConfig: docker.Config{}, - Config: &docker.Config{ - ExposedPorts: make(docker.PortSet), -- Env: make([]string, 0, 0), -- Cmd: make([]string, 0, 0), -+ Env: make([]string, 0), -+ Cmd: make([]string, 0), - Healthcheck: nil, - Volumes: make(map[string]struct{}), -- Entrypoint: make([]string, 0, 0), -- OnBuild: make([]string, 0, 0), -+ Entrypoint: make([]string, 0), -+ OnBuild: make([]string, 0), - Labels: make(map[string]string), - StopTimeout: nil, -- Shell: make([]string, 0, 0), -+ Shell: make([]string, 0), - }, - }, - RootFS: &docker.RootFS{}, -- History: make([]docker.History, 0, 0), -+ History: make([]docker.History, 0), - } - } - -diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go -index 2e4dbdd1..1d9a61df 100644 ---- a/pkg/logger/logger.go -+++ b/pkg/logger/logger.go -@@ -45,7 +45,7 @@ type Logger struct { - // NewRunTimer return an instance of RunTimer - func NewRunTimer() *RunTimer { - return &RunTimer{ -- commands: make([]string, 0, 0), -+ commands: make([]string, 0), - cmdMap: make(map[string]time.Duration), - } - } -diff --git a/pkg/manifest/list.go b/pkg/manifest/list.go -index bc6037fc..10907e1d 100644 ---- a/pkg/manifest/list.go -+++ b/pkg/manifest/list.go -@@ -53,7 +53,7 @@ func NewManifestList() *List { - SchemaVersion: container.SchemaVersion, - MediaType: manifest.DockerV2ListMediaType, - }, -- instances: make(map[digest.Digest]string, 0), -+ instances: make(map[digest.Digest]string), - } - } - -diff --git a/pkg/opts/opts.go b/pkg/opts/opts.go -index 4664d50d..8fb3b308 100644 ---- a/pkg/opts/opts.go -+++ b/pkg/opts/opts.go -@@ -61,7 +61,7 @@ func (opts *ListOpts) Type() string { - - // NewListOpts creates a new ListOpts - func NewListOpts(validator validatorFunc) ListOpts { -- values := make(map[string]string, 0) -+ values := make(map[string]string) - return ListOpts{ - Values: values, - validator: validator, -diff --git a/pkg/stack/stack.go b/pkg/stack/stack.go -index b2100ce6..8343b6b0 100644 ---- a/pkg/stack/stack.go -+++ b/pkg/stack/stack.go -@@ -64,7 +64,7 @@ func dumpStack(path string) { - ) - - for { -- stackBuf = make([]byte, bufSize, bufSize) -+ stackBuf = make([]byte, bufSize) - stackSize = runtime.Stack(stackBuf, true) - // if these two sizes equal, which means the allocated buf is not large enough to carry all - // stacks back, so enlarge the buf and try again -diff --git a/util/cipher.go b/util/cipher.go -index 8e62e76b..b2aea2a9 100644 ---- a/util/cipher.go -+++ b/util/cipher.go -@@ -61,7 +61,7 @@ func GenerateCryptoKey(s int) ([]byte, error) { - } else { - size = aesKeyLenLowerBound - } -- key := make([]byte, size, size) -+ key := make([]byte, size) - if _, err := io.ReadFull(rand.Reader, key); err != nil { - return nil, errGenCryptoKey - } -@@ -105,7 +105,7 @@ func EncryptAES(data string, aeskey string) (string, error) { - return "", errors.Errorf("generate rand data for iv failed: %v", err) - } - mode := cipher.NewCFBEncrypter(block, iv) -- encryptData := make([]byte, len(plainText), len(plainText)) -+ encryptData := make([]byte, len(plainText)) - mode.XORKeyStream(encryptData, plainText) - encryptData = append(iv, encryptData...) - -@@ -134,7 +134,7 @@ func DecryptAES(data string, aeskey string) (string, error) { - } - - decrypter := cipher.NewCFBDecrypter(block, cipherText[:block.BlockSize()]) -- decryptData := make([]byte, len(cipherText)-block.BlockSize(), len(cipherText)-block.BlockSize()) -+ decryptData := make([]byte, len(cipherText)-block.BlockSize()) - decrypter.XORKeyStream(decryptData, cipherText[block.BlockSize():]) - - return string(decryptData), nil -diff --git a/util/common.go b/util/common.go -index d0cd9d06..00b1b941 100644 ---- a/util/common.go -+++ b/util/common.go -@@ -44,7 +44,7 @@ func CopyMapStringString(m map[string]string) map[string]string { - - // CopyStrings copies all strings in a slice to a new slice - func CopyStrings(str []string) []string { -- result := make([]string, len(str), len(str)) -+ result := make([]string, len(str)) - copy(result, str) - return result - } --- -2.31.1 - diff --git a/patch/0063-relocation-exporter-package-and-remove-unused-const.patch b/patch/0063-relocation-exporter-package-and-remove-unused-const.patch deleted file mode 100644 index 461fd2b..0000000 --- a/patch/0063-relocation-exporter-package-and-remove-unused-const.patch +++ /dev/null @@ -1,153 +0,0 @@ -From 0715aadaf5a5850d5ff1e6f74f7abafc4418f4d5 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sun, 29 Aug 2021 05:05:10 +0800 -Subject: [PATCH 14/20] relocation exporter package and remove unused const - ---- - exporter/common.go | 91 +++++++++++++++++++++------------------------- - 1 file changed, 42 insertions(+), 49 deletions(-) - -diff --git a/exporter/common.go b/exporter/common.go -index cd976d21..b58f59cb 100644 ---- a/exporter/common.go -+++ b/exporter/common.go -@@ -27,7 +27,6 @@ import ( - "github.com/containers/image/v5/manifest" - "github.com/containers/image/v5/signature" - "github.com/containers/image/v5/types" -- "github.com/containers/storage/pkg/archive" - securejoin "github.com/cyphar/filepath-securejoin" - "github.com/docker/distribution/reference" - "github.com/opencontainers/go-digest" -@@ -40,11 +39,6 @@ import ( - "isula.org/isula-build/util" - ) - --const ( -- // Uncompressed represents uncompressed -- Uncompressed = archive.Uncompressed --) -- - // ExportOptions is a struct for exporter - type ExportOptions struct { - SystemContext *types.SystemContext -@@ -56,6 +50,28 @@ type ExportOptions struct { - ImageListSelection cp.ImageListSelection - } - -+// parseExporter parses an exporter instance and inits it with the src and dest reference. -+func parseExporter(opts ExportOptions, src, destSpec string, localStore *store.Store) (Exporter, error) { -+ const partsNum = 2 -+ // 1. parse exporter -+ parts := strings.SplitN(destSpec, ":", partsNum) -+ if len(parts) != partsNum { -+ return nil, errors.Errorf(`invalid dest spec %q, expected colon-separated exporter:reference`, destSpec) -+ } -+ -+ ept := GetAnExporter(parts[0]) -+ if ept == nil { -+ return nil, errors.Errorf(`invalid image name: %q, unknown exporter "%s"`, src, parts[0]) -+ } -+ -+ // 2. Init exporter reference -+ err := ept.Init(opts, src, destSpec, localStore) -+ if err != nil { -+ return nil, errors.Wrap(err, `fail to Init exporter"`) -+ } -+ return ept, nil -+} -+ - // Export exports an image to an output destination - func Export(imageID, outputDest string, opts ExportOptions, localStore *store.Store) error { - eLog := logrus.WithField(util.LogKeySessionID, opts.Ctx.Value(util.LogFieldKey(util.LogKeySessionID))) -@@ -89,26 +105,6 @@ func Export(imageID, outputDest string, opts ExportOptions, localStore *store.St - return nil - } - --func exportToIsulad(ctx context.Context, tarPath string) error { -- // no tarPath need to export -- if len(tarPath) == 0 { -- return nil -- } -- defer func() { -- if rErr := os.Remove(tarPath); rErr != nil { -- logrus.Errorf("Remove file %s failed: %v", tarPath, rErr) -- } -- }() -- // dest here will not be influenced by external input, no security risk -- cmd := exec.CommandContext(ctx, "isula", "load", "-i", tarPath) // nolint:gosec -- if bytes, lErr := cmd.CombinedOutput(); lErr != nil { -- logrus.Errorf("Load image to isulad failed, stderr: %v, err: %v", string(bytes), lErr) -- return errors.Errorf("load image to isulad failed, stderr: %v, err: %v", string(bytes), lErr) -- } -- -- return nil --} -- - func export(e Exporter, exOpts ExportOptions) (reference.Canonical, digest.Digest, error) { - var ( - ref reference.Canonical -@@ -158,28 +154,6 @@ func export(e Exporter, exOpts ExportOptions) (reference.Canonical, digest.Diges - return ref, manifestDigest, nil - } - --// parseExporter parses an exporter instance and inits it with the src and dest reference. --func parseExporter(opts ExportOptions, src, destSpec string, localStore *store.Store) (Exporter, error) { -- const partsNum = 2 -- // 1. parse exporter -- parts := strings.SplitN(destSpec, ":", partsNum) -- if len(parts) != partsNum { -- return nil, errors.Errorf(`invalid dest spec %q, expected colon-separated exporter:reference`, destSpec) -- } -- -- ept := GetAnExporter(parts[0]) -- if ept == nil { -- return nil, errors.Errorf(`invalid image name: %q, unknown exporter "%s"`, src, parts[0]) -- } -- -- // 2. Init exporter reference -- err := ept.Init(opts, src, destSpec, localStore) -- if err != nil { -- return nil, errors.Wrap(err, `fail to Init exporter"`) -- } -- return ept, nil --} -- - // NewCopyOptions will return copy options - func NewCopyOptions(opts ExportOptions) *cp.Options { - cpOpts := &cp.Options{} -@@ -206,6 +180,26 @@ func NewPolicyContext(sc *types.SystemContext) (*signature.PolicyContext, error) - return policyContext, nil - } - -+func exportToIsulad(ctx context.Context, tarPath string) error { -+ // no tarPath need to export -+ if len(tarPath) == 0 { -+ return nil -+ } -+ defer func() { -+ if rErr := os.Remove(tarPath); rErr != nil { -+ logrus.Errorf("Remove file %s failed: %v", tarPath, rErr) -+ } -+ }() -+ // dest here will not be influenced by external input, no security risk -+ cmd := exec.CommandContext(ctx, "isula", "load", "-i", tarPath) // nolint:gosec -+ if bytes, lErr := cmd.CombinedOutput(); lErr != nil { -+ logrus.Errorf("Load image to isulad failed, stderr: %v, err: %v", string(bytes), lErr) -+ return errors.Errorf("load image to isulad failed, stderr: %v, err: %v", string(bytes), lErr) -+ } -+ -+ return nil -+} -+ - // CheckArchiveFormat used to check if save or load image format is either docker-archive or oci-archive - func CheckArchiveFormat(format string) error { - switch format { -@@ -237,4 +231,3 @@ func GetManifestType(format string) (string, error) { - } - return manifestType, nil - } -- --- -2.31.1 - diff --git a/patch/0064-clean-code-tidy-FindImage-function.patch b/patch/0064-clean-code-tidy-FindImage-function.patch deleted file mode 100644 index d63fb15..0000000 --- a/patch/0064-clean-code-tidy-FindImage-function.patch +++ /dev/null @@ -1,236 +0,0 @@ -From 9b1191dafa500bc55b37912898e3ebb8e9d6ec24 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sat, 28 Aug 2021 23:27:49 +0800 -Subject: [PATCH 15/20] clean code: tidy FindImage function - ---- - daemon/images.go | 2 +- - daemon/images_test.go | 2 +- - daemon/push_test.go | 2 +- - daemon/remove.go | 2 +- - daemon/save.go | 2 +- - daemon/save_test.go | 2 +- - exporter/docker/archive/archive.go | 4 +- - image/image.go | 67 ++++++------------------------ - image/image_test.go | 2 +- - 9 files changed, 21 insertions(+), 64 deletions(-) - -diff --git a/daemon/images.go b/daemon/images.go -index e61817cc..baeb375c 100644 ---- a/daemon/images.go -+++ b/daemon/images.go -@@ -70,7 +70,7 @@ func listOneImage(opts listOptions) (*pb.ListResponse, error) { - _, image, err := image.FindImage(opts.localStore, opts.imageName) - if err != nil { - opts.logEntry.Error(err) -- return nil, errors.Wrapf(err, "find local image %v error", opts.imageName) -+ return nil, errors.Wrapf(err, "find local image %q failed", opts.imageName) - } - - result := make([]*pb.ListResponse_ImageInfo, 0, len(image.Names)) -diff --git a/daemon/images_test.go b/daemon/images_test.go -index a970ce0b..efbf6f14 100644 ---- a/daemon/images_test.go -+++ b/daemon/images_test.go -@@ -96,7 +96,7 @@ func TestList(t *testing.T) { - ImageName: "coffee:costa", - }, - wantErr: true, -- errString: "failed to parse image", -+ errString: "not found in local store", - }, - { - name: "abnormal case no repository", -diff --git a/daemon/push_test.go b/daemon/push_test.go -index f4a9e2b1..7358d0cd 100644 ---- a/daemon/push_test.go -+++ b/daemon/push_test.go -@@ -69,7 +69,7 @@ func TestPush(t *testing.T) { - Format: "docker", - }, - wantErr: true, -- errString: "failed to parse image", -+ errString: "not found in local store", - }, - { - name: "manifestNotExist", -diff --git a/daemon/remove.go b/daemon/remove.go -index 89e68cfc..d4e0bbd9 100644 ---- a/daemon/remove.go -+++ b/daemon/remove.go -@@ -49,7 +49,7 @@ func (b *Backend) Remove(req *pb.RemoveRequest, stream pb.Control_RemoveServer) - } - - for _, imageID := range rmImageIDs { -- _, img, err := image.FindImageLocally(s, imageID) -+ _, img, err := image.FindImage(s, imageID) - if err != nil { - rmFailed = true - errMsg := fmt.Sprintf("Find local image %q failed: %v", imageID, err) -diff --git a/daemon/save.go b/daemon/save.go -index 7ad12851..1a2d3fed 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -186,7 +186,7 @@ func filterImageName(opts *saveOptions) error { - } - visitedImage[imageName] = true - -- _, img, err := image.FindImageLocally(opts.localStore, imageName) -+ _, img, err := image.FindImage(opts.localStore, imageName) - if err != nil { - return errors.Wrapf(err, "filter image name failed when finding image name %q", imageName) - } -diff --git a/daemon/save_test.go b/daemon/save_test.go -index a59086a8..c1b37342 100644 ---- a/daemon/save_test.go -+++ b/daemon/save_test.go -@@ -129,7 +129,7 @@ func TestSave(t *testing.T) { - Format: "docker", - }, - wantErr: true, -- errString: "failed to parse image", -+ errString: "not found in local store", - }, - { - name: "abnormal case wrong image format", -diff --git a/exporter/docker/archive/archive.go b/exporter/docker/archive/archive.go -index cc6b8721..36a28811 100644 ---- a/exporter/docker/archive/archive.go -+++ b/exporter/docker/archive/archive.go -@@ -60,7 +60,7 @@ func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec - // destSpec could be "file:name:tag" or "file:name" or just "file" with transport "docker-archive", such as docker-archive:output.tar:name:tag - // When more than two parts, build must be called - if parts := strings.Split(destSpec, ":"); len(parts) > partsNum { -- srcReference, _, err = image.FindImageLocally(localStore, src) -+ srcReference, _, err = image.FindImage(localStore, src) - if err != nil { - return errors.Wrapf(err, "find src image: %q failed with transport %q", src, d.Name()) - } -@@ -89,7 +89,7 @@ func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec - DockerArchiveExporter.InitArchiveWriter(opts.ExportID, archWriter) - } - -- srcReference, _, err = image.FindImageLocally(localStore, src) -+ srcReference, _, err = image.FindImage(localStore, src) - if err != nil { - return errors.Wrapf(err, "find src image: %q failed with transport %q", src, d.Name()) - } -diff --git a/image/image.go b/image/image.go -index 5ae7245e..4a1ca881 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -468,71 +468,29 @@ func ResolveImageName(s string, resolveArg func(string) string) (string, error) - return newStr, nil - } - --// FindImage get the image from storage by image describe -+// FindImage get the image from local storage by image describe - func FindImage(store *store.Store, image string) (types.ImageReference, *storage.Image, error) { -- names, _, err := ResolveName(image, nil, store) -- if err != nil { -- return nil, nil, errors.Wrapf(err, "error parsing name %q", image) -- } -- -- ref, img, err := ParseImagesToReference(store, names) -- if err != nil { -- return nil, nil, errors.Wrapf(err, "locating image %q failed", image) -- } -- return ref, img, nil --} -- --// FindImageLocally get the image from local storage by image describe --func FindImageLocally(store *store.Store, image string) (types.ImageReference, *storage.Image, error) { - // 1. check name valid -- if image == "" { -- return nil, nil, errors.Errorf("image name %q cannot be empty string", image) -+ if _, err := reference.Parse(image); err != nil { -+ return nil, nil, errors.Wrapf(err, "parse image %q failed", image) - } - - // 2. try to find image with name or id in local store - localName := tryResolveNameInStore(image, store) - if localName == "" { -- return nil, nil, errors.Errorf("no image %q in local store", image) -+ return nil, nil, errors.Errorf("image %q not found in local store", image) - } - -- // 3. parse to image reference -- ref, img, err := ParseImagesToReference(store, []string{localName}) -+ // 3. get image reference and storage.Image -+ ref, err := is.Transport.ParseStoreReference(store, localName) - if err != nil { -- return nil, nil, errors.Wrapf(err, "locating image %q locally failed", image) -- } -- return ref, img, nil --} -- --// ParseImagesToReference get the image reference in store --func ParseImagesToReference(store *store.Store, names []string) (types.ImageReference, *storage.Image, error) { -- var ( -- ref types.ImageReference -- img *storage.Image -- err error -- ) -- for _, name := range names { -- ref, err = is.Transport.ParseStoreReference(store, name) -- if err != nil { -- logrus.Debugf("Error parsing reference to image %q: %v", name, err) -- continue -- } -- -- var gErr error -- img, gErr = is.Transport.GetStoreImage(store, ref) -- // When name is the format of name[:rag] with out registry domain, err is storage.ErrImageUnknown -- if gErr != nil { -- img2, err2 := store.Image(name) -- if err2 != nil { -- logrus.Debugf("Error locating image %q: %v", name, err2) -- continue -- } -- img = img2 -- } -- break -+ return nil, nil, errors.Wrapf(err, "error parsing reference to image %q", localName) - } -- if ref == nil || img == nil || err != nil { -- return nil, nil, errors.Errorf("failed to parse image %v in local store", names) -+ img, err := is.Transport.GetStoreImage(store, ref) -+ if err != nil { -+ return nil, nil, errors.Wrapf(err, "failed to parse image %q in local store", localName) - } -+ - return ref, img, nil - } - -@@ -572,14 +530,13 @@ func ResolveName(name string, sc *types.SystemContext, store *store.Store) ([]st - } - - func tryResolveNameInStore(name string, store *store.Store) string { -- defaultTag := "latest" -- - logrus.Infof("Try to find image: %s in local storage", name) - img, err := store.Image(name) - if err == nil { - return img.ID - } - -+ defaultTag := "latest" - logrus.Infof("Try to find image: %s:%s in local storage", name, defaultTag) - img, err = store.Image(fmt.Sprintf("%s:%s", name, defaultTag)) - if err != nil { -diff --git a/image/image_test.go b/image/image_test.go -index c698b4d8..43d936f5 100644 ---- a/image/image_test.go -+++ b/image/image_test.go -@@ -51,7 +51,7 @@ func TestFindImageWhenImageNameIsEmpty(t *testing.T) { - - src := "" - srcReference, _, err := FindImage(&localStore, src) -- assert.ErrorContains(t, err, "locating image") -+ assert.ErrorContains(t, err, "repository name must have at least one component") - assert.Assert(t, cmp.Nil(srcReference)) - } - --- -2.31.1 - diff --git a/patch/0065-clean-code-delete-channel-within-the-same-goroutine.patch b/patch/0065-clean-code-delete-channel-within-the-same-goroutine.patch deleted file mode 100644 index b93d908..0000000 --- a/patch/0065-clean-code-delete-channel-within-the-same-goroutine.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 7050a0ec5cdff61cd289bc8d03dbdd7d46bcda0d Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sat, 28 Aug 2021 21:56:02 +0800 -Subject: [PATCH 16/20] clean code: delete channel within the same goroutine - ---- - daemon/manifest.go | 13 ++----------- - daemon/pull.go | 13 ++----------- - daemon/push.go | 13 ++----------- - 3 files changed, 6 insertions(+), 33 deletions(-) - -diff --git a/daemon/manifest.go b/daemon/manifest.go -index fc28998f..36e76749 100644 ---- a/daemon/manifest.go -+++ b/daemon/manifest.go -@@ -212,18 +212,9 @@ func (b *Backend) ManifestPush(req *pb.ManifestPushRequest, stream pb.Control_Ma - eg, egCtx := errgroup.WithContext(stream.Context()) - eg.Go(manifestPushHandler(egCtx, opt)) - eg.Go(manifestPushMessageHandler(stream, cliLogger)) -- errC := make(chan error, 1) - -- errC <- eg.Wait() -- defer close(errC) -- -- err, ok := <-errC -- if !ok { -- logrus.WithField(util.LogKeySessionID, manifestName).Info("Channel errC closed") -- return nil -- } -- if err != nil { -- logrus.WithField(util.LogKeySessionID, manifestName).Warnf("Stream closed with: %v", err) -+ if err := eg.Wait(); err != nil { -+ logrus.WithField(util.LogKeySessionID, manifestName).Warnf("Manifest push stream closed with: %v", err) - return err - } - -diff --git a/daemon/pull.go b/daemon/pull.go -index 6d2e33d9..90be2a91 100644 ---- a/daemon/pull.go -+++ b/daemon/pull.go -@@ -62,18 +62,9 @@ func (b *Backend) Pull(req *pb.PullRequest, stream pb.Control_PullServer) error - eg, egCtx := errgroup.WithContext(ctx) - eg.Go(pullHandler(egCtx, opt)) - eg.Go(pullMessageHandler(stream, opt.logger)) -- errC := make(chan error, 1) - -- errC <- eg.Wait() -- defer close(errC) -- -- err, ok := <-errC -- if !ok { -- logrus.WithField(util.LogKeySessionID, opt.pullID).Info("Channel errC closed") -- return nil -- } -- if err != nil { -- logrus.WithField(util.LogKeySessionID, opt.pullID).Warnf("Stream closed with: %v", err) -+ if err := eg.Wait(); err != nil { -+ logrus.WithField(util.LogKeySessionID, opt.pullID).Warnf("Pull stream closed with: %v", err) - return err - } - -diff --git a/daemon/push.go b/daemon/push.go -index e36198dc..d3f5571e 100644 ---- a/daemon/push.go -+++ b/daemon/push.go -@@ -84,18 +84,9 @@ func (b *Backend) Push(req *pb.PushRequest, stream pb.Control_PushServer) error - - eg.Go(pushHandler(egCtx, opt)) - eg.Go(pushMessageHandler(stream, opt.logger)) -- errC := make(chan error, 1) - -- errC <- eg.Wait() -- defer close(errC) -- -- err, ok := <-errC -- if !ok { -- logrus.WithField(util.LogKeySessionID, opt.pushID).Info("Channel errC closed") -- return nil -- } -- if err != nil { -- logrus.WithField(util.LogKeySessionID, opt.pushID).Warnf("Stream closed with: %v", err) -+ if err := eg.Wait(); err != nil { -+ logrus.WithField(util.LogKeySessionID, opt.pushID).Warnf("Push stream closed with: %v", err) - return err - } - --- -2.31.1 - diff --git a/patch/0067-fix-golangci-lint-warnings.patch b/patch/0067-fix-golangci-lint-warnings.patch deleted file mode 100644 index 3b8815d..0000000 --- a/patch/0067-fix-golangci-lint-warnings.patch +++ /dev/null @@ -1,43 +0,0 @@ -From f08b682ec8caab1a50aff1d37c10729e941d4721 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Tue, 31 Aug 2021 11:52:29 +0800 -Subject: [PATCH 17/20] fix golangci-lint warnings - ---- - builder/dockerfile/run.go | 6 +++--- - cmd/cli/grpc_client.go | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/builder/dockerfile/run.go b/builder/dockerfile/run.go -index 828fe676..d33573f9 100644 ---- a/builder/dockerfile/run.go -+++ b/builder/dockerfile/run.go -@@ -97,9 +97,9 @@ func (c *cmdBuilder) setupRuntimeSpec(command []string) (*specs.Spec, error) { - // set specific runtime spec config - user := c.stage.docker.Config.User - if user != "" { -- pair, err := util.GetChownOptions(user, c.stage.mountpoint) -- if err != nil { -- return nil, err -+ pair, gErr := util.GetChownOptions(user, c.stage.mountpoint) -+ if gErr != nil { -+ return nil, gErr - } - g.SetProcessUID(uint32(pair.UID)) - g.SetProcessGID(uint32(pair.GID)) -diff --git a/cmd/cli/grpc_client.go b/cmd/cli/grpc_client.go -index cab59503..44c00c09 100644 ---- a/cmd/cli/grpc_client.go -+++ b/cmd/cli/grpc_client.go -@@ -82,7 +82,7 @@ func NewClient(ctx context.Context) (*GrpcClient, error) { - defer cancel() - connected, err := cli.HealthCheck(healthCtx) - if !connected || err != nil { -- return nil, errors.Errorf( "Cannot connect to the isula-builder at %s. Is the isula-builder running?\nError: %v", constant.DefaultGRPCAddress, err) -+ return nil, errors.Errorf("Cannot connect to the isula-builder at %s. Is the isula-builder running?\nError: %v", constant.DefaultGRPCAddress, err) - } - - return cli, nil --- -2.31.1 - diff --git a/patch/0068-change-golangci-lint-config-and-remove-redundant-che.patch b/patch/0068-change-golangci-lint-config-and-remove-redundant-che.patch deleted file mode 100644 index 16e7ae2..0000000 --- a/patch/0068-change-golangci-lint-config-and-remove-redundant-che.patch +++ /dev/null @@ -1,97 +0,0 @@ -From 0b2d60bd700378eea88641cdb2d6fd3ff5bdc6ee Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Wed, 1 Sep 2021 01:12:11 +0800 -Subject: [PATCH 19/20] change golangci-lint config and remove redundant check - ---- - .golangci.yml | 12 ++---------- - image/image.go | 18 +++++------------- - util/util.go | 3 ++- - 3 files changed, 9 insertions(+), 24 deletions(-) - -diff --git a/.golangci.yml b/.golangci.yml -index 46ef20b3..50a31292 100644 ---- a/.golangci.yml -+++ b/.golangci.yml -@@ -38,16 +38,7 @@ linters: - - misspell - - goconst - disable: -- - lll -- - wsl -- - depguard -- - stylecheck -- - dupl -- - interfacer -- - gosimple - - unused -- - rowserrcheck -- - goprintffuncname - fast: false - - output: -@@ -68,7 +59,8 @@ linters-settings: - gomnd: - settings: - mnd: -- checks: argument, case, condition, return -+ checks: argument, case, condition, operation, return, assign -+ ignored-numbers: 2 - gocritic: - disabled-checks: - - ifElseChain -diff --git a/image/image.go b/image/image.go -index 892f2593..b5a3757c 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -254,28 +254,20 @@ func getLocalImageNameFromRef(store storage.Store, srcRef types.ImageReference) - if err := exporter.CheckArchiveFormat(srcRef.Transport().Name()); err == nil { - return stringid.GenerateRandomID() + ":" + stringid.GenerateRandomID(), nil - } -- - if srcRef.Transport().Name() != constant.DockerTransport { - return "", errors.Errorf("the %s transport is not supported yet", srcRef.Transport().Name()) - } - -- var name string - ref := srcRef.DockerReference() - if ref == nil { - return "", errors.New("get the docker reference associated with source reference failed") - } -- -- if named, ok := ref.(reference.Named); ok { -- name = named.Name() -- if tag, ok := ref.(reference.NamedTagged); ok { -- name = name + ":" + tag.Tag() -- } -- if dig, ok := ref.(reference.Canonical); ok { -- name = name + "@" + dig.Digest().String() -- } -+ name := ref.Name() -+ if tag, ok := ref.(reference.NamedTagged); ok { -+ name = name + ":" + tag.Tag() - } -- if _, err := is.Transport.ParseStoreReference(store, name); err != nil { -- return "", errors.Wrapf(err, "parsing image name %q failed", name) -+ if dig, ok := ref.(reference.Canonical); ok { -+ name = name + "@" + dig.Digest().String() - } - - return name, nil -diff --git a/util/util.go b/util/util.go -index f5276080..8c1e09e4 100644 ---- a/util/util.go -+++ b/util/util.go -@@ -318,7 +318,8 @@ func ChangeGroup(path, g string) error { - - // GenerateNonCryptoID generate none crypto id with length 32 - func GenerateNonCryptoID() string { -- b := make([]byte, 32) -+ nonCryptoIDLength := 32 -+ b := make([]byte, nonCryptoIDLength) - _, err := rand.Read(b) - if err != nil { - panic(err) // This shouldn't happen --- -2.31.1 - diff --git a/patch/0069-make-add-make-info-for-Makefile.patch b/patch/0069-make-add-make-info-for-Makefile.patch deleted file mode 100644 index a44c251..0000000 --- a/patch/0069-make-add-make-info-for-Makefile.patch +++ /dev/null @@ -1,151 +0,0 @@ -From a7c81c6997cb6f9eb25b227430789555f700fa4c Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Wed, 15 Sep 2021 11:32:16 +0800 -Subject: [PATCH 20/20] make: add make info for Makefile - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - Makefile | 73 +++++++++++++++++++++++++++++++++----------------------- - 1 file changed, 43 insertions(+), 30 deletions(-) - -diff --git a/Makefile b/Makefile -index d5b1c537..d41a9fdb 100644 ---- a/Makefile -+++ b/Makefile -@@ -39,22 +39,30 @@ else - export GO_BUILD=$(GO) build - endif - -+##@ Help -+.PHONY: help -+help: ## Display the help info -+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) -+ -+##@ Build -+ -+.PHONY: all ## Build both isula-build and isula-builder - all: isula-build isula-builder - - .PHONY: isula-build --isula-build: ./cmd/cli -+isula-build: ./cmd/cli ## Build isula-build only - @echo "Making isula-build..." - $(GO_BUILD) -ldflags '$(LDFLAGS)' -o bin/isula-build $(BUILDFLAGS) ./cmd/cli - @echo "isula-build done!" - - .PHONY: isula-builder --isula-builder: ./cmd/daemon -+isula-builder: ./cmd/daemon ## Build isula-builder only - @echo "Making isula-builder..." - $(GO_BUILD) -ldflags '$(LDFLAGS)' -o bin/isula-builder $(BUILDFLAGS) ./cmd/daemon - @echo "isula-builder done!" - - .PHONY: safe --safe: -+safe: ## Build binary with secure compile flag enabled - @echo "Safe building isula-build..." - mkdir -p ${TMPDIR} - $(GO_BUILD) -ldflags '$(SAFEBUILDFLAGS) $(STATIC_LDFLAGS)' -o bin/isula-build $(BUILDFLAGS) ./cmd/cli 2>/dev/null -@@ -62,7 +70,7 @@ safe: - @echo "Safe build isula-build done!" - - .PHONY: debug --debug: -+debug: ## Build binary with debug info inside - @echo "Debug building isula-build..." - @cp -f ./hack/profiling ./daemon/profiling.go - $(GO_BUILD) -ldflags '$(LDFLAGS)' -gcflags="all=-N -l" -o bin/isula-build $(BUILDFLAGS) ./cmd/cli -@@ -70,59 +78,64 @@ debug: - @rm -f ./daemon/profiling.go - @echo "Debug build isula-build done!" - --.PHONY: build-image --build-image: -- isula-build ctr-img build -f Dockerfile.proto ${IMAGE_BUILDARGS} -o isulad:${IMAGE_NAME}:latest . -+.PHONY: install -+install: ## Install binary and configs -+ install -D -m0550 bin/isula-build $(BINDIR) -+ install -D -m0550 bin/isula-builder $(BINDIR) -+ @( getent group isula > /dev/null ) || ( groupadd --system isula ) -+ @[ ! -d ${CONFIG_DIR}/${CONFIG_FILE} ] && install -dm0650 ${CONFIG_DIR} -+ @( [ -f ${CONFIG_DIR}/${CONFIG_FILE} ] && printf "%-20s %s\n" "${CONFIG_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${CONFIG_FILE} ${CONFIG_DIR}/${CONFIG_FILE} -+ @( [ -f ${CONFIG_DIR}/${POLICY_FILE} ] && printf "%-20s %s\n" "${POLICY_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${POLICY_FILE} ${CONFIG_DIR}/${POLICY_FILE} -+ @( [ -f ${CONFIG_DIR}/${REGIST_FILE} ] && printf "%-20s %s\n" "${REGIST_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${REGIST_FILE} ${CONFIG_DIR}/${REGIST_FILE} -+ @( [ -f ${CONFIG_DIR}/${STORAGE_FILE} ] && printf "%-20s %s\n" "${STORAGE_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${STORAGE_FILE} ${CONFIG_DIR}/${STORAGE_FILE} -+ -+ -+##@ Test - --tests: test-unit test-integration -+tests: test-base test-unit test-integration ## Test all - - .PHONY: test-base --test-base: -+test-base: ## Test base case - @echo "Base test starting..." - @./tests/test.sh base - @echo "Base test done!" - - .PHONY: test-unit --test-unit: -+test-unit: ## Test unit case - @echo "Unit test starting..." - @./hack/unit_test.sh - @echo "Unit test done!" - - .PHONY: test-integration --test-integration: debug install -+test-integration: ## Test integration case - @echo "Integration test starting..." -- @./tests/test.sh base - @./tests/test.sh integration - @echo "Integration test done!" - -+##@ Development -+ -+.PHONY: build-image -+build-image: ## Build protobuf compile environment container image -+ isula-build ctr-img build -f Dockerfile.proto ${IMAGE_BUILDARGS} -o isulad:${IMAGE_NAME}:latest . -+ - .PHONY: proto --proto: -+proto: ## Generate protobuf file - @echo "Generating protobuf..." - isula run -i --rm --runtime runc -v ${PWD}:/go/src/isula.org/isula-build ${IMAGE_NAME} ./hack/generate_proto.sh - @echo "Protobuf files have been generated!" - --.PHONY: install --install: -- install -D -m0550 bin/isula-build $(BINDIR) -- install -D -m0550 bin/isula-builder $(BINDIR) -- @( getent group isula > /dev/null ) || ( groupadd --system isula ) -- @[ ! -d ${CONFIG_DIR}/${CONFIG_FILE} ] && install -dm0650 ${CONFIG_DIR} -- @( [ -f ${CONFIG_DIR}/${CONFIG_FILE} ] && printf "%-20s %s\n" "${CONFIG_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${CONFIG_FILE} ${CONFIG_DIR}/${CONFIG_FILE} -- @( [ -f ${CONFIG_DIR}/${POLICY_FILE} ] && printf "%-20s %s\n" "${POLICY_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${POLICY_FILE} ${CONFIG_DIR}/${POLICY_FILE} -- @( [ -f ${CONFIG_DIR}/${REGIST_FILE} ] && printf "%-20s %s\n" "${REGIST_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${REGIST_FILE} ${CONFIG_DIR}/${REGIST_FILE} -- @( [ -f ${CONFIG_DIR}/${STORAGE_FILE} ] && printf "%-20s %s\n" "${STORAGE_FILE}" "already exist in ${CONFIG_DIR}, please replace it manually." ) || install -D -m0600 ${LOCAL_CONF_PREFIX}/${STORAGE_FILE} ${CONFIG_DIR}/${STORAGE_FILE} -+.PHONY: check -+check: ## Static check for current commit -+ @echo "Static check start for last commit" -+ @./hack/static_check.sh last -+ @echo "Static check last commit finished" - - .PHONY: checkall --checkall: -+checkall: ## Static check for whole project - @echo "Static check start for whole project" - @./hack/static_check.sh all - @echo "Static check project finished" --.PHONY: check --check: -- @echo "Static check start for last commit" -- @./hack/static_check.sh last -- @echo "Static check last commit finished" - - .PHONY: clean --clean: -+clean: ## Clean project - rm -rf ./bin --- -2.31.1 - diff --git a/patch/0070-clean-code-all-latest-tag-checks-take-the-FindImage-.patch b/patch/0070-clean-code-all-latest-tag-checks-take-the-FindImage-.patch deleted file mode 100644 index 324d4fb..0000000 --- a/patch/0070-clean-code-all-latest-tag-checks-take-the-FindImage-.patch +++ /dev/null @@ -1,391 +0,0 @@ -From d6c6a81dd3cb73685c5cdf029cf9dd5602d3d44d Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Sun, 29 Aug 2021 01:07:58 +0800 -Subject: [PATCH 4/5] clean code: all latest tag checks take the FindImage as - the entrance - ---- - builder/dockerfile/builder.go | 2 +- - constant.go | 2 + - daemon/push.go | 6 --- - daemon/save.go | 24 ++++------ - exporter/docker/archive/archive.go | 56 +++++++++++++--------- - image/image.go | 40 ++++++++-------- - image/image_test.go | 96 ++++++++++++++++++++++++++++++++++++++ - 7 files changed, 160 insertions(+), 66 deletions(-) - -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index 1e1e24d..e28fac9 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -646,7 +646,7 @@ func CheckAndExpandTag(tag string) (reference.Named, string, error) { - if sepLastIndex == -1 || (sepLastIndex < slashLastIndex) { - // isula - // localhost:5000/isula -- newTag += ":latest" -+ newTag = fmt.Sprintf("%s:%s", newTag, constant.DefaultTag) - } - - const longestTagFieldsLen = 3 -diff --git a/constant.go b/constant.go -index bfe399b..4d1596a 100644 ---- a/constant.go -+++ b/constant.go -@@ -89,6 +89,8 @@ const ( - IsuladTransport = "isulad" - // ManifestTransport used to export manifest list - ManifestTransport = "manifest" -+ // DefaultTag is latest -+ DefaultTag = "latest" - ) - - var ( -diff --git a/daemon/push.go b/daemon/push.go -index d3f5571..ac05383 100644 ---- a/daemon/push.go -+++ b/daemon/push.go -@@ -68,12 +68,6 @@ func (b *Backend) Push(req *pb.PushRequest, stream pb.Control_PushServer) error - return err - } - -- imageName, err := image.CheckAndAddDefaultTag(opt.imageName, opt.localStore) -- if err != nil { -- return err -- } -- opt.imageName = imageName -- - manifestType, gErr := exporter.GetManifestType(opt.format) - if gErr != nil { - return gErr -diff --git a/daemon/save.go b/daemon/save.go -index 35b67de..ee70691 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -16,6 +16,7 @@ package daemon - import ( - "context" - "os" -+ "strings" - - "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/types" -@@ -76,7 +77,7 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - var err error - opts := b.getSaveOptions(req) - -- if err = checkFormatAndExpandTag(&opts); err != nil { -+ if err = checkFormat(&opts); err != nil { - return err - } - if err = filterImageName(&opts); err != nil { -@@ -159,7 +160,7 @@ func messageHandler(stream pb.Control_SaveServer, cliLogger *logger.Logger) func - } - } - --func checkFormatAndExpandTag(opts *saveOptions) error { -+func checkFormat(opts *saveOptions) error { - switch opts.format { - case constant.DockerTransport: - opts.format = constant.DockerArchiveTransport -@@ -169,14 +170,6 @@ func checkFormatAndExpandTag(opts *saveOptions) error { - return errors.New("wrong image format provided") - } - -- for i, imageName := range opts.oriImgList { -- nameWithTag, err := image.CheckAndAddDefaultTag(imageName, opts.localStore) -- if err != nil { -- return errors.Wrapf(err, "check format and expand tag failed with image name %q", imageName) -- } -- opts.oriImgList[i] = nameWithTag -- } -- - return nil - } - -@@ -205,12 +198,11 @@ func filterImageName(opts *saveOptions) error { - opts.finalImageOrdered = append(opts.finalImageOrdered, img.ID) - } - -- ref, err := reference.Parse(imageName) -- if err != nil { -- return errors.Wrapf(err, "filter image name failed when parsing name %q", imageName) -- } -- tagged, withTag := ref.(reference.NamedTagged) -- if withTag { -+ if !strings.HasPrefix(img.ID, imageName) { -+ tagged, _, err := image.GetNamedTaggedReference(imageName) -+ if err != nil { -+ return errors.Wrapf(err, "get named tagged reference failed when saving image %q", imageName) -+ } - finalImage.tags = append(finalImage.tags, tagged) - } - opts.finalImageSet[img.ID] = finalImage -diff --git a/exporter/docker/archive/archive.go b/exporter/docker/archive/archive.go -index 36a2881..60e67fd 100644 ---- a/exporter/docker/archive/archive.go -+++ b/exporter/docker/archive/archive.go -@@ -19,7 +19,6 @@ import ( - "sync" - - "github.com/containers/image/v5/docker/archive" -- "github.com/containers/image/v5/transports/alltransports" - "github.com/containers/image/v5/types" - "github.com/pkg/errors" - -@@ -50,24 +49,47 @@ func (d *dockerArchiveExporter) Name() string { - } - - func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec string, localStore *store.Store) error { -- var ( -- srcReference types.ImageReference -- destReference types.ImageReference -- err error -- ) -+ var archiveFilePath string -+ - const partsNum = 2 -- // src could be form of ImageID digest or name[:tag] -+ -+ // src is an imageid digest - // destSpec could be "file:name:tag" or "file:name" or just "file" with transport "docker-archive", such as docker-archive:output.tar:name:tag -- // When more than two parts, build must be called -+ if parts := strings.Split(destSpec, ":"); len(parts) < partsNum { -+ return errors.Errorf("image name %q is invalid", destSpec) -+ } else if len(parts) == partsNum { -+ archiveFilePath = strings.SplitN(destSpec, ":", partsNum)[1] -+ } else { -+ fileNameTag := strings.SplitN(destSpec, ":", partsNum)[1] -+ archiveFilePath = strings.SplitN(fileNameTag, ":", partsNum)[0] -+ } -+ -+ if DockerArchiveExporter.GetArchiveWriter(opts.ExportID) == nil { -+ archWriter, err := archive.NewWriter(opts.SystemContext, archiveFilePath) -+ if err != nil { -+ return errors.Wrapf(err, "create archive writer failed") -+ } -+ DockerArchiveExporter.InitArchiveWriter(opts.ExportID, archWriter) -+ } -+ -+ // when destSpec is more than two parts, build operation must be called - if parts := strings.Split(destSpec, ":"); len(parts) > partsNum { -- srcReference, _, err = image.FindImage(localStore, src) -+ srcReference, _, err := image.FindImage(localStore, src) - if err != nil { - return errors.Wrapf(err, "find src image: %q failed with transport %q", src, d.Name()) - } -- destReference, err = alltransports.ParseImageName(destSpec) -+ -+ // removing docker.io/library/ prefix by not using alltransports.ParseImageName -+ namedTagged, _, err := image.GetNamedTaggedReference(strings.Join(parts[2:], ":")) -+ if err != nil { -+ return errors.Wrapf(err, "get named tagged reference of image %q failed", strings.Join(parts[2:], ":")) -+ } -+ archiveWriter := DockerArchiveExporter.GetArchiveWriter(opts.ExportID) -+ destReference, err := archiveWriter.NewReference(namedTagged) - if err != nil { - return errors.Wrapf(err, "parse dest spec: %q failed with transport %q", destSpec, d.Name()) - } -+ - d.Lock() - d.items[opts.ExportID] = exporter.Bus{ - SrcRef: srcReference, -@@ -79,23 +101,13 @@ func (d *dockerArchiveExporter) Init(opts exporter.ExportOptions, src, destSpec - } - - // from build or save, we can get path from the other part -- archiveFilePath := strings.SplitN(destSpec, ":", partsNum)[1] -- -- if DockerArchiveExporter.GetArchiveWriter(opts.ExportID) == nil { -- archWriter, wErr := archive.NewWriter(opts.SystemContext, archiveFilePath) -- if wErr != nil { -- return errors.Wrapf(wErr, "create archive writer failed") -- } -- DockerArchiveExporter.InitArchiveWriter(opts.ExportID, archWriter) -- } -- -- srcReference, _, err = image.FindImage(localStore, src) -+ srcReference, _, err := image.FindImage(localStore, src) - if err != nil { - return errors.Wrapf(err, "find src image: %q failed with transport %q", src, d.Name()) - } - - archiveWriter := DockerArchiveExporter.GetArchiveWriter(opts.ExportID) -- destReference, err = archiveWriter.NewReference(nil) -+ destReference, err := archiveWriter.NewReference(nil) - if err != nil { - return errors.Wrapf(err, "parse dest spec: %q failed", destSpec) - } -diff --git a/image/image.go b/image/image.go -index b6210f2..5dda185 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -482,7 +482,7 @@ func FindImage(store *store.Store, image string) (types.ImageReference, *storage - if err != nil { - return nil, nil, errors.Wrapf(err, "failed to parse image %q in local store", localName) - } -- -+ - return ref, img, nil - } - -@@ -528,9 +528,8 @@ func tryResolveNameInStore(name string, store *store.Store) string { - return img.ID - } - -- defaultTag := "latest" -- logrus.Infof("Try to find image: %s:%s in local storage", name, defaultTag) -- img, err = store.Image(fmt.Sprintf("%s:%s", name, defaultTag)) -+ logrus.Infof("Try to find image: %s:%s in local storage", name, constant.DefaultTag) -+ img, err = store.Image(fmt.Sprintf("%s:%s", name, constant.DefaultTag)) - if err != nil { - return "" - } -@@ -621,25 +620,24 @@ func tryResolveNameInRegistries(name string, sc *types.SystemContext) ([]string, - return candidates, constant.DockerTransport - } - --// CheckAndAddDefaultTag checks if src is format of repository[:tag], add default tag if src without tag --func CheckAndAddDefaultTag(imageName string, store *store.Store) (string, error) { -- _, img, err := FindImage(store, imageName) -- if err != nil { -- return "", errors.Wrapf(err, "find src image: %q failed", imageName) -+// GetNamedTaggedReference checks an image name, if it does not include a tag, default tag "latest" will be added to it. -+func GetNamedTaggedReference(image string) (reference.NamedTagged, string, error) { -+ if image == "" { -+ return nil, "", nil - } - -- defaultTag := "latest" -- for _, name := range img.Names { -- // for imageName is the format of repository[:tag] -- if imageName == name { -- return imageName, nil -- } -- // for name is the format of repository -- if fmt.Sprintf("%s:%s", imageName, defaultTag) == name { -- return name, nil -- } -+ if slashLastIndex, sepLastIndex := strings.LastIndex(image, "/"), strings.LastIndex(image, ":"); sepLastIndex == -1 || (sepLastIndex < slashLastIndex) { -+ image = fmt.Sprintf("%s:%s", image, constant.DefaultTag) -+ } -+ -+ ref, err := reference.Parse(image) -+ if err != nil { -+ return nil, "", errors.Wrapf(err, "filter image name failed when parsing name %q", image) -+ } -+ tagged, withTag := ref.(reference.NamedTagged) -+ if !withTag { -+ return nil, "", errors.Errorf("image %q does not contain a tag even though the default tag is added", image) - } - -- // for imageName is the format of imageID -- return imageName, nil -+ return tagged, image, nil - } -diff --git a/image/image_test.go b/image/image_test.go -index 43d936f..15b13e1 100644 ---- a/image/image_test.go -+++ b/image/image_test.go -@@ -123,3 +123,99 @@ registries = [] - assert.Assert(t, cmp.Contains(candidates, "localhost/busybox:latest")) - assert.Equal(t, transport, constant.DockerTransport) - } -+ -+func TestGetNamedTaggedReference(t *testing.T) { -+ type testcase struct { -+ name string -+ tag string -+ output string -+ wantErr bool -+ errString string -+ } -+ testcases := []testcase{ -+ { -+ name: "test 1", -+ tag: "isula/test", -+ output: "isula/test:latest", -+ wantErr: false, -+ }, -+ { -+ name: "test 2", -+ tag: "localhost:5000/test", -+ output: "localhost:5000/test:latest", -+ wantErr: false, -+ }, -+ { -+ name: "test 3", -+ tag: "isula/test:latest", -+ output: "isula/test:latest", -+ wantErr: false, -+ }, -+ { -+ name: "test 4", -+ tag: "localhost:5000/test:latest", -+ output: "localhost:5000/test:latest", -+ wantErr: false, -+ }, -+ { -+ name: "test 5", -+ tag: "localhost:5000:aaa/test:latest", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "test 6", -+ tag: "localhost:5000:aaa/test", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "test 7", -+ tag: "localhost:5000/test:latest:latest", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "test 8", -+ tag: "test:latest:latest", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "test 9", -+ tag: "", -+ output: "", -+ wantErr: false, -+ }, -+ { -+ name: "test 10", -+ tag: "abc efg:latest", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ { -+ name: "test 11", -+ tag: "abc!@#:latest", -+ output: "", -+ wantErr: true, -+ errString: "invalid reference format", -+ }, -+ } -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ _, tag, err := GetNamedTaggedReference(tc.tag) -+ if !tc.wantErr { -+ assert.Equal(t, tag, tc.output, tc.name) -+ } -+ if tc.wantErr { -+ assert.ErrorContains(t, err, tc.errString) -+ } -+ }) -+ -+ } -+} --- -1.8.3.1 - diff --git a/patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch b/patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch deleted file mode 100644 index 9e19dc8..0000000 --- a/patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch +++ /dev/null @@ -1,236 +0,0 @@ -From 7117427081e16b18eca768bf4e3274bd3e1fbb2b Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Wed, 1 Sep 2021 22:29:12 +0800 -Subject: [PATCH 5/5] use image.GetNamedTaggedReference instead of - dockerfile.CheckAndExpandTag - ---- - builder/dockerfile/builder.go | 44 +------------------- - builder/dockerfile/builder_test.go | 84 -------------------------------------- - daemon/import.go | 2 +- - daemon/manifest.go | 3 +- - daemon/tag.go | 3 +- - 5 files changed, 5 insertions(+), 131 deletions(-) - -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index e28fac9..df8c6ce 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -27,7 +27,6 @@ import ( - "strings" - "time" - -- "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/manifest" - securejoin "github.com/cyphar/filepath-securejoin" - "github.com/opencontainers/go-digest" -@@ -203,14 +202,14 @@ func parseTag(output, additionalTag string) (string, string, error) { - addTag string - ) - if tag = parseOutputTag(output); tag != "" { -- _, tag, err = CheckAndExpandTag(tag) -+ _, tag, err = image.GetNamedTaggedReference(tag) - if err != nil { - return "", "", err - } - } - - if additionalTag != "" { -- _, addTag, err = CheckAndExpandTag(additionalTag) -+ _, addTag, err = image.GetNamedTaggedReference(additionalTag) - if err != nil { - return "", "", err - } -@@ -633,42 +632,3 @@ func parseOutputTag(output string) string { - - return tag - } -- --// CheckAndExpandTag checks tag name. If it not include a tag, "latest" will be added. --func CheckAndExpandTag(tag string) (reference.Named, string, error) { -- if tag == "" { -- return nil, "", nil -- } -- -- newTag := tag -- slashLastIndex := strings.LastIndex(newTag, "/") -- sepLastIndex := strings.LastIndex(newTag, ":") -- if sepLastIndex == -1 || (sepLastIndex < slashLastIndex) { -- // isula -- // localhost:5000/isula -- newTag = fmt.Sprintf("%s:%s", newTag, constant.DefaultTag) -- } -- -- const longestTagFieldsLen = 3 -- if len(strings.Split(newTag, ":")) > longestTagFieldsLen { -- // localhost:5000:5000/isula:latest -- return nil, "", errors.Errorf("invalid tag: %v", newTag) -- } -- -- oriRef, err := reference.ParseNormalizedNamed(newTag) -- if err != nil { -- return nil, "", errors.Wrapf(err, "parse tag err, invalid tag: %v", newTag) -- } -- -- tagWithoutRepo := newTag[slashLastIndex+1:] -- _, err = reference.ParseNormalizedNamed(tagWithoutRepo) -- if err != nil { -- // isula:latest:latest -- // localhost/isula:latest:latest -- // isula!@#:latest -- // isula :latest -- return nil, "", errors.Wrapf(err, "parse tag err, invalid tag: %v", newTag) -- } -- -- return oriRef, newTag, nil --} -diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go -index 60668e1..c2fec6c 100644 ---- a/builder/dockerfile/builder_test.go -+++ b/builder/dockerfile/builder_test.go -@@ -1470,87 +1470,3 @@ func TestNewBuilder(t *testing.T) { - }) - } - } -- --func TestCheckAndExpandTag(t *testing.T) { -- type testcase struct { -- name string -- tag string -- output string -- wantErr bool -- } -- testcases := []testcase{ -- { -- name: "test 1", -- tag: "isula/test", -- output: "isula/test:latest", -- wantErr: false, -- }, -- { -- name: "test 2", -- tag: "localhost:5000/test", -- output: "localhost:5000/test:latest", -- wantErr: false, -- }, -- { -- name: "test 3", -- tag: "isula/test:latest", -- output: "isula/test:latest", -- wantErr: false, -- }, -- { -- name: "test 4", -- tag: "localhost:5000/test:latest", -- output: "localhost:5000/test:latest", -- wantErr: false, -- }, -- { -- name: "test 5", -- tag: "localhost:5000:aaa/test:latest", -- output: "", -- wantErr: true, -- }, -- { -- name: "test 6", -- tag: "localhost:5000:aaa/test", -- output: "", -- wantErr: true, -- }, -- { -- name: "test 7", -- tag: "localhost:5000/test:latest:latest", -- output: "", -- wantErr: true, -- }, -- { -- name: "test 8", -- tag: "test:latest:latest", -- output: "", -- wantErr: true, -- }, -- { -- name: "test 9", -- tag: "", -- output: "", -- wantErr: false, -- }, -- { -- name: "test 10", -- tag: "abc efg:latest", -- output: "", -- wantErr: true, -- }, -- { -- name: "test 10", -- tag: "abc!@#:latest", -- output: "", -- wantErr: true, -- }, -- } -- for _, tc := range testcases { -- _, tag, err := CheckAndExpandTag(tc.tag) -- assert.Equal(t, tag, tc.output, tc.name) -- if (err != nil) != tc.wantErr { -- t.Errorf("getCheckAndExpandTag() error = %v, wantErr %v", err, tc.wantErr) -- } -- } --} -diff --git a/daemon/import.go b/daemon/import.go -index 40a0a92..2da36be 100644 ---- a/daemon/import.go -+++ b/daemon/import.go -@@ -62,7 +62,7 @@ func (b *Backend) Import(req *pb.ImportRequest, stream pb.Control_ImportServer) - logEntry.Error(err) - return err - } -- _, reference, err = dockerfile.CheckAndExpandTag(reference) -+ _, reference, err = image.GetNamedTaggedReference(reference) - if err != nil { - logEntry.Error(err) - return err -diff --git a/daemon/manifest.go b/daemon/manifest.go -index 36e7674..940850e 100644 ---- a/daemon/manifest.go -+++ b/daemon/manifest.go -@@ -26,7 +26,6 @@ import ( - - constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" -- "isula.org/isula-build/builder/dockerfile" - "isula.org/isula-build/exporter" - "isula.org/isula-build/image" - "isula.org/isula-build/pkg/logger" -@@ -61,7 +60,7 @@ func (b *Backend) ManifestCreate(ctx context.Context, req *pb.ManifestCreateRequ - } - - // expand list name -- _, imageName, err := dockerfile.CheckAndExpandTag(manifestName) -+ _, imageName, err := image.GetNamedTaggedReference(manifestName) - if err != nil { - logrus.WithField(util.LogKeySessionID, manifestName).Errorf("Check and expand list name err: %v", err) - return &pb.ManifestCreateResponse{}, err -diff --git a/daemon/tag.go b/daemon/tag.go -index fe6a5a2..57de15c 100644 ---- a/daemon/tag.go -+++ b/daemon/tag.go -@@ -21,7 +21,6 @@ import ( - "github.com/sirupsen/logrus" - - pb "isula.org/isula-build/api/services" -- "isula.org/isula-build/builder/dockerfile" - "isula.org/isula-build/image" - ) - -@@ -40,7 +39,7 @@ func (b *Backend) Tag(ctx context.Context, req *pb.TagRequest) (*gogotypes.Empty - return emptyResp, errors.Wrapf(err, "find local image %v error", req.Image) - } - -- _, imageName, err := dockerfile.CheckAndExpandTag(req.Tag) -+ _, imageName, err := image.GetNamedTaggedReference(req.Tag) - if err != nil { - return emptyResp, err - } --- -1.8.3.1 - diff --git a/patch/0072-protocol-define-separator-protocol.patch b/patch/0072-protocol-define-separator-protocol.patch deleted file mode 100644 index 131f4af..0000000 --- a/patch/0072-protocol-define-separator-protocol.patch +++ /dev/null @@ -1,754 +0,0 @@ -From 4de32e443640b4b4481c619aeb2571d1872f9008 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 26 Oct 2021 14:18:34 +0800 -Subject: [PATCH 01/16] protocol:define separator protocol - -reason: define separator protocol -save: add SeparatorSave(base, lib, rename, dest) -load: add LoadID, SeparatorLoad(app, dir, base, lib, skipCheck) - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - api/services/control.pb.go | 491 ++++++++++++++++++++++++++----------- - api/services/control.proto | 36 +++ - 2 files changed, 381 insertions(+), 146 deletions(-) - -diff --git a/api/services/control.pb.go b/api/services/control.pb.go -index 0c8b6394..4f386671 100644 ---- a/api/services/control.pb.go -+++ b/api/services/control.pb.go -@@ -1054,10 +1054,16 @@ func (m *LogoutResponse) GetResult() string { - - type LoadRequest struct { - // path is the path of loading file -- Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` -- XXX_NoUnkeyedLiteral struct{} `json:"-"` -- XXX_unrecognized []byte `json:"-"` -- XXX_sizecache int32 `json:"-"` -+ Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` -+ // loadID is the unique ID for each time load -+ // also is the part of construct temporary path to -+ // store transport file -+ LoadID string `protobuf:"bytes,2,opt,name=loadID,proto3" json:"loadID,omitempty"` -+ // SeparatorLoad is the info to load separated image -+ Sep *SeparatorLoad `protobuf:"bytes,3,opt,name=sep,proto3" json:"sep,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` - } - - func (m *LoadRequest) Reset() { *m = LoadRequest{} } -@@ -1091,6 +1097,104 @@ func (m *LoadRequest) GetPath() string { - return "" - } - -+func (m *LoadRequest) GetLoadID() string { -+ if m != nil { -+ return m.LoadID -+ } -+ return "" -+} -+ -+func (m *LoadRequest) GetSep() *SeparatorLoad { -+ if m != nil { -+ return m.Sep -+ } -+ return nil -+} -+ -+type SeparatorLoad struct { -+ // app is application image name -+ App string `protobuf:"bytes,1,opt,name=app,proto3" json:"app,omitempty"` -+ // dir is image tarballs directory -+ Dir string `protobuf:"bytes,2,opt,name=dir,proto3" json:"dir,omitempty"` -+ // base is base image tarball path -+ Base string `protobuf:"bytes,3,opt,name=base,proto3" json:"base,omitempty"` -+ // lib is library image tarball path -+ Lib string `protobuf:"bytes,4,opt,name=lib,proto3" json:"lib,omitempty"` -+ // skipCheck is flag to skip sha256 check sum for images -+ SkipCheck bool `protobuf:"varint,5,opt,name=skipCheck,proto3" json:"skipCheck,omitempty"` -+ // enabled is flag to indicate the separator function enabled or not -+ Enabled bool `protobuf:"varint,6,opt,name=enabled,proto3" json:"enabled,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SeparatorLoad) Reset() { *m = SeparatorLoad{} } -+func (m *SeparatorLoad) String() string { return proto.CompactTextString(m) } -+func (*SeparatorLoad) ProtoMessage() {} -+func (*SeparatorLoad) Descriptor() ([]byte, []int) { -+ return fileDescriptor_d71ef680555cb937, []int{19} -+} -+func (m *SeparatorLoad) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_SeparatorLoad.Unmarshal(m, b) -+} -+func (m *SeparatorLoad) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_SeparatorLoad.Marshal(b, m, deterministic) -+} -+func (m *SeparatorLoad) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SeparatorLoad.Merge(m, src) -+} -+func (m *SeparatorLoad) XXX_Size() int { -+ return xxx_messageInfo_SeparatorLoad.Size(m) -+} -+func (m *SeparatorLoad) XXX_DiscardUnknown() { -+ xxx_messageInfo_SeparatorLoad.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SeparatorLoad proto.InternalMessageInfo -+ -+func (m *SeparatorLoad) GetApp() string { -+ if m != nil { -+ return m.App -+ } -+ return "" -+} -+ -+func (m *SeparatorLoad) GetDir() string { -+ if m != nil { -+ return m.Dir -+ } -+ return "" -+} -+ -+func (m *SeparatorLoad) GetBase() string { -+ if m != nil { -+ return m.Base -+ } -+ return "" -+} -+ -+func (m *SeparatorLoad) GetLib() string { -+ if m != nil { -+ return m.Lib -+ } -+ return "" -+} -+ -+func (m *SeparatorLoad) GetSkipCheck() bool { -+ if m != nil { -+ return m.SkipCheck -+ } -+ return false -+} -+ -+func (m *SeparatorLoad) GetEnabled() bool { -+ if m != nil { -+ return m.Enabled -+ } -+ return false -+} -+ - type LoadResponse struct { - // log is the log sent to client - Log string `protobuf:"bytes,1,opt,name=log,proto3" json:"log,omitempty"` -@@ -1103,7 +1207,7 @@ func (m *LoadResponse) Reset() { *m = LoadResponse{} } - func (m *LoadResponse) String() string { return proto.CompactTextString(m) } - func (*LoadResponse) ProtoMessage() {} - func (*LoadResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{19} -+ return fileDescriptor_d71ef680555cb937, []int{20} - } - func (m *LoadResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_LoadResponse.Unmarshal(m, b) -@@ -1146,7 +1250,7 @@ func (m *PushRequest) Reset() { *m = PushRequest{} } - func (m *PushRequest) String() string { return proto.CompactTextString(m) } - func (*PushRequest) ProtoMessage() {} - func (*PushRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{20} -+ return fileDescriptor_d71ef680555cb937, []int{21} - } - func (m *PushRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushRequest.Unmarshal(m, b) -@@ -1199,7 +1303,7 @@ func (m *PushResponse) Reset() { *m = PushResponse{} } - func (m *PushResponse) String() string { return proto.CompactTextString(m) } - func (*PushResponse) ProtoMessage() {} - func (*PushResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{21} -+ return fileDescriptor_d71ef680555cb937, []int{22} - } - func (m *PushResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PushResponse.Unmarshal(m, b) -@@ -1240,7 +1344,7 @@ func (m *PullRequest) Reset() { *m = PullRequest{} } - func (m *PullRequest) String() string { return proto.CompactTextString(m) } - func (*PullRequest) ProtoMessage() {} - func (*PullRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{22} -+ return fileDescriptor_d71ef680555cb937, []int{23} - } - func (m *PullRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PullRequest.Unmarshal(m, b) -@@ -1286,7 +1390,7 @@ func (m *PullResponse) Reset() { *m = PullResponse{} } - func (m *PullResponse) String() string { return proto.CompactTextString(m) } - func (*PullResponse) ProtoMessage() {} - func (*PullResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{23} -+ return fileDescriptor_d71ef680555cb937, []int{24} - } - func (m *PullResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PullResponse.Unmarshal(m, b) -@@ -1323,17 +1427,19 @@ type SaveRequest struct { - // path is location for output tarball - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - // format is the format of image saved to archive file, such as docker-archive, oci-archive -- Format string `protobuf:"bytes,4,opt,name=format,proto3" json:"format,omitempty"` -- XXX_NoUnkeyedLiteral struct{} `json:"-"` -- XXX_unrecognized []byte `json:"-"` -- XXX_sizecache int32 `json:"-"` -+ Format string `protobuf:"bytes,4,opt,name=format,proto3" json:"format,omitempty"` -+ // SeparatorSave is the info to save separated image -+ Sep *SeparatorSave `protobuf:"bytes,5,opt,name=sep,proto3" json:"sep,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` - } - - func (m *SaveRequest) Reset() { *m = SaveRequest{} } - func (m *SaveRequest) String() string { return proto.CompactTextString(m) } - func (*SaveRequest) ProtoMessage() {} - func (*SaveRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{24} -+ return fileDescriptor_d71ef680555cb937, []int{25} - } - func (m *SaveRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveRequest.Unmarshal(m, b) -@@ -1381,6 +1487,88 @@ func (m *SaveRequest) GetFormat() string { - return "" - } - -+func (m *SaveRequest) GetSep() *SeparatorSave { -+ if m != nil { -+ return m.Sep -+ } -+ return nil -+} -+ -+type SeparatorSave struct { -+ // base is base image name -+ Base string `protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"` -+ // lib is library image name -+ Lib string `protobuf:"bytes,2,opt,name=lib,proto3" json:"lib,omitempty"` -+ // rename is rename json file -+ Rename string `protobuf:"bytes,3,opt,name=rename,proto3" json:"rename,omitempty"` -+ // dest is destination file directory -+ Dest string `protobuf:"bytes,4,opt,name=dest,proto3" json:"dest,omitempty"` -+ // enabled is flag to indicate the separator function enabled or not -+ Enabled bool `protobuf:"varint,5,opt,name=enabled,proto3" json:"enabled,omitempty"` -+ XXX_NoUnkeyedLiteral struct{} `json:"-"` -+ XXX_unrecognized []byte `json:"-"` -+ XXX_sizecache int32 `json:"-"` -+} -+ -+func (m *SeparatorSave) Reset() { *m = SeparatorSave{} } -+func (m *SeparatorSave) String() string { return proto.CompactTextString(m) } -+func (*SeparatorSave) ProtoMessage() {} -+func (*SeparatorSave) Descriptor() ([]byte, []int) { -+ return fileDescriptor_d71ef680555cb937, []int{26} -+} -+func (m *SeparatorSave) XXX_Unmarshal(b []byte) error { -+ return xxx_messageInfo_SeparatorSave.Unmarshal(m, b) -+} -+func (m *SeparatorSave) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { -+ return xxx_messageInfo_SeparatorSave.Marshal(b, m, deterministic) -+} -+func (m *SeparatorSave) XXX_Merge(src proto.Message) { -+ xxx_messageInfo_SeparatorSave.Merge(m, src) -+} -+func (m *SeparatorSave) XXX_Size() int { -+ return xxx_messageInfo_SeparatorSave.Size(m) -+} -+func (m *SeparatorSave) XXX_DiscardUnknown() { -+ xxx_messageInfo_SeparatorSave.DiscardUnknown(m) -+} -+ -+var xxx_messageInfo_SeparatorSave proto.InternalMessageInfo -+ -+func (m *SeparatorSave) GetBase() string { -+ if m != nil { -+ return m.Base -+ } -+ return "" -+} -+ -+func (m *SeparatorSave) GetLib() string { -+ if m != nil { -+ return m.Lib -+ } -+ return "" -+} -+ -+func (m *SeparatorSave) GetRename() string { -+ if m != nil { -+ return m.Rename -+ } -+ return "" -+} -+ -+func (m *SeparatorSave) GetDest() string { -+ if m != nil { -+ return m.Dest -+ } -+ return "" -+} -+ -+func (m *SeparatorSave) GetEnabled() bool { -+ if m != nil { -+ return m.Enabled -+ } -+ return false -+} -+ - type SaveResponse struct { - // log is log send to cli - Log string `protobuf:"bytes,1,opt,name=log,proto3" json:"log,omitempty"` -@@ -1393,7 +1581,7 @@ func (m *SaveResponse) Reset() { *m = SaveResponse{} } - func (m *SaveResponse) String() string { return proto.CompactTextString(m) } - func (*SaveResponse) ProtoMessage() {} - func (*SaveResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{25} -+ return fileDescriptor_d71ef680555cb937, []int{27} - } - func (m *SaveResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_SaveResponse.Unmarshal(m, b) -@@ -1438,7 +1626,7 @@ func (m *MemData) Reset() { *m = MemData{} } - func (m *MemData) String() string { return proto.CompactTextString(m) } - func (*MemData) ProtoMessage() {} - func (*MemData) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{26} -+ return fileDescriptor_d71ef680555cb937, []int{28} - } - func (m *MemData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemData.Unmarshal(m, b) -@@ -1508,7 +1696,7 @@ func (m *MemStat) Reset() { *m = MemStat{} } - func (m *MemStat) String() string { return proto.CompactTextString(m) } - func (*MemStat) ProtoMessage() {} - func (*MemStat) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{27} -+ return fileDescriptor_d71ef680555cb937, []int{29} - } - func (m *MemStat) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_MemStat.Unmarshal(m, b) -@@ -1584,7 +1772,7 @@ func (m *StorageData) Reset() { *m = StorageData{} } - func (m *StorageData) String() string { return proto.CompactTextString(m) } - func (*StorageData) ProtoMessage() {} - func (*StorageData) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{28} -+ return fileDescriptor_d71ef680555cb937, []int{30} - } - func (m *StorageData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_StorageData.Unmarshal(m, b) -@@ -1634,7 +1822,7 @@ func (m *RegistryData) Reset() { *m = RegistryData{} } - func (m *RegistryData) String() string { return proto.CompactTextString(m) } - func (*RegistryData) ProtoMessage() {} - func (*RegistryData) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{29} -+ return fileDescriptor_d71ef680555cb937, []int{31} - } - func (m *RegistryData) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RegistryData.Unmarshal(m, b) -@@ -1686,7 +1874,7 @@ func (m *InfoRequest) Reset() { *m = InfoRequest{} } - func (m *InfoRequest) String() string { return proto.CompactTextString(m) } - func (*InfoRequest) ProtoMessage() {} - func (*InfoRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{30} -+ return fileDescriptor_d71ef680555cb937, []int{32} - } - func (m *InfoRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InfoRequest.Unmarshal(m, b) -@@ -1743,7 +1931,7 @@ func (m *InfoResponse) Reset() { *m = InfoResponse{} } - func (m *InfoResponse) String() string { return proto.CompactTextString(m) } - func (*InfoResponse) ProtoMessage() {} - func (*InfoResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{31} -+ return fileDescriptor_d71ef680555cb937, []int{33} - } - func (m *InfoResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_InfoResponse.Unmarshal(m, b) -@@ -1845,7 +2033,7 @@ func (m *ManifestCreateRequest) Reset() { *m = ManifestCreateRequest{} } - func (m *ManifestCreateRequest) String() string { return proto.CompactTextString(m) } - func (*ManifestCreateRequest) ProtoMessage() {} - func (*ManifestCreateRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{32} -+ return fileDescriptor_d71ef680555cb937, []int{34} - } - func (m *ManifestCreateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestCreateRequest.Unmarshal(m, b) -@@ -1890,7 +2078,7 @@ func (m *ManifestCreateResponse) Reset() { *m = ManifestCreateResponse{} - func (m *ManifestCreateResponse) String() string { return proto.CompactTextString(m) } - func (*ManifestCreateResponse) ProtoMessage() {} - func (*ManifestCreateResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{33} -+ return fileDescriptor_d71ef680555cb937, []int{35} - } - func (m *ManifestCreateResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestCreateResponse.Unmarshal(m, b) -@@ -1933,7 +2121,7 @@ func (m *ManifestAnnotateRequest) Reset() { *m = ManifestAnnotateRequest - func (m *ManifestAnnotateRequest) String() string { return proto.CompactTextString(m) } - func (*ManifestAnnotateRequest) ProtoMessage() {} - func (*ManifestAnnotateRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{34} -+ return fileDescriptor_d71ef680555cb937, []int{36} - } - func (m *ManifestAnnotateRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestAnnotateRequest.Unmarshal(m, b) -@@ -2006,7 +2194,7 @@ func (m *ManifestInspectRequest) Reset() { *m = ManifestInspectRequest{} - func (m *ManifestInspectRequest) String() string { return proto.CompactTextString(m) } - func (*ManifestInspectRequest) ProtoMessage() {} - func (*ManifestInspectRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{35} -+ return fileDescriptor_d71ef680555cb937, []int{37} - } - func (m *ManifestInspectRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestInspectRequest.Unmarshal(m, b) -@@ -2044,7 +2232,7 @@ func (m *ManifestInspectResponse) Reset() { *m = ManifestInspectResponse - func (m *ManifestInspectResponse) String() string { return proto.CompactTextString(m) } - func (*ManifestInspectResponse) ProtoMessage() {} - func (*ManifestInspectResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{36} -+ return fileDescriptor_d71ef680555cb937, []int{38} - } - func (m *ManifestInspectResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestInspectResponse.Unmarshal(m, b) -@@ -2083,7 +2271,7 @@ func (m *ManifestPushRequest) Reset() { *m = ManifestPushRequest{} } - func (m *ManifestPushRequest) String() string { return proto.CompactTextString(m) } - func (*ManifestPushRequest) ProtoMessage() {} - func (*ManifestPushRequest) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{37} -+ return fileDescriptor_d71ef680555cb937, []int{39} - } - func (m *ManifestPushRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestPushRequest.Unmarshal(m, b) -@@ -2128,7 +2316,7 @@ func (m *ManifestPushResponse) Reset() { *m = ManifestPushResponse{} } - func (m *ManifestPushResponse) String() string { return proto.CompactTextString(m) } - func (*ManifestPushResponse) ProtoMessage() {} - func (*ManifestPushResponse) Descriptor() ([]byte, []int) { -- return fileDescriptor_d71ef680555cb937, []int{38} -+ return fileDescriptor_d71ef680555cb937, []int{40} - } - func (m *ManifestPushResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ManifestPushResponse.Unmarshal(m, b) -@@ -2177,12 +2365,14 @@ func init() { - proto.RegisterType((*LogoutRequest)(nil), "isula.build.v1.LogoutRequest") - proto.RegisterType((*LogoutResponse)(nil), "isula.build.v1.LogoutResponse") - proto.RegisterType((*LoadRequest)(nil), "isula.build.v1.LoadRequest") -+ proto.RegisterType((*SeparatorLoad)(nil), "isula.build.v1.SeparatorLoad") - proto.RegisterType((*LoadResponse)(nil), "isula.build.v1.LoadResponse") - proto.RegisterType((*PushRequest)(nil), "isula.build.v1.PushRequest") - proto.RegisterType((*PushResponse)(nil), "isula.build.v1.PushResponse") - proto.RegisterType((*PullRequest)(nil), "isula.build.v1.PullRequest") - proto.RegisterType((*PullResponse)(nil), "isula.build.v1.PullResponse") - proto.RegisterType((*SaveRequest)(nil), "isula.build.v1.SaveRequest") -+ proto.RegisterType((*SeparatorSave)(nil), "isula.build.v1.SeparatorSave") - proto.RegisterType((*SaveResponse)(nil), "isula.build.v1.SaveResponse") - proto.RegisterType((*MemData)(nil), "isula.build.v1.MemData") - proto.RegisterType((*MemStat)(nil), "isula.build.v1.MemStat") -@@ -2202,124 +2392,133 @@ func init() { - func init() { proto.RegisterFile("api/services/control.proto", fileDescriptor_d71ef680555cb937) } - - var fileDescriptor_d71ef680555cb937 = []byte{ -- // 1861 bytes of a gzipped FileDescriptorProto -- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0x5f, 0x73, 0x1c, 0x47, -- 0x11, 0xe7, 0xfe, 0xe8, 0x5f, 0xdf, 0xe9, 0xac, 0x9a, 0x18, 0x67, 0xeb, 0xac, 0x24, 0x62, 0x63, -- 0x62, 0x61, 0x8a, 0xb3, 0x2c, 0x78, 0x20, 0x14, 0x50, 0xe8, 0x4f, 0x6c, 0x0e, 0x6c, 0x19, 0x56, -- 0x4a, 0x28, 0x2a, 0x55, 0xb8, 0x46, 0x77, 0xa3, 0xd3, 0x96, 0x77, 0x77, 0x96, 0x99, 0x59, 0xc5, -- 0x07, 0x5f, 0x83, 0x37, 0xe0, 0x33, 0xf0, 0x98, 0x4f, 0xc0, 0x13, 0x5f, 0x8a, 0xea, 0xf9, 0xb3, -- 0x3b, 0x7b, 0x7b, 0x27, 0x39, 0x6f, 0xfb, 0xeb, 0xee, 0xe9, 0xee, 0xe9, 0xee, 0xe9, 0xe9, 0x59, -- 0x18, 0xd2, 0x3c, 0x7e, 0x2a, 0x99, 0xb8, 0x89, 0x27, 0x4c, 0x3e, 0x9d, 0xf0, 0x4c, 0x09, 0x9e, -- 0x8c, 0x72, 0xc1, 0x15, 0x27, 0x83, 0x58, 0x16, 0x09, 0x1d, 0x5d, 0x16, 0x71, 0x32, 0x1d, 0xdd, -- 0x3c, 0x1b, 0x3e, 0x9c, 0x71, 0x3e, 0x4b, 0xd8, 0x53, 0xcd, 0xbd, 0x2c, 0xae, 0x9e, 0xb2, 0x34, -- 0x57, 0x73, 0x23, 0x3c, 0xfc, 0x64, 0x91, 0xa9, 0xe2, 0x94, 0x49, 0x45, 0xd3, 0xdc, 0x08, 0x84, -- 0xff, 0xed, 0x40, 0xff, 0x18, 0x55, 0x45, 0xec, 0xaf, 0x05, 0x93, 0x8a, 0x04, 0xb0, 0xa1, 0x55, -- 0x8f, 0x4f, 0x83, 0xd6, 0x5e, 0x6b, 0x7f, 0x2b, 0x72, 0x90, 0xec, 0xc2, 0x96, 0xfe, 0xbc, 0x98, -- 0xe7, 0x2c, 0x68, 0x6b, 0x5e, 0x45, 0x20, 0x1f, 0x03, 0xa0, 0x9f, 0xec, 0x9d, 0x3a, 0x8d, 0x45, -- 0xd0, 0xd1, 0x6c, 0x8f, 0x42, 0xf6, 0xa0, 0x77, 0x15, 0x27, 0xec, 0x04, 0x29, 0x99, 0x0a, 0xba, -- 0x5a, 0xc0, 0x27, 0x91, 0x07, 0xb0, 0xce, 0x0b, 0x95, 0x17, 0x2a, 0x58, 0xd3, 0x4c, 0x8b, 0x4a, -- 0xbb, 0x47, 0x62, 0x26, 0x83, 0xf5, 0xbd, 0x4e, 0x69, 0x17, 0x09, 0xe4, 0x3e, 0xac, 0xe5, 0x82, -- 0xbf, 0x9b, 0x07, 0x1b, 0x7b, 0xad, 0xfd, 0xcd, 0xc8, 0x00, 0xdc, 0x45, 0x1c, 0x4f, 0x51, 0x7b, -- 0xb0, 0x69, 0x76, 0x61, 0x21, 0xf9, 0x15, 0xf4, 0xf4, 0xe2, 0x73, 0x45, 0x55, 0x3c, 0x09, 0xb6, -- 0xf6, 0x5a, 0xfb, 0xbd, 0xc3, 0x87, 0xa3, 0x7a, 0x50, 0x47, 0xc7, 0x95, 0x48, 0xe4, 0xcb, 0x93, -- 0x47, 0xb0, 0x4d, 0xa7, 0xd3, 0x58, 0xc5, 0x3c, 0xa3, 0xc9, 0x05, 0x9d, 0x05, 0xa0, 0xd5, 0xd7, -- 0x89, 0x3a, 0x18, 0x34, 0x3f, 0x9a, 0x4e, 0x5f, 0xc6, 0x52, 0x05, 0x3d, 0xed, 0xb3, 0x47, 0x21, -- 0x43, 0xd8, 0x64, 0x99, 0x8a, 0xd5, 0x7c, 0x7c, 0x1a, 0xf4, 0xb5, 0x82, 0x12, 0xe3, 0x76, 0x59, -- 0x36, 0x11, 0xf3, 0x5c, 0xb1, 0x69, 0xb0, 0xad, 0x37, 0x55, 0x11, 0x30, 0x48, 0x57, 0x5c, 0xa4, -- 0x54, 0x05, 0x03, 0x13, 0x24, 0x83, 0x42, 0x0a, 0xdb, 0xe3, 0x34, 0xe7, 0x42, 0xb9, 0x3c, 0x0e, -- 0x61, 0x33, 0xd6, 0x84, 0x32, 0x91, 0x25, 0x46, 0x25, 0x92, 0x17, 0x62, 0xe2, 0xd2, 0x68, 0x11, -- 0x9a, 0x16, 0xec, 0x8a, 0x09, 0x96, 0x4d, 0x98, 0x4d, 0x61, 0x45, 0x08, 0x43, 0x18, 0x38, 0x13, -- 0x32, 0xe7, 0x99, 0x64, 0x64, 0x07, 0x3a, 0x09, 0x9f, 0x59, 0xf5, 0xf8, 0x19, 0xbe, 0x80, 0x9e, -- 0x17, 0x3a, 0xf2, 0x73, 0x57, 0x32, 0x71, 0xca, 0xb4, 0x58, 0xef, 0x70, 0x38, 0x32, 0x25, 0x39, -- 0x72, 0x25, 0x39, 0xba, 0x70, 0x25, 0x19, 0x55, 0xc2, 0xe1, 0x8f, 0x60, 0xdb, 0x96, 0xa5, 0xb5, -- 0x85, 0x19, 0x4d, 0xe9, 0x8c, 0x55, 0x75, 0x69, 0x21, 0x8a, 0xa2, 0xb9, 0x42, 0xde, 0x59, 0xc2, -- 0xe1, 0x13, 0x18, 0x38, 0xd1, 0x4a, 0xed, 0xc4, 0x96, 0xa4, 0x95, 0xb5, 0x30, 0xfc, 0x31, 0xf4, -- 0x30, 0x57, 0x4e, 0xe9, 0x2e, 0x6c, 0x69, 0x83, 0x67, 0xd4, 0x6e, 0x65, 0x2b, 0xaa, 0x08, 0xe1, -- 0xcf, 0x00, 0x2e, 0xe8, 0xcc, 0xc9, 0xde, 0x87, 0x35, 0xcd, 0xb2, 0x72, 0x06, 0x60, 0xb4, 0x14, -- 0x9d, 0xd9, 0x90, 0xe3, 0x67, 0xf8, 0xbf, 0x16, 0xf4, 0x8d, 0x0d, 0xeb, 0xcd, 0xaf, 0x61, 0x5d, -- 0xcb, 0xca, 0xa0, 0xb5, 0xd7, 0xd9, 0xef, 0x1d, 0x7e, 0xb6, 0x58, 0x97, 0xbe, 0xf4, 0x68, 0xac, -- 0x03, 0x90, 0x5d, 0xf1, 0xc8, 0xae, 0x1a, 0xfe, 0x1d, 0xb6, 0x4a, 0x22, 0x16, 0xa1, 0x60, 0x39, -- 0x97, 0xb1, 0xe2, 0x62, 0x6e, 0x5d, 0xf1, 0x28, 0x4d, 0x7f, 0xc8, 0x00, 0xda, 0xf1, 0xd4, 0x26, -- 0xbe, 0x1d, 0x4f, 0x75, 0x70, 0x04, 0xa3, 0x58, 0x88, 0x5d, 0x1b, 0x1c, 0x03, 0x09, 0x81, 0xae, -- 0x8c, 0xff, 0xc6, 0xec, 0x49, 0xd5, 0xdf, 0xe1, 0xbf, 0x5b, 0x70, 0xef, 0x2b, 0x26, 0x64, 0xcc, -- 0x33, 0x3f, 0xbc, 0x37, 0x86, 0xe4, 0xc2, 0x6b, 0x21, 0xc6, 0x73, 0xc6, 0xad, 0xb8, 0xeb, 0x26, -- 0x25, 0x41, 0x73, 0x63, 0x75, 0xc2, 0xd3, 0x34, 0x56, 0xae, 0x12, 0x4b, 0x42, 0xd5, 0x89, 0xb0, -- 0xac, 0xba, 0x7e, 0x27, 0x8a, 0x53, 0xa6, 0xfb, 0x88, 0x3c, 0x12, 0x93, 0xeb, 0xb2, 0x8f, 0x68, -- 0x14, 0xfe, 0x11, 0xb6, 0x23, 0x96, 0xf2, 0x1b, 0xe6, 0xd5, 0x49, 0x55, 0x52, 0x1d, 0xaf, 0xa4, -- 0x30, 0x34, 0x34, 0x49, 0xb4, 0x5b, 0x9b, 0x11, 0x7e, 0x9a, 0x36, 0x53, 0x64, 0xe6, 0x58, 0xe8, -- 0x36, 0x53, 0x64, 0x98, 0xf6, 0x81, 0x53, 0x69, 0x37, 0x1c, 0x42, 0x3f, 0xa1, 0x73, 0x26, 0x5e, -- 0x31, 0x29, 0xab, 0x0a, 0xa8, 0xd1, 0xc2, 0x7f, 0xb5, 0xe0, 0x83, 0xdf, 0x32, 0x9a, 0xa8, 0xeb, -- 0x93, 0x6b, 0x36, 0x79, 0x5b, 0xae, 0x1d, 0xc3, 0xba, 0xd4, 0xd5, 0xa9, 0x57, 0x0d, 0x0e, 0x9f, -- 0x2d, 0x66, 0x7f, 0xc9, 0xa2, 0xd1, 0x39, 0xde, 0x12, 0xd9, 0xcc, 0x96, 0xb5, 0x55, 0x10, 0xfe, -- 0x02, 0xb6, 0x6b, 0x0c, 0xd2, 0x83, 0x8d, 0x2f, 0xcf, 0x7e, 0x7f, 0xf6, 0xfa, 0x4f, 0x67, 0x3b, -- 0xdf, 0x43, 0x70, 0xfe, 0x45, 0xf4, 0xd5, 0xf8, 0xec, 0xc5, 0x4e, 0x8b, 0xdc, 0x83, 0xde, 0xd9, -- 0xeb, 0x8b, 0x37, 0x8e, 0xd0, 0x0e, 0xff, 0x02, 0xfd, 0x97, 0x7c, 0x16, 0x67, 0x2e, 0x4c, 0xd8, -- 0x2d, 0x98, 0xb8, 0x61, 0xc2, 0x6e, 0xc6, 0x22, 0xec, 0x30, 0x85, 0x64, 0x22, 0xc3, 0x03, 0x61, -- 0x12, 0x58, 0x62, 0xe4, 0xe5, 0x54, 0xca, 0x6f, 0xb8, 0x70, 0xf5, 0x54, 0x62, 0x3c, 0xaf, 0x56, -- 0xff, 0x9d, 0x67, 0xf0, 0x73, 0x2d, 0xca, 0x0b, 0x75, 0x97, 0x2f, 0x8d, 0x84, 0x85, 0xfb, 0x30, -- 0x70, 0x4b, 0xad, 0x99, 0x07, 0xb0, 0x2e, 0x98, 0x2c, 0x12, 0x67, 0xc5, 0xa2, 0xf0, 0x07, 0xd0, -- 0x7b, 0xc9, 0x69, 0x79, 0x01, 0x12, 0xe8, 0xe6, 0x54, 0x5d, 0x5b, 0x21, 0xfd, 0x1d, 0xee, 0x61, -- 0x48, 0xe8, 0xf4, 0x96, 0xc6, 0xf7, 0x35, 0xf4, 0xfe, 0x50, 0xc8, 0x6b, 0xcf, 0xcf, 0xbc, 0x90, -- 0xd7, 0x65, 0x07, 0xb2, 0xa8, 0xde, 0x45, 0xda, 0x0b, 0x5d, 0xc4, 0x6b, 0xee, 0x9d, 0x5a, 0x73, -- 0x7f, 0x02, 0x7d, 0xa3, 0xdc, 0x9a, 0x1f, 0xc2, 0xa6, 0xb0, 0xdf, 0xae, 0xb7, 0x3b, 0x1c, 0x9e, -- 0xa0, 0x23, 0x49, 0x52, 0x73, 0x24, 0x49, 0x7c, 0x47, 0x10, 0xdd, 0xee, 0x88, 0x31, 0x88, 0x4a, -- 0xde, 0xc3, 0x60, 0x0c, 0xbd, 0x73, 0x5a, 0x1d, 0x2a, 0xcc, 0x10, 0xbd, 0xa9, 0xda, 0xb4, 0x45, -- 0x48, 0xb7, 0xad, 0xad, 0xad, 0xcf, 0x9a, 0x45, 0x65, 0xb8, 0x3b, 0x55, 0xb8, 0xbd, 0x38, 0x74, -- 0x6b, 0x71, 0xd8, 0x83, 0xbe, 0x31, 0xb5, 0x32, 0x0d, 0x73, 0xd8, 0x78, 0xc5, 0xd2, 0x53, 0xaa, -- 0x28, 0xfa, 0x9c, 0xb2, 0xf4, 0x82, 0x2b, 0x9a, 0x68, 0x89, 0x4e, 0x54, 0x62, 0xac, 0xb8, 0x94, -- 0xa5, 0xcf, 0x05, 0x33, 0x7b, 0xef, 0x44, 0x0e, 0x62, 0x5c, 0xe4, 0x37, 0x34, 0x37, 0xcb, 0x3a, -- 0x9a, 0x57, 0x11, 0x50, 0x27, 0x02, 0xbd, 0xb0, 0x6b, 0x74, 0x3a, 0x1c, 0x7e, 0xdb, 0xd2, 0xb6, -- 0xf1, 0xbc, 0xe1, 0x06, 0x52, 0x96, 0x9e, 0xcf, 0xcd, 0x49, 0xee, 0x46, 0x16, 0xa1, 0xdd, 0x6b, -- 0x46, 0x73, 0x64, 0xb4, 0x35, 0xc3, 0x41, 0xb4, 0x8b, 0x9f, 0x47, 0x49, 0xc2, 0x27, 0xda, 0x6e, -- 0x37, 0xaa, 0x08, 0x8e, 0x3b, 0xce, 0xbe, 0x94, 0xc6, 0xb0, 0xe5, 0x6a, 0x02, 0x7a, 0xa5, 0xc1, -- 0x34, 0x31, 0x0d, 0xb9, 0x1b, 0x95, 0x18, 0xfb, 0x11, 0x7e, 0x47, 0x2c, 0x61, 0x54, 0xb2, 0x69, -- 0xb0, 0xae, 0xf9, 0x35, 0x5a, 0xf8, 0x06, 0x7a, 0xe7, 0x8a, 0x0b, 0x3a, 0x63, 0x3a, 0x70, 0x8f, -- 0x60, 0x5b, 0x5a, 0x28, 0xe2, 0xea, 0xa8, 0xd5, 0x89, 0xe4, 0x09, 0xec, 0x58, 0xc2, 0x31, 0x9d, -- 0xbc, 0x8d, 0xb3, 0xd9, 0x73, 0x69, 0xeb, 0xa8, 0x41, 0x0f, 0xff, 0xd1, 0x82, 0x7e, 0xc4, 0x66, -- 0xb1, 0x54, 0x62, 0xae, 0x4d, 0x3c, 0x81, 0x1d, 0x61, 0x70, 0xcc, 0xe4, 0x39, 0xa3, 0xd8, 0xac, -- 0x4d, 0x0b, 0x6e, 0xd0, 0xc9, 0x08, 0x48, 0x45, 0x1b, 0x67, 0x92, 0x4d, 0x0a, 0xc1, 0x6c, 0x11, -- 0x2d, 0xe1, 0x90, 0x7d, 0xb8, 0x57, 0x51, 0x8f, 0x13, 0x3e, 0x79, 0x1b, 0x74, 0xb4, 0xf0, 0x22, -- 0x39, 0x7c, 0x0c, 0x3d, 0x7d, 0x7b, 0x56, 0xd7, 0xc1, 0x0d, 0x13, 0x97, 0xdc, 0xd6, 0xf8, 0x66, -- 0xe4, 0x60, 0xf8, 0x9f, 0x0e, 0xf4, 0x8d, 0xa4, 0x2d, 0xbc, 0x67, 0xba, 0x7e, 0x90, 0x64, 0xa7, -- 0x9a, 0x0f, 0x17, 0x5b, 0xb5, 0xad, 0xc2, 0xc8, 0xc9, 0xe1, 0xdc, 0x69, 0xe3, 0xa2, 0x97, 0xb5, -- 0x97, 0xcf, 0x9d, 0x5e, 0x1e, 0x22, 0x5f, 0x9e, 0xfc, 0x06, 0xfa, 0xd6, 0xfd, 0xb9, 0x5e, 0xdf, -- 0xd1, 0xeb, 0x77, 0x17, 0xd7, 0xfb, 0x51, 0x8e, 0x6a, 0x2b, 0xb0, 0x4a, 0xa6, 0x48, 0xe5, 0xdc, -- 0x1d, 0xab, 0x12, 0xe3, 0xd6, 0x45, 0x91, 0x69, 0x96, 0xb9, 0x33, 0x1d, 0xc4, 0x21, 0xe2, 0xf5, -- 0xc9, 0x38, 0x2a, 0x32, 0x7c, 0x38, 0xe8, 0xea, 0xd9, 0x8a, 0x3c, 0x0a, 0xf2, 0xb5, 0x71, 0x26, -- 0xce, 0x8a, 0x54, 0xcf, 0xe0, 0x9d, 0xc8, 0xa3, 0x20, 0x7f, 0xc6, 0x23, 0x5e, 0xa8, 0x38, 0x63, -- 0x52, 0xcf, 0xe2, 0x9d, 0xc8, 0xa3, 0xd8, 0x48, 0xe2, 0xa1, 0xb1, 0xa3, 0xf8, 0xb2, 0x48, 0x22, -- 0x3b, 0x72, 0x72, 0x58, 0xd2, 0xec, 0x5d, 0xce, 0x44, 0x9c, 0xb2, 0x0c, 0x4f, 0x29, 0xe8, 0x64, -- 0xd5, 0x68, 0xe1, 0x9f, 0xe1, 0xfb, 0xaf, 0x68, 0x16, 0x5f, 0x31, 0xa9, 0x4e, 0xf4, 0xc8, 0xe2, -- 0x92, 0x1c, 0x42, 0x3f, 0xb5, 0x0c, 0x3d, 0x9b, 0xdb, 0xfb, 0xd9, 0xa7, 0xe1, 0x69, 0x73, 0xd8, -- 0x75, 0xab, 0x8a, 0x10, 0x1e, 0xc2, 0x83, 0x45, 0xd5, 0x77, 0x8e, 0xa8, 0xdf, 0xb6, 0xe0, 0x43, -- 0xb7, 0xe8, 0x28, 0xcb, 0xb8, 0xfa, 0x8e, 0x1e, 0x61, 0x2f, 0xb3, 0xd8, 0x5d, 0xb5, 0x0e, 0x63, -- 0x03, 0xd5, 0xe7, 0xc7, 0x36, 0x50, 0x7d, 0x66, 0x06, 0xd0, 0xe6, 0xd2, 0x66, 0xb9, 0xcd, 0x25, -- 0x66, 0x81, 0xcb, 0xe7, 0x8c, 0xaa, 0x42, 0x30, 0x19, 0xac, 0x99, 0xf7, 0x48, 0x45, 0xd1, 0xa5, -- 0x4f, 0x45, 0x4c, 0x33, 0x65, 0x53, 0xec, 0x60, 0xf8, 0xcb, 0x6a, 0xb7, 0xe3, 0x4c, 0xe6, 0x6c, -- 0xa2, 0xbe, 0x83, 0xdf, 0xe1, 0x4f, 0xaa, 0x6d, 0x97, 0xab, 0x6d, 0xb0, 0x08, 0x74, 0xb1, 0xfc, -- 0xf4, 0xb2, 0x7e, 0xa4, 0xbf, 0xc3, 0x57, 0xf0, 0x81, 0x13, 0xf7, 0x2f, 0xd3, 0xf7, 0x89, 0x10, -- 0xaa, 0xab, 0xa2, 0xa3, 0xbf, 0xc3, 0x11, 0xdc, 0xaf, 0xab, 0xbb, 0x7d, 0x10, 0x38, 0xfc, 0x67, -- 0x0f, 0x36, 0x4e, 0xcc, 0x5b, 0x9b, 0x9c, 0xc2, 0x9a, 0x7e, 0x7f, 0x90, 0xdd, 0xa5, 0x4f, 0x43, -- 0xeb, 0xda, 0xf0, 0xa3, 0x15, 0xdc, 0x6a, 0xa2, 0xb3, 0xf3, 0xd7, 0x47, 0xcd, 0x93, 0xee, 0x3d, -- 0x59, 0x86, 0x1f, 0xaf, 0x62, 0x1b, 0x45, 0x07, 0x2d, 0x72, 0x04, 0x5d, 0xbd, 0xd1, 0x87, 0xcb, -- 0x9f, 0x04, 0x46, 0xcd, 0xee, 0x6d, 0xef, 0x05, 0x72, 0x0c, 0x1b, 0x6e, 0xbe, 0x7e, 0xd0, 0x78, -- 0x85, 0x7d, 0x91, 0xe6, 0x6a, 0x3e, 0xfc, 0x64, 0x51, 0xc1, 0xe2, 0x40, 0x7f, 0x02, 0x5d, 0x8c, -- 0x65, 0xd3, 0x0d, 0x2f, 0x61, 0x4d, 0x37, 0xfc, 0xf0, 0x1f, 0xb4, 0x8c, 0x92, 0x24, 0x59, 0xa6, -- 0xa4, 0x9c, 0x5c, 0x96, 0x29, 0xa9, 0x26, 0x92, 0x83, 0x16, 0xc6, 0xd6, 0xcc, 0xde, 0xcd, 0xd8, -- 0xd6, 0xc6, 0xfc, 0x66, 0x6c, 0xeb, 0x23, 0xfb, 0x41, 0x8b, 0xfc, 0x0e, 0x7a, 0xde, 0x68, 0xbd, -- 0x32, 0x38, 0x9f, 0xbe, 0xc7, 0x3c, 0x8e, 0x85, 0xa3, 0xa7, 0xdb, 0x66, 0xe1, 0xf8, 0x43, 0x75, -- 0xb3, 0x70, 0xea, 0x23, 0xf1, 0x0b, 0x58, 0x37, 0xd3, 0x2b, 0x59, 0x26, 0x58, 0x0d, 0xc4, 0xcd, -- 0xcd, 0x2d, 0x0c, 0xbd, 0x27, 0xd0, 0xc5, 0xc9, 0x75, 0x49, 0xd9, 0x54, 0x23, 0xef, 0x92, 0xb2, -- 0xf1, 0x86, 0x5d, 0x13, 0x6a, 0xf3, 0xf2, 0x6f, 0x7a, 0x53, 0xfb, 0xe9, 0xd0, 0xf4, 0xa6, 0xfe, -- 0xc3, 0xe0, 0xa0, 0x45, 0x3e, 0x87, 0xce, 0x05, 0x9d, 0x91, 0xe1, 0xa2, 0x60, 0xf5, 0x7a, 0x1e, -- 0xae, 0x08, 0x3f, 0x6e, 0x05, 0xa7, 0xbf, 0xe6, 0x56, 0xbc, 0xf1, 0xb3, 0xb9, 0x15, 0x7f, 0x60, -- 0x34, 0xc7, 0x48, 0xdf, 0x86, 0x0d, 0x25, 0xde, 0x24, 0xd0, 0x54, 0x52, 0xbb, 0xfc, 0xdf, 0xc0, -- 0xa0, 0x7e, 0x01, 0x90, 0x1f, 0x36, 0xee, 0xac, 0x65, 0x77, 0xcf, 0xf0, 0xb3, 0xbb, 0xc4, 0xac, -- 0x81, 0x73, 0xd8, 0x59, 0xbc, 0x2c, 0xc8, 0xe3, 0x55, 0x6b, 0x17, 0xae, 0x93, 0x95, 0xd1, 0xbb, -- 0x84, 0x7b, 0x0b, 0xad, 0x98, 0xac, 0xf4, 0xa7, 0xde, 0xe9, 0x87, 0x8f, 0xef, 0x94, 0xb3, 0x8e, -- 0x7f, 0x0d, 0x7d, 0xbf, 0xe1, 0x92, 0x4f, 0x57, 0x2d, 0xf4, 0x9b, 0xc5, 0xa3, 0xdb, 0x85, 0x5c, -- 0xe6, 0x2e, 0xd7, 0xf5, 0x86, 0x7e, 0xfa, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x16, 0xc7, 0x54, -- 0xaa, 0x1c, 0x15, 0x00, 0x00, -+ // 2001 bytes of a gzipped FileDescriptorProto -+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0xdd, 0x73, 0x1c, 0x47, -+ 0x11, 0x67, 0xef, 0x4e, 0x5f, 0x7d, 0xa7, 0xb3, 0x6a, 0x63, 0x9c, 0xab, 0xb3, 0x92, 0xa8, 0x36, -+ 0x26, 0x16, 0xa6, 0x38, 0xc9, 0x82, 0x07, 0x42, 0x01, 0x85, 0x3e, 0x62, 0x73, 0x60, 0xcb, 0xb0, -+ 0x52, 0x42, 0x51, 0xa9, 0xc2, 0x35, 0xba, 0x1b, 0x9d, 0x16, 0xef, 0xee, 0x2c, 0x33, 0xb3, 0x8a, -+ 0x8f, 0xfc, 0x15, 0x54, 0xf1, 0xc4, 0xc7, 0xdf, 0xc0, 0x63, 0xfe, 0x02, 0x9e, 0xf8, 0xa7, 0x52, -+ 0xdd, 0x33, 0xb3, 0x1f, 0xb7, 0x27, 0xc9, 0x79, 0xdb, 0xfe, 0x98, 0x9e, 0x9e, 0xee, 0xdf, 0x74, -+ 0x4f, 0x2f, 0x0c, 0x59, 0x16, 0xed, 0x29, 0x2e, 0xaf, 0xa3, 0x09, 0x57, 0x7b, 0x13, 0x91, 0x6a, -+ 0x29, 0xe2, 0x51, 0x26, 0x85, 0x16, 0x7e, 0x3f, 0x52, 0x79, 0xcc, 0x46, 0x17, 0x79, 0x14, 0x4f, -+ 0x47, 0xd7, 0x4f, 0x87, 0x0f, 0x67, 0x42, 0xcc, 0x62, 0xbe, 0x47, 0xd2, 0x8b, 0xfc, 0x72, 0x8f, -+ 0x27, 0x99, 0x9e, 0x1b, 0xe5, 0xe1, 0x47, 0x8b, 0x42, 0x1d, 0x25, 0x5c, 0x69, 0x96, 0x64, 0x46, -+ 0x21, 0xf8, 0x5f, 0x1b, 0x7a, 0x47, 0x68, 0x2a, 0xe4, 0x7f, 0xcd, 0xb9, 0xd2, 0xfe, 0x00, 0xd6, -+ 0xc8, 0xf4, 0xf8, 0x64, 0xe0, 0xed, 0x78, 0xbb, 0x1b, 0xa1, 0x23, 0xfd, 0x6d, 0xd8, 0xa0, 0xcf, -+ 0xf3, 0x79, 0xc6, 0x07, 0x2d, 0x92, 0x95, 0x0c, 0xff, 0x43, 0x00, 0xf4, 0x93, 0xbf, 0xd5, 0x27, -+ 0x91, 0x1c, 0xb4, 0x49, 0x5c, 0xe1, 0xf8, 0x3b, 0xd0, 0xbd, 0x8c, 0x62, 0x7e, 0x8c, 0x9c, 0x54, -+ 0x0f, 0x3a, 0xa4, 0x50, 0x65, 0xf9, 0x0f, 0x60, 0x55, 0xe4, 0x3a, 0xcb, 0xf5, 0x60, 0x85, 0x84, -+ 0x96, 0x2a, 0xf6, 0x3d, 0x94, 0x33, 0x35, 0x58, 0xdd, 0x69, 0x17, 0xfb, 0x22, 0xc3, 0xbf, 0x0f, -+ 0x2b, 0x99, 0x14, 0x6f, 0xe7, 0x83, 0xb5, 0x1d, 0x6f, 0x77, 0x3d, 0x34, 0x04, 0x9e, 0x22, 0x8a, -+ 0xa6, 0x68, 0x7d, 0xb0, 0x6e, 0x4e, 0x61, 0x49, 0xff, 0x97, 0xd0, 0xa5, 0xc5, 0x67, 0x9a, 0xe9, -+ 0x68, 0x32, 0xd8, 0xd8, 0xf1, 0x76, 0xbb, 0x07, 0x0f, 0x47, 0xf5, 0xa0, 0x8e, 0x8e, 0x4a, 0x95, -+ 0xb0, 0xaa, 0xef, 0x3f, 0x82, 0x4d, 0x36, 0x9d, 0x46, 0x3a, 0x12, 0x29, 0x8b, 0xcf, 0xd9, 0x6c, -+ 0x00, 0x64, 0xbe, 0xce, 0xa4, 0x60, 0xb0, 0xec, 0x70, 0x3a, 0x7d, 0x11, 0x29, 0x3d, 0xe8, 0x92, -+ 0xcf, 0x15, 0x8e, 0x3f, 0x84, 0x75, 0x9e, 0xea, 0x48, 0xcf, 0xc7, 0x27, 0x83, 0x1e, 0x19, 0x28, -+ 0x68, 0x3c, 0x2e, 0x4f, 0x27, 0x72, 0x9e, 0x69, 0x3e, 0x1d, 0x6c, 0xd2, 0xa1, 0x4a, 0x06, 0x06, -+ 0xe9, 0x52, 0xc8, 0x84, 0xe9, 0x41, 0xdf, 0x04, 0xc9, 0x50, 0x01, 0x83, 0xcd, 0x71, 0x92, 0x09, -+ 0xa9, 0x5d, 0x1e, 0x87, 0xb0, 0x1e, 0x11, 0xa3, 0x48, 0x64, 0x41, 0xa3, 0x11, 0x25, 0x72, 0x39, -+ 0x71, 0x69, 0xb4, 0x14, 0x6e, 0x2d, 0xf9, 0x25, 0x97, 0x3c, 0x9d, 0x70, 0x9b, 0xc2, 0x92, 0x11, -+ 0x04, 0xd0, 0x77, 0x5b, 0xa8, 0x4c, 0xa4, 0x8a, 0xfb, 0x5b, 0xd0, 0x8e, 0xc5, 0xcc, 0x9a, 0xc7, -+ 0xcf, 0xe0, 0x39, 0x74, 0x2b, 0xa1, 0xf3, 0x7f, 0xe6, 0x20, 0x13, 0x25, 0x9c, 0xd4, 0xba, 0x07, -+ 0xc3, 0x91, 0x81, 0xe4, 0xc8, 0x41, 0x72, 0x74, 0xee, 0x20, 0x19, 0x96, 0xca, 0xc1, 0x0f, 0x61, -+ 0xd3, 0xc2, 0xd2, 0xee, 0x85, 0x19, 0x4d, 0xd8, 0x8c, 0x97, 0xb8, 0xb4, 0x24, 0xaa, 0xe2, 0x76, -+ 0xb9, 0xba, 0x13, 0xc2, 0xc1, 0x13, 0xe8, 0x3b, 0xd5, 0xd2, 0xec, 0xc4, 0x42, 0xd2, 0xea, 0x5a, -+ 0x32, 0xf8, 0x11, 0x74, 0x31, 0x57, 0xce, 0xe8, 0x36, 0x6c, 0xd0, 0x86, 0xa7, 0xcc, 0x1e, 0x65, -+ 0x23, 0x2c, 0x19, 0xc1, 0x4f, 0x01, 0xce, 0xd9, 0xcc, 0xe9, 0xde, 0x87, 0x15, 0x12, 0x59, 0x3d, -+ 0x43, 0x60, 0xb4, 0x34, 0x9b, 0xd9, 0x90, 0xe3, 0x67, 0xf0, 0x7f, 0x0f, 0x7a, 0x66, 0x0f, 0xeb, -+ 0xcd, 0xaf, 0x60, 0x95, 0x74, 0xd5, 0xc0, 0xdb, 0x69, 0xef, 0x76, 0x0f, 0x3e, 0x59, 0xc4, 0x65, -+ 0x55, 0x7b, 0x34, 0xa6, 0x00, 0xa4, 0x97, 0x22, 0xb4, 0xab, 0x86, 0x5f, 0xc3, 0x46, 0xc1, 0x44, -+ 0x10, 0x4a, 0x9e, 0x09, 0x15, 0x69, 0x21, 0xe7, 0xd6, 0x95, 0x0a, 0xa7, 0xe9, 0x8f, 0xdf, 0x87, -+ 0x56, 0x34, 0xb5, 0x89, 0x6f, 0x45, 0x53, 0x0a, 0x8e, 0xe4, 0x0c, 0x81, 0xd8, 0xb1, 0xc1, 0x31, -+ 0xa4, 0xef, 0x43, 0x47, 0x45, 0x7f, 0xe3, 0xf6, 0xa6, 0xd2, 0x77, 0xf0, 0x1f, 0x0f, 0xee, 0x7d, -+ 0xc1, 0xa5, 0x8a, 0x44, 0x5a, 0x0d, 0xef, 0xb5, 0x61, 0xb9, 0xf0, 0x5a, 0x12, 0xe3, 0x39, 0x13, -+ 0x56, 0xdd, 0x55, 0x93, 0x82, 0x41, 0xd2, 0x48, 0x1f, 0x8b, 0x24, 0x89, 0xb4, 0x43, 0x62, 0xc1, -+ 0x28, 0x2b, 0x11, 0xc2, 0xaa, 0x53, 0xad, 0x44, 0x51, 0xc2, 0xa9, 0x8e, 0xa8, 0x43, 0x39, 0xb9, -+ 0x2a, 0xea, 0x08, 0x51, 0xc1, 0x1f, 0x60, 0x33, 0xe4, 0x89, 0xb8, 0xe6, 0x15, 0x9c, 0x94, 0x90, -+ 0x6a, 0x57, 0x20, 0x85, 0xa1, 0x61, 0x71, 0x4c, 0x6e, 0xad, 0x87, 0xf8, 0x69, 0xca, 0x4c, 0x9e, -+ 0x9a, 0x6b, 0x41, 0x65, 0x26, 0x4f, 0x31, 0xed, 0x7d, 0x67, 0xd2, 0x1e, 0x38, 0x80, 0x5e, 0xcc, -+ 0xe6, 0x5c, 0xbe, 0xe4, 0x4a, 0x95, 0x08, 0xa8, 0xf1, 0x82, 0x7f, 0x7b, 0xf0, 0xde, 0x6f, 0x38, -+ 0x8b, 0xf5, 0xd5, 0xf1, 0x15, 0x9f, 0xbc, 0x29, 0xd6, 0x8e, 0x61, 0x55, 0x11, 0x3a, 0x69, 0x55, -+ 0xff, 0xe0, 0xe9, 0x62, 0xf6, 0x97, 0x2c, 0x1a, 0x9d, 0x61, 0x97, 0x48, 0x67, 0x16, 0xd6, 0xd6, -+ 0x40, 0xf0, 0x73, 0xd8, 0xac, 0x09, 0xfc, 0x2e, 0xac, 0x7d, 0x7e, 0xfa, 0xbb, 0xd3, 0x57, 0x7f, -+ 0x3c, 0xdd, 0xfa, 0x1e, 0x12, 0x67, 0x9f, 0x85, 0x5f, 0x8c, 0x4f, 0x9f, 0x6f, 0x79, 0xfe, 0x3d, -+ 0xe8, 0x9e, 0xbe, 0x3a, 0x7f, 0xed, 0x18, 0xad, 0xe0, 0xcf, 0xd0, 0x7b, 0x21, 0x66, 0x51, 0xea, -+ 0xc2, 0x84, 0xd5, 0x82, 0xcb, 0x6b, 0x2e, 0xed, 0x61, 0x2c, 0x85, 0x15, 0x26, 0x57, 0x5c, 0xa6, -+ 0x78, 0x21, 0x4c, 0x02, 0x0b, 0x1a, 0x65, 0x19, 0x53, 0xea, 0x2b, 0x21, 0x1d, 0x9e, 0x0a, 0x1a, -+ 0xef, 0xab, 0xb5, 0x7f, 0xe7, 0x1d, 0xfc, 0x94, 0x54, 0x45, 0xae, 0xef, 0xf2, 0xa5, 0x91, 0xb0, -+ 0x60, 0x17, 0xfa, 0x6e, 0xa9, 0xdd, 0xe6, 0x01, 0xac, 0x4a, 0xae, 0xf2, 0xd8, 0xed, 0x62, 0xa9, -+ 0xe0, 0x2f, 0xd0, 0x7d, 0x21, 0x58, 0xd1, 0x00, 0x7d, 0xe8, 0x64, 0x4c, 0x5f, 0x59, 0x25, 0xfa, -+ 0xc6, 0xa5, 0xb1, 0x60, 0x58, 0x50, 0x6c, 0xc1, 0x34, 0x94, 0xbf, 0x07, 0x6d, 0xc5, 0x33, 0x3a, -+ 0x61, 0xf7, 0xe0, 0x83, 0xc5, 0x74, 0x9d, 0xf1, 0x8c, 0x49, 0xa6, 0x85, 0x24, 0xf3, 0xa8, 0x19, -+ 0xfc, 0xdd, 0xc3, 0xc4, 0x54, 0xd8, 0xe4, 0x79, 0x96, 0xb9, 0x1a, 0xca, 0xb2, 0x0c, 0x39, 0xd3, -+ 0x48, 0xba, 0x7b, 0x39, 0x8d, 0x24, 0xba, 0x74, 0xc1, 0x94, 0x2b, 0xc9, 0xf4, 0x4d, 0xb5, 0x37, -+ 0xba, 0xb0, 0xe8, 0xc7, 0x4f, 0xbc, 0x15, 0xea, 0x4d, 0x94, 0x11, 0x3c, 0x08, 0xfa, 0xeb, 0x61, -+ 0xc9, 0xc0, 0x20, 0xf3, 0x94, 0x5d, 0xc4, 0x7c, 0x3a, 0x58, 0x25, 0x99, 0x23, 0x83, 0x1d, 0xcc, -+ 0x37, 0x9b, 0xde, 0x52, 0xd5, 0xbf, 0x84, 0xee, 0xef, 0x73, 0x75, 0x55, 0x49, 0x42, 0x96, 0xab, -+ 0xab, 0xa2, 0xbc, 0x5a, 0xaa, 0x5e, 0x22, 0x5b, 0x0b, 0x25, 0xb2, 0xd2, 0xb9, 0xda, 0xb5, 0xce, -+ 0xf5, 0x04, 0x7a, 0xc6, 0xb8, 0xdd, 0x7e, 0x08, 0xeb, 0xd2, 0x7e, 0xbb, 0xc6, 0xe5, 0xe8, 0xe0, -+ 0x18, 0x1d, 0x89, 0xe3, 0x9a, 0x23, 0x71, 0x5c, 0x75, 0x04, 0xa9, 0xdb, 0x1d, 0x31, 0x1b, 0xa2, -+ 0x91, 0x77, 0xd8, 0xf0, 0x9f, 0x1e, 0x74, 0xcf, 0x58, 0x59, 0x32, 0x10, 0x7f, 0xec, 0xba, 0x6c, -+ 0x42, 0x96, 0x42, 0xbe, 0x2d, 0xdc, 0x2d, 0xaa, 0x24, 0x96, 0x2a, 0xc0, 0xd4, 0xae, 0x83, 0xc9, -+ 0x06, 0xa2, 0x53, 0x0d, 0x84, 0x03, 0xd3, 0xca, 0x1d, 0x60, 0x22, 0x77, 0x08, 0x4c, 0x5f, 0x57, -+ 0xb0, 0x84, 0xdc, 0x02, 0x27, 0x5e, 0x13, 0x27, 0xad, 0x12, 0x27, 0x74, 0x0f, 0xe8, 0xd6, 0xb6, -+ 0xdd, 0x3d, 0xa0, 0x3b, 0xeb, 0x43, 0x67, 0xca, 0x95, 0xf3, 0x8a, 0xbe, 0xab, 0xa8, 0x59, 0x69, -+ 0xa0, 0xc6, 0x04, 0xe6, 0x46, 0xd4, 0xcc, 0x61, 0xed, 0x25, 0x4f, 0x4e, 0x98, 0x66, 0x18, 0xe2, -+ 0x84, 0x27, 0xe7, 0x42, 0xb3, 0x98, 0x34, 0xda, 0x61, 0x41, 0xe3, 0x16, 0x09, 0x4f, 0x9e, 0x49, -+ 0x6e, 0x52, 0xd5, 0x0e, 0x1d, 0x49, 0x80, 0xfe, 0x8a, 0x65, 0x66, 0x59, 0x9b, 0x64, 0x25, 0x03, -+ 0x6d, 0x22, 0x41, 0x0b, 0x3b, 0xc6, 0xa6, 0xa3, 0x83, 0x6f, 0x3c, 0xda, 0x1b, 0x6b, 0x1f, 0x1e, -+ 0x37, 0xe1, 0xc9, 0xd9, 0xdc, 0x54, 0xd5, 0x4e, 0x68, 0x29, 0xdc, 0xf7, 0x8a, 0xb3, 0x0c, 0x05, -+ 0x2d, 0x12, 0x38, 0x12, 0xf7, 0xc5, 0xcf, 0xc3, 0x38, 0x16, 0x13, 0xda, 0xb7, 0x13, 0x96, 0x0c, -+ 0x27, 0x1d, 0xa7, 0x9f, 0x2b, 0xb3, 0xb1, 0x95, 0x12, 0x03, 0xbd, 0x22, 0x62, 0x1a, 0x9b, 0xe6, -+ 0xd8, 0x09, 0x0b, 0x1a, 0x7b, 0x03, 0x7e, 0x87, 0x3c, 0xe6, 0x4c, 0xd9, 0x7b, 0xd8, 0x09, 0x6b, -+ 0xbc, 0xe0, 0x35, 0x74, 0xcf, 0xb4, 0x90, 0x6c, 0xc6, 0x29, 0x70, 0x8f, 0x60, 0x53, 0x59, 0x52, -+ 0x46, 0x65, 0xd9, 0xab, 0x33, 0xfd, 0x27, 0xb0, 0x65, 0x19, 0x47, 0x6c, 0xf2, 0x26, 0x4a, 0x67, -+ 0xcf, 0x94, 0x4d, 0x78, 0x83, 0x1f, 0xfc, 0xc3, 0x83, 0x5e, 0xc8, 0x67, 0x91, 0xd2, 0x72, 0x4e, -+ 0x5b, 0x3c, 0x81, 0x2d, 0x69, 0xe8, 0x88, 0xab, 0x33, 0xce, 0xb0, 0x71, 0x9a, 0x76, 0xd8, 0xe0, -+ 0xfb, 0x23, 0xf0, 0x4b, 0xde, 0x38, 0x55, 0x7c, 0x92, 0x4b, 0x6e, 0x21, 0xbf, 0x44, 0xe2, 0xef, -+ 0xc2, 0xbd, 0x92, 0x7b, 0x14, 0x8b, 0xc9, 0x9b, 0x41, 0x9b, 0x94, 0x17, 0xd9, 0xc1, 0x63, 0xe8, -+ 0xd2, 0x4b, 0xa6, 0x6c, 0xcd, 0xd7, 0x5c, 0x5e, 0x08, 0x0b, 0xe6, 0xf5, 0xd0, 0x91, 0xc1, 0x7f, -+ 0xdb, 0xd0, 0x33, 0x9a, 0x16, 0x78, 0x4f, 0x09, 0x3f, 0xc8, 0xb2, 0x2f, 0xcc, 0xf7, 0x17, 0xaf, -+ 0x8e, 0x45, 0x61, 0xe8, 0xf4, 0x70, 0x06, 0xb0, 0x71, 0xa1, 0x65, 0xad, 0xe5, 0x33, 0x40, 0x25, -+ 0x0f, 0x61, 0x55, 0xdf, 0xff, 0x35, 0xf4, 0xac, 0xfb, 0x73, 0x5a, 0x6f, 0xca, 0xff, 0xf6, 0xe2, -+ 0xfa, 0x6a, 0x94, 0xc3, 0xda, 0x0a, 0x44, 0xc9, 0x14, 0xb9, 0x42, 0xb8, 0xeb, 0x56, 0xd0, 0x78, -+ 0x74, 0x99, 0xa7, 0x24, 0x32, 0xef, 0x17, 0x47, 0xe2, 0x83, 0xee, 0xd5, 0xf1, 0x38, 0xcc, 0x53, -+ 0x1c, 0xe2, 0x08, 0x3d, 0x1b, 0x61, 0x85, 0x83, 0x72, 0xda, 0x9c, 0xcb, 0xd3, 0x3c, 0xa1, 0x79, -+ 0xa8, 0x1d, 0x56, 0x38, 0x28, 0x9f, 0x89, 0x50, 0xe4, 0x3a, 0x4a, 0xb9, 0xa2, 0xb9, 0xa8, 0x1d, -+ 0x56, 0x38, 0x36, 0x92, 0x78, 0x69, 0xec, 0x58, 0xb4, 0x2c, 0x92, 0x28, 0x0e, 0x9d, 0x1e, 0x42, -+ 0x9a, 0xbf, 0xcd, 0xb8, 0x8c, 0x12, 0x9e, 0xe2, 0x2d, 0x05, 0x4a, 0x56, 0x8d, 0x17, 0xfc, 0x09, -+ 0xbe, 0xff, 0x92, 0xa5, 0xd1, 0x25, 0x57, 0xfa, 0x98, 0x9e, 0x8f, 0x2e, 0xc9, 0x01, 0xf4, 0x12, -+ 0x2b, 0xa0, 0x39, 0xc9, 0xbe, 0x95, 0xaa, 0x3c, 0xbc, 0x6d, 0x8e, 0x76, 0xb5, 0xb5, 0x64, 0x04, -+ 0x07, 0xf0, 0x60, 0xd1, 0xf4, 0x9d, 0xe3, 0xc2, 0x37, 0x1e, 0xbc, 0xef, 0x16, 0x1d, 0xa6, 0xa9, -+ 0xd0, 0xdf, 0xd1, 0x23, 0xac, 0x65, 0x96, 0x76, 0xcf, 0x1e, 0x47, 0x63, 0x09, 0xa5, 0xfb, 0x63, -+ 0xcb, 0x3d, 0xdd, 0x99, 0x3e, 0xb4, 0x84, 0xb2, 0x59, 0x6e, 0x09, 0x85, 0x59, 0x10, 0xea, 0x19, -+ 0x67, 0x3a, 0x97, 0x5c, 0x0d, 0x56, 0xcc, 0x6c, 0x58, 0x72, 0x08, 0xfa, 0x4c, 0x46, 0x2c, 0xd5, -+ 0x36, 0xc5, 0x8e, 0x0c, 0x7e, 0x51, 0x9e, 0x76, 0x9c, 0xaa, 0x8c, 0x4f, 0xf4, 0x77, 0xf0, 0x3b, -+ 0xf8, 0x71, 0x79, 0xec, 0x62, 0xb5, 0x0d, 0x16, 0x56, 0x7e, 0xa6, 0x19, 0x2d, 0xeb, 0x85, 0xf4, -+ 0x1d, 0xbc, 0x84, 0xf7, 0x9c, 0x7a, 0xb5, 0xf7, 0xbf, 0x4b, 0x84, 0x5c, 0x23, 0x69, 0x95, 0x8d, -+ 0x24, 0x18, 0xc1, 0xfd, 0xba, 0xb9, 0xdb, 0x1f, 0x65, 0x07, 0xff, 0xea, 0xc2, 0xda, 0xb1, 0xf9, -+ 0xef, 0xe1, 0x9f, 0xc0, 0x0a, 0xcd, 0x82, 0xfe, 0xf6, 0xd2, 0x31, 0xdd, 0xba, 0x36, 0xfc, 0xe0, -+ 0x06, 0x69, 0xf9, 0xba, 0xb6, 0x6f, 0xe1, 0x66, 0x6f, 0xad, 0x8e, 0x8f, 0xc3, 0x0f, 0x6f, 0x12, -+ 0x1b, 0x43, 0xfb, 0x9e, 0x7f, 0x08, 0x1d, 0x3a, 0xe8, 0xc3, 0xe5, 0xe3, 0x99, 0x31, 0xb3, 0x7d, -+ 0xdb, 0xec, 0xe6, 0x1f, 0xc1, 0x9a, 0x9b, 0x75, 0x1e, 0x34, 0x26, 0xe2, 0xcf, 0x92, 0x4c, 0xcf, -+ 0x87, 0x1f, 0x2d, 0x1a, 0x58, 0x1c, 0xae, 0x8e, 0xa1, 0x83, 0xb1, 0x6c, 0xba, 0x51, 0x49, 0x58, -+ 0xd3, 0x8d, 0x6a, 0xf8, 0xf7, 0x3d, 0x63, 0x24, 0x8e, 0x97, 0x19, 0x29, 0x1e, 0x5a, 0xcb, 0x8c, -+ 0x94, 0x0f, 0xa8, 0x7d, 0x0f, 0x63, 0x6b, 0xe6, 0xa0, 0x66, 0x6c, 0x6b, 0x23, 0x57, 0x33, 0xb6, -+ 0xf5, 0xf1, 0x69, 0xdf, 0xf3, 0x7f, 0x0b, 0xdd, 0xca, 0x98, 0x73, 0x63, 0x70, 0x3e, 0x7e, 0x87, -+ 0xd9, 0x08, 0x81, 0x43, 0x93, 0x46, 0x13, 0x38, 0xd5, 0x01, 0xa7, 0x09, 0x9c, 0xfa, 0x78, 0xf2, -+ 0x1c, 0x56, 0xcd, 0x24, 0xe1, 0x2f, 0x53, 0x2c, 0x87, 0x93, 0xe6, 0xe1, 0x16, 0x06, 0x90, 0x63, -+ 0xe8, 0xd0, 0x93, 0xbf, 0x09, 0x9b, 0x72, 0xfc, 0x58, 0x02, 0x9b, 0xca, 0xdb, 0xdc, 0x84, 0xda, -+ 0xfc, 0x85, 0x69, 0x7a, 0x53, 0xfb, 0x01, 0xd4, 0xf4, 0xa6, 0xfe, 0xf3, 0x66, 0xdf, 0xf3, 0x3f, -+ 0x85, 0xf6, 0x39, 0x9b, 0xf9, 0xc3, 0x45, 0xc5, 0xf2, 0x4f, 0xc6, 0xf0, 0x86, 0xf0, 0xe3, 0x51, -+ 0xe8, 0xc5, 0xd9, 0x6c, 0x9a, 0xe5, 0x63, 0xb9, 0x79, 0x94, 0xea, 0x83, 0xd1, 0x5c, 0x23, 0xea, -+ 0x86, 0x0d, 0x23, 0x95, 0x97, 0x40, 0xd3, 0x48, 0xad, 0xf9, 0xbf, 0x86, 0x7e, 0xbd, 0x01, 0xf8, -+ 0x3f, 0x68, 0xf4, 0xac, 0x65, 0xbd, 0x67, 0xf8, 0xc9, 0x5d, 0x6a, 0x76, 0x83, 0x33, 0xd8, 0x5a, -+ 0x6c, 0x16, 0xfe, 0xe3, 0x9b, 0xd6, 0x2e, 0xb4, 0x93, 0x1b, 0xa3, 0x77, 0x01, 0xf7, 0x16, 0x4a, -+ 0xb1, 0x7f, 0xa3, 0x3f, 0xf5, 0x4a, 0x3f, 0x7c, 0x7c, 0xa7, 0x9e, 0x75, 0xfc, 0x4b, 0xe8, 0x55, -+ 0x0b, 0xae, 0xff, 0xf1, 0x4d, 0x0b, 0xab, 0xc5, 0xe2, 0xd1, 0xed, 0x4a, 0x2e, 0x73, 0x17, 0xab, -+ 0x74, 0xa0, 0x9f, 0x7c, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x24, 0x62, 0xe9, 0xd4, 0xa8, 0x16, 0x00, -+ 0x00, - } - - // Reference imports to suppress errors if they are not otherwise used. -diff --git a/api/services/control.proto b/api/services/control.proto -index e67b8e93..5eb2b576 100644 ---- a/api/services/control.proto -+++ b/api/services/control.proto -@@ -215,6 +215,27 @@ message LogoutResponse { - message LoadRequest { - // path is the path of loading file - string path = 1; -+ // loadID is the unique ID for each time load -+ // also is the part of construct temporary path to -+ // store transport file -+ string loadID = 2; -+ // SeparatorLoad is the info to load separated image -+ SeparatorLoad sep = 3; -+} -+ -+message SeparatorLoad { -+ // app is application image name -+ string app = 1; -+ // dir is image tarballs directory -+ string dir = 2; -+ // base is base image tarball path -+ string base = 3; -+ // lib is library image tarball path -+ string lib = 4; -+ // skipCheck is flag to skip sha256 check sum for images -+ bool skipCheck = 5; -+ // enabled is flag to indicate the separator function enabled or not -+ bool enabled = 6; - } - - message LoadResponse { -@@ -259,6 +280,21 @@ message SaveRequest { - string path = 3; - // format is the format of image saved to archive file, such as docker-archive, oci-archive - string format = 4; -+ // SeparatorSave is the info to save separated image -+ SeparatorSave sep = 5; -+} -+ -+message SeparatorSave { -+ // base is base image name -+ string base = 1; -+ // lib is library image name -+ string lib = 2; -+ // rename is rename json file -+ string rename = 3; -+ // dest is destination file directory -+ string dest = 4; -+ // enabled is flag to indicate the separator function enabled or not -+ bool enabled = 5; - } - - message SaveResponse { --- -2.27.0 - diff --git a/patch/0073-cli-finish-client-save-separated-image.patch b/patch/0073-cli-finish-client-save-separated-image.patch deleted file mode 100644 index 41e89af..0000000 --- a/patch/0073-cli-finish-client-save-separated-image.patch +++ /dev/null @@ -1,248 +0,0 @@ -From 8bb2cb6f3904f13d0010cc207e9b00bafe043805 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 26 Oct 2021 14:19:10 +0800 -Subject: [PATCH 02/16] cli:finish client save separated image - -reason: support isula-build client side process info for save separated image -ABI change:(client) -- --dest: destination file direcotry to store seprated image -- --base: base image name of separated images -- --lib: lib image name of separated images -- --rename: rename json file path of separated images - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/save.go | 121 ++++++++++++++++++++++++++++++++++++++---------- - util/common.go | 24 ++++++++++ - 2 files changed, 121 insertions(+), 24 deletions(-) - -diff --git a/cmd/cli/save.go b/cmd/cli/save.go -index cb78ecfb..4d22798a 100644 ---- a/cmd/cli/save.go -+++ b/cmd/cli/save.go -@@ -29,8 +29,17 @@ import ( - "isula.org/isula-build/util" - ) - -+type separatorSaveOption struct { -+ baseImgName string -+ libImageName string -+ renameFile string -+ destPath string -+ enabled bool -+} -+ - type saveOptions struct { - images []string -+ sep separatorSaveOption - path string - saveID string - format string -@@ -41,7 +50,9 @@ var saveOpts saveOptions - const ( - saveExample = `isula-build ctr-img save busybox:latest -o busybox.tar - isula-build ctr-img save 21c3e96ac411 -o myimage.tar --isula-build ctr-img save busybox:latest alpine:3.9 -o all.tar` -+isula-build ctr-img save busybox:latest alpine:3.9 -o all.tar -+isula-build ctr-img save app:latest app1:latest -d Images -+isula-build ctr-img save app:latest app1:latest -d Images -b busybox:latest -l lib:latest -r rename.json` - ) - - // NewSaveCmd cmd for container image saving -@@ -54,6 +65,10 @@ func NewSaveCmd() *cobra.Command { - } - - saveCmd.PersistentFlags().StringVarP(&saveOpts.path, "output", "o", "", "Path to save the tarball") -+ saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.destPath, "dest", "d", "Images", "Destination file directory to store separated images") -+ saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.baseImgName, "base", "b", "", "Base image name of separated images") -+ saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.libImageName, "lib", "l", "", "Lib image name of separated images") -+ saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.renameFile, "rename", "r", "", "Rename json file path of separated images") - if util.CheckCliExperimentalEnabled() { - saveCmd.PersistentFlags().StringVarP(&saveOpts.format, "format", "f", "oci", "Format of image saving to local tarball") - } else { -@@ -67,16 +82,7 @@ func saveCommand(cmd *cobra.Command, args []string) error { - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - -- if len(args) == 0 { -- return errors.New("save accepts at least one image") -- } -- if saveOpts.format == constant.OCITransport && len(args) >= 2 { -- return errors.New("oci image format now only supports saving single image") -- } -- if err := util.CheckImageFormat(saveOpts.format); err != nil { -- return err -- } -- if err := checkSavePath(); err != nil { -+ if err := saveOpts.checkSaveOpts(args); err != nil { - return err - } - -@@ -88,25 +94,79 @@ func saveCommand(cmd *cobra.Command, args []string) error { - return runSave(ctx, cli, args) - } - --func checkSavePath() error { -- if len(saveOpts.path) == 0 { -- return errors.New("output path should not be empty") -+func (sep *separatorSaveOption) check(pwd string) error { -+ if len(sep.baseImgName) != 0 { -+ if !util.IsValidImageName(sep.baseImgName) { -+ return errors.Errorf("invalid base image name %s", sep.baseImgName) -+ } - } -+ if len(sep.libImageName) != 0 { -+ if !util.IsValidImageName(sep.libImageName) { -+ return errors.Errorf("invalid lib image name %s", sep.libImageName) -+ } -+ } -+ if len(sep.destPath) == 0 { -+ sep.destPath = "Images" -+ } -+ if !filepath.IsAbs(sep.destPath) { -+ sep.destPath = util.MakeAbsolute(sep.destPath, pwd) -+ } -+ if util.IsExist(sep.destPath) { -+ return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", sep.destPath) -+ } -+ if len(sep.renameFile) != 0 { -+ if !filepath.IsAbs(sep.renameFile) { -+ sep.renameFile = util.MakeAbsolute(sep.renameFile, pwd) -+ } -+ } -+ -+ return nil -+} - -- if strings.Contains(saveOpts.path, ":") { -- return errors.Errorf("colon in path %q is not supported", saveOpts.path) -+func (opt *saveOptions) checkSaveOpts(args []string) error { -+ if len(args) == 0 { -+ return errors.New("save accepts at least one image") - } - -- if !filepath.IsAbs(saveOpts.path) { -- pwd, err := os.Getwd() -- if err != nil { -- return errors.New("get current path failed") -+ if strings.Contains(opt.path, ":") || strings.Contains(opt.sep.destPath, ":") { -+ return errors.Errorf("colon in path %q is not supported", opt.path) -+ } -+ pwd, err := os.Getwd() -+ if err != nil { -+ return errors.New("get current path failed") -+ } -+ -+ // normal save -+ if !opt.sep.isEnabled() { -+ // only check oci format when doing normal save operation -+ if opt.format == constant.OCITransport && len(args) >= 2 { -+ return errors.New("oci image format now only supports saving single image") -+ } -+ if err := util.CheckImageFormat(opt.format); err != nil { -+ return err -+ } -+ if len(opt.path) == 0 { -+ return errors.New("output path should not be empty") - } -- saveOpts.path = util.MakeAbsolute(saveOpts.path, pwd) -+ if !filepath.IsAbs(opt.path) { -+ opt.path = util.MakeAbsolute(opt.path, pwd) -+ } -+ if util.IsExist(opt.path) { -+ return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", opt.path) -+ } -+ return nil - } - -- if util.IsExist(saveOpts.path) { -- return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", saveOpts.path) -+ // separator save -+ opt.sep.enabled = true -+ if len(opt.path) != 0 { -+ return errors.New("conflict options between -o and [-b -l -r]") -+ } -+ // separate image only support docker image spec -+ opt.format = constant.DockerTransport -+ -+ if err := opt.sep.check(pwd); err != nil { -+ return err - } - - return nil -@@ -116,11 +176,20 @@ func runSave(ctx context.Context, cli Cli, args []string) error { - saveOpts.saveID = util.GenerateNonCryptoID()[:constant.DefaultIDLen] - saveOpts.images = args - -+ sep := &pb.SeparatorSave{ -+ Base: saveOpts.sep.baseImgName, -+ Lib: saveOpts.sep.libImageName, -+ Rename: saveOpts.sep.renameFile, -+ Dest: saveOpts.sep.destPath, -+ Enabled: saveOpts.sep.enabled, -+ } -+ - saveStream, err := cli.Client().Save(ctx, &pb.SaveRequest{ - Images: saveOpts.images, - Path: saveOpts.path, - SaveID: saveOpts.saveID, - Format: saveOpts.format, -+ Sep: sep, - }) - if err != nil { - return err -@@ -137,7 +206,11 @@ func runSave(ctx context.Context, cli Cli, args []string) error { - fmt.Printf("Save success with image: %s\n", saveOpts.images) - return nil - } -- return errors.Errorf("save image failed: %v", err) -+ return errors.Errorf("save image failed: %v", err.Error()) - } - } - } -+ -+func (sep *separatorSaveOption) isEnabled() bool { -+ return util.AnyFlagSet(sep.baseImgName, sep.libImageName, sep.renameFile) -+} -diff --git a/util/common.go b/util/common.go -index 00b1b941..4782b2ec 100644 ---- a/util/common.go -+++ b/util/common.go -@@ -21,6 +21,7 @@ import ( - "strings" - - securejoin "github.com/cyphar/filepath-securejoin" -+ "github.com/docker/distribution/reference" - "github.com/pkg/errors" - "github.com/spf13/cobra" - "golang.org/x/sys/unix" -@@ -184,3 +185,26 @@ func FormatSize(size, base float64) string { - func CheckCliExperimentalEnabled() bool { - return os.Getenv("ISULABUILD_CLI_EXPERIMENTAL") == "enabled" - } -+ -+// IsValidImageName will check the validity of image name -+func IsValidImageName(name string) bool { -+ ref, err := reference.ParseNormalizedNamed(name) -+ if err != nil { -+ return false -+ } -+ if _, canonical := ref.(reference.Canonical); canonical { -+ return false -+ } -+ return true -+} -+ -+// AnyFlagSet is a checker to indicate there exist flag's length not empty -+// If all flags are empty, will return false -+func AnyFlagSet(flags ...string) bool { -+ for _, flag := range flags { -+ if len(flag) != 0 { -+ return true -+ } -+ } -+ return false -+} --- -2.27.0 - diff --git a/patch/0074-daemon-finish-daemon-save-separated-image.patch b/patch/0074-daemon-finish-daemon-save-separated-image.patch deleted file mode 100644 index 68f70c5..0000000 --- a/patch/0074-daemon-finish-daemon-save-separated-image.patch +++ /dev/null @@ -1,995 +0,0 @@ -From 8cf5db787c507ce9d4c78191395b25b2f5e0d253 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 26 Oct 2021 14:19:27 +0800 -Subject: [PATCH 03/16] daemon:finish daemon save separated image - -reason: support isula-build daemon side save separated image -ABI change(daemon): none -Save process changes: -1. add separate image action at the end of save process(already got tarball) - - input: saved tarball - - output: separated images - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - daemon/save.go | 647 ++++++++++++++++++++++++++++++++++++++++++++++++- - util/cipher.go | 78 ++++++ - util/file.go | 153 ++++++++++++ - 3 files changed, 872 insertions(+), 6 deletions(-) - create mode 100644 util/file.go - -diff --git a/daemon/save.go b/daemon/save.go -index ee706911..ecac5b68 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -15,11 +15,17 @@ package daemon - - import ( - "context" -+ "encoding/json" -+ "fmt" -+ "io/ioutil" - "os" -+ "path/filepath" - "strings" - - "github.com/containers/image/v5/docker/reference" - "github.com/containers/image/v5/types" -+ "github.com/containers/storage/pkg/archive" -+ "github.com/docker/docker/pkg/ioutils" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" - "golang.org/x/sync/errgroup" -@@ -34,6 +40,22 @@ import ( - "isula.org/isula-build/util" - ) - -+const ( -+ manifestDataFile = "manifest.json" -+ manifestFile = "manifest" -+ repositoriesFile = "repositories" -+ baseTarNameSuffix = "_base_image.tar.gz" -+ appTarNameSuffix = "_app_image.tar.gz" -+ libTarNameSuffix = "_lib_image.tar.gz" -+ untarTempDirName = "untar" -+ baseUntarTempDirName = "base_images" -+ appUntarTempDirName = "app_images" -+ libUntarTempDirName = "lib_images" -+ unionTarName = "all.tar" -+ layerTarName = "layer.tar" -+ tarSuffix = ".tar" -+) -+ - type savedImage struct { - exist bool - tags []reference.NamedTagged -@@ -42,18 +64,92 @@ type savedImage struct { - type saveOptions struct { - sysCtx *types.SystemContext - localStore *store.Store -+ logger *logger.Logger -+ logEntry *logrus.Entry - saveID string - format string -+ outputPath string - oriImgList []string - finalImageOrdered []string - finalImageSet map[string]*savedImage -- outputPath string -- logger *logger.Logger -- logEntry *logrus.Entry -+ sep separatorSave - } - --func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { -- return saveOptions{ -+type separatorSave struct { -+ renameData []renames -+ tmpDir imageTmpDir -+ log *logrus.Entry -+ base string -+ lib string -+ dest string -+ enabled bool -+} -+ -+type renames struct { -+ Name string `json:"name"` -+ Rename string `json:"rename"` -+} -+ -+type imageTmpDir struct { -+ app string -+ base string -+ lib string -+ untar string -+ root string -+} -+ -+type layer struct { -+ all []string -+ base []string -+ lib []string -+ app []string -+} -+ -+type imageInfo struct { -+ layers layer -+ repoTags []string -+ config string -+ name string -+ tag string -+ nameTag string -+ topLayer string -+} -+ -+// imageManifest return image's manifest info -+type imageManifest struct { -+ Config string `json:"Config"` -+ RepoTags []string `json:"RepoTags"` -+ Layers []string `json:"Layers"` -+ // Not shown in the json file -+ HashMap map[string]string `json:"-"` -+} -+ -+type imageLayersMap map[string]string -+ -+type tarballInfo struct { -+ AppTarName string `json:"app"` -+ AppHash string `json:"appHash"` -+ AppLayers []string `json:"appLayers"` -+ LibTarName string `json:"lib"` -+ LibHash string `json:"libHash"` -+ LibImageName string `json:"libImageName"` -+ LibLayers []string `json:"libLayers"` -+ BaseTarName string `json:"base"` -+ BaseHash string `json:"baseHash"` -+ BaseImageName string `json:"baseImageName"` -+ BaseLayers []string `json:"baseLayer"` -+} -+ -+func (b *Backend) getSaveOptions(req *pb.SaveRequest) (saveOptions, error) { -+ var sep = separatorSave{ -+ base: req.GetSep().GetBase(), -+ lib: req.GetSep().GetLib(), -+ dest: req.GetSep().GetDest(), -+ log: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID()}), -+ enabled: req.GetSep().GetEnabled(), -+ } -+ -+ var opt = saveOptions{ - sysCtx: image.GetSystemContext(), - localStore: b.daemon.localStore, - saveID: req.GetSaveID(), -@@ -64,7 +160,38 @@ func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { - outputPath: req.GetPath(), - logger: logger.NewCliLogger(constant.CliLogBufferLen), - logEntry: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID(), "Format": req.GetFormat()}), -+ sep: sep, -+ } -+ // normal save -+ if !sep.enabled { -+ return opt, nil -+ } -+ -+ // save separated image -+ tmpRoot := filepath.Join(b.daemon.opts.DataRoot, filepath.Join(dataRootTmpDirPrefix, req.GetSaveID())) -+ untar := filepath.Join(tmpRoot, untarTempDirName) -+ appDir := filepath.Join(tmpRoot, appUntarTempDirName) -+ baseDir := filepath.Join(tmpRoot, baseUntarTempDirName) -+ libDir := filepath.Join(tmpRoot, libUntarTempDirName) -+ -+ opt.sep.tmpDir = imageTmpDir{ -+ app: appDir, -+ base: baseDir, -+ lib: libDir, -+ untar: untar, -+ root: tmpRoot, - } -+ opt.outputPath = filepath.Join(untar, unionTarName) -+ renameFile := req.GetSep().GetRename() -+ if len(renameFile) != 0 { -+ var reName []renames -+ if err := util.LoadJSONFile(renameFile, &reName); err != nil { -+ return saveOptions{}, err -+ } -+ opt.sep.renameData = reName -+ } -+ -+ return opt, nil - } - - // Save receives a save request and save the image(s) into tarball -@@ -75,7 +202,10 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - }).Info("SaveRequest received") - - var err error -- opts := b.getSaveOptions(req) -+ opts, err := b.getSaveOptions(req) -+ if err != nil { -+ return errors.Wrap(err, "process save options failed") -+ } - - if err = checkFormat(&opts); err != nil { - return err -@@ -103,6 +233,11 @@ func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error - return err - } - -+ // separatorSave found -+ if opts.sep.enabled { -+ return separateImage(opts) -+ } -+ - return nil - } - -@@ -118,6 +253,9 @@ func exportHandler(ctx context.Context, opts *saveOptions) func() error { - } - }() - -+ if err := os.MkdirAll(filepath.Dir(opts.outputPath), constant.DefaultRootFileMode); err != nil { -+ return err -+ } - for _, imageID := range opts.finalImageOrdered { - copyCtx := *opts.sysCtx - if opts.format == constant.DockerArchiveTransport { -@@ -210,3 +348,500 @@ func filterImageName(opts *saveOptions) error { - - return nil - } -+ -+func getLayerHashFromStorage(store *store.Store, name string) ([]string, error) { -+ if len(name) == 0 { -+ return nil, nil -+ } -+ _, img, err := image.FindImage(store, name) -+ if err != nil { -+ return nil, err -+ } -+ -+ layer, err := store.Layer(img.TopLayer) -+ if err != nil { -+ return nil, errors.Wrapf(err, "failed to get top layer for image %s", name) -+ } -+ -+ var layers []string -+ // add each layer in the layers until reach the root layer -+ for layer != nil { -+ fields := strings.Split(layer.UncompressedDigest.String(), ":") -+ if len(fields) != 2 { -+ return nil, errors.Errorf("error format of layer of image %s", name) -+ } -+ layers = append(layers, fields[1]) -+ if layer.Parent == "" { -+ break -+ } -+ layer, err = store.Layer(layer.Parent) -+ if err != nil { -+ return nil, errors.Wrapf(err, "unable to read layer %q", layer.Parent) -+ } -+ } -+ -+ return layers, nil -+} -+ -+// process physic file -+func (s *separatorSave) constructLayerMap() (map[string]string, error) { -+ path := s.tmpDir.untar -+ files, rErr := ioutil.ReadDir(path) -+ if rErr != nil { -+ return nil, rErr -+ } -+ -+ var layerMap = make(map[string]string, len(files)) -+ // process layer's file -+ for _, file := range files { -+ if file.IsDir() { -+ layerFile := filepath.Join(path, file.Name(), layerTarName) -+ oriFile, err := os.Readlink(layerFile) -+ if err != nil { -+ return nil, err -+ } -+ physicFile := filepath.Join(path, file.Name(), oriFile) -+ layerMap[filepath.Base(physicFile)] = filepath.Join(file.Name(), layerTarName) -+ if err := os.Rename(physicFile, layerFile); err != nil { -+ return nil, err -+ } -+ } -+ } -+ -+ return layerMap, nil -+} -+ -+func getLayerHashFromTar(layerMap map[string]string, layer []string) map[string]string { -+ hashMap := make(map[string]string, len(layer)) -+ // first reverse map since it's is unique -+ revMap := make(map[string]string, len(layerMap)) -+ for k, v := range layerMap { -+ revMap[v] = k -+ } -+ for _, l := range layer { -+ if v, ok := revMap[l]; ok { -+ // format is like xxx(hash): xxx/layer.tar -+ hashMap[strings.TrimSuffix(v, tarSuffix)] = l -+ } -+ } -+ -+ return hashMap -+} -+ -+func (s *separatorSave) adjustLayers() ([]imageManifest, error) { -+ s.log.Info("Adjusting layers for saving separated image") -+ -+ layerMap, err := s.constructLayerMap() -+ if err != nil { -+ s.log.Errorf("Process layers failed: %v", err) -+ return nil, err -+ } -+ -+ // process manifest file -+ var man []imageManifest -+ if lErr := util.LoadJSONFile(filepath.Join(s.tmpDir.untar, manifestDataFile), &man); lErr != nil { -+ return nil, lErr -+ } -+ -+ for i, img := range man { -+ layers := make([]string, len(img.Layers)) -+ for i, layer := range img.Layers { -+ layers[i] = layerMap[layer] -+ } -+ man[i].Layers = layers -+ man[i].HashMap = getLayerHashFromTar(layerMap, layers) -+ } -+ buf, err := json.Marshal(&man) -+ if err != nil { -+ return nil, err -+ } -+ if err := ioutils.AtomicWriteFile(manifestFile, buf, constant.DefaultSharedFileMode); err != nil { -+ return nil, err -+ } -+ -+ return man, nil -+} -+ -+func separateImage(opt saveOptions) error { -+ s := &opt.sep -+ s.log.Infof("Start saving separated images %v", opt.oriImgList) -+ var errList []error -+ -+ if err := os.MkdirAll(s.dest, constant.DefaultRootDirMode); err != nil { -+ return err -+ } -+ -+ defer func() { -+ if tErr := os.RemoveAll(s.tmpDir.root); tErr != nil && !os.IsNotExist(tErr) { -+ s.log.Warnf("Removing save tmp directory %q failed: %v", s.tmpDir.root, tErr) -+ } -+ if len(errList) != 0 { -+ if rErr := os.RemoveAll(s.dest); rErr != nil && !os.IsNotExist(rErr) { -+ s.log.Warnf("Removing save dest directory %q failed: %v", s.dest, rErr) -+ } -+ } -+ }() -+ if err := util.UnpackFile(opt.outputPath, s.tmpDir.untar, archive.Gzip, true); err != nil { -+ errList = append(errList, err) -+ return errors.Wrapf(err, "unpack %q failed", opt.outputPath) -+ } -+ manifest, err := s.adjustLayers() -+ if err != nil { -+ errList = append(errList, err) -+ return errors.Wrap(err, "adjust layers failed") -+ } -+ -+ imgInfos, err := s.constructImageInfos(manifest, opt.localStore) -+ if err != nil { -+ errList = append(errList, err) -+ return errors.Wrap(err, "process image infos failed") -+ } -+ -+ if err := s.processImageLayers(imgInfos); err != nil { -+ errList = append(errList, err) -+ return err -+ } -+ -+ return nil -+} -+ -+func (s *separatorSave) processImageLayers(imgInfos map[string]imageInfo) error { -+ s.log.Info("Processing image layers") -+ var ( -+ tarballs = make(map[string]tarballInfo) -+ baseImagesMap = make(imageLayersMap, 1) -+ libImagesMap = make(imageLayersMap, 1) -+ appImagesMap = make(imageLayersMap, 1) -+ ) -+ for _, info := range imgInfos { -+ if err := s.clearDirs(true); err != nil { -+ return errors.Wrap(err, "clear tmp dirs failed") -+ } -+ var t tarballInfo -+ // process base -+ if err := info.processBaseImg(s, baseImagesMap, &t); err != nil { -+ return errors.Wrapf(err, "process base images %s failed", info.nameTag) -+ } -+ // process lib -+ if err := info.processLibImg(s, libImagesMap, &t); err != nil { -+ return errors.Wrapf(err, "process lib images %s failed", info.nameTag) -+ } -+ // process app -+ if err := info.processAppImg(s, appImagesMap, &t); err != nil { -+ return errors.Wrapf(err, "process app images %s failed", info.nameTag) -+ } -+ tarballs[info.nameTag] = t -+ } -+ buf, err := json.Marshal(&tarballs) -+ if err != nil { -+ return err -+ } -+ // manifest file -+ manifestFile := filepath.Join(s.dest, manifestFile) -+ if err := ioutils.AtomicWriteFile(manifestFile, buf, constant.DefaultRootFileMode); err != nil { -+ return err -+ } -+ -+ s.log.Info("Save separated image succeed") -+ return nil -+} -+ -+func (s *separatorSave) clearDirs(reCreate bool) error { -+ tmpDir := s.tmpDir -+ dirs := []string{tmpDir.base, tmpDir.app, tmpDir.lib} -+ var mkTmpDirs = func(dirs []string) error { -+ for _, dir := range dirs { -+ if err := os.MkdirAll(dir, constant.DefaultRootDirMode); err != nil { -+ return err -+ } -+ } -+ return nil -+ } -+ -+ var rmTmpDirs = func(dirs []string) error { -+ for _, dir := range dirs { -+ if err := os.RemoveAll(dir); err != nil { -+ return err -+ } -+ } -+ return nil -+ } -+ -+ if err := rmTmpDirs(dirs); err != nil { -+ return err -+ } -+ if reCreate { -+ if err := mkTmpDirs(dirs); err != nil { -+ return err -+ } -+ } -+ return nil -+} -+ -+// processTarName will trim the prefix of image name like example.io/library/myapp:v1 -+// after processed, the name will be myapp_v1_suffix -+// mind: suffix here should not contain path separator -+func (info imageInfo) processTarName(suffix string) string { -+ originNames := strings.Split(info.name, string(os.PathSeparator)) -+ originTags := strings.Split(info.tag, string(os.PathSeparator)) -+ // get the last element of the list, which mast be the right name without prefix -+ name := originNames[len(originNames)-1] -+ tag := originTags[len(originTags)-1] -+ -+ return fmt.Sprintf("%s_%s%s", name, tag, suffix) -+} -+ -+func (info *imageInfo) processBaseImg(sep *separatorSave, baseImagesMap map[string]string, tarball *tarballInfo) error { -+ // process base -+ tarball.BaseImageName = sep.base -+ for _, layerID := range info.layers.base { -+ tarball.BaseLayers = append(tarball.BaseLayers, layerID) -+ if baseImg, ok := baseImagesMap[layerID]; !ok { -+ srcLayerPath := filepath.Join(sep.tmpDir.untar, layerID) -+ destLayerPath := filepath.Join(sep.tmpDir.base, layerID) -+ if err := os.Rename(srcLayerPath, destLayerPath); err != nil { -+ return err -+ } -+ baseTarName := info.processTarName(baseTarNameSuffix) -+ baseTarName = sep.rename(baseTarName) -+ baseTarPath := filepath.Join(sep.dest, baseTarName) -+ if err := util.PackFiles(sep.tmpDir.base, baseTarPath, archive.Gzip, true); err != nil { -+ return err -+ } -+ baseImagesMap[layerID] = baseTarPath -+ tarball.BaseTarName = baseTarName -+ digest, err := util.SHA256Sum(baseTarPath) -+ if err != nil { -+ return errors.Wrapf(err, "check sum for new base image %s failed", baseTarName) -+ } -+ tarball.BaseHash = digest -+ } else { -+ tarball.BaseTarName = filepath.Base(baseImg) -+ digest, err := util.SHA256Sum(baseImg) -+ if err != nil { -+ return errors.Wrapf(err, "check sum for reuse base image %s failed", baseImg) -+ } -+ tarball.BaseHash = digest -+ } -+ } -+ -+ return nil -+} -+ -+func (info *imageInfo) processLibImg(sep *separatorSave, libImagesMap map[string]string, tarball *tarballInfo) error { -+ // process lib -+ if info.layers.lib == nil { -+ return nil -+ } -+ -+ tarball.LibImageName = sep.lib -+ for _, layerID := range info.layers.lib { -+ tarball.LibLayers = append(tarball.LibLayers, layerID) -+ if libImg, ok := libImagesMap[layerID]; !ok { -+ srcLayerPath := filepath.Join(sep.tmpDir.untar, layerID) -+ destLayerPath := filepath.Join(sep.tmpDir.lib, layerID) -+ if err := os.Rename(srcLayerPath, destLayerPath); err != nil { -+ return err -+ } -+ libTarName := info.processTarName(libTarNameSuffix) -+ libTarName = sep.rename(libTarName) -+ libTarPath := filepath.Join(sep.dest, libTarName) -+ if err := util.PackFiles(sep.tmpDir.lib, libTarPath, archive.Gzip, true); err != nil { -+ return err -+ } -+ libImagesMap[layerID] = libTarPath -+ tarball.LibTarName = libTarName -+ digest, err := util.SHA256Sum(libTarPath) -+ if err != nil { -+ return errors.Wrapf(err, "check sum for lib image %s failed", sep.lib) -+ } -+ tarball.LibHash = digest -+ } else { -+ tarball.LibTarName = filepath.Base(libImg) -+ digest, err := util.SHA256Sum(libImg) -+ if err != nil { -+ return errors.Wrapf(err, "check sum for lib image %s failed", sep.lib) -+ } -+ tarball.LibHash = digest -+ } -+ } -+ -+ return nil -+} -+ -+func (info *imageInfo) processAppImg(sep *separatorSave, appImagesMap map[string]string, tarball *tarballInfo) error { -+ // process app -+ appTarName := info.processTarName(appTarNameSuffix) -+ appTarName = sep.rename(appTarName) -+ appTarPath := filepath.Join(sep.dest, appTarName) -+ for _, layerID := range info.layers.app { -+ srcLayerPath := filepath.Join(sep.tmpDir.untar, layerID) -+ destLayerPath := filepath.Join(sep.tmpDir.app, layerID) -+ if err := os.Rename(srcLayerPath, destLayerPath); err != nil { -+ if appImg, ok := appImagesMap[layerID]; ok { -+ return errors.Errorf("lib layers %s already saved in %s for image %s", -+ layerID, appImg, info.nameTag) -+ } -+ } -+ appImagesMap[layerID] = appTarPath -+ tarball.AppLayers = append(tarball.AppLayers, layerID) -+ } -+ // create config file -+ if err := info.createManifestFile(sep); err != nil { -+ return err -+ } -+ if err := info.createRepositoriesFile(sep); err != nil { -+ return err -+ } -+ -+ srcConfigPath := filepath.Join(sep.tmpDir.untar, info.config) -+ destConfigPath := filepath.Join(sep.tmpDir.app, info.config) -+ if err := os.Rename(srcConfigPath, destConfigPath); err != nil { -+ return err -+ } -+ -+ if err := util.PackFiles(sep.tmpDir.app, appTarPath, archive.Gzip, true); err != nil { -+ return err -+ } -+ tarball.AppTarName = appTarName -+ digest, err := util.SHA256Sum(appTarPath) -+ if err != nil { -+ return errors.Wrapf(err, "check sum for app image %s failed", info.nameTag) -+ } -+ tarball.AppHash = digest -+ -+ return nil -+} -+ -+func (info imageInfo) createRepositoriesFile(sep *separatorSave) error { -+ // create repositories -+ type repoItem map[string]string -+ repo := make(map[string]repoItem, 1) -+ item := make(repoItem, 1) -+ if _, ok := item[info.tag]; !ok { -+ item[info.tag] = info.topLayer -+ } -+ repo[info.name] = item -+ buf, err := json.Marshal(repo) -+ if err != nil { -+ return err -+ } -+ repositoryFile := filepath.Join(sep.tmpDir.app, repositoriesFile) -+ if err := ioutils.AtomicWriteFile(repositoryFile, buf, constant.DefaultRootFileMode); err != nil { -+ return err -+ } -+ return nil -+} -+ -+func (info imageInfo) createManifestFile(sep *separatorSave) error { -+ // create manifest.json -+ var s = imageManifest{ -+ Config: info.config, -+ Layers: info.layers.all, -+ RepoTags: info.repoTags, -+ } -+ var m []imageManifest -+ m = append(m, s) -+ buf, err := json.Marshal(&m) -+ if err != nil { -+ return err -+ } -+ data := filepath.Join(sep.tmpDir.app, manifestDataFile) -+ if err := ioutils.AtomicWriteFile(data, buf, constant.DefaultRootFileMode); err != nil { -+ return err -+ } -+ return nil -+} -+ -+func getLayersID(layer []string) []string { -+ var after = make([]string, len(layer)) -+ for i, v := range layer { -+ after[i] = strings.Split(v, "/")[0] -+ } -+ return after -+} -+ -+func (s *separatorSave) constructSingleImgInfo(mani imageManifest, store *store.Store) (imageInfo, error) { -+ var libLayers, appLayers []string -+ imageRepoFields := strings.Split(mani.RepoTags[0], ":") -+ imageLayers := getLayersID(mani.Layers) -+ -+ libs, bases, err := s.checkLayersHash(mani.HashMap, store) -+ if err != nil { -+ return imageInfo{}, errors.Wrap(err, "compare layers failed") -+ } -+ baseLayers := imageLayers[0:len(bases)] -+ if len(libs) != 0 { -+ libLayers = imageLayers[len(bases):len(libs)] -+ appLayers = imageLayers[len(libs):] -+ } else { -+ libLayers = nil -+ appLayers = imageLayers[len(bases):] -+ } -+ -+ return imageInfo{ -+ config: mani.Config, -+ repoTags: mani.RepoTags, -+ nameTag: mani.RepoTags[0], -+ name: strings.Join(imageRepoFields[0:len(imageRepoFields)-1], ":"), -+ tag: imageRepoFields[len(imageRepoFields)-1], -+ layers: layer{app: appLayers, lib: libLayers, base: baseLayers, all: mani.Layers}, -+ topLayer: imageLayers[len(imageLayers)-1], -+ }, nil -+} -+ -+func (s *separatorSave) checkLayersHash(layerHashMap map[string]string, store *store.Store) ([]string, []string, error) { -+ libHash, err := getLayerHashFromStorage(store, s.lib) -+ if err != nil { -+ return nil, nil, errors.Wrapf(err, "get lib image %s layers failed", s.lib) -+ } -+ baseHash, err := getLayerHashFromStorage(store, s.base) -+ if err != nil { -+ return nil, nil, errors.Wrapf(err, "get base image %s layers failed", s.base) -+ } -+ if len(libHash) >= len(layerHashMap) || len(baseHash) >= len(layerHashMap) { -+ return nil, nil, errors.Errorf("number of base or lib layers is equal or greater than saved app layers") -+ } -+ -+ for _, l := range libHash { -+ if _, ok := layerHashMap[l]; !ok { -+ return nil, nil, errors.Errorf("dismatch checksum for lib image %s", s.lib) -+ } -+ } -+ for _, b := range baseHash { -+ if _, ok := layerHashMap[b]; !ok { -+ return nil, nil, errors.Errorf("dismatch checksum for base image %s", s.base) -+ } -+ } -+ -+ return libHash, baseHash, nil -+} -+ -+func (s *separatorSave) constructImageInfos(manifest []imageManifest, store *store.Store) (map[string]imageInfo, error) { -+ s.log.Info("Constructing image info") -+ -+ var imgInfos = make(map[string]imageInfo, 1) -+ for _, mani := range manifest { -+ imgInfo, err := s.constructSingleImgInfo(mani, store) -+ if err != nil { -+ s.log.Errorf("Constructing image info failed: %v", err) -+ return nil, errors.Wrap(err, "construct image info failed") -+ } -+ if _, ok := imgInfos[imgInfo.nameTag]; !ok { -+ imgInfos[imgInfo.nameTag] = imgInfo -+ } -+ } -+ return imgInfos, nil -+} -+ -+func (s *separatorSave) rename(name string) string { -+ if len(s.renameData) != 0 { -+ s.log.Info("Renaming image tarballs") -+ for _, item := range s.renameData { -+ if item.Name == name { -+ return item.Rename -+ } -+ } -+ } -+ return name -+} -diff --git a/util/cipher.go b/util/cipher.go -index b2aea2a9..d92705c3 100644 ---- a/util/cipher.go -+++ b/util/cipher.go -@@ -19,9 +19,11 @@ import ( - "crypto/cipher" - "crypto/rand" - "crypto/rsa" -+ "crypto/sha256" - "crypto/x509" - "encoding/hex" - "encoding/pem" -+ "fmt" - "hash" - "io" - "io/ioutil" -@@ -229,3 +231,79 @@ func ReadPublicKey(path string) (rsa.PublicKey, error) { - - return *key, nil - } -+ -+func hashFile(path string) (string, error) { -+ cleanPath := filepath.Clean(path) -+ if len(cleanPath) == 0 { -+ return "", errors.New("failed to hash empty path") -+ } -+ if f, err := os.Stat(cleanPath); err != nil { -+ return "", errors.Errorf("failed to stat file %q", cleanPath) -+ } else if f.IsDir() { -+ return "", errors.New("failed to hash directory") -+ } -+ -+ file, err := ioutil.ReadFile(cleanPath) // nolint:gosec -+ if err != nil { -+ return "", errors.Wrapf(err, "hash file failed") -+ } -+ -+ return fmt.Sprintf("%x", sha256.Sum256(file)), nil -+} -+ -+func hashDir(path string) (string, error) { -+ var checkSum string -+ if err := filepath.Walk(path, func(path string, info os.FileInfo, err error) error { -+ cleanPath := filepath.Clean(path) -+ if err != nil { -+ return err -+ } -+ if !info.Mode().IsRegular() { -+ return nil -+ } -+ if !info.IsDir() { -+ f, err := ioutil.ReadFile(cleanPath) // nolint:gosec -+ if err != nil { -+ return err -+ } -+ fileHash := fmt.Sprintf("%x", sha256.Sum256(f)) -+ checkSum = fmt.Sprintf("%s%s", checkSum, fileHash) -+ } -+ return nil -+ }); err != nil { -+ return "", err -+ } -+ -+ return fmt.Sprintf("%x", sha256.Sum256([]byte(checkSum))), nil -+} -+ -+// SHA256Sum will calculate sha256 checksum for path(file or directory) -+// When calculate directory, each file of folder will be calculated and -+// the checksum will be concatenated to next checksum until every file -+// counted, the result will be used for final checksum calculation -+func SHA256Sum(path string) (string, error) { -+ path = filepath.Clean(path) -+ f, err := os.Stat(path) -+ if err != nil { -+ return "", err -+ } -+ if f.IsDir() { -+ return hashDir(path) -+ } -+ -+ return hashFile(path) -+} -+ -+// CheckSum will calculate the sha256sum for path and compare it with -+// the target, if not match, return error -+func CheckSum(path, target string) error { -+ digest, err := SHA256Sum(path) -+ if err != nil { -+ return err -+ } -+ if digest != target { -+ return errors.Errorf("check sum for path %s failed, got %s, want %s", -+ path, digest, target) -+ } -+ return nil -+} -diff --git a/util/file.go b/util/file.go -new file mode 100644 -index 00000000..cd4a75d5 ---- /dev/null -+++ b/util/file.go -@@ -0,0 +1,153 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+// isula-build licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Xiang Li -+// Create: 2021-08-24 -+// Description: file manipulation related common functions -+ -+package util -+ -+import ( -+ "encoding/json" -+ "io" -+ "io/ioutil" -+ "os" -+ "path/filepath" -+ "time" -+ -+ "github.com/containers/storage/pkg/archive" -+ "github.com/pkg/errors" -+) -+ -+const ( -+ fileMaxSize = 10 * 1024 * 1024 // 10MB -+) -+ -+// ReadSmallFile read small file less than 10MB -+func ReadSmallFile(path string) ([]byte, error) { -+ st, err := os.Lstat(path) -+ if err != nil { -+ return nil, err -+ } -+ if st.Size() > fileMaxSize { -+ return nil, errors.Errorf("file %q too big", path) -+ } -+ return ioutil.ReadFile(path) // nolint: gosec -+} -+ -+// LoadJSONFile load json files and store it into v -+func LoadJSONFile(file string, v interface{}) error { -+ f, err := ReadSmallFile(file) -+ if err != nil { -+ return err -+ } -+ return json.Unmarshal(f, v) -+} -+ -+// ChangeDirModifyTime changes modify time of directory -+func ChangeDirModifyTime(dir string) error { -+ fs, rErr := ioutil.ReadDir(dir) -+ if rErr != nil { -+ return rErr -+ } -+ for _, f := range fs { -+ src := filepath.Join(dir, f.Name()) -+ if err := ChangeFileModifyTime(src); err != nil { -+ return err -+ } -+ if f.IsDir() { -+ if err := ChangeDirModifyTime(src); err != nil { -+ return err -+ } -+ } -+ } -+ return nil -+} -+ -+// ChangeFileModifyTime changes modify time of file by fixing time at 2017-01-01 00:00:00 -+func ChangeFileModifyTime(path string) error { -+ mtime := time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -+ atime := time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -+ if _, err := os.Lstat(path); err != nil { -+ return err -+ } -+ if err := os.Chtimes(path, atime, mtime); err != nil { -+ return err -+ } -+ return nil -+} -+ -+// PackFiles will pack files in "src" directory to "dest" file -+// by using different compression method defined by "com" -+// the files' modify time attribute will be set to a fix time "2017-01-01 00:00:00" -+// if set "modifyTime" to true -+func PackFiles(src, dest string, com archive.Compression, modifyTime bool) (err error) { -+ if modifyTime { -+ if err = ChangeDirModifyTime(src); err != nil { -+ return err -+ } -+ } -+ -+ reader, err := archive.Tar(src, com) -+ if err != nil { -+ return err -+ } -+ -+ f, err := os.Create(dest) -+ if err != nil { -+ return err -+ } -+ -+ defer func() { -+ cErr := f.Close() -+ if cErr != nil && err == nil { -+ err = cErr -+ } -+ }() -+ -+ if _, err = io.Copy(f, reader); err != nil { -+ return err -+ } -+ -+ return nil -+} -+ -+// UnpackFile will unpack "src" file to "dest" directory -+// by using different compression method defined by "com" -+// The src file will be remove if set "rm" to true -+func UnpackFile(src, dest string, com archive.Compression, rm bool) (err error) { -+ cleanPath := filepath.Clean(src) -+ f, err := os.Open(cleanPath) // nolint:gosec -+ if err != nil { -+ return errors.Wrapf(err, "unpack: open %q failed", src) -+ } -+ -+ defer func() { -+ cErr := f.Close() -+ if cErr != nil && err == nil { -+ err = cErr -+ } -+ }() -+ -+ if err = archive.Untar(f, dest, &archive.TarOptions{Compression: com}); err != nil { -+ return errors.Wrapf(err, "unpack file %q failed", src) -+ } -+ -+ if err = ChangeDirModifyTime(dest); err != nil { -+ return errors.Wrapf(err, "change modify time for directory %q failed", dest) -+ } -+ -+ if rm { -+ if err = os.RemoveAll(src); err != nil { -+ return errors.Errorf("unpack: remove %q failed: %v ", src, err) -+ } -+ } -+ -+ return nil -+} --- -2.27.0 - diff --git a/patch/0075-cli-finish-client-load-separated-image.patch b/patch/0075-cli-finish-client-load-separated-image.patch deleted file mode 100644 index bfa546e..0000000 --- a/patch/0075-cli-finish-client-load-separated-image.patch +++ /dev/null @@ -1,274 +0,0 @@ -From 5749a92be53a3e8a135b4f7e59e8fd6d470fbd55 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 26 Oct 2021 14:20:07 +0800 -Subject: [PATCH 05/16] cli:finish client load separated image - -reason: support isula-build client side process info for load separated -image -ABI change:(client) -- --input: name of app images when load separated images -- --dir: path to separated images' tarball directory -- --base: base image tarball path of separated images -- --lib: lib image tarball path of separated images -- --no-check: skip sha256 check sum for legacy separated images loading - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/load.go | 113 ++++++++++++++++++++++++++++++++++++++++--- - cmd/cli/load_test.go | 50 +++++++++++++++++-- - cmd/cli/mock.go | 10 ++++ - 3 files changed, 160 insertions(+), 13 deletions(-) - -diff --git a/cmd/cli/load.go b/cmd/cli/load.go -index 16e90a26..2a9df772 100644 ---- a/cmd/cli/load.go -+++ b/cmd/cli/load.go -@@ -25,18 +25,32 @@ import ( - "github.com/pkg/errors" - "github.com/spf13/cobra" - -+ constant "isula.org/isula-build" - pb "isula.org/isula-build/api/services" - "isula.org/isula-build/util" - ) - -+type separatorLoadOption struct { -+ app string -+ base string -+ lib string -+ dir string -+ skipCheck bool -+ enabled bool -+} -+ - type loadOptions struct { -- path string -+ path string -+ loadID string -+ sep separatorLoadOption - } - - var loadOpts loadOptions - - const ( -- loadExample = `isula-build ctr-img load -i busybox.tar` -+ loadExample = `isula-build ctr-img load -i busybox.tar -+isula-build ctr-img load -i app:latest -d /home/Images -+isula-build ctr-img load -i app:latest -d /home/Images -b /home/Images/base.tar.gz -l /home/Images/lib.tar.gz` - ) - - // NewLoadCmd returns image load command -@@ -49,12 +63,20 @@ func NewLoadCmd() *cobra.Command { - RunE: loadCommand, - } - -- loadCmd.PersistentFlags().StringVarP(&loadOpts.path, "input", "i", "", "Path to local tarball") -+ loadCmd.PersistentFlags().StringVarP(&loadOpts.path, "input", "i", "", "Path to local tarball(or app image name when load separated images)") -+ loadCmd.PersistentFlags().StringVarP(&loadOpts.sep.dir, "dir", "d", "", "Path to separated image tarballs directory") -+ loadCmd.PersistentFlags().StringVarP(&loadOpts.sep.base, "base", "b", "", "Base image tarball path of separated images") -+ loadCmd.PersistentFlags().StringVarP(&loadOpts.sep.lib, "lib", "l", "", "Library image tarball path of separated images") -+ loadCmd.PersistentFlags().BoolVarP(&loadOpts.sep.skipCheck, "no-check", "", false, "Skip sha256 check sum for legacy separated images loading") - - return loadCmd - } - - func loadCommand(cmd *cobra.Command, args []string) error { -+ if err := loadOpts.checkLoadOpts(); err != nil { -+ return errors.Wrapf(err, "check load options failed") -+ } -+ - ctx := context.Background() - cli, err := NewClient(ctx) - if err != nil { -@@ -65,14 +87,20 @@ func loadCommand(cmd *cobra.Command, args []string) error { - } - - func runLoad(ctx context.Context, cli Cli) error { -- var err error -- -- if loadOpts.path, err = resolveLoadPath(loadOpts.path); err != nil { -- return err -+ loadOpts.loadID = util.GenerateNonCryptoID()[:constant.DefaultIDLen] -+ sep := &pb.SeparatorLoad{ -+ App: loadOpts.sep.app, -+ Dir: loadOpts.sep.dir, -+ Base: loadOpts.sep.base, -+ Lib: loadOpts.sep.lib, -+ SkipCheck: loadOpts.sep.skipCheck, -+ Enabled: loadOpts.sep.enabled, - } - - resp, err := cli.Client().Load(ctx, &pb.LoadRequest{ -- Path: loadOpts.path, -+ Path: loadOpts.path, -+ LoadID: loadOpts.loadID, -+ Sep: sep, - }) - if err != nil { - return err -@@ -114,3 +142,72 @@ func resolveLoadPath(path string) (string, error) { - - return path, nil - } -+ -+func (opt *loadOptions) checkLoadOpts() error { -+ // normal load -+ if !opt.sep.isEnabled() { -+ path, err := resolveLoadPath(opt.path) -+ if err != nil { -+ return err -+ } -+ opt.path = path -+ -+ return nil -+ } -+ -+ // load separated image -+ opt.sep.enabled = true -+ if len(opt.path) == 0 { -+ return errors.New("app image should not be empty") -+ } -+ -+ // Use opt.path as app image name when operating separated images -+ // this can be mark as a switch for handling separated images -+ opt.sep.app = opt.path -+ -+ if err := opt.sep.check(); err != nil { -+ return err -+ } -+ -+ return nil -+} -+ -+func (sep *separatorLoadOption) isEnabled() bool { -+ return util.AnyFlagSet(sep.dir, sep.base, sep.lib, sep.app) -+} -+ -+func (sep *separatorLoadOption) check() error { -+ pwd, err := os.Getwd() -+ if err != nil { -+ return errors.New("get current path failed") -+ } -+ if !util.IsValidImageName(sep.app) { -+ return errors.Errorf("invalid image name: %s", sep.app) -+ } -+ -+ if len(sep.base) != 0 { -+ path, err := resolveLoadPath(sep.base) -+ if err != nil { -+ return errors.Wrap(err, "resolve base tarball path failed") -+ } -+ sep.base = path -+ } -+ if len(sep.lib) != 0 { -+ path, err := resolveLoadPath(sep.lib) -+ if err != nil { -+ return errors.Wrap(err, "resolve lib tarball path failed") -+ } -+ sep.lib = path -+ } -+ if len(sep.dir) == 0 { -+ return errors.New("image tarball directory should not be empty") -+ } -+ if !filepath.IsAbs(sep.dir) { -+ sep.dir = util.MakeAbsolute(sep.dir, pwd) -+ } -+ if !util.IsExist(sep.dir) { -+ return errors.Errorf("image tarball directory %s is not exist", sep.dir) -+ } -+ -+ return nil -+} -diff --git a/cmd/cli/load_test.go b/cmd/cli/load_test.go -index 9c753e23..b7bf2a57 100644 ---- a/cmd/cli/load_test.go -+++ b/cmd/cli/load_test.go -@@ -15,19 +15,59 @@ package main - - import ( - "context" -+ "io/ioutil" - "path/filepath" - "testing" - - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ constant "isula.org/isula-build" - ) - - func TestLoadCmd(t *testing.T) { -- cmd := NewLoadCmd() -- err := cmd.Execute() -- assert.Equal(t, err != nil, true) -- err = loadCommand(cmd, nil) -- assert.ErrorContains(t, err, "isula_build") -+ tmpDir := fs.NewFile(t, t.Name()) -+ err := ioutil.WriteFile(tmpDir.Path(), []byte("This is test file"), constant.DefaultSharedFileMode) -+ assert.NilError(t, err) -+ defer tmpDir.Remove() -+ -+ type testcase struct { -+ name string -+ path string -+ errString string -+ args []string -+ wantErr bool -+ sep separatorLoadOption -+ } -+ // For normal cases, default err is "invalid socket path: unix:///var/run/isula_build.sock". -+ // As daemon is not running as we run unit test. -+ var testcases = []testcase{ -+ { -+ name: "TC1 - normal case", -+ path: tmpDir.Path(), -+ errString: "isula_build.sock", -+ wantErr: true, -+ }, -+ } -+ -+ for _, tc := range testcases { -+ t.Run(tc.name, func(t *testing.T) { -+ loadCmd := NewLoadCmd() -+ loadOpts = loadOptions{ -+ path: tc.path, -+ sep: tc.sep, -+ } -+ err := loadCmd.Execute() -+ assert.Equal(t, err != nil, true) -+ -+ err = loadCommand(loadCmd, tc.args) -+ if tc.wantErr { -+ assert.ErrorContains(t, err, tc.errString) -+ } -+ if !tc.wantErr { -+ assert.NilError(t, err) -+ } -+ }) -+ } - } - - func TestRunLoad(t *testing.T) { -diff --git a/cmd/cli/mock.go b/cmd/cli/mock.go -index 2ae07d56..142c87fa 100644 ---- a/cmd/cli/mock.go -+++ b/cmd/cli/mock.go -@@ -318,6 +318,16 @@ func (f *mockDaemon) importImage(_ context.Context, opts ...grpc.CallOption) (pb - - func (f *mockDaemon) load(_ context.Context, in *pb.LoadRequest, opts ...grpc.CallOption) (pb.Control_LoadClient, error) { - f.loadReq = in -+ path := f.loadReq.Path -+ sep := f.loadReq.Sep -+ if !sep.Enabled { -+ if path == "" { -+ return &mockLoadClient{}, errors.Errorf("tarball path should not be empty") -+ } -+ _, err := resolveLoadPath(path) -+ return &mockLoadClient{}, err -+ } -+ - return &mockLoadClient{}, nil - } - --- -2.27.0 - diff --git a/patch/0076-daemon-finish-daemon-load-separated-image.patch b/patch/0076-daemon-finish-daemon-load-separated-image.patch deleted file mode 100644 index 5bbf1d4..0000000 --- a/patch/0076-daemon-finish-daemon-load-separated-image.patch +++ /dev/null @@ -1,389 +0,0 @@ -From 6545a2222419954045cf4b80cc9f03f918e568af Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 26 Oct 2021 14:21:02 +0800 -Subject: [PATCH] daemon:finish daemon load separated image - -reason: support isula-build daemon side load separated image -ABI change(daemon): none -Load process changes: -1. construct image tarball at the beginning of load process - - input: separated images - - output: none - - addition: new images in local storages - -Signed-off-by: DCCooper <1866858@gmail.com> -Signed-off-by: lixiang ---- - daemon/load.go | 306 +++++++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 294 insertions(+), 12 deletions(-) - -diff --git a/daemon/load.go b/daemon/load.go -index 2fb8e27d..41690abc 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -14,11 +14,16 @@ - package daemon - - import ( -+ "io/ioutil" -+ "os" -+ "path/filepath" -+ - "github.com/containers/image/v5/docker/tarfile" - ociarchive "github.com/containers/image/v5/oci/archive" - "github.com/containers/image/v5/transports/alltransports" - "github.com/containers/image/v5/types" - "github.com/containers/storage" -+ "github.com/containers/storage/pkg/archive" - securejoin "github.com/cyphar/filepath-securejoin" - imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/pkg/errors" -@@ -33,30 +38,108 @@ import ( - "isula.org/isula-build/util" - ) - -+const ( -+ tmpBaseDirName = "base" -+ tmpAppDirName = "app" -+ tmpLibDirName = "lib" -+ unionCompressedTarName = "all.tar.gz" -+) -+ -+type loadImageTmpDir struct { -+ app string -+ base string -+ lib string -+ root string -+} -+ -+type separatorLoad struct { -+ log *logrus.Entry -+ tmpDir loadImageTmpDir -+ info tarballInfo -+ appName string -+ basePath string -+ appPath string -+ libPath string -+ dir string -+ skipCheck bool -+ enabled bool -+} -+ - type loadOptions struct { -- path string -- format string -+ path string -+ format string -+ logEntry *logrus.Entry -+ sep separatorLoad - } - --func (b *Backend) getLoadOptions(req *pb.LoadRequest) loadOptions { -- return loadOptions{ -+func (b *Backend) getLoadOptions(req *pb.LoadRequest) (loadOptions, error) { -+ var opt = loadOptions{ - path: req.GetPath(), -+ sep: separatorLoad{ -+ appName: req.GetSep().GetApp(), -+ basePath: req.GetSep().GetBase(), -+ libPath: req.GetSep().GetLib(), -+ dir: req.GetSep().GetDir(), -+ skipCheck: req.GetSep().GetSkipCheck(), -+ enabled: req.GetSep().GetEnabled(), -+ }, -+ logEntry: logrus.WithFields(logrus.Fields{"LoadID": req.GetLoadID()}), - } -+ -+ // normal loadOptions -+ if !opt.sep.enabled { -+ if err := util.CheckLoadFile(opt.path); err != nil { -+ return loadOptions{}, err -+ } -+ return opt, nil -+ } -+ -+ // load separated images -+ // log is used for sep methods -+ opt.sep.log = opt.logEntry -+ tmpRoot := filepath.Join(b.daemon.opts.DataRoot, filepath.Join(dataRootTmpDirPrefix, req.GetLoadID())) -+ opt.sep.tmpDir.root = tmpRoot -+ opt.sep.tmpDir.base = filepath.Join(tmpRoot, tmpBaseDirName) -+ opt.sep.tmpDir.app = filepath.Join(tmpRoot, tmpAppDirName) -+ opt.sep.tmpDir.lib = filepath.Join(tmpRoot, tmpLibDirName) -+ -+ // check image name and add "latest" tag if not present -+ _, appImgName, err := image.GetNamedTaggedReference(opt.sep.appName) -+ if err != nil { -+ return loadOptions{}, err -+ } -+ opt.sep.appName = appImgName -+ -+ return opt, nil - } - - // Load loads the image - func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error { -- logrus.Info("LoadRequest received") -+ logrus.WithFields(logrus.Fields{ -+ "LoadID": req.GetLoadID(), -+ }).Info("LoadRequest received") - - var ( - si *storage.Image - repoTags [][]string -- err error - ) -- opts := b.getLoadOptions(req) -+ opts, err := b.getLoadOptions(req) -+ if err != nil { -+ return errors.Wrap(err, "process load options failed") -+ } -+ -+ defer func() { -+ if tErr := os.RemoveAll(opts.sep.tmpDir.root); tErr != nil { -+ opts.logEntry.Warnf("Removing load tmp directory %q failed: %v", opts.sep.tmpDir.root, tErr) -+ } -+ }() - -- if cErr := util.CheckLoadFile(req.Path); cErr != nil { -- return cErr -+ // construct separated images -+ if opts.sep.enabled { -+ if lErr := loadSeparatedImage(&opts); lErr != nil { -+ opts.logEntry.Errorf("Load separated image for %s failed: %v", opts.sep.appName, lErr) -+ return lErr -+ } - } - - repoTags, err = tryToParseImageFormatFromTarball(b.daemon.opts.DataRoot, &opts) -@@ -149,8 +232,13 @@ func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path strin - // tmp dir will be removed after NewSourceFromFileWithContext - tarfileSource, err := tarfile.NewSourceFromFileWithContext(systemContext, path) - if err != nil { -- return nil, errors.Wrapf(err, "failed to get the source of loading tar file") -+ return nil, errors.Wrap(err, "failed to get the source of loading tar file") - } -+ defer func() { -+ if cErr := tarfileSource.Close(); cErr != nil { -+ logrus.Warnf("tar file source close failed: %v", cErr) -+ } -+ }() - - topLevelImageManifest, err := tarfileSource.LoadTarManifest() - if err != nil || len(topLevelImageManifest) == 0 { -@@ -172,12 +260,12 @@ func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) - - srcRef, err := alltransports.ParseImageName(exporter.FormatTransport(constant.OCIArchiveTransport, path)) - if err != nil { -- return nil, errors.Wrapf(err, "failed to parse image name of oci image format") -+ return nil, errors.Wrap(err, "failed to parse image name of oci image format") - } - - tarManifest, err := ociarchive.LoadManifestDescriptorWithContext(systemContext, srcRef) - if err != nil { -- return nil, errors.Wrapf(err, "failed to load manifest descriptor of oci image format") -+ return nil, errors.Wrap(err, "failed to load manifest descriptor of oci image format") - } - - // For now, we only support load single image in archive file -@@ -187,3 +275,197 @@ func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) - - return [][]string{{}}, nil - } -+ -+func loadSeparatedImage(opt *loadOptions) error { -+ s := &opt.sep -+ s.log.Infof("Starting load separated image %s", s.appName) -+ -+ // load manifest file to get tarball info -+ if err := s.getTarballInfo(); err != nil { -+ return errors.Wrap(err, "failed to get tarball info") -+ } -+ if err := s.constructTarballInfo(); err != nil { -+ return err -+ } -+ // checksum for image tarballs -+ if err := s.tarballCheckSum(); err != nil { -+ return err -+ } -+ // process image tarballs and get final constructed image tarball -+ tarPath, err := s.processTarballs() -+ if err != nil { -+ return err -+ } -+ opt.path = tarPath -+ -+ return nil -+} -+ -+func (s *separatorLoad) getTarballInfo() error { -+ manifest, err := securejoin.SecureJoin(s.dir, manifestFile) -+ if err != nil { -+ return errors.Wrap(err, "join manifest file path failed") -+ } -+ -+ var t = make(map[string]tarballInfo) -+ if err = util.LoadJSONFile(manifest, &t); err != nil { -+ return errors.Wrap(err, "load manifest file failed") -+ } -+ -+ tarball, ok := t[s.appName] -+ if !ok { -+ return errors.Errorf("failed to find app image %s", s.appName) -+ } -+ s.info = tarball -+ -+ return nil -+} -+ -+func (s *separatorLoad) constructTarballInfo() (err error) { -+ s.log.Infof("construct image tarball info for %s", s.appName) -+ // fill up path for separator -+ // this case should not happened since client side already check this flag -+ if len(s.appName) == 0 { -+ return errors.New("app image name should not be empty") -+ } -+ s.appPath, err = securejoin.SecureJoin(s.dir, s.info.AppTarName) -+ if err != nil { -+ return err -+ } -+ -+ if len(s.basePath) == 0 { -+ if len(s.info.BaseTarName) == 0 { -+ return errors.Errorf("base image %s tarball can not be empty", s.info.BaseImageName) -+ } -+ s.log.Info("Base image path is empty, use path from manifest") -+ s.basePath, err = securejoin.SecureJoin(s.dir, s.info.BaseTarName) -+ if err != nil { -+ return err -+ } -+ } -+ if len(s.libPath) == 0 && len(s.info.LibTarName) != 0 { -+ s.log.Info("Lib image path is empty, use path from manifest") -+ s.libPath, err = securejoin.SecureJoin(s.dir, s.info.LibTarName) -+ if err != nil { -+ return err -+ } -+ } -+ -+ return nil -+} -+ -+func (s *separatorLoad) tarballCheckSum() error { -+ if s.skipCheck { -+ s.log.Info("Skip checksum for tarballs") -+ return nil -+ } -+ -+ // app image tarball can not be empty -+ if len(s.appPath) == 0 { -+ return errors.New("app image tarball path can not be empty") -+ } -+ if err := util.CheckSum(s.appPath, s.info.AppHash); err != nil { -+ return errors.Wrapf(err, "check sum for file %q failed", s.appPath) -+ } -+ -+ // base image tarball can not be empty -+ if len(s.basePath) == 0 { -+ return errors.New("base image tarball path can not be empty") -+ } -+ if err := util.CheckSum(s.basePath, s.info.BaseHash); err != nil { -+ return errors.Wrapf(err, "check sum for file %q failed", s.basePath) -+ } -+ -+ // lib image may be empty image -+ if len(s.libPath) != 0 { -+ if err := util.CheckSum(s.libPath, s.info.LibHash); err != nil { -+ return errors.Wrapf(err, "check sum for file %q failed", s.libPath) -+ } -+ } -+ -+ return nil -+} -+ -+func (s *separatorLoad) processTarballs() (string, error) { -+ if err := s.unpackTarballs(); err != nil { -+ return "", err -+ } -+ -+ if err := s.reconstructImage(); err != nil { -+ return "", err -+ } -+ -+ // pack app image to tarball -+ tarPath := filepath.Join(s.tmpDir.root, unionCompressedTarName) -+ if err := util.PackFiles(s.tmpDir.base, tarPath, archive.Gzip, true); err != nil { -+ return "", err -+ } -+ -+ return tarPath, nil -+} -+ -+func (s *separatorLoad) unpackTarballs() error { -+ if err := s.makeTempDir(); err != nil { -+ return errors.Wrap(err, "failed to make temporary directories") -+ } -+ -+ // unpack base first and the later images will be moved here -+ if err := util.UnpackFile(s.basePath, s.tmpDir.base, archive.Gzip, false); err != nil { -+ return errors.Wrapf(err, "unpack base tarball %q failed", s.basePath) -+ } -+ -+ if err := util.UnpackFile(s.appPath, s.tmpDir.app, archive.Gzip, false); err != nil { -+ return errors.Wrapf(err, "unpack app tarball %q failed", s.appPath) -+ } -+ -+ if len(s.libPath) != 0 { -+ if err := util.UnpackFile(s.libPath, s.tmpDir.lib, archive.Gzip, false); err != nil { -+ return errors.Wrapf(err, "unpack lib tarball %q failed", s.libPath) -+ } -+ } -+ -+ return nil -+} -+ -+func (s *separatorLoad) reconstructImage() error { -+ files, err := ioutil.ReadDir(s.tmpDir.app) -+ if err != nil { -+ return err -+ } -+ -+ for _, f := range files { -+ src := filepath.Join(s.tmpDir.app, f.Name()) -+ dest := filepath.Join(s.tmpDir.base, f.Name()) -+ if err := os.Rename(src, dest); err != nil { -+ return errors.Wrapf(err, "reconstruct app file %q failed", s.info.AppTarName) -+ } -+ } -+ -+ if len(s.libPath) != 0 { -+ files, err := ioutil.ReadDir(s.tmpDir.lib) -+ if err != nil { -+ return err -+ } -+ -+ for _, f := range files { -+ src := filepath.Join(s.tmpDir.lib, f.Name()) -+ dest := filepath.Join(s.tmpDir.base, f.Name()) -+ if err := os.Rename(src, dest); err != nil { -+ return errors.Wrapf(err, "reconstruct lib file %q failed", s.info.LibTarName) -+ } -+ } -+ } -+ -+ return nil -+} -+ -+func (s *separatorLoad) makeTempDir() error { -+ dirs := []string{s.tmpDir.root, s.tmpDir.app, s.tmpDir.base, s.tmpDir.lib} -+ for _, dir := range dirs { -+ if err := os.MkdirAll(dir, constant.DefaultRootDirMode); err != nil { -+ return err -+ } -+ } -+ -+ return nil -+} --- -2.27.0 - diff --git a/patch/0077-test-optimize-save-client-options-and-add-unit-test.patch b/patch/0077-test-optimize-save-client-options-and-add-unit-test.patch deleted file mode 100644 index 2b65137..0000000 --- a/patch/0077-test-optimize-save-client-options-and-add-unit-test.patch +++ /dev/null @@ -1,440 +0,0 @@ -From 6e321766a0b4ace2211c9d39cfce58bf4627e63f Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Wed, 27 Oct 2021 21:32:12 +0800 -Subject: [PATCH 04/16] test: optimize save client options and add unit test - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/save.go | 84 ++++++++-------- - cmd/cli/save_test.go | 232 ++++++++++++++++++++++++++++++++++++++++++- - 2 files changed, 270 insertions(+), 46 deletions(-) - -diff --git a/cmd/cli/save.go b/cmd/cli/save.go -index 4d22798a..599d394d 100644 ---- a/cmd/cli/save.go -+++ b/cmd/cli/save.go -@@ -18,7 +18,6 @@ import ( - "fmt" - "io" - "os" -- "path/filepath" - "strings" - - "github.com/pkg/errors" -@@ -51,21 +50,21 @@ const ( - saveExample = `isula-build ctr-img save busybox:latest -o busybox.tar - isula-build ctr-img save 21c3e96ac411 -o myimage.tar - isula-build ctr-img save busybox:latest alpine:3.9 -o all.tar --isula-build ctr-img save app:latest app1:latest -d Images -+isula-build ctr-img save app:latest -b busybox:latest -d Images - isula-build ctr-img save app:latest app1:latest -d Images -b busybox:latest -l lib:latest -r rename.json` - ) - - // NewSaveCmd cmd for container image saving - func NewSaveCmd() *cobra.Command { - saveCmd := &cobra.Command{ -- Use: "save IMAGE [IMAGE...] [FLAGS]", -+ Use: "save IMAGE [IMAGE...] FLAGS", - Short: "Save image to tarball", - Example: saveExample, - RunE: saveCommand, - } - - saveCmd.PersistentFlags().StringVarP(&saveOpts.path, "output", "o", "", "Path to save the tarball") -- saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.destPath, "dest", "d", "Images", "Destination file directory to store separated images") -+ saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.destPath, "dest", "d", "", "Destination file directory to store separated images") - saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.baseImgName, "base", "b", "", "Base image name of separated images") - saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.libImageName, "lib", "l", "", "Lib image name of separated images") - saveCmd.PersistentFlags().StringVarP(&saveOpts.sep.renameFile, "rename", "r", "", "Rename json file path of separated images") -@@ -95,12 +94,16 @@ func saveCommand(cmd *cobra.Command, args []string) error { - } - - func (sep *separatorSaveOption) check(pwd string) error { -- if len(sep.baseImgName) != 0 { -- if !util.IsValidImageName(sep.baseImgName) { -- return errors.Errorf("invalid base image name %s", sep.baseImgName) -- } -+ if len(sep.baseImgName) == 0 { -+ return errors.New("base image name(-b) must be provided") -+ } -+ if !util.IsValidImageName(sep.baseImgName) { -+ return errors.Errorf("invalid base image name %s", sep.baseImgName) - } - if len(sep.libImageName) != 0 { -+ if sep.libImageName == sep.baseImgName { -+ return errors.New("base and lib images are the same") -+ } - if !util.IsValidImageName(sep.libImageName) { - return errors.Errorf("invalid lib image name %s", sep.libImageName) - } -@@ -108,16 +111,12 @@ func (sep *separatorSaveOption) check(pwd string) error { - if len(sep.destPath) == 0 { - sep.destPath = "Images" - } -- if !filepath.IsAbs(sep.destPath) { -- sep.destPath = util.MakeAbsolute(sep.destPath, pwd) -- } -+ sep.destPath = util.MakeAbsolute(sep.destPath, pwd) - if util.IsExist(sep.destPath) { -- return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", sep.destPath) -+ return errors.Errorf("dest path already exist: %q, try to remove or rename it", sep.destPath) - } - if len(sep.renameFile) != 0 { -- if !filepath.IsAbs(sep.renameFile) { -- sep.renameFile = util.MakeAbsolute(sep.renameFile, pwd) -- } -+ sep.renameFile = util.MakeAbsolute(sep.renameFile, pwd) - } - - return nil -@@ -136,39 +135,36 @@ func (opt *saveOptions) checkSaveOpts(args []string) error { - return errors.New("get current path failed") - } - -- // normal save -- if !opt.sep.isEnabled() { -- // only check oci format when doing normal save operation -- if opt.format == constant.OCITransport && len(args) >= 2 { -- return errors.New("oci image format now only supports saving single image") -+ // separator save -+ if opt.sep.isEnabled() { -+ if len(opt.path) != 0 { -+ return errors.New("conflict flags between -o and [-b -l -r -d]") - } -- if err := util.CheckImageFormat(opt.format); err != nil { -+ // separate image only support docker image spec -+ opt.format = constant.DockerTransport -+ if err := opt.sep.check(pwd); err != nil { - return err - } -- if len(opt.path) == 0 { -- return errors.New("output path should not be empty") -- } -- if !filepath.IsAbs(opt.path) { -- opt.path = util.MakeAbsolute(opt.path, pwd) -- } -- if util.IsExist(opt.path) { -- return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", opt.path) -- } -+ opt.sep.enabled = true -+ - return nil - } - -- // separator save -- opt.sep.enabled = true -- if len(opt.path) != 0 { -- return errors.New("conflict options between -o and [-b -l -r]") -+ // normal save -+ // only check oci format when doing normal save operation -+ if len(opt.path) == 0 { -+ return errors.New("output path(-o) should not be empty") - } -- // separate image only support docker image spec -- opt.format = constant.DockerTransport -- -- if err := opt.sep.check(pwd); err != nil { -+ if opt.format == constant.OCITransport && len(args) >= 2 { -+ return errors.New("oci image format now only supports saving single image") -+ } -+ if err := util.CheckImageFormat(opt.format); err != nil { - return err - } -- -+ opt.path = util.MakeAbsolute(opt.path, pwd) -+ if util.IsExist(opt.path) { -+ return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", opt.path) -+ } - return nil - } - -@@ -177,10 +173,10 @@ func runSave(ctx context.Context, cli Cli, args []string) error { - saveOpts.images = args - - sep := &pb.SeparatorSave{ -- Base: saveOpts.sep.baseImgName, -- Lib: saveOpts.sep.libImageName, -- Rename: saveOpts.sep.renameFile, -- Dest: saveOpts.sep.destPath, -+ Base: saveOpts.sep.baseImgName, -+ Lib: saveOpts.sep.libImageName, -+ Rename: saveOpts.sep.renameFile, -+ Dest: saveOpts.sep.destPath, - Enabled: saveOpts.sep.enabled, - } - -@@ -212,5 +208,5 @@ func runSave(ctx context.Context, cli Cli, args []string) error { - } - - func (sep *separatorSaveOption) isEnabled() bool { -- return util.AnyFlagSet(sep.baseImgName, sep.libImageName, sep.renameFile) -+ return util.AnyFlagSet(sep.baseImgName, sep.libImageName, sep.renameFile, sep.destPath) - } -diff --git a/cmd/cli/save_test.go b/cmd/cli/save_test.go -index 3fe6bf81..72f6ded3 100644 ---- a/cmd/cli/save_test.go -+++ b/cmd/cli/save_test.go -@@ -16,10 +16,13 @@ package main - import ( - "context" - "fmt" -+ "os" -+ "path/filepath" - "testing" - - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ constant "isula.org/isula-build" - ) - - func TestSaveCommand(t *testing.T) { -@@ -38,7 +41,7 @@ func TestSaveCommand(t *testing.T) { - wantErr bool - } - -- // For normal cases, default err is "invalid socket path: unix:///var/run/isula_build.sock". -+ // For normal cases, default err is "invalid socket path: unix:///var/run/isula_build.sock". - // As daemon is not running as we run unit test. - var testcases = []testcase{ - { -@@ -86,7 +89,7 @@ func TestSaveCommand(t *testing.T) { - path: "", - args: []string{"testImage"}, - wantErr: true, -- errString: "output path should not be empty", -+ errString: "output path(-o) should not be empty", - format: "docker", - }, - { -@@ -194,3 +197,228 @@ func TestRunSave(t *testing.T) { - }) - } - } -+ -+func TestCheckSaveOpts(t *testing.T) { -+ pwd, err := os.Getwd() -+ assert.NilError(t, err) -+ existDirPath := filepath.Join(pwd, "DirAlreadyExist") -+ existFilePath := filepath.Join(pwd, "FileAlreadExist") -+ err = os.Mkdir(existDirPath, constant.DefaultRootDirMode) -+ assert.NilError(t, err) -+ _, err = os.Create(existFilePath) -+ assert.NilError(t, err) -+ defer os.Remove(existDirPath) -+ defer os.Remove(existFilePath) -+ -+ type fields struct { -+ images []string -+ sep separatorSaveOption -+ path string -+ saveID string -+ format string -+ } -+ type args struct { -+ args []string -+ } -+ tests := []struct { -+ name string -+ fields fields -+ args args -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal save", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: "test.tar", -+ format: constant.DockerTransport, -+ }, -+ }, -+ { -+ name: "TC-normal save with empty args", -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-normal save with path has colon in it", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: "invalid:path.tar", -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-normal save without path", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-normal save with oci format", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: "test.tar", -+ format: constant.OCITransport, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-normal save with invalid format", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: "test.tar", -+ format: "invalidFormat", -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-normal save with path already exist", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: existFilePath, -+ format: constant.DockerTransport, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "base", -+ libImageName: "lib", -+ renameFile: "rename.json", -+ destPath: "Images", -+ }, -+ }, -+ }, -+ { -+ name: "TC-separated save with -o flag", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ path: "test.tar", -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "base", -+ libImageName: "lib", -+ renameFile: "rename.json", -+ destPath: "Images", -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save without -b flag", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ libImageName: "lib", -+ renameFile: "rename.json", -+ destPath: "Images", -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save invalid base image name", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "in:valid:base:name", -+ libImageName: "lib", -+ renameFile: "rename.json", -+ destPath: "Images", -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save invalid lib image name", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "base", -+ libImageName: "in:valid:lib:name", -+ renameFile: "rename.json", -+ destPath: "Images", -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save without dest option", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "base", -+ libImageName: "lib", -+ renameFile: "rename.json", -+ }, -+ }, -+ }, -+ { -+ name: "TC-separated save with dest already exist", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "base", -+ libImageName: "lib", -+ renameFile: "rename.json", -+ destPath: existDirPath, -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated save with same base and lib image", -+ args: args{[]string{"app:latest", "app1:latest"}}, -+ fields: fields{ -+ images: []string{"app:latest", "app1:latest"}, -+ format: constant.DockerTransport, -+ sep: separatorSaveOption{ -+ baseImgName: "same:image", -+ libImageName: "same:image", -+ renameFile: "rename.json", -+ destPath: existDirPath, -+ }, -+ }, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ opt := &saveOptions{ -+ images: tt.fields.images, -+ sep: tt.fields.sep, -+ path: tt.fields.path, -+ saveID: tt.fields.saveID, -+ format: tt.fields.format, -+ } -+ if err := opt.checkSaveOpts(tt.args.args); (err != nil) != tt.wantErr { -+ t.Errorf("saveOptions.checkSaveOpts() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ }) -+ } -+} --- -2.27.0 - diff --git a/patch/0078-test-optimize-load-client-options-and-add-unit-test.patch b/patch/0078-test-optimize-load-client-options-and-add-unit-test.patch deleted file mode 100644 index 7d6b607..0000000 --- a/patch/0078-test-optimize-load-client-options-and-add-unit-test.patch +++ /dev/null @@ -1,409 +0,0 @@ -From 2f8f5aa8c8444e9d9c39eba2c060e4e9fa4089bc Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Thu, 28 Oct 2021 15:03:04 +0800 -Subject: [PATCH 06/16] test: optimize load client options and add unit test - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/load.go | 77 ++++++++-------- - cmd/cli/load_test.go | 209 +++++++++++++++++++++++++++++++++++++++++++ - cmd/cli/mock.go | 7 +- - 3 files changed, 252 insertions(+), 41 deletions(-) - -diff --git a/cmd/cli/load.go b/cmd/cli/load.go -index 2a9df772..cf142592 100644 ---- a/cmd/cli/load.go -+++ b/cmd/cli/load.go -@@ -20,7 +20,6 @@ import ( - "fmt" - "io" - "os" -- "path/filepath" - - "github.com/pkg/errors" - "github.com/spf13/cobra" -@@ -56,7 +55,7 @@ isula-build ctr-img load -i app:latest -d /home/Images -b /home/Images/base.tar. - // NewLoadCmd returns image load command - func NewLoadCmd() *cobra.Command { - loadCmd := &cobra.Command{ -- Use: "load [FLAGS]", -+ Use: "load FLAGS", - Short: "Load images", - Example: loadExample, - Args: util.NoArgs, -@@ -122,20 +121,13 @@ func runLoad(ctx context.Context, cli Cli) error { - return err - } - --func resolveLoadPath(path string) (string, error) { -+func resolveLoadPath(path, pwd string) (string, error) { - // check input - if path == "" { - return "", errors.New("tarball path should not be empty") - } - -- if !filepath.IsAbs(path) { -- pwd, err := os.Getwd() -- if err != nil { -- return "", errors.Wrap(err, "get current path failed while loading image") -- } -- path = util.MakeAbsolute(path, pwd) -- } -- -+ path = util.MakeAbsolute(path, pwd) - if err := util.CheckLoadFile(path); err != nil { - return "", err - } -@@ -144,30 +136,35 @@ func resolveLoadPath(path string) (string, error) { - } - - func (opt *loadOptions) checkLoadOpts() error { -- // normal load -- if !opt.sep.isEnabled() { -- path, err := resolveLoadPath(opt.path) -- if err != nil { -- return err -- } -- opt.path = path -- -- return nil -+ pwd, err := os.Getwd() -+ if err != nil { -+ return errors.New("get current path failed") - } - - // load separated image -- opt.sep.enabled = true -- if len(opt.path) == 0 { -- return errors.New("app image should not be empty") -- } -+ if opt.sep.isEnabled() { -+ // Use opt.path as app image name when operating separated images -+ // this can be mark as a switch for handling separated images -+ opt.sep.app = opt.path -+ -+ if len(opt.sep.app) == 0 { -+ return errors.New("app image name(-i) should not be empty") -+ } -+ -+ if cErr := opt.sep.check(pwd); cErr != nil { -+ return cErr -+ } -+ opt.sep.enabled = true - -- // Use opt.path as app image name when operating separated images -- // this can be mark as a switch for handling separated images -- opt.sep.app = opt.path -+ return nil -+ } - -- if err := opt.sep.check(); err != nil { -+ // normal load -+ path, err := resolveLoadPath(opt.path, pwd) -+ if err != nil { - return err - } -+ opt.path = path - - return nil - } -@@ -176,35 +173,35 @@ func (sep *separatorLoadOption) isEnabled() bool { - return util.AnyFlagSet(sep.dir, sep.base, sep.lib, sep.app) - } - --func (sep *separatorLoadOption) check() error { -- pwd, err := os.Getwd() -- if err != nil { -- return errors.New("get current path failed") -+func (sep *separatorLoadOption) check(pwd string) error { -+ if len(sep.dir) == 0 { -+ return errors.New("image tarball directory should not be empty") - } -+ -+ if sep.base == sep.lib { -+ return errors.New("base and lib tarballs are the same") -+ } -+ - if !util.IsValidImageName(sep.app) { - return errors.Errorf("invalid image name: %s", sep.app) - } - - if len(sep.base) != 0 { -- path, err := resolveLoadPath(sep.base) -+ path, err := resolveLoadPath(sep.base, pwd) - if err != nil { - return errors.Wrap(err, "resolve base tarball path failed") - } - sep.base = path - } - if len(sep.lib) != 0 { -- path, err := resolveLoadPath(sep.lib) -+ path, err := resolveLoadPath(sep.lib, pwd) - if err != nil { - return errors.Wrap(err, "resolve lib tarball path failed") - } - sep.lib = path - } -- if len(sep.dir) == 0 { -- return errors.New("image tarball directory should not be empty") -- } -- if !filepath.IsAbs(sep.dir) { -- sep.dir = util.MakeAbsolute(sep.dir, pwd) -- } -+ -+ sep.dir = util.MakeAbsolute(sep.dir, pwd) - if !util.IsExist(sep.dir) { - return errors.Errorf("image tarball directory %s is not exist", sep.dir) - } -diff --git a/cmd/cli/load_test.go b/cmd/cli/load_test.go -index b7bf2a57..0bad4cbd 100644 ---- a/cmd/cli/load_test.go -+++ b/cmd/cli/load_test.go -@@ -16,6 +16,7 @@ package main - import ( - "context" - "io/ioutil" -+ "os" - "path/filepath" - "testing" - -@@ -121,3 +122,211 @@ func TestRunLoad(t *testing.T) { - }) - } - } -+ -+func TestResolveLoadPath(t *testing.T) { -+ dir := fs.NewDir(t, t.Name()) -+ fileWithContent := fs.NewFile(t, filepath.Join(t.Name(), "test.tar")) -+ ioutil.WriteFile(fileWithContent.Path(), []byte("This is test file"), constant.DefaultRootFileMode) -+ emptyFile := fs.NewFile(t, filepath.Join(t.Name(), "empty.tar")) -+ -+ defer dir.Remove() -+ defer fileWithContent.Remove() -+ defer emptyFile.Remove() -+ -+ type args struct { -+ path string -+ pwd string -+ } -+ tests := []struct { -+ name string -+ args args -+ want string -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal load path", -+ args: args{ -+ path: fileWithContent.Path(), -+ pwd: dir.Path(), -+ }, -+ want: fileWithContent.Path(), -+ }, -+ { -+ name: "TC-empty load path", -+ args: args{ -+ pwd: dir.Path(), -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-empty load file", -+ args: args{ -+ path: emptyFile.Path(), -+ pwd: dir.Path(), -+ }, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got, err := resolveLoadPath(tt.args.path, tt.args.pwd) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("resolveLoadPath() error = %v, wantErr %v", err, tt.wantErr) -+ return -+ } -+ if got != tt.want { -+ t.Errorf("resolveLoadPath() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestCheckLoadOpts(t *testing.T) { -+ root := fs.NewDir(t, t.Name()) -+ defer root.Remove() -+ emptyFile, err := os.Create(filepath.Join(root.Path(), "empty.tar")) -+ assert.NilError(t, err) -+ fileWithContent, err := os.Create(filepath.Join(root.Path(), "test.tar")) -+ assert.NilError(t, err) -+ ioutil.WriteFile(fileWithContent.Name(), []byte("This is test file"), constant.DefaultRootFileMode) -+ baseFile, err := os.Create(filepath.Join(root.Path(), "base.tar")) -+ assert.NilError(t, err) -+ ioutil.WriteFile(baseFile.Name(), []byte("This is base file"), constant.DefaultRootFileMode) -+ libFile, err := os.Create(filepath.Join(root.Path(), "lib.tar")) -+ ioutil.WriteFile(libFile.Name(), []byte("This is lib file"), constant.DefaultRootFileMode) -+ -+ type fields struct { -+ path string -+ loadID string -+ sep separatorLoadOption -+ } -+ tests := []struct { -+ name string -+ fields fields -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal load options", -+ fields: fields{ -+ path: fileWithContent.Name(), -+ }, -+ }, -+ { -+ name: "TC-empty load path", -+ wantErr: true, -+ }, -+ { -+ name: "TC-empty load file", -+ fields: fields{ -+ path: emptyFile.Name(), -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ app: "app:latest", -+ base: baseFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ }, -+ { -+ name: "TC-separated load with empty app name", -+ fields: fields{ -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ base: baseFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with empty dir", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ base: baseFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with invalid app name", -+ fields: fields{ -+ path: "invalid:app:name", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ base: baseFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with empty base tarball", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ base: emptyFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with empty lib tarball", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ base: baseFile.Name(), -+ lib: emptyFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with same base and lib tarball", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ base: fileWithContent.Name(), -+ lib: fileWithContent.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-separated load with dir not exist", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: "path not exist", -+ base: baseFile.Name(), -+ lib: libFile.Name(), -+ }, -+ }, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ opt := &loadOptions{ -+ path: tt.fields.path, -+ loadID: tt.fields.loadID, -+ sep: tt.fields.sep, -+ } -+ if err := opt.checkLoadOpts(); (err != nil) != tt.wantErr { -+ t.Errorf("loadOptions.checkLoadOpts() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ }) -+ } -+} -diff --git a/cmd/cli/mock.go b/cmd/cli/mock.go -index 142c87fa..23a8a031 100644 ---- a/cmd/cli/mock.go -+++ b/cmd/cli/mock.go -@@ -16,6 +16,7 @@ package main - import ( - "context" - "io" -+ "os" - "testing" - - "github.com/gogo/protobuf/types" -@@ -324,7 +325,11 @@ func (f *mockDaemon) load(_ context.Context, in *pb.LoadRequest, opts ...grpc.Ca - if path == "" { - return &mockLoadClient{}, errors.Errorf("tarball path should not be empty") - } -- _, err := resolveLoadPath(path) -+ pwd, err := os.Getwd() -+ if err != nil { -+ return &mockLoadClient{}, err -+ } -+ _, err = resolveLoadPath(path, pwd) - return &mockLoadClient{}, err - } - --- -2.27.0 - diff --git a/patch/0079-bugfix-fix-when-load-separated-image-error-return.patch b/patch/0079-bugfix-fix-when-load-separated-image-error-return.patch deleted file mode 100644 index 9155ec7..0000000 --- a/patch/0079-bugfix-fix-when-load-separated-image-error-return.patch +++ /dev/null @@ -1,203 +0,0 @@ -From c5fe173afd31636bf014dac31f6e601d91e1ae53 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Sat, 30 Oct 2021 10:12:40 +0800 -Subject: [PATCH 12/16] bugfix: fix when load separated image error return - -reason: if base and lib dir are both not provided, daemon -side will read the info from "manifest" file in the dest dir -automatically, so no error return here - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/load.go | 4 +-- - cmd/cli/load_test.go | 59 +++++++++++++++++++++++++++++++++----------- - 2 files changed, 47 insertions(+), 16 deletions(-) - -diff --git a/cmd/cli/load.go b/cmd/cli/load.go -index cf142592..44fefdd2 100644 ---- a/cmd/cli/load.go -+++ b/cmd/cli/load.go -@@ -178,7 +178,7 @@ func (sep *separatorLoadOption) check(pwd string) error { - return errors.New("image tarball directory should not be empty") - } - -- if sep.base == sep.lib { -+ if len(sep.base) != 0 && sep.base == sep.lib { - return errors.New("base and lib tarballs are the same") - } - -@@ -203,7 +203,7 @@ func (sep *separatorLoadOption) check(pwd string) error { - - sep.dir = util.MakeAbsolute(sep.dir, pwd) - if !util.IsExist(sep.dir) { -- return errors.Errorf("image tarball directory %s is not exist", sep.dir) -+ return errors.Errorf("image tarball directory %q is not exist", sep.dir) - } - - return nil -diff --git a/cmd/cli/load_test.go b/cmd/cli/load_test.go -index 0bad4cbd..cb8217ce 100644 ---- a/cmd/cli/load_test.go -+++ b/cmd/cli/load_test.go -@@ -15,6 +15,7 @@ package main - - import ( - "context" -+ "fmt" - "io/ioutil" - "os" - "path/filepath" -@@ -22,7 +23,9 @@ import ( - - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ - constant "isula.org/isula-build" -+ "isula.org/isula-build/util" - ) - - func TestLoadCmd(t *testing.T) { -@@ -182,6 +185,8 @@ func TestResolveLoadPath(t *testing.T) { - } - - func TestCheckLoadOpts(t *testing.T) { -+ pwd, err := os.Getwd() -+ assert.NilError(t, err) - root := fs.NewDir(t, t.Name()) - defer root.Remove() - emptyFile, err := os.Create(filepath.Join(root.Path(), "empty.tar")) -@@ -201,9 +206,10 @@ func TestCheckLoadOpts(t *testing.T) { - sep separatorLoadOption - } - tests := []struct { -- name string -- fields fields -- wantErr bool -+ name string -+ fields fields -+ wantErr bool -+ errMessage string - }{ - { - name: "TC-normal load options", -@@ -212,15 +218,17 @@ func TestCheckLoadOpts(t *testing.T) { - }, - }, - { -- name: "TC-empty load path", -- wantErr: true, -+ name: "TC-empty load path", -+ wantErr: true, -+ errMessage: "tarball path should not be empty", - }, - { - name: "TC-empty load file", - fields: fields{ - path: emptyFile.Name(), - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "loading file is empty", - }, - { - name: "TC-separated load", -@@ -243,7 +251,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: libFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "app image name(-i) should not be empty", - }, - { - name: "TC-separated load with empty dir", -@@ -254,7 +263,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: libFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "image tarball directory should not be empty", - }, - { - name: "TC-separated load with invalid app name", -@@ -266,7 +276,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: libFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: fmt.Sprintf("invalid image name: %s", "invalid:app:name"), - }, - { - name: "TC-separated load with empty base tarball", -@@ -278,7 +289,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: libFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "resolve base tarball path failed: loading file is empty", - }, - { - name: "TC-separated load with empty lib tarball", -@@ -290,7 +302,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: emptyFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "resolve lib tarball path failed: loading file is empty", - }, - { - name: "TC-separated load with same base and lib tarball", -@@ -302,7 +315,8 @@ func TestCheckLoadOpts(t *testing.T) { - lib: fileWithContent.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: "base and lib tarballs are the same", - }, - { - name: "TC-separated load with dir not exist", -@@ -314,7 +328,20 @@ func TestCheckLoadOpts(t *testing.T) { - lib: libFile.Name(), - }, - }, -- wantErr: true, -+ wantErr: true, -+ errMessage: fmt.Sprintf("image tarball directory %q is not exist", util.MakeAbsolute("path not exist", pwd)), -+ }, -+ { -+ // if base and lib dir are both not provided, daemon side will read -+ // the info from "manifest" file in the dest dir automatically -+ // so no error return here -+ name: "TC-base and lib dir both not provided", -+ fields: fields{ -+ path: "app:latest", -+ sep: separatorLoadOption{ -+ dir: root.Path(), -+ }, -+ }, - }, - } - for _, tt := range tests { -@@ -324,9 +351,13 @@ func TestCheckLoadOpts(t *testing.T) { - loadID: tt.fields.loadID, - sep: tt.fields.sep, - } -- if err := opt.checkLoadOpts(); (err != nil) != tt.wantErr { -+ err := opt.checkLoadOpts() -+ if (err != nil) != tt.wantErr { - t.Errorf("loadOptions.checkLoadOpts() error = %v, wantErr %v", err, tt.wantErr) - } -+ if err != nil && err.Error() != tt.errMessage { -+ t.Errorf("loadOptions.checkLoadOpts() error = %v, wantErr %v", err, tt.errMessage) -+ } - }) - } - } --- -2.27.0 - diff --git a/patch/0080-util-add-unit-test-for-file.go.patch b/patch/0080-util-add-unit-test-for-file.go.patch deleted file mode 100644 index 9bd3cfd..0000000 --- a/patch/0080-util-add-unit-test-for-file.go.patch +++ /dev/null @@ -1,674 +0,0 @@ -From d578f50d5ec200a7af83186b282a22cceb927f1b Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Thu, 28 Oct 2021 22:41:18 +0800 -Subject: [PATCH 08/16] util: add unit test for file.go - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - util/file.go | 42 +++- - util/file_test.go | 547 ++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 578 insertions(+), 11 deletions(-) - create mode 100644 util/file_test.go - -diff --git a/util/file.go b/util/file.go -index cd4a75d5..e0353898 100644 ---- a/util/file.go -+++ b/util/file.go -@@ -29,12 +29,26 @@ const ( - fileMaxSize = 10 * 1024 * 1024 // 10MB - ) - -+var ( -+ modifyTime = time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -+ accessTime = time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -+) -+ - // ReadSmallFile read small file less than 10MB - func ReadSmallFile(path string) ([]byte, error) { - st, err := os.Lstat(path) - if err != nil { - return nil, err - } -+ -+ if !st.Mode().IsRegular() { -+ return nil, errors.Errorf("loading file %s should be a regular file", st.Name()) -+ } -+ -+ if st.Size() == 0 { -+ return nil, errors.New("loading file is empty") -+ } -+ - if st.Size() > fileMaxSize { - return nil, errors.Errorf("file %q too big", path) - } -@@ -51,18 +65,18 @@ func LoadJSONFile(file string, v interface{}) error { - } - - // ChangeDirModifyTime changes modify time of directory --func ChangeDirModifyTime(dir string) error { -+func ChangeDirModifyTime(dir string, accessTime, modifyTime time.Time) error { - fs, rErr := ioutil.ReadDir(dir) - if rErr != nil { - return rErr - } - for _, f := range fs { - src := filepath.Join(dir, f.Name()) -- if err := ChangeFileModifyTime(src); err != nil { -+ if err := ChangeFileModifyTime(src, accessTime, modifyTime); err != nil { - return err - } - if f.IsDir() { -- if err := ChangeDirModifyTime(src); err != nil { -+ if err := ChangeDirModifyTime(src, accessTime, modifyTime); err != nil { - return err - } - } -@@ -71,13 +85,11 @@ func ChangeDirModifyTime(dir string) error { - } - - // ChangeFileModifyTime changes modify time of file by fixing time at 2017-01-01 00:00:00 --func ChangeFileModifyTime(path string) error { -- mtime := time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -- atime := time.Date(2017, time.January, 0, 0, 0, 0, 0, time.UTC) -+func ChangeFileModifyTime(path string, accessTime, modifyTime time.Time) error { - if _, err := os.Lstat(path); err != nil { - return err - } -- if err := os.Chtimes(path, atime, mtime); err != nil { -+ if err := os.Chtimes(path, accessTime, modifyTime); err != nil { - return err - } - return nil -@@ -87,9 +99,9 @@ func ChangeFileModifyTime(path string) error { - // by using different compression method defined by "com" - // the files' modify time attribute will be set to a fix time "2017-01-01 00:00:00" - // if set "modifyTime" to true --func PackFiles(src, dest string, com archive.Compression, modifyTime bool) (err error) { -- if modifyTime { -- if err = ChangeDirModifyTime(src); err != nil { -+func PackFiles(src, dest string, com archive.Compression, needModifyTime bool) (err error) { -+ if needModifyTime { -+ if err = ChangeDirModifyTime(src, accessTime, modifyTime); err != nil { - return err - } - } -@@ -122,6 +134,14 @@ func PackFiles(src, dest string, com archive.Compression, modifyTime bool) (err - // by using different compression method defined by "com" - // The src file will be remove if set "rm" to true - func UnpackFile(src, dest string, com archive.Compression, rm bool) (err error) { -+ if len(dest) == 0 { -+ return errors.New("unpack: dest path should not be empty") -+ } -+ d, err := os.Stat(dest) -+ if err != nil || !d.IsDir() { -+ return errors.Wrapf(err, "unpack: invalid dest path") -+ } -+ - cleanPath := filepath.Clean(src) - f, err := os.Open(cleanPath) // nolint:gosec - if err != nil { -@@ -139,7 +159,7 @@ func UnpackFile(src, dest string, com archive.Compression, rm bool) (err error) - return errors.Wrapf(err, "unpack file %q failed", src) - } - -- if err = ChangeDirModifyTime(dest); err != nil { -+ if err = ChangeDirModifyTime(dest, modifyTime, accessTime); err != nil { - return errors.Wrapf(err, "change modify time for directory %q failed", dest) - } - -diff --git a/util/file_test.go b/util/file_test.go -new file mode 100644 -index 00000000..09aed41d ---- /dev/null -+++ b/util/file_test.go -@@ -0,0 +1,547 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+// isula-build licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Xiang Li -+// Create: 2021-08-24 -+// Description: file manipulation related common functions -+ -+package util -+ -+import ( -+ "encoding/json" -+ "io/ioutil" -+ "os" -+ "path/filepath" -+ "reflect" -+ "testing" -+ "time" -+ -+ "github.com/containers/storage/pkg/archive" -+ "gotest.tools/v3/assert" -+ "gotest.tools/v3/fs" -+ constant "isula.org/isula-build" -+) -+ -+func TestReadSmallFile(t *testing.T) { -+ smallFile := fs.NewFile(t, t.Name()) -+ defer smallFile.Remove() -+ err := ioutil.WriteFile(smallFile.Path(), []byte("small file"), constant.DefaultRootFileMode) -+ assert.NilError(t, err) -+ -+ root := fs.NewDir(t, t.Name()) -+ defer root.Remove() -+ -+ bigFile := filepath.Join(root.Path(), "bigFile") -+ f, err := os.Create(bigFile) -+ assert.NilError(t, err) -+ defer os.Remove(f.Name()) -+ err = f.Truncate(fileMaxSize + 1) -+ assert.NilError(t, err) -+ -+ emptyFile := fs.NewFile(t, t.Name()) -+ defer emptyFile.Remove() -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want []byte -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal read", -+ args: args{path: smallFile.Path()}, -+ want: []byte("small file"), -+ }, -+ { -+ name: "TC-not exist path", -+ wantErr: true, -+ }, -+ { -+ name: "TC-file too big", -+ args: args{path: bigFile}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-empty file", -+ args: args{path: emptyFile.Path()}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-invalid file", -+ args: args{path: "/dev/cdrom"}, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got, err := ReadSmallFile(tt.args.path) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("ReadSmallFile() error = %v, wantErr %v", err, tt.wantErr) -+ return -+ } -+ if !reflect.DeepEqual(got, tt.want) { -+ t.Errorf("ReadSmallFile() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestLoadJSONFile(t *testing.T) { -+ type rename struct { -+ Name string `json:"name"` -+ Rename string `json:"rename"` -+ } -+ type args struct { -+ file string -+ v rename -+ } -+ -+ smallJSONFile := fs.NewFile(t, t.Name()) -+ defer smallJSONFile.Remove() -+ validData := rename{ -+ Name: "origin name", -+ Rename: "modified name", -+ } -+ b, err := json.Marshal(validData) -+ assert.NilError(t, err) -+ ioutil.WriteFile(smallJSONFile.Path(), b, constant.DefaultRootFileMode) -+ -+ tests := []struct { -+ name string -+ args args -+ wantKey string -+ wantValue string -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal json file", -+ args: args{ -+ file: smallJSONFile.Path(), -+ v: rename{}, -+ }, -+ wantKey: "origin name", -+ wantValue: "modified name", -+ }, -+ { -+ name: "TC-json file not exist", -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if err := LoadJSONFile(tt.args.file, &tt.args.v); (err != nil) != tt.wantErr { -+ t.Errorf("LoadJSONFile() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ if err == nil { -+ assert.Equal(t, tt.args.v.Name, tt.wantKey) -+ assert.Equal(t, tt.args.v.Rename, tt.wantValue) -+ } -+ }) -+ } -+} -+ -+func TestChangeFileModifyTime(t *testing.T) { -+ normalFile := fs.NewFile(t, t.Name()) -+ defer normalFile.Remove() -+ -+ pwd, err := os.Getwd() -+ assert.NilError(t, err) -+ immutableFile := filepath.Join(pwd, "immutableFile") -+ _, err = os.Create(immutableFile) -+ defer os.Remove(immutableFile) -+ -+ type args struct { -+ path string -+ mtime time.Time -+ atime time.Time -+ } -+ tests := []struct { -+ name string -+ args args -+ wantErr bool -+ needHook bool -+ preHookFun func(t *testing.T) -+ postHookFun func(t *testing.T) -+ }{ -+ { -+ name: "TC-change file modify time", -+ args: args{ -+ path: immutableFile, -+ mtime: modifyTime, -+ atime: accessTime, -+ }, -+ }, -+ { -+ name: "TC-file path empty", -+ wantErr: true, -+ }, -+ { -+ name: "TC-lack of permession", -+ args: args{ -+ path: immutableFile, -+ atime: accessTime, -+ mtime: modifyTime, -+ }, -+ needHook: true, -+ preHookFun: func(t *testing.T) { Immutable(immutableFile, true) }, -+ postHookFun: func(t *testing.T) { Immutable(immutableFile, false) }, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.needHook { -+ tt.preHookFun(t) -+ } -+ err := ChangeFileModifyTime(tt.args.path, tt.args.atime, tt.args.mtime) -+ if tt.needHook { -+ defer tt.postHookFun(t) -+ } -+ if (err != nil) != tt.wantErr { -+ t.Errorf("ChangeFileModifyTime() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ if err == nil { -+ f, err := os.Stat(tt.args.path) -+ assert.NilError(t, err) -+ assert.Equal(t, true, f.ModTime().Equal(modifyTime)) -+ } -+ }) -+ } -+} -+ -+type tempDirs struct { -+ root string -+ subDir1 string -+ subDir11 string -+ file1 string -+ file11 string -+} -+ -+func createDirs(t *testing.T) tempDirs { -+ pwd, err := os.Getwd() -+ assert.NilError(t, err) -+ -+ root := filepath.Join(pwd, t.Name()) -+ assert.NilError(t, os.Mkdir(root, constant.DefaultRootDirMode)) -+ -+ rootSubDir1 := filepath.Join(root, "rootSubDir1") -+ assert.NilError(t, os.Mkdir(rootSubDir1, constant.DefaultRootDirMode)) -+ -+ rootSubDir11 := filepath.Join(rootSubDir1, "rootSubDir11") -+ assert.NilError(t, os.Mkdir(rootSubDir11, constant.DefaultRootDirMode)) -+ -+ file1 := filepath.Join(rootSubDir1, "file1") -+ _, err = os.Create(file1) -+ assert.NilError(t, err) -+ -+ file11 := filepath.Join(rootSubDir11, "file11") -+ _, err = os.Create(file11) -+ assert.NilError(t, err) -+ -+ return tempDirs{ -+ root: root, -+ subDir1: rootSubDir1, -+ subDir11: rootSubDir11, -+ file1: file1, -+ file11: file11, -+ } -+} -+ -+func (tmp *tempDirs) removeAll(t *testing.T) { -+ assert.NilError(t, os.RemoveAll(tmp.root)) -+ assert.NilError(t, os.RemoveAll(tmp.subDir1)) -+ assert.NilError(t, os.RemoveAll(tmp.subDir11)) -+ assert.NilError(t, os.RemoveAll(tmp.file1)) -+ assert.NilError(t, os.RemoveAll(tmp.file11)) -+} -+ -+func TestChangeDirModifyTime(t *testing.T) { -+ tempDirs := createDirs(t) -+ defer tempDirs.removeAll(t) -+ root := tempDirs.root -+ -+ type args struct { -+ dir string -+ mtime time.Time -+ atime time.Time -+ } -+ tests := []struct { -+ name string -+ args args -+ wantErr bool -+ needPreHook bool -+ needPostHook bool -+ preWalkFun func(path string, info os.FileInfo, err error) error -+ postWalkFun func(path string, info os.FileInfo, err error) error -+ }{ -+ { -+ name: "TC-normal case modify directory", -+ args: args{ -+ dir: root, -+ mtime: modifyTime, -+ atime: accessTime, -+ }, -+ needPostHook: true, -+ postWalkFun: func(path string, info os.FileInfo, err error) error { -+ assert.Assert(t, true, info.ModTime().Equal(modifyTime)) -+ return nil -+ }, -+ }, -+ { -+ name: "TC-empty path", -+ wantErr: true, -+ }, -+ { -+ name: "TC-lack of permission", -+ args: args{ -+ dir: root, -+ mtime: modifyTime, -+ atime: accessTime, -+ }, -+ wantErr: true, -+ needPreHook: true, -+ needPostHook: true, -+ preWalkFun: func(path string, info os.FileInfo, err error) error { -+ if !info.IsDir() { -+ Immutable(path, true) -+ } -+ return nil -+ }, -+ postWalkFun: func(path string, info os.FileInfo, err error) error { -+ if !info.IsDir() { -+ Immutable(path, false) -+ } -+ return nil -+ }, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.needPreHook { -+ wErr := filepath.Walk(tt.args.dir, tt.preWalkFun) -+ assert.NilError(t, wErr) -+ } -+ err := ChangeDirModifyTime(tt.args.dir, tt.args.mtime, tt.args.atime) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("ChangeDirModifyTime() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ if tt.needPostHook { -+ wErr := filepath.Walk(tt.args.dir, tt.postWalkFun) -+ assert.NilError(t, wErr) -+ } -+ }) -+ } -+} -+ -+func TestPackFiles(t *testing.T) { -+ dirs := createDirs(t) -+ defer dirs.removeAll(t) -+ dest := fs.NewFile(t, t.Name()) -+ defer dest.Remove() -+ -+ type args struct { -+ src string -+ dest string -+ com archive.Compression -+ needModifyTime bool -+ } -+ tests := []struct { -+ name string -+ args args -+ wantErr bool -+ needPreHook bool -+ needPostHook bool -+ preWalkFun func(path string, info os.FileInfo, err error) error -+ postWalkFun func(path string, info os.FileInfo, err error) error -+ }{ -+ { -+ name: "TC-normal pack", -+ args: args{ -+ src: dirs.root, -+ dest: dest.Path(), -+ com: archive.Gzip, -+ needModifyTime: true, -+ }, -+ }, -+ { -+ name: "TC-empty dest", -+ args: args{ -+ src: dirs.root, -+ com: archive.Gzip, -+ needModifyTime: true, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-invalid compression", -+ args: args{ -+ src: dirs.root, -+ dest: dest.Path(), -+ com: archive.Compression(-1), -+ needModifyTime: true, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "TC-lack of permission", -+ args: args{ -+ src: dirs.root, -+ dest: dest.Path(), -+ com: archive.Gzip, -+ needModifyTime: true, -+ }, -+ wantErr: true, -+ needPreHook: true, -+ needPostHook: true, -+ preWalkFun: func(path string, info os.FileInfo, err error) error { -+ if !info.IsDir() { -+ Immutable(path, true) -+ } -+ return nil -+ }, -+ postWalkFun: func(path string, info os.FileInfo, err error) error { -+ if !info.IsDir() { -+ Immutable(path, false) -+ } -+ return nil -+ }, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.needPreHook { -+ wErr := filepath.Walk(tt.args.src, tt.preWalkFun) -+ assert.NilError(t, wErr) -+ } -+ if err := PackFiles(tt.args.src, tt.args.dest, tt.args.com, tt.args.needModifyTime); (err != nil) != tt.wantErr { -+ t.Errorf("PackFiles() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ if tt.needPostHook { -+ wErr := filepath.Walk(tt.args.src, tt.postWalkFun) -+ assert.NilError(t, wErr) -+ } -+ }) -+ } -+} -+ -+func TestUnpackFile(t *testing.T) { -+ folderToBePacked := createDirs(t) -+ defer folderToBePacked.removeAll(t) -+ pwd, err := os.Getwd() -+ assert.NilError(t, err) -+ -+ tarName := filepath.Join(pwd, "test.tar") -+ assert.NilError(t, PackFiles(folderToBePacked.root, tarName, archive.Gzip, true)) -+ defer os.RemoveAll(tarName) -+ -+ invalidTar := filepath.Join(pwd, "invalid.tar") -+ err = ioutil.WriteFile(invalidTar, []byte("invalid tar"), constant.DefaultRootFileMode) -+ assert.NilError(t, err) -+ defer os.RemoveAll(invalidTar) -+ -+ unpackDest := filepath.Join(pwd, "unpack") -+ assert.NilError(t, os.MkdirAll(unpackDest, constant.DefaultRootDirMode)) -+ defer os.RemoveAll(unpackDest) -+ -+ type args struct { -+ src string -+ dest string -+ com archive.Compression -+ rm bool -+ } -+ tests := []struct { -+ name string -+ args args -+ needPreHook bool -+ needPostHook bool -+ wantErr bool -+ }{ -+ { -+ name: "normal unpack file", -+ args: args{ -+ src: tarName, -+ dest: unpackDest, -+ com: archive.Gzip, -+ rm: true, -+ }, -+ }, -+ { -+ name: "empty unpack destation path", -+ args: args{ -+ src: tarName, -+ com: archive.Gzip, -+ rm: false, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "unpack src path not exist", -+ args: args{ -+ src: "path not exist", -+ dest: unpackDest, -+ com: archive.Gzip, -+ rm: false, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "unpack destation path not exist", -+ args: args{ -+ src: tarName, -+ dest: "path not exist", -+ com: archive.Gzip, -+ rm: false, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "invalid tarball", -+ args: args{ -+ src: invalidTar, -+ dest: unpackDest, -+ com: archive.Gzip, -+ rm: false, -+ }, -+ wantErr: true, -+ }, -+ { -+ name: "no permission for src", -+ args: args{ -+ src: tarName, -+ dest: unpackDest, -+ com: archive.Gzip, -+ rm: true, -+ }, -+ wantErr: true, -+ needPreHook: true, -+ needPostHook: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.needPreHook { -+ assert.NilError(t, Immutable(tt.args.src, true)) -+ } -+ err := UnpackFile(tt.args.src, tt.args.dest, tt.args.com, tt.args.rm) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("UnpackFile() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ if tt.needPostHook { -+ assert.NilError(t, Immutable(tt.args.src, false)) -+ } -+ if tt.args.rm && err == nil { -+ tarName := filepath.Join(pwd, "test.tar") -+ assert.NilError(t, PackFiles(folderToBePacked.root, tarName, archive.Gzip, true)) -+ } -+ }) -+ } -+} --- -2.27.0 - diff --git a/patch/0081-test-cleancode-test-for-better-experience.patch b/patch/0081-test-cleancode-test-for-better-experience.patch deleted file mode 100644 index 278c787..0000000 --- a/patch/0081-test-cleancode-test-for-better-experience.patch +++ /dev/null @@ -1,391 +0,0 @@ -From ed8d2d30e7d298fa05395a79cc3502240d9c0721 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 1 Nov 2021 16:24:14 +0800 -Subject: [PATCH 13/16] test:cleancode test for better experience - -change: -1. shellcheck fix for scripts in used hack -2. use busyobx instead of openeuler base image to speed up test -3. add test-unit-cover, test-sdv-cover, test-cover for project to - generate coverage files - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - Makefile | 18 ++++ - hack/all_coverage.sh | 26 ++++++ - hack/merge_coverage.sh | 55 +++++++++++ - hack/sdv_coverage.sh | 104 +++++++++++++++++++++ - hack/unit_test.sh | 82 +++++++++++----- - tests/src/integration_test_set_new_root.sh | 7 +- - 6 files changed, 268 insertions(+), 24 deletions(-) - create mode 100755 hack/all_coverage.sh - create mode 100644 hack/merge_coverage.sh - create mode 100755 hack/sdv_coverage.sh - -diff --git a/Makefile b/Makefile -index d41a9fdb..73482a41 100644 ---- a/Makefile -+++ b/Makefile -@@ -112,6 +112,24 @@ test-integration: ## Test integration case - @./tests/test.sh integration - @echo "Integration test done!" - -+.PHONY: test-unit-cover -+test-unit-cover: ## Test unit case and generate coverage -+ @echo "Unit test cover starting..." -+ @./hack/unit_test.sh cover -+ @echo "Unit test cover done!" -+ -+.PHONY: test-sdv-cover -+test-sdv-cover: ## Test integration case and generate coverage -+ @echo "Integration test cover starting..." -+ @./hack/sdv_coverage.sh -+ @echo "Integration test cover done!" -+ -+.PHONY: test-cover -+test-cover: test-sdv-cover test-unit-cover ## Test both unit and sdv case and generate unity coverage -+ @echo "Test cover starting..." -+ @./hack/all_coverage.sh -+ @echo "Test cover done!" -+ - ##@ Development - - .PHONY: build-image -diff --git a/hack/all_coverage.sh b/hack/all_coverage.sh -new file mode 100755 -index 00000000..9f9eb5ff ---- /dev/null -+++ b/hack/all_coverage.sh -@@ -0,0 +1,26 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2020-03-01 -+# Description: shell script for all coverage -+# Note: use this file by typing make test-cover -+# Do not run this script directly -+ -+SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" || exit; pwd) -+# shellcheck disable=SC1091 -+source "${SCRIPT_DIR}"/merge_coverage.sh -+ -+unit_coverage=${PWD}/cover_unit_test_all.out -+sdv_coverage=${PWD}/cover_sdv_test_all.out -+output_file=${PWD}/cover_test_all -+ -+merge_cover "${output_file}" "${sdv_coverage}" "${unit_coverage}" -diff --git a/hack/merge_coverage.sh b/hack/merge_coverage.sh -new file mode 100644 -index 00000000..6e529a34 ---- /dev/null -+++ b/hack/merge_coverage.sh -@@ -0,0 +1,55 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: merge coverage from input coverage files -+# Note: Do not run this script directly -+ -+# Usage: merge_cover outputfile file1 file2 ... fileN -+# Input: first: outputfile name -+# remaining: coverage files -+function merge_cover() { -+ output_file_name="$1" -+ input_coverages=( "${@:2}" ) -+ -+ output_coverage_file=${output_file_name}.out -+ output_html_file=${output_file_name}.html -+ output_merge_cover=${output_file_name}.merge -+ grep -r -h -v "^mode:" "${input_coverages[@]}" | sort > "$output_merge_cover" -+ current="" -+ count=0 -+ echo "mode: set" > "$output_coverage_file" -+ # read the cover report from merge_cover, convert it, write to final coverage -+ while read -r line; do -+ block=$(echo "$line" | cut -d ' ' -f1-2) -+ num=$(echo "$line" | cut -d ' ' -f3) -+ if [ "$current" == "" ]; then -+ current=$block -+ count=$num -+ elif [ "$block" == "$current" ]; then -+ count=$((count + num)) -+ else -+ # if the sorted two lines are not in the same code block, write the statics result of last code block to the final coverage -+ echo "$current" $count >> "${output_coverage_file}" -+ current=$block -+ count=$num -+ fi -+ done < "$output_merge_cover" -+ rm -rf "${output_merge_cover}" -+ -+ # merge the results of last line to the final coverage -+ if [ "$current" != "" ]; then -+ echo "$current" "$count" >> "${output_coverage_file}" -+ fi -+ -+ go tool cover -html="${output_coverage_file}" -o "$output_html_file" -+} -diff --git a/hack/sdv_coverage.sh b/hack/sdv_coverage.sh -new file mode 100755 -index 00000000..874d9373 ---- /dev/null -+++ b/hack/sdv_coverage.sh -@@ -0,0 +1,104 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2020-03-01 -+# Description: shell script for coverage -+# Note: use this file by typing make test-sdv-cover or make test-cover -+# Do not run this script directly -+ -+project_root=${PWD} -+vendor_name="isula.org" -+project_name="isula-build" -+main_relative_path="cmd/daemon" -+exclude_pattern="gopkgs|api/services" -+go_test_mod_method="-mod=vendor" -+go_test_count_method="-count=1" -+go_test_cover_method="-covermode=set" -+main_pkg="${vendor_name}/${project_name}/${main_relative_path}" -+main_test_file=${project_root}/${main_relative_path}/main_test.go -+main_file=${project_root}/${main_relative_path}/main.go -+coverage_file=${project_root}/cover_sdv_test_all.out -+coverage_html=${project_root}/cover_sdv_test_all.html -+coverage_log=${project_root}/cover_sdv_test_all.log -+main_test_binary_file=${project_root}/main.test -+ -+function precheck() { -+ if pgrep isula-builder > /dev/null 2>&1; then -+ echo "isula-builder is already running, please stop it first" -+ exit 1 -+ fi -+} -+ -+function modify_main_test() { -+ # first backup file -+ cp "${main_file}" "${main_file}".bk -+ cp "${main_test_file}" "${main_test_file}".bk -+ # delete Args field for main.go -+ local comment_pattern="Args: util.NoArgs" -+ sed -i "/$comment_pattern/s/^#*/\/\/ /" "${main_file}" -+ # add new line for main_test.go -+ code_snippet="func TestMain(t *testing.T) { main() }" -+ echo "$code_snippet" >> "${main_test_file}" -+} -+ -+function recover_main_test() { -+ mv "${main_file}".bk "${main_file}" -+ mv "${main_test_file}".bk "${main_test_file}" -+} -+ -+function build_main_test_binary() { -+ pkgs=$(go list ${go_test_mod_method} "${project_root}"/... | grep -Ev ${exclude_pattern} | tr "\r\n" ",") -+ go test -coverpkg="${pkgs}" ${main_pkg} ${go_test_mod_method} ${go_test_cover_method} ${go_test_count_method} -c -o="${main_test_binary_file}" -+} -+ -+function run_main_test_binary() { -+ ${main_test_binary_file} -test.coverprofile="${coverage_file}" > "${coverage_log}" 2>&1 & -+ main_test_pid=$! -+ for _ in $(seq 1 10); do -+ if isula-build info > /dev/null 2>&1; then -+ break -+ else -+ sleep 1 -+ fi -+ done -+} -+ -+function run_coverage_test() { -+ # do cover tests -+ echo "sdv coverage test" -+ # cover_test_xxx -+ # cover_test_xxx -+ # cover_test_xxx -+ # cover_test_xxx -+} -+ -+function finish_coverage_test() { -+ kill -15 $main_test_pid -+} -+ -+function generate_coverage() { -+ go tool cover -html="${coverage_file}" -o="${coverage_html}" -+} -+ -+function cleanup() { -+ rm "$main_test_binary_file" -+} -+ -+precheck -+modify_main_test -+build_main_test_binary -+recover_main_test -+run_main_test_binary -+run_coverage_test -+finish_coverage_test -+generate_coverage -+cleanup -diff --git a/hack/unit_test.sh b/hack/unit_test.sh -index a94a2d38..94a44a95 100755 ---- a/hack/unit_test.sh -+++ b/hack/unit_test.sh -@@ -12,32 +12,72 @@ - # Author: iSula Team - # Create: 2020-07-11 - # Description: go test script -+# Note: use this file by typing make unit-test or make unit-test-cover -+# Do not run this script directly -+ -+SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" || exit; pwd) -+# shellcheck disable=SC1091 -+source "${SCRIPT_DIR}"/merge_coverage.sh - - export GO111MODULE=on -+run_coverage=$1 -+covers_folder=${PWD}/covers -+testlog=${PWD}"/unit_test_log" -+exclude_pattern="gopkgs|api/services" -+go_test_mod_method="-mod=vendor" -+go_test_count_method="-count=1" -+go_test_timeout_flag="-timeout=300s" -+go_test_race_flag="-race" - --TEST_ARGS="" --if [ ! -z "${TEST_REG}" ]; then -- TEST_ARGS+=" -args TEST_REG=${TEST_REG}" --fi --if [ ! -z "${SKIP_REG}" ]; then -- TEST_ARGS+=" -args SKIP_REG=${SKIP_REG}" --fi --echo "Testing with args ${TEST_ARGS}" -+function precheck() { -+ if pgrep isula-builder > /dev/null 2>&1; then -+ echo "isula-builder is already running, please stop it first" -+ exit 1 -+ fi -+} - --testlog=${PWD}"/unit_test_log" --rm -f "${testlog}" --touch "${testlog}" --golist=$(go list ./... | grep -v gopkgs) --for path in ${golist}; do -- echo "Start to test: ${path}" -- # TEST_ARGS is " -args SKIP_REG=foo", so no double quote for it -- go test -race -mod=vendor -cover -count=1 -timeout 300s -v "${path}" ${TEST_ARGS} >> "${testlog}" -- cat "${testlog}" | grep -E -- "--- FAIL:|^FAIL" -- if [ $? -eq 0 ]; then -+function run_unit_test() { -+ TEST_ARGS="" -+ if [ -n "${TEST_REG}" ]; then -+ TEST_ARGS+=" -args TEST_REG=${TEST_REG}" -+ fi -+ if [ -n "${SKIP_REG}" ]; then -+ TEST_ARGS+=" -args SKIP_REG=${SKIP_REG}" -+ fi -+ echo "Testing with args ${TEST_ARGS}" -+ -+ rm -f "${testlog}" -+ if [[ -n $run_coverage ]]; then -+ mkdir -p "${covers_folder}" -+ fi -+ for package in $(go list ${go_test_mod_method} ./... | grep -Ev ${exclude_pattern}); do -+ echo "Start to test: ${package}" -+ if [[ -n $run_coverage ]]; then -+ coverprofile_file="${covers_folder}/$(echo "$package" | tr / -).cover" -+ coverprofile_flag="-coverprofile=${coverprofile_file}" -+ go_test_covermode_flag="-covermode=set" -+ go_test_race_flag="" -+ fi -+ # TEST_ARGS is " -args SKIP_REG=foo", so no double quote for it -+ # shellcheck disable=SC2086 -+ go test -v ${go_test_race_flag} ${go_test_mod_method} ${coverprofile_flag} ${go_test_covermode_flag} -coverpkg=${package} ${go_test_count_method} ${go_test_timeout_flag} "${package}" ${TEST_ARGS} >> "${testlog}" -+ done -+ -+ if grep -E -- "--- FAIL:|^FAIL" "${testlog}"; then - echo "Testing failed... Please check ${testlog}" -- exit 1 - fi - tail -n 1 "${testlog}" --done - --rm -f "${testlog}" -+ rm -f "${testlog}" -+} -+ -+function generate_unit_test_coverage() { -+ if [[ -n ${run_coverage} ]]; then -+ merge_cover "cover_unit_test_all" "${covers_folder}" -+ rm -rf "${covers_folder}" -+ fi -+} -+ -+precheck -+run_unit_test -+generate_unit_test_coverage -diff --git a/tests/src/integration_test_set_new_root.sh b/tests/src/integration_test_set_new_root.sh -index bb11a080..ae8d436b 100644 ---- a/tests/src/integration_test_set_new_root.sh -+++ b/tests/src/integration_test_set_new_root.sh -@@ -12,6 +12,7 @@ - # Author: Weizheng Xing - # Create: 2021-05-29 - # Description: test set new run and data root in configuration.toml -+# History: 2021-8-18 Xiang Li use busyobx instead of openeuler base image to speed up test - - top_dir=$(git rev-parse --show-toplevel) - # shellcheck disable=SC1091 -@@ -20,7 +21,7 @@ source "$top_dir"/tests/lib/common.sh - run_root="/var/run/new-isula-build" - data_root="/var/lib/new-isula-build" - config_file="/etc/isula-build/configuration.toml" --base_image="hub.oepkgs.net/openeuler/openeuler:21.03" -+image="hub.oepkgs.net/openeuler/busybox:latest" - - function clean() - { -@@ -47,10 +48,10 @@ function pre_test() - function do_test() - { - tree_node_befor=$(tree -L 3 $data_root | wc -l) -- run_with_debug "isula-build ctr-img pull $base_image" -+ run_with_debug "isula-build ctr-img pull $image" - tree_node_after=$(tree -L 3 $data_root | wc -l) - -- if [ $((tree_node_after - tree_node_befor)) -eq 8 ] && run_with_debug "isula-build ctr-img rm $base_image"; then -+ if [ $((tree_node_after - tree_node_befor)) -eq 8 ] && run_with_debug "isula-build ctr-img rm $image"; then - echo "PASS" - else - echo "Sets of run and data root are not effective" --- -2.27.0 - diff --git a/patch/0082-test-optimize-scripts-in-hack.patch b/patch/0082-test-optimize-scripts-in-hack.patch deleted file mode 100644 index b0b0e6c..0000000 --- a/patch/0082-test-optimize-scripts-in-hack.patch +++ /dev/null @@ -1,253 +0,0 @@ -From 5d3a9a0f2e5510e68040d252190070925ee89fd0 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 1 Nov 2021 23:37:44 +0800 -Subject: [PATCH 14/16] test: optimize scripts in hack - -reason: -1. add framework for integration tests -2. shellcheck for scripts - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - Makefile | 10 ++--- - hack/all_coverage.sh | 4 +- - ...dv_coverage.sh => integration_coverage.sh} | 42 ++++++++++++------- - hack/merge_coverage.sh | 30 ++++++------- - hack/unit_test.sh | 10 ++--- - 5 files changed, 53 insertions(+), 43 deletions(-) - rename hack/{sdv_coverage.sh => integration_coverage.sh} (63%) - -diff --git a/Makefile b/Makefile -index 73482a41..c5384e07 100644 ---- a/Makefile -+++ b/Makefile -@@ -42,7 +42,7 @@ endif - ##@ Help - .PHONY: help - help: ## Display the help info -- @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-20s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) -+ @awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n"} /^[a-zA-Z_0-9-]+:.*?##/ { printf " \033[36m%-25s\033[0m %s\n", $$1, $$2 } /^##@/ { printf "\n\033[1m%s\033[0m\n", substr($$0, 5) } ' $(MAKEFILE_LIST) - - ##@ Build - -@@ -118,14 +118,14 @@ test-unit-cover: ## Test unit case and generate coverage - @./hack/unit_test.sh cover - @echo "Unit test cover done!" - --.PHONY: test-sdv-cover --test-sdv-cover: ## Test integration case and generate coverage -+.PHONY: test-integration-cover -+test-integration-cover: ## Test integration case and generate coverage - @echo "Integration test cover starting..." -- @./hack/sdv_coverage.sh -+ @./hack/integration_coverage.sh - @echo "Integration test cover done!" - - .PHONY: test-cover --test-cover: test-sdv-cover test-unit-cover ## Test both unit and sdv case and generate unity coverage -+test-cover: test-integration-cover test-unit-cover ## Test both unit and integration case and generate unity coverage - @echo "Test cover starting..." - @./hack/all_coverage.sh - @echo "Test cover done!" -diff --git a/hack/all_coverage.sh b/hack/all_coverage.sh -index 9f9eb5ff..0f23e9d4 100755 ---- a/hack/all_coverage.sh -+++ b/hack/all_coverage.sh -@@ -20,7 +20,7 @@ SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" || exit; pwd) - source "${SCRIPT_DIR}"/merge_coverage.sh - - unit_coverage=${PWD}/cover_unit_test_all.out --sdv_coverage=${PWD}/cover_sdv_test_all.out -+integration_coverage=${PWD}/cover_integration_test_all.out - output_file=${PWD}/cover_test_all - --merge_cover "${output_file}" "${sdv_coverage}" "${unit_coverage}" -+merge_cover "${output_file}" "${integration_coverage}" "${unit_coverage}" -diff --git a/hack/sdv_coverage.sh b/hack/integration_coverage.sh -similarity index 63% -rename from hack/sdv_coverage.sh -rename to hack/integration_coverage.sh -index 874d9373..7462c545 100755 ---- a/hack/sdv_coverage.sh -+++ b/hack/integration_coverage.sh -@@ -12,7 +12,7 @@ - # Author: Xiang Li - # Create: 2020-03-01 - # Description: shell script for coverage --# Note: use this file by typing make test-sdv-cover or make test-cover -+# Note: use this file by typing make test-integration-cover or make test-cover - # Do not run this script directly - - project_root=${PWD} -@@ -26,9 +26,10 @@ go_test_cover_method="-covermode=set" - main_pkg="${vendor_name}/${project_name}/${main_relative_path}" - main_test_file=${project_root}/${main_relative_path}/main_test.go - main_file=${project_root}/${main_relative_path}/main.go --coverage_file=${project_root}/cover_sdv_test_all.out --coverage_html=${project_root}/cover_sdv_test_all.html --coverage_log=${project_root}/cover_sdv_test_all.log -+coverage_file=${project_root}/cover_integration_test_all.out -+coverage_html=${project_root}/cover_integration_test_all.html -+coverage_daemon_log=${project_root}/cover_integration_test_all_daemon.log -+coverage_client_log=${project_root}/cover_integration_test_all_client.log - main_test_binary_file=${project_root}/main.test - - function precheck() { -@@ -44,10 +45,10 @@ function modify_main_test() { - cp "${main_test_file}" "${main_test_file}".bk - # delete Args field for main.go - local comment_pattern="Args: util.NoArgs" -- sed -i "/$comment_pattern/s/^#*/\/\/ /" "${main_file}" -+ sed -i "/${comment_pattern}/s/^#*/\/\/ /" "${main_file}" - # add new line for main_test.go - code_snippet="func TestMain(t *testing.T) { main() }" -- echo "$code_snippet" >> "${main_test_file}" -+ echo "${code_snippet}" >> "${main_test_file}" - } - - function recover_main_test() { -@@ -56,12 +57,12 @@ function recover_main_test() { - } - - function build_main_test_binary() { -- pkgs=$(go list ${go_test_mod_method} "${project_root}"/... | grep -Ev ${exclude_pattern} | tr "\r\n" ",") -- go test -coverpkg="${pkgs}" ${main_pkg} ${go_test_mod_method} ${go_test_cover_method} ${go_test_count_method} -c -o="${main_test_binary_file}" -+ pkgs=$(go list "${go_test_mod_method}" "${project_root}"/... | grep -Ev "${exclude_pattern}" | tr "\r\n" ",") -+ go test -coverpkg="${pkgs}" "${main_pkg}" "${go_test_mod_method}" "${go_test_cover_method}" "${go_test_count_method}" -c -o="${main_test_binary_file}" > /dev/null 2>&1 - } - - function run_main_test_binary() { -- ${main_test_binary_file} -test.coverprofile="${coverage_file}" > "${coverage_log}" 2>&1 & -+ ${main_test_binary_file} -test.coverprofile="${coverage_file}" > "${coverage_daemon_log}" 2>&1 & - main_test_pid=$! - for _ in $(seq 1 10); do - if isula-build info > /dev/null 2>&1; then -@@ -74,15 +75,22 @@ function run_main_test_binary() { - - function run_coverage_test() { - # do cover tests -- echo "sdv coverage test" -- # cover_test_xxx -- # cover_test_xxx -- # cover_test_xxx -- # cover_test_xxx -+ while IFS= read -r testfile; do -+ printf "%-60s" "test $(basename "${testfile}"): " -+ echo -e "\n$(basename "${testfile}"):" >> "${coverage_client_log}" -+ if ! bash "${testfile}" >> "${coverage_client_log}" 2>&1; then -+ echo "FAIL" -+ return_code=1 -+ else -+ echo "PASS" -+ fi -+ done < <(find "${project_root}"/tests/src -maxdepth 1 -name "cover_test_*" -type f -print) -+ # shellcheck disable=SC2248 -+ return ${return_code} - } - - function finish_coverage_test() { -- kill -15 $main_test_pid -+ kill -15 "${main_test_pid}" - } - - function generate_coverage() { -@@ -90,7 +98,7 @@ function generate_coverage() { - } - - function cleanup() { -- rm "$main_test_binary_file" -+ rm "${main_test_binary_file}" - } - - precheck -@@ -102,3 +110,5 @@ run_coverage_test - finish_coverage_test - generate_coverage - cleanup -+# shellcheck disable=SC2248 -+exit ${return_code} -diff --git a/hack/merge_coverage.sh b/hack/merge_coverage.sh -index 6e529a34..f043dfaf 100644 ---- a/hack/merge_coverage.sh -+++ b/hack/merge_coverage.sh -@@ -24,32 +24,32 @@ function merge_cover() { - output_coverage_file=${output_file_name}.out - output_html_file=${output_file_name}.html - output_merge_cover=${output_file_name}.merge -- grep -r -h -v "^mode:" "${input_coverages[@]}" | sort > "$output_merge_cover" -+ grep -r -h -v "^mode:" "${input_coverages[@]}" | sort > "${output_merge_cover}" - current="" - count=0 -- echo "mode: set" > "$output_coverage_file" -+ echo "mode: set" > "${output_coverage_file}" - # read the cover report from merge_cover, convert it, write to final coverage - while read -r line; do -- block=$(echo "$line" | cut -d ' ' -f1-2) -- num=$(echo "$line" | cut -d ' ' -f3) -- if [ "$current" == "" ]; then -- current=$block -- count=$num -- elif [ "$block" == "$current" ]; then -+ block=$(echo "${line}" | cut -d ' ' -f1-2) -+ num=$(echo "${line}" | cut -d ' ' -f3) -+ if [ "${current}" == "" ]; then -+ current=${block} -+ count=${num} -+ elif [ "${block}" == "${current}" ]; then - count=$((count + num)) - else - # if the sorted two lines are not in the same code block, write the statics result of last code block to the final coverage -- echo "$current" $count >> "${output_coverage_file}" -- current=$block -- count=$num -+ echo "${current} ${count}" >> "${output_coverage_file}" -+ current=${block} -+ count=${num} - fi -- done < "$output_merge_cover" -+ done < "${output_merge_cover}" - rm -rf "${output_merge_cover}" - - # merge the results of last line to the final coverage -- if [ "$current" != "" ]; then -- echo "$current" "$count" >> "${output_coverage_file}" -+ if [ "${current}" != "" ]; then -+ echo "${current} ${count}" >> "${output_coverage_file}" - fi - -- go tool cover -html="${output_coverage_file}" -o "$output_html_file" -+ go tool cover -html="${output_coverage_file}" -o "${output_html_file}" - } -diff --git a/hack/unit_test.sh b/hack/unit_test.sh -index 94a44a95..161feb6b 100755 ---- a/hack/unit_test.sh -+++ b/hack/unit_test.sh -@@ -47,20 +47,20 @@ function run_unit_test() { - echo "Testing with args ${TEST_ARGS}" - - rm -f "${testlog}" -- if [[ -n $run_coverage ]]; then -+ if [[ -n ${run_coverage} ]]; then - mkdir -p "${covers_folder}" - fi -- for package in $(go list ${go_test_mod_method} ./... | grep -Ev ${exclude_pattern}); do -+ for package in $(go list "${go_test_mod_method}" ./... | grep -Ev "${exclude_pattern}"); do - echo "Start to test: ${package}" -- if [[ -n $run_coverage ]]; then -- coverprofile_file="${covers_folder}/$(echo "$package" | tr / -).cover" -+ if [[ -n ${run_coverage} ]]; then -+ coverprofile_file="${covers_folder}/$(echo "${package}" | tr / -).cover" - coverprofile_flag="-coverprofile=${coverprofile_file}" - go_test_covermode_flag="-covermode=set" - go_test_race_flag="" - fi - # TEST_ARGS is " -args SKIP_REG=foo", so no double quote for it - # shellcheck disable=SC2086 -- go test -v ${go_test_race_flag} ${go_test_mod_method} ${coverprofile_flag} ${go_test_covermode_flag} -coverpkg=${package} ${go_test_count_method} ${go_test_timeout_flag} "${package}" ${TEST_ARGS} >> "${testlog}" -+ go test -v ${go_test_race_flag} "${go_test_mod_method}" ${coverprofile_flag} "${go_test_covermode_flag}" -coverpkg=${package} "${go_test_count_method}" "${go_test_timeout_flag}" "${package}" ${TEST_ARGS} >> "${testlog}" - done - - if grep -E -- "--- FAIL:|^FAIL" "${testlog}"; then --- -2.27.0 - diff --git a/patch/0083-test-add-common-function-for-testing-separated-image.patch b/patch/0083-test-add-common-function-for-testing-separated-image.patch deleted file mode 100644 index 50c7340..0000000 --- a/patch/0083-test-add-common-function-for-testing-separated-image.patch +++ /dev/null @@ -1,124 +0,0 @@ -From 08ebd389b5e3bb5104035c36891f8add75e18f57 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 1 Nov 2021 23:37:56 +0800 -Subject: [PATCH 15/16] test: add common function for testing separated image - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - tests/lib/separator.sh | 104 +++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 104 insertions(+) - create mode 100644 tests/lib/separator.sh - -diff --git a/tests/lib/separator.sh b/tests/lib/separator.sh -new file mode 100644 -index 00000000..ad05eb55 ---- /dev/null -+++ b/tests/lib/separator.sh -@@ -0,0 +1,104 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: common function for save/load separated image -+ -+exit_flag=0 -+ -+# $1: from image name -+# $2: build image name -+# $3: layers number -+# $4: Dockerfile path -+function touch_dockerfile() { -+ cat > "$4" << EOF -+FROM $1 -+MAINTAINER DCCooper -+EOF -+ for i in $(seq "$3"); do -+ echo "RUN echo \"This is $2 layer ${i}: ${RANDOM}\" > line.${i}" >> "$4" -+ done -+} -+ -+# $1: from image name -+# $2: build image name -+# $3: layers number -+# $4: Dockerfile path -+function touch_bad_dockerfile() { -+ cat > "$4" << EOF -+FROM $1 -+MAINTAINER DCCooper -+EOF -+ for i in $(seq "$3"); do -+ echo "RUN echo \"This is $2 layer ${i}: ${RANDOM}\"" >> "$4" -+ done -+} -+ -+# $1: image name -+# $2: context dir -+function build_image() { -+ isula-build ctr-img build -t "$1" "$2" -+} -+ -+function touch_rename_json() { -+ cat > "$1" << EOF -+[ -+ { -+ "name": "app1_latest_app_image.tar.gz", -+ "rename": "app1.tar.gz" -+ }, -+ { -+ "name": "app2_latest_app_image.tar.gz", -+ "rename": "app2.tar.gz" -+ }, -+ { -+ "name": "app1_latest_base_image.tar.gz", -+ "rename": "base1.tar.gz" -+ }, -+ { -+ "name": "app2_latest_base_image.tar.gz", -+ "rename": "base2.tar.gz" -+ }, -+ { -+ "name": "app1_latest_lib_image.tar.gz", -+ "rename": "lib1.tar.gz" -+ }, -+ { -+ "name": "app2_latest_lib_image.tar.gz", -+ "rename": "lib2.tar.gz" -+ } -+] -+EOF -+} -+ -+function touch_bad_rename_json() { -+ touch_rename_json "$1" -+ sed -i '2d' "$1" -+} -+ -+function check_result_equal() { -+ if [[ $1 -eq $2 ]]; then -+ return 0 -+ else -+ ((exit_flag++)) -+ return 1 -+ fi -+} -+ -+function check_result_not_equal() { -+ if [[ $1 -ne $2 ]]; then -+ return 0 -+ else -+ ((exit_flag++)) -+ return 1 -+ fi -+} --- -2.27.0 - diff --git a/patch/0084-test-add-integration-tests-for-saving-and-loading-se.patch b/patch/0084-test-add-integration-tests-for-saving-and-loading-se.patch deleted file mode 100644 index 00b419d..0000000 --- a/patch/0084-test-add-integration-tests-for-saving-and-loading-se.patch +++ /dev/null @@ -1,523 +0,0 @@ -From b3e96588a3e236cec8ec5e62a1fb884cf2eabc80 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Mon, 1 Nov 2021 23:38:06 +0800 -Subject: [PATCH 16/16] test: add integration tests for saving and loading - separated image - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - .../cover_test_load_separated_image_failed.sh | 145 ++++++++++++++++++ - ...cover_test_load_separated_image_success.sh | 89 +++++++++++ - .../cover_test_save_separated_image_failed.sh | 107 +++++++++++++ - ...cover_test_save_separated_image_success.sh | 54 +++++++ - ...r_test_save_separated_image_with_rename.sh | 75 +++++++++ - 5 files changed, 470 insertions(+) - create mode 100644 tests/src/cover_test_load_separated_image_failed.sh - create mode 100644 tests/src/cover_test_load_separated_image_success.sh - create mode 100644 tests/src/cover_test_save_separated_image_failed.sh - create mode 100644 tests/src/cover_test_save_separated_image_success.sh - create mode 100644 tests/src/cover_test_save_separated_image_with_rename.sh - -diff --git a/tests/src/cover_test_load_separated_image_failed.sh b/tests/src/cover_test_load_separated_image_failed.sh -new file mode 100644 -index 00000000..26590d0c ---- /dev/null -+++ b/tests/src/cover_test_load_separated_image_failed.sh -@@ -0,0 +1,145 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: cover test for load separated image -+ -+test_name=${BASH_SOURCE[0]} -+workspace=/tmp/${test_name}.$(date +%s) -+mkdir -p "${workspace}" -+dockerfile=${workspace}/Dockerfile -+tarball_dir=${workspace}/Images -+rename_json=${workspace}/rename.json -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "${top_dir}"/tests/lib/separator.sh -+ -+function pre_run() { -+ base_image_name="hub.oepkgs.net/library/busybox:latest" -+ lib_image_name="lib:latest" -+ app1_image_name="app1:latest" -+ app2_image_name="app2:latest" -+ lib_layer_number=5 -+ app1_layer_number=4 -+ app2_layer_number=3 -+ touch_dockerfile "${base_image_name}" "${lib_image_name}" "${lib_layer_number}" "${dockerfile}" -+ build_image "${lib_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app1_image_name}" "${app1_layer_number}" "${dockerfile}" -+ build_image "${app1_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app2_image_name}" "${app2_layer_number}" "${dockerfile}" -+ build_image "${app2_image_name}" "${workspace}" -+ touch_rename_json "${rename_json}" -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${tarball_dir}" "${app1_image_name}" "${app2_image_name}" -r "${rename_json}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# empty -d flag and missing -b -+function test_run1() { -+ isula-build ctr-img load -l "${tarball_dir}"/base1.tar.gz -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# empty -d flag and missing -l -+function test_run2() { -+ isula-build ctr-img load -b "${tarball_dir}"/base1.tar.gz -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# empty -d, -b, -l flag -+function test_run3() { -+ isula-build ctr-img load -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# use lib as base image tarball -+function test_run4() { -+ isula-build ctr-img load -d "${tarball_dir}" -b "${tarball_dir}"/lib1.tar.gz -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# missing app tarball -+function test_run5() { -+ mv "${tarball_dir}"/app1.tar.gz "${workspace}" -+ isula-build ctr-img load -d "${tarball_dir}" -l "${tarball_dir}"/lib1.tar.gz -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ mv "${workspace}"/app1.tar.gz "${tarball_dir}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# lib tarball not exist -+function test_run6() { -+ isula-build ctr-img load -d "${tarball_dir}" -l not_exist_lib.tar -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# base tarball not exist -+function test_run7() { -+ isula-build ctr-img load -d "${tarball_dir}" -b not_exist_base.tar -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# invalid base tarball -+function test_run8() { -+ invalid_tarball=${workspace}/base1.tar -+ echo "invalid base tarball" >> "${invalid_tarball}" -+ isula-build ctr-img load -d "${tarball_dir}" -b "${invalid_tarball}" -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${invalid_tarball}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# invalid lib tarball -+function test_run9() { -+ invalid_tarball=${workspace}/lib1.tar -+ echo "invalid lib tarball" >> "${invalid_tarball}" -+ isula-build ctr-img load -d "${tarball_dir}" -l "${invalid_tarball}" -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${invalid_tarball}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+# manifest file corruption -+function test_run10() { -+ cp "${tarball_dir}"/manifest "${tarball_dir}"/manifest.bk -+ sed -i "1d" "${tarball_dir}"/manifest -+ isula-build ctr-img load -d "${tarball_dir}" -d "${tarball_dir}" -i "${app1_image_name}" -+ check_result_not_equal $? 0 -+ mv "${tarball_dir}"/manifest.bk "${tarball_dir}"/manifest -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function cleanup() { -+ rm -rf "${workspace}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+pre_run -+test_run1 -+test_run2 -+test_run3 -+test_run4 -+test_run5 -+test_run6 -+test_run7 -+test_run8 -+test_run9 -+test_run10 -+cleanup -+# shellcheck disable=SC2154 -+exit "${exit_flag}" -diff --git a/tests/src/cover_test_load_separated_image_success.sh b/tests/src/cover_test_load_separated_image_success.sh -new file mode 100644 -index 00000000..266b3eba ---- /dev/null -+++ b/tests/src/cover_test_load_separated_image_success.sh -@@ -0,0 +1,89 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: cover test for load separated image -+ -+test_name=${BASH_SOURCE[0]} -+workspace=/tmp/${test_name}.$(date +%s) -+mkdir -p "${workspace}" -+dockerfile=${workspace}/Dockerfile -+tarball_dir=${workspace}/Images -+rename_json=${workspace}/rename.json -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "${top_dir}"/tests/lib/separator.sh -+ -+function pre_run() { -+ base_image_name="hub.oepkgs.net/library/busybox:latest" -+ lib_image_name="lib:latest" -+ app1_image_name="app1:latest" -+ app2_image_name="app2:latest" -+ lib_layer_number=5 -+ app1_layer_number=4 -+ app2_layer_number=3 -+ touch_dockerfile "${base_image_name}" "${lib_image_name}" "${lib_layer_number}" "${dockerfile}" -+ build_image "${lib_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app1_image_name}" "${app1_layer_number}" "${dockerfile}" -+ build_image "${app1_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app2_image_name}" "${app2_layer_number}" "${dockerfile}" -+ build_image "${app2_image_name}" "${workspace}" -+ touch_rename_json "${rename_json}" -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${tarball_dir}" "${app1_image_name}" "${app2_image_name}" -r "${rename_json}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function test_run1() { -+ isula-build ctr-img load -d "${tarball_dir}" -b "${tarball_dir}"/base1.tar.gz -l "${tarball_dir}"/lib1.tar.gz -i "${app1_image_name}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function test_run2() { -+ isula-build ctr-img load -d "${tarball_dir}" -b "${tarball_dir}"/base1.tar.gz -i "${app1_image_name}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function test_run3() { -+ isula-build ctr-img load -d "${tarball_dir}" -l "${tarball_dir}"/lib1.tar.gz -i "${app1_image_name}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function test_run4() { -+ isula-build ctr-img load -d "${tarball_dir}" -i "${app1_image_name}" -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function test_run5() { -+ isula-build ctr-img load -d "${tarball_dir}" -i "${app1_image_name}" --no-check -+ check_result_equal $? 0 -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+function cleanup() { -+ rm -rf "${workspace}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+pre_run -+test_run1 -+test_run2 -+test_run3 -+test_run4 -+test_run5 -+cleanup -+# shellcheck disable=SC2154 -+exit "${exit_flag}" -diff --git a/tests/src/cover_test_save_separated_image_failed.sh b/tests/src/cover_test_save_separated_image_failed.sh -new file mode 100644 -index 00000000..c64dcf5d ---- /dev/null -+++ b/tests/src/cover_test_save_separated_image_failed.sh -@@ -0,0 +1,107 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: cover test for save separated image -+ -+test_name=${BASH_SOURCE[0]} -+workspace=/tmp/${test_name}.$(date +%s) -+mkdir -p "${workspace}" -+dockerfile=${workspace}/Dockerfile -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "${top_dir}"/tests/lib/separator.sh -+ -+function pre_run() { -+ base_image_name="hub.oepkgs.net/library/busybox:latest" -+ bad_lib_image_name="lib:bad" -+ bad_app1_image_name="app1:bad" -+ bad_app2_image_name="app2:bad" -+ lib_image_name="lib:latest" -+ app1_image_name="app1:latest" -+ app2_image_name="app2:latest" -+ bad_lib_layer_number=5 -+ bad_app1_layer_number=4 -+ bad_app2_layer_number=3 -+ lib_layer_number=5 -+ app1_layer_number=6 -+ app2_layer_number=7 -+ -+ # build bad dockerfile -+ touch_bad_dockerfile "${base_image_name}" "${bad_lib_image_name}" "${bad_lib_layer_number}" "${dockerfile}" -+ build_image "${bad_lib_image_name}" "${workspace}" -+ touch_bad_dockerfile "${bad_lib_image_name}" "${bad_app1_image_name}" "${bad_app1_layer_number}" "${dockerfile}" -+ build_image "${bad_app1_image_name}" "${workspace}" -+ touch_bad_dockerfile "${bad_lib_image_name}" "${bad_app2_image_name}" "${bad_app2_layer_number}" "${dockerfile}" -+ build_image "${bad_app2_image_name}" "${workspace}" -+ -+ # build normal dockerfile -+ touch_dockerfile "${base_image_name}" "${lib_image_name}" "${lib_layer_number}" "${dockerfile}" -+ build_image "${lib_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app1_image_name}" "${app1_layer_number}" "${dockerfile}" -+ build_image "${app1_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app2_image_name}" "${app2_layer_number}" "${dockerfile}" -+ build_image "${app2_image_name}" "${workspace}" -+} -+ -+function test_run1() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${bad_lib_image_name}" -d "${workspace}"/Images "${bad_app1_image_name}" "${bad_app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run2() { -+ isula-build ctr-img save -b "invalid:base" -l "${bad_lib_image_name}" -d "${workspace}"/Images "${bad_app1_image_name}" "${bad_app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run3() { -+ isula-build ctr-img save -b "${base_image_name}" -l "livalid:lib" -d "${workspace}"/Images "${bad_app1_image_name}" "${bad_app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run4() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${bad_lib_image_name}" -d "${workspace}"/Images "invalid:app" "${bad_app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run5() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${bad_lib_image_name}" -d "${workspace}"/Images "${app1_image_name}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run6() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images "${bad_app1_image_name}" "${bad_app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function cleanup() { -+ rm -rf "${workspace}" -+ isula-build ctr-img rm "${bad_lib_image_name}" "${bad_app1_image_name}" "${bad_app2_image_name}" "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+ isula-build ctr-img rm -p -+} -+ -+pre_run -+test_run1 -+test_run2 -+test_run3 -+test_run4 -+test_run5 -+test_run6 -+cleanup -+# shellcheck disable=SC2154 -+exit "${exit_flag}" -diff --git a/tests/src/cover_test_save_separated_image_success.sh b/tests/src/cover_test_save_separated_image_success.sh -new file mode 100644 -index 00000000..2095bd33 ---- /dev/null -+++ b/tests/src/cover_test_save_separated_image_success.sh -@@ -0,0 +1,54 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: cover test for save separated image -+ -+test_name=${BASH_SOURCE[0]} -+workspace=/tmp/${test_name}.$(date +%s) -+mkdir -p "${workspace}" -+dockerfile=${workspace}/Dockerfile -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "${top_dir}"/tests/lib/separator.sh -+ -+function pre_run() { -+ base_image_name="hub.oepkgs.net/library/busybox:latest" -+ lib_image_name="lib:latest" -+ app1_image_name="app1:latest" -+ app2_image_name="app2:latest" -+ lib_layer_number=5 -+ app1_layer_number=4 -+ app2_layer_number=3 -+ touch_dockerfile "${base_image_name}" "${lib_image_name}" "${lib_layer_number}" "${dockerfile}" -+ build_image "${lib_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app1_image_name}" "${app1_layer_number}" "${dockerfile}" -+ build_image "${app1_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app2_image_name}" "${app2_layer_number}" "${dockerfile}" -+ build_image "${app2_image_name}" "${workspace}" -+} -+ -+function test_run() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images "${app1_image_name}" "${app2_image_name}" -+ check_result_equal $? 0 -+} -+ -+function cleanup() { -+ rm -rf "${workspace}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+pre_run -+test_run -+cleanup -+# shellcheck disable=SC2154 -+exit "${exit_flag}" -diff --git a/tests/src/cover_test_save_separated_image_with_rename.sh b/tests/src/cover_test_save_separated_image_with_rename.sh -new file mode 100644 -index 00000000..28904757 ---- /dev/null -+++ b/tests/src/cover_test_save_separated_image_with_rename.sh -@@ -0,0 +1,75 @@ -+#!/bin/bash -+ -+# Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+# isula-build licensed under the Mulan PSL v2. -+# You can use this software according to the terms and conditions of the Mulan PSL v2. -+# You may obtain a copy of Mulan PSL v2 at: -+# http://license.coscl.org.cn/MulanPSL2 -+# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+# PURPOSE. -+# See the Mulan PSL v2 for more details. -+# Author: Xiang Li -+# Create: 2021-11-01 -+# Description: cover test for save separated image -+ -+test_name=${BASH_SOURCE[0]} -+workspace=/tmp/${test_name}.$(date +%s) -+mkdir -p "${workspace}" -+dockerfile=${workspace}/Dockerfile -+rename_json=${workspace}/rename.json -+invalid_rename_json=${workspace}/invalid.json -+none_exist_rename_json=${workspace}/none_exist.json -+top_dir=$(git rev-parse --show-toplevel) -+# shellcheck disable=SC1091 -+source "${top_dir}"/tests/lib/separator.sh -+ -+function pre_run() { -+ base_image_name="hub.oepkgs.net/library/busybox:latest" -+ lib_image_name="lib:latest" -+ app1_image_name="app1:latest" -+ app2_image_name="app2:latest" -+ lib_layer_number=5 -+ app1_layer_number=4 -+ app2_layer_number=3 -+ touch_dockerfile "${base_image_name}" "${lib_image_name}" "${lib_layer_number}" "${dockerfile}" -+ build_image "${lib_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app1_image_name}" "${app1_layer_number}" "${dockerfile}" -+ build_image "${app1_image_name}" "${workspace}" -+ touch_dockerfile "${lib_image_name}" "${app2_image_name}" "${app2_layer_number}" "${dockerfile}" -+ build_image "${app2_image_name}" "${workspace}" -+} -+ -+function test_run1() { -+ touch_rename_json "${rename_json}" -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images -r "${rename_json}" "${app1_image_name}" "${app2_image_name}" -+ check_result_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run2() { -+ touch_bad_rename_json "${invalid_rename_json}" -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images -r "${invalid_rename_json}" "${app1_image_name}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function test_run3() { -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images -r "${none_exist_rename_json}" "${app1_image_name}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ -+function cleanup() { -+ rm -rf "${workspace}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+} -+ -+ -+pre_run -+test_run1 -+test_run2 -+test_run3 -+cleanup -+# shellcheck disable=SC2154 -+exit "${exit_flag}" --- -2.27.0 - diff --git a/patch/0085-util-add-unit-test-for-increment-util-functions.patch b/patch/0085-util-add-unit-test-for-increment-util-functions.patch deleted file mode 100644 index f71b164..0000000 --- a/patch/0085-util-add-unit-test-for-increment-util-functions.patch +++ /dev/null @@ -1,463 +0,0 @@ -From 133e789d445905f5d94a6c8cc3459b3729fb7335 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Thu, 28 Oct 2021 18:55:24 +0800 -Subject: [PATCH 07/16] util: add unit test for increment util functions - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - util/cipher.go | 6 +- - util/cipher_test.go | 237 ++++++++++++++++++++++++++++++++++++++++++++ - util/common.go | 3 +- - util/common_test.go | 131 ++++++++++++++++++++++++ - 4 files changed, 373 insertions(+), 4 deletions(-) - -diff --git a/util/cipher.go b/util/cipher.go -index d92705c3..ce47b71e 100644 ---- a/util/cipher.go -+++ b/util/cipher.go -@@ -234,9 +234,6 @@ func ReadPublicKey(path string) (rsa.PublicKey, error) { - - func hashFile(path string) (string, error) { - cleanPath := filepath.Clean(path) -- if len(cleanPath) == 0 { -- return "", errors.New("failed to hash empty path") -- } - if f, err := os.Stat(cleanPath); err != nil { - return "", errors.Errorf("failed to stat file %q", cleanPath) - } else if f.IsDir() { -@@ -282,6 +279,9 @@ func hashDir(path string) (string, error) { - // the checksum will be concatenated to next checksum until every file - // counted, the result will be used for final checksum calculation - func SHA256Sum(path string) (string, error) { -+ if len(path) == 0 { -+ return "", errors.New("failed to hash empty path") -+ } - path = filepath.Clean(path) - f, err := os.Stat(path) - if err != nil { -diff --git a/util/cipher_test.go b/util/cipher_test.go -index 1c0d21c9..bab6dfe3 100644 ---- a/util/cipher_test.go -+++ b/util/cipher_test.go -@@ -19,12 +19,15 @@ import ( - "crypto/sha256" - "crypto/sha512" - "hash" -+ "io/ioutil" -+ "os" - "path/filepath" - "strings" - "testing" - - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ constant "isula.org/isula-build" - ) - - const ( -@@ -216,3 +219,237 @@ func benchmarkGenerateRSAKey(scale int, b *testing.B) { - func BenchmarkGenerateRSAKey2048(b *testing.B) { benchmarkGenerateRSAKey(2048, b) } - func BenchmarkGenerateRSAKey3072(b *testing.B) { benchmarkGenerateRSAKey(3072, b) } - func BenchmarkGenerateRSAKey4096(b *testing.B) { benchmarkGenerateRSAKey(4096, b) } -+ -+func TestHashFile(t *testing.T) { -+ emptyFile := fs.NewFile(t, t.Name()) -+ defer emptyFile.Remove() -+ fileWithContent := fs.NewFile(t, t.Name()) -+ err := ioutil.WriteFile(fileWithContent.Path(), []byte("hello"), constant.DefaultRootFileMode) -+ assert.NilError(t, err) -+ defer fileWithContent.Remove() -+ dir := fs.NewDir(t, t.Name()) -+ defer dir.Remove() -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want string -+ wantErr bool -+ }{ -+ { -+ name: "TC-hash empty file", -+ args: args{path: emptyFile.Path()}, -+ // empty file sha256sum always is -+ want: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -+ }, -+ { -+ name: "TC-hash file with content", -+ args: args{path: fileWithContent.Path()}, -+ want: "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824", -+ }, -+ { -+ name: "TC-hash file with empty path", -+ wantErr: true, -+ }, -+ { -+ name: "TC-hash file with invalid path", -+ args: args{path: "path not exist"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-hash file with directory path", -+ args: args{path: dir.Path()}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-hash file with special device", -+ args: args{path: "/dev/cdrom"}, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got, err := hashFile(tt.args.path) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("hashFile() error = %v, wantErr %v", err, tt.wantErr) -+ return -+ } -+ if got != tt.want { -+ t.Errorf("hashFile() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestHashDir(t *testing.T) { -+ root := fs.NewDir(t, t.Name()) -+ defer root.Remove() -+ -+ rootSub1 := root.Join("sub1") -+ os.MkdirAll(rootSub1, constant.DefaultRootDirMode) -+ defer os.RemoveAll(rootSub1) -+ rootSub1File := filepath.Join(rootSub1, "rootSub1File") -+ ioutil.WriteFile(rootSub1File, []byte("hello1"), constant.DefaultRootFileMode) -+ defer os.RemoveAll(rootSub1File) -+ -+ rootSub11 := filepath.Join(rootSub1, "sub11") -+ os.MkdirAll(rootSub11, constant.DefaultRootDirMode) -+ defer os.RemoveAll(rootSub11) -+ rootSub11File := filepath.Join(rootSub11, "rootSub11File") -+ ioutil.WriteFile(rootSub11File, []byte("hello11"), constant.DefaultRootFileMode) -+ defer os.RemoveAll(rootSub11File) -+ -+ emptyDir := fs.NewDir(t, t.Name()) -+ defer emptyDir.Remove() -+ emptyFile := root.Join("empty.tar") -+ _, err := os.Create(emptyFile) -+ assert.NilError(t, err) -+ defer os.RemoveAll(emptyFile) -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want string -+ wantErr bool -+ }{ -+ { -+ name: "TC-hash empty dir", -+ args: args{path: emptyDir.Path()}, -+ want: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -+ }, -+ { -+ name: "TC-hash not exist dir", -+ args: args{path: "path not exist"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-hash multiple dirs", -+ args: args{path: root.Path()}, -+ want: "bdaaa88766b974876a14d85620b5a26795735c332445783a3a067e0052a59478", -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got, err := hashDir(tt.args.path) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("hashDir() error = %v, wantErr %v", err, tt.wantErr) -+ return -+ } -+ if got != tt.want { -+ t.Errorf("hashDir() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestSHA256Sum(t *testing.T) { -+ root := fs.NewDir(t, t.Name()) -+ defer root.Remove() -+ -+ rootSub1 := root.Join("sub1") -+ os.MkdirAll(rootSub1, constant.DefaultRootDirMode) -+ defer os.RemoveAll(rootSub1) -+ rootSub1File := filepath.Join(rootSub1, "rootSub1File") -+ ioutil.WriteFile(rootSub1File, []byte("hello1"), constant.DefaultRootFileMode) -+ defer os.RemoveAll(rootSub1File) -+ -+ emptyDir := fs.NewDir(t, t.Name()) -+ defer emptyDir.Remove() -+ emptyFile := root.Join("empty.tar") -+ _, err := os.Create(emptyFile) -+ assert.NilError(t, err) -+ defer os.RemoveAll(emptyFile) -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want string -+ wantErr bool -+ }{ -+ { -+ name: "TC-for dir", -+ args: args{path: root.Path()}, -+ want: "6a29015d578de92eabad6b20b3e3c0d4df521b03728cb4ee5667b15742154646", -+ }, -+ { -+ name: "TC-for file only", -+ args: args{path: emptyFile}, -+ want: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -+ }, -+ { -+ name: "TC-for invalid file", -+ args: args{path: "/dev/cdrom"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-for path not exist", -+ args: args{path: "path not exist"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-for empty path", -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got, err := SHA256Sum(tt.args.path) -+ if (err != nil) != tt.wantErr { -+ t.Errorf("SHA256Sum() error = %v, wantErr %v", err, tt.wantErr) -+ return -+ } -+ if got != tt.want { -+ t.Errorf("SHA256Sum() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestCheckSum(t *testing.T) { -+ emptyFile := fs.NewFile(t, t.Name()) -+ defer emptyFile.Remove() -+ -+ type args struct { -+ path string -+ target string -+ } -+ tests := []struct { -+ name string -+ args args -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal case", -+ args: args{ -+ path: emptyFile.Path(), -+ target: "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", -+ }, -+ }, -+ { -+ name: "TC-check sum failed", -+ args: args{path: emptyFile.Path(), target: "wrong"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-empty path", -+ args: args{target: "wrong"}, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if err := CheckSum(tt.args.path, tt.args.target); (err != nil) != tt.wantErr { -+ t.Errorf("CheckSum() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ }) -+ } -+} -diff --git a/util/common.go b/util/common.go -index 4782b2ec..ff85da9c 100644 ---- a/util/common.go -+++ b/util/common.go -@@ -192,7 +192,8 @@ func IsValidImageName(name string) bool { - if err != nil { - return false - } -- if _, canonical := ref.(reference.Canonical); canonical { -+ -+ if _, isDigest := ref.(reference.Canonical); isDigest { - return false - } - return true -diff --git a/util/common_test.go b/util/common_test.go -index ed9edf6e..9831971a 100644 ---- a/util/common_test.go -+++ b/util/common_test.go -@@ -14,11 +14,14 @@ - package util - - import ( -+ "io/ioutil" -+ "os" - "path/filepath" - "testing" - - "gotest.tools/v3/assert" - "gotest.tools/v3/fs" -+ constant "isula.org/isula-build" - ) - - func TestCheckFileSize(t *testing.T) { -@@ -179,3 +182,131 @@ func TestParseServer(t *testing.T) { - }) - } - } -+ -+func TestIsValidImageName(t *testing.T) { -+ type args struct { -+ name string -+ } -+ tests := []struct { -+ name string -+ args args -+ want bool -+ }{ -+ { -+ name: "TC-valid image name", -+ args: args{name: "app:latest"}, -+ want: true, -+ }, -+ { -+ name: "TC-valid image name with domain", -+ args: args{name: "localhost:5000/app:latest"}, -+ want: true, -+ }, -+ { -+ name: "TC-invalid image name", -+ args: args{name: "app:latest:v1"}, -+ want: false, -+ }, -+ { -+ name: "TC-invalid image name with canonical format", -+ args: args{name: "alpine:3.2@sha256:a187dde48cd289ac374ad8539930628314bc581a481cdb41409c9289419ddb72"}, -+ want: false, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if got := IsValidImageName(tt.args.name); got != tt.want { -+ t.Errorf("IsValidImageName() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestAnyFlagSet(t *testing.T) { -+ type args struct { -+ flags []string -+ } -+ tests := []struct { -+ name string -+ args args -+ want bool -+ }{ -+ { -+ name: "TC-some flag set", -+ args: args{flags: []string{"flag1", "flag2"}}, -+ want: true, -+ }, -+ { -+ name: "TC-none flag set", -+ args: args{flags: []string{}}, -+ want: false, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if got := AnyFlagSet(tt.args.flags...); got != tt.want { -+ t.Errorf("AnyFlagSet() = %v, want %v", got, tt.want) -+ } -+ }) -+ } -+} -+ -+func TestCheckLoadFile(t *testing.T) { -+ loadFile := fs.NewFile(t, t.Name()) -+ defer loadFile.Remove() -+ err := ioutil.WriteFile(loadFile.Path(), []byte("hello"), constant.DefaultRootFileMode) -+ assert.NilError(t, err) -+ -+ emptyFile := fs.NewFile(t, t.Name()) -+ defer emptyFile.Remove() -+ -+ root := fs.NewDir(t, t.Name()) -+ defer root.Remove() -+ -+ bigFile := filepath.Join(root.Path(), "bigFile") -+ f, err := os.Create(bigFile) -+ assert.NilError(t, err) -+ defer os.Remove(f.Name()) -+ err = f.Truncate(maxLoadFileSize + 1) -+ assert.NilError(t, err) -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ wantErr bool -+ }{ -+ { -+ name: "TC-normal load file", -+ args: args{path: loadFile.Path()}, -+ }, -+ { -+ name: "TC-load file not exist", -+ wantErr: true, -+ }, -+ { -+ name: "TC-empty load file", -+ args: args{path: emptyFile.Path()}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-invalid load file", -+ args: args{path: "/dev/cdrom"}, -+ wantErr: true, -+ }, -+ { -+ name: "TC-load file too big", -+ args: args{path: bigFile}, -+ wantErr: true, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if err := CheckLoadFile(tt.args.path); (err != nil) != tt.wantErr { -+ t.Errorf("CheckLoadFile() error = %v, wantErr %v", err, tt.wantErr) -+ } -+ }) -+ } -+} --- -2.27.0 - diff --git a/patch/0086-bugfix-fix-random-sequence-for-saving-separated-imag.patch b/patch/0086-bugfix-fix-random-sequence-for-saving-separated-imag.patch deleted file mode 100644 index b271e4e..0000000 --- a/patch/0086-bugfix-fix-random-sequence-for-saving-separated-imag.patch +++ /dev/null @@ -1,43 +0,0 @@ -From d6c302a3d5563286614c59a442f4cd65a8351ce2 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 2 Nov 2021 20:54:24 +0800 -Subject: [PATCH 1/2] bugfix: fix random sequence for saving separated image - tarball - -reason: sort the map key and read the key in alohabetical orger - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - daemon/save.go | 9 ++++++++- - 1 file changed, 8 insertions(+), 1 deletion(-) - -diff --git a/daemon/save.go b/daemon/save.go -index ecac5b6..9ad4e03 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -20,6 +20,7 @@ import ( - "io/ioutil" - "os" - "path/filepath" -+ "sort" - "strings" - - "github.com/containers/image/v5/docker/reference" -@@ -513,7 +514,13 @@ func (s *separatorSave) processImageLayers(imgInfos map[string]imageInfo) error - libImagesMap = make(imageLayersMap, 1) - appImagesMap = make(imageLayersMap, 1) - ) -- for _, info := range imgInfos { -+ var sortedKey []string -+ for k := range imgInfos { -+ sortedKey = append(sortedKey, k) -+ } -+ sort.Strings(sortedKey) -+ for _, k := range sortedKey { -+ info := imgInfos[k] - if err := s.clearDirs(true); err != nil { - return errors.Wrap(err, "clear tmp dirs failed") - } --- -1.8.3.1 - diff --git a/patch/0087-bugfix-optimize-function-IsExist.patch b/patch/0087-bugfix-optimize-function-IsExist.patch deleted file mode 100644 index 5c15c45..0000000 --- a/patch/0087-bugfix-optimize-function-IsExist.patch +++ /dev/null @@ -1,443 +0,0 @@ -From 6866f2e7f80ac9d8decf0e34a34de31df17c25aa Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 2 Nov 2021 20:59:35 +0800 -Subject: [PATCH 2/2] bugfix: optimize function IsExist - -reason: IsExist should return two value: -1. err: if err is not nil, which means the - input path is not valid, so the caller - should just return -2. true/false: this boolean value indicate the - path is exist or not, the value only valid - when no err occured - -also add testcase for filepath.go file - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - cmd/cli/build.go | 4 +- - cmd/cli/load.go | 4 +- - cmd/cli/save.go | 8 +- - cmd/daemon/main.go | 20 +++- - util/cipher.go | 4 +- - util/filepath.go | 18 ++-- - util/filepath_test.go | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 7 files changed, 289 insertions(+), 17 deletions(-) - create mode 100644 util/filepath_test.go - -diff --git a/cmd/cli/build.go b/cmd/cli/build.go -index 3d9f549..b0f7765 100644 ---- a/cmd/cli/build.go -+++ b/cmd/cli/build.go -@@ -235,7 +235,9 @@ func checkAbsPath(path string) (string, error) { - } - path = util.MakeAbsolute(path, pwd) - } -- if util.IsExist(path) { -+ if exist, err := util.IsExist(path); err != nil { -+ return "", err -+ } else if exist { - return "", errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", path) - } - -diff --git a/cmd/cli/load.go b/cmd/cli/load.go -index 44fefdd..90d189a 100644 ---- a/cmd/cli/load.go -+++ b/cmd/cli/load.go -@@ -202,7 +202,9 @@ func (sep *separatorLoadOption) check(pwd string) error { - } - - sep.dir = util.MakeAbsolute(sep.dir, pwd) -- if !util.IsExist(sep.dir) { -+ if exist, err := util.IsExist(sep.dir); err != nil { -+ return errors.Wrap(err, "resolve dir path failed") -+ } else if !exist { - return errors.Errorf("image tarball directory %q is not exist", sep.dir) - } - -diff --git a/cmd/cli/save.go b/cmd/cli/save.go -index 599d394..5a63e02 100644 ---- a/cmd/cli/save.go -+++ b/cmd/cli/save.go -@@ -112,7 +112,9 @@ func (sep *separatorSaveOption) check(pwd string) error { - sep.destPath = "Images" - } - sep.destPath = util.MakeAbsolute(sep.destPath, pwd) -- if util.IsExist(sep.destPath) { -+ if exist, err := util.IsExist(sep.destPath); err != nil { -+ return errors.Wrap(err, "check dest path failed") -+ } else if exist { - return errors.Errorf("dest path already exist: %q, try to remove or rename it", sep.destPath) - } - if len(sep.renameFile) != 0 { -@@ -162,7 +164,9 @@ func (opt *saveOptions) checkSaveOpts(args []string) error { - return err - } - opt.path = util.MakeAbsolute(opt.path, pwd) -- if util.IsExist(opt.path) { -+ if exist, err := util.IsExist(opt.path); err != nil { -+ return errors.Wrap(err, "check output path failed") -+ } else if exist { - return errors.Errorf("output file already exist: %q, try to remove existing tarball or rename output file", opt.path) - } - return nil -diff --git a/cmd/daemon/main.go b/cmd/daemon/main.go -index 4fd5356..3665f6b 100644 ---- a/cmd/daemon/main.go -+++ b/cmd/daemon/main.go -@@ -341,7 +341,9 @@ func setupWorkingDirectories() error { - return errors.Errorf("%q not an absolute dir, the \"dataroot\" and \"runroot\" must be an absolute path", dir) - } - -- if !util.IsExist(dir) { -+ if exist, err := util.IsExist(dir); err != nil { -+ return err -+ } else if !exist { - if err := os.MkdirAll(dir, constant.DefaultRootDirMode); err != nil { - return errors.Wrapf(err, "create directory for %q failed", dir) - } -@@ -363,7 +365,9 @@ func setupWorkingDirectories() error { - - func checkAndValidateConfig(cmd *cobra.Command) error { - // check if configuration.toml file exists, merge config if exists -- if !util.IsExist(constant.ConfigurationPath) { -+ if exist, err := util.IsExist(constant.ConfigurationPath); err != nil { -+ return err -+ } else if !exist { - logrus.Warnf("Main config file missing, the default configuration is used") - } else { - conf, err := loadConfig(constant.ConfigurationPath) -@@ -378,14 +382,18 @@ func checkAndValidateConfig(cmd *cobra.Command) error { - } - - // file policy.json must be exist -- if !util.IsExist(constant.SignaturePolicyPath) { -+ if exist, err := util.IsExist(constant.SignaturePolicyPath); err != nil { -+ return err -+ } else if !exist { - return errors.Errorf("policy config file %v is not exist", constant.SignaturePolicyPath) - } - - // check all config files - confFiles := []string{constant.RegistryConfigPath, constant.SignaturePolicyPath, constant.StorageConfigPath} - for _, file := range confFiles { -- if util.IsExist(file) { -+ if exist, err := util.IsExist(file); err != nil { -+ return err -+ } else if exist { - fi, err := os.Stat(file) - if err != nil { - return errors.Wrapf(err, "stat file %q failed", file) -@@ -402,7 +410,9 @@ func checkAndValidateConfig(cmd *cobra.Command) error { - } - - // if storage config file exists, merge storage config -- if util.IsExist(constant.StorageConfigPath) { -+ if exist, err := util.IsExist(constant.StorageConfigPath); err != nil { -+ return err -+ } else if exist { - return mergeStorageConfig(cmd) - } - -diff --git a/util/cipher.go b/util/cipher.go -index ce47b71..ecbbc47 100644 ---- a/util/cipher.go -+++ b/util/cipher.go -@@ -185,7 +185,9 @@ func DecryptRSA(data string, key *rsa.PrivateKey, h crypto.Hash) (string, error) - - // GenRSAPublicKeyFile store public key from rsa key pair into local file - func GenRSAPublicKeyFile(key *rsa.PrivateKey, path string) error { -- if IsExist(path) { -+ if exist, err := IsExist(path); err != nil { -+ return err -+ } else if exist { - if err := os.Remove(path); err != nil { - return errors.Errorf("failed to delete the residual key file: %v", err) - } -diff --git a/util/filepath.go b/util/filepath.go -index 59b22da..a10ed85 100644 ---- a/util/filepath.go -+++ b/util/filepath.go -@@ -56,14 +56,18 @@ func IsDirectory(path string) bool { - return fi.IsDir() - } - --// IsExist returns true if the path exists --func IsExist(path string) bool { -- if _, err := os.Lstat(path); err != nil { -- if os.IsNotExist(err) { -- return false -- } -+// IsExist returns true if the path exists when err is nil -+// and return false if path not exists when err is nil -+// Caller should focus on whether the err is nil or not -+func IsExist(path string) (bool, error) { -+ _, err := os.Lstat(path) -+ if err == nil { -+ return true, nil -+ } -+ if os.IsNotExist(err) { -+ return false, nil - } -- return true -+ return false, err - } - - // IsSymbolFile returns true if the path file is a symbol file -diff --git a/util/filepath_test.go b/util/filepath_test.go -new file mode 100644 -index 0000000..add4545 ---- /dev/null -+++ b/util/filepath_test.go -@@ -0,0 +1,248 @@ -+// Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved. -+// isula-build licensed under the Mulan PSL v2. -+// You can use this software according to the terms and conditions of the Mulan PSL v2. -+// You may obtain a copy of Mulan PSL v2 at: -+// http://license.coscl.org.cn/MulanPSL2 -+// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR -+// IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR -+// PURPOSE. -+// See the Mulan PSL v2 for more details. -+// Author: Xiang Li -+// Create: 2021-11-02 -+// Description: testcase for filepath related common functions -+ -+package util -+ -+import ( -+ "os" -+ "path/filepath" -+ "strings" -+ "testing" -+ -+ "gotest.tools/v3/assert" -+ constant "isula.org/isula-build" -+) -+ -+func TestIsExist(t *testing.T) { -+ type args struct { -+ path string -+ workingDir string -+ } -+ tests := []struct { -+ name string -+ args args -+ want string -+ isExist bool -+ wantErr bool -+ preHook func(t *testing.T, path string) -+ postHook func(t *testing.T) -+ }{ -+ { -+ name: "TC-filename too long", -+ args: args{ -+ path: strings.Repeat("a", 256), -+ workingDir: "/tmp", -+ }, -+ want: filepath.Join("/tmp", strings.Repeat("a", 256)), -+ isExist: false, -+ wantErr: true, -+ }, -+ { -+ name: "TC-filename valid", -+ args: args{ -+ path: strings.Repeat("a", 255), -+ workingDir: "/tmp", -+ }, -+ want: filepath.Join("/tmp", strings.Repeat("a", 255)), -+ isExist: false, -+ wantErr: false, -+ }, -+ { -+ name: "TC-path too long", -+ args: args{ -+ path: strings.Repeat(strings.Repeat("a", 256)+"/", 16), -+ workingDir: "/tmp", -+ }, -+ want: filepath.Join("/tmp", strings.Repeat(strings.Repeat("a", 256)+"/", 16)) + "/", -+ isExist: false, -+ wantErr: true, -+ }, -+ { -+ name: "TC-path exist", -+ args: args{ -+ path: strings.Repeat(strings.Repeat("a", 255)+"/", 15), -+ workingDir: "/tmp", -+ }, -+ want: filepath.Join("/tmp", strings.Repeat(strings.Repeat("a", 255)+"/", 15)) + "/", -+ isExist: true, -+ wantErr: false, -+ preHook: func(t *testing.T, path string) { -+ err := os.MkdirAll(path, constant.DefaultRootDirMode) -+ assert.NilError(t, err) -+ }, -+ postHook: func(t *testing.T) { -+ err := os.RemoveAll(filepath.Join("/tmp", strings.Repeat("a", 255)+"/")) -+ assert.NilError(t, err) -+ }, -+ }, -+ { -+ name: "TC-path with dot exist", -+ args: args{ -+ path: ".", -+ workingDir: filepath.Join("/tmp", strings.Repeat("./"+strings.Repeat("a", 255)+"/", 15)), -+ }, -+ want: filepath.Join("/tmp", strings.Repeat(strings.Repeat("a", 255)+"/", 15)) + "/", -+ isExist: true, -+ wantErr: false, -+ preHook: func(t *testing.T, path string) { -+ err := os.MkdirAll(path, constant.DefaultRootDirMode) -+ assert.NilError(t, err) -+ }, -+ postHook: func(t *testing.T) { -+ err := os.RemoveAll(filepath.Join("/tmp", strings.Repeat("a", 255)+"/")) -+ assert.NilError(t, err) -+ }, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ got := MakeAbsolute(tt.args.path, tt.args.workingDir) -+ if got != tt.want { -+ t.Errorf("MakeAbsolute() = %v, want %v", got, tt.want) -+ t.Skip() -+ } -+ -+ if tt.preHook != nil { -+ tt.preHook(t, got) -+ } -+ exist, err := IsExist(got) -+ if exist != tt.isExist { -+ t.Errorf("IsExist() = %v, want %v", exist, tt.isExist) -+ } -+ if (err != nil) != tt.wantErr { -+ t.Errorf("IsExist() = %v, want %v", err, tt.wantErr) -+ } -+ if tt.postHook != nil { -+ tt.postHook(t) -+ } -+ }) -+ } -+} -+ -+func TestIsSymbolFile(t *testing.T) { -+ originFile := "/tmp/originFile" -+ symbolFile := "/tmp/symbolFile" -+ noneExistFile := "/tmp/none_exist_file" -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want bool -+ preHook func(t *testing.T) -+ postHook func(t *testing.T) -+ }{ -+ { -+ name: "TC-is symbol file", -+ args: args{path: "/tmp/symbolFile"}, -+ want: true, -+ preHook: func(t *testing.T) { -+ _, err := os.Create(originFile) -+ assert.NilError(t, err) -+ assert.NilError(t, os.Symlink(originFile, symbolFile)) -+ }, -+ postHook: func(t *testing.T) { -+ assert.NilError(t, os.RemoveAll(originFile)) -+ assert.NilError(t, os.RemoveAll(symbolFile)) -+ }, -+ }, -+ { -+ name: "TC-is normal file", -+ args: args{path: originFile}, -+ want: false, -+ preHook: func(t *testing.T) { -+ _, err := os.Create(originFile) -+ assert.NilError(t, err) -+ }, -+ postHook: func(t *testing.T) { -+ assert.NilError(t, os.RemoveAll(originFile)) -+ }, -+ }, -+ { -+ name: "TC-file not exist", -+ args: args{path: noneExistFile}, -+ want: false, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.preHook != nil { -+ tt.preHook(t) -+ } -+ if got := IsSymbolFile(tt.args.path); got != tt.want { -+ t.Errorf("IsSymbolFile() = %v, want %v", got, tt.want) -+ } -+ if tt.postHook != nil { -+ tt.postHook(t) -+ } -+ }) -+ } -+} -+ -+func TestIsDirectory(t *testing.T) { -+ dirPath := filepath.Join("/tmp", t.Name()) -+ filePath := filepath.Join("/tmp", t.Name()) -+ noneExistFile := "/tmp/none_exist_file" -+ -+ type args struct { -+ path string -+ } -+ tests := []struct { -+ name string -+ args args -+ want bool -+ preHook func(t *testing.T) -+ postHook func(t *testing.T) -+ }{ -+ { -+ name: "TC-is directory", -+ args: args{path: dirPath}, -+ preHook: func(t *testing.T) { -+ assert.NilError(t, os.MkdirAll(dirPath, constant.DefaultRootDirMode)) -+ }, -+ postHook: func(t *testing.T) { -+ assert.NilError(t, os.RemoveAll(dirPath)) -+ }, -+ want: true, -+ }, -+ { -+ name: "TC-is file", -+ args: args{path: dirPath}, -+ preHook: func(t *testing.T) { -+ _, err := os.Create(filePath) -+ assert.NilError(t, err) -+ }, -+ postHook: func(t *testing.T) { -+ assert.NilError(t, os.RemoveAll(filePath)) -+ }, -+ }, -+ { -+ name: "TC-path not exist", -+ args: args{path: noneExistFile}, -+ }, -+ } -+ for _, tt := range tests { -+ t.Run(tt.name, func(t *testing.T) { -+ if tt.preHook != nil { -+ tt.preHook(t) -+ } -+ if got := IsDirectory(tt.args.path); got != tt.want { -+ t.Errorf("IsDirectory() = %v, want %v", got, tt.want) -+ } -+ if tt.postHook != nil { -+ tt.postHook(t) -+ } -+ }) -+ } -+} --- -1.8.3.1 - diff --git a/patch/0088-bugfix-loaded-images-cover-existing-images-name-and-.patch b/patch/0088-bugfix-loaded-images-cover-existing-images-name-and-.patch deleted file mode 100644 index ad75be5..0000000 --- a/patch/0088-bugfix-loaded-images-cover-existing-images-name-and-.patch +++ /dev/null @@ -1,434 +0,0 @@ -From 6efcb2e785e452505894b0e1e589e72487439e17 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Wed, 27 Oct 2021 18:27:11 +0800 -Subject: [PATCH] bugfix: loaded images cover existing images name and tag - ---- - daemon/load.go | 114 +++++++++++++++++++++++++++++++------------- - daemon/load_test.go | 26 +++++----- - image/image.go | 66 ++++++++++++------------- - 3 files changed, 129 insertions(+), 77 deletions(-) - -diff --git a/daemon/load.go b/daemon/load.go -index 41690ab..b6d675b 100644 ---- a/daemon/load.go -+++ b/daemon/load.go -@@ -17,6 +17,8 @@ import ( - "io/ioutil" - "os" - "path/filepath" -+ "context" -+ "strings" - - "github.com/containers/image/v5/docker/tarfile" - ociarchive "github.com/containers/image/v5/oci/archive" -@@ -25,6 +27,7 @@ import ( - "github.com/containers/storage" - "github.com/containers/storage/pkg/archive" - securejoin "github.com/cyphar/filepath-securejoin" -+ digest "github.com/opencontainers/go-digest" - imgspecv1 "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -72,6 +75,12 @@ type loadOptions struct { - sep separatorLoad - } - -+type singleImage struct { -+ index int -+ id string -+ nameTag []string -+} -+ - func (b *Backend) getLoadOptions(req *pb.LoadRequest) (loadOptions, error) { - var opt = loadOptions{ - path: req.GetPath(), -@@ -119,10 +128,8 @@ func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error - "LoadID": req.GetLoadID(), - }).Info("LoadRequest received") - -- var ( -- si *storage.Image -- repoTags [][]string -- ) -+ var si *storage.Image -+ - opts, err := b.getLoadOptions(req) - if err != nil { - return errors.Wrap(err, "process load options failed") -@@ -142,7 +149,7 @@ func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error - } - } - -- repoTags, err = tryToParseImageFormatFromTarball(b.daemon.opts.DataRoot, &opts) -+ imagesInTar, err := tryToParseImageFormatFromTarball(b.daemon.opts.DataRoot, &opts) - if err != nil { - return err - } -@@ -163,24 +170,30 @@ func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error - eg.Go(func() error { - defer log.CloseContent() - -- for index, nameAndTag := range repoTags { -+ for _, singleImage := range imagesInTar { - _, si, err = image.ResolveFromImage(&image.PrepareImageOptions{ - Ctx: ctx, - FromImage: exporter.FormatTransport(opts.format, opts.path), -+ ToImage: singleImage.id, - SystemContext: image.GetSystemContext(), - Store: b.daemon.localStore, - Reporter: log, -- ManifestIndex: index, -+ ManifestIndex: singleImage.index, - }) - if err != nil { - return err - } - -- if sErr := b.daemon.localStore.SetNames(si.ID, nameAndTag); sErr != nil { -- return sErr -+ originalNames, err := b.daemon.localStore.Names(si.ID) -+ if err != nil { -+ return err -+ } -+ if err = b.daemon.localStore.SetNames(si.ID, append(originalNames, singleImage.nameTag...)); err != nil { -+ return err - } - - log.Print("Loaded image as %s\n", si.ID) -+ logrus.Infof("Loaded image as %s", si.ID) - } - - return nil -@@ -189,17 +202,11 @@ func (b *Backend) Load(req *pb.LoadRequest, stream pb.Control_LoadServer) error - if wErr := eg.Wait(); wErr != nil { - return wErr - } -- logrus.Infof("Loaded image as %s", si.ID) - - return nil - } - --func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([][]string, error) { -- var ( -- allRepoTags [][]string -- err error -- ) -- -+func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([]singleImage, error) { - // tmp dir will be removed after NewSourceFromFileWithContext - tmpDir, err := securejoin.SecureJoin(dataRoot, dataRootTmpDirPrefix) - if err != nil { -@@ -208,19 +215,21 @@ func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([][]s - systemContext := image.GetSystemContext() - systemContext.BigFilesTemporaryDir = tmpDir - -- allRepoTags, err = getDockerRepoTagFromImageTar(systemContext, opts.path) -+ // try docker format loading -+ imagesInTar, err := getDockerRepoTagFromImageTar(systemContext, opts.path) - if err == nil { - logrus.Infof("Parse image successful with %q format", constant.DockerTransport) - opts.format = constant.DockerArchiveTransport -- return allRepoTags, nil -+ return imagesInTar, nil - } - logrus.Warnf("Try to Parse image of docker format failed with error: %v", err) - -- allRepoTags, err = getOCIRepoTagFromImageTar(systemContext, opts.path) -+ // try oci format loading -+ imagesInTar, err = getOCIRepoTagFromImageTar(systemContext, opts.path) - if err == nil { - logrus.Infof("Parse image successful with %q format", constant.OCITransport) - opts.format = constant.OCIArchiveTransport -- return allRepoTags, nil -+ return imagesInTar, nil - } - logrus.Warnf("Try to parse image of oci format failed with error: %v", err) - -@@ -228,7 +237,7 @@ func tryToParseImageFormatFromTarball(dataRoot string, opts *loadOptions) ([][]s - return nil, errors.Wrap(err, "wrong image format detected from local tarball") - } - --func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([][]string, error) { -+func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([]singleImage, error) { - // tmp dir will be removed after NewSourceFromFileWithContext - tarfileSource, err := tarfile.NewSourceFromFileWithContext(systemContext, path) - if err != nil { -@@ -245,35 +254,74 @@ func getDockerRepoTagFromImageTar(systemContext *types.SystemContext, path strin - return nil, errors.Errorf("failed to get the top level image manifest: %v", err) - } - -- var allRepoTags [][]string -- for _, manifestItem := range topLevelImageManifest { -- allRepoTags = append(allRepoTags, manifestItem.RepoTags) -+ imagesInTar := make([]singleImage, 0, len(topLevelImageManifest)) -+ for i, manifestItem := range topLevelImageManifest { -+ imageID, err := parseConfigID(manifestItem.Config) -+ if err != nil { -+ return nil, err -+ } -+ imagesInTar = append(imagesInTar, singleImage{index: i, id: imageID, nameTag: manifestItem.RepoTags}) - } - -- return allRepoTags, nil -+ return imagesInTar, nil - } - --func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([][]string, error) { -- var ( -- err error -- ) -- -+func getOCIRepoTagFromImageTar(systemContext *types.SystemContext, path string) ([]singleImage, error) { - srcRef, err := alltransports.ParseImageName(exporter.FormatTransport(constant.OCIArchiveTransport, path)) - if err != nil { - return nil, errors.Wrap(err, "failed to parse image name of oci image format") - } - -+ imageID, err := getLoadedImageID(srcRef, systemContext) -+ if err != nil { -+ return nil, err -+ } - tarManifest, err := ociarchive.LoadManifestDescriptorWithContext(systemContext, srcRef) - if err != nil { - return nil, errors.Wrap(err, "failed to load manifest descriptor of oci image format") - } - -- // For now, we only support load single image in archive file -+ // For now, we only support loading oci-archive file with one single image - if _, ok := tarManifest.Annotations[imgspecv1.AnnotationRefName]; ok { -- return [][]string{{tarManifest.Annotations[imgspecv1.AnnotationRefName]}}, nil -+ return []singleImage{{0, imageID, []string{tarManifest.Annotations[imgspecv1.AnnotationRefName]}}}, nil -+ } -+ return []singleImage{{0, imageID, []string{}}}, nil -+} -+ -+func parseConfigID(configID string) (string, error) { -+ parts := strings.SplitN(configID, ".", 2) -+ if len(parts) != 2 { -+ return "", errors.New("wrong config info of manifest.json") -+ } -+ -+ configDigest := "sha256:" + digest.Digest(parts[0]) -+ if err := configDigest.Validate(); err != nil { -+ return "", errors.Wrapf(err, "failed to get config info") -+ } -+ -+ return "@" + configDigest.Encoded(), nil -+} -+ -+func getLoadedImageID(imageRef types.ImageReference, systemContext *types.SystemContext) (string, error) { -+ if imageRef == nil || systemContext == nil { -+ return "", errors.New("nil image reference or system context when loading image") -+ } -+ -+ newImage, err := imageRef.NewImage(context.TODO(), systemContext) -+ if err != nil { -+ return "", err -+ } -+ defer func() { -+ if err = newImage.Close(); err != nil { -+ logrus.Errorf("failed to close image: %v", err) -+ } -+ }() -+ imageDigest := newImage.ConfigInfo().Digest -+ if err = imageDigest.Validate(); err != nil { -+ return "", errors.Wrap(err, "failed to get config info") - } - -- return [][]string{{}}, nil -+ return "@" + imageDigest.Encoded(), nil - } - - func loadSeparatedImage(opt *loadOptions) error { -diff --git a/daemon/load_test.go b/daemon/load_test.go -index cbcb5d8..860b897 100644 ---- a/daemon/load_test.go -+++ b/daemon/load_test.go -@@ -31,9 +31,9 @@ import ( - ) - - const ( -- loadedTarFile = "load.tar" -+ loadedTarFile = "load.tar" - manifestJSONFile = "manifest.json" -- indexJSONFile = "index.json" -+ indexJSONFile = "index.json" - ) - - var ( -@@ -167,8 +167,10 @@ func TestLoadSingleImage(t *testing.T) { - } - ] - }`, -- format: "oci", -- withTag: true, -+ format: "oci", -+ withTag: true, -+ wantErr: true, -+ errString: "no such file or directory", - }, - { - name: "TC3 normal case load docker tar with no RepoTags", -@@ -197,8 +199,10 @@ func TestLoadSingleImage(t *testing.T) { - } - ] - }`, -- format: "oci", -- withTag: false, -+ format: "oci", -+ withTag: false, -+ wantErr: true, -+ errString: "no such file or directory", - }, - { - name: "TC5 abnormal case load docker tar with wrong manifestJSON", -@@ -217,7 +221,7 @@ func TestLoadSingleImage(t *testing.T) { - format: "docker", - withTag: true, - wantErr: true, -- errString: "error loading index", -+ errString: "no such file or directory", - }, - { - name: "TC6 abnormal case with wrong tar path", -@@ -312,10 +316,10 @@ func TestLoadMultipleImages(t *testing.T) { - path := dir.Join(loadedTarFile) - repoTags, err := tryToParseImageFormatFromTarball(daemon.opts.DataRoot, &loadOptions{path: path}) - assert.NilError(t, err) -- assert.Equal(t, repoTags[0][0], "registry.example.com/sayhello:first") -- assert.Equal(t, repoTags[1][0], "registry.example.com/sayhello:second") -- assert.Equal(t, repoTags[1][1], "registry.example.com/sayhello:third") -- assert.Equal(t, len(repoTags[2]), 0) -+ assert.Equal(t, repoTags[0].nameTag[0], "registry.example.com/sayhello:first") -+ assert.Equal(t, repoTags[1].nameTag[0], "registry.example.com/sayhello:second") -+ assert.Equal(t, repoTags[1].nameTag[1], "registry.example.com/sayhello:third") -+ assert.Equal(t, len(repoTags[2].nameTag), 0) - - req := &pb.LoadRequest{Path: path} - stream := &controlLoadServer{} -diff --git a/image/image.go b/image/image.go -index 5dda185..b24cb41 100644 ---- a/image/image.go -+++ b/image/image.go -@@ -37,7 +37,6 @@ import ( - "github.com/containers/image/v5/transports/alltransports" - "github.com/containers/image/v5/types" - "github.com/containers/storage" -- "github.com/containers/storage/pkg/stringid" - "github.com/opencontainers/go-digest" - "github.com/pkg/errors" - "github.com/sirupsen/logrus" -@@ -55,6 +54,7 @@ type PrepareImageOptions struct { - SystemContext *types.SystemContext - Ctx context.Context - FromImage string -+ ToImage string - Store *store.Store - Reporter io.Writer - ManifestIndex int -@@ -125,20 +125,17 @@ func PullAndGetImageInfo(opt *PrepareImageOptions) (types.ImageReference, *stora - } - - if transport == "" { -- // if the image can be obtained from the local storage by image id, -- // then only one image can be obtained. -+ // if the image can be obtained from the local storage by image id, then only one image can be obtained. - if len(candidates) != 1 { - return nil, nil, errors.New("transport is empty and multi or no image be found") - } -- img, err := opt.Store.Image(candidates[0]) -- if err != nil { -- pLog.Errorf("Failed to find the image %q in local store: %v", candidates[0], err) -- return nil, nil, err -- } -- ref, err := is.Transport.ParseStoreReference(opt.Store, img.ID) -- if err != nil { -- return nil, nil, errors.Wrapf(err, "failed to get the ref in store by %q", candidates[0]) -+ -+ ref, img, fErr := FindImage(opt.Store, candidates[0]) -+ if fErr != nil { -+ pLog.Errorf("Failed to find the image %q in local store: %v", candidates[0], fErr) -+ return nil, nil, fErr - } -+ - pLog.Infof("Get image from local store first search by %q", opt.FromImage) - return ref, img, nil - } -@@ -147,25 +144,33 @@ func PullAndGetImageInfo(opt *PrepareImageOptions) (types.ImageReference, *stora - var errPull error - for _, strImage := range candidates { - var ( -- srcRef types.ImageReference -- pErr error -+ srcRef types.ImageReference -+ destImage string - ) - - imageName := exporter.FormatTransport(transport, strImage) -- if transport == constant.DockerArchiveTransport { -- srcRef, pErr = alltransports.ParseImageName(imageName + ":@" + strconv.Itoa(opt.ManifestIndex)) -- } else { -- srcRef, pErr = alltransports.ParseImageName(imageName) -- } -- if pErr != nil { -- pLog.Debugf("Failed to parse the image %q: %v", imageName, pErr) -- continue -- } -- -- destImage, err := getLocalImageNameFromRef(opt.Store, srcRef) -- if err != nil { -- pLog.Debugf("Failed to get local image name for %q: %v", imageName, err) -- continue -+ switch transport { -+ case constant.DockerArchiveTransport: -+ if srcRef, err = alltransports.ParseImageName(imageName + ":@" + strconv.Itoa(opt.ManifestIndex)); err != nil { -+ pLog.Debugf("Failed to parse the image %q with %q transport: %v", imageName, constant.DockerArchiveTransport, err) -+ continue -+ } -+ destImage = opt.ToImage -+ case constant.OCIArchiveTransport: -+ if srcRef, err = alltransports.ParseImageName(imageName); err != nil { -+ pLog.Debugf("Failed to parse the image %q with %q transport: %v", imageName, constant.OCIArchiveTransport, err) -+ continue -+ } -+ destImage = opt.ToImage -+ default: -+ if srcRef, err = alltransports.ParseImageName(imageName); err != nil { -+ pLog.Debugf("Failed to get local image name for %q: %v", imageName, err) -+ continue -+ } -+ if destImage, err = getLocalImageNameFromRef(srcRef); err != nil { -+ pLog.Debugf("Failed to parse store reference for %q: %v", destImage, err) -+ continue -+ } - } - - destRef, err := is.Transport.ParseStoreReference(opt.Store, destImage) -@@ -173,7 +178,6 @@ func PullAndGetImageInfo(opt *PrepareImageOptions) (types.ImageReference, *stora - pLog.Debugf("Failed to parse store reference for %q: %v", destImage, err) - continue - } -- - img, err := is.Transport.GetStoreImage(opt.Store, destRef) - if err == nil { - // find the unique image in local store by name or digest -@@ -246,14 +250,10 @@ func instantiatingImage(ctx context.Context, sc *types.SystemContext, ref types. - return baseImg, nil - } - --func getLocalImageNameFromRef(store storage.Store, srcRef types.ImageReference) (string, error) { -+func getLocalImageNameFromRef(srcRef types.ImageReference) (string, error) { - if srcRef == nil { - return "", errors.Errorf("reference to image is empty") - } -- -- if err := exporter.CheckArchiveFormat(srcRef.Transport().Name()); err == nil { -- return stringid.GenerateRandomID() + ":" + stringid.GenerateRandomID(), nil -- } - if srcRef.Transport().Name() != constant.DockerTransport { - return "", errors.Errorf("the %s transport is not supported yet", srcRef.Transport().Name()) - } --- -2.27.0 - diff --git a/patch/0089-isula-build-fix-panic-when-using-image-ID-to-save-se.patch b/patch/0089-isula-build-fix-panic-when-using-image-ID-to-save-se.patch deleted file mode 100644 index 02188a7..0000000 --- a/patch/0089-isula-build-fix-panic-when-using-image-ID-to-save-se.patch +++ /dev/null @@ -1,305 +0,0 @@ -From 2b845fdb3e3c9d23b0fec856bcd5ce8ced868683 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Thu, 4 Nov 2021 14:38:20 +0800 -Subject: [PATCH] isula-build:fix panic when using image ID to save separated - image - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - daemon/save.go | 120 +++++++++++++-------- - .../src/cover_test_save_separated_image_failed.sh | 28 +++++ - .../src/cover_test_save_separated_image_success.sh | 24 ++++- - 3 files changed, 127 insertions(+), 45 deletions(-) - -diff --git a/daemon/save.go b/daemon/save.go -index 9ad4e03..9c5e563 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -83,6 +83,7 @@ type separatorSave struct { - base string - lib string - dest string -+ renameFile string - enabled bool - } - -@@ -141,15 +142,7 @@ type tarballInfo struct { - BaseLayers []string `json:"baseLayer"` - } - --func (b *Backend) getSaveOptions(req *pb.SaveRequest) (saveOptions, error) { -- var sep = separatorSave{ -- base: req.GetSep().GetBase(), -- lib: req.GetSep().GetLib(), -- dest: req.GetSep().GetDest(), -- log: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID()}), -- enabled: req.GetSep().GetEnabled(), -- } -- -+func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { - var opt = saveOptions{ - sysCtx: image.GetSystemContext(), - localStore: b.daemon.localStore, -@@ -161,11 +154,19 @@ func (b *Backend) getSaveOptions(req *pb.SaveRequest) (saveOptions, error) { - outputPath: req.GetPath(), - logger: logger.NewCliLogger(constant.CliLogBufferLen), - logEntry: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID(), "Format": req.GetFormat()}), -- sep: sep, - } - // normal save -- if !sep.enabled { -- return opt, nil -+ if !req.GetSep().GetEnabled() { -+ return opt -+ } -+ -+ opt.sep = separatorSave{ -+ base: req.GetSep().GetBase(), -+ lib: req.GetSep().GetLib(), -+ dest: req.GetSep().GetDest(), -+ log: logrus.WithFields(logrus.Fields{"SaveID": req.GetSaveID()}), -+ enabled: req.GetSep().GetEnabled(), -+ renameFile: req.GetSep().GetRename(), - } - - // save separated image -@@ -175,44 +176,22 @@ func (b *Backend) getSaveOptions(req *pb.SaveRequest) (saveOptions, error) { - baseDir := filepath.Join(tmpRoot, baseUntarTempDirName) - libDir := filepath.Join(tmpRoot, libUntarTempDirName) - -- opt.sep.tmpDir = imageTmpDir{ -- app: appDir, -- base: baseDir, -- lib: libDir, -- untar: untar, -- root: tmpRoot, -- } -+ opt.sep.tmpDir = imageTmpDir{app: appDir, base: baseDir, lib: libDir, untar: untar, root: tmpRoot} - opt.outputPath = filepath.Join(untar, unionTarName) -- renameFile := req.GetSep().GetRename() -- if len(renameFile) != 0 { -- var reName []renames -- if err := util.LoadJSONFile(renameFile, &reName); err != nil { -- return saveOptions{}, err -- } -- opt.sep.renameData = reName -- } - -- return opt, nil -+ return opt - } - - // Save receives a save request and save the image(s) into tarball --func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) error { -+func (b *Backend) Save(req *pb.SaveRequest, stream pb.Control_SaveServer) (err error) { - logrus.WithFields(logrus.Fields{ - "SaveID": req.GetSaveID(), - "Format": req.GetFormat(), - }).Info("SaveRequest received") - -- var err error -- opts, err := b.getSaveOptions(req) -- if err != nil { -- return errors.Wrap(err, "process save options failed") -- } -- -- if err = checkFormat(&opts); err != nil { -- return err -- } -- if err = filterImageName(&opts); err != nil { -- return err -+ opts := b.getSaveOptions(req) -+ if err = opts.check(); err != nil { -+ return errors.Wrap(err, "check save options failed") - } - - defer func() { -@@ -299,7 +278,47 @@ func messageHandler(stream pb.Control_SaveServer, cliLogger *logger.Logger) func - } - } - --func checkFormat(opts *saveOptions) error { -+func (opts *saveOptions) check() error { -+ if err := opts.checkImageNameIsID(); err != nil { -+ return err -+ } -+ if err := opts.checkFormat(); err != nil { -+ return err -+ } -+ if err := opts.filterImageName(); err != nil { -+ return err -+ } -+ if err := opts.checkRenameFile(); err != nil { -+ return err -+ } -+ -+ return nil -+} -+ -+func (opts *saveOptions) checkImageNameIsID() error { -+ imageNames := opts.oriImgList -+ if opts.sep.enabled { -+ if len(opts.sep.base) != 0 { -+ imageNames = append(imageNames, opts.sep.base) -+ } -+ if len(opts.sep.lib) != 0 { -+ imageNames = append(imageNames, opts.sep.lib) -+ } -+ } -+ for _, name := range imageNames { -+ _, img, err := image.FindImage(opts.localStore, name) -+ if err != nil { -+ return errors.Wrapf(err, "check image name failed when finding image name %q", name) -+ } -+ if strings.HasPrefix(img.ID, name) && opts.sep.enabled { -+ return errors.Errorf("using image ID %q as image name to save separated image is not allowed", name) -+ } -+ } -+ -+ return nil -+} -+ -+func (opts *saveOptions) checkFormat() error { - switch opts.format { - case constant.DockerTransport: - opts.format = constant.DockerArchiveTransport -@@ -312,7 +331,7 @@ func checkFormat(opts *saveOptions) error { - return nil - } - --func filterImageName(opts *saveOptions) error { -+func (opts *saveOptions) filterImageName() error { - if opts.format == constant.OCIArchiveTransport { - opts.finalImageOrdered = opts.oriImgList - return nil -@@ -350,6 +369,18 @@ func filterImageName(opts *saveOptions) error { - return nil - } - -+func (opts *saveOptions) checkRenameFile() error { -+ if len(opts.sep.renameFile) != 0 { -+ var reName []renames -+ if err := util.LoadJSONFile(opts.sep.renameFile, &reName); err != nil { -+ return errors.Wrap(err, "check rename file failed") -+ } -+ opts.sep.renameData = reName -+ } -+ -+ return nil -+} -+ - func getLayerHashFromStorage(store *store.Store, name string) ([]string, error) { - if len(name) == 0 { - return nil, nil -@@ -770,6 +801,11 @@ func getLayersID(layer []string) []string { - - func (s *separatorSave) constructSingleImgInfo(mani imageManifest, store *store.Store) (imageInfo, error) { - var libLayers, appLayers []string -+ // image name should not be empty here -+ if len(mani.RepoTags) == 0 { -+ return imageInfo{}, errors.New("image name and tag is empty") -+ } -+ // if there is more than one repoTag, will use first one as image name - imageRepoFields := strings.Split(mani.RepoTags[0], ":") - imageLayers := getLayersID(mani.Layers) - -diff --git a/tests/src/cover_test_save_separated_image_failed.sh b/tests/src/cover_test_save_separated_image_failed.sh -index c64dcf5..66db580 100644 ---- a/tests/src/cover_test_save_separated_image_failed.sh -+++ b/tests/src/cover_test_save_separated_image_failed.sh -@@ -89,6 +89,33 @@ function test_run6() { - rm -rf "${workspace}"/Images - } - -+# using image id to save -+function test_run7() { -+ base_image_id=$(isula-build ctr-img images ${base_image_name} | tail -n 2 | head -n 1 | awk '{print $3}') -+ lib_image_id=$(isula-build ctr-img images ${lib_image_name} | tail -n 2 | head -n 1 | awk '{print $3}') -+ app_image_id=$(isula-build ctr-img images ${app1_image_name} | tail -n 2 | head -n 1 | awk '{print $3}') -+ app1_image_id=$(isula-build ctr-img images ${app2_image_name} | tail -n 2 | head -n 1 | awk '{print $3}') -+ # all name is image id -+ isula-build ctr-img save -b "${base_image_id}" -l "${lib_image_id}" -d "${workspace}"/Images "${app1_image_id}" "${app2_image_id}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+ -+ # app name is image id -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images "${app1_image_id}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+ -+ # lib name is image id -+ isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_id}" -d "${workspace}"/Images "${app1_image_name}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+ -+ # base name is image id -+ isula-build ctr-img save -b "${base_image_id}" -l "${lib_image_name}" -d "${workspace}"/Images "${app1_image_name}" "${app2_image_name}" -+ check_result_not_equal $? 0 -+ rm -rf "${workspace}"/Images -+} -+ - function cleanup() { - rm -rf "${workspace}" - isula-build ctr-img rm "${bad_lib_image_name}" "${bad_app1_image_name}" "${bad_app2_image_name}" "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -@@ -102,6 +129,7 @@ test_run3 - test_run4 - test_run5 - test_run6 -+test_run7 - cleanup - # shellcheck disable=SC2154 - exit "${exit_flag}" -diff --git a/tests/src/cover_test_save_separated_image_success.sh b/tests/src/cover_test_save_separated_image_success.sh -index 2095bd3..68d2cae 100644 ---- a/tests/src/cover_test_save_separated_image_success.sh -+++ b/tests/src/cover_test_save_separated_image_success.sh -@@ -26,6 +26,11 @@ function pre_run() { - lib_image_name="lib:latest" - app1_image_name="app1:latest" - app2_image_name="app2:latest" -+ base_image_short_name="b:latest" -+ lib_image_short_name="l:latest" -+ app1_image_short_name="a:latest" -+ app2_image_short_name="c:latest" -+ - lib_layer_number=5 - app1_layer_number=4 - app2_layer_number=3 -@@ -37,18 +42,31 @@ function pre_run() { - build_image "${app2_image_name}" "${workspace}" - } - --function test_run() { -+function test_run1() { - isula-build ctr-img save -b "${base_image_name}" -l "${lib_image_name}" -d "${workspace}"/Images "${app1_image_name}" "${app2_image_name}" - check_result_equal $? 0 -+ rm -rf "${workspace}" -+} -+ -+# use short image name -+function test_run2() { -+ isula-build ctr-img tag "${base_image_name}" "${base_image_short_name}" -+ isula-build ctr-img tag "${lib_image_name}" "${lib_image_short_name}" -+ isula-build ctr-img tag "${app1_image_name}" "${app1_image_short_name}" -+ isula-build ctr-img tag "${app2_image_name}" "${app2_image_short_name}" -+ isula-build ctr-img save -b "${base_image_short_name}" -l "${lib_image_short_name}" -d "${workspace}"/Images "${app1_image_short_name}" "${app2_image_short_name}" -+ check_result_equal $? 0 -+ rm -rf "${workspace}" - } - - function cleanup() { - rm -rf "${workspace}" -- isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" -+ isula-build ctr-img rm "${lib_image_name}" "${app1_image_name}" "${app2_image_name}" "${base_image_short_name}" "${lib_image_short_name}" "${app1_image_short_name}" "${app2_image_short_name}" - } - - pre_run --test_run -+test_run1 -+test_run2 - cleanup - # shellcheck disable=SC2154 - exit "${exit_flag}" --- -1.8.3.1 - diff --git a/patch/0090-enhancement-add-log-info-to-show-the-image-layer-num.patch b/patch/0090-enhancement-add-log-info-to-show-the-image-layer-num.patch deleted file mode 100644 index c2e1262..0000000 --- a/patch/0090-enhancement-add-log-info-to-show-the-image-layer-num.patch +++ /dev/null @@ -1,117 +0,0 @@ -From 38bed99e8cb58ad3c7fe0ef386c66c558d16b569 Mon Sep 17 00:00:00 2001 -From: DCCooper <1866858@gmail.com> -Date: Tue, 9 Nov 2021 19:18:45 +0800 -Subject: [PATCH] enhancement: add log info to show the image layer number - -reason: when save separated image, the layer number should be -printed out into log - -Signed-off-by: DCCooper <1866858@gmail.com> ---- - daemon/save.go | 18 +++++++++++++----- - hack/unit_test.sh | 6 ++++-- - 2 files changed, 17 insertions(+), 7 deletions(-) - -diff --git a/daemon/save.go b/daemon/save.go -index 9c5e563..f14a485 100644 ---- a/daemon/save.go -+++ b/daemon/save.go -@@ -139,7 +139,7 @@ type tarballInfo struct { - BaseTarName string `json:"base"` - BaseHash string `json:"baseHash"` - BaseImageName string `json:"baseImageName"` -- BaseLayers []string `json:"baseLayer"` -+ BaseLayer string `json:"baseLayer"` - } - - func (b *Backend) getSaveOptions(req *pb.SaveRequest) saveOptions { -@@ -381,7 +381,7 @@ func (opts *saveOptions) checkRenameFile() error { - return nil - } - --func getLayerHashFromStorage(store *store.Store, name string) ([]string, error) { -+func (s *separatorSave) getLayerHashFromStorage(store *store.Store, name string) ([]string, error) { - if len(name) == 0 { - return nil, nil - } -@@ -632,8 +632,11 @@ func (info imageInfo) processTarName(suffix string) string { - func (info *imageInfo) processBaseImg(sep *separatorSave, baseImagesMap map[string]string, tarball *tarballInfo) error { - // process base - tarball.BaseImageName = sep.base -+ if len(info.layers.base) != 0 { -+ sep.log.Infof("Base image %s has %d layers", sep.base, len(info.layers.base)) -+ tarball.BaseLayer = info.layers.base[0] -+ } - for _, layerID := range info.layers.base { -- tarball.BaseLayers = append(tarball.BaseLayers, layerID) - if baseImg, ok := baseImagesMap[layerID]; !ok { - srcLayerPath := filepath.Join(sep.tmpDir.untar, layerID) - destLayerPath := filepath.Join(sep.tmpDir.base, layerID) -@@ -673,6 +676,7 @@ func (info *imageInfo) processLibImg(sep *separatorSave, libImagesMap map[string - } - - tarball.LibImageName = sep.lib -+ sep.log.Infof("Lib image %s has %d layers", sep.lib, len(info.layers.lib)) - for _, layerID := range info.layers.lib { - tarball.LibLayers = append(tarball.LibLayers, layerID) - if libImg, ok := libImagesMap[layerID]; !ok { -@@ -709,6 +713,7 @@ func (info *imageInfo) processLibImg(sep *separatorSave, libImagesMap map[string - - func (info *imageInfo) processAppImg(sep *separatorSave, appImagesMap map[string]string, tarball *tarballInfo) error { - // process app -+ sep.log.Infof("App image %s has %d layers", info.nameTag, len(info.layers.app)) - appTarName := info.processTarName(appTarNameSuffix) - appTarName = sep.rename(appTarName) - appTarPath := filepath.Join(sep.dest, appTarName) -@@ -834,14 +839,17 @@ func (s *separatorSave) constructSingleImgInfo(mani imageManifest, store *store. - } - - func (s *separatorSave) checkLayersHash(layerHashMap map[string]string, store *store.Store) ([]string, []string, error) { -- libHash, err := getLayerHashFromStorage(store, s.lib) -+ libHash, err := s.getLayerHashFromStorage(store, s.lib) - if err != nil { - return nil, nil, errors.Wrapf(err, "get lib image %s layers failed", s.lib) - } -- baseHash, err := getLayerHashFromStorage(store, s.base) -+ baseHash, err := s.getLayerHashFromStorage(store, s.base) - if err != nil { - return nil, nil, errors.Wrapf(err, "get base image %s layers failed", s.base) - } -+ if len(baseHash) > 1 { -+ return nil, nil, errors.Errorf("number of base layers %d more than one", len(baseHash)) -+ } - if len(libHash) >= len(layerHashMap) || len(baseHash) >= len(layerHashMap) { - return nil, nil, errors.Errorf("number of base or lib layers is equal or greater than saved app layers") - } -diff --git a/hack/unit_test.sh b/hack/unit_test.sh -index 161feb6..b6a7978 100755 ---- a/hack/unit_test.sh -+++ b/hack/unit_test.sh -@@ -28,6 +28,8 @@ go_test_mod_method="-mod=vendor" - go_test_count_method="-count=1" - go_test_timeout_flag="-timeout=300s" - go_test_race_flag="-race" -+go_test_covermode_flag="-covermode=atomic" -+go_test_coverprofile_flag="-coverprofile=/dev/null" - - function precheck() { - if pgrep isula-builder > /dev/null 2>&1; then -@@ -54,13 +56,13 @@ function run_unit_test() { - echo "Start to test: ${package}" - if [[ -n ${run_coverage} ]]; then - coverprofile_file="${covers_folder}/$(echo "${package}" | tr / -).cover" -- coverprofile_flag="-coverprofile=${coverprofile_file}" -+ go_test_coverprofile_flag="-coverprofile=${coverprofile_file}" - go_test_covermode_flag="-covermode=set" - go_test_race_flag="" - fi - # TEST_ARGS is " -args SKIP_REG=foo", so no double quote for it - # shellcheck disable=SC2086 -- go test -v ${go_test_race_flag} "${go_test_mod_method}" ${coverprofile_flag} "${go_test_covermode_flag}" -coverpkg=${package} "${go_test_count_method}" "${go_test_timeout_flag}" "${package}" ${TEST_ARGS} >> "${testlog}" -+ go test -v "${go_test_race_flag}" "${go_test_mod_method}" "${go_test_coverprofile_flag}" "${go_test_covermode_flag}" -coverpkg=${package} "${go_test_count_method}" "${go_test_timeout_flag}" "${package}" ${TEST_ARGS} >> "${testlog}" - done - - if grep -E -- "--- FAIL:|^FAIL" "${testlog}"; then --- -1.8.3.1 - diff --git a/patch/0091-add-repo-to-local-image-when-output-transporter-is-d.patch b/patch/0091-add-repo-to-local-image-when-output-transporter-is-d.patch deleted file mode 100644 index 21b55d3..0000000 --- a/patch/0091-add-repo-to-local-image-when-output-transporter-is-d.patch +++ /dev/null @@ -1,45 +0,0 @@ -From c39db6aff78c1da4d6004c5ea92058121e706092 Mon Sep 17 00:00:00 2001 -From: xingweizheng -Date: Wed, 27 Oct 2021 20:13:59 +0800 -Subject: [PATCH] add repo to local image when output transporter is docker:// - ---- - builder/dockerfile/builder.go | 2 +- - builder/dockerfile/builder_test.go | 4 ++-- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go -index df8c6ce..7fff71b 100644 ---- a/builder/dockerfile/builder.go -+++ b/builder/dockerfile/builder.go -@@ -627,7 +627,7 @@ func parseOutputTag(output string) string { - if repo == "" { - return "" - } -- tag = repoAndTag[len(repo):] -+ tag = strings.TrimLeft(repoAndTag, "/") - } - - return tag -diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go -index c2fec6c..20cca43 100644 ---- a/builder/dockerfile/builder_test.go -+++ b/builder/dockerfile/builder_test.go -@@ -1300,12 +1300,12 @@ func TestParseTag(t *testing.T) { - { - name: "docker output", - output: "docker://localhost:5000/isula/test:latest", -- tag: "isula/test:latest", -+ tag: "localhost:5000/isula/test:latest", - }, - { - name: "docker output", - output: "docker://localhost:5000/isula/test", -- tag: "isula/test", -+ tag: "localhost:5000/isula/test", - }, - { - name: "invalid docker output", --- -1.8.3.1 - diff --git a/series.conf b/series.conf index 6cefad0..01bcda6 100644 --- a/series.conf +++ b/series.conf @@ -1,56 +1,2 @@ -patch/0013-vendor-change-auth.json-file-mode-from-0700-to-0600.patch patch/0030-xattr-support-ima-and-evm.patch patch/0033-isula-build-remove-docker-releated-path-for-authenti.patch -patch/0037-isula-build-fix-goroutine-leak-problem.patch -patch/0039-bugfix-remove-Healthcheck-field-when-build-from-scra.patch -patch/0040-vendor-update-tabulate-vendor-to-support-eliminate-s.patch -patch/0041-enhancement-remove-empty-lines-when-showing-image-li.patch -patch/0042-fix-some-make-checkall-golangci-lint-flaws.patch -patch/0043-enhancement-add-go-test-for-RUN-panic-problem.patch -patch/0044-fix-load-oci-image-panic.patch -patch/0045-fix-images-command-when-only-give-repository.patch -patch/0046-check-if-add-default-tag-to-image-name-when-using-pu.patch -patch/0047-checkAndExpandTag-return-empty-when-tag-is-empty.patch -patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch -patch/0049-fix-data-and-run-root-not-effective-when-setting-con.patch -patch/0050-data-and-run-root-set-unit-test.patch -patch/0051-bugfix-set-user-s-uid-and-gid-for-containers.patch -patch/0052-hack-make-isula-build-binary-static.patch -patch/0053-integration-test-from-new-flaw-of-run-and-data-root-.patch -patch/0054-isula-build-cleancode-for-errors.Wrap-function.patch -patch/0055-isula-build-change-isula-build-file-mode.patch -patch/0056-isula-build-update-documents-about-file-mode.patch -patch/0057-bugfix-pidofbuilder-do-not-set-when-running-a-new-ba.patch -patch/0058-shellcheck-fix-of-common.sh.patch -patch/0059-bugfix-fix-save-multiple-tags-single-image-failed.patch -patch/0060-add-integration-test-for-saving-one-image-with-multi.patch -patch/0061-fix-save-single-image-error-when-id-first-with-its-n.patch -patch/0062-clean-code-staticcheck-fix-of-S1020-S1023-SA9003-S10.patch -patch/0063-relocation-exporter-package-and-remove-unused-const.patch -patch/0064-clean-code-tidy-FindImage-function.patch -patch/0065-clean-code-delete-channel-within-the-same-goroutine.patch -patch/0067-fix-golangci-lint-warnings.patch -patch/0068-change-golangci-lint-config-and-remove-redundant-che.patch -patch/0069-make-add-make-info-for-Makefile.patch -patch/0070-clean-code-all-latest-tag-checks-take-the-FindImage-.patch -patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch -patch/0072-protocol-define-separator-protocol.patch -patch/0073-cli-finish-client-save-separated-image.patch -patch/0074-daemon-finish-daemon-save-separated-image.patch -patch/0075-cli-finish-client-load-separated-image.patch -patch/0076-daemon-finish-daemon-load-separated-image.patch -patch/0077-test-optimize-save-client-options-and-add-unit-test.patch -patch/0078-test-optimize-load-client-options-and-add-unit-test.patch -patch/0079-bugfix-fix-when-load-separated-image-error-return.patch -patch/0080-util-add-unit-test-for-file.go.patch -patch/0081-test-cleancode-test-for-better-experience.patch -patch/0082-test-optimize-scripts-in-hack.patch -patch/0083-test-add-common-function-for-testing-separated-image.patch -patch/0084-test-add-integration-tests-for-saving-and-loading-se.patch -patch/0085-util-add-unit-test-for-increment-util-functions.patch -patch/0086-bugfix-fix-random-sequence-for-saving-separated-imag.patch -patch/0087-bugfix-optimize-function-IsExist.patch -patch/0088-bugfix-loaded-images-cover-existing-images-name-and-.patch -patch/0089-isula-build-fix-panic-when-using-image-ID-to-save-se.patch -patch/0090-enhancement-add-log-info-to-show-the-image-layer-num.patch -patch/0091-add-repo-to-local-image-when-output-transporter-is-d.patch diff --git a/v0.9.5.tar.gz b/v0.9.5.tar.gz deleted file mode 100644 index 3dd305479c18bd24906f9195e84ee4f3a817fa43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5434528 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�qvA| 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 zº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�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

hxWSxbtK@4 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

@?sx8vfZ*x%LoG`YXC25R4bLJA4-->)sPev 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 z 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

T~j>Q)-?} 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¬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

m7tdi)CrfWO`s+2RJ+JPPaOs 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≤}QLn7n^x8pXEdRgH`Qvm3u+;qSoqH2&*-TeY^nO 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

@}5^Y%^Whv=K9dk6^kBMq>f?WOhn-Oc{m+HQE% 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