Date   

Re: [hardknott][PATCH] containerd: fix CVE-2021-3121

Trevor Gamblin
 


On 2021-04-23 12:30 p.m., Martin Jansa wrote:

[Please note: This e-mail is from an EXTERNAL e-mail address]

This seems to introduce:
ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: Fuzz detected:

Applying patch CVE-2021-3121.patch
patching file src/import/api/events/container.pb.go
patching file src/import/api/events/content.pb.go
patching file src/import/api/events/image.pb.go
patching file src/import/api/events/namespace.pb.go
patching file src/import/api/events/snapshot.pb.go
patching file src/import/api/events/task.pb.go
patching file src/import/api/services/containers/v1/containers.pb.go
patching file src/import/api/services/content/v1/content.pb.go
patching file src/import/api/services/diff/v1/diff.pb.go
patching file src/import/api/services/events/v1/events.pb.go
patching file src/import/api/services/images/v1/images.pb.go
patching file src/import/api/services/introspection/v1/introspection.pb.go
patching file src/import/api/services/leases/v1/leases.pb.go
patching file src/import/api/services/namespaces/v1/namespace.pb.go
patching file src/import/api/services/snapshots/v1/snapshots.pb.go
patching file src/import/api/services/tasks/v1/tasks.pb.go
Hunk #1 succeeded at 9 with fuzz 2.
patching file src/import/api/services/ttrpc/events/v1/events.pb.go
patching file src/import/api/services/version/v1/version.pb.go
patching file src/import/api/types/descriptor.pb.go
patching file src/import/api/types/metrics.pb.go
patching file src/import/api/types/mount.pb.go
patching file src/import/api/types/platform.pb.go
patching file src/import/api/types/task/task.pb.go
patching file src/import/runtime/linux/runctypes/runc.pb.go
patching file src/import/runtime/v1/shim/v1/shim.pb.go
patching file src/import/runtime/v2/runc/options/oci.pb.go
patching file src/import/runtime/v2/task/shim.pb.go
Hunk #1 succeeded at 10 with fuzz 1.
patching file src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
patching file src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
patching file src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go


The context lines in the patches can be updated with devtool:

    devtool modify containerd-opencontainers
    devtool finish --force-patch-refresh containerd-opencontainers <layer_path>

Don't forget to review changes done by devtool!

ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: QA Issue: Patch log indicates that patches do not apply cleanly. [patch-fuzz]

will send a fix shortly unless you're already cooking one.
Oof, didn't notice when I sent it in. I'll fix it up, no worries.

On Tue, Apr 20, 2021 at 11:01 PM Bruce Ashfield <bruce.ashfield@...> wrote:

In message: [meta-virtualization][hardknott][PATCH] containerd: fix CVE-2021-3121
on 20/04/2021 Trevor Gamblin wrote:

> The master branch contains an uprev for containerd that includes the
> fix, so backport the patch separately for hardknott.
>
> Tested by pulling a hello-world image with podman to
> core-image-full-cmdline, with the following added to local.conf:
>
> DISTRO_FEATURES_append = " systemd seccomp"
> VIRTUAL-RUNTIME_init_manager = "systemd"
> DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
> VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
> NETWORK_MANAGER = "systemd"
> IMAGE_ROOTFS_EXTRA_SPACE = "8192000"
> PREFERRED_PROVIDER_virtual/containerd = "containerd-opencontainers"
> IMAGE_INSTALL_append = " podman virtual/containerd"

Thanks for the fix! I've queued it for hardknott.

Bruce

>
> Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> ---
>  .../containerd-opencontainers_git.bb          |    1 +
>  .../containerd/files/CVE-2021-3121.patch      | 4035 +++++++++++++++++
>  2 files changed, 4036 insertions(+)
>  create mode 100644 recipes-containers/containerd/files/CVE-2021-3121.patch
>
> diff --git a/recipes-containers/containerd/containerd-opencontainers_git.bb b/recipes-containers/containerd/containerd-opencontainers_git.bb
> index efa3626..9d33676 100644
> --- a/recipes-containers/containerd/containerd-opencontainers_git.bb
> +++ b/recipes-containers/containerd/containerd-opencontainers_git.bb
> @@ -9,6 +9,7 @@ SRCREV = "33d90b72d1e44987118ac111d4f7a108d412099b"
>  SRC_URI = "git://github.com/containerd/containerd;branch=release/1.4 \
>             file://0001-build-use-oe-provided-GO-and-flags.patch \
>             file://0001-Add-build-option-GODEBUG-1.patch \
> +           file://CVE-2021-3121.patch \
>            "

>  # Apache-2.0 for containerd
> diff --git a/recipes-containers/containerd/files/CVE-2021-3121.patch b/recipes-containers/containerd/files/CVE-2021-3121.patch
> new file mode 100644
> index 0000000..1a2c0f4
> --- /dev/null
> +++ b/recipes-containers/containerd/files/CVE-2021-3121.patch
> @@ -0,0 +1,4035 @@
> +From 9bd7f1043ce566d4600a8c61cd45bc99b2b17e36 Mon Sep 17 00:00:00 2001
> +From: Trevor Gamblin <trevor.gamblin@...>
> +Date: Tue, 20 Apr 2021 11:21:08 -0400
> +Subject: [PATCH] CVE-2021-3121
> +
> +Backports the fix at https://github.com/containerd/containerd/commit/1423e919,
> +but with extra refactors for pulled in from later versions to make the
> +fix apply correctly.
> +
> +Upstream-Status: Backport
> +CVE: CVE-2021-3121
> +
> +Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> +---
> + src/import/api/events/container.pb.go                    |  22 +-
> + src/import/api/events/content.pb.go                      |   5 +-
> + src/import/api/events/image.pb.go                        |  19 +-
> + src/import/api/events/namespace.pb.go                    |  19 +-
> + src/import/api/events/snapshot.pb.go                     |  15 +-
> + src/import/api/events/task.pb.go                         |  55 +-
> + src/import/api/services/containers/v1/containers.pb.go   |  64 +--
> + src/import/api/services/content/v1/content.pb.go         |  94 +---
> + src/import/api/services/diff/v1/diff.pb.go               |  24 +-
> + src/import/api/services/events/v1/events.pb.go           |  20 +-
> + src/import/api/services/images/v1/images.pb.go           |  52 +-
> + src/import/.../introspection/v1/introspection.pb.go      |  22 +-
> + src/import/api/services/leases/v1/leases.pb.go           |  59 +--
> + src/import/api/services/namespaces/v1/namespace.pb.go    |  52 +-
> + src/import/api/services/snapshots/v1/snapshots.pb.go     |  98 +---
> + src/import/api/services/tasks/v1/tasks.pb.go             | 484 +++++++++++-------
> + src/import/api/services/ttrpc/events/v1/events.pb.go     |  10 +-
> + src/import/api/services/version/v1/version.pb.go         |   5 +-
> + src/import/api/types/descriptor.pb.go                    |   7 +-
> + src/import/api/types/metrics.pb.go                       |   5 +-
> + src/import/api/types/mount.pb.go                         |   5 +-
> + src/import/api/types/platform.pb.go                      |   5 +-
> + src/import/api/types/task/task.pb.go                     |  10 +-
> + src/import/runtime/linux/runctypes/runc.pb.go            |  20 +-
> + src/import/runtime/v1/shim/v1/shim.pb.go                 | 100 +---
> + src/import/runtime/v2/runc/options/oci.pb.go             |  15 +-
> + src/import/runtime/v2/task/shim.pb.go                    | 470 ++++++++++-------
> + src/import/.../protobuf/plugin/unmarshal/unmarshal.go    |  16 +-
> + src/import/.../gogo/protobuf/proto/text_parser.go        |   2 +-
> + src/import/.../github.com/gogo/protobuf/types/any.pb.go  |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/api.pb.go  |  15 +-
> + src/import/.../gogo/protobuf/types/duration.pb.go        |   5 +-
> + src/import/.../gogo/protobuf/types/empty.pb.go           |   5 +-
> + src/import/.../gogo/protobuf/types/field_mask.pb.go      |   5 +-
> + src/import/.../gogo/protobuf/types/source_context.pb.go  |   5 +-
> + src/import/.../gogo/protobuf/types/struct.pb.go          |  17 +-
> + src/import/.../gogo/protobuf/types/timestamp.pb.go       |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/type.pb.go |  25 +-
> + src/import/.../gogo/protobuf/types/wrappers.pb.go        |  45 +-
> + 39 files changed, 773 insertions(+), 1133 deletions(-)
> +
> +diff --git a/src/import/api/events/container.pb.go b/src/import/api/events/container.pb.go
> +index 0c1e0a939..fe002e073 100644
> +--- a/src/import/api/events/container.pb.go
> ++++ b/src/import/api/events/container.pb.go
> +@@ -835,10 +835,7 @@ func (m *ContainerCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -957,10 +954,7 @@ func (m *ContainerCreate_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1185,7 +1179,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainer
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1234,10 +1228,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1320,10 +1311,7 @@ func (m *ContainerDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/content.pb.go b/src/import/api/events/content.pb.go
> +index 959ea72d8..0a7ec9325 100644
> +--- a/src/import/api/events/content.pb.go
> ++++ b/src/import/api/events/content.pb.go
> +@@ -257,10 +257,7 @@ func (m *ContentDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/image.pb.go b/src/import/api/events/image.pb.go
> +index 13f60b017..747026945 100644
> +--- a/src/import/api/events/image.pb.go
> ++++ b/src/import/api/events/image.pb.go
> +@@ -697,7 +697,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *ImageDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/namespace.pb.go b/src/import/api/events/namespace.pb.go
> +index 37c3b78cf..d406a987e 100644
> +--- a/src/import/api/events/namespace.pb.go
> ++++ b/src/import/api/events/namespace.pb.go
> +@@ -697,7 +697,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *NamespaceDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/snapshot.pb.go b/src/import/api/events/snapshot.pb.go
> +index 539297004..bec25c3a7 100644
> +--- a/src/import/api/events/snapshot.pb.go
> ++++ b/src/import/api/events/snapshot.pb.go
> +@@ -548,10 +548,7 @@ func (m *SnapshotPrepare) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -666,10 +663,7 @@ func (m *SnapshotCommit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -752,10 +746,7 @@ func (m *SnapshotRemove) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/task.pb.go b/src/import/api/events/task.pb.go
> +index 0f16695e3..f8f3a3f3d 100644
> +--- a/src/import/api/events/task.pb.go
> ++++ b/src/import/api/events/task.pb.go
> +@@ -1905,10 +1905,7 @@ func (m *TaskCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2010,10 +2007,7 @@ func (m *TaskStart) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2199,10 +2193,7 @@ func (m *TaskDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2369,10 +2360,7 @@ func (m *TaskIO) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2558,10 +2546,7 @@ func (m *TaskExit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2644,10 +2629,7 @@ func (m *TaskOOM) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2762,10 +2744,7 @@ func (m *TaskExecAdded) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2899,10 +2878,7 @@ func (m *TaskExecStarted) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2985,10 +2961,7 @@ func (m *TaskPaused) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3071,10 +3044,7 @@ func (m *TaskResumed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3189,10 +3159,7 @@ func (m *TaskCheckpointed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/containers/v1/containers.pb.go b/src/import/api/services/containers/v1/containers.pb.go
> +index d951b2683..af56c7de2 100644
> +--- a/src/import/api/services/containers/v1/containers.pb.go
> ++++ b/src/import/api/services/containers/v1/containers.pb.go
> +@@ -2106,7 +2106,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2469,7 +2469,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2486,10 +2486,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2608,10 +2605,7 @@ func (m *Container_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2694,10 +2688,7 @@ func (m *GetContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2781,10 +2772,7 @@ func (m *GetContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2867,10 +2855,7 @@ func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2955,10 +2940,7 @@ func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3042,10 +3024,7 @@ func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3129,10 +3108,7 @@ func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3252,10 +3228,7 @@ func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3339,10 +3312,7 @@ func (m *UpdateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3425,10 +3395,7 @@ func (m *DeleteContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3515,10 +3482,7 @@ func (m *ListContainerMessage) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/content/v1/content.pb.go b/src/import/api/services/content/v1/content.pb.go
> +index 1cf0aaa91..97c7d4a92 100644
> +--- a/src/import/api/services/content/v1/content.pb.go
> ++++ b/src/import/api/services/content/v1/content.pb.go
> +@@ -3280,7 +3280,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3297,10 +3297,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3383,10 +3380,7 @@ func (m *InfoRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3470,10 +3464,7 @@ func (m *InfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3593,10 +3584,7 @@ func (m *UpdateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3680,10 +3668,7 @@ func (m *UpdateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3766,10 +3751,7 @@ func (m *ListContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3854,10 +3836,7 @@ func (m *ListContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3940,10 +3919,7 @@ func (m *DeleteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4064,10 +4040,7 @@ func (m *ReadContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4171,10 +4144,7 @@ func (m *ReadContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4393,10 +4363,7 @@ func (m *Status) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4479,10 +4446,7 @@ func (m *StatusRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4569,10 +4533,7 @@ func (m *StatusResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4655,10 +4616,7 @@ func (m *ListStatusesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4743,10 +4701,7 @@ func (m *ListStatusesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,7 +5017,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -5079,10 +5034,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5288,10 +5240,7 @@ func (m *WriteContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5374,10 +5323,7 @@ func (m *AbortRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/diff/v1/diff.pb.go b/src/import/api/services/diff/v1/diff.pb.go
> +index 48379234d..b1450ceb8 100644
> +--- a/src/import/api/services/diff/v1/diff.pb.go
> ++++ b/src/import/api/services/diff/v1/diff.pb.go
> +@@ -1063,7 +1063,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1080,10 +1080,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1170,10 +1167,7 @@ func (m *ApplyResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1466,7 +1460,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1483,10 +1477,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1573,10 +1564,7 @@ func (m *DiffResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/events/v1/events.pb.go b/src/import/api/services/events/v1/events.pb.go
> +index a1674f862..4373f3bf2 100644
> +--- a/src/import/api/services/events/v1/events.pb.go
> ++++ b/src/import/api/services/events/v1/events.pb.go
> +@@ -916,10 +916,7 @@ func (m *PublishRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1006,10 +1003,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1092,10 +1086,7 @@ func (m *SubscribeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1279,10 +1270,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/images/v1/images.pb.go b/src/import/api/services/images/v1/images.pb.go
> +index db912b68b..de08cc083 100644
> +--- a/src/import/api/services/images/v1/images.pb.go
> ++++ b/src/import/api/services/images/v1/images.pb.go
> +@@ -1707,7 +1707,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImages
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1823,10 +1823,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1909,10 +1906,7 @@ func (m *GetImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1999,10 +1993,7 @@ func (m *GetImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2086,10 +2077,7 @@ func (m *CreateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2173,10 +2161,7 @@ func (m *CreateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2296,10 +2281,7 @@ func (m *UpdateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2383,10 +2365,7 @@ func (m *UpdateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2469,10 +2448,7 @@ func (m *ListImagesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2557,10 +2533,7 @@ func (m *ListImagesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2663,10 +2636,7 @@ func (m *DeleteImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/introspection/v1/introspection.pb.go b/src/import/api/services/introspection/v1/introspection.pb.go
> +index b9f912b09..d23c8b61a 100644
> +--- a/src/import/api/services/introspection/v1/introspection.pb.go
> ++++ b/src/import/api/services/introspection/v1/introspection.pb.go
> +@@ -1098,7 +1098,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthIntrospection
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1183,10 +1183,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1269,10 +1266,7 @@ func (m *PluginsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1357,10 +1351,7 @@ func (m *PluginsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1443,10 +1434,7 @@ func (m *ServerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/leases/v1/leases.pb.go b/src/import/api/services/leases/v1/leases.pb.go
> +index 4dbac3e09..5e7cab71f 100644
> +--- a/src/import/api/services/leases/v1/leases.pb.go
> ++++ b/src/import/api/services/leases/v1/leases.pb.go
> +@@ -1906,7 +1906,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1923,10 +1923,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2119,7 +2116,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2136,10 +2133,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2226,10 +2220,7 @@ func (m *CreateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2332,10 +2323,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2418,10 +2406,7 @@ func (m *ListRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2506,10 +2491,7 @@ func (m *ListResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2624,10 +2606,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2743,10 +2722,7 @@ func (m *AddResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2862,10 +2838,7 @@ func (m *DeleteResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2948,10 +2921,7 @@ func (m *ListResourcesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3036,10 +3006,7 @@ func (m *ListResourcesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/namespaces/v1/namespace.pb.go b/src/import/api/services/namespaces/v1/namespace.pb.go
> +index 0d1d650ba..76f9e1172 100644
> +--- a/src/import/api/services/namespaces/v1/namespace.pb.go
> ++++ b/src/import/api/services/namespaces/v1/namespace.pb.go
> +@@ -1609,7 +1609,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1626,10 +1626,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1712,10 +1709,7 @@ func (m *GetNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1799,10 +1793,7 @@ func (m *GetNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1885,10 +1876,7 @@ func (m *ListNamespacesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1973,10 +1961,7 @@ func (m *ListNamespacesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2060,10 +2045,7 @@ func (m *CreateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2147,10 +2129,7 @@ func (m *CreateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2270,10 +2249,7 @@ func (m *UpdateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2357,10 +2333,7 @@ func (m *UpdateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2443,10 +2416,7 @@ func (m *DeleteNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/snapshots/v1/snapshots.pb.go b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +index 1877afded..046c97b01 100644
> +--- a/src/import/api/services/snapshots/v1/snapshots.pb.go
> ++++ b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +@@ -3140,7 +3140,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3157,10 +3157,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3245,10 +3242,7 @@ func (m *PrepareSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3505,7 +3499,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3522,10 +3516,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3610,10 +3601,7 @@ func (m *ViewSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3728,10 +3716,7 @@ func (m *MountsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3816,10 +3801,7 @@ func (m *MountsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3934,10 +3916,7 @@ func (m *RemoveSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4194,7 +4173,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4211,10 +4190,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4329,10 +4305,7 @@ func (m *StatSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4642,7 +4615,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4659,10 +4632,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4746,10 +4716,7 @@ func (m *StatSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4901,10 +4868,7 @@ func (m *UpdateSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4988,10 +4952,7 @@ func (m *UpdateSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5106,10 +5067,7 @@ func (m *ListSnapshotsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5194,10 +5152,7 @@ func (m *ListSnapshotsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5312,10 +5267,7 @@ func (m *UsageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5404,10 +5356,7 @@ func (m *UsageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5490,10 +5439,7 @@ func (m *CleanupRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/tasks/v1/tasks.pb.go b/src/import/api/services/tasks/v1/tasks.pb.go
> +index 5ac5af11b..4904e6508 100644
> +--- a/src/import/api/services/tasks/v1/tasks.pb.go
> ++++ b/src/import/api/services/tasks/v1/tasks.pb.go
> +@@ -9,6 +9,7 @@ import (
> +     types "github.com/containerd/containerd/api/types"
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     github_com_opencontainers_go_digest "github.com/opencontainers/go-digest"
> +@@ -934,11 +935,12 @@ func (m *CheckpointTaskResponse) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskResponse proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ContainerID          string      `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ContainerID          string            `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1155,6 +1157,7 @@ func init() {
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.services.tasks.v1.CheckpointTaskRequest")
> +     proto.RegisterType((*CheckpointTaskResponse)(nil), "containerd.services.tasks.v1.CheckpointTaskResponse")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.services.tasks.v1.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.services.tasks.v1.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*MetricsRequest)(nil), "containerd.services.tasks.v1.MetricsRequest")
> +     proto.RegisterType((*MetricsResponse)(nil), "containerd.services.tasks.v1.MetricsResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.services.tasks.v1.WaitRequest")
> +@@ -1166,90 +1169,93 @@ func init() {
> + }
> +
> + var fileDescriptor_310e7127b8a26f14 = []byte{
> +-    // 1318 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x45,
> +-    0x1c, 0xef, 0xfa, 0xed, 0xbf, 0x93, 0x36, 0x59, 0xd2, 0x60, 0x96, 0x2a, 0x0e, 0xcb, 0xc5, 0x04,
> +-    0xba, 0x4b, 0x5d, 0x54, 0x21, 0x5a, 0x21, 0x35, 0x0f, 0x22, 0x0b, 0xaa, 0xa6, 0xdb, 0x02, 0x55,
> +-    0x25, 0x14, 0xb6, 0xbb, 0x13, 0x67, 0x14, 0x7b, 0x67, 0xbb, 0x33, 0x4e, 0x1b, 0x38, 0xc0, 0x47,
> +-    0xe8, 0x95, 0x0b, 0x9f, 0x27, 0x47, 0x8e, 0x08, 0x55, 0x81, 0xfa, 0x5b, 0x70, 0x43, 0xf3, 0xd8,
> +-    0xcd, 0xc6, 0x8e, 0xbd, 0x4e, 0xd3, 0x70, 0x69, 0x67, 0x66, 0xff, 0xaf, 0xf9, 0xcd, 0xff, 0xf1,
> +-    0x73, 0x60, 0xb5, 0x83, 0xd9, 0x6e, 0xff, 0xa9, 0xe5, 0x91, 0x9e, 0xed, 0x91, 0x80, 0xb9, 0x38,
> +-    0x40, 0x91, 0x9f, 0x5e, 0xba, 0x21, 0xb6, 0x29, 0x8a, 0xf6, 0xb1, 0x87, 0xa8, 0xcd, 0x5c, 0xba,
> +-    0x47, 0xed, 0xfd, 0x1b, 0x72, 0x61, 0x85, 0x11, 0x61, 0x44, 0xbf, 0x76, 0x2c, 0x6d, 0xc5, 0x92,
> +-    0x96, 0x14, 0xd8, 0xbf, 0x61, 0xbc, 0xdf, 0x21, 0xa4, 0xd3, 0x45, 0xb6, 0x90, 0x7d, 0xda, 0xdf,
> +-    0xb1, 0x51, 0x2f, 0x64, 0x07, 0x52, 0xd5, 0x78, 0x6f, 0xf8, 0xa3, 0x1b, 0xc4, 0x9f, 0x16, 0x3a,
> +-    0xa4, 0x43, 0xc4, 0xd2, 0xe6, 0x2b, 0x75, 0x7a, 0x6b, 0xaa, 0x78, 0xd9, 0x41, 0x88, 0xa8, 0xdd,
> +-    0x23, 0xfd, 0x80, 0x29, 0xbd, 0xcf, 0xcf, 0xa2, 0x87, 0x58, 0x84, 0x3d, 0x75, 0x3b, 0xe3, 0xf6,
> +-    0x19, 0x34, 0x7d, 0x44, 0xbd, 0x08, 0x87, 0x8c, 0x44, 0x4a, 0xf9, 0x8b, 0x33, 0x28, 0x73, 0xc4,
> +-    0xc4, 0x3f, 0x4a, 0xb7, 0x31, 0x8c, 0x0d, 0xc3, 0x3d, 0x44, 0x99, 0xdb, 0x0b, 0xa5, 0x80, 0x79,
> +-    0x98, 0x83, 0xf9, 0xb5, 0x08, 0xb9, 0x0c, 0x3d, 0x72, 0xe9, 0x9e, 0x83, 0x9e, 0xf5, 0x11, 0x65,
> +-    0x7a, 0x0b, 0x66, 0x12, 0xf3, 0xdb, 0xd8, 0xaf, 0x6b, 0xcb, 0x5a, 0xb3, 0xba, 0x7a, 0x65, 0x70,
> +-    0xd4, 0xa8, 0xad, 0xc5, 0xe7, 0xed, 0x75, 0xa7, 0x96, 0x08, 0xb5, 0x7d, 0xdd, 0x86, 0x52, 0x44,
> +-    0x08, 0xdb, 0xa1, 0xf5, 0xfc, 0x72, 0xbe, 0x59, 0x6b, 0xbd, 0x6b, 0xa5, 0x9e, 0x54, 0x44, 0x67,
> +-    0xdd, 0xe3, 0x60, 0x3a, 0x4a, 0x4c, 0x5f, 0x80, 0x22, 0x65, 0x3e, 0x0e, 0xea, 0x05, 0x6e, 0xdd,
> +-    0x91, 0x1b, 0x7d, 0x11, 0x4a, 0x94, 0xf9, 0xa4, 0xcf, 0xea, 0x45, 0x71, 0xac, 0x76, 0xea, 0x1c,
> +-    0x45, 0x51, 0xbd, 0x94, 0x9c, 0xa3, 0x28, 0xd2, 0x0d, 0xa8, 0x30, 0x14, 0xf5, 0x70, 0xe0, 0x76,
> +-    0xeb, 0xe5, 0x65, 0xad, 0x59, 0x71, 0x92, 0xbd, 0x7e, 0x07, 0xc0, 0xdb, 0x45, 0xde, 0x5e, 0x48,
> +-    0x70, 0xc0, 0xea, 0x95, 0x65, 0xad, 0x59, 0x6b, 0x5d, 0x1b, 0x0d, 0x6b, 0x3d, 0x41, 0xdc, 0x49,
> +-    0xc9, 0xeb, 0x16, 0x94, 0x49, 0xc8, 0x30, 0x09, 0x68, 0xbd, 0x2a, 0x54, 0x17, 0x2c, 0x89, 0xa6,
> +-    0x15, 0xa3, 0x69, 0xdd, 0x0d, 0x0e, 0x9c, 0x58, 0xc8, 0x7c, 0x02, 0x7a, 0x1a, 0x49, 0x1a, 0x92,
> +-    0x80, 0xa2, 0x37, 0x82, 0x72, 0x0e, 0xf2, 0x21, 0xf6, 0xeb, 0xb9, 0x65, 0xad, 0x39, 0xeb, 0xf0,
> +-    0xa5, 0xd9, 0x81, 0x99, 0x87, 0xcc, 0x8d, 0xd8, 0x79, 0x1e, 0xe8, 0x43, 0x28, 0xa3, 0x17, 0xc8,
> +-    0xdb, 0x56, 0x96, 0xab, 0xab, 0x30, 0x38, 0x6a, 0x94, 0x36, 0x5e, 0x20, 0xaf, 0xbd, 0xee, 0x94,
> +-    0xf8, 0xa7, 0xb6, 0x6f, 0x7e, 0x00, 0xb3, 0xca, 0x91, 0x8a, 0x5f, 0xc5, 0xa2, 0x1d, 0xc7, 0xb2,
> +-    0x09, 0xf3, 0xeb, 0xa8, 0x8b, 0xce, 0x9d, 0x31, 0xe6, 0xef, 0x1a, 0x5c, 0x96, 0x96, 0x12, 0x6f,
> +-    0x8b, 0x90, 0x4b, 0x94, 0x4b, 0x83, 0xa3, 0x46, 0xae, 0xbd, 0xee, 0xe4, 0xf0, 0x29, 0x88, 0xe8,
> +-    0x0d, 0xa8, 0xa1, 0x17, 0x98, 0x6d, 0x53, 0xe6, 0xb2, 0x3e, 0xcf, 0x39, 0xfe, 0x05, 0xf8, 0xd1,
> +-    0x43, 0x71, 0xa2, 0xdf, 0x85, 0x2a, 0xdf, 0x21, 0x7f, 0xdb, 0x65, 0x22, 0xc5, 0x6a, 0x2d, 0x63,
> +-    0xe4, 0x01, 0x1f, 0xc5, 0xe5, 0xb0, 0x5a, 0x39, 0x3c, 0x6a, 0x5c, 0x7a, 0xf9, 0x77, 0x43, 0x73,
> +-    0x2a, 0x52, 0xed, 0x2e, 0x33, 0x09, 0x2c, 0xc8, 0xf8, 0xb6, 0x22, 0xe2, 0x21, 0x4a, 0x2f, 0x1c,
> +-    0x7d, 0x04, 0xb0, 0x89, 0x2e, 0xfe, 0x91, 0x37, 0xa0, 0x26, 0xdc, 0x28, 0xd0, 0x6f, 0x41, 0x39,
> +-    0x94, 0x17, 0x14, 0x2e, 0x86, 0x6a, 0x64, 0xff, 0x86, 0x2a, 0x93, 0x18, 0x84, 0x58, 0xd8, 0x5c,
> +-    0x81, 0xb9, 0x6f, 0x30, 0x65, 0x3c, 0x0d, 0x12, 0x68, 0x16, 0xa1, 0xb4, 0x83, 0xbb, 0x0c, 0x45,
> +-    0x32, 0x5a, 0x47, 0xed, 0x78, 0xd2, 0xa4, 0x64, 0x93, 0xda, 0x28, 0x8a, 0x16, 0x5f, 0xd7, 0x44,
> +-    0xc7, 0x98, 0xec, 0x56, 0x8a, 0x9a, 0x2f, 0x35, 0xa8, 0x7d, 0x8d, 0xbb, 0xdd, 0x8b, 0x06, 0x49,
> +-    0x34, 0x1c, 0xdc, 0xe1, 0x6d, 0x45, 0xe6, 0x96, 0xda, 0xf1, 0x54, 0x74, 0xbb, 0x5d, 0x91, 0x51,
> +-    0x15, 0x87, 0x2f, 0xcd, 0x7f, 0x35, 0xd0, 0xb9, 0xf2, 0x5b, 0xc8, 0x92, 0xa4, 0x27, 0xe6, 0x4e,
> +-    0xef, 0x89, 0xf9, 0x31, 0x3d, 0xb1, 0x30, 0xb6, 0x27, 0x16, 0x87, 0x7a, 0x62, 0x13, 0x0a, 0x34,
> +-    0x44, 0x9e, 0xe8, 0xa2, 0xe3, 0x5a, 0x9a, 0x90, 0x48, 0xa3, 0x54, 0x1e, 0x9b, 0x4a, 0x57, 0xe1,
> +-    0x9d, 0x13, 0x57, 0x97, 0x2f, 0x6b, 0xfe, 0xa6, 0xc1, 0x9c, 0x83, 0x28, 0xfe, 0x09, 0x6d, 0xb1,
> +-    0x83, 0x0b, 0x7f, 0xaa, 0x05, 0x28, 0x3e, 0xc7, 0x3e, 0xdb, 0x55, 0x2f, 0x25, 0x37, 0x1c, 0x9d,
> +-    0x5d, 0x84, 0x3b, 0xbb, 0xb2, 0xfa, 0x67, 0x1d, 0xb5, 0x33, 0x7f, 0x81, 0xcb, 0x6b, 0x5d, 0x42,
> +-    0x51, 0xfb, 0xfe, 0xff, 0x11, 0x98, 0x7c, 0xce, 0xbc, 0x78, 0x05, 0xb9, 0x31, 0xbf, 0x82, 0xb9,
> +-    0x2d, 0xb7, 0x4f, 0xcf, 0xdd, 0x3f, 0x37, 0x61, 0xde, 0x41, 0xb4, 0xdf, 0x3b, 0xb7, 0xa1, 0x0d,
> +-    0xb8, 0xc2, 0x8b, 0x73, 0x0b, 0xfb, 0xe7, 0x49, 0x5e, 0xd3, 0x91, 0xfd, 0x40, 0x9a, 0x51, 0x25,
> +-    0xfe, 0x25, 0x54, 0x55, 0xbb, 0x40, 0x71, 0x99, 0x2f, 0x4f, 0x2a, 0xf3, 0x76, 0xb0, 0x43, 0x9c,
> +-    0x63, 0x15, 0xf3, 0x95, 0x06, 0x57, 0xd7, 0x92, 0x99, 0x7c, 0x5e, 0x8e, 0xb2, 0x0d, 0xf3, 0xa1,
> +-    0x1b, 0xa1, 0x80, 0x6d, 0xa7, 0x78, 0x81, 0x7c, 0xbe, 0x16, 0xef, 0xff, 0x7f, 0x1d, 0x35, 0x56,
> +-    0x52, 0x6c, 0x8b, 0x84, 0x28, 0x48, 0xd4, 0xa9, 0xdd, 0x21, 0xd7, 0x7d, 0xdc, 0x41, 0x94, 0x59,
> +-    0xeb, 0xe2, 0x3f, 0x67, 0x4e, 0x1a, 0x5b, 0x3b, 0x95, 0x33, 0xe4, 0xa7, 0xe1, 0x0c, 0x8f, 0x61,
> +-    0x71, 0xf8, 0x76, 0x09, 0x70, 0xb5, 0x63, 0x26, 0x78, 0x6a, 0x87, 0x1c, 0x21, 0x2f, 0x69, 0x05,
> +-    0xf3, 0x67, 0x98, 0xff, 0x36, 0xf4, 0xdf, 0x02, 0xaf, 0x6b, 0x41, 0x35, 0x42, 0x94, 0xf4, 0x23,
> +-    0x0f, 0x51, 0x81, 0xd5, 0xb8, 0x4b, 0x1d, 0x8b, 0x99, 0x2b, 0x70, 0xf9, 0x9e, 0x24, 0xc0, 0xb1,
> +-    0xe7, 0x3a, 0x94, 0xe5, 0x24, 0x90, 0x57, 0xa9, 0x3a, 0xf1, 0x96, 0x27, 0x5f, 0x22, 0x9b, 0xcc,
> +-    0x85, 0xb2, 0xe2, 0xcf, 0xea, 0xde, 0xf5, 0x53, 0xb8, 0xa4, 0x10, 0x70, 0x62, 0x41, 0x73, 0x07,
> +-    0x6a, 0xdf, 0xbb, 0xf8, 0xe2, 0x67, 0x67, 0x04, 0x33, 0xd2, 0x8f, 0x8a, 0x75, 0x88, 0x87, 0x68,
> +-    0x93, 0x79, 0x48, 0xee, 0x4d, 0x78, 0x48, 0xeb, 0xd5, 0x0c, 0x14, 0xc5, 0xe4, 0xd4, 0xf7, 0xa0,
> +-    0x24, 0x39, 0xa6, 0x6e, 0x5b, 0x93, 0x7e, 0x31, 0x59, 0x23, 0x9c, 0xde, 0xf8, 0x74, 0x7a, 0x05,
> +-    0x75, 0xb5, 0x1f, 0xa1, 0x28, 0xb8, 0xa0, 0xbe, 0x32, 0x59, 0x35, 0xcd, 0x4c, 0x8d, 0x8f, 0xa7,
> +-    0x92, 0x55, 0x1e, 0x3a, 0x50, 0x92, 0x04, 0x2b, 0xeb, 0x3a, 0x23, 0x84, 0xd3, 0xf8, 0x64, 0x1a,
> +-    0x85, 0xc4, 0xd1, 0x33, 0x98, 0x3d, 0xc1, 0xe4, 0xf4, 0xd6, 0x34, 0xea, 0x27, 0x07, 0xfa, 0x19,
> +-    0x5d, 0x3e, 0x81, 0xfc, 0x26, 0x62, 0x7a, 0x73, 0xb2, 0xd2, 0x31, 0xdd, 0x33, 0x3e, 0x9a, 0x42,
> +-    0x32, 0xc1, 0xad, 0xc0, 0x3b, 0xad, 0x6e, 0x4d, 0x56, 0x19, 0x66, 0x67, 0x86, 0x3d, 0xb5, 0xbc,
> +-    0x72, 0xd4, 0x86, 0x02, 0x27, 0x5b, 0x7a, 0x46, 0x6c, 0x29, 0x42, 0x66, 0x2c, 0x8e, 0x24, 0xf7,
> +-    0x06, 0xff, 0xb1, 0xae, 0x6f, 0x41, 0x81, 0x97, 0x92, 0x9e, 0x91, 0x87, 0xa3, 0x44, 0x6a, 0xac,
> +-    0xc5, 0x87, 0x50, 0x4d, 0x38, 0x46, 0x16, 0x14, 0xc3, 0x64, 0x64, 0xac, 0xd1, 0xfb, 0x50, 0x56,
> +-    0xec, 0x40, 0xcf, 0x78, 0xef, 0x93, 0x24, 0x62, 0x82, 0xc1, 0xa2, 0x98, 0xf6, 0x59, 0x11, 0x0e,
> +-    0x53, 0x82, 0xb1, 0x06, 0x1f, 0x40, 0x49, 0x8e, 0xfd, 0xac, 0xa2, 0x19, 0x21, 0x07, 0x63, 0x4d,
> +-    0x62, 0xa8, 0xc4, 0x93, 0x5b, 0xbf, 0x9e, 0x9d, 0x23, 0x29, 0xa2, 0x60, 0x58, 0xd3, 0x8a, 0xab,
> +-    0x8c, 0x7a, 0x0e, 0x90, 0x9a, 0x97, 0x37, 0x33, 0x20, 0x3e, 0x6d, 0xf2, 0x1b, 0x9f, 0x9d, 0x4d,
> +-    0x49, 0x39, 0x7e, 0x00, 0x25, 0x39, 0x10, 0xb3, 0x60, 0x1b, 0x19, 0x9b, 0x63, 0x61, 0xdb, 0x81,
> +-    0xb2, 0x1a, 0x5d, 0x59, 0xb9, 0x72, 0x72, 0x1a, 0x1a, 0xd7, 0xa7, 0x94, 0x56, 0xa1, 0xff, 0x00,
> +-    0x05, 0x3e, 0x73, 0xb2, 0xaa, 0x30, 0x35, 0xff, 0x8c, 0x95, 0x69, 0x44, 0xa5, 0xf9, 0xd5, 0xef,
> +-    0x0e, 0x5f, 0x2f, 0x5d, 0xfa, 0xf3, 0xf5, 0xd2, 0xa5, 0x5f, 0x07, 0x4b, 0xda, 0xe1, 0x60, 0x49,
> +-    0xfb, 0x63, 0xb0, 0xa4, 0xfd, 0x33, 0x58, 0xd2, 0x9e, 0xdc, 0x79, 0xb3, 0xbf, 0xec, 0xdd, 0x16,
> +-    0x8b, 0xc7, 0xb9, 0xa7, 0x25, 0x01, 0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa2,
> +-    0x4f, 0xd1, 0x22, 0x14, 0x00, 0x00,
> ++    // 1376 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0x1b, 0x45,
> ++    0x14, 0xee, 0xfa, 0xee, 0xe3, 0xa4, 0x4d, 0x96, 0x34, 0x98, 0xa5, 0x8a, 0xc3, 0xf2, 0x62, 0x02,
> ++    0x5d, 0x53, 0x17, 0x55, 0x55, 0x5b, 0x55, 0xe4, 0x46, 0x64, 0x41, 0xd5, 0x74, 0x5b, 0xa0, 0xaa,
> ++    0x84, 0xc2, 0xc6, 0x3b, 0x71, 0x46, 0xb1, 0x77, 0xb6, 0x3b, 0xe3, 0xb4, 0xe6, 0x05, 0x7e, 0x42,
> ++    0x5f, 0x79, 0x81, 0xbf, 0x93, 0x47, 0x1e, 0x11, 0xaa, 0x02, 0xf5, 0xbf, 0xe0, 0x0d, 0xcd, 0x65,
> ++    0xd7, 0x1b, 0x3b, 0xf6, 0x3a, 0x4d, 0xc3, 0x4b, 0x32, 0x33, 0x7b, 0xce, 0x99, 0x33, 0xdf, 0xb9,
> ++    0x7d, 0x09, 0xac, 0xb5, 0x30, 0xdb, 0xef, 0xee, 0x5a, 0x4d, 0xd2, 0xa9, 0x35, 0x89, 0xc7, 0x1c,
> ++    0xec, 0xa1, 0xc0, 0x8d, 0x2f, 0x1d, 0x1f, 0xd7, 0x28, 0x0a, 0x0e, 0x71, 0x13, 0xd1, 0x1a, 0x73,
> ++    0xe8, 0x01, 0xad, 0x1d, 0xde, 0x90, 0x0b, 0xcb, 0x0f, 0x08, 0x23, 0xfa, 0xb5, 0x81, 0xb4, 0x15,
> ++    0x4a, 0x5a, 0x52, 0xe0, 0xf0, 0x86, 0xf1, 0x61, 0x8b, 0x90, 0x56, 0x1b, 0xd5, 0x84, 0xec, 0x6e,
> ++    0x77, 0xaf, 0x86, 0x3a, 0x3e, 0xeb, 0x49, 0x55, 0xe3, 0x83, 0xe1, 0x8f, 0x8e, 0x17, 0x7e, 0x5a,
> ++    0x68, 0x91, 0x16, 0x11, 0xcb, 0x1a, 0x5f, 0xa9, 0xd3, 0x5b, 0x53, 0xf9, 0xcb, 0x7a, 0x3e, 0xa2,
> ++    0xb5, 0x0e, 0xe9, 0x7a, 0x4c, 0xe9, 0xdd, 0x3e, 0x8b, 0x1e, 0x62, 0x01, 0x6e, 0xaa, 0xd7, 0x19,
> ++    0x77, 0xcf, 0xa0, 0xe9, 0x22, 0xda, 0x0c, 0xb0, 0xcf, 0x48, 0xa0, 0x94, 0xef, 0x9c, 0x41, 0x99,
> ++    0x23, 0x26, 0x7e, 0x28, 0xdd, 0xca, 0x30, 0x36, 0x0c, 0x77, 0x10, 0x65, 0x4e, 0xc7, 0x97, 0x02,
> ++    0xe6, 0x51, 0x0a, 0xe6, 0xd7, 0x03, 0xe4, 0x30, 0xf4, 0xc4, 0xa1, 0x07, 0x36, 0x7a, 0xde, 0x45,
> ++    0x94, 0xe9, 0x75, 0x98, 0x89, 0xcc, 0xef, 0x60, 0xb7, 0xac, 0x2d, 0x6b, 0xd5, 0xe2, 0xda, 0x95,
> ++    0xfe, 0x71, 0xa5, 0xb4, 0x1e, 0x9e, 0x37, 0x36, 0xec, 0x52, 0x24, 0xd4, 0x70, 0xf5, 0x1a, 0xe4,
> ++    0x02, 0x42, 0xd8, 0x1e, 0x2d, 0xa7, 0x97, 0xd3, 0xd5, 0x52, 0xfd, 0x7d, 0x2b, 0x16, 0x52, 0xe1,
> ++    0x9d, 0xf5, 0x80, 0x83, 0x69, 0x2b, 0x31, 0x7d, 0x01, 0xb2, 0x94, 0xb9, 0xd8, 0x2b, 0x67, 0xb8,
> ++    0x75, 0x5b, 0x6e, 0xf4, 0x45, 0xc8, 0x51, 0xe6, 0x92, 0x2e, 0x2b, 0x67, 0xc5, 0xb1, 0xda, 0xa9,
> ++    0x73, 0x14, 0x04, 0xe5, 0x5c, 0x74, 0x8e, 0x82, 0x40, 0x37, 0xa0, 0xc0, 0x50, 0xd0, 0xc1, 0x9e,
> ++    0xd3, 0x2e, 0xe7, 0x97, 0xb5, 0x6a, 0xc1, 0x8e, 0xf6, 0xfa, 0x3d, 0x80, 0xe6, 0x3e, 0x6a, 0x1e,
> ++    0xf8, 0x04, 0x7b, 0xac, 0x5c, 0x58, 0xd6, 0xaa, 0xa5, 0xfa, 0xb5, 0x51, 0xb7, 0x36, 0x22, 0xc4,
> ++    0xed, 0x98, 0xbc, 0x6e, 0x41, 0x9e, 0xf8, 0x0c, 0x13, 0x8f, 0x96, 0x8b, 0x42, 0x75, 0xc1, 0x92,
> ++    0x68, 0x5a, 0x21, 0x9a, 0xd6, 0xaa, 0xd7, 0xb3, 0x43, 0x21, 0xf3, 0x19, 0xe8, 0x71, 0x24, 0xa9,
> ++    0x4f, 0x3c, 0x8a, 0xde, 0x0a, 0xca, 0x39, 0x48, 0xfb, 0xd8, 0x2d, 0xa7, 0x96, 0xb5, 0xea, 0xac,
> ++    0xcd, 0x97, 0x66, 0x0b, 0x66, 0x1e, 0x33, 0x27, 0x60, 0xe7, 0x09, 0xd0, 0xc7, 0x90, 0x47, 0x2f,
> ++    0x51, 0x73, 0x47, 0x59, 0x2e, 0xae, 0x41, 0xff, 0xb8, 0x92, 0xdb, 0x7c, 0x89, 0x9a, 0x8d, 0x0d,
> ++    0x3b, 0xc7, 0x3f, 0x35, 0x5c, 0xf3, 0x23, 0x98, 0x55, 0x17, 0x29, 0xff, 0x95, 0x2f, 0xda, 0xc0,
> ++    0x97, 0x2d, 0x98, 0xdf, 0x40, 0x6d, 0x74, 0xee, 0x8c, 0x31, 0x7f, 0xd3, 0xe0, 0xb2, 0xb4, 0x14,
> ++    0xdd, 0xb6, 0x08, 0xa9, 0x48, 0x39, 0xd7, 0x3f, 0xae, 0xa4, 0x1a, 0x1b, 0x76, 0x0a, 0x9f, 0x82,
> ++    0x88, 0x5e, 0x81, 0x12, 0x7a, 0x89, 0xd9, 0x0e, 0x65, 0x0e, 0xeb, 0xf2, 0x9c, 0xe3, 0x5f, 0x80,
> ++    0x1f, 0x3d, 0x16, 0x27, 0xfa, 0x2a, 0x14, 0xf9, 0x0e, 0xb9, 0x3b, 0x0e, 0x13, 0x29, 0x56, 0xaa,
> ++    0x1b, 0x23, 0x01, 0x7c, 0x12, 0x96, 0xc3, 0x5a, 0xe1, 0xe8, 0xb8, 0x72, 0xe9, 0xd5, 0xdf, 0x15,
> ++    0xcd, 0x2e, 0x48, 0xb5, 0x55, 0x66, 0x12, 0x58, 0x90, 0xfe, 0x6d, 0x07, 0xa4, 0x89, 0x28, 0xbd,
> ++    0x70, 0xf4, 0x11, 0xc0, 0x16, 0xba, 0xf8, 0x20, 0x6f, 0x42, 0x49, 0x5c, 0xa3, 0x40, 0xbf, 0x05,
> ++    0x79, 0x5f, 0x3e, 0x50, 0x5c, 0x31, 0x54, 0x23, 0x87, 0x37, 0x54, 0x99, 0x84, 0x20, 0x84, 0xc2,
> ++    0xe6, 0x0a, 0xcc, 0x7d, 0x83, 0x29, 0xe3, 0x69, 0x10, 0x41, 0xb3, 0x08, 0xb9, 0x3d, 0xdc, 0x66,
> ++    0x28, 0x90, 0xde, 0xda, 0x6a, 0xc7, 0x93, 0x26, 0x26, 0x1b, 0xd5, 0x46, 0x56, 0xb4, 0xf8, 0xb2,
> ++    0x26, 0x3a, 0xc6, 0xe4, 0x6b, 0xa5, 0xa8, 0xf9, 0x4a, 0x83, 0xd2, 0xd7, 0xb8, 0xdd, 0xbe, 0x68,
> ++    0x90, 0x44, 0xc3, 0xc1, 0x2d, 0xde, 0x56, 0x64, 0x6e, 0xa9, 0x1d, 0x4f, 0x45, 0xa7, 0xdd, 0x16,
> ++    0x19, 0x55, 0xb0, 0xf9, 0xd2, 0xfc, 0x57, 0x03, 0x9d, 0x2b, 0xbf, 0x83, 0x2c, 0x89, 0x7a, 0x62,
> ++    0xea, 0xf4, 0x9e, 0x98, 0x1e, 0xd3, 0x13, 0x33, 0x63, 0x7b, 0x62, 0x76, 0xa8, 0x27, 0x56, 0x21,
> ++    0x43, 0x7d, 0xd4, 0x14, 0x5d, 0x74, 0x5c, 0x4b, 0x13, 0x12, 0x71, 0x94, 0xf2, 0x63, 0x53, 0xe9,
> ++    0x2a, 0xbc, 0x77, 0xe2, 0xe9, 0x32, 0xb2, 0xe6, 0xaf, 0x1a, 0xcc, 0xd9, 0x88, 0xe2, 0x9f, 0xd0,
> ++    0x36, 0xeb, 0x5d, 0x78, 0xa8, 0x16, 0x20, 0xfb, 0x02, 0xbb, 0x6c, 0x5f, 0x45, 0x4a, 0x6e, 0x38,
> ++    0x3a, 0xfb, 0x08, 0xb7, 0xf6, 0x65, 0xf5, 0xcf, 0xda, 0x6a, 0x67, 0xfe, 0x0c, 0x97, 0xd7, 0xdb,
> ++    0x84, 0xa2, 0xc6, 0xc3, 0xff, 0xc3, 0x31, 0x19, 0xce, 0xb4, 0x88, 0x82, 0xdc, 0x98, 0x5f, 0xc1,
> ++    0xdc, 0xb6, 0xd3, 0xa5, 0xe7, 0xee, 0x9f, 0x5b, 0x30, 0x6f, 0x23, 0xda, 0xed, 0x9c, 0xdb, 0xd0,
> ++    0x26, 0x5c, 0xe1, 0xc5, 0xb9, 0x8d, 0xdd, 0xf3, 0x24, 0xaf, 0x69, 0xcb, 0x7e, 0x20, 0xcd, 0xa8,
> ++    0x12, 0xbf, 0x0f, 0x45, 0xd5, 0x2e, 0x50, 0x58, 0xe6, 0xcb, 0x93, 0xca, 0xbc, 0xe1, 0xed, 0x11,
> ++    0x7b, 0xa0, 0x62, 0xbe, 0xd6, 0xe0, 0xea, 0x7a, 0x34, 0x93, 0xcf, 0xcb, 0x51, 0x76, 0x60, 0xde,
> ++    0x77, 0x02, 0xe4, 0xb1, 0x9d, 0x18, 0x2f, 0x90, 0xe1, 0xab, 0xf3, 0xfe, 0xff, 0xd7, 0x71, 0x65,
> ++    0x25, 0xc6, 0xb6, 0x88, 0x8f, 0xbc, 0x48, 0x9d, 0xd6, 0x5a, 0xe4, 0xba, 0x8b, 0x5b, 0x88, 0x32,
> ++    0x6b, 0x43, 0xfc, 0xb2, 0xe7, 0xa4, 0xb1, 0xf5, 0x53, 0x39, 0x43, 0x7a, 0x1a, 0xce, 0xf0, 0x14,
> ++    0x16, 0x87, 0x5f, 0x17, 0x01, 0x57, 0x1a, 0x30, 0xc1, 0x53, 0x3b, 0xe4, 0x08, 0x79, 0x89, 0x2b,
> ++    0x98, 0xbf, 0xa7, 0x60, 0xfe, 0x5b, 0xdf, 0x7d, 0x07, 0xc4, 0xae, 0x0e, 0xc5, 0x00, 0x51, 0xd2,
> ++    0x0d, 0x9a, 0x88, 0x0a, 0xb0, 0xc6, 0xbd, 0x6a, 0x20, 0xa6, 0xef, 0x42, 0xc9, 0xf1, 0x3c, 0xc2,
> ++    0x9c, 0x10, 0x0b, 0xee, 0xfd, 0x97, 0xd6, 0x24, 0x92, 0x6f, 0x8d, 0x78, 0x6b, 0xad, 0x0e, 0x4c,
> ++    0x6c, 0x7a, 0x2c, 0xe8, 0xd9, 0x71, 0xa3, 0xc6, 0x7d, 0x98, 0x1b, 0x16, 0xe0, 0xcd, 0xf9, 0x00,
> ++    0xf5, 0xd4, 0xec, 0xe1, 0x4b, 0x5e, 0x82, 0x87, 0x4e, 0xbb, 0x8b, 0xc2, 0x8e, 0x2a, 0x36, 0x77,
> ++    0x52, 0xb7, 0x35, 0x73, 0x05, 0x2e, 0x3f, 0x90, 0x2c, 0x3d, 0x44, 0xa7, 0x0c, 0x79, 0x39, 0xae,
> ++    0x24, 0xde, 0x45, 0x3b, 0xdc, 0xf2, 0x0a, 0x89, 0x64, 0xa3, 0xe1, 0x95, 0x57, 0x24, 0x5f, 0x05,
> ++    0xa7, 0x7c, 0x0a, 0xe1, 0x15, 0x02, 0x76, 0x28, 0x68, 0xee, 0x41, 0xe9, 0x7b, 0x07, 0x5f, 0xfc,
> ++    0x80, 0x0f, 0x60, 0x46, 0xde, 0xa3, 0x7c, 0x1d, 0x22, 0x4b, 0xda, 0x64, 0xb2, 0x94, 0x7a, 0x1b,
> ++    0xb2, 0x54, 0x7f, 0x3d, 0x03, 0x59, 0x31, 0xde, 0xf5, 0x03, 0xc8, 0x49, 0x22, 0xac, 0xd7, 0x26,
> ++    0x47, 0x7c, 0xe4, 0x0f, 0x0f, 0xe3, 0xf3, 0xe9, 0x15, 0xd4, 0xd3, 0x7e, 0x84, 0xac, 0x20, 0xac,
> ++    0xfa, 0xca, 0x64, 0xd5, 0x38, 0x7d, 0x36, 0x3e, 0x9d, 0x4a, 0x56, 0xdd, 0xd0, 0x82, 0x9c, 0x64,
> ++    0x81, 0x49, 0xcf, 0x19, 0x61, 0xc5, 0xc6, 0x67, 0xd3, 0x28, 0x44, 0x17, 0x3d, 0x87, 0xd9, 0x13,
> ++    0x74, 0x53, 0xaf, 0x4f, 0xa3, 0x7e, 0x92, 0x75, 0x9c, 0xf1, 0xca, 0x67, 0x90, 0xde, 0x42, 0x4c,
> ++    0xaf, 0x4e, 0x56, 0x1a, 0x70, 0x52, 0xe3, 0x93, 0x29, 0x24, 0x23, 0xdc, 0x32, 0x7c, 0x1c, 0xe8,
> ++    0xd6, 0x64, 0x95, 0x61, 0x0a, 0x69, 0xd4, 0xa6, 0x96, 0x57, 0x17, 0x35, 0x20, 0xc3, 0x19, 0xa1,
> ++    0x9e, 0xe0, 0x5b, 0x8c, 0x35, 0x1a, 0x8b, 0x23, 0xc9, 0xbd, 0xd9, 0xf1, 0x59, 0x4f, 0xdf, 0x86,
> ++    0x0c, 0x2f, 0x25, 0x3d, 0x21, 0x0f, 0x47, 0xd9, 0xde, 0x58, 0x8b, 0x8f, 0xa1, 0x18, 0x11, 0xa1,
> ++    0x24, 0x28, 0x86, 0x19, 0xd3, 0x58, 0xa3, 0x0f, 0x21, 0xaf, 0x28, 0x8c, 0x9e, 0x10, 0xef, 0x93,
> ++    0x4c, 0x67, 0x82, 0xc1, 0xac, 0xa0, 0x24, 0x49, 0x1e, 0x0e, 0xf3, 0x96, 0xb1, 0x06, 0x1f, 0x41,
> ++    0x4e, 0x72, 0x93, 0xa4, 0xa2, 0x19, 0x61, 0x30, 0x63, 0x4d, 0x62, 0x28, 0x84, 0xf4, 0x42, 0xbf,
> ++    0x9e, 0x9c, 0x23, 0x31, 0x36, 0x63, 0x58, 0xd3, 0x8a, 0xab, 0x8c, 0x7a, 0x01, 0x10, 0x1b, 0xea,
> ++    0x37, 0x13, 0x20, 0x3e, 0x8d, 0x9e, 0x18, 0x5f, 0x9c, 0x4d, 0x49, 0x5d, 0xfc, 0x08, 0x72, 0x72,
> ++    0x0c, 0x26, 0xc1, 0x36, 0x32, 0x2c, 0xc7, 0xc2, 0xb6, 0x07, 0x79, 0x35, 0xba, 0x92, 0x72, 0xe5,
> ++    0xe4, 0x34, 0x34, 0xae, 0x4f, 0x29, 0xad, 0x5c, 0xff, 0x01, 0x32, 0x7c, 0xe6, 0x24, 0x55, 0x61,
> ++    0x6c, 0xfe, 0x19, 0x2b, 0xd3, 0x88, 0x4a, 0xf3, 0x6b, 0xdf, 0x1d, 0xbd, 0x59, 0xba, 0xf4, 0xe7,
> ++    0x9b, 0xa5, 0x4b, 0xbf, 0xf4, 0x97, 0xb4, 0xa3, 0xfe, 0x92, 0xf6, 0x47, 0x7f, 0x49, 0xfb, 0xa7,
> ++    0xbf, 0xa4, 0x3d, 0xbb, 0xf7, 0x76, 0xff, 0x7e, 0xbc, 0x2b, 0x16, 0x4f, 0x53, 0xbb, 0x39, 0x01,
> ++    0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x55, 0xbf, 0x54, 0xc7, 0x14, 0x00, 0x00,
> + }
> +
> + // Reference imports to suppress errors if they are not otherwise used.
> +@@ -2943,6 +2949,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintTasks(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -3611,6 +3636,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovTasks(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovTasks(uint64(len(k))) + 1 + len(v) + sovTasks(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovTasks(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3991,9 +4024,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4347,10 +4391,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4452,10 +4493,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4570,10 +4608,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4643,10 +4678,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4729,10 +4761,7 @@ func (m *DeleteTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4886,10 +4915,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5004,10 +5030,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5122,10 +5145,7 @@ func (m *GetRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5212,10 +5232,7 @@ func (m *GetResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5298,10 +5315,7 @@ func (m *ListTasksRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5386,10 +5400,7 @@ func (m *ListTasksResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5543,10 +5554,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5813,10 +5821,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5867,10 +5872,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6023,10 +6025,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6161,10 +6160,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6247,10 +6243,7 @@ func (m *PauseTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6333,10 +6326,7 @@ func (m *ResumeTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6419,10 +6409,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6507,10 +6494,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6661,10 +6645,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6749,10 +6730,7 @@ func (m *CheckpointTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6865,16 +6843,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowTasks
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowTasks
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipTasks(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipTasks(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6957,10 +7059,7 @@ func (m *MetricsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7045,10 +7144,7 @@ func (m *MetricsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7163,10 +7259,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7269,10 +7362,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/ttrpc/events/v1/events.pb.go b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +index 0e61351d5..b1f275bf0 100644
> +--- a/src/import/api/services/ttrpc/events/v1/events.pb.go
> ++++ b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +@@ -474,10 +474,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -661,10 +658,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/version/v1/version.pb.go b/src/import/api/services/version/v1/version.pb.go
> +index 81b8c3395..b742c6ae6 100644
> +--- a/src/import/api/services/version/v1/version.pb.go
> ++++ b/src/import/api/services/version/v1/version.pb.go
> +@@ -374,10 +374,7 @@ func (m *VersionResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthVersion
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthVersion
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/descriptor.pb.go b/src/import/api/types/descriptor.pb.go
> +index 437d41f23..fe71dbf43 100644
> +--- a/src/import/api/types/descriptor.pb.go
> ++++ b/src/import/api/types/descriptor.pb.go
> +@@ -479,7 +479,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDescriptor
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -496,10 +496,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDescriptor
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDescriptor
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/metrics.pb.go b/src/import/api/types/metrics.pb.go
> +index 89a8d9cd6..75773e442 100644
> +--- a/src/import/api/types/metrics.pb.go
> ++++ b/src/import/api/types/metrics.pb.go
> +@@ -348,10 +348,7 @@ func (m *Metric) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMetrics
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMetrics
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/mount.pb.go b/src/import/api/types/mount.pb.go
> +index 6872e4120..d0a0bee76 100644
> +--- a/src/import/api/types/mount.pb.go
> ++++ b/src/import/api/types/mount.pb.go
> +@@ -392,10 +392,7 @@ func (m *Mount) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMount
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMount
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/platform.pb.go b/src/import/api/types/platform.pb.go
> +index c03d8b077..a0f78c8a7 100644
> +--- a/src/import/api/types/platform.pb.go
> ++++ b/src/import/api/types/platform.pb.go
> +@@ -333,10 +333,7 @@ func (m *Platform) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthPlatform
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthPlatform
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/task/task.pb.go b/src/import/api/types/task/task.pb.go
> +index ae824ff45..f511bbd05 100644
> +--- a/src/import/api/types/task/task.pb.go
> ++++ b/src/import/api/types/task/task.pb.go
> +@@ -772,10 +772,7 @@ func (m *Process) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -881,10 +878,7 @@ func (m *ProcessInfo) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/linux/runctypes/runc.pb.go b/src/import/runtime/linux/runctypes/runc.pb.go
> +index 26306e594..46d31ff59 100644
> +--- a/src/import/runtime/linux/runctypes/runc.pb.go
> ++++ b/src/import/runtime/linux/runctypes/runc.pb.go
> +@@ -978,10 +978,7 @@ func (m *RuncOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1350,10 +1347,7 @@ func (m *CreateOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1632,10 +1626,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1718,10 +1709,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v1/shim/v1/shim.pb.go b/src/import/runtime/v1/shim/v1/shim.pb.go
> +index 27f334966..dbc82599d 100644
> +--- a/src/import/runtime/v1/shim/v1/shim.pb.go
> ++++ b/src/import/runtime/v1/shim/v1/shim.pb.go
> +@@ -3262,10 +3262,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3335,10 +3332,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3460,10 +3454,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3546,10 +3537,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3784,10 +3772,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3838,10 +3823,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3962,10 +3944,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4048,10 +4027,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4372,10 +4348,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4497,10 +4470,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4603,10 +4573,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4689,10 +4656,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4777,10 +4741,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4899,10 +4860,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4972,10 +4930,7 @@ func (m *ShimInfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,10 +5017,7 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5148,10 +5100,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5253,10 +5202,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5339,10 +5285,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5445,10 +5388,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/runc/options/oci.pb.go b/src/import/runtime/v2/runc/options/oci.pb.go
> +index f298452b6..c9c44742a 100644
> +--- a/src/import/runtime/v2/runc/options/oci.pb.go
> ++++ b/src/import/runtime/v2/runc/options/oci.pb.go
> +@@ -994,10 +994,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1276,10 +1273,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1362,10 +1356,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/task/shim.pb.go b/src/import/runtime/v2/task/shim.pb.go
> +index 3cf11d8e3..6366f9c57 100644
> +--- a/src/import/runtime/v2/task/shim.pb.go
> ++++ b/src/import/runtime/v2/task/shim.pb.go
> +@@ -10,6 +10,7 @@ import (
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     github_com_containerd_ttrpc "github.com/containerd/ttrpc"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     io "io"
> +@@ -617,11 +618,12 @@ func (m *CheckpointTaskRequest) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskRequest proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ID                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ID                   string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1107,6 +1109,7 @@ func init() {
> +     proto.RegisterType((*PidsResponse)(nil), "containerd.task.v2.PidsResponse")
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.task.v2.CheckpointTaskRequest")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.task.v2.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.task.v2.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*StartRequest)(nil), "containerd.task.v2.StartRequest")
> +     proto.RegisterType((*StartResponse)(nil), "containerd.task.v2.StartResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.task.v2.WaitRequest")
> +@@ -1125,85 +1128,89 @@ func init() {
> + }
> +
> + var fileDescriptor_9202ee34bc3ad8ca = []byte{
> +-    // 1246 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x6f, 0x1b, 0x45,
> +-    0x17, 0xee, 0xfa, 0x63, 0x6d, 0x1f, 0xd7, 0x69, 0x3a, 0x6f, 0x9a, 0x77, 0xeb, 0x4a, 0xb6, 0xbb,
> +-    0xa5, 0xc1, 0x80, 0x64, 0x0b, 0x57, 0x70, 0x41, 0x24, 0x50, 0xbe, 0xa8, 0x4c, 0x0b, 0x89, 0xb6,
> +-    0x45, 0x45, 0xdc, 0x58, 0x1b, 0xef, 0xc4, 0x5e, 0xc5, 0xde, 0x59, 0x76, 0x66, 0xf3, 0x81, 0x84,
> +-    0xc4, 0x15, 0x17, 0x5c, 0xf1, 0xb3, 0x72, 0x89, 0xc4, 0x0d, 0x37, 0x04, 0xea, 0x7f, 0xc0, 0x3f,
> +-    0x40, 0xf3, 0xe1, 0x78, 0xed, 0xec, 0xda, 0x49, 0xe5, 0x9b, 0x68, 0xce, 0xce, 0x33, 0x67, 0xe6,
> +-    0x9c, 0x79, 0xce, 0x73, 0x26, 0x86, 0xcd, 0x9e, 0xcb, 0xfa, 0xe1, 0x61, 0xa3, 0x4b, 0x86, 0xcd,
> +-    0x2e, 0xf1, 0x98, 0xed, 0x7a, 0x38, 0x70, 0xa2, 0xc3, 0x20, 0xf4, 0x98, 0x3b, 0xc4, 0xcd, 0x93,
> +-    0x56, 0x93, 0xd9, 0xf4, 0xb8, 0x49, 0xfb, 0xee, 0xb0, 0xe1, 0x07, 0x84, 0x11, 0x84, 0x26, 0xb0,
> +-    0x06, 0x9f, 0x6b, 0x9c, 0xb4, 0xca, 0x0f, 0x7b, 0x84, 0xf4, 0x06, 0xb8, 0x29, 0x10, 0x87, 0xe1,
> +-    0x51, 0xd3, 0xf6, 0xce, 0x25, 0xbc, 0xfc, 0x68, 0x76, 0x0a, 0x0f, 0x7d, 0x36, 0x9e, 0x5c, 0xeb,
> +-    0x91, 0x1e, 0x11, 0xc3, 0x26, 0x1f, 0xa9, 0xaf, 0xd5, 0xd9, 0x25, 0xfc, 0x28, 0x94, 0xd9, 0x43,
> +-    0x5f, 0x01, 0x3e, 0x5d, 0x78, 0x7e, 0xdb, 0x77, 0x9b, 0xec, 0xdc, 0xc7, 0xb4, 0x39, 0x24, 0xa1,
> +-    0xc7, 0xd4, 0xba, 0xcf, 0x6e, 0xb1, 0x4e, 0x84, 0x2d, 0xe2, 0x13, 0x6b, 0xcd, 0x3f, 0x52, 0x70,
> +-    0x7f, 0x27, 0xc0, 0x36, 0xc3, 0xaf, 0x6d, 0x7a, 0x6c, 0xe1, 0x1f, 0x42, 0x4c, 0x19, 0x5a, 0x87,
> +-    0x94, 0xeb, 0x18, 0x5a, 0x4d, 0xab, 0x17, 0xb6, 0xf5, 0xd1, 0x65, 0x35, 0xd5, 0xde, 0xb5, 0x52,
> +-    0xae, 0x83, 0xd6, 0x41, 0x3f, 0x0c, 0x3d, 0x67, 0x80, 0x8d, 0x14, 0x9f, 0xb3, 0x94, 0x85, 0x9a,
> +-    0xa0, 0x07, 0x84, 0xb0, 0x23, 0x6a, 0xa4, 0x6b, 0xe9, 0x7a, 0xb1, 0xf5, 0xff, 0x46, 0x34, 0x9b,
> +-    0x7c, 0xe3, 0xc6, 0xd7, 0xfc, 0xc0, 0x96, 0x82, 0xa1, 0x32, 0xe4, 0x19, 0x0e, 0x86, 0xae, 0x67,
> +-    0x0f, 0x8c, 0x4c, 0x4d, 0xab, 0xe7, 0xad, 0x2b, 0x1b, 0xad, 0x41, 0x96, 0x32, 0xc7, 0xf5, 0x8c,
> +-    0xac, 0xd8, 0x43, 0x1a, 0x7c, 0x6b, 0xca, 0x1c, 0x12, 0x32, 0x43, 0x97, 0x5b, 0x4b, 0x4b, 0x7d,
> +-    0xc7, 0x41, 0x60, 0xe4, 0xae, 0xbe, 0xe3, 0x20, 0x40, 0x15, 0x80, 0x6e, 0x1f, 0x77, 0x8f, 0x7d,
> +-    0xe2, 0x7a, 0xcc, 0xc8, 0x8b, 0xb9, 0xc8, 0x17, 0xf4, 0x11, 0xdc, 0xf7, 0xed, 0x00, 0x7b, 0xac,
> +-    0x13, 0x81, 0x15, 0x04, 0x6c, 0x55, 0x4e, 0xec, 0x4c, 0xc0, 0x0d, 0xc8, 0x11, 0x9f, 0xb9, 0xc4,
> +-    0xa3, 0x06, 0xd4, 0xb4, 0x7a, 0xb1, 0xb5, 0xd6, 0x90, 0x97, 0xd9, 0x18, 0x5f, 0x66, 0x63, 0xcb,
> +-    0x3b, 0xb7, 0xc6, 0x20, 0x73, 0x03, 0x50, 0x34, 0xa9, 0xd4, 0x27, 0x1e, 0xc5, 0x68, 0x15, 0xd2,
> +-    0xbe, 0x4a, 0x6b, 0xc9, 0xe2, 0x43, 0xf3, 0x25, 0x94, 0x76, 0xf1, 0x00, 0x33, 0xbc, 0x28, 0xf1,
> +-    0x4f, 0x20, 0x87, 0xcf, 0x70, 0xb7, 0xe3, 0x3a, 0x32, 0xf3, 0xdb, 0x30, 0xba, 0xac, 0xea, 0x7b,
> +-    0x67, 0xb8, 0xdb, 0xde, 0xb5, 0x74, 0x3e, 0xd5, 0x76, 0xcc, 0x5f, 0x34, 0x58, 0x19, 0xbb, 0x4b,
> +-    0xda, 0x12, 0x55, 0xa1, 0x88, 0xcf, 0x5c, 0xd6, 0xa1, 0xcc, 0x66, 0x21, 0x15, 0xde, 0x4a, 0x16,
> +-    0xf0, 0x4f, 0xaf, 0xc4, 0x17, 0xb4, 0x05, 0x05, 0x6e, 0x61, 0xa7, 0x63, 0x33, 0x23, 0x2d, 0xa2,
> +-    0x2d, 0x5f, 0x8b, 0xf6, 0xf5, 0x98, 0xba, 0xdb, 0xf9, 0x8b, 0xcb, 0xea, 0x9d, 0xdf, 0xfe, 0xae,
> +-    0x6a, 0x56, 0x5e, 0x2e, 0xdb, 0x62, 0xe6, 0x5f, 0x1a, 0x20, 0x7e, 0xb6, 0x83, 0x80, 0x74, 0x31,
> +-    0xa5, 0xcb, 0x08, 0x6e, 0x8a, 0x31, 0xe9, 0x24, 0xc6, 0x64, 0xe2, 0x19, 0x93, 0x4d, 0x60, 0x8c,
> +-    0x3e, 0xc5, 0x98, 0x3a, 0x64, 0xa8, 0x8f, 0xbb, 0x82, 0x47, 0x49, 0x37, 0x2c, 0x10, 0xe6, 0x03,
> +-    0xf8, 0xdf, 0x54, 0x78, 0x32, 0xd9, 0xe6, 0x4f, 0xb0, 0x6a, 0x61, 0xea, 0xfe, 0x88, 0x0f, 0xd8,
> +-    0xf9, 0x52, 0x62, 0x5e, 0x83, 0xec, 0xa9, 0xeb, 0xb0, 0xbe, 0x08, 0xb8, 0x64, 0x49, 0x83, 0x9f,
> +-    0xbf, 0x8f, 0xdd, 0x5e, 0x9f, 0x89, 0x70, 0x4b, 0x96, 0xb2, 0xcc, 0x17, 0x70, 0x97, 0x5f, 0xe1,
> +-    0x72, 0xb8, 0xf4, 0x6f, 0x0a, 0x4a, 0xca, 0x9b, 0xa2, 0xd2, 0x6d, 0x35, 0x41, 0x51, 0x2f, 0x3d,
> +-    0xa1, 0xde, 0x33, 0x9e, 0x78, 0xc1, 0x3a, 0x7e, 0xf0, 0x95, 0xd6, 0xa3, 0xa8, 0x4a, 0x9c, 0x7c,
> +-    0xac, 0x84, 0x42, 0xd2, 0xd0, 0x52, 0xd0, 0x25, 0xa9, 0x41, 0x94, 0x3d, 0xf9, 0x19, 0xf6, 0xcc,
> +-    0x54, 0x44, 0x61, 0x7e, 0x45, 0xc0, 0xbb, 0x54, 0x44, 0x34, 0xe7, 0xc5, 0xc4, 0x9c, 0x33, 0x28,
> +-    0xbe, 0x70, 0x07, 0x83, 0xa5, 0x50, 0x87, 0x27, 0xc2, 0xed, 0x8d, 0x8b, 0xa5, 0x64, 0x29, 0x8b,
> +-    0xdf, 0x8a, 0x3d, 0x18, 0x6b, 0x2e, 0x1f, 0x9a, 0x5d, 0x58, 0xd9, 0x19, 0x10, 0x8a, 0xdb, 0xfb,
> +-    0xcb, 0xe2, 0xac, 0xbc, 0x2f, 0x59, 0xa4, 0xd2, 0x30, 0x9f, 0x42, 0xf1, 0xc0, 0x75, 0x16, 0x29,
> +-    0x81, 0xf9, 0x0d, 0xdc, 0x95, 0x30, 0xc5, 0xb9, 0xcf, 0xa1, 0xe0, 0xcb, 0x22, 0xc3, 0xd4, 0xd0,
> +-    0x44, 0x6b, 0xa9, 0xc5, 0x92, 0x46, 0x95, 0x62, 0xdb, 0x3b, 0x22, 0xd6, 0x64, 0x89, 0x49, 0xe1,
> +-    0xc1, 0x44, 0xc5, 0x6f, 0xd2, 0xe0, 0x10, 0x64, 0x7c, 0x9b, 0xf5, 0x15, 0x95, 0xc5, 0x38, 0x2a,
> +-    0xfe, 0xe9, 0x9b, 0x88, 0x7f, 0x07, 0xee, 0x7f, 0xeb, 0x3b, 0x37, 0xec, 0xa8, 0x2d, 0x28, 0x04,
> +-    0x98, 0x92, 0x30, 0xe8, 0x62, 0x29, 0xc6, 0x49, 0xee, 0x27, 0x30, 0x55, 0xe8, 0x01, 0x5b, 0x4a,
> +-    0xa1, 0x3f, 0x16, 0x75, 0xce, 0x9d, 0x25, 0x76, 0xa9, 0xaf, 0xa0, 0xf8, 0xc6, 0x76, 0x97, 0xb3,
> +-    0x5d, 0x00, 0x77, 0xa5, 0x2f, 0xb5, 0xdb, 0x4c, 0xf1, 0x69, 0xf3, 0x8b, 0x2f, 0xf5, 0x4e, 0xed,
> +-    0x68, 0x43, 0x0a, 0xe3, 0x42, 0xf6, 0x6d, 0x4a, 0xc9, 0x9b, 0xd0, 0xef, 0x43, 0xce, 0x65, 0x9b,
> +-    0xc9, 0x63, 0x25, 0x5d, 0x8c, 0x84, 0x98, 0x75, 0x58, 0xd9, 0x21, 0x9e, 0x87, 0xbb, 0x8b, 0xf2,
> +-    0x64, 0xda, 0x70, 0xef, 0x0a, 0xa9, 0x36, 0x7a, 0x08, 0x79, 0xfe, 0x14, 0xed, 0x4c, 0x12, 0x9f,
> +-    0xe3, 0xf6, 0x81, 0xeb, 0xf0, 0x29, 0xfe, 0x5c, 0x13, 0x53, 0xb2, 0x59, 0xe7, 0xb8, 0xcd, 0xa7,
> +-    0x0c, 0xc8, 0x9d, 0xe0, 0x80, 0xba, 0x44, 0x16, 0x5b, 0xc1, 0x1a, 0x9b, 0xe6, 0x26, 0xdc, 0x7b,
> +-    0xd5, 0x0f, 0x99, 0x43, 0x4e, 0xbd, 0x45, 0xb7, 0xb6, 0x0a, 0x69, 0x8f, 0x9c, 0x0a, 0xd7, 0x79,
> +-    0x8b, 0x0f, 0x79, 0xba, 0x0e, 0xec, 0x90, 0x2e, 0xea, 0x23, 0xe6, 0xfb, 0x50, 0xb2, 0x30, 0x0d,
> +-    0x87, 0x8b, 0x80, 0xad, 0x5f, 0x01, 0x32, 0xbc, 0x16, 0xd0, 0x4b, 0xc8, 0x8a, 0x9e, 0x82, 0xa6,
> +-    0x8a, 0x58, 0xbd, 0xb6, 0x1b, 0xd1, 0xe6, 0x55, 0x7e, 0x3c, 0x07, 0xa1, 0x92, 0xf6, 0x06, 0x74,
> +-    0xf9, 0xc8, 0x42, 0x4f, 0xe3, 0xc0, 0xd7, 0x5e, 0xb5, 0xe5, 0x8d, 0x45, 0x30, 0xe5, 0x58, 0x1e,
> +-    0x33, 0x60, 0x89, 0xc7, 0xbc, 0x2a, 0xbd, 0xc4, 0x63, 0x46, 0xea, 0x69, 0x1f, 0x74, 0xf9, 0x28,
> +-    0x43, 0xb1, 0xe0, 0xa9, 0xf7, 0x5f, 0xd9, 0x9c, 0x07, 0x51, 0x0e, 0xdb, 0x90, 0xe1, 0x22, 0x89,
> +-    0xaa, 0x71, 0xd8, 0x88, 0xca, 0x96, 0x6b, 0xc9, 0x00, 0xe5, 0x6a, 0x0b, 0xb2, 0xe2, 0xaa, 0xe3,
> +-    0x23, 0x8d, 0xb2, 0xa0, 0xbc, 0x7e, 0x8d, 0xfc, 0x7b, 0xfc, 0x3f, 0x1e, 0xb4, 0x03, 0xba, 0x64,
> +-    0x41, 0x7c, 0x78, 0x53, 0x0c, 0x49, 0x74, 0xb2, 0x0f, 0x10, 0x79, 0x6d, 0x7f, 0x10, 0x7b, 0x4f,
> +-    0x71, 0x3a, 0x9e, 0xe8, 0xf0, 0x0b, 0xc8, 0xf0, 0x56, 0x1a, 0x9f, 0xa3, 0x48, 0x93, 0x4d, 0x74,
> +-    0xf0, 0x25, 0x64, 0xb8, 0x72, 0xa1, 0x58, 0xce, 0x5c, 0x7f, 0xdb, 0x26, 0xfa, 0x69, 0x43, 0xe1,
> +-    0xea, 0x4d, 0x88, 0xde, 0x4b, 0xc8, 0xd0, 0xd4, 0x93, 0x31, 0xd1, 0xd5, 0x1e, 0xe4, 0x54, 0xa3,
> +-    0x46, 0xb1, 0x34, 0x99, 0xee, 0xe2, 0x89, 0x6e, 0x9e, 0x83, 0x2e, 0xdb, 0x53, 0x7c, 0xd9, 0x5c,
> +-    0x6b, 0x5d, 0x73, 0x42, 0xcb, 0x70, 0x29, 0x8f, 0xcf, 0x71, 0xa4, 0x61, 0xc4, 0xf3, 0x70, 0xaa,
> +-    0x0b, 0x28, 0x61, 0xa0, 0xc9, 0xc2, 0x40, 0x17, 0x0a, 0xc3, 0x84, 0xd5, 0x16, 0xe4, 0x94, 0xc0,
> +-    0x26, 0x24, 0x6a, 0x4a, 0xa7, 0xcb, 0x4f, 0xe6, 0x62, 0x94, 0xcf, 0xe7, 0x90, 0x1f, 0x2b, 0x2a,
> +-    0x8a, 0x5d, 0x30, 0xa3, 0xb7, 0x49, 0x59, 0xdb, 0xde, 0xbf, 0x78, 0x5b, 0xb9, 0xf3, 0xe7, 0xdb,
> +-    0xca, 0x9d, 0x9f, 0x47, 0x15, 0xed, 0x62, 0x54, 0xd1, 0x7e, 0x1f, 0x55, 0xb4, 0x7f, 0x46, 0x15,
> +-    0xed, 0xfb, 0x4f, 0x6e, 0xfb, 0xf3, 0xc5, 0x26, 0xff, 0xf3, 0x5d, 0xea, 0x50, 0x17, 0x5b, 0x3c,
> +-    0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x19, 0x17, 0x87, 0x57, 0x00, 0x11, 0x00, 0x00,
> ++    // 1306 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4d, 0x6f, 0xdb, 0x46,
> ++    0x13, 0x0e, 0xf5, 0x41, 0x49, 0xa3, 0xc8, 0x71, 0xf6, 0x75, 0xf2, 0x32, 0x0a, 0x20, 0x29, 0x4c,
> ++    0x93, 0xaa, 0x2d, 0x40, 0xa1, 0x0a, 0x1a, 0x14, 0x31, 0x90, 0xc2, 0x76, 0xdc, 0x40, 0x4d, 0x5a,
> ++    0x1b, 0x4c, 0x8a, 0x04, 0xbd, 0x18, 0xb4, 0xb8, 0x91, 0x08, 0x4b, 0x5c, 0x96, 0xbb, 0x74, 0xa2,
> ++    0x02, 0x05, 0x7a, 0xea, 0xa1, 0xa7, 0xfe, 0xac, 0x1c, 0x0b, 0xf4, 0xd2, 0x4b, 0xd3, 0x46, 0xff,
> ++    0xa0, 0xc7, 0xde, 0x8a, 0xfd, 0x90, 0x45, 0x49, 0xa4, 0x14, 0x07, 0xba, 0x18, 0x3b, 0xdc, 0x67,
> ++    0x67, 0x67, 0x67, 0x9f, 0x79, 0x66, 0x65, 0xd8, 0xee, 0x79, 0xac, 0x1f, 0x1d, 0x5b, 0x5d, 0x32,
> ++    0x6c, 0x75, 0x89, 0xcf, 0x1c, 0xcf, 0xc7, 0xa1, 0x1b, 0x1f, 0x86, 0x91, 0xcf, 0xbc, 0x21, 0x6e,
> ++    0x9d, 0xb6, 0x5b, 0xcc, 0xa1, 0x27, 0x2d, 0xda, 0xf7, 0x86, 0x56, 0x10, 0x12, 0x46, 0x10, 0x9a,
> ++    0xc2, 0x2c, 0x3e, 0x67, 0x9d, 0xb6, 0xab, 0xd7, 0x7a, 0x84, 0xf4, 0x06, 0xb8, 0x25, 0x10, 0xc7,
> ++    0xd1, 0x8b, 0x96, 0xe3, 0x8f, 0x24, 0xbc, 0x7a, 0x7d, 0x7e, 0x0a, 0x0f, 0x03, 0x36, 0x99, 0xdc,
> ++    0xea, 0x91, 0x1e, 0x11, 0xc3, 0x16, 0x1f, 0xa9, 0xaf, 0xf5, 0xf9, 0x25, 0x3c, 0x14, 0xca, 0x9c,
> ++    0x61, 0xa0, 0x00, 0x77, 0x57, 0xc6, 0xef, 0x04, 0x5e, 0x8b, 0x8d, 0x02, 0x4c, 0x5b, 0x43, 0x12,
> ++    0xf9, 0x4c, 0xad, 0xbb, 0x77, 0x8e, 0x75, 0xe2, 0xd8, 0xe2, 0x7c, 0x62, 0xad, 0xf9, 0x7b, 0x06,
> ++    0x2e, 0xef, 0x85, 0xd8, 0x61, 0xf8, 0xa9, 0x43, 0x4f, 0x6c, 0xfc, 0x7d, 0x84, 0x29, 0x43, 0x57,
> ++    0x21, 0xe3, 0xb9, 0x86, 0xd6, 0xd0, 0x9a, 0xa5, 0x5d, 0x7d, 0xfc, 0xa6, 0x9e, 0xe9, 0x3c, 0xb0,
> ++    0x33, 0x9e, 0x8b, 0xae, 0x82, 0x7e, 0x1c, 0xf9, 0xee, 0x00, 0x1b, 0x19, 0x3e, 0x67, 0x2b, 0x0b,
> ++    0xb5, 0x40, 0x0f, 0x09, 0x61, 0x2f, 0xa8, 0x91, 0x6d, 0x64, 0x9b, 0xe5, 0xf6, 0xff, 0xad, 0x78,
> ++    0x36, 0xf9, 0xc6, 0xd6, 0xd7, 0x3c, 0x60, 0x5b, 0xc1, 0x50, 0x15, 0x8a, 0x0c, 0x87, 0x43, 0xcf,
> ++    0x77, 0x06, 0x46, 0xae, 0xa1, 0x35, 0x8b, 0xf6, 0x99, 0x8d, 0xb6, 0x20, 0x4f, 0x99, 0xeb, 0xf9,
> ++    0x46, 0x5e, 0xec, 0x21, 0x0d, 0xbe, 0x35, 0x65, 0x2e, 0x89, 0x98, 0xa1, 0xcb, 0xad, 0xa5, 0xa5,
> ++    0xbe, 0xe3, 0x30, 0x34, 0x0a, 0x67, 0xdf, 0x71, 0x18, 0xa2, 0x1a, 0x40, 0xb7, 0x8f, 0xbb, 0x27,
> ++    0x01, 0xf1, 0x7c, 0x66, 0x14, 0xc5, 0x5c, 0xec, 0x0b, 0xfa, 0x04, 0x2e, 0x07, 0x4e, 0x88, 0x7d,
> ++    0x76, 0x14, 0x83, 0x95, 0x04, 0x6c, 0x53, 0x4e, 0xec, 0x4d, 0xc1, 0x16, 0x14, 0x48, 0xc0, 0x3c,
> ++    0xe2, 0x53, 0x03, 0x1a, 0x5a, 0xb3, 0xdc, 0xde, 0xb2, 0xe4, 0x65, 0x5a, 0x93, 0xcb, 0xb4, 0x76,
> ++    0xfc, 0x91, 0x3d, 0x01, 0x99, 0xb7, 0x01, 0xc5, 0x93, 0x4a, 0x03, 0xe2, 0x53, 0x8c, 0x36, 0x21,
> ++    0x1b, 0xa8, 0xb4, 0x56, 0x6c, 0x3e, 0x34, 0x1f, 0x43, 0xe5, 0x01, 0x1e, 0x60, 0x86, 0x57, 0x25,
> ++    0xfe, 0x26, 0x14, 0xf0, 0x2b, 0xdc, 0x3d, 0xf2, 0x5c, 0x99, 0xf9, 0x5d, 0x18, 0xbf, 0xa9, 0xeb,
> ++    0xfb, 0xaf, 0x70, 0xb7, 0xf3, 0xc0, 0xd6, 0xf9, 0x54, 0xc7, 0x35, 0x7f, 0xd6, 0x60, 0x63, 0xe2,
> ++    0x2e, 0x6d, 0x4b, 0x54, 0x87, 0x32, 0x7e, 0xe5, 0xb1, 0x23, 0xca, 0x1c, 0x16, 0x51, 0xe1, 0xad,
> ++    0x62, 0x03, 0xff, 0xf4, 0x44, 0x7c, 0x41, 0x3b, 0x50, 0xe2, 0x16, 0x76, 0x8f, 0x1c, 0x66, 0x64,
> ++    0xc5, 0x69, 0xab, 0x0b, 0xa7, 0x7d, 0x3a, 0xa1, 0xee, 0x6e, 0xf1, 0xf5, 0x9b, 0xfa, 0x85, 0x5f,
> ++    0xff, 0xaa, 0x6b, 0x76, 0x51, 0x2e, 0xdb, 0x61, 0xe6, 0x9f, 0x1a, 0x20, 0x1e, 0xdb, 0x61, 0x48,
> ++    0xba, 0x98, 0xd2, 0x75, 0x1c, 0x6e, 0x86, 0x31, 0xd9, 0x34, 0xc6, 0xe4, 0x92, 0x19, 0x93, 0x4f,
> ++    0x61, 0x8c, 0x3e, 0xc3, 0x98, 0x26, 0xe4, 0x68, 0x80, 0xbb, 0x82, 0x47, 0x69, 0x37, 0x2c, 0x10,
> ++    0xe6, 0x15, 0xf8, 0xdf, 0xcc, 0xf1, 0x64, 0xb2, 0xcd, 0x1f, 0x61, 0xd3, 0xc6, 0xd4, 0xfb, 0x01,
> ++    0x1f, 0xb2, 0xd1, 0x5a, 0xce, 0xbc, 0x05, 0xf9, 0x97, 0x9e, 0xcb, 0xfa, 0xe2, 0xc0, 0x15, 0x5b,
> ++    0x1a, 0x3c, 0xfe, 0x3e, 0xf6, 0x7a, 0x7d, 0x26, 0x8e, 0x5b, 0xb1, 0x95, 0x65, 0x3e, 0x82, 0x8b,
> ++    0xfc, 0x0a, 0xd7, 0xc3, 0xa5, 0x7f, 0x32, 0x50, 0x51, 0xde, 0x14, 0x95, 0xce, 0xab, 0x09, 0x8a,
> ++    0x7a, 0xd9, 0x29, 0xf5, 0xee, 0xf0, 0xc4, 0x0b, 0xd6, 0xf1, 0xc0, 0x37, 0xda, 0xd7, 0xe3, 0x2a,
> ++    0x71, 0xfa, 0xa9, 0x12, 0x0a, 0x49, 0x43, 0x5b, 0x41, 0xd7, 0xa4, 0x06, 0x71, 0xf6, 0x14, 0xe7,
> ++    0xd8, 0x33, 0x57, 0x11, 0xa5, 0xe5, 0x15, 0x01, 0xef, 0x53, 0x11, 0xf1, 0x9c, 0x97, 0x53, 0x73,
> ++    0xce, 0xa0, 0xfc, 0xc8, 0x1b, 0x0c, 0xd6, 0x42, 0x1d, 0x9e, 0x08, 0xaf, 0x37, 0x29, 0x96, 0x8a,
> ++    0xad, 0x2c, 0x7e, 0x2b, 0xce, 0x60, 0xa2, 0xb9, 0x7c, 0x68, 0x76, 0x61, 0x63, 0x6f, 0x40, 0x28,
> ++    0xee, 0x1c, 0xac, 0x8b, 0xb3, 0xf2, 0xbe, 0x64, 0x91, 0x4a, 0xc3, 0xbc, 0x05, 0xe5, 0x43, 0xcf,
> ++    0x5d, 0xa5, 0x04, 0xe6, 0x37, 0x70, 0x51, 0xc2, 0x14, 0xe7, 0xee, 0x43, 0x29, 0x90, 0x45, 0x86,
> ++    0xa9, 0xa1, 0x89, 0xd6, 0xd2, 0x48, 0x24, 0x8d, 0x2a, 0xc5, 0x8e, 0xff, 0x82, 0xd8, 0xd3, 0x25,
> ++    0x26, 0x85, 0x2b, 0x53, 0x15, 0x7f, 0x97, 0x06, 0x87, 0x20, 0x17, 0x38, 0xac, 0xaf, 0xa8, 0x2c,
> ++    0xc6, 0x71, 0xf1, 0xcf, 0xbe, 0x8b, 0xf8, 0xff, 0xab, 0xc1, 0xe5, 0x6f, 0x03, 0xf7, 0x1d, 0x5b,
> ++    0x6a, 0x1b, 0x4a, 0x21, 0xa6, 0x24, 0x0a, 0xbb, 0x58, 0xaa, 0x71, 0x9a, 0xff, 0x29, 0x0c, 0x3d,
> ++    0x87, 0xb2, 0xe3, 0xfb, 0x84, 0x39, 0x93, 0xa8, 0x78, 0x62, 0xee, 0x5a, 0x8b, 0x2f, 0x18, 0x6b,
> ++    0x21, 0x0e, 0x6b, 0x67, 0xba, 0x70, 0xdf, 0x67, 0xe1, 0xc8, 0x8e, 0xbb, 0xaa, 0xde, 0x87, 0xcd,
> ++    0x79, 0x00, 0xa7, 0xcc, 0x09, 0x1e, 0xc9, 0xd0, 0x6d, 0x3e, 0xe4, 0x77, 0x7c, 0xea, 0x0c, 0xa2,
> ++    0x49, 0xc5, 0x4b, 0xe3, 0x5e, 0xe6, 0x73, 0x4d, 0x69, 0x50, 0xc8, 0xd6, 0xa2, 0x41, 0x37, 0x84,
> ++    0x04, 0x71, 0x67, 0xa9, 0x0d, 0xf4, 0x2b, 0x28, 0x3f, 0x73, 0xbc, 0xf5, 0x6c, 0x17, 0xc2, 0x45,
> ++    0xe9, 0x4b, 0xed, 0x36, 0xa7, 0x0b, 0xda, 0x72, 0x5d, 0xc8, 0xbc, 0x57, 0xa7, 0xbc, 0x2d, 0x35,
> ++    0x7b, 0x65, 0x61, 0x6c, 0x4b, 0x35, 0x9e, 0x56, 0xc6, 0xc7, 0xbc, 0xcc, 0x1c, 0x26, 0xc3, 0x4a,
> ++    0xa3, 0x8c, 0x84, 0x98, 0x4d, 0xd8, 0xd8, 0x23, 0xbe, 0x8f, 0xbb, 0xab, 0xf2, 0x64, 0x3a, 0x70,
> ++    0xe9, 0x0c, 0xa9, 0x36, 0xba, 0x06, 0x45, 0xfe, 0x4a, 0x3e, 0x9a, 0x26, 0xbe, 0xc0, 0xed, 0x43,
> ++    0xcf, 0xe5, 0x53, 0x9c, 0x67, 0x62, 0x4a, 0xbe, 0x23, 0x0a, 0xdc, 0xe6, 0x53, 0x06, 0x14, 0x4e,
> ++    0x71, 0x48, 0x3d, 0x22, 0x75, 0xa0, 0x64, 0x4f, 0x4c, 0x73, 0x1b, 0x2e, 0x3d, 0xe9, 0x47, 0xcc,
> ++    0x25, 0x2f, 0xfd, 0x55, 0xb7, 0xb6, 0x09, 0x59, 0x9f, 0xbc, 0x14, 0xae, 0x8b, 0x36, 0x1f, 0xf2,
> ++    0x74, 0x1d, 0x3a, 0x11, 0x5d, 0xd5, 0xe2, 0xcc, 0x0f, 0xa1, 0x62, 0x63, 0x1a, 0x0d, 0x57, 0x01,
> ++    0xdb, 0xbf, 0x00, 0xe4, 0x78, 0x75, 0xa0, 0xc7, 0x90, 0x17, 0xed, 0x0e, 0x35, 0x92, 0xca, 0x28,
> ++    0xde, 0x57, 0xab, 0x37, 0x96, 0x20, 0x54, 0xd2, 0x9e, 0x81, 0x2e, 0xdf, 0x7f, 0xe8, 0x56, 0x12,
> ++    0x78, 0xe1, 0xc1, 0x5d, 0xbd, 0xbd, 0x0a, 0xa6, 0x1c, 0xcb, 0x30, 0x43, 0x96, 0x1a, 0xe6, 0x59,
> ++    0xe9, 0xa5, 0x86, 0x19, 0xab, 0xa7, 0x03, 0xd0, 0xe5, 0x7b, 0x11, 0x25, 0x82, 0x67, 0x9e, 0xa6,
> ++    0x55, 0x73, 0x19, 0x44, 0x39, 0xec, 0x40, 0x8e, 0xeb, 0x37, 0xaa, 0x27, 0x61, 0x63, 0x0d, 0xa0,
> ++    0xda, 0x48, 0x07, 0x28, 0x57, 0x3b, 0x90, 0x17, 0x57, 0x9d, 0x7c, 0xd2, 0x38, 0x0b, 0xaa, 0x57,
> ++    0x17, 0xc8, 0xbf, 0xcf, 0x7f, 0x8c, 0xa1, 0x3d, 0xd0, 0x25, 0x0b, 0x92, 0x8f, 0x37, 0xc3, 0x90,
> ++    0x54, 0x27, 0x07, 0x00, 0xb1, 0x1f, 0x02, 0x1f, 0x25, 0xde, 0x53, 0x52, 0x8b, 0x49, 0x75, 0xf8,
> ++    0x05, 0xe4, 0x78, 0x97, 0x4f, 0xce, 0x51, 0xac, 0xff, 0xa7, 0x3a, 0xf8, 0x12, 0x72, 0x5c, 0xb9,
> ++    0x50, 0x22, 0x67, 0x16, 0x9f, 0xdd, 0xa9, 0x7e, 0x3a, 0x50, 0x3a, 0x7b, 0xae, 0xa2, 0x0f, 0x52,
> ++    0x32, 0x34, 0xf3, 0x9a, 0x4d, 0x75, 0xb5, 0x0f, 0x05, 0xf5, 0x86, 0x40, 0x89, 0x34, 0x99, 0x7d,
> ++    0x60, 0xa4, 0xba, 0x79, 0x08, 0xba, 0x6c, 0x58, 0xc9, 0x65, 0xb3, 0xd0, 0xcc, 0x96, 0x1c, 0x2d,
> ++    0xc7, 0xa5, 0x3c, 0x39, 0xc7, 0xb1, 0x86, 0x91, 0xcc, 0xc3, 0x99, 0x2e, 0xa0, 0x84, 0x81, 0xa6,
> ++    0x0b, 0x03, 0x5d, 0x29, 0x0c, 0x53, 0x56, 0xdb, 0x50, 0x50, 0x02, 0x9b, 0x92, 0xa8, 0x19, 0x9d,
> ++    0xae, 0xde, 0x5c, 0x8a, 0x51, 0x3e, 0x1f, 0x42, 0x71, 0xa2, 0xa8, 0x28, 0x71, 0xc1, 0x9c, 0xde,
> ++    0xa6, 0x65, 0x6d, 0xf7, 0xe0, 0xf5, 0xdb, 0xda, 0x85, 0x3f, 0xde, 0xd6, 0x2e, 0xfc, 0x34, 0xae,
> ++    0x69, 0xaf, 0xc7, 0x35, 0xed, 0xb7, 0x71, 0x4d, 0xfb, 0x7b, 0x5c, 0xd3, 0xbe, 0xfb, 0xec, 0xbc,
> ++    0xff, 0x59, 0xd9, 0xe6, 0x7f, 0x9e, 0x67, 0x8e, 0x75, 0xb1, 0xc5, 0x9d, 0xff, 0x02, 0x00, 0x00,
> ++    0xff, 0xff, 0xd3, 0xbf, 0xc3, 0xa9, 0x9b, 0x11, 0x00, 0x00,
> + }
> +
> + func (m *CreateTaskRequest) Marshal() (dAtA []byte, err error) {
> +@@ -2000,6 +2007,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintShim(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -2826,6 +2852,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovShim(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovShim(uint64(len(k))) + 1 + len(v) + sovShim(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovShim(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3237,9 +3271,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ID:` + fmt.Sprintf("%v", this.ID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4019,10 +4064,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4092,10 +4134,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4210,10 +4249,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4335,10 +4371,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4605,10 +4638,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4659,10 +4689,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4815,10 +4842,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4933,10 +4957,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5289,10 +5310,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5446,10 +5464,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5584,10 +5599,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5670,10 +5682,7 @@ func (m *PidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5758,10 +5767,7 @@ func (m *PidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5912,10 +5918,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6028,16 +6031,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowShim
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowShim
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipShim(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipShim(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6152,10 +6279,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6225,10 +6349,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6343,10 +6464,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6449,10 +6567,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6535,10 +6650,7 @@ func (m *StatsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6625,10 +6737,7 @@ func (m *StatsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6711,10 +6820,7 @@ func (m *ConnectRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6835,10 +6941,7 @@ func (m *ConnectResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6941,10 +7044,7 @@ func (m *ShutdownRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7027,10 +7127,7 @@ func (m *PauseRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7113,10 +7210,7 @@ func (m *ResumeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +index 9a2374b56..fae67de4f 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +@@ -844,7 +844,7 @@ func (p *unmarshal) field(file *generator.FileDescriptor, msg *generator.Descrip
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1484,12 +1484,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> +-                    p.In()
> +-                    p.P(`return ErrInvalidLength`, p.localName)
> +-                    p.Out()
> +-                    p.P(`}`)
> +-                    p.P(`if (iNdEx + skippy) < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1512,12 +1507,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +             p.P(`return err`)
> +             p.Out()
> +             p.P(`}`)
> +-            p.P(`if skippy < 0 {`)
> +-            p.In()
> +-            p.P(`return ErrInvalidLength`, p.localName)
> +-            p.Out()
> +-            p.P(`}`)
> +-            p.P(`if (iNdEx + skippy) < 0 {`)
> ++            p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +             p.In()
> +             p.P(`return ErrInvalidLength`, p.localName)
> +             p.Out()
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +index 1ce0be2fa..f85c0cc81 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +@@ -318,7 +318,7 @@ func unescape(s string) (ch string, tail string, err error) {
> +             if i > utf8.MaxRune {
> +                     return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
> +             }
> +-            return string(i), s, nil
> ++            return string(rune(i)), s, nil
> +     }
> +     return "", "", fmt.Errorf(`unknown escape \%c`, r)
> + }
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +index 98e269d54..e3d4d9490 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +@@ -592,10 +592,7 @@ func (m *Any) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthAny
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthAny
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +index 58bf4b53b..83e886920 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +@@ -1677,10 +1677,7 @@ func (m *Api) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1920,10 +1917,7 @@ func (m *Method) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2038,10 +2032,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +index 3959f0669..4deafcb1c 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +@@ -415,10 +415,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDuration
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDuration
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +index 17e3aa558..9e94748b3 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +@@ -360,10 +360,7 @@ func (m *Empty) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEmpty
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEmpty
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +index 7226b57f7..6ae346d92 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +@@ -636,10 +636,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthFieldMask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthFieldMask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +index 61045ce10..8e6ce71b2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +@@ -422,10 +422,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSourceContext
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSourceContext
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +index cea553eef..c0457312e 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +@@ -1862,7 +1862,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthStruct
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1879,10 +1879,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2087,10 +2084,7 @@ func (m *Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2175,10 +2169,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +index b81875267..45db7b3bb 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +@@ -437,10 +437,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTimestamp
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTimestamp
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +index 13b7ec02f..791427bb2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +@@ -2483,10 +2483,7 @@ func (m *Type) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2795,10 +2792,7 @@ func (m *Field) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3004,10 +2998,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3143,10 +3134,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3265,10 +3253,7 @@ func (m *Option) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +index 8f1edb57d..8d415420a 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +@@ -2020,10 +2020,7 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2085,10 +2082,7 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2158,10 +2152,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2231,10 +2222,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2304,10 +2292,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2377,10 +2362,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2451,10 +2433,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2537,10 +2516,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2625,10 +2601,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +--
> +2.30.2
> +
> --
> 2.30.2
>

>
>
>





Re: [hardknott][PATCH] containerd: fix CVE-2021-3121

Martin Jansa
 

This seems to introduce:
ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: Fuzz detected:

Applying patch CVE-2021-3121.patch
patching file src/import/api/events/container.pb.go
patching file src/import/api/events/content.pb.go
patching file src/import/api/events/image.pb.go
patching file src/import/api/events/namespace.pb.go
patching file src/import/api/events/snapshot.pb.go
patching file src/import/api/events/task.pb.go
patching file src/import/api/services/containers/v1/containers.pb.go
patching file src/import/api/services/content/v1/content.pb.go
patching file src/import/api/services/diff/v1/diff.pb.go
patching file src/import/api/services/events/v1/events.pb.go
patching file src/import/api/services/images/v1/images.pb.go
patching file src/import/api/services/introspection/v1/introspection.pb.go
patching file src/import/api/services/leases/v1/leases.pb.go
patching file src/import/api/services/namespaces/v1/namespace.pb.go
patching file src/import/api/services/snapshots/v1/snapshots.pb.go
patching file src/import/api/services/tasks/v1/tasks.pb.go
Hunk #1 succeeded at 9 with fuzz 2.
patching file src/import/api/services/ttrpc/events/v1/events.pb.go
patching file src/import/api/services/version/v1/version.pb.go
patching file src/import/api/types/descriptor.pb.go
patching file src/import/api/types/metrics.pb.go
patching file src/import/api/types/mount.pb.go
patching file src/import/api/types/platform.pb.go
patching file src/import/api/types/task/task.pb.go
patching file src/import/runtime/linux/runctypes/runc.pb.go
patching file src/import/runtime/v1/shim/v1/shim.pb.go
patching file src/import/runtime/v2/runc/options/oci.pb.go
patching file src/import/runtime/v2/task/shim.pb.go
Hunk #1 succeeded at 10 with fuzz 1.
patching file src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
patching file src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
patching file src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
patching file src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go


The context lines in the patches can be updated with devtool:

    devtool modify containerd-opencontainers
    devtool finish --force-patch-refresh containerd-opencontainers <layer_path>

Don't forget to review changes done by devtool!

ERROR: containerd-opencontainers-v1.4.3+gitAUTOINC+33d90b72d1-r0 do_patch: QA Issue: Patch log indicates that patches do not apply cleanly. [patch-fuzz]

will send a fix shortly unless you're already cooking one.

On Tue, Apr 20, 2021 at 11:01 PM Bruce Ashfield <bruce.ashfield@...> wrote:

In message: [meta-virtualization][hardknott][PATCH] containerd: fix CVE-2021-3121
on 20/04/2021 Trevor Gamblin wrote:

> The master branch contains an uprev for containerd that includes the
> fix, so backport the patch separately for hardknott.
>
> Tested by pulling a hello-world image with podman to
> core-image-full-cmdline, with the following added to local.conf:
>
> DISTRO_FEATURES_append = " systemd seccomp"
> VIRTUAL-RUNTIME_init_manager = "systemd"
> DISTRO_FEATURES_BACKFILL_CONSIDERED = "sysvinit"
> VIRTUAL-RUNTIME_initscripts = "systemd-compat-units"
> NETWORK_MANAGER = "systemd"
> IMAGE_ROOTFS_EXTRA_SPACE = "8192000"
> PREFERRED_PROVIDER_virtual/containerd = "containerd-opencontainers"
> IMAGE_INSTALL_append = " podman virtual/containerd"

Thanks for the fix! I've queued it for hardknott.

Bruce

>
> Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> ---
>  .../containerd-opencontainers_git.bb          |    1 +
>  .../containerd/files/CVE-2021-3121.patch      | 4035 +++++++++++++++++
>  2 files changed, 4036 insertions(+)
>  create mode 100644 recipes-containers/containerd/files/CVE-2021-3121.patch
>
> diff --git a/recipes-containers/containerd/containerd-opencontainers_git.bb b/recipes-containers/containerd/containerd-opencontainers_git.bb
> index efa3626..9d33676 100644
> --- a/recipes-containers/containerd/containerd-opencontainers_git.bb
> +++ b/recipes-containers/containerd/containerd-opencontainers_git.bb
> @@ -9,6 +9,7 @@ SRCREV = "33d90b72d1e44987118ac111d4f7a108d412099b"
>  SRC_URI = "git://github.com/containerd/containerd;branch=release/1.4 \
>             file://0001-build-use-oe-provided-GO-and-flags.patch \
>             file://0001-Add-build-option-GODEBUG-1.patch \
> +           file://CVE-2021-3121.patch \
>            "

>  # Apache-2.0 for containerd
> diff --git a/recipes-containers/containerd/files/CVE-2021-3121.patch b/recipes-containers/containerd/files/CVE-2021-3121.patch
> new file mode 100644
> index 0000000..1a2c0f4
> --- /dev/null
> +++ b/recipes-containers/containerd/files/CVE-2021-3121.patch
> @@ -0,0 +1,4035 @@
> +From 9bd7f1043ce566d4600a8c61cd45bc99b2b17e36 Mon Sep 17 00:00:00 2001
> +From: Trevor Gamblin <trevor.gamblin@...>
> +Date: Tue, 20 Apr 2021 11:21:08 -0400
> +Subject: [PATCH] CVE-2021-3121
> +
> +Backports the fix at https://github.com/containerd/containerd/commit/1423e919,
> +but with extra refactors for pulled in from later versions to make the
> +fix apply correctly.
> +
> +Upstream-Status: Backport
> +CVE: CVE-2021-3121
> +
> +Signed-off-by: Trevor Gamblin <trevor.gamblin@...>
> +---
> + src/import/api/events/container.pb.go                    |  22 +-
> + src/import/api/events/content.pb.go                      |   5 +-
> + src/import/api/events/image.pb.go                        |  19 +-
> + src/import/api/events/namespace.pb.go                    |  19 +-
> + src/import/api/events/snapshot.pb.go                     |  15 +-
> + src/import/api/events/task.pb.go                         |  55 +-
> + src/import/api/services/containers/v1/containers.pb.go   |  64 +--
> + src/import/api/services/content/v1/content.pb.go         |  94 +---
> + src/import/api/services/diff/v1/diff.pb.go               |  24 +-
> + src/import/api/services/events/v1/events.pb.go           |  20 +-
> + src/import/api/services/images/v1/images.pb.go           |  52 +-
> + src/import/.../introspection/v1/introspection.pb.go      |  22 +-
> + src/import/api/services/leases/v1/leases.pb.go           |  59 +--
> + src/import/api/services/namespaces/v1/namespace.pb.go    |  52 +-
> + src/import/api/services/snapshots/v1/snapshots.pb.go     |  98 +---
> + src/import/api/services/tasks/v1/tasks.pb.go             | 484 +++++++++++-------
> + src/import/api/services/ttrpc/events/v1/events.pb.go     |  10 +-
> + src/import/api/services/version/v1/version.pb.go         |   5 +-
> + src/import/api/types/descriptor.pb.go                    |   7 +-
> + src/import/api/types/metrics.pb.go                       |   5 +-
> + src/import/api/types/mount.pb.go                         |   5 +-
> + src/import/api/types/platform.pb.go                      |   5 +-
> + src/import/api/types/task/task.pb.go                     |  10 +-
> + src/import/runtime/linux/runctypes/runc.pb.go            |  20 +-
> + src/import/runtime/v1/shim/v1/shim.pb.go                 | 100 +---
> + src/import/runtime/v2/runc/options/oci.pb.go             |  15 +-
> + src/import/runtime/v2/task/shim.pb.go                    | 470 ++++++++++-------
> + src/import/.../protobuf/plugin/unmarshal/unmarshal.go    |  16 +-
> + src/import/.../gogo/protobuf/proto/text_parser.go        |   2 +-
> + src/import/.../github.com/gogo/protobuf/types/any.pb.go  |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/api.pb.go  |  15 +-
> + src/import/.../gogo/protobuf/types/duration.pb.go        |   5 +-
> + src/import/.../gogo/protobuf/types/empty.pb.go           |   5 +-
> + src/import/.../gogo/protobuf/types/field_mask.pb.go      |   5 +-
> + src/import/.../gogo/protobuf/types/source_context.pb.go  |   5 +-
> + src/import/.../gogo/protobuf/types/struct.pb.go          |  17 +-
> + src/import/.../gogo/protobuf/types/timestamp.pb.go       |   5 +-
> + src/import/.../github.com/gogo/protobuf/types/type.pb.go |  25 +-
> + src/import/.../gogo/protobuf/types/wrappers.pb.go        |  45 +-
> + 39 files changed, 773 insertions(+), 1133 deletions(-)
> +
> +diff --git a/src/import/api/events/container.pb.go b/src/import/api/events/container.pb.go
> +index 0c1e0a939..fe002e073 100644
> +--- a/src/import/api/events/container.pb.go
> ++++ b/src/import/api/events/container.pb.go
> +@@ -835,10 +835,7 @@ func (m *ContainerCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -957,10 +954,7 @@ func (m *ContainerCreate_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1185,7 +1179,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainer
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1234,10 +1228,7 @@ func (m *ContainerUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1320,10 +1311,7 @@ func (m *ContainerDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainer
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainer
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/content.pb.go b/src/import/api/events/content.pb.go
> +index 959ea72d8..0a7ec9325 100644
> +--- a/src/import/api/events/content.pb.go
> ++++ b/src/import/api/events/content.pb.go
> +@@ -257,10 +257,7 @@ func (m *ContentDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/image.pb.go b/src/import/api/events/image.pb.go
> +index 13f60b017..747026945 100644
> +--- a/src/import/api/events/image.pb.go
> ++++ b/src/import/api/events/image.pb.go
> +@@ -697,7 +697,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *ImageCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImage
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *ImageUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *ImageDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImage
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImage
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/namespace.pb.go b/src/import/api/events/namespace.pb.go
> +index 37c3b78cf..d406a987e 100644
> +--- a/src/import/api/events/namespace.pb.go
> ++++ b/src/import/api/events/namespace.pb.go
> +@@ -697,7 +697,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -714,10 +714,7 @@ func (m *NamespaceCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -910,7 +907,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -927,10 +924,7 @@ func (m *NamespaceUpdate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1013,10 +1007,7 @@ func (m *NamespaceDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/snapshot.pb.go b/src/import/api/events/snapshot.pb.go
> +index 539297004..bec25c3a7 100644
> +--- a/src/import/api/events/snapshot.pb.go
> ++++ b/src/import/api/events/snapshot.pb.go
> +@@ -548,10 +548,7 @@ func (m *SnapshotPrepare) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -666,10 +663,7 @@ func (m *SnapshotCommit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -752,10 +746,7 @@ func (m *SnapshotRemove) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshot
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshot
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/events/task.pb.go b/src/import/api/events/task.pb.go
> +index 0f16695e3..f8f3a3f3d 100644
> +--- a/src/import/api/events/task.pb.go
> ++++ b/src/import/api/events/task.pb.go
> +@@ -1905,10 +1905,7 @@ func (m *TaskCreate) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2010,10 +2007,7 @@ func (m *TaskStart) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2199,10 +2193,7 @@ func (m *TaskDelete) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2369,10 +2360,7 @@ func (m *TaskIO) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2558,10 +2546,7 @@ func (m *TaskExit) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2644,10 +2629,7 @@ func (m *TaskOOM) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2762,10 +2744,7 @@ func (m *TaskExecAdded) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2899,10 +2878,7 @@ func (m *TaskExecStarted) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2985,10 +2961,7 @@ func (m *TaskPaused) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3071,10 +3044,7 @@ func (m *TaskResumed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3189,10 +3159,7 @@ func (m *TaskCheckpointed) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/containers/v1/containers.pb.go b/src/import/api/services/containers/v1/containers.pb.go
> +index d951b2683..af56c7de2 100644
> +--- a/src/import/api/services/containers/v1/containers.pb.go
> ++++ b/src/import/api/services/containers/v1/containers.pb.go
> +@@ -2106,7 +2106,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2469,7 +2469,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContainers
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2486,10 +2486,7 @@ func (m *Container) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2608,10 +2605,7 @@ func (m *Container_Runtime) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2694,10 +2688,7 @@ func (m *GetContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2781,10 +2772,7 @@ func (m *GetContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2867,10 +2855,7 @@ func (m *ListContainersRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2955,10 +2940,7 @@ func (m *ListContainersResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3042,10 +3024,7 @@ func (m *CreateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3129,10 +3108,7 @@ func (m *CreateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3252,10 +3228,7 @@ func (m *UpdateContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3339,10 +3312,7 @@ func (m *UpdateContainerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3425,10 +3395,7 @@ func (m *DeleteContainerRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3515,10 +3482,7 @@ func (m *ListContainerMessage) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContainers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContainers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/content/v1/content.pb.go b/src/import/api/services/content/v1/content.pb.go
> +index 1cf0aaa91..97c7d4a92 100644
> +--- a/src/import/api/services/content/v1/content.pb.go
> ++++ b/src/import/api/services/content/v1/content.pb.go
> +@@ -3280,7 +3280,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3297,10 +3297,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3383,10 +3380,7 @@ func (m *InfoRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3470,10 +3464,7 @@ func (m *InfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3593,10 +3584,7 @@ func (m *UpdateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3680,10 +3668,7 @@ func (m *UpdateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3766,10 +3751,7 @@ func (m *ListContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3854,10 +3836,7 @@ func (m *ListContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3940,10 +3919,7 @@ func (m *DeleteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4064,10 +4040,7 @@ func (m *ReadContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4171,10 +4144,7 @@ func (m *ReadContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4393,10 +4363,7 @@ func (m *Status) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4479,10 +4446,7 @@ func (m *StatusRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4569,10 +4533,7 @@ func (m *StatusResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4655,10 +4616,7 @@ func (m *ListStatusesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4743,10 +4701,7 @@ func (m *ListStatusesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,7 +5017,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthContent
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -5079,10 +5034,7 @@ func (m *WriteContentRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5288,10 +5240,7 @@ func (m *WriteContentResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5374,10 +5323,7 @@ func (m *AbortRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthContent
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthContent
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/diff/v1/diff.pb.go b/src/import/api/services/diff/v1/diff.pb.go
> +index 48379234d..b1450ceb8 100644
> +--- a/src/import/api/services/diff/v1/diff.pb.go
> ++++ b/src/import/api/services/diff/v1/diff.pb.go
> +@@ -1063,7 +1063,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1080,10 +1080,7 @@ func (m *ApplyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1170,10 +1167,7 @@ func (m *ApplyResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1466,7 +1460,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDiff
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1483,10 +1477,7 @@ func (m *DiffRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1573,10 +1564,7 @@ func (m *DiffResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDiff
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDiff
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/events/v1/events.pb.go b/src/import/api/services/events/v1/events.pb.go
> +index a1674f862..4373f3bf2 100644
> +--- a/src/import/api/services/events/v1/events.pb.go
> ++++ b/src/import/api/services/events/v1/events.pb.go
> +@@ -916,10 +916,7 @@ func (m *PublishRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1006,10 +1003,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1092,10 +1086,7 @@ func (m *SubscribeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1279,10 +1270,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/images/v1/images.pb.go b/src/import/api/services/images/v1/images.pb.go
> +index db912b68b..de08cc083 100644
> +--- a/src/import/api/services/images/v1/images.pb.go
> ++++ b/src/import/api/services/images/v1/images.pb.go
> +@@ -1707,7 +1707,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthImages
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1823,10 +1823,7 @@ func (m *Image) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1909,10 +1906,7 @@ func (m *GetImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1999,10 +1993,7 @@ func (m *GetImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2086,10 +2077,7 @@ func (m *CreateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2173,10 +2161,7 @@ func (m *CreateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2296,10 +2281,7 @@ func (m *UpdateImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2383,10 +2365,7 @@ func (m *UpdateImageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2469,10 +2448,7 @@ func (m *ListImagesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2557,10 +2533,7 @@ func (m *ListImagesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2663,10 +2636,7 @@ func (m *DeleteImageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthImages
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthImages
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/introspection/v1/introspection.pb.go b/src/import/api/services/introspection/v1/introspection.pb.go
> +index b9f912b09..d23c8b61a 100644
> +--- a/src/import/api/services/introspection/v1/introspection.pb.go
> ++++ b/src/import/api/services/introspection/v1/introspection.pb.go
> +@@ -1098,7 +1098,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthIntrospection
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1183,10 +1183,7 @@ func (m *Plugin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1269,10 +1266,7 @@ func (m *PluginsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1357,10 +1351,7 @@ func (m *PluginsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1443,10 +1434,7 @@ func (m *ServerResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthIntrospection
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthIntrospection
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/leases/v1/leases.pb.go b/src/import/api/services/leases/v1/leases.pb.go
> +index 4dbac3e09..5e7cab71f 100644
> +--- a/src/import/api/services/leases/v1/leases.pb.go
> ++++ b/src/import/api/services/leases/v1/leases.pb.go
> +@@ -1906,7 +1906,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1923,10 +1923,7 @@ func (m *Lease) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2119,7 +2116,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthLeases
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -2136,10 +2133,7 @@ func (m *CreateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2226,10 +2220,7 @@ func (m *CreateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2332,10 +2323,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2418,10 +2406,7 @@ func (m *ListRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2506,10 +2491,7 @@ func (m *ListResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2624,10 +2606,7 @@ func (m *Resource) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2743,10 +2722,7 @@ func (m *AddResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2862,10 +2838,7 @@ func (m *DeleteResourceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2948,10 +2921,7 @@ func (m *ListResourcesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3036,10 +3006,7 @@ func (m *ListResourcesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthLeases
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthLeases
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/namespaces/v1/namespace.pb.go b/src/import/api/services/namespaces/v1/namespace.pb.go
> +index 0d1d650ba..76f9e1172 100644
> +--- a/src/import/api/services/namespaces/v1/namespace.pb.go
> ++++ b/src/import/api/services/namespaces/v1/namespace.pb.go
> +@@ -1609,7 +1609,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthNamespace
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1626,10 +1626,7 @@ func (m *Namespace) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1712,10 +1709,7 @@ func (m *GetNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1799,10 +1793,7 @@ func (m *GetNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1885,10 +1876,7 @@ func (m *ListNamespacesRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1973,10 +1961,7 @@ func (m *ListNamespacesResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2060,10 +2045,7 @@ func (m *CreateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2147,10 +2129,7 @@ func (m *CreateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2270,10 +2249,7 @@ func (m *UpdateNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2357,10 +2333,7 @@ func (m *UpdateNamespaceResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2443,10 +2416,7 @@ func (m *DeleteNamespaceRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthNamespace
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthNamespace
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/snapshots/v1/snapshots.pb.go b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +index 1877afded..046c97b01 100644
> +--- a/src/import/api/services/snapshots/v1/snapshots.pb.go
> ++++ b/src/import/api/services/snapshots/v1/snapshots.pb.go
> +@@ -3140,7 +3140,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3157,10 +3157,7 @@ func (m *PrepareSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3245,10 +3242,7 @@ func (m *PrepareSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3505,7 +3499,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -3522,10 +3516,7 @@ func (m *ViewSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3610,10 +3601,7 @@ func (m *ViewSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3728,10 +3716,7 @@ func (m *MountsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3816,10 +3801,7 @@ func (m *MountsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3934,10 +3916,7 @@ func (m *RemoveSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4194,7 +4173,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4211,10 +4190,7 @@ func (m *CommitSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4329,10 +4305,7 @@ func (m *StatSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4642,7 +4615,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthSnapshots
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -4659,10 +4632,7 @@ func (m *Info) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4746,10 +4716,7 @@ func (m *StatSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4901,10 +4868,7 @@ func (m *UpdateSnapshotRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4988,10 +4952,7 @@ func (m *UpdateSnapshotResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5106,10 +5067,7 @@ func (m *ListSnapshotsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5194,10 +5152,7 @@ func (m *ListSnapshotsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5312,10 +5267,7 @@ func (m *UsageRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5404,10 +5356,7 @@ func (m *UsageResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5490,10 +5439,7 @@ func (m *CleanupRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSnapshots
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSnapshots
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/tasks/v1/tasks.pb.go b/src/import/api/services/tasks/v1/tasks.pb.go
> +index 5ac5af11b..4904e6508 100644
> +--- a/src/import/api/services/tasks/v1/tasks.pb.go
> ++++ b/src/import/api/services/tasks/v1/tasks.pb.go
> +@@ -9,6 +9,7 @@ import (
> +     types "github.com/containerd/containerd/api/types"
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     github_com_opencontainers_go_digest "github.com/opencontainers/go-digest"
> +@@ -934,11 +935,12 @@ func (m *CheckpointTaskResponse) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskResponse proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ContainerID          string      `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ContainerID          string            `protobuf:"bytes,1,opt,name=container_id,json=containerId,proto3" json:"container_id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1155,6 +1157,7 @@ func init() {
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.services.tasks.v1.CheckpointTaskRequest")
> +     proto.RegisterType((*CheckpointTaskResponse)(nil), "containerd.services.tasks.v1.CheckpointTaskResponse")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.services.tasks.v1.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.services.tasks.v1.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*MetricsRequest)(nil), "containerd.services.tasks.v1.MetricsRequest")
> +     proto.RegisterType((*MetricsResponse)(nil), "containerd.services.tasks.v1.MetricsResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.services.tasks.v1.WaitRequest")
> +@@ -1166,90 +1169,93 @@ func init() {
> + }
> +
> + var fileDescriptor_310e7127b8a26f14 = []byte{
> +-    // 1318 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x4b, 0x6f, 0x1b, 0x45,
> +-    0x1c, 0xef, 0xfa, 0xed, 0xbf, 0x93, 0x36, 0x59, 0xd2, 0x60, 0x96, 0x2a, 0x0e, 0xcb, 0xc5, 0x04,
> +-    0xba, 0x4b, 0x5d, 0x54, 0x21, 0x5a, 0x21, 0x35, 0x0f, 0x22, 0x0b, 0xaa, 0xa6, 0xdb, 0x02, 0x55,
> +-    0x25, 0x14, 0xb6, 0xbb, 0x13, 0x67, 0x14, 0x7b, 0x67, 0xbb, 0x33, 0x4e, 0x1b, 0x38, 0xc0, 0x47,
> +-    0xe8, 0x95, 0x0b, 0x9f, 0x27, 0x47, 0x8e, 0x08, 0x55, 0x81, 0xfa, 0x5b, 0x70, 0x43, 0xf3, 0xd8,
> +-    0xcd, 0xc6, 0x8e, 0xbd, 0x4e, 0xd3, 0x70, 0x69, 0x67, 0x66, 0xff, 0xaf, 0xf9, 0xcd, 0xff, 0xf1,
> +-    0x73, 0x60, 0xb5, 0x83, 0xd9, 0x6e, 0xff, 0xa9, 0xe5, 0x91, 0x9e, 0xed, 0x91, 0x80, 0xb9, 0x38,
> +-    0x40, 0x91, 0x9f, 0x5e, 0xba, 0x21, 0xb6, 0x29, 0x8a, 0xf6, 0xb1, 0x87, 0xa8, 0xcd, 0x5c, 0xba,
> +-    0x47, 0xed, 0xfd, 0x1b, 0x72, 0x61, 0x85, 0x11, 0x61, 0x44, 0xbf, 0x76, 0x2c, 0x6d, 0xc5, 0x92,
> +-    0x96, 0x14, 0xd8, 0xbf, 0x61, 0xbc, 0xdf, 0x21, 0xa4, 0xd3, 0x45, 0xb6, 0x90, 0x7d, 0xda, 0xdf,
> +-    0xb1, 0x51, 0x2f, 0x64, 0x07, 0x52, 0xd5, 0x78, 0x6f, 0xf8, 0xa3, 0x1b, 0xc4, 0x9f, 0x16, 0x3a,
> +-    0xa4, 0x43, 0xc4, 0xd2, 0xe6, 0x2b, 0x75, 0x7a, 0x6b, 0xaa, 0x78, 0xd9, 0x41, 0x88, 0xa8, 0xdd,
> +-    0x23, 0xfd, 0x80, 0x29, 0xbd, 0xcf, 0xcf, 0xa2, 0x87, 0x58, 0x84, 0x3d, 0x75, 0x3b, 0xe3, 0xf6,
> +-    0x19, 0x34, 0x7d, 0x44, 0xbd, 0x08, 0x87, 0x8c, 0x44, 0x4a, 0xf9, 0x8b, 0x33, 0x28, 0x73, 0xc4,
> +-    0xc4, 0x3f, 0x4a, 0xb7, 0x31, 0x8c, 0x0d, 0xc3, 0x3d, 0x44, 0x99, 0xdb, 0x0b, 0xa5, 0x80, 0x79,
> +-    0x98, 0x83, 0xf9, 0xb5, 0x08, 0xb9, 0x0c, 0x3d, 0x72, 0xe9, 0x9e, 0x83, 0x9e, 0xf5, 0x11, 0x65,
> +-    0x7a, 0x0b, 0x66, 0x12, 0xf3, 0xdb, 0xd8, 0xaf, 0x6b, 0xcb, 0x5a, 0xb3, 0xba, 0x7a, 0x65, 0x70,
> +-    0xd4, 0xa8, 0xad, 0xc5, 0xe7, 0xed, 0x75, 0xa7, 0x96, 0x08, 0xb5, 0x7d, 0xdd, 0x86, 0x52, 0x44,
> +-    0x08, 0xdb, 0xa1, 0xf5, 0xfc, 0x72, 0xbe, 0x59, 0x6b, 0xbd, 0x6b, 0xa5, 0x9e, 0x54, 0x44, 0x67,
> +-    0xdd, 0xe3, 0x60, 0x3a, 0x4a, 0x4c, 0x5f, 0x80, 0x22, 0x65, 0x3e, 0x0e, 0xea, 0x05, 0x6e, 0xdd,
> +-    0x91, 0x1b, 0x7d, 0x11, 0x4a, 0x94, 0xf9, 0xa4, 0xcf, 0xea, 0x45, 0x71, 0xac, 0x76, 0xea, 0x1c,
> +-    0x45, 0x51, 0xbd, 0x94, 0x9c, 0xa3, 0x28, 0xd2, 0x0d, 0xa8, 0x30, 0x14, 0xf5, 0x70, 0xe0, 0x76,
> +-    0xeb, 0xe5, 0x65, 0xad, 0x59, 0x71, 0x92, 0xbd, 0x7e, 0x07, 0xc0, 0xdb, 0x45, 0xde, 0x5e, 0x48,
> +-    0x70, 0xc0, 0xea, 0x95, 0x65, 0xad, 0x59, 0x6b, 0x5d, 0x1b, 0x0d, 0x6b, 0x3d, 0x41, 0xdc, 0x49,
> +-    0xc9, 0xeb, 0x16, 0x94, 0x49, 0xc8, 0x30, 0x09, 0x68, 0xbd, 0x2a, 0x54, 0x17, 0x2c, 0x89, 0xa6,
> +-    0x15, 0xa3, 0x69, 0xdd, 0x0d, 0x0e, 0x9c, 0x58, 0xc8, 0x7c, 0x02, 0x7a, 0x1a, 0x49, 0x1a, 0x92,
> +-    0x80, 0xa2, 0x37, 0x82, 0x72, 0x0e, 0xf2, 0x21, 0xf6, 0xeb, 0xb9, 0x65, 0xad, 0x39, 0xeb, 0xf0,
> +-    0xa5, 0xd9, 0x81, 0x99, 0x87, 0xcc, 0x8d, 0xd8, 0x79, 0x1e, 0xe8, 0x43, 0x28, 0xa3, 0x17, 0xc8,
> +-    0xdb, 0x56, 0x96, 0xab, 0xab, 0x30, 0x38, 0x6a, 0x94, 0x36, 0x5e, 0x20, 0xaf, 0xbd, 0xee, 0x94,
> +-    0xf8, 0xa7, 0xb6, 0x6f, 0x7e, 0x00, 0xb3, 0xca, 0x91, 0x8a, 0x5f, 0xc5, 0xa2, 0x1d, 0xc7, 0xb2,
> +-    0x09, 0xf3, 0xeb, 0xa8, 0x8b, 0xce, 0x9d, 0x31, 0xe6, 0xef, 0x1a, 0x5c, 0x96, 0x96, 0x12, 0x6f,
> +-    0x8b, 0x90, 0x4b, 0x94, 0x4b, 0x83, 0xa3, 0x46, 0xae, 0xbd, 0xee, 0xe4, 0xf0, 0x29, 0x88, 0xe8,
> +-    0x0d, 0xa8, 0xa1, 0x17, 0x98, 0x6d, 0x53, 0xe6, 0xb2, 0x3e, 0xcf, 0x39, 0xfe, 0x05, 0xf8, 0xd1,
> +-    0x43, 0x71, 0xa2, 0xdf, 0x85, 0x2a, 0xdf, 0x21, 0x7f, 0xdb, 0x65, 0x22, 0xc5, 0x6a, 0x2d, 0x63,
> +-    0xe4, 0x01, 0x1f, 0xc5, 0xe5, 0xb0, 0x5a, 0x39, 0x3c, 0x6a, 0x5c, 0x7a, 0xf9, 0x77, 0x43, 0x73,
> +-    0x2a, 0x52, 0xed, 0x2e, 0x33, 0x09, 0x2c, 0xc8, 0xf8, 0xb6, 0x22, 0xe2, 0x21, 0x4a, 0x2f, 0x1c,
> +-    0x7d, 0x04, 0xb0, 0x89, 0x2e, 0xfe, 0x91, 0x37, 0xa0, 0x26, 0xdc, 0x28, 0xd0, 0x6f, 0x41, 0x39,
> +-    0x94, 0x17, 0x14, 0x2e, 0x86, 0x6a, 0x64, 0xff, 0x86, 0x2a, 0x93, 0x18, 0x84, 0x58, 0xd8, 0x5c,
> +-    0x81, 0xb9, 0x6f, 0x30, 0x65, 0x3c, 0x0d, 0x12, 0x68, 0x16, 0xa1, 0xb4, 0x83, 0xbb, 0x0c, 0x45,
> +-    0x32, 0x5a, 0x47, 0xed, 0x78, 0xd2, 0xa4, 0x64, 0x93, 0xda, 0x28, 0x8a, 0x16, 0x5f, 0xd7, 0x44,
> +-    0xc7, 0x98, 0xec, 0x56, 0x8a, 0x9a, 0x2f, 0x35, 0xa8, 0x7d, 0x8d, 0xbb, 0xdd, 0x8b, 0x06, 0x49,
> +-    0x34, 0x1c, 0xdc, 0xe1, 0x6d, 0x45, 0xe6, 0x96, 0xda, 0xf1, 0x54, 0x74, 0xbb, 0x5d, 0x91, 0x51,
> +-    0x15, 0x87, 0x2f, 0xcd, 0x7f, 0x35, 0xd0, 0xb9, 0xf2, 0x5b, 0xc8, 0x92, 0xa4, 0x27, 0xe6, 0x4e,
> +-    0xef, 0x89, 0xf9, 0x31, 0x3d, 0xb1, 0x30, 0xb6, 0x27, 0x16, 0x87, 0x7a, 0x62, 0x13, 0x0a, 0x34,
> +-    0x44, 0x9e, 0xe8, 0xa2, 0xe3, 0x5a, 0x9a, 0x90, 0x48, 0xa3, 0x54, 0x1e, 0x9b, 0x4a, 0x57, 0xe1,
> +-    0x9d, 0x13, 0x57, 0x97, 0x2f, 0x6b, 0xfe, 0xa6, 0xc1, 0x9c, 0x83, 0x28, 0xfe, 0x09, 0x6d, 0xb1,
> +-    0x83, 0x0b, 0x7f, 0xaa, 0x05, 0x28, 0x3e, 0xc7, 0x3e, 0xdb, 0x55, 0x2f, 0x25, 0x37, 0x1c, 0x9d,
> +-    0x5d, 0x84, 0x3b, 0xbb, 0xb2, 0xfa, 0x67, 0x1d, 0xb5, 0x33, 0x7f, 0x81, 0xcb, 0x6b, 0x5d, 0x42,
> +-    0x51, 0xfb, 0xfe, 0xff, 0x11, 0x98, 0x7c, 0xce, 0xbc, 0x78, 0x05, 0xb9, 0x31, 0xbf, 0x82, 0xb9,
> +-    0x2d, 0xb7, 0x4f, 0xcf, 0xdd, 0x3f, 0x37, 0x61, 0xde, 0x41, 0xb4, 0xdf, 0x3b, 0xb7, 0xa1, 0x0d,
> +-    0xb8, 0xc2, 0x8b, 0x73, 0x0b, 0xfb, 0xe7, 0x49, 0x5e, 0xd3, 0x91, 0xfd, 0x40, 0x9a, 0x51, 0x25,
> +-    0xfe, 0x25, 0x54, 0x55, 0xbb, 0x40, 0x71, 0x99, 0x2f, 0x4f, 0x2a, 0xf3, 0x76, 0xb0, 0x43, 0x9c,
> +-    0x63, 0x15, 0xf3, 0x95, 0x06, 0x57, 0xd7, 0x92, 0x99, 0x7c, 0x5e, 0x8e, 0xb2, 0x0d, 0xf3, 0xa1,
> +-    0x1b, 0xa1, 0x80, 0x6d, 0xa7, 0x78, 0x81, 0x7c, 0xbe, 0x16, 0xef, 0xff, 0x7f, 0x1d, 0x35, 0x56,
> +-    0x52, 0x6c, 0x8b, 0x84, 0x28, 0x48, 0xd4, 0xa9, 0xdd, 0x21, 0xd7, 0x7d, 0xdc, 0x41, 0x94, 0x59,
> +-    0xeb, 0xe2, 0x3f, 0x67, 0x4e, 0x1a, 0x5b, 0x3b, 0x95, 0x33, 0xe4, 0xa7, 0xe1, 0x0c, 0x8f, 0x61,
> +-    0x71, 0xf8, 0x76, 0x09, 0x70, 0xb5, 0x63, 0x26, 0x78, 0x6a, 0x87, 0x1c, 0x21, 0x2f, 0x69, 0x05,
> +-    0xf3, 0x67, 0x98, 0xff, 0x36, 0xf4, 0xdf, 0x02, 0xaf, 0x6b, 0x41, 0x35, 0x42, 0x94, 0xf4, 0x23,
> +-    0x0f, 0x51, 0x81, 0xd5, 0xb8, 0x4b, 0x1d, 0x8b, 0x99, 0x2b, 0x70, 0xf9, 0x9e, 0x24, 0xc0, 0xb1,
> +-    0xe7, 0x3a, 0x94, 0xe5, 0x24, 0x90, 0x57, 0xa9, 0x3a, 0xf1, 0x96, 0x27, 0x5f, 0x22, 0x9b, 0xcc,
> +-    0x85, 0xb2, 0xe2, 0xcf, 0xea, 0xde, 0xf5, 0x53, 0xb8, 0xa4, 0x10, 0x70, 0x62, 0x41, 0x73, 0x07,
> +-    0x6a, 0xdf, 0xbb, 0xf8, 0xe2, 0x67, 0x67, 0x04, 0x33, 0xd2, 0x8f, 0x8a, 0x75, 0x88, 0x87, 0x68,
> +-    0x93, 0x79, 0x48, 0xee, 0x4d, 0x78, 0x48, 0xeb, 0xd5, 0x0c, 0x14, 0xc5, 0xe4, 0xd4, 0xf7, 0xa0,
> +-    0x24, 0x39, 0xa6, 0x6e, 0x5b, 0x93, 0x7e, 0x31, 0x59, 0x23, 0x9c, 0xde, 0xf8, 0x74, 0x7a, 0x05,
> +-    0x75, 0xb5, 0x1f, 0xa1, 0x28, 0xb8, 0xa0, 0xbe, 0x32, 0x59, 0x35, 0xcd, 0x4c, 0x8d, 0x8f, 0xa7,
> +-    0x92, 0x55, 0x1e, 0x3a, 0x50, 0x92, 0x04, 0x2b, 0xeb, 0x3a, 0x23, 0x84, 0xd3, 0xf8, 0x64, 0x1a,
> +-    0x85, 0xc4, 0xd1, 0x33, 0x98, 0x3d, 0xc1, 0xe4, 0xf4, 0xd6, 0x34, 0xea, 0x27, 0x07, 0xfa, 0x19,
> +-    0x5d, 0x3e, 0x81, 0xfc, 0x26, 0x62, 0x7a, 0x73, 0xb2, 0xd2, 0x31, 0xdd, 0x33, 0x3e, 0x9a, 0x42,
> +-    0x32, 0xc1, 0xad, 0xc0, 0x3b, 0xad, 0x6e, 0x4d, 0x56, 0x19, 0x66, 0x67, 0x86, 0x3d, 0xb5, 0xbc,
> +-    0x72, 0xd4, 0x86, 0x02, 0x27, 0x5b, 0x7a, 0x46, 0x6c, 0x29, 0x42, 0x66, 0x2c, 0x8e, 0x24, 0xf7,
> +-    0x06, 0xff, 0xb1, 0xae, 0x6f, 0x41, 0x81, 0x97, 0x92, 0x9e, 0x91, 0x87, 0xa3, 0x44, 0x6a, 0xac,
> +-    0xc5, 0x87, 0x50, 0x4d, 0x38, 0x46, 0x16, 0x14, 0xc3, 0x64, 0x64, 0xac, 0xd1, 0xfb, 0x50, 0x56,
> +-    0xec, 0x40, 0xcf, 0x78, 0xef, 0x93, 0x24, 0x62, 0x82, 0xc1, 0xa2, 0x98, 0xf6, 0x59, 0x11, 0x0e,
> +-    0x53, 0x82, 0xb1, 0x06, 0x1f, 0x40, 0x49, 0x8e, 0xfd, 0xac, 0xa2, 0x19, 0x21, 0x07, 0x63, 0x4d,
> +-    0x62, 0xa8, 0xc4, 0x93, 0x5b, 0xbf, 0x9e, 0x9d, 0x23, 0x29, 0xa2, 0x60, 0x58, 0xd3, 0x8a, 0xab,
> +-    0x8c, 0x7a, 0x0e, 0x90, 0x9a, 0x97, 0x37, 0x33, 0x20, 0x3e, 0x6d, 0xf2, 0x1b, 0x9f, 0x9d, 0x4d,
> +-    0x49, 0x39, 0x7e, 0x00, 0x25, 0x39, 0x10, 0xb3, 0x60, 0x1b, 0x19, 0x9b, 0x63, 0x61, 0xdb, 0x81,
> +-    0xb2, 0x1a, 0x5d, 0x59, 0xb9, 0x72, 0x72, 0x1a, 0x1a, 0xd7, 0xa7, 0x94, 0x56, 0xa1, 0xff, 0x00,
> +-    0x05, 0x3e, 0x73, 0xb2, 0xaa, 0x30, 0x35, 0xff, 0x8c, 0x95, 0x69, 0x44, 0xa5, 0xf9, 0xd5, 0xef,
> +-    0x0e, 0x5f, 0x2f, 0x5d, 0xfa, 0xf3, 0xf5, 0xd2, 0xa5, 0x5f, 0x07, 0x4b, 0xda, 0xe1, 0x60, 0x49,
> +-    0xfb, 0x63, 0xb0, 0xa4, 0xfd, 0x33, 0x58, 0xd2, 0x9e, 0xdc, 0x79, 0xb3, 0xbf, 0xec, 0xdd, 0x16,
> +-    0x8b, 0xc7, 0xb9, 0xa7, 0x25, 0x01, 0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x85, 0xa2,
> +-    0x4f, 0xd1, 0x22, 0x14, 0x00, 0x00,
> ++    // 1376 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x58, 0x5b, 0x6f, 0x1b, 0x45,
> ++    0x14, 0xee, 0xfa, 0xee, 0xe3, 0xa4, 0x4d, 0x96, 0x34, 0x98, 0xa5, 0x8a, 0xc3, 0xf2, 0x62, 0x02,
> ++    0x5d, 0x53, 0x17, 0x55, 0x55, 0x5b, 0x55, 0xe4, 0x46, 0x64, 0x41, 0xd5, 0x74, 0x5b, 0xa0, 0xaa,
> ++    0x84, 0xc2, 0xc6, 0x3b, 0x71, 0x46, 0xb1, 0x77, 0xb6, 0x3b, 0xe3, 0xb4, 0xe6, 0x05, 0x7e, 0x42,
> ++    0x5f, 0x79, 0x81, 0xbf, 0x93, 0x47, 0x1e, 0x11, 0xaa, 0x02, 0xf5, 0xbf, 0xe0, 0x0d, 0xcd, 0x65,
> ++    0xd7, 0x1b, 0x3b, 0xf6, 0x3a, 0x4d, 0xc3, 0x4b, 0x32, 0x33, 0x7b, 0xce, 0x99, 0x33, 0xdf, 0xb9,
> ++    0x7d, 0x09, 0xac, 0xb5, 0x30, 0xdb, 0xef, 0xee, 0x5a, 0x4d, 0xd2, 0xa9, 0x35, 0x89, 0xc7, 0x1c,
> ++    0xec, 0xa1, 0xc0, 0x8d, 0x2f, 0x1d, 0x1f, 0xd7, 0x28, 0x0a, 0x0e, 0x71, 0x13, 0xd1, 0x1a, 0x73,
> ++    0xe8, 0x01, 0xad, 0x1d, 0xde, 0x90, 0x0b, 0xcb, 0x0f, 0x08, 0x23, 0xfa, 0xb5, 0x81, 0xb4, 0x15,
> ++    0x4a, 0x5a, 0x52, 0xe0, 0xf0, 0x86, 0xf1, 0x61, 0x8b, 0x90, 0x56, 0x1b, 0xd5, 0x84, 0xec, 0x6e,
> ++    0x77, 0xaf, 0x86, 0x3a, 0x3e, 0xeb, 0x49, 0x55, 0xe3, 0x83, 0xe1, 0x8f, 0x8e, 0x17, 0x7e, 0x5a,
> ++    0x68, 0x91, 0x16, 0x11, 0xcb, 0x1a, 0x5f, 0xa9, 0xd3, 0x5b, 0x53, 0xf9, 0xcb, 0x7a, 0x3e, 0xa2,
> ++    0xb5, 0x0e, 0xe9, 0x7a, 0x4c, 0xe9, 0xdd, 0x3e, 0x8b, 0x1e, 0x62, 0x01, 0x6e, 0xaa, 0xd7, 0x19,
> ++    0x77, 0xcf, 0xa0, 0xe9, 0x22, 0xda, 0x0c, 0xb0, 0xcf, 0x48, 0xa0, 0x94, 0xef, 0x9c, 0x41, 0x99,
> ++    0x23, 0x26, 0x7e, 0x28, 0xdd, 0xca, 0x30, 0x36, 0x0c, 0x77, 0x10, 0x65, 0x4e, 0xc7, 0x97, 0x02,
> ++    0xe6, 0x51, 0x0a, 0xe6, 0xd7, 0x03, 0xe4, 0x30, 0xf4, 0xc4, 0xa1, 0x07, 0x36, 0x7a, 0xde, 0x45,
> ++    0x94, 0xe9, 0x75, 0x98, 0x89, 0xcc, 0xef, 0x60, 0xb7, 0xac, 0x2d, 0x6b, 0xd5, 0xe2, 0xda, 0x95,
> ++    0xfe, 0x71, 0xa5, 0xb4, 0x1e, 0x9e, 0x37, 0x36, 0xec, 0x52, 0x24, 0xd4, 0x70, 0xf5, 0x1a, 0xe4,
> ++    0x02, 0x42, 0xd8, 0x1e, 0x2d, 0xa7, 0x97, 0xd3, 0xd5, 0x52, 0xfd, 0x7d, 0x2b, 0x16, 0x52, 0xe1,
> ++    0x9d, 0xf5, 0x80, 0x83, 0x69, 0x2b, 0x31, 0x7d, 0x01, 0xb2, 0x94, 0xb9, 0xd8, 0x2b, 0x67, 0xb8,
> ++    0x75, 0x5b, 0x6e, 0xf4, 0x45, 0xc8, 0x51, 0xe6, 0x92, 0x2e, 0x2b, 0x67, 0xc5, 0xb1, 0xda, 0xa9,
> ++    0x73, 0x14, 0x04, 0xe5, 0x5c, 0x74, 0x8e, 0x82, 0x40, 0x37, 0xa0, 0xc0, 0x50, 0xd0, 0xc1, 0x9e,
> ++    0xd3, 0x2e, 0xe7, 0x97, 0xb5, 0x6a, 0xc1, 0x8e, 0xf6, 0xfa, 0x3d, 0x80, 0xe6, 0x3e, 0x6a, 0x1e,
> ++    0xf8, 0x04, 0x7b, 0xac, 0x5c, 0x58, 0xd6, 0xaa, 0xa5, 0xfa, 0xb5, 0x51, 0xb7, 0x36, 0x22, 0xc4,
> ++    0xed, 0x98, 0xbc, 0x6e, 0x41, 0x9e, 0xf8, 0x0c, 0x13, 0x8f, 0x96, 0x8b, 0x42, 0x75, 0xc1, 0x92,
> ++    0x68, 0x5a, 0x21, 0x9a, 0xd6, 0xaa, 0xd7, 0xb3, 0x43, 0x21, 0xf3, 0x19, 0xe8, 0x71, 0x24, 0xa9,
> ++    0x4f, 0x3c, 0x8a, 0xde, 0x0a, 0xca, 0x39, 0x48, 0xfb, 0xd8, 0x2d, 0xa7, 0x96, 0xb5, 0xea, 0xac,
> ++    0xcd, 0x97, 0x66, 0x0b, 0x66, 0x1e, 0x33, 0x27, 0x60, 0xe7, 0x09, 0xd0, 0xc7, 0x90, 0x47, 0x2f,
> ++    0x51, 0x73, 0x47, 0x59, 0x2e, 0xae, 0x41, 0xff, 0xb8, 0x92, 0xdb, 0x7c, 0x89, 0x9a, 0x8d, 0x0d,
> ++    0x3b, 0xc7, 0x3f, 0x35, 0x5c, 0xf3, 0x23, 0x98, 0x55, 0x17, 0x29, 0xff, 0x95, 0x2f, 0xda, 0xc0,
> ++    0x97, 0x2d, 0x98, 0xdf, 0x40, 0x6d, 0x74, 0xee, 0x8c, 0x31, 0x7f, 0xd3, 0xe0, 0xb2, 0xb4, 0x14,
> ++    0xdd, 0xb6, 0x08, 0xa9, 0x48, 0x39, 0xd7, 0x3f, 0xae, 0xa4, 0x1a, 0x1b, 0x76, 0x0a, 0x9f, 0x82,
> ++    0x88, 0x5e, 0x81, 0x12, 0x7a, 0x89, 0xd9, 0x0e, 0x65, 0x0e, 0xeb, 0xf2, 0x9c, 0xe3, 0x5f, 0x80,
> ++    0x1f, 0x3d, 0x16, 0x27, 0xfa, 0x2a, 0x14, 0xf9, 0x0e, 0xb9, 0x3b, 0x0e, 0x13, 0x29, 0x56, 0xaa,
> ++    0x1b, 0x23, 0x01, 0x7c, 0x12, 0x96, 0xc3, 0x5a, 0xe1, 0xe8, 0xb8, 0x72, 0xe9, 0xd5, 0xdf, 0x15,
> ++    0xcd, 0x2e, 0x48, 0xb5, 0x55, 0x66, 0x12, 0x58, 0x90, 0xfe, 0x6d, 0x07, 0xa4, 0x89, 0x28, 0xbd,
> ++    0x70, 0xf4, 0x11, 0xc0, 0x16, 0xba, 0xf8, 0x20, 0x6f, 0x42, 0x49, 0x5c, 0xa3, 0x40, 0xbf, 0x05,
> ++    0x79, 0x5f, 0x3e, 0x50, 0x5c, 0x31, 0x54, 0x23, 0x87, 0x37, 0x54, 0x99, 0x84, 0x20, 0x84, 0xc2,
> ++    0xe6, 0x0a, 0xcc, 0x7d, 0x83, 0x29, 0xe3, 0x69, 0x10, 0x41, 0xb3, 0x08, 0xb9, 0x3d, 0xdc, 0x66,
> ++    0x28, 0x90, 0xde, 0xda, 0x6a, 0xc7, 0x93, 0x26, 0x26, 0x1b, 0xd5, 0x46, 0x56, 0xb4, 0xf8, 0xb2,
> ++    0x26, 0x3a, 0xc6, 0xe4, 0x6b, 0xa5, 0xa8, 0xf9, 0x4a, 0x83, 0xd2, 0xd7, 0xb8, 0xdd, 0xbe, 0x68,
> ++    0x90, 0x44, 0xc3, 0xc1, 0x2d, 0xde, 0x56, 0x64, 0x6e, 0xa9, 0x1d, 0x4f, 0x45, 0xa7, 0xdd, 0x16,
> ++    0x19, 0x55, 0xb0, 0xf9, 0xd2, 0xfc, 0x57, 0x03, 0x9d, 0x2b, 0xbf, 0x83, 0x2c, 0x89, 0x7a, 0x62,
> ++    0xea, 0xf4, 0x9e, 0x98, 0x1e, 0xd3, 0x13, 0x33, 0x63, 0x7b, 0x62, 0x76, 0xa8, 0x27, 0x56, 0x21,
> ++    0x43, 0x7d, 0xd4, 0x14, 0x5d, 0x74, 0x5c, 0x4b, 0x13, 0x12, 0x71, 0x94, 0xf2, 0x63, 0x53, 0xe9,
> ++    0x2a, 0xbc, 0x77, 0xe2, 0xe9, 0x32, 0xb2, 0xe6, 0xaf, 0x1a, 0xcc, 0xd9, 0x88, 0xe2, 0x9f, 0xd0,
> ++    0x36, 0xeb, 0x5d, 0x78, 0xa8, 0x16, 0x20, 0xfb, 0x02, 0xbb, 0x6c, 0x5f, 0x45, 0x4a, 0x6e, 0x38,
> ++    0x3a, 0xfb, 0x08, 0xb7, 0xf6, 0x65, 0xf5, 0xcf, 0xda, 0x6a, 0x67, 0xfe, 0x0c, 0x97, 0xd7, 0xdb,
> ++    0x84, 0xa2, 0xc6, 0xc3, 0xff, 0xc3, 0x31, 0x19, 0xce, 0xb4, 0x88, 0x82, 0xdc, 0x98, 0x5f, 0xc1,
> ++    0xdc, 0xb6, 0xd3, 0xa5, 0xe7, 0xee, 0x9f, 0x5b, 0x30, 0x6f, 0x23, 0xda, 0xed, 0x9c, 0xdb, 0xd0,
> ++    0x26, 0x5c, 0xe1, 0xc5, 0xb9, 0x8d, 0xdd, 0xf3, 0x24, 0xaf, 0x69, 0xcb, 0x7e, 0x20, 0xcd, 0xa8,
> ++    0x12, 0xbf, 0x0f, 0x45, 0xd5, 0x2e, 0x50, 0x58, 0xe6, 0xcb, 0x93, 0xca, 0xbc, 0xe1, 0xed, 0x11,
> ++    0x7b, 0xa0, 0x62, 0xbe, 0xd6, 0xe0, 0xea, 0x7a, 0x34, 0x93, 0xcf, 0xcb, 0x51, 0x76, 0x60, 0xde,
> ++    0x77, 0x02, 0xe4, 0xb1, 0x9d, 0x18, 0x2f, 0x90, 0xe1, 0xab, 0xf3, 0xfe, 0xff, 0xd7, 0x71, 0x65,
> ++    0x25, 0xc6, 0xb6, 0x88, 0x8f, 0xbc, 0x48, 0x9d, 0xd6, 0x5a, 0xe4, 0xba, 0x8b, 0x5b, 0x88, 0x32,
> ++    0x6b, 0x43, 0xfc, 0xb2, 0xe7, 0xa4, 0xb1, 0xf5, 0x53, 0x39, 0x43, 0x7a, 0x1a, 0xce, 0xf0, 0x14,
> ++    0x16, 0x87, 0x5f, 0x17, 0x01, 0x57, 0x1a, 0x30, 0xc1, 0x53, 0x3b, 0xe4, 0x08, 0x79, 0x89, 0x2b,
> ++    0x98, 0xbf, 0xa7, 0x60, 0xfe, 0x5b, 0xdf, 0x7d, 0x07, 0xc4, 0xae, 0x0e, 0xc5, 0x00, 0x51, 0xd2,
> ++    0x0d, 0x9a, 0x88, 0x0a, 0xb0, 0xc6, 0xbd, 0x6a, 0x20, 0xa6, 0xef, 0x42, 0xc9, 0xf1, 0x3c, 0xc2,
> ++    0x9c, 0x10, 0x0b, 0xee, 0xfd, 0x97, 0xd6, 0x24, 0x92, 0x6f, 0x8d, 0x78, 0x6b, 0xad, 0x0e, 0x4c,
> ++    0x6c, 0x7a, 0x2c, 0xe8, 0xd9, 0x71, 0xa3, 0xc6, 0x7d, 0x98, 0x1b, 0x16, 0xe0, 0xcd, 0xf9, 0x00,
> ++    0xf5, 0xd4, 0xec, 0xe1, 0x4b, 0x5e, 0x82, 0x87, 0x4e, 0xbb, 0x8b, 0xc2, 0x8e, 0x2a, 0x36, 0x77,
> ++    0x52, 0xb7, 0x35, 0x73, 0x05, 0x2e, 0x3f, 0x90, 0x2c, 0x3d, 0x44, 0xa7, 0x0c, 0x79, 0x39, 0xae,
> ++    0x24, 0xde, 0x45, 0x3b, 0xdc, 0xf2, 0x0a, 0x89, 0x64, 0xa3, 0xe1, 0x95, 0x57, 0x24, 0x5f, 0x05,
> ++    0xa7, 0x7c, 0x0a, 0xe1, 0x15, 0x02, 0x76, 0x28, 0x68, 0xee, 0x41, 0xe9, 0x7b, 0x07, 0x5f, 0xfc,
> ++    0x80, 0x0f, 0x60, 0x46, 0xde, 0xa3, 0x7c, 0x1d, 0x22, 0x4b, 0xda, 0x64, 0xb2, 0x94, 0x7a, 0x1b,
> ++    0xb2, 0x54, 0x7f, 0x3d, 0x03, 0x59, 0x31, 0xde, 0xf5, 0x03, 0xc8, 0x49, 0x22, 0xac, 0xd7, 0x26,
> ++    0x47, 0x7c, 0xe4, 0x0f, 0x0f, 0xe3, 0xf3, 0xe9, 0x15, 0xd4, 0xd3, 0x7e, 0x84, 0xac, 0x20, 0xac,
> ++    0xfa, 0xca, 0x64, 0xd5, 0x38, 0x7d, 0x36, 0x3e, 0x9d, 0x4a, 0x56, 0xdd, 0xd0, 0x82, 0x9c, 0x64,
> ++    0x81, 0x49, 0xcf, 0x19, 0x61, 0xc5, 0xc6, 0x67, 0xd3, 0x28, 0x44, 0x17, 0x3d, 0x87, 0xd9, 0x13,
> ++    0x74, 0x53, 0xaf, 0x4f, 0xa3, 0x7e, 0x92, 0x75, 0x9c, 0xf1, 0xca, 0x67, 0x90, 0xde, 0x42, 0x4c,
> ++    0xaf, 0x4e, 0x56, 0x1a, 0x70, 0x52, 0xe3, 0x93, 0x29, 0x24, 0x23, 0xdc, 0x32, 0x7c, 0x1c, 0xe8,
> ++    0xd6, 0x64, 0x95, 0x61, 0x0a, 0x69, 0xd4, 0xa6, 0x96, 0x57, 0x17, 0x35, 0x20, 0xc3, 0x19, 0xa1,
> ++    0x9e, 0xe0, 0x5b, 0x8c, 0x35, 0x1a, 0x8b, 0x23, 0xc9, 0xbd, 0xd9, 0xf1, 0x59, 0x4f, 0xdf, 0x86,
> ++    0x0c, 0x2f, 0x25, 0x3d, 0x21, 0x0f, 0x47, 0xd9, 0xde, 0x58, 0x8b, 0x8f, 0xa1, 0x18, 0x11, 0xa1,
> ++    0x24, 0x28, 0x86, 0x19, 0xd3, 0x58, 0xa3, 0x0f, 0x21, 0xaf, 0x28, 0x8c, 0x9e, 0x10, 0xef, 0x93,
> ++    0x4c, 0x67, 0x82, 0xc1, 0xac, 0xa0, 0x24, 0x49, 0x1e, 0x0e, 0xf3, 0x96, 0xb1, 0x06, 0x1f, 0x41,
> ++    0x4e, 0x72, 0x93, 0xa4, 0xa2, 0x19, 0x61, 0x30, 0x63, 0x4d, 0x62, 0x28, 0x84, 0xf4, 0x42, 0xbf,
> ++    0x9e, 0x9c, 0x23, 0x31, 0x36, 0x63, 0x58, 0xd3, 0x8a, 0xab, 0x8c, 0x7a, 0x01, 0x10, 0x1b, 0xea,
> ++    0x37, 0x13, 0x20, 0x3e, 0x8d, 0x9e, 0x18, 0x5f, 0x9c, 0x4d, 0x49, 0x5d, 0xfc, 0x08, 0x72, 0x72,
> ++    0x0c, 0x26, 0xc1, 0x36, 0x32, 0x2c, 0xc7, 0xc2, 0xb6, 0x07, 0x79, 0x35, 0xba, 0x92, 0x72, 0xe5,
> ++    0xe4, 0x34, 0x34, 0xae, 0x4f, 0x29, 0xad, 0x5c, 0xff, 0x01, 0x32, 0x7c, 0xe6, 0x24, 0x55, 0x61,
> ++    0x6c, 0xfe, 0x19, 0x2b, 0xd3, 0x88, 0x4a, 0xf3, 0x6b, 0xdf, 0x1d, 0xbd, 0x59, 0xba, 0xf4, 0xe7,
> ++    0x9b, 0xa5, 0x4b, 0xbf, 0xf4, 0x97, 0xb4, 0xa3, 0xfe, 0x92, 0xf6, 0x47, 0x7f, 0x49, 0xfb, 0xa7,
> ++    0xbf, 0xa4, 0x3d, 0xbb, 0xf7, 0x76, 0xff, 0x7e, 0xbc, 0x2b, 0x16, 0x4f, 0x53, 0xbb, 0x39, 0x01,
> ++    0xd8, 0xcd, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xcc, 0x55, 0xbf, 0x54, 0xc7, 0x14, 0x00, 0x00,
> + }
> +
> + // Reference imports to suppress errors if they are not otherwise used.
> +@@ -2943,6 +2949,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintTasks(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintTasks(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -3611,6 +3636,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovTasks(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovTasks(uint64(len(k))) + 1 + len(v) + sovTasks(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovTasks(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3991,9 +4024,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ContainerID:` + fmt.Sprintf("%v", this.ContainerID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4347,10 +4391,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4452,10 +4493,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4570,10 +4608,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4643,10 +4678,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4729,10 +4761,7 @@ func (m *DeleteTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4886,10 +4915,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5004,10 +5030,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5122,10 +5145,7 @@ func (m *GetRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5212,10 +5232,7 @@ func (m *GetResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5298,10 +5315,7 @@ func (m *ListTasksRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5386,10 +5400,7 @@ func (m *ListTasksResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5543,10 +5554,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5813,10 +5821,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5867,10 +5872,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6023,10 +6025,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6161,10 +6160,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6247,10 +6243,7 @@ func (m *PauseTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6333,10 +6326,7 @@ func (m *ResumeTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6419,10 +6409,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6507,10 +6494,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6661,10 +6645,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6749,10 +6730,7 @@ func (m *CheckpointTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6865,16 +6843,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowTasks
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthTasks
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowTasks
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowTasks
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipTasks(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthTasks
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipTasks(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6957,10 +7059,7 @@ func (m *MetricsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7045,10 +7144,7 @@ func (m *MetricsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7163,10 +7259,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7269,10 +7362,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTasks
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTasks
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/ttrpc/events/v1/events.pb.go b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +index 0e61351d5..b1f275bf0 100644
> +--- a/src/import/api/services/ttrpc/events/v1/events.pb.go
> ++++ b/src/import/api/services/ttrpc/events/v1/events.pb.go
> +@@ -474,10 +474,7 @@ func (m *ForwardRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -661,10 +658,7 @@ func (m *Envelope) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEvents
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEvents
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/services/version/v1/version.pb.go b/src/import/api/services/version/v1/version.pb.go
> +index 81b8c3395..b742c6ae6 100644
> +--- a/src/import/api/services/version/v1/version.pb.go
> ++++ b/src/import/api/services/version/v1/version.pb.go
> +@@ -374,10 +374,7 @@ func (m *VersionResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthVersion
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthVersion
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/descriptor.pb.go b/src/import/api/types/descriptor.pb.go
> +index 437d41f23..fe71dbf43 100644
> +--- a/src/import/api/types/descriptor.pb.go
> ++++ b/src/import/api/types/descriptor.pb.go
> +@@ -479,7 +479,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthDescriptor
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -496,10 +496,7 @@ func (m *Descriptor) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDescriptor
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDescriptor
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/metrics.pb.go b/src/import/api/types/metrics.pb.go
> +index 89a8d9cd6..75773e442 100644
> +--- a/src/import/api/types/metrics.pb.go
> ++++ b/src/import/api/types/metrics.pb.go
> +@@ -348,10 +348,7 @@ func (m *Metric) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMetrics
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMetrics
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/mount.pb.go b/src/import/api/types/mount.pb.go
> +index 6872e4120..d0a0bee76 100644
> +--- a/src/import/api/types/mount.pb.go
> ++++ b/src/import/api/types/mount.pb.go
> +@@ -392,10 +392,7 @@ func (m *Mount) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthMount
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthMount
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/platform.pb.go b/src/import/api/types/platform.pb.go
> +index c03d8b077..a0f78c8a7 100644
> +--- a/src/import/api/types/platform.pb.go
> ++++ b/src/import/api/types/platform.pb.go
> +@@ -333,10 +333,7 @@ func (m *Platform) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthPlatform
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthPlatform
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/api/types/task/task.pb.go b/src/import/api/types/task/task.pb.go
> +index ae824ff45..f511bbd05 100644
> +--- a/src/import/api/types/task/task.pb.go
> ++++ b/src/import/api/types/task/task.pb.go
> +@@ -772,10 +772,7 @@ func (m *Process) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -881,10 +878,7 @@ func (m *ProcessInfo) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/linux/runctypes/runc.pb.go b/src/import/runtime/linux/runctypes/runc.pb.go
> +index 26306e594..46d31ff59 100644
> +--- a/src/import/runtime/linux/runctypes/runc.pb.go
> ++++ b/src/import/runtime/linux/runctypes/runc.pb.go
> +@@ -978,10 +978,7 @@ func (m *RuncOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1350,10 +1347,7 @@ func (m *CreateOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1632,10 +1626,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1718,10 +1709,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthRunc
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthRunc
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v1/shim/v1/shim.pb.go b/src/import/runtime/v1/shim/v1/shim.pb.go
> +index 27f334966..dbc82599d 100644
> +--- a/src/import/runtime/v1/shim/v1/shim.pb.go
> ++++ b/src/import/runtime/v1/shim/v1/shim.pb.go
> +@@ -3262,10 +3262,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3335,10 +3332,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3460,10 +3454,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3546,10 +3537,7 @@ func (m *DeleteProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3784,10 +3772,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3838,10 +3823,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3962,10 +3944,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4048,10 +4027,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4372,10 +4348,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4497,10 +4470,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4603,10 +4573,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4689,10 +4656,7 @@ func (m *ListPidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4777,10 +4741,7 @@ func (m *ListPidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4899,10 +4860,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4972,10 +4930,7 @@ func (m *ShimInfoResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5062,10 +5017,7 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5148,10 +5100,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5253,10 +5202,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5339,10 +5285,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5445,10 +5388,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/runc/options/oci.pb.go b/src/import/runtime/v2/runc/options/oci.pb.go
> +index f298452b6..c9c44742a 100644
> +--- a/src/import/runtime/v2/runc/options/oci.pb.go
> ++++ b/src/import/runtime/v2/runc/options/oci.pb.go
> +@@ -994,10 +994,7 @@ func (m *Options) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1276,10 +1273,7 @@ func (m *CheckpointOptions) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1362,10 +1356,7 @@ func (m *ProcessDetails) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthOci
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthOci
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/runtime/v2/task/shim.pb.go b/src/import/runtime/v2/task/shim.pb.go
> +index 3cf11d8e3..6366f9c57 100644
> +--- a/src/import/runtime/v2/task/shim.pb.go
> ++++ b/src/import/runtime/v2/task/shim.pb.go
> +@@ -10,6 +10,7 @@ import (
> +     task "github.com/containerd/containerd/src/import/api/types/task"
> +     github_com_containerd_ttrpc "github.com/containerd/ttrpc"
> +     proto "github.com/gogo/protobuf/proto"
> ++    github_com_gogo_protobuf_sortkeys "github.com/gogo/protobuf/sortkeys"
> +     github_com_gogo_protobuf_types "github.com/gogo/protobuf/types"
> +     types1 "github.com/gogo/protobuf/types"
> +     io "io"
> +@@ -617,11 +618,12 @@ func (m *CheckpointTaskRequest) XXX_DiscardUnknown() {
> + var xxx_messageInfo_CheckpointTaskRequest proto.InternalMessageInfo
> +
> + type UpdateTaskRequest struct {
> +-    ID                   string      `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> +-    Resources            *types1.Any `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> +-    XXX_NoUnkeyedLiteral struct{}    `json:"-"`
> +-    XXX_unrecognized     []byte      `json:"-"`
> +-    XXX_sizecache        int32       `json:"-"`
> ++    ID                   string            `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
> ++    Resources            *types1.Any       `protobuf:"bytes,2,opt,name=resources,proto3" json:"resources,omitempty"`
> ++    Annotations          map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
> ++    XXX_NoUnkeyedLiteral struct{}          `json:"-"`
> ++    XXX_unrecognized     []byte            `json:"-"`
> ++    XXX_sizecache        int32             `json:"-"`
> + }
> +
> + func (m *UpdateTaskRequest) Reset()      { *m = UpdateTaskRequest{} }
> +@@ -1107,6 +1109,7 @@ func init() {
> +     proto.RegisterType((*PidsResponse)(nil), "containerd.task.v2.PidsResponse")
> +     proto.RegisterType((*CheckpointTaskRequest)(nil), "containerd.task.v2.CheckpointTaskRequest")
> +     proto.RegisterType((*UpdateTaskRequest)(nil), "containerd.task.v2.UpdateTaskRequest")
> ++    proto.RegisterMapType((map[string]string)(nil), "containerd.task.v2.UpdateTaskRequest.AnnotationsEntry")
> +     proto.RegisterType((*StartRequest)(nil), "containerd.task.v2.StartRequest")
> +     proto.RegisterType((*StartResponse)(nil), "containerd.task.v2.StartResponse")
> +     proto.RegisterType((*WaitRequest)(nil), "containerd.task.v2.WaitRequest")
> +@@ -1125,85 +1128,89 @@ func init() {
> + }
> +
> + var fileDescriptor_9202ee34bc3ad8ca = []byte{
> +-    // 1246 bytes of a gzipped FileDescriptorProto
> +-    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5d, 0x6f, 0x1b, 0x45,
> +-    0x17, 0xee, 0xfa, 0x63, 0x6d, 0x1f, 0xd7, 0x69, 0x3a, 0x6f, 0x9a, 0x77, 0xeb, 0x4a, 0xb6, 0xbb,
> +-    0xa5, 0xc1, 0x80, 0x64, 0x0b, 0x57, 0x70, 0x41, 0x24, 0x50, 0xbe, 0xa8, 0x4c, 0x0b, 0x89, 0xb6,
> +-    0x45, 0x45, 0xdc, 0x58, 0x1b, 0xef, 0xc4, 0x5e, 0xc5, 0xde, 0x59, 0x76, 0x66, 0xf3, 0x81, 0x84,
> +-    0xc4, 0x15, 0x17, 0x5c, 0xf1, 0xb3, 0x72, 0x89, 0xc4, 0x0d, 0x37, 0x04, 0xea, 0x7f, 0xc0, 0x3f,
> +-    0x40, 0xf3, 0xe1, 0x78, 0xed, 0xec, 0xda, 0x49, 0xe5, 0x9b, 0x68, 0xce, 0xce, 0x33, 0x67, 0xe6,
> +-    0x9c, 0x79, 0xce, 0x73, 0x26, 0x86, 0xcd, 0x9e, 0xcb, 0xfa, 0xe1, 0x61, 0xa3, 0x4b, 0x86, 0xcd,
> +-    0x2e, 0xf1, 0x98, 0xed, 0x7a, 0x38, 0x70, 0xa2, 0xc3, 0x20, 0xf4, 0x98, 0x3b, 0xc4, 0xcd, 0x93,
> +-    0x56, 0x93, 0xd9, 0xf4, 0xb8, 0x49, 0xfb, 0xee, 0xb0, 0xe1, 0x07, 0x84, 0x11, 0x84, 0x26, 0xb0,
> +-    0x06, 0x9f, 0x6b, 0x9c, 0xb4, 0xca, 0x0f, 0x7b, 0x84, 0xf4, 0x06, 0xb8, 0x29, 0x10, 0x87, 0xe1,
> +-    0x51, 0xd3, 0xf6, 0xce, 0x25, 0xbc, 0xfc, 0x68, 0x76, 0x0a, 0x0f, 0x7d, 0x36, 0x9e, 0x5c, 0xeb,
> +-    0x91, 0x1e, 0x11, 0xc3, 0x26, 0x1f, 0xa9, 0xaf, 0xd5, 0xd9, 0x25, 0xfc, 0x28, 0x94, 0xd9, 0x43,
> +-    0x5f, 0x01, 0x3e, 0x5d, 0x78, 0x7e, 0xdb, 0x77, 0x9b, 0xec, 0xdc, 0xc7, 0xb4, 0x39, 0x24, 0xa1,
> +-    0xc7, 0xd4, 0xba, 0xcf, 0x6e, 0xb1, 0x4e, 0x84, 0x2d, 0xe2, 0x13, 0x6b, 0xcd, 0x3f, 0x52, 0x70,
> +-    0x7f, 0x27, 0xc0, 0x36, 0xc3, 0xaf, 0x6d, 0x7a, 0x6c, 0xe1, 0x1f, 0x42, 0x4c, 0x19, 0x5a, 0x87,
> +-    0x94, 0xeb, 0x18, 0x5a, 0x4d, 0xab, 0x17, 0xb6, 0xf5, 0xd1, 0x65, 0x35, 0xd5, 0xde, 0xb5, 0x52,
> +-    0xae, 0x83, 0xd6, 0x41, 0x3f, 0x0c, 0x3d, 0x67, 0x80, 0x8d, 0x14, 0x9f, 0xb3, 0x94, 0x85, 0x9a,
> +-    0xa0, 0x07, 0x84, 0xb0, 0x23, 0x6a, 0xa4, 0x6b, 0xe9, 0x7a, 0xb1, 0xf5, 0xff, 0x46, 0x34, 0x9b,
> +-    0x7c, 0xe3, 0xc6, 0xd7, 0xfc, 0xc0, 0x96, 0x82, 0xa1, 0x32, 0xe4, 0x19, 0x0e, 0x86, 0xae, 0x67,
> +-    0x0f, 0x8c, 0x4c, 0x4d, 0xab, 0xe7, 0xad, 0x2b, 0x1b, 0xad, 0x41, 0x96, 0x32, 0xc7, 0xf5, 0x8c,
> +-    0xac, 0xd8, 0x43, 0x1a, 0x7c, 0x6b, 0xca, 0x1c, 0x12, 0x32, 0x43, 0x97, 0x5b, 0x4b, 0x4b, 0x7d,
> +-    0xc7, 0x41, 0x60, 0xe4, 0xae, 0xbe, 0xe3, 0x20, 0x40, 0x15, 0x80, 0x6e, 0x1f, 0x77, 0x8f, 0x7d,
> +-    0xe2, 0x7a, 0xcc, 0xc8, 0x8b, 0xb9, 0xc8, 0x17, 0xf4, 0x11, 0xdc, 0xf7, 0xed, 0x00, 0x7b, 0xac,
> +-    0x13, 0x81, 0x15, 0x04, 0x6c, 0x55, 0x4e, 0xec, 0x4c, 0xc0, 0x0d, 0xc8, 0x11, 0x9f, 0xb9, 0xc4,
> +-    0xa3, 0x06, 0xd4, 0xb4, 0x7a, 0xb1, 0xb5, 0xd6, 0x90, 0x97, 0xd9, 0x18, 0x5f, 0x66, 0x63, 0xcb,
> +-    0x3b, 0xb7, 0xc6, 0x20, 0x73, 0x03, 0x50, 0x34, 0xa9, 0xd4, 0x27, 0x1e, 0xc5, 0x68, 0x15, 0xd2,
> +-    0xbe, 0x4a, 0x6b, 0xc9, 0xe2, 0x43, 0xf3, 0x25, 0x94, 0x76, 0xf1, 0x00, 0x33, 0xbc, 0x28, 0xf1,
> +-    0x4f, 0x20, 0x87, 0xcf, 0x70, 0xb7, 0xe3, 0x3a, 0x32, 0xf3, 0xdb, 0x30, 0xba, 0xac, 0xea, 0x7b,
> +-    0x67, 0xb8, 0xdb, 0xde, 0xb5, 0x74, 0x3e, 0xd5, 0x76, 0xcc, 0x5f, 0x34, 0x58, 0x19, 0xbb, 0x4b,
> +-    0xda, 0x12, 0x55, 0xa1, 0x88, 0xcf, 0x5c, 0xd6, 0xa1, 0xcc, 0x66, 0x21, 0x15, 0xde, 0x4a, 0x16,
> +-    0xf0, 0x4f, 0xaf, 0xc4, 0x17, 0xb4, 0x05, 0x05, 0x6e, 0x61, 0xa7, 0x63, 0x33, 0x23, 0x2d, 0xa2,
> +-    0x2d, 0x5f, 0x8b, 0xf6, 0xf5, 0x98, 0xba, 0xdb, 0xf9, 0x8b, 0xcb, 0xea, 0x9d, 0xdf, 0xfe, 0xae,
> +-    0x6a, 0x56, 0x5e, 0x2e, 0xdb, 0x62, 0xe6, 0x5f, 0x1a, 0x20, 0x7e, 0xb6, 0x83, 0x80, 0x74, 0x31,
> +-    0xa5, 0xcb, 0x08, 0x6e, 0x8a, 0x31, 0xe9, 0x24, 0xc6, 0x64, 0xe2, 0x19, 0x93, 0x4d, 0x60, 0x8c,
> +-    0x3e, 0xc5, 0x98, 0x3a, 0x64, 0xa8, 0x8f, 0xbb, 0x82, 0x47, 0x49, 0x37, 0x2c, 0x10, 0xe6, 0x03,
> +-    0xf8, 0xdf, 0x54, 0x78, 0x32, 0xd9, 0xe6, 0x4f, 0xb0, 0x6a, 0x61, 0xea, 0xfe, 0x88, 0x0f, 0xd8,
> +-    0xf9, 0x52, 0x62, 0x5e, 0x83, 0xec, 0xa9, 0xeb, 0xb0, 0xbe, 0x08, 0xb8, 0x64, 0x49, 0x83, 0x9f,
> +-    0xbf, 0x8f, 0xdd, 0x5e, 0x9f, 0x89, 0x70, 0x4b, 0x96, 0xb2, 0xcc, 0x17, 0x70, 0x97, 0x5f, 0xe1,
> +-    0x72, 0xb8, 0xf4, 0x6f, 0x0a, 0x4a, 0xca, 0x9b, 0xa2, 0xd2, 0x6d, 0x35, 0x41, 0x51, 0x2f, 0x3d,
> +-    0xa1, 0xde, 0x33, 0x9e, 0x78, 0xc1, 0x3a, 0x7e, 0xf0, 0x95, 0xd6, 0xa3, 0xa8, 0x4a, 0x9c, 0x7c,
> +-    0xac, 0x84, 0x42, 0xd2, 0xd0, 0x52, 0xd0, 0x25, 0xa9, 0x41, 0x94, 0x3d, 0xf9, 0x19, 0xf6, 0xcc,
> +-    0x54, 0x44, 0x61, 0x7e, 0x45, 0xc0, 0xbb, 0x54, 0x44, 0x34, 0xe7, 0xc5, 0xc4, 0x9c, 0x33, 0x28,
> +-    0xbe, 0x70, 0x07, 0x83, 0xa5, 0x50, 0x87, 0x27, 0xc2, 0xed, 0x8d, 0x8b, 0xa5, 0x64, 0x29, 0x8b,
> +-    0xdf, 0x8a, 0x3d, 0x18, 0x6b, 0x2e, 0x1f, 0x9a, 0x5d, 0x58, 0xd9, 0x19, 0x10, 0x8a, 0xdb, 0xfb,
> +-    0xcb, 0xe2, 0xac, 0xbc, 0x2f, 0x59, 0xa4, 0xd2, 0x30, 0x9f, 0x42, 0xf1, 0xc0, 0x75, 0x16, 0x29,
> +-    0x81, 0xf9, 0x0d, 0xdc, 0x95, 0x30, 0xc5, 0xb9, 0xcf, 0xa1, 0xe0, 0xcb, 0x22, 0xc3, 0xd4, 0xd0,
> +-    0x44, 0x6b, 0xa9, 0xc5, 0x92, 0x46, 0x95, 0x62, 0xdb, 0x3b, 0x22, 0xd6, 0x64, 0x89, 0x49, 0xe1,
> +-    0xc1, 0x44, 0xc5, 0x6f, 0xd2, 0xe0, 0x10, 0x64, 0x7c, 0x9b, 0xf5, 0x15, 0x95, 0xc5, 0x38, 0x2a,
> +-    0xfe, 0xe9, 0x9b, 0x88, 0x7f, 0x07, 0xee, 0x7f, 0xeb, 0x3b, 0x37, 0xec, 0xa8, 0x2d, 0x28, 0x04,
> +-    0x98, 0x92, 0x30, 0xe8, 0x62, 0x29, 0xc6, 0x49, 0xee, 0x27, 0x30, 0x55, 0xe8, 0x01, 0x5b, 0x4a,
> +-    0xa1, 0x3f, 0x16, 0x75, 0xce, 0x9d, 0x25, 0x76, 0xa9, 0xaf, 0xa0, 0xf8, 0xc6, 0x76, 0x97, 0xb3,
> +-    0x5d, 0x00, 0x77, 0xa5, 0x2f, 0xb5, 0xdb, 0x4c, 0xf1, 0x69, 0xf3, 0x8b, 0x2f, 0xf5, 0x4e, 0xed,
> +-    0x68, 0x43, 0x0a, 0xe3, 0x42, 0xf6, 0x6d, 0x4a, 0xc9, 0x9b, 0xd0, 0xef, 0x43, 0xce, 0x65, 0x9b,
> +-    0xc9, 0x63, 0x25, 0x5d, 0x8c, 0x84, 0x98, 0x75, 0x58, 0xd9, 0x21, 0x9e, 0x87, 0xbb, 0x8b, 0xf2,
> +-    0x64, 0xda, 0x70, 0xef, 0x0a, 0xa9, 0x36, 0x7a, 0x08, 0x79, 0xfe, 0x14, 0xed, 0x4c, 0x12, 0x9f,
> +-    0xe3, 0xf6, 0x81, 0xeb, 0xf0, 0x29, 0xfe, 0x5c, 0x13, 0x53, 0xb2, 0x59, 0xe7, 0xb8, 0xcd, 0xa7,
> +-    0x0c, 0xc8, 0x9d, 0xe0, 0x80, 0xba, 0x44, 0x16, 0x5b, 0xc1, 0x1a, 0x9b, 0xe6, 0x26, 0xdc, 0x7b,
> +-    0xd5, 0x0f, 0x99, 0x43, 0x4e, 0xbd, 0x45, 0xb7, 0xb6, 0x0a, 0x69, 0x8f, 0x9c, 0x0a, 0xd7, 0x79,
> +-    0x8b, 0x0f, 0x79, 0xba, 0x0e, 0xec, 0x90, 0x2e, 0xea, 0x23, 0xe6, 0xfb, 0x50, 0xb2, 0x30, 0x0d,
> +-    0x87, 0x8b, 0x80, 0xad, 0x5f, 0x01, 0x32, 0xbc, 0x16, 0xd0, 0x4b, 0xc8, 0x8a, 0x9e, 0x82, 0xa6,
> +-    0x8a, 0x58, 0xbd, 0xb6, 0x1b, 0xd1, 0xe6, 0x55, 0x7e, 0x3c, 0x07, 0xa1, 0x92, 0xf6, 0x06, 0x74,
> +-    0xf9, 0xc8, 0x42, 0x4f, 0xe3, 0xc0, 0xd7, 0x5e, 0xb5, 0xe5, 0x8d, 0x45, 0x30, 0xe5, 0x58, 0x1e,
> +-    0x33, 0x60, 0x89, 0xc7, 0xbc, 0x2a, 0xbd, 0xc4, 0x63, 0x46, 0xea, 0x69, 0x1f, 0x74, 0xf9, 0x28,
> +-    0x43, 0xb1, 0xe0, 0xa9, 0xf7, 0x5f, 0xd9, 0x9c, 0x07, 0x51, 0x0e, 0xdb, 0x90, 0xe1, 0x22, 0x89,
> +-    0xaa, 0x71, 0xd8, 0x88, 0xca, 0x96, 0x6b, 0xc9, 0x00, 0xe5, 0x6a, 0x0b, 0xb2, 0xe2, 0xaa, 0xe3,
> +-    0x23, 0x8d, 0xb2, 0xa0, 0xbc, 0x7e, 0x8d, 0xfc, 0x7b, 0xfc, 0x3f, 0x1e, 0xb4, 0x03, 0xba, 0x64,
> +-    0x41, 0x7c, 0x78, 0x53, 0x0c, 0x49, 0x74, 0xb2, 0x0f, 0x10, 0x79, 0x6d, 0x7f, 0x10, 0x7b, 0x4f,
> +-    0x71, 0x3a, 0x9e, 0xe8, 0xf0, 0x0b, 0xc8, 0xf0, 0x56, 0x1a, 0x9f, 0xa3, 0x48, 0x93, 0x4d, 0x74,
> +-    0xf0, 0x25, 0x64, 0xb8, 0x72, 0xa1, 0x58, 0xce, 0x5c, 0x7f, 0xdb, 0x26, 0xfa, 0x69, 0x43, 0xe1,
> +-    0xea, 0x4d, 0x88, 0xde, 0x4b, 0xc8, 0xd0, 0xd4, 0x93, 0x31, 0xd1, 0xd5, 0x1e, 0xe4, 0x54, 0xa3,
> +-    0x46, 0xb1, 0x34, 0x99, 0xee, 0xe2, 0x89, 0x6e, 0x9e, 0x83, 0x2e, 0xdb, 0x53, 0x7c, 0xd9, 0x5c,
> +-    0x6b, 0x5d, 0x73, 0x42, 0xcb, 0x70, 0x29, 0x8f, 0xcf, 0x71, 0xa4, 0x61, 0xc4, 0xf3, 0x70, 0xaa,
> +-    0x0b, 0x28, 0x61, 0xa0, 0xc9, 0xc2, 0x40, 0x17, 0x0a, 0xc3, 0x84, 0xd5, 0x16, 0xe4, 0x94, 0xc0,
> +-    0x26, 0x24, 0x6a, 0x4a, 0xa7, 0xcb, 0x4f, 0xe6, 0x62, 0x94, 0xcf, 0xe7, 0x90, 0x1f, 0x2b, 0x2a,
> +-    0x8a, 0x5d, 0x30, 0xa3, 0xb7, 0x49, 0x59, 0xdb, 0xde, 0xbf, 0x78, 0x5b, 0xb9, 0xf3, 0xe7, 0xdb,
> +-    0xca, 0x9d, 0x9f, 0x47, 0x15, 0xed, 0x62, 0x54, 0xd1, 0x7e, 0x1f, 0x55, 0xb4, 0x7f, 0x46, 0x15,
> +-    0xed, 0xfb, 0x4f, 0x6e, 0xfb, 0xf3, 0xc5, 0x26, 0xff, 0xf3, 0x5d, 0xea, 0x50, 0x17, 0x5b, 0x3c,
> +-    0xfb, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x19, 0x17, 0x87, 0x57, 0x00, 0x11, 0x00, 0x00,
> ++    // 1306 bytes of a gzipped FileDescriptorProto
> ++    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4d, 0x6f, 0xdb, 0x46,
> ++    0x13, 0x0e, 0xf5, 0x41, 0x49, 0xa3, 0xc8, 0x71, 0xf6, 0x75, 0xf2, 0x32, 0x0a, 0x20, 0x29, 0x4c,
> ++    0x93, 0xaa, 0x2d, 0x40, 0xa1, 0x0a, 0x1a, 0x14, 0x31, 0x90, 0xc2, 0x76, 0xdc, 0x40, 0x4d, 0x5a,
> ++    0x1b, 0x4c, 0x8a, 0x04, 0xbd, 0x18, 0xb4, 0xb8, 0x91, 0x08, 0x4b, 0x5c, 0x96, 0xbb, 0x74, 0xa2,
> ++    0x02, 0x05, 0x7a, 0xea, 0xa1, 0xa7, 0xfe, 0xac, 0x1c, 0x0b, 0xf4, 0xd2, 0x4b, 0xd3, 0x46, 0xff,
> ++    0xa0, 0xc7, 0xde, 0x8a, 0xfd, 0x90, 0x45, 0x49, 0xa4, 0x14, 0x07, 0xba, 0x18, 0x3b, 0xdc, 0x67,
> ++    0x67, 0x67, 0x67, 0x9f, 0x79, 0x66, 0x65, 0xd8, 0xee, 0x79, 0xac, 0x1f, 0x1d, 0x5b, 0x5d, 0x32,
> ++    0x6c, 0x75, 0x89, 0xcf, 0x1c, 0xcf, 0xc7, 0xa1, 0x1b, 0x1f, 0x86, 0x91, 0xcf, 0xbc, 0x21, 0x6e,
> ++    0x9d, 0xb6, 0x5b, 0xcc, 0xa1, 0x27, 0x2d, 0xda, 0xf7, 0x86, 0x56, 0x10, 0x12, 0x46, 0x10, 0x9a,
> ++    0xc2, 0x2c, 0x3e, 0x67, 0x9d, 0xb6, 0xab, 0xd7, 0x7a, 0x84, 0xf4, 0x06, 0xb8, 0x25, 0x10, 0xc7,
> ++    0xd1, 0x8b, 0x96, 0xe3, 0x8f, 0x24, 0xbc, 0x7a, 0x7d, 0x7e, 0x0a, 0x0f, 0x03, 0x36, 0x99, 0xdc,
> ++    0xea, 0x91, 0x1e, 0x11, 0xc3, 0x16, 0x1f, 0xa9, 0xaf, 0xf5, 0xf9, 0x25, 0x3c, 0x14, 0xca, 0x9c,
> ++    0x61, 0xa0, 0x00, 0x77, 0x57, 0xc6, 0xef, 0x04, 0x5e, 0x8b, 0x8d, 0x02, 0x4c, 0x5b, 0x43, 0x12,
> ++    0xf9, 0x4c, 0xad, 0xbb, 0x77, 0x8e, 0x75, 0xe2, 0xd8, 0xe2, 0x7c, 0x62, 0xad, 0xf9, 0x7b, 0x06,
> ++    0x2e, 0xef, 0x85, 0xd8, 0x61, 0xf8, 0xa9, 0x43, 0x4f, 0x6c, 0xfc, 0x7d, 0x84, 0x29, 0x43, 0x57,
> ++    0x21, 0xe3, 0xb9, 0x86, 0xd6, 0xd0, 0x9a, 0xa5, 0x5d, 0x7d, 0xfc, 0xa6, 0x9e, 0xe9, 0x3c, 0xb0,
> ++    0x33, 0x9e, 0x8b, 0xae, 0x82, 0x7e, 0x1c, 0xf9, 0xee, 0x00, 0x1b, 0x19, 0x3e, 0x67, 0x2b, 0x0b,
> ++    0xb5, 0x40, 0x0f, 0x09, 0x61, 0x2f, 0xa8, 0x91, 0x6d, 0x64, 0x9b, 0xe5, 0xf6, 0xff, 0xad, 0x78,
> ++    0x36, 0xf9, 0xc6, 0xd6, 0xd7, 0x3c, 0x60, 0x5b, 0xc1, 0x50, 0x15, 0x8a, 0x0c, 0x87, 0x43, 0xcf,
> ++    0x77, 0x06, 0x46, 0xae, 0xa1, 0x35, 0x8b, 0xf6, 0x99, 0x8d, 0xb6, 0x20, 0x4f, 0x99, 0xeb, 0xf9,
> ++    0x46, 0x5e, 0xec, 0x21, 0x0d, 0xbe, 0x35, 0x65, 0x2e, 0x89, 0x98, 0xa1, 0xcb, 0xad, 0xa5, 0xa5,
> ++    0xbe, 0xe3, 0x30, 0x34, 0x0a, 0x67, 0xdf, 0x71, 0x18, 0xa2, 0x1a, 0x40, 0xb7, 0x8f, 0xbb, 0x27,
> ++    0x01, 0xf1, 0x7c, 0x66, 0x14, 0xc5, 0x5c, 0xec, 0x0b, 0xfa, 0x04, 0x2e, 0x07, 0x4e, 0x88, 0x7d,
> ++    0x76, 0x14, 0x83, 0x95, 0x04, 0x6c, 0x53, 0x4e, 0xec, 0x4d, 0xc1, 0x16, 0x14, 0x48, 0xc0, 0x3c,
> ++    0xe2, 0x53, 0x03, 0x1a, 0x5a, 0xb3, 0xdc, 0xde, 0xb2, 0xe4, 0x65, 0x5a, 0x93, 0xcb, 0xb4, 0x76,
> ++    0xfc, 0x91, 0x3d, 0x01, 0x99, 0xb7, 0x01, 0xc5, 0x93, 0x4a, 0x03, 0xe2, 0x53, 0x8c, 0x36, 0x21,
> ++    0x1b, 0xa8, 0xb4, 0x56, 0x6c, 0x3e, 0x34, 0x1f, 0x43, 0xe5, 0x01, 0x1e, 0x60, 0x86, 0x57, 0x25,
> ++    0xfe, 0x26, 0x14, 0xf0, 0x2b, 0xdc, 0x3d, 0xf2, 0x5c, 0x99, 0xf9, 0x5d, 0x18, 0xbf, 0xa9, 0xeb,
> ++    0xfb, 0xaf, 0x70, 0xb7, 0xf3, 0xc0, 0xd6, 0xf9, 0x54, 0xc7, 0x35, 0x7f, 0xd6, 0x60, 0x63, 0xe2,
> ++    0x2e, 0x6d, 0x4b, 0x54, 0x87, 0x32, 0x7e, 0xe5, 0xb1, 0x23, 0xca, 0x1c, 0x16, 0x51, 0xe1, 0xad,
> ++    0x62, 0x03, 0xff, 0xf4, 0x44, 0x7c, 0x41, 0x3b, 0x50, 0xe2, 0x16, 0x76, 0x8f, 0x1c, 0x66, 0x64,
> ++    0xc5, 0x69, 0xab, 0x0b, 0xa7, 0x7d, 0x3a, 0xa1, 0xee, 0x6e, 0xf1, 0xf5, 0x9b, 0xfa, 0x85, 0x5f,
> ++    0xff, 0xaa, 0x6b, 0x76, 0x51, 0x2e, 0xdb, 0x61, 0xe6, 0x9f, 0x1a, 0x20, 0x1e, 0xdb, 0x61, 0x48,
> ++    0xba, 0x98, 0xd2, 0x75, 0x1c, 0x6e, 0x86, 0x31, 0xd9, 0x34, 0xc6, 0xe4, 0x92, 0x19, 0x93, 0x4f,
> ++    0x61, 0x8c, 0x3e, 0xc3, 0x98, 0x26, 0xe4, 0x68, 0x80, 0xbb, 0x82, 0x47, 0x69, 0x37, 0x2c, 0x10,
> ++    0xe6, 0x15, 0xf8, 0xdf, 0xcc, 0xf1, 0x64, 0xb2, 0xcd, 0x1f, 0x61, 0xd3, 0xc6, 0xd4, 0xfb, 0x01,
> ++    0x1f, 0xb2, 0xd1, 0x5a, 0xce, 0xbc, 0x05, 0xf9, 0x97, 0x9e, 0xcb, 0xfa, 0xe2, 0xc0, 0x15, 0x5b,
> ++    0x1a, 0x3c, 0xfe, 0x3e, 0xf6, 0x7a, 0x7d, 0x26, 0x8e, 0x5b, 0xb1, 0x95, 0x65, 0x3e, 0x82, 0x8b,
> ++    0xfc, 0x0a, 0xd7, 0xc3, 0xa5, 0x7f, 0x32, 0x50, 0x51, 0xde, 0x14, 0x95, 0xce, 0xab, 0x09, 0x8a,
> ++    0x7a, 0xd9, 0x29, 0xf5, 0xee, 0xf0, 0xc4, 0x0b, 0xd6, 0xf1, 0xc0, 0x37, 0xda, 0xd7, 0xe3, 0x2a,
> ++    0x71, 0xfa, 0xa9, 0x12, 0x0a, 0x49, 0x43, 0x5b, 0x41, 0xd7, 0xa4, 0x06, 0x71, 0xf6, 0x14, 0xe7,
> ++    0xd8, 0x33, 0x57, 0x11, 0xa5, 0xe5, 0x15, 0x01, 0xef, 0x53, 0x11, 0xf1, 0x9c, 0x97, 0x53, 0x73,
> ++    0xce, 0xa0, 0xfc, 0xc8, 0x1b, 0x0c, 0xd6, 0x42, 0x1d, 0x9e, 0x08, 0xaf, 0x37, 0x29, 0x96, 0x8a,
> ++    0xad, 0x2c, 0x7e, 0x2b, 0xce, 0x60, 0xa2, 0xb9, 0x7c, 0x68, 0x76, 0x61, 0x63, 0x6f, 0x40, 0x28,
> ++    0xee, 0x1c, 0xac, 0x8b, 0xb3, 0xf2, 0xbe, 0x64, 0x91, 0x4a, 0xc3, 0xbc, 0x05, 0xe5, 0x43, 0xcf,
> ++    0x5d, 0xa5, 0x04, 0xe6, 0x37, 0x70, 0x51, 0xc2, 0x14, 0xe7, 0xee, 0x43, 0x29, 0x90, 0x45, 0x86,
> ++    0xa9, 0xa1, 0x89, 0xd6, 0xd2, 0x48, 0x24, 0x8d, 0x2a, 0xc5, 0x8e, 0xff, 0x82, 0xd8, 0xd3, 0x25,
> ++    0x26, 0x85, 0x2b, 0x53, 0x15, 0x7f, 0x97, 0x06, 0x87, 0x20, 0x17, 0x38, 0xac, 0xaf, 0xa8, 0x2c,
> ++    0xc6, 0x71, 0xf1, 0xcf, 0xbe, 0x8b, 0xf8, 0xff, 0xab, 0xc1, 0xe5, 0x6f, 0x03, 0xf7, 0x1d, 0x5b,
> ++    0x6a, 0x1b, 0x4a, 0x21, 0xa6, 0x24, 0x0a, 0xbb, 0x58, 0xaa, 0x71, 0x9a, 0xff, 0x29, 0x0c, 0x3d,
> ++    0x87, 0xb2, 0xe3, 0xfb, 0x84, 0x39, 0x93, 0xa8, 0x78, 0x62, 0xee, 0x5a, 0x8b, 0x2f, 0x18, 0x6b,
> ++    0x21, 0x0e, 0x6b, 0x67, 0xba, 0x70, 0xdf, 0x67, 0xe1, 0xc8, 0x8e, 0xbb, 0xaa, 0xde, 0x87, 0xcd,
> ++    0x79, 0x00, 0xa7, 0xcc, 0x09, 0x1e, 0xc9, 0xd0, 0x6d, 0x3e, 0xe4, 0x77, 0x7c, 0xea, 0x0c, 0xa2,
> ++    0x49, 0xc5, 0x4b, 0xe3, 0x5e, 0xe6, 0x73, 0x4d, 0x69, 0x50, 0xc8, 0xd6, 0xa2, 0x41, 0x37, 0x84,
> ++    0x04, 0x71, 0x67, 0xa9, 0x0d, 0xf4, 0x2b, 0x28, 0x3f, 0x73, 0xbc, 0xf5, 0x6c, 0x17, 0xc2, 0x45,
> ++    0xe9, 0x4b, 0xed, 0x36, 0xa7, 0x0b, 0xda, 0x72, 0x5d, 0xc8, 0xbc, 0x57, 0xa7, 0xbc, 0x2d, 0x35,
> ++    0x7b, 0x65, 0x61, 0x6c, 0x4b, 0x35, 0x9e, 0x56, 0xc6, 0xc7, 0xbc, 0xcc, 0x1c, 0x26, 0xc3, 0x4a,
> ++    0xa3, 0x8c, 0x84, 0x98, 0x4d, 0xd8, 0xd8, 0x23, 0xbe, 0x8f, 0xbb, 0xab, 0xf2, 0x64, 0x3a, 0x70,
> ++    0xe9, 0x0c, 0xa9, 0x36, 0xba, 0x06, 0x45, 0xfe, 0x4a, 0x3e, 0x9a, 0x26, 0xbe, 0xc0, 0xed, 0x43,
> ++    0xcf, 0xe5, 0x53, 0x9c, 0x67, 0x62, 0x4a, 0xbe, 0x23, 0x0a, 0xdc, 0xe6, 0x53, 0x06, 0x14, 0x4e,
> ++    0x71, 0x48, 0x3d, 0x22, 0x75, 0xa0, 0x64, 0x4f, 0x4c, 0x73, 0x1b, 0x2e, 0x3d, 0xe9, 0x47, 0xcc,
> ++    0x25, 0x2f, 0xfd, 0x55, 0xb7, 0xb6, 0x09, 0x59, 0x9f, 0xbc, 0x14, 0xae, 0x8b, 0x36, 0x1f, 0xf2,
> ++    0x74, 0x1d, 0x3a, 0x11, 0x5d, 0xd5, 0xe2, 0xcc, 0x0f, 0xa1, 0x62, 0x63, 0x1a, 0x0d, 0x57, 0x01,
> ++    0xdb, 0xbf, 0x00, 0xe4, 0x78, 0x75, 0xa0, 0xc7, 0x90, 0x17, 0xed, 0x0e, 0x35, 0x92, 0xca, 0x28,
> ++    0xde, 0x57, 0xab, 0x37, 0x96, 0x20, 0x54, 0xd2, 0x9e, 0x81, 0x2e, 0xdf, 0x7f, 0xe8, 0x56, 0x12,
> ++    0x78, 0xe1, 0xc1, 0x5d, 0xbd, 0xbd, 0x0a, 0xa6, 0x1c, 0xcb, 0x30, 0x43, 0x96, 0x1a, 0xe6, 0x59,
> ++    0xe9, 0xa5, 0x86, 0x19, 0xab, 0xa7, 0x03, 0xd0, 0xe5, 0x7b, 0x11, 0x25, 0x82, 0x67, 0x9e, 0xa6,
> ++    0x55, 0x73, 0x19, 0x44, 0x39, 0xec, 0x40, 0x8e, 0xeb, 0x37, 0xaa, 0x27, 0x61, 0x63, 0x0d, 0xa0,
> ++    0xda, 0x48, 0x07, 0x28, 0x57, 0x3b, 0x90, 0x17, 0x57, 0x9d, 0x7c, 0xd2, 0x38, 0x0b, 0xaa, 0x57,
> ++    0x17, 0xc8, 0xbf, 0xcf, 0x7f, 0x8c, 0xa1, 0x3d, 0xd0, 0x25, 0x0b, 0x92, 0x8f, 0x37, 0xc3, 0x90,
> ++    0x54, 0x27, 0x07, 0x00, 0xb1, 0x1f, 0x02, 0x1f, 0x25, 0xde, 0x53, 0x52, 0x8b, 0x49, 0x75, 0xf8,
> ++    0x05, 0xe4, 0x78, 0x97, 0x4f, 0xce, 0x51, 0xac, 0xff, 0xa7, 0x3a, 0xf8, 0x12, 0x72, 0x5c, 0xb9,
> ++    0x50, 0x22, 0x67, 0x16, 0x9f, 0xdd, 0xa9, 0x7e, 0x3a, 0x50, 0x3a, 0x7b, 0xae, 0xa2, 0x0f, 0x52,
> ++    0x32, 0x34, 0xf3, 0x9a, 0x4d, 0x75, 0xb5, 0x0f, 0x05, 0xf5, 0x86, 0x40, 0x89, 0x34, 0x99, 0x7d,
> ++    0x60, 0xa4, 0xba, 0x79, 0x08, 0xba, 0x6c, 0x58, 0xc9, 0x65, 0xb3, 0xd0, 0xcc, 0x96, 0x1c, 0x2d,
> ++    0xc7, 0xa5, 0x3c, 0x39, 0xc7, 0xb1, 0x86, 0x91, 0xcc, 0xc3, 0x99, 0x2e, 0xa0, 0x84, 0x81, 0xa6,
> ++    0x0b, 0x03, 0x5d, 0x29, 0x0c, 0x53, 0x56, 0xdb, 0x50, 0x50, 0x02, 0x9b, 0x92, 0xa8, 0x19, 0x9d,
> ++    0xae, 0xde, 0x5c, 0x8a, 0x51, 0x3e, 0x1f, 0x42, 0x71, 0xa2, 0xa8, 0x28, 0x71, 0xc1, 0x9c, 0xde,
> ++    0xa6, 0x65, 0x6d, 0xf7, 0xe0, 0xf5, 0xdb, 0xda, 0x85, 0x3f, 0xde, 0xd6, 0x2e, 0xfc, 0x34, 0xae,
> ++    0x69, 0xaf, 0xc7, 0x35, 0xed, 0xb7, 0x71, 0x4d, 0xfb, 0x7b, 0x5c, 0xd3, 0xbe, 0xfb, 0xec, 0xbc,
> ++    0xff, 0x59, 0xd9, 0xe6, 0x7f, 0x9e, 0x67, 0x8e, 0x75, 0xb1, 0xc5, 0x9d, 0xff, 0x02, 0x00, 0x00,
> ++    0xff, 0xff, 0xd3, 0xbf, 0xc3, 0xa9, 0x9b, 0x11, 0x00, 0x00,
> + }
> +
> + func (m *CreateTaskRequest) Marshal() (dAtA []byte, err error) {
> +@@ -2000,6 +2007,25 @@ func (m *UpdateTaskRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
> +             i -= len(m.XXX_unrecognized)
> +             copy(dAtA[i:], m.XXX_unrecognized)
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k := range m.Annotations {
> ++                    v := m.Annotations[k]
> ++                    baseI := i
> ++                    i -= len(v)
> ++                    copy(dAtA[i:], v)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(v)))
> ++                    i--
> ++                    dAtA[i] = 0x12
> ++                    i -= len(k)
> ++                    copy(dAtA[i:], k)
> ++                    i = encodeVarintShim(dAtA, i, uint64(len(k)))
> ++                    i--
> ++                    dAtA[i] = 0xa
> ++                    i = encodeVarintShim(dAtA, i, uint64(baseI-i))
> ++                    i--
> ++                    dAtA[i] = 0x1a
> ++            }
> ++    }
> +     if m.Resources != nil {
> +             {
> +                     size, err := m.Resources.MarshalToSizedBuffer(dAtA[:i])
> +@@ -2826,6 +2852,14 @@ func (m *UpdateTaskRequest) Size() (n int) {
> +             l = m.Resources.Size()
> +             n += 1 + l + sovShim(uint64(l))
> +     }
> ++    if len(m.Annotations) > 0 {
> ++            for k, v := range m.Annotations {
> ++                    _ = k
> ++                    _ = v
> ++                    mapEntrySize := 1 + len(k) + sovShim(uint64(len(k))) + 1 + len(v) + sovShim(uint64(len(v)))
> ++                    n += mapEntrySize + 1 + sovShim(uint64(mapEntrySize))
> ++            }
> ++    }
> +     if m.XXX_unrecognized != nil {
> +             n += len(m.XXX_unrecognized)
> +     }
> +@@ -3237,9 +3271,20 @@ func (this *UpdateTaskRequest) String() string {
> +     if this == nil {
> +             return "nil"
> +     }
> ++    keysForAnnotations := make([]string, 0, len(this.Annotations))
> ++    for k, _ := range this.Annotations {
> ++            keysForAnnotations = append(keysForAnnotations, k)
> ++    }
> ++    github_com_gogo_protobuf_sortkeys.Strings(keysForAnnotations)
> ++    mapStringForAnnotations := "map[string]string{"
> ++    for _, k := range keysForAnnotations {
> ++            mapStringForAnnotations += fmt.Sprintf("%v: %v,", k, this.Annotations[k])
> ++    }
> ++    mapStringForAnnotations += "}"
> +     s := strings.Join([]string{`&UpdateTaskRequest{`,
> +             `ID:` + fmt.Sprintf("%v", this.ID) + `,`,
> +             `Resources:` + strings.Replace(fmt.Sprintf("%v", this.Resources), "Any", "types1.Any", 1) + `,`,
> ++            `Annotations:` + mapStringForAnnotations + `,`,
> +             `XXX_unrecognized:` + fmt.Sprintf("%v", this.XXX_unrecognized) + `,`,
> +             `}`,
> +     }, "")
> +@@ -4019,10 +4064,7 @@ func (m *CreateTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4092,10 +4134,7 @@ func (m *CreateTaskResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4210,10 +4249,7 @@ func (m *DeleteRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4335,10 +4371,7 @@ func (m *DeleteResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4605,10 +4638,7 @@ func (m *ExecProcessRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4659,10 +4689,7 @@ func (m *ExecProcessResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4815,10 +4842,7 @@ func (m *ResizePtyRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -4933,10 +4957,7 @@ func (m *StateRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5289,10 +5310,7 @@ func (m *StateResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5446,10 +5464,7 @@ func (m *KillRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5584,10 +5599,7 @@ func (m *CloseIORequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5670,10 +5682,7 @@ func (m *PidsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5758,10 +5767,7 @@ func (m *PidsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -5912,10 +5918,7 @@ func (m *CheckpointTaskRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6028,16 +6031,140 @@ func (m *UpdateTaskRequest) Unmarshal(dAtA []byte) error {
> +                             return err
> +                     }
> +                     iNdEx = postIndex
> ++            case 3:
> ++                    if wireType != 2 {
> ++                            return fmt.Errorf("proto: wrong wireType = %d for field Annotations", wireType)
> ++                    }
> ++                    var msglen int
> ++                    for shift := uint(0); ; shift += 7 {
> ++                            if shift >= 64 {
> ++                                    return ErrIntOverflowShim
> ++                            }
> ++                            if iNdEx >= l {
> ++                                    return io.ErrUnexpectedEOF
> ++                            }
> ++                            b := dAtA[iNdEx]
> ++                            iNdEx++
> ++                            msglen |= int(b&0x7F) << shift
> ++                            if b < 0x80 {
> ++                                    break
> ++                            }
> ++                    }
> ++                    if msglen < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    postIndex := iNdEx + msglen
> ++                    if postIndex < 0 {
> ++                            return ErrInvalidLengthShim
> ++                    }
> ++                    if postIndex > l {
> ++                            return io.ErrUnexpectedEOF
> ++                    }
> ++                    if m.Annotations == nil {
> ++                            m.Annotations = make(map[string]string)
> ++                    }
> ++                    var mapkey string
> ++                    var mapvalue string
> ++                    for iNdEx < postIndex {
> ++                            entryPreIndex := iNdEx
> ++                            var wire uint64
> ++                            for shift := uint(0); ; shift += 7 {
> ++                                    if shift >= 64 {
> ++                                            return ErrIntOverflowShim
> ++                                    }
> ++                                    if iNdEx >= l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    b := dAtA[iNdEx]
> ++                                    iNdEx++
> ++                                    wire |= uint64(b&0x7F) << shift
> ++                                    if b < 0x80 {
> ++                                            break
> ++                                    }
> ++                            }
> ++                            fieldNum := int32(wire >> 3)
> ++                            if fieldNum == 1 {
> ++                                    var stringLenmapkey uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapkey |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapkey := int(stringLenmapkey)
> ++                                    if intStringLenmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapkey := iNdEx + intStringLenmapkey
> ++                                    if postStringIndexmapkey < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapkey > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
> ++                                    iNdEx = postStringIndexmapkey
> ++                            } else if fieldNum == 2 {
> ++                                    var stringLenmapvalue uint64
> ++                                    for shift := uint(0); ; shift += 7 {
> ++                                            if shift >= 64 {
> ++                                                    return ErrIntOverflowShim
> ++                                            }
> ++                                            if iNdEx >= l {
> ++                                                    return io.ErrUnexpectedEOF
> ++                                            }
> ++                                            b := dAtA[iNdEx]
> ++                                            iNdEx++
> ++                                            stringLenmapvalue |= uint64(b&0x7F) << shift
> ++                                            if b < 0x80 {
> ++                                                    break
> ++                                            }
> ++                                    }
> ++                                    intStringLenmapvalue := int(stringLenmapvalue)
> ++                                    if intStringLenmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    postStringIndexmapvalue := iNdEx + intStringLenmapvalue
> ++                                    if postStringIndexmapvalue < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if postStringIndexmapvalue > l {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
> ++                                    iNdEx = postStringIndexmapvalue
> ++                            } else {
> ++                                    iNdEx = entryPreIndex
> ++                                    skippy, err := skipShim(dAtA[iNdEx:])
> ++                                    if err != nil {
> ++                                            return err
> ++                                    }
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> ++                                            return ErrInvalidLengthShim
> ++                                    }
> ++                                    if (iNdEx + skippy) > postIndex {
> ++                                            return io.ErrUnexpectedEOF
> ++                                    }
> ++                                    iNdEx += skippy
> ++                            }
> ++                    }
> ++                    m.Annotations[mapkey] = mapvalue
> ++                    iNdEx = postIndex
> +             default:
> +                     iNdEx = preIndex
> +                     skippy, err := skipShim(dAtA[iNdEx:])
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6152,10 +6279,7 @@ func (m *StartRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6225,10 +6349,7 @@ func (m *StartResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6343,10 +6464,7 @@ func (m *WaitRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6449,10 +6567,7 @@ func (m *WaitResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6535,10 +6650,7 @@ func (m *StatsRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6625,10 +6737,7 @@ func (m *StatsResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6711,10 +6820,7 @@ func (m *ConnectRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6835,10 +6941,7 @@ func (m *ConnectResponse) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -6941,10 +7044,7 @@ func (m *ShutdownRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7027,10 +7127,7 @@ func (m *PauseRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -7113,10 +7210,7 @@ func (m *ResumeRequest) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthShim
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthShim
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +index 9a2374b56..fae67de4f 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/plugin/unmarshal/unmarshal.go
> +@@ -844,7 +844,7 @@ func (p *unmarshal) field(file *generator.FileDescriptor, msg *generator.Descrip
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1484,12 +1484,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +                     p.P(`return err`)
> +                     p.Out()
> +                     p.P(`}`)
> +-                    p.P(`if skippy < 0 {`)
> +-                    p.In()
> +-                    p.P(`return ErrInvalidLength`, p.localName)
> +-                    p.Out()
> +-                    p.P(`}`)
> +-                    p.P(`if (iNdEx + skippy) < 0 {`)
> ++                    p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +                     p.In()
> +                     p.P(`return ErrInvalidLength`, p.localName)
> +                     p.Out()
> +@@ -1512,12 +1507,7 @@ func (p *unmarshal) Generate(file *generator.FileDescriptor) {
> +             p.P(`return err`)
> +             p.Out()
> +             p.P(`}`)
> +-            p.P(`if skippy < 0 {`)
> +-            p.In()
> +-            p.P(`return ErrInvalidLength`, p.localName)
> +-            p.Out()
> +-            p.P(`}`)
> +-            p.P(`if (iNdEx + skippy) < 0 {`)
> ++            p.P(`if (skippy < 0) || (iNdEx + skippy) < 0 {`)
> +             p.In()
> +             p.P(`return ErrInvalidLength`, p.localName)
> +             p.Out()
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +index 1ce0be2fa..f85c0cc81 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/proto/text_parser.go
> +@@ -318,7 +318,7 @@ func unescape(s string) (ch string, tail string, err error) {
> +             if i > utf8.MaxRune {
> +                     return "", "", fmt.Errorf(`\%c%s is not a valid Unicode code point`, r, ss)
> +             }
> +-            return string(i), s, nil
> ++            return string(rune(i)), s, nil
> +     }
> +     return "", "", fmt.Errorf(`unknown escape \%c`, r)
> + }
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +index 98e269d54..e3d4d9490 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/any.pb.go
> +@@ -592,10 +592,7 @@ func (m *Any) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthAny
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthAny
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +index 58bf4b53b..83e886920 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/api.pb.go
> +@@ -1677,10 +1677,7 @@ func (m *Api) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -1920,10 +1917,7 @@ func (m *Method) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2038,10 +2032,7 @@ func (m *Mixin) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthApi
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthApi
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +index 3959f0669..4deafcb1c 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/duration.pb.go
> +@@ -415,10 +415,7 @@ func (m *Duration) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthDuration
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthDuration
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +index 17e3aa558..9e94748b3 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/empty.pb.go
> +@@ -360,10 +360,7 @@ func (m *Empty) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthEmpty
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthEmpty
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +index 7226b57f7..6ae346d92 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/field_mask.pb.go
> +@@ -636,10 +636,7 @@ func (m *FieldMask) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthFieldMask
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthFieldMask
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +index 61045ce10..8e6ce71b2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/source_context.pb.go
> +@@ -422,10 +422,7 @@ func (m *SourceContext) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthSourceContext
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthSourceContext
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +index cea553eef..c0457312e 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/struct.pb.go
> +@@ -1862,7 +1862,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                                     if err != nil {
> +                                             return err
> +                                     }
> +-                                    if skippy < 0 {
> ++                                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                                             return ErrInvalidLengthStruct
> +                                     }
> +                                     if (iNdEx + skippy) > postIndex {
> +@@ -1879,10 +1879,7 @@ func (m *Struct) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2087,10 +2084,7 @@ func (m *Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2175,10 +2169,7 @@ func (m *ListValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthStruct
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthStruct
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +index b81875267..45db7b3bb 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/timestamp.pb.go
> +@@ -437,10 +437,7 @@ func (m *Timestamp) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthTimestamp
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthTimestamp
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +index 13b7ec02f..791427bb2 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/type.pb.go
> +@@ -2483,10 +2483,7 @@ func (m *Type) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2795,10 +2792,7 @@ func (m *Field) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3004,10 +2998,7 @@ func (m *Enum) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3143,10 +3134,7 @@ func (m *EnumValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -3265,10 +3253,7 @@ func (m *Option) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthType
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthType
> +                     }
> +                     if (iNdEx + skippy) > l {
> +diff --git a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +index 8f1edb57d..8d415420a 100644
> +--- a/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> ++++ b/src/import/vendor/github.com/gogo/protobuf/types/wrappers.pb.go
> +@@ -2020,10 +2020,7 @@ func (m *DoubleValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2085,10 +2082,7 @@ func (m *FloatValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2158,10 +2152,7 @@ func (m *Int64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2231,10 +2222,7 @@ func (m *UInt64Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2304,10 +2292,7 @@ func (m *Int32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2377,10 +2362,7 @@ func (m *UInt32Value) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2451,10 +2433,7 @@ func (m *BoolValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2537,10 +2516,7 @@ func (m *StringValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +@@ -2625,10 +2601,7 @@ func (m *BytesValue) Unmarshal(dAtA []byte) error {
> +                     if err != nil {
> +                             return err
> +                     }
> +-                    if skippy < 0 {
> +-                            return ErrInvalidLengthWrappers
> +-                    }
> +-                    if (iNdEx + skippy) < 0 {
> ++                    if (skippy < 0) || (iNdEx+skippy) < 0 {
> +                             return ErrInvalidLengthWrappers
> +                     }
> +                     if (iNdEx + skippy) > l {
> +--
> +2.30.2
> +
> --
> 2.30.2
>

>
>
>





Re: [PATCH] ceph: Upgrade to 16.2.0

Saul Wold
 

Bruce

I am aware there is a 16.2.1 that was just published on the 19th, I wanted to get visibility to the base upgrade which I just completed while I work on the dot dot update.

Ceph-17 is the next major release, but has not be released yet.

Thanks

Sau!

On 4/22/21 12:32 PM, Saul Wold wrote:
This updates the Ceph version to 16.2.0 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly
Signed-off-by: Saul Wold <saul.wold@...>
---
...h-fix-build-errors-for-cross-compile.patch | 119 ++++++++++++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
recipes-extended/ceph/ceph_16.2.0.bb | 22 ++--
3 files changed, 138 insertions(+), 34 deletions(-)
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 7764a2b..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 04b53b669dbd75c9a90bf7f8ae2b47ff96176239 Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile
1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)
Upstream-Status: Inappropriate [oe specific]
@@ -14,16 +19,17 @@ Adjust context for v14.2.3
Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>
---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 1 -
- src/pybind/rados/setup.py | 1 -
- src/pybind/rbd/setup.py | 1 -
- src/pybind/rgw/setup.py | 1 -
- 7 files changed, 8 insertions(+), 27 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)
diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index ff01aaf81..18656c5a5 100644
@@ -105,50 +111,111 @@ index b53b0d944..4955711a9 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c3d40df05..87cdeb473 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -137,7 +137,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 0d1047825..feafb605d 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -131,7 +131,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 73ea4555f..b9c6a78d2 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 663604e8f..695038c0e 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)
-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_16.2.0.bb b/recipes-extended/ceph/ceph_16.2.0.bb
index 806a03f..d55e602 100644
--- a/recipes-extended/ceph/ceph_16.2.0.bb
+++ b/recipes-extended/ceph/ceph_16.2.0.bb
@@ -58,7 +58,9 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
"
-inherit cmake python3native python3-dir systemd
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.
@@ -66,14 +68,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
"
-#SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-#SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-#SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-#SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-#SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
-SRC_URI[sha256sum] = "dfeee542536607220dc2ca49f47c41127c8562dea234a886625e0f7ee1524904"
SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"
@@ -149,6 +146,13 @@ do_install_append () {
mv ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
# WITH_FUSE is set to OFF, remove ceph-fuse related units
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
}
do_install_append_class-target () {
@@ -173,7 +177,8 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
"
FILES_${PN} += " \
@@ -190,6 +195,7 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \
--
Sau!


[PATCH] ceph: Upgrade to 16.2.0

Saul Wold
 

This updates the Ceph version to 16.2.0 which required a couple
changes to base code via a rebased patch which also disabled the
sanity check due to it not working correctly, but the actual
compile worked. Also added a new patch to add soversion information
for the new libcephsqlite library so it would be packaged correctly

Signed-off-by: Saul Wold <saul.wold@...>
---
...h-fix-build-errors-for-cross-compile.patch | 119 ++++++++++++++----
...ite-Add-library-soversion-properties.patch | 31 +++++
recipes-extended/ceph/ceph_16.2.0.bb | 22 ++--
3 files changed, 138 insertions(+), 34 deletions(-)
create mode 100644 recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch

diff --git a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
index 7764a2b..00c7e5b 100644
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ b/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
@@ -1,10 +1,15 @@
-From 04b53b669dbd75c9a90bf7f8ae2b47ff96176239 Mon Sep 17 00:00:00 2001
+From 2a3ccc8079040a7e783b8a9091618878e7cf0719 Mon Sep 17 00:00:00 2001
From: Dengke Du <dengke.du@...>
Date: Mon, 11 Mar 2019 09:14:09 +0800
Subject: [PATCH] ceph: fix build errors for cross compile

1. set the cross compile sysroot to find the rocksdb library
2. correct the install path for library in Distutils.cmake
+3. remove / disable the sanity_check(), for some reasong the
+ sanity check gets the wrong settings and will not link
+ correctly, but the actual build works correctly, this needs
+ more investigation later, earlier versions of the patch also
+ removed it but no comment on why. (sgw)

Upstream-Status: Inappropriate [oe specific]

@@ -14,16 +19,17 @@ Adjust context for v14.2.3

Signed-off-by: He Zhe <zhe.he@...>
Signed-off-by: Sakib Sajal <sakib.sajal@...>
+Signed-off-by: Saul Wold <saul.wold@...>

---
cmake/modules/Distutils.cmake | 25 +++++--------------------
cmake/modules/FindRocksDB.cmake | 4 ++--
src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 1 -
- src/pybind/rados/setup.py | 1 -
- src/pybind/rbd/setup.py | 1 -
- src/pybind/rgw/setup.py | 1 -
- 7 files changed, 8 insertions(+), 27 deletions(-)
+ src/pybind/cephfs/setup.py | 18 +++++-------------
+ src/pybind/rados/setup.py | 11 ++---------
+ src/pybind/rbd/setup.py | 18 +++++-------------
+ src/pybind/rgw/setup.py | 18 +++++-------------
+ 7 files changed, 25 insertions(+), 71 deletions(-)

diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
index ff01aaf81..18656c5a5 100644
@@ -105,50 +111,111 @@ index b53b0d944..4955711a9 100644
-G${CMAKE_GENERATOR}
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index c3d40df05..87cdeb473 100755
+index c3d40df05..24c26c3ed 100755
--- a/src/pybind/cephfs/setup.py
+++ b/src/pybind/cephfs/setup.py
-@@ -137,7 +137,6 @@ def check_sanity():
+@@ -137,19 +137,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['cephfs'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['cephfs'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 0d1047825..feafb605d 100755
+index 0d1047825..cff85a063 100755
--- a/src/pybind/rados/setup.py
+++ b/src/pybind/rados/setup.py
-@@ -131,7 +131,6 @@ def check_sanity():
+@@ -131,15 +131,8 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados'])
+- cython_constants = dict(BUILD_DOC=False)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados'])
++cython_constants = dict(BUILD_DOC=False)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 73ea4555f..b9c6a78d2 100755
+index 73ea4555f..e7f57ddb5 100755
--- a/src/pybind/rbd/setup.py
+++ b/src/pybind/rbd/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rbd'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rbd'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 663604e8f..695038c0e 100755
+index 663604e8f..489c9ba1f 100755
--- a/src/pybind/rgw/setup.py
+++ b/src/pybind/rgw/setup.py
-@@ -135,7 +135,6 @@ def check_sanity():
+@@ -135,19 +135,11 @@ def check_sanity():
finally:
shutil.rmtree(tmp_dir)

-
- if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
- ext_args = {}
- cython_constants = dict(BUILD_DOC=True)
+-if 'BUILD_DOC' in os.environ or 'READTHEDOCS' in os.environ:
+- ext_args = {}
+- cython_constants = dict(BUILD_DOC=True)
+- cythonize_args = dict(compile_time_env=cython_constants)
+-elif check_sanity():
+- ext_args = get_python_flags(['rados', 'rgw'])
+- cython_constants = dict(BUILD_DOC=False)
+- include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
+- cythonize_args = dict(compile_time_env=cython_constants,
+- include_path=include_path)
+-else:
+- sys.exit(1)
++ext_args = get_python_flags(['rados', 'rgw'])
++cython_constants = dict(BUILD_DOC=False)
++include_path = [os.path.join(os.path.dirname(__file__), "..", "rados")]
++cythonize_args = dict(compile_time_env=cython_constants,
++ include_path=include_path)
+
+ cmdclass = {}
+ try:
diff --git a/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
new file mode 100644
index 0000000..2c9cd11
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-libcephsqlite-Add-library-soversion-properties.patch
@@ -0,0 +1,31 @@
+From ce36ce7d1c0f954d1532a759f4d7b09d87287dac Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@...>
+Date: Thu, 22 Apr 2021 08:05:57 -0700
+Subject: [PATCH] libcephsqlite: Add library soversion properties
+
+This additional properties are needed to ensure the library
+is installed with an soversion so that when the library is
+packaged it gets packaged corectly in the ceph package and
+ceph-dev package as the link.
+
+Upstream-Status: pending
+Signed-off-by: Saul Wold <saul.wold@...>
+---
+ src/CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 37db48f86..8dc7bdb56 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -804,6 +804,10 @@ if(WITH_LIBCEPHSQLITE)
+ set(cephsqlite_srcs libcephsqlite.cc SimpleRADOSStriper.cc)
+ add_library(cephsqlite ${CEPH_SHARED} ${cephsqlite_srcs})
+ target_link_libraries(cephsqlite PRIVATE cls_lock_client librados ceph-common SQLite3::SQLite3 ${EXTRALIBS})
++ set_target_properties(cephsqlite PROPERTIES
++ OUTPUT_NAME cephsqlite
++ VERSION 1.0.0
++ SOVERSION 1)
+ install(TARGETS cephsqlite DESTINATION ${CMAKE_INSTALL_LIBDIR})
+ endif(WITH_LIBCEPHSQLITE)
+
diff --git a/recipes-extended/ceph/ceph_16.2.0.bb b/recipes-extended/ceph/ceph_16.2.0.bb
index 806a03f..d55e602 100644
--- a/recipes-extended/ceph/ceph_16.2.0.bb
+++ b/recipes-extended/ceph/ceph_16.2.0.bb
@@ -58,7 +58,9 @@ LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24
file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING;md5=d140fb1fedb53047f0d0830883e7af9f \
"
-inherit cmake python3native python3-dir systemd
+#inherit cmake setuptools3 systemd
+inherit cmake distutils3-base systemd
+
# Disable python pybind support for ceph temporary, when corss compiling pybind,
# pybind mix cmake and python setup environment, would case a lot of errors.

@@ -66,14 +68,9 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
+ file://0001-libcephsqlite-Add-library-soversion-properties.patch \
"

-#SRC_URI[md5sum] = "5a949b91199efe130bfe2e57f200eacd"
-#SRC_URI[sha256sum] = "ea7fa2be68b3570c5c3aa02774dca27de20b6f20a8498f65e5c4ef375a209ace"
-#SRC_URI[sha1sum] = "0503649d7c7d9268cb61b03bbe839106988f87d7"
-#SRC_URI[sha384sum] = "57208c126ea8e640c3979073fd64ce58606f17b4b7ed2e005b0792bdfd51b13391af325658d0f68f961f94175d93e891"
-#SRC_URI[sha512sum] = "1f55b0a13bf06df782831d0c9d5f8617c22442ab97fb186e6ccb08183e02bf1756caf8633fa6b1cf156c3fb7b1bdff90a60a1249adfad0b9450036e2329bf8ff"
-SRC_URI[sha256sum] = "dfeee542536607220dc2ca49f47c41127c8562dea234a886625e0f7ee1524904"
SRC_URI[sha1sum] = "f8cc85e4cc519d7e469a0c3c8327bd1675f0b287"
SRC_URI[sha384sum] = "29a75a733e5ae8039a5ad603558a9707e36b8c337419039ee97351cdbad57875fa57a365fcde29124cee72734608e245"
SRC_URI[sha512sum] = "aeb9a91c33221c64ea24603dc88cab346bf0abdf0d41ff85c2e1cf134130737ec1fab1246be0a2fa3af8a655ae1dabb69688855f229f54438e60cb8098175b8e"
@@ -149,6 +146,13 @@ do_install_append () {
mv ${D}${libexecdir}/ceph/ceph_common.sh ${D}${libdir}/ceph
# WITH_FUSE is set to OFF, remove ceph-fuse related units
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
+
+ for i in ${D}${bindir}/* ${D}${sbindir}/*; do
+ if [ -f "$i" ]; then
+ sed -i -e s:${PYTHON}:${USRBINPATH}/env\ ${DISTUTILS_PYTHON}:g $i
+ sed -i -e s:${STAGING_BINDIR_NATIVE}:${bindir}:g $i
+ fi
+ done
}

do_install_append_class-target () {
@@ -173,7 +177,8 @@ FILES_${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
"

FILES_${PN} += " \
@@ -190,6 +195,7 @@ RDEPENDS_${PN} += "\
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \
--
2.25.1


Re: [PATCH v4] libvirt: uprev v6.3 -> v7.2

Bruce Ashfield
 

v4 worked, and is now merged to master.

Bruce

On Thu, Apr 22, 2021 at 9:49 AM Xu, Yanfei <yanfei.xu@...> wrote:

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.
v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.
v3-->v4:
1.fix apply failure
2.fix compiling error of libxl when enable 'xen' distro feature
3.add else statement to remove systemd dir when use sysvinit.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 205 +++++-------------
12 files changed, 59 insertions(+), 666 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index f48ec25..0f0126b 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -67,3 +67,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd7657..0c661af 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d6..0000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5..0000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d561..0000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df..0000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b5591..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e83..0000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc773..0000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fd..0000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index eeb1bf8..24748ef 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -167,31 +109,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
virtlockd.socket \
"

-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +131,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Ddriver_qemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Ddriver_libxl=enabled,-Ddriver_libxl=disabled,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +175,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +198,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -285,6 +207,8 @@ do_install_append() {
sed -i -e 's/Type=notify/Type=forking/' \
-e '/Type=forking/a PIDFile=/run/libvirtd.pid' \
${D}/${systemd_unitdir}/system/libvirtd.service
+ else
+ rm -rf ${D}/usr/lib/systemd
fi

# The /run/libvirt directories created by the Makefile are
@@ -360,7 +284,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +300,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +311,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0



--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


[PATCH v4] libvirt: uprev v6.3 -> v7.2

Xu, Yanfei
 

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.
v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.
v3-->v4:
1.fix apply failure
2.fix compiling error of libxl when enable 'xen' distro feature
3.add else statement to remove systemd dir when use sysvinit.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 205 +++++-------------
12 files changed, 59 insertions(+), 666 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index f48ec25..0f0126b 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -67,3 +67,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd7657..0c661af 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d6..0000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5..0000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d561..0000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df..0000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b5591..0000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e83..0000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc773..0000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fd..0000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index eeb1bf8..24748ef 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -167,31 +109,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
virtlockd.socket \
"

-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +131,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Ddriver_qemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Ddriver_libxl=enabled,-Ddriver_libxl=disabled,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +175,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +198,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -285,6 +207,8 @@ do_install_append() {
sed -i -e 's/Type=notify/Type=forking/' \
-e '/Type=forking/a PIDFile=/run/libvirtd.pid' \
${D}/${systemd_unitdir}/system/libvirtd.service
+ else
+ rm -rf ${D}/usr/lib/systemd
fi

# The /run/libvirt directories created by the Makefile are
@@ -360,7 +284,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +300,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +311,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0


Re: devtool modify docker failure

Bruce Ashfield
 

On Thu, Apr 22, 2021 at 6:53 AM <s.anandje1@...> wrote:

Hi,



I have made my yocto setup successfully.

The layers I have included is:

$ cat conf/bblayers.conf

${TOPDIR}/../poky/meta \

${TOPDIR}/../poky/meta-poky \

${TOPDIR}/../poky/meta-yocto-bsp \

${TOPDIR}/../layers/meta-openembedded/meta-filesystems \

${TOPDIR}/../layers/meta-openembedded/meta-networking \

/${TOPDIR}/../layers/meta-openembedded/meta-oe \

${TOPDIR}/../layers/meta-openembedded/meta-perl \

${TOPDIR}/../layers/meta-openembedded/meta-python \

${TOPDIR}/../layers/meta-virtualization \



I want to work on docker source code so I thought of fetching the source code from devtool.

But while I'm using devtool I'm facing an issue.



$ devtool modify --no-same-dir --extract docker-ce workspace/sources/docker

ERROR: Command Error: 'sh -c 'PATCHFILE="0001-libnetwork-use-GO-instead-of-go.patch" git -c user.name="OpenEmbedded" -c user.email="oe.patch@oe" commit -F /tmp/tmps5pr6pui --author="Bruce Ashfield <bruce.ashfield@...>" --date="Fri, 6 Apr 2018 23:58:22 -0400"'' exited with 0 Output:

On branch devtool

Changes not staged for commit:

(use "git add <file>..." to update what will be committed)

(use "git restore <file>..." to discard changes in working directory)

(commit or discard the untracked or modified content in submodules)

modified: libnetwork (modified content)



no changes added to commit (use "git add" and/or "git commit -a")

ERROR: Logfile of failure stored in: ${TOPDIR}/build/tmp/work/core2-64-poky-linux/docker-ce/19.03.8-ce+gitafacb8b7f0d8d4f9d2a8e8736e9c993e672b41f3-r0/devtooltmp-lnnatl98/temp/log.do_patch.27786



Is there any workaround to overcome this error?
You'd be better off asking on the oe-core mailing list. We don't do
anything specific in the docker recipe that is known to break devtool,
so it would be something generally wrong with devtool .. that and
you'll get a wider audience of potential devtool users.

I've never used devtool when working with sources, so I can't offer
any specific advice.

Cheers,

Bruce



Thanks & Regards

Anand




--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


Re: devtool modify docker failure

@AnandJE
 

Hi,

 

I have made my yocto setup successfully.

The layers I have included is:

$ cat conf/bblayers.conf

  ${TOPDIR}/../poky/meta \

  ${TOPDIR}/../poky/meta-poky \

  ${TOPDIR}/../poky/meta-yocto-bsp \

  ${TOPDIR}/../layers/meta-openembedded/meta-filesystems \

  ${TOPDIR}/../layers/meta-openembedded/meta-networking \

  /${TOPDIR}/../layers/meta-openembedded/meta-oe \

  ${TOPDIR}/../layers/meta-openembedded/meta-perl \

  ${TOPDIR}/../layers/meta-openembedded/meta-python \

  ${TOPDIR}/../layers/meta-virtualization \

 

I want to work on docker source code so I thought of fetching the source code from devtool.

But while I'm using devtool I'm facing an issue.

 

$ devtool modify --no-same-dir --extract docker-ce workspace/sources/docker

ERROR: Command Error: 'sh -c 'PATCHFILE="0001-libnetwork-use-GO-instead-of-go.patch" git -c user.name="OpenEmbedded" -c user.email="oe.patch@oe" commit -F /tmp/tmps5pr6pui --author="Bruce Ashfield <bruce.ashfield@...>" --date="Fri, 6 Apr 2018 23:58:22 -0400"'' exited with 0  Output:

On branch devtool

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git restore <file>..." to discard changes in working directory)

  (commit or discard the untracked or modified content in submodules)

modified:   libnetwork (modified content)

 

no changes added to commit (use "git add" and/or "git commit -a")

ERROR: Logfile of failure stored in: ${TOPDIR}/build/tmp/work/core2-64-poky-linux/docker-ce/19.03.8-ce+gitafacb8b7f0d8d4f9d2a8e8736e9c993e672b41f3-r0/devtooltmp-lnnatl98/temp/log.do_patch.27786

 

Is there any workaround to overcome this error?

 

Thanks & Regards

Anand


Re: [PATCH v3] libvirt: uprev v6.3 -> v7.2

Bruce Ashfield
 

v3 looks better!

I did have it fail to apply to my master branch, so make sure that you are
on the tip of master (I pushed what I have to master-next for your reference).

I build with the 'xen' distro feature enabled when testing, and ran into this
error:

ERROR: libvirt-7.2.0-r0 do_configure: QA Issue: libvirt: configure was
passed unrecognised options: libxl [unknown-configure-option]
ERROR: libvirt-7.2.0-r0 do_configure: Fatal QA errors found, failing task.
ERROR: Logfile of failure stored in:
/opt/poky/build/tmp/work/core2-64-poky-linux/libvirt/7.2.0-r0/temp/log.do_configure.41162
ERROR: Task (/home/bruce/poky/meta-virtualization/recipes-extended/libvirt/libvirt_7.2.0.bb:do_configure)
failed with exit code '1'

Should be an easy enough fix, either the option has been dropped, or
renamed .. I didn't actually check which it was.

I'll wait for v4, before considering it for merge.

Bruce

On Wed, Apr 21, 2021 at 5:36 AM <yanfei.xu@...> wrote:

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.

v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 204 +++++-------------
12 files changed, 57 insertions(+), 667 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index cfc735d8..894a4946 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -68,3 +68,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd76572..0c661af8 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d64..00000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5c..00000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d5610..00000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df8..00000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef6..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b55915..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e839..00000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc7736..00000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fde..00000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index 41abb06f..cdc7b6de 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -166,32 +108,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
libvirt-guests.service \
virtlockd.socket \
"
-
-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +130,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Dqemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Dlibxl=${STAGING_DIR_TARGET}/lib,,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +174,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +197,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -360,7 +281,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +297,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +308,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0
--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


[PATCH v3] libvirt: uprev v6.3 -> v7.2

Xu, Yanfei
 

From: Yanfei Xu <yanfei.xu@...>

This upgrade spans 9 small release. The detailed realese logs could
refer to: https://gitlab.com/libvirt/libvirt/-/blob/master/NEWS.rst

Libvirt's buildsystem has changed to meson, So this upgrade drop some
obsolete patches applied to makefile.

I ran libvirt testcase and ovs testcase for this upgrade, the summary
as follow:

libvirt_test (keyword: ) test results:
*1 Run libvirt_test testing(do_test1) PASS
*2 Check result (virsh_local_capabilities) PASS
*3 Check result (virsh_local_domcapabilities) PASS
*4 Check result (virsh_local_freecell) PASS
*5 Check result (virsh_local_help) PASS
*6 Check result (virsh_local_hostname) PASS
*7 Check result (virsh_local_iface-begin) PASS
*8 Check result (virsh_local_iface-commit) PASS
*9 Check result (virsh_local_iface-list) PASS
*10 Check result (virsh_local_list) PASS
*11 Check result (virsh_local_maxvcpus) PASS
*12 Check result (virsh_local_net-list) PASS
*13 Check result (virsh_local_nodecpumap) PASS
*14 Check result (virsh_local_nodecpustats) PASS
*15 Check result (virsh_local_nodedev-list) PASS
*16 Check result (virsh_local_nodeinfo) PASS
*17 Check result (virsh_local_node-memory-tune) PASS
*18 Check result (virsh_local_nodememstats) PASS
*19 Check result (virsh_local_nwfilter-binding-list) PASS
*20 Check result (virsh_local_nwfilter-list) PASS
*21 Check result (virsh_local_pool-capabilities) PASS
*22 Check result (virsh_local_pool-list) PASS
*23 Check result (virsh_local_pwd) PASS
*24 Check result (virsh_local_secret-list) PASS
*25 Check result (virsh_local_sysinfo) PASS
*26 Check result (virsh_local_uri) PASS
*27 Check result (virsh_local_version) PASS

openvswitch_vm2vm (keyword: qemux86) test results:
*1 openvswitch_vm2vm testing(do_test1) PASS
*2 Check result (ovs_vm2vm_boot_guest1) PASS
*3 Check result (ovs_vm2vm_boot_guest2) PASS
*4 Check result (ovs_vm2vm_netperf_test) PASS
*5 Check result (ovs_vm2vm_destroy_guest1) PASS
*6 Check result (ovs_vm2vm_destroy_guest2) PASS
*7 check testcase call trace(do_check_call_trace) PASS

Signed-off-by: Yanfei Xu <yanfei.xu@...>
---
v1-->v2:
1.fix build failure caused by "getent".
2.fix apply failure.
3.drop ptest configurations in libvirt_7.2.0.bb
4.add test log in commit messages.

v2-->v3:
1.replace the option list with "--cross-file=" to specify the
binaries path.

conf/layer.conf | 2 +
recipes-extended/libvirt/libvirt-python.inc | 4 +-
...drop-unnecessary-libgnu.la-reference.patch | 31 ---
.../libvirt/0001-to-fix-build-error.patch | 47 ----
...-search-for-rpc-rpc.h-in-the-sysroot.patch | 34 ---
.../libvirt/install-missing-file.patch | 50 -----
...read-safety-in-lxc-callback-handling.patch | 63 ------
...virt-use-pkg-config-to-locate-libcap.patch | 43 ----
.../libvirt/qemu-fix-crash-in-qemuOpen.patch | 39 ----
.../libvirt/libvirt/runptest.patch | 116 ----------
...t-net-rpc-to-virt-host-validate-when.patch | 91 --------
.../{libvirt_6.3.0.bb => libvirt_7.2.0.bb} | 204 +++++-------------
12 files changed, 57 insertions(+), 667 deletions(-)
delete mode 100644 recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
delete mode 100644 recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
delete mode 100644 recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
delete mode 100644 recipes-extended/libvirt/libvirt/install-missing-file.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
delete mode 100644 recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
delete mode 100644 recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
delete mode 100644 recipes-extended/libvirt/libvirt/runptest.patch
delete mode 100644 recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
rename recipes-extended/libvirt/{libvirt_6.3.0.bb => libvirt_7.2.0.bb} (61%)

diff --git a/conf/layer.conf b/conf/layer.conf
index cfc735d8..894a4946 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -68,3 +68,5 @@ K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
USER_CLASSES_append = " meta-virt-cfg"
USER_CLASSES_append = " meta-virt-k8s-cfg"
USER_CLASSES_append = " meta-virt-xen-cfg"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index bcd76572..0c661af8 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -17,8 +17,8 @@ FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"

SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"

-SRC_URI[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.md5sum] = "19bf22414a43d358581b9259b52047a7"
+SRC_URI[libvirt_python.sha256sum] = "c0c3bac54c55622e17927b09cd9843869600d71842fb072c99491fe2608dcee7"

export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d64..00000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5c..00000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@...>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d5610..00000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@...>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-xdr.m4 | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/m4/virt-xdr.m4 b/m4/virt-xdr.m4
-index 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df8..00000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 17:24:17 +0800
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Upstream-Status: Inapproriate
-
-Signed-off-by: Catalin Enache <catalin.enache@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef6..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@...>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@...>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- virLXCProtocolExitStatus status,
- virDomainObjPtr vm)
- {
-+ virLXCDriverPtr driver = lxc_driver;
- virLXCDomainObjPrivatePtr priv = vm->privateData;
-
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
- switch (status) {
- case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
- priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- }
- VIR_DEBUG("Domain shutoff reason %d (from status %d)",
- priv->stopReason, status);
-+
-+ virObjectUnlock(vm);
- }
-
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
- pid_t initpid,
- virDomainObjPtr vm)
- {
-- virLXCDomainObjPrivatePtr priv = vm->privateData;
-+ virLXCDriverPtr driver = lxc_driver;
-+ virLXCDomainObjPrivatePtr priv;
-+
-+ lxcDriverLock(driver);
-+ virObjectLock(vm);
-+ lxcDriverUnlock(driver);
-+
-+ priv = vm->privateData;
- priv->initpid = initpid;
- virDomainAuditInit(vm, initpid);
-
- if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
- VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+ virObjectUnlock(vm);
- }
-
- static virLXCMonitorCallbacks monitorCallbacks = {
---
-1.7.11.7
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 87b55915..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@...>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-
----
- m4/virt-libpcap.m4 | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/m4/virt-libpcap.m4 b/m4/virt-libpcap.m4
-index 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e839..00000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@...>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c | 2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-+ cfg = virQEMUDriverGetConfig(qemu_driver);
- if (conn->uri->path == NULL) {
- virReportError(VIR_ERR_INTERNAL_ERROR,
- _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
- goto cleanup;
- }
-
-- cfg = virQEMUDriverGetConfig(qemu_driver);
- if (cfg->privileged) {
- if (STRNEQ(conn->uri->path, "/system") &&
- STRNEQ(conn->uri->path, "/session")) {
---
-1.7.1
-
diff --git a/recipes-extended/libvirt/libvirt/runptest.patch b/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index f6bc7736..00000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Wed, 8 May 2019 10:20:47 +0800
-Subject: [PATCH] Add 'install-ptest' rule
-
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Upstream-status: Pending
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@...>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@...>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@...>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- tests/Makefile.am | 68 +++++++++++++++++++++++++++++++++++++++++------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fde..00000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@...>
-Date: Tue, 7 May 2019 15:26:32 +0800
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@...>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@...>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@...>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@...>
-
----
- examples/Makefile.am | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_6.3.0.bb b/recipes-extended/libvirt/libvirt_7.2.0.bb
similarity index 61%
rename from recipes-extended/libvirt/libvirt_6.3.0.bb
rename to recipes-extended/libvirt/libvirt_7.2.0.bb
index 41abb06f..cdc7b6de 100644
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ b/recipes-extended/libvirt/libvirt_7.2.0.bb
@@ -1,7 +1,6 @@
DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
HOMEPAGE = "http://libvirt.org"
LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
SECTION = "console/tools"
@@ -16,9 +15,7 @@ DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux
#
RDEPENDS_${PN} = "gettext-runtime"

-RDEPENDS_${PN}-ptest += "make gawk perl bash"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
+RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd ebtables"
RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"

@@ -26,88 +23,33 @@ RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
RCONFLICTS_${PN}_libvirtd = "connman"

SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
- file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
file://libvirtd.sh \
file://libvirtd.conf \
file://dnsmasq.conf \
- file://runptest.patch \
- file://run-ptest \
- file://libvirt-use-pkg-config-to-locate-libcap.patch \
- file://0001-to-fix-build-error.patch \
- file://install-missing-file.patch \
- file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
- file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
- file://0001-build-drop-unnecessary-libgnu.la-reference.patch \
file://hook_support.py \
file://gnutls-helper.py \
"

-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
+SRC_URI[libvirt.md5sum] = "92044b629216e44adce63224970a54a3"
+SRC_URI[libvirt.sha256sum] = "01f459d0c7ba5009622a628dba1a026200e8f4a299fea783b936a71d7e0ed1d0"

-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
+inherit meson gettext update-rc.d pkgconfig systemd useradd perlnative
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"

-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
+
+EXTRA_OEMESON += "--cross-file ${WORKDIR}/meson-${PN}.cross"
+do_write_config_append() {
+ cat >${WORKDIR}/meson-${PN}.cross <<EOF
+[binaries]
+iptables = '/usr/sbin/iptables'
+ip6tables = '/usr/sbin/ip6tables'
+dmidecode = '/usr/sbin/dmidecode'
+ebtables = '/sbin/ebtables'
+dnsmasq = '/usr/bin/dnsmasq'
+EOF
+}

ALLOW_EMPTY_${PN} = "1"

@@ -166,32 +108,12 @@ SYSTEMD_SERVICE_${PN}-libvirtd = " \
libvirt-guests.service \
virtlockd.socket \
"
-
-
-PRIVATE_LIBS_${PN}-ptest = " \
- libvirt-lxc.so.0 \
- libvirt.so.0 \
- libvirt-qemu.so.0 \
- lockd.so \
- libvirt_driver_secret.so \
- libvirt_driver_nodedev.so \
- libvirt_driver_vbox.so \
- libvirt_driver_interface.so \
- libvirt_driver_uml.so \
- libvirt_driver_network.so \
- libvirt_driver_nwfilter.so \
- libvirt_driver_qemu.so \
- libvirt_driver_storage.so \
- libvirt_driver_lxc.so \
- "
-
# xen-minimal config
#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"

# full config
-PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 firewalld libpcap \
+PACKAGECONFIG ??= "gnutls qemu yajl openvz vmware vbox esx lxc test remote \
+ libvirtd netcf udev python fuse firewalld libpcap \
${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'libxl', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'polkit', 'polkit', '', d)} \
@@ -208,37 +130,34 @@ PACKAGECONFIG_remove_armeb = "numactl"
# enable,disable,depends,rdepends
#
PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
-PACKAGECONFIG[qemu] = "--with-qemu --with-qemu-user=qemu --with-qemu-group=qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
+PACKAGECONFIG[qemu] = "-Ddriver_qemu=enabled -Dqemu_user=qemu -Dqemu_group=qemu,-Dqemu=disabled,qemu,"
+PACKAGECONFIG[yajl] = "-Dyajl=enabled,-Dyajl=disabled,yajl,yajl"
+PACKAGECONFIG[libxl] = "-Dlibxl=${STAGING_DIR_TARGET}/lib,,xen,"
+PACKAGECONFIG[openvz] = "-Ddriver_openvz=enabled,-Ddriver_openvz=disabled,,"
+PACKAGECONFIG[vmware] = "-Ddriver_vmware=enabled,-Ddriver_vmware=disabled,,"
+PACKAGECONFIG[vbox] = "-Ddriver_vbox=enabled,-Ddriver_vbox=disabled,,"
+PACKAGECONFIG[esx] = "-Ddriver_esx=enabled,-Ddriver_esx=disabled,,"
+PACKAGECONFIG[hyperv] = "-Ddriver_hyperv=enabled,-Ddriver_hyperv=disabled,,"
+PACKAGECONFIG[polkit] = "-Dpolkit=enabled,-Dpolkit=disabled,polkit,polkit"
+PACKAGECONFIG[lxc] = "-Ddriver_lxc=enabled,-Ddriver_lxc=disabled,lxc,"
+PACKAGECONFIG[test] = "-Ddriver_test=enabled,-Ddriver_test=disabled,,"
+PACKAGECONFIG[remote] = "-Ddriver_remote=enabled,-Ddriver_remote=disabled,,"
+PACKAGECONFIG[libvirtd] = "-Ddriver_libvirtd=enabled,-Ddriver_libvirtd=disabled,,"
+PACKAGECONFIG[netcf] = "-Dnetcf=enabled,-Dnetcf=disabled,netcf,netcf"
+PACKAGECONFIG[dtrace] = "-Ddtrace=enabled,-Ddtrace=disabled,,"
+PACKAGECONFIG[udev] = "-Dudev=enabled -Dpciaccess=enabled,-Dudev=disabled,udev libpciaccess,"
+PACKAGECONFIG[selinux] = "-Dselinux=enabled,-Dselinux=disabled,libselinux,"
PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
+PACKAGECONFIG[sasl] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse,"
+PACKAGECONFIG[audit] = "-Daudit=enabled,-Daudit=disabled,audit,"
+PACKAGECONFIG[libcap-ng] = "-Dcapng=enabled,-Dcapng=disabled,libcap-ng,"
+PACKAGECONFIG[wireshark] = "-Dwireshark_dissector=enabled,-Dwireshark_dissector=disabled,wireshark libwsutil,"
+PACKAGECONFIG[apparmor_profiles] = "-Dapparmor_profiles=true, -Dapparmor_profiles=false,"
+PACKAGECONFIG[firewalld] = "-Dfirewalld=enabled, -Dfirewalld=disabled,"
+PACKAGECONFIG[libpcap] = "-Dlibpcap=enabled, -Dlibpcap=disabled,libpcap,libpcap"
+PACKAGECONFIG[numad] = "-Dnumad=enabled, -Dnumad=disabled,"

# Enable the Python tool support
require libvirt-python.inc
@@ -255,7 +174,7 @@ do_compile() {

cd ${B}
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
- oe_runmake all
+ ninja all
}

do_install_prepend() {
@@ -278,6 +197,8 @@ do_install_append() {
fi

if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ mkdir -p ${D}/lib
+ mv ${D}/usr/lib/systemd ${D}/lib
# This variable is used by libvirtd.service to start libvirtd in the right mode
sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd

@@ -360,7 +281,7 @@ do_install_append() {
# connection via 127.0.0.1 is available out of box.
install -d ${D}/etc/pki/CA
install -d ${D}/etc/pki/libvirt/private
- install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
+ install -m 0755 ${WORKDIR}/gnutls-helper.py ${D}/${bindir}
install -m 0644 ${WORKDIR}/cakey.pem ${D}/${sysconfdir}/pki/libvirt/private/cakey.pem
install -m 0644 ${WORKDIR}/cacert.pem ${D}/${sysconfdir}/pki/CA/cacert.pem
install -m 0644 ${WORKDIR}/serverkey.pem ${D}/${sysconfdir}/pki/libvirt/private/serverkey.pem
@@ -376,10 +297,10 @@ do_install_append() {
chmod 4755 ${D}${bindir}/virt-login-shell
}

-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- --with-runstatedir=/run \
+EXTRA_OEMESON += " \
+ -Dinit_script=systemd \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
"

# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
@@ -387,25 +308,6 @@ EXTRA_OECONF += " \
SELECTED_OPTIMIZATION_remove_virtclass-multilib-lib32_mipsarch = "-Og"
SELECTED_OPTIMIZATION_append_virtclass-multilib-lib32_mipsarch = " -O2"

-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-PRIVATE_LIBS_${PN}-ptest_append = "libvirt-admin.so.0"
-
-do_compile_ptest() {
- oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
- oe_runmake -C tests install-ptest
-
- find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
- # remove .la files for ptest, they aren't required and can trigger QA errors
- for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
- rm -f $i
- done
-}
-
pkg_postinst_${PN}() {
if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
/etc/init.d/populate-volatile.sh update
--
2.27.0


Re: [PATCH 3/3] xtf: update SRCREV and remove multilib dependency

Bertrand Marquis
 

Hi,

On 20 Apr 2021, at 00:08, Christopher Clark via lists.yoctoproject.org <christopher.w.clark=gmail.com@...> wrote:

The latest Xen Test Framework has removed the gcc-multilib dependency.

Signed-off-by: Christopher Clark <christopher.w.clark@...>
XTF is compiling properly in a project without multilib for x86_64.

Reviewed-by: Bertrand Marquis <bertrand.marquis@...>

Cheers
Bertrand

---
recipes-extended/xen/xtf_git.bb | 21 ++-------------------
1 file changed, 2 insertions(+), 19 deletions(-)

diff --git a/recipes-extended/xen/xtf_git.bb b/recipes-extended/xen/xtf_git.bb
index db08643..3580324 100644
--- a/recipes-extended/xen/xtf_git.bb
+++ b/recipes-extended/xen/xtf_git.bb
@@ -6,7 +6,7 @@ LICENSE = "BSD-2-Clause"
# https://static.sched.com/hosted_files/xendeveloperanddesignsummit2017/79/xtf.pdf

SRC_URI = "git://xenbits.xen.org/xtf"
-SRCREV = "8ab15139728a8efd3ebbb60beb16a958a6a93fa1"
+SRCREV = "b0bc49846c154b79243f39d461a4515804bcaf53"

COMPATIBLE_HOST = '(x86_64.*).*-linux'

@@ -18,23 +18,6 @@ S = "${WORKDIR}/git"

inherit python3native

-# To build 32-bit binaries some files from 32-bit glibc are needed.
-# To enable multilib, please add the following to your local.conf -:
-#
-# require conf/multilib.conf
-# MULTILIBS = "multilib:lib32"
-# DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
-
-# Use this multilib prefix for x86 32-bit to match local.conf:
-MLPREFIX32 = "lib32-"
-# Add the multilib 32-bit glibc to DEPENDS only when necessary:
-# The DEPENDS on a multilib 32-bit glibc is only added when target is x86-64
-# This x86-64 override is never intended for native use, so clear that.
-GLIBC32 = ""
-GLIBC32_x86-64 = "${MLPREFIX32}glibc"
-GLIBC32_class-native = ""
-DEPENDS += "${GLIBC32}"
-
PACKAGES = "${PN}"

FILES_${PN} = " \
@@ -47,7 +30,7 @@ RDEPENDS_${PN} = " \
"

do_compile() {
- oe_runmake CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} -I${RECIPE_SYSROOT}/../${MLPREFIX32}recipe-sysroot/usr/include" \
+ oe_runmake CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS}" \
CPP="${CPP}" \
OBJCOPY="${OBJCOPY}" \
PYTHON="${PYTHON}"
--
2.25.1




Re: [PATCH 2/3] xen-tools: remove multilib build requirement for x86-64

Bertrand Marquis
 

Hi,

On 20 Apr 2021, at 00:08, Christopher Clark <christopher.w.clark@...> wrote:

Xen 4.15 added support for standalone x86-64 hvmloader build and
previous commit provided Xen 4.14 backports.

Signed-off-by: Christopher Clark <christopher.w.clark@...>
Reviewed-by: Bertrand Marquis <bertrand.marquis@...>

Cheers
Bertrand

---
recipes-extended/xen/xen-tools.inc | 37 ------------------------------
1 file changed, 37 deletions(-)

diff --git a/recipes-extended/xen/xen-tools.inc b/recipes-extended/xen/xen-tools.inc
index 722c503..3560e79 100644
--- a/recipes-extended/xen/xen-tools.inc
+++ b/recipes-extended/xen/xen-tools.inc
@@ -6,29 +6,6 @@ COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux
inherit setuptools3 update-rc.d systemd deploy
require xen-blktap.inc

-# To build hvmloader, which is needed on x86-64 targets when 'hvm' is enabled
-# in PACKAGECONFIG, to support running HVM-mode guest VMs, some files from
-# 32-bit glibc are needed.
-# Add the multilib 32-bit glibc to DEPENDS only when necessary.
-#
-# To enable multilib, please add the following to your local.conf -:
-#
-# require conf/multilib.conf
-# MULTILIBS = "multilib:lib32"
-# DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
-
-# Use this multilib prefix for x86 32-bit to match local.conf:
-MLPREFIX32 = "lib32-"
-
-# The DEPENDS on a multilib 32-bit glibc is only added when target is x86-64
-# and 'hvm' is enabled in PACKAGECONFIG.
-# This x86-64 override is never intended for native use, so clear that.
-GLIBC32 = ""
-GLIBC32_x86-64 = \
- "${@bb.utils.contains('PACKAGECONFIG', 'hvm', '${MLPREFIX32}glibc', '', d)}"
-GLIBC32_class-native = ""
-DEPENDS += "${GLIBC32}"
-
RDEPENDS_${PN} = "\
bash perl xz \
${PN}-console \
@@ -736,16 +713,6 @@ SYSTEMD_SERVICE_${PN}-xencommons = " \
"
SYSTEMD_SERVICE_${PN}-xendomains = "xendomains.service"

-# To build hvmloader, which is needed on x86-64 targets when 'hvm' is enabled
-# in PACKAGECONFIG, additional CFLAGS are needed to set the 32-bit sysroot.
-RECIPE_SYSROOT32 = "${WORKDIR}/${MLPREFIX32}recipe-sysroot"
-ADD_SYSROOT32_CFLAGS = ""
-ADD_SYSROOT32_CFLAGS_x86-64 = \
- "${@bb.utils.contains('PACKAGECONFIG', 'hvm', \
- 'CFLAGS += "--sysroot=${RECIPE_SYSROOT32}"', '', d)}"
-# This x86-64 override is never intended for native use, so clear that.
-ADD_SYSROOT32_CFLAGS_class-native = ""
-
EXTRA_OECONF += " \
--with-systemd=${systemd_unitdir}/system \
--with-systemd-modules-load=${systemd_unitdir}/modules-load.d \
@@ -756,10 +723,6 @@ EXTRA_OECONF += " \

do_configure() {
do_configure_common
-
- if [ -n '${ADD_SYSROOT32_CFLAGS}' ] ; then
- echo '${ADD_SYSROOT32_CFLAGS}' >>"${S}/tools/firmware/Rules.mk"
- fi
}

do_compile() {
--
2.25.1


Re: [PATCH 1/3] xen-tools: add patches for 4.14 to enable dropping multilib build

Bertrand Marquis