aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore4
-rw-r--r--MAINTAINERS36
-rw-r--r--README.md (renamed from README)19
-rw-r--r--SECURITY.md23
-rw-r--r--classes/cni_networking.bbclass18
-rw-r--r--classes/container-host.bbclass15
-rw-r--r--classes/image-oci-sloci-image.inc89
-rw-r--r--classes/image-oci-umoci.inc135
-rw-r--r--classes/image-oci.bbclass89
-rw-r--r--classes/meta-virt-cfg.bbclass6
-rw-r--r--classes/meta-virt-container-cfg.bbclass10
-rw-r--r--classes/meta-virt-depreciated-warning.bbclass3
-rw-r--r--classes/meta-virt-hosts.bbclass29
-rw-r--r--classes/meta-virt-k8s-cfg.bbclass6
-rw-r--r--classes/meta-virt-xen-cfg.bbclass6
-rw-r--r--classes/qemuboot-testimage-network.bbclass51
-rw-r--r--classes/qemuboot-xen-defaults.bbclass42
-rw-r--r--classes/qemuboot-xen-dtb.bbclass210
-rw-r--r--conf/distro/include/k8s-versions.inc1
-rw-r--r--conf/distro/include/meta-virt-container.inc40
-rw-r--r--conf/distro/include/meta-virt-default-versions.inc9
-rw-r--r--conf/distro/include/meta-virt-xen.inc15
-rw-r--r--conf/distro/include/virt_security_flags.inc4
-rw-r--r--conf/layer.conf29
-rw-r--r--conf/multiconfig/container.conf3
-rw-r--r--docs/00-INDEX6
-rw-r--r--docs/podman.txt14
-rw-r--r--docs/podman.txt.license3
-rw-r--r--docs/xvisor.txt16
-rw-r--r--dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc25
-rw-r--r--dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in58
-rw-r--r--dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb34
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_6.6.bbappend6
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc6
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/device-tree.bbappend19
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen-qemu.dtsi2
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen.dtsi67
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen-qemu.dtsi2
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen.dtsi59
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen-qemu.dtsi2
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen.dtsi123
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr.bbappend2
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.xen80
-rw-r--r--dynamic-layers/xilinx/recipes-bsp/u-boot/xen-boot-cmd.inc38
-rw-r--r--dynamic-layers/xilinx/recipes-extended/xen/xen-xilinx.inc11
-rw-r--r--dynamic-layers/xilinx/recipes-extended/xen/xen_%.bbappend1
-rw-r--r--lib/oeqa/runtime/cases/xtf_minimal.py116
-rw-r--r--recipes-containers/aardvark-dns/aardvark-dns-crates.inc286
-rw-r--r--recipes-containers/aardvark-dns/aardvark-dns_1.10.0.bb43
-rw-r--r--recipes-containers/aardvark-dns/files/run-ptest3
-rw-r--r--recipes-containers/buildah/buildah_git.bb66
-rw-r--r--recipes-containers/catatonit/catatonit_0.2.0.bb16
-rw-r--r--recipes-containers/cgroup-lite/cgroup-lite_1.15.bb6
-rw-r--r--recipes-containers/conmon/conmon_2.0.0.bb30
-rw-r--r--recipes-containers/conmon/conmon_git.bb32
-rw-r--r--recipes-containers/conmon/files/0001-Makefile-don-t-fail-if-clean-is-called-without-a-bui.patch31
-rw-r--r--recipes-containers/container-host-config/container-host-config.bb22
-rwxr-xr-xrecipes-containers/container-host-config/container-host-config/policy.json7
-rw-r--r--recipes-containers/container-host-config/container-host-config/registries.conf (renamed from recipes-containers/skopeo/files/registries.conf)0
-rw-r--r--recipes-containers/container-host-config/container-host-config/storage.conf243
-rw-r--r--recipes-containers/containerd/README.md30
-rw-r--r--recipes-containers/containerd/containerd-docker_git.bb14
-rw-r--r--recipes-containers/containerd/containerd-opencontainers/0001-Add-build-option-GODEBUG-1.patch42
-rw-r--r--recipes-containers/containerd/containerd-opencontainers/0001-Makefile-allow-GO_BUILD_FLAGS-to-be-externally-speci.patch35
-rw-r--r--recipes-containers/containerd/containerd-opencontainers/0001-build-don-t-use-gcflags-to-define-trimpath.patch32
-rw-r--r--recipes-containers/containerd/containerd-opencontainers_git.bb104
-rw-r--r--recipes-containers/containerd/containerd.inc100
-rw-r--r--recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch56
-rw-r--r--recipes-containers/containerd/files/containerd.service11
-rw-r--r--recipes-containers/cri-o/cri-o_git.bb113
-rw-r--r--recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch26
-rw-r--r--recipes-containers/cri-o/files/Makefile-skip-install-when-generating-the-config.h.patch43
-rw-r--r--recipes-containers/cri-o/files/crio.conf626
-rw-r--r--recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch51
-rw-r--r--recipes-containers/cri-tools/cri-tools_git.bb81
-rw-r--r--recipes-containers/criu/criu_git.bb79
-rw-r--r--recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch102
-rw-r--r--recipes-containers/criu/files/0001-criu-Skip-documentation-install.patch (renamed from recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch)16
-rw-r--r--recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch48
-rw-r--r--recipes-containers/criu/files/0002-criu-Change-libraries-install-directory.patch (renamed from recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch)20
-rw-r--r--recipes-containers/criu/files/0003-crit-pycriu-build-and-install-wheels.patch77
-rw-r--r--recipes-containers/criu/files/0003-lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch (renamed from recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch)14
-rw-r--r--recipes-containers/criu/files/0004-criu-fix-conflicting-headers.patch290
-rw-r--r--recipes-containers/criu/files/0004-pycriu-attr-pycriu.version.__version__.patch22
-rw-r--r--recipes-containers/criu/files/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch114
-rw-r--r--recipes-containers/criu/files/0005-pycriu-skip-dependency-check-during-build.patch32
-rw-r--r--recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch45
-rw-r--r--recipes-containers/crun/crun_git.bb40
-rw-r--r--recipes-containers/docker-compose/docker-compose_git.bb80
-rw-r--r--recipes-containers/docker-compose/files/0001-docker-compose-support-newer-minor-version-of-reques.patch44
-rw-r--r--recipes-containers/docker-compose/files/modules.txt372
-rw-r--r--recipes-containers/docker-compose/python3-docker-compose_1.21.2.bb31
-rw-r--r--recipes-containers/docker-compose/relocation.inc203
-rw-r--r--recipes-containers/docker-compose/src_uri.inc930
-rw-r--r--recipes-containers/docker-distribution/docker-distribution_git.bb41
-rw-r--r--recipes-containers/docker-distribution/files/0001-build-use-to-use-cross-go-compiler.patch31
-rw-r--r--recipes-containers/docker/README7
-rw-r--r--recipes-containers/docker/docker-ce_git.bb129
-rw-r--r--recipes-containers/docker/docker-moby.bb148
-rw-r--r--recipes-containers/docker/docker-moby_git.bb72
-rw-r--r--recipes-containers/docker/docker.inc165
-rw-r--r--recipes-containers/docker/files/0001-cli-use-external-GO111MODULE-and-cross-compiler.patch33
-rw-r--r--recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch111
-rw-r--r--recipes-containers/docker/files/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch61
-rw-r--r--recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch26
-rw-r--r--recipes-containers/docker/files/docker-registry.service19
-rw-r--r--recipes-containers/docker/files/docker.init2
-rw-r--r--recipes-containers/go-digest/go-digest_git.bb16
-rw-r--r--recipes-containers/go-errors/go-errors_git.bb14
-rw-r--r--recipes-containers/go-spf13-cobra/spf13-cobra_git.bb12
-rw-r--r--recipes-containers/go-spf13-pflag/spf13-pflag_git.bb14
-rw-r--r--recipes-containers/k3s/README.md268
-rw-r--r--recipes-containers/k3s/k3s/0001-Finding-host-local-in-usr-libexec.patch24
-rw-r--r--recipes-containers/k3s/k3s/cni-containerd-net.conf24
-rwxr-xr-xrecipes-containers/k3s/k3s/k3s-agent103
-rw-r--r--recipes-containers/k3s/k3s/k3s-agent.service26
-rwxr-xr-xrecipes-containers/k3s/k3s/k3s-clean30
-rw-r--r--recipes-containers/k3s/k3s/k3s-killall.sh82
-rw-r--r--recipes-containers/k3s/k3s/k3s.service37
-rw-r--r--recipes-containers/k3s/k3s/modules.txt946
-rw-r--r--recipes-containers/k3s/k3s_git.bb151
-rw-r--r--recipes-containers/k3s/relocation.inc447
-rw-r--r--recipes-containers/k3s/src_uri.inc2150
-rw-r--r--recipes-containers/kubernetes/README.md117
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-build-golang.sh-convert-remaining-go-calls-to-use.patch50
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-build-hack-allow-go-1.20-building.patch35
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-cross-don-t-build-tests-by-default.patch8
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-fix-compiling-failure-execvp-bin-bash-Argument-list-.patch69
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-hack-lib-golang.sh-use-CC-from-environment.patch32
-rw-r--r--recipes-containers/kubernetes/kubernetes/99-kubernetes.conf1
-rw-r--r--recipes-containers/kubernetes/kubernetes/cni-containerd-net.conflist24
-rw-r--r--recipes-containers/kubernetes/kubernetes/k8s-init31
-rw-r--r--recipes-containers/kubernetes/kubernetes_git.bb147
-rw-r--r--recipes-containers/lxc/README23
-rw-r--r--recipes-containers/lxc/files/0001-download-don-t-try-compatbility-index.patch45
-rw-r--r--recipes-containers/lxc/files/0001-lxc-test-usernic-drop-cgroup-handling.patch61
-rw-r--r--recipes-containers/lxc/files/0001-template-if-busybox-contains-init-use-it-in-containe.patch45
-rw-r--r--recipes-containers/lxc/files/0001-tests-remove-old-and-broken-cgroup-handling-code-fro.patch103
-rw-r--r--recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch69
-rw-r--r--recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch8
-rw-r--r--recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch29
-rw-r--r--recipes-containers/lxc/files/lxc-fix-B-S.patch24
-rw-r--r--recipes-containers/lxc/files/network-restore-ability-to-move-nl80211-devices.patch94
-rw-r--r--recipes-containers/lxc/files/run-ptest28
-rw-r--r--recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch10
-rw-r--r--recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch8
-rw-r--r--recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch40
-rw-r--r--recipes-containers/lxc/files/tests-add-no-validate-when-using-download-template.patch85
-rw-r--r--recipes-containers/lxc/files/tests-our-init-is-not-busybox.patch4
-rw-r--r--recipes-containers/lxc/lxc_3.2.1.bb198
-rw-r--r--recipes-containers/lxc/lxc_git.bb212
-rw-r--r--recipes-containers/lxcfs/files/systemd-allow-for-distinct-build-directory.patch47
-rw-r--r--recipes-containers/lxcfs/files/systemd-ensure-var-lib-lxcfs-exists.patch27
-rw-r--r--recipes-containers/lxcfs/lxcfs/0001-bindings-fix-build-with-newer-linux-libc-headers.patch50
-rw-r--r--recipes-containers/lxcfs/lxcfs/0001-meson.build-force-pid-open-send_signal-detection.patch38
-rw-r--r--recipes-containers/lxcfs/lxcfs_3.0.3.bb25
-rw-r--r--recipes-containers/lxcfs/lxcfs_5.0.4.bb26
-rw-r--r--recipes-containers/nerdctl/nerdctl/0001-Makefile-allow-external-specification-of-build-setti.patch25
-rw-r--r--recipes-containers/nerdctl/nerdctl/modules.txt270
-rw-r--r--recipes-containers/nerdctl/nerdctl_git.bb84
-rw-r--r--recipes-containers/nerdctl/relocation.inc152
-rw-r--r--recipes-containers/nerdctl/src_uri.inc675
-rw-r--r--recipes-containers/netavark/files/run-ptest8
-rw-r--r--recipes-containers/netavark/files/tests.patch24
-rw-r--r--recipes-containers/netavark/netavark-crates.inc560
-rw-r--r--recipes-containers/netavark/netavark_1.10.3.bb61
-rw-r--r--recipes-containers/oci-image-spec/oci-image-spec_git.bb8
-rw-r--r--recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch8
-rw-r--r--recipes-containers/oci-image-tools/files/0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch8
-rw-r--r--recipes-containers/oci-image-tools/oci-image-tools_git.bb54
-rw-r--r--recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb8
-rw-r--r--recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch3
-rw-r--r--recipes-containers/oci-runtime-tools/files/0001-build-use-for-cross-compiler.patch30
-rw-r--r--recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb52
-rw-r--r--recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch2
-rw-r--r--recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch2
-rw-r--r--recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch2
-rw-r--r--recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb8
-rw-r--r--recipes-containers/podman-compose/podman-compose_0.1.5.bb15
-rw-r--r--recipes-containers/podman-compose/podman-compose_1.0.6.bb18
-rw-r--r--recipes-containers/podman-tui/README6
-rw-r--r--recipes-containers/podman-tui/podman-tui_git.bb74
-rw-r--r--recipes-containers/podman/README41
-rw-r--r--recipes-containers/podman/podman/50-podman-rootless.conf6
-rw-r--r--recipes-containers/podman/podman/run-ptest13
-rw-r--r--recipes-containers/podman/podman_git.bb120
-rw-r--r--recipes-containers/riddler/files/0001-build-use-to-select-cross-compiler.patch53
-rw-r--r--recipes-containers/riddler/riddler_git.bb40
-rw-r--r--recipes-containers/runc/files/0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch45
-rw-r--r--recipes-containers/runc/files/0001-Only-allow-proc-mount-if-it-is-procfs.patch201
-rw-r--r--recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch21
-rw-r--r--recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch23
-rw-r--r--recipes-containers/runc/runc-docker_git.bb9
-rw-r--r--recipes-containers/runc/runc-opencontainers_git.bb11
-rw-r--r--recipes-containers/runc/runc.inc17
-rw-r--r--recipes-containers/singularity/singularity/0001-Use-python3.patch150
-rw-r--r--recipes-containers/singularity/singularity/0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch36
-rw-r--r--recipes-containers/singularity/singularity_git.bb25
-rw-r--r--recipes-containers/skopeo/files/0001-makefile-add-GOBUILDFLAGS-to-go-build-call.patch28
-rw-r--r--recipes-containers/skopeo/files/storage.conf133
-rw-r--r--recipes-containers/skopeo/skopeo_git.bb73
-rw-r--r--recipes-containers/sloci-image/sloci-image-native_git.bb22
-rw-r--r--recipes-containers/sloci-image/sloci-image/0001-sloci-image-fix-variant-quoting.patch44
-rw-r--r--recipes-containers/sloci-image/sloci-image_git.bb27
-rw-r--r--recipes-containers/tini/tini/0001-tini.c-a-function-declaration-without-a-prototype-is.patch74
-rw-r--r--recipes-containers/tini/tini_0.19.0.bb (renamed from recipes-containers/tini/tini_0.18.0.bb)9
-rw-r--r--recipes-containers/umoci/umoci_git.bb85
-rw-r--r--recipes-core/bind/bind_virtualization.inc6
-rw-r--r--recipes-core/busybox/busybox-initrd.bb35
-rw-r--r--recipes-core/busybox/busybox-initrd/initrd.cfg12
-rw-r--r--recipes-core/busybox/busybox-initrd/runx.cfg1
-rw-r--r--recipes-core/busybox/busybox-initrd/static.cfg1
-rw-r--r--recipes-core/busybox/busybox/nsenter.cfg1
-rw-r--r--recipes-core/busybox/busybox/static.cfg4
-rw-r--r--recipes-core/busybox/busybox_%.bbappend2
-rw-r--r--recipes-core/busybox/busybox_virtualization.inc3
-rw-r--r--recipes-core/busybox/busybox_vmsep.inc9
-rw-r--r--recipes-core/initscripts/initscripts_1.%.bbappend16
-rw-r--r--recipes-core/initscripts/initscripts_virtualization.inc16
-rw-r--r--recipes-core/kata-containers/kata-agent_git.bb8
-rw-r--r--recipes-core/kata-containers/kata-proxy_git.bb7
-rw-r--r--recipes-core/kata-containers/kata-runtime/0001-makefile-allow-SKIP_GO_VERSION_CHECK-to-be-overriden.patch28
-rw-r--r--recipes-core/kata-containers/kata-runtime_git.bb29
-rw-r--r--recipes-core/kata-containers/kata-shim_git.bb6
-rw-r--r--recipes-core/libxcrypt/libxcrypt_%.bbappend4
-rw-r--r--recipes-core/meta/container-dummy-provides.bb6
-rw-r--r--recipes-core/packagegroups/packagegroup-container.bb49
-rw-r--r--recipes-core/packagegroups/packagegroup-kubernetes.bb49
-rw-r--r--recipes-core/runv/runv_git.bb14
-rw-r--r--recipes-core/runx/runx/0001-make-initrd-allow-externally-provided-busybox.patch57
-rw-r--r--recipes-core/runx/runx/0001-make-kernel-bump-to-v5.4.104-for-gcc10-fixes.patch28
-rw-r--r--recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch85
-rw-r--r--recipes-core/runx/runx_git.bb126
-rw-r--r--recipes-core/sysvinit/files/getty-wrapper8
-rw-r--r--recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend1
-rw-r--r--recipes-core/sysvinit/sysvinit-inittab_virtualization.inc9
-rw-r--r--recipes-core/sysvinit/sysvinit-inittab_xen.inc12
-rwxr-xr-xrecipes-demo/helloworld-flask/helloworld-flask/flask-app21
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml32
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml12
-rw-r--r--recipes-demo/helloworld-flask/helloworld-flask_0.1.bb44
-rw-r--r--recipes-demo/images/app-container-curl.bb46
-rw-r--r--recipes-demo/images/app-container.bb46
-rw-r--r--recipes-devtools/go/compose-file_git.bb8
-rw-r--r--recipes-devtools/go/go-build/0001-build-use-instead-of-go.patch32
-rw-r--r--recipes-devtools/go/go-build_git.bb61
-rw-r--r--recipes-devtools/go/go-capability_git.bb8
-rw-r--r--recipes-devtools/go/go-cli_git.bb8
-rw-r--r--recipes-devtools/go/go-connections_git.bb8
-rw-r--r--recipes-devtools/go/go-context_git.bb16
-rw-r--r--recipes-devtools/go/go-dbus_git.bb8
-rw-r--r--recipes-devtools/go/go-distribution_git.bb8
-rw-r--r--recipes-devtools/go/go-fsnotify_git.bb12
-rw-r--r--recipes-devtools/go/go-libtrust_git.bb8
-rw-r--r--recipes-devtools/go/go-logrus_git.bb10
-rw-r--r--recipes-devtools/go/go-md2man_git.bb7
-rw-r--r--recipes-devtools/go/go-metalinter_git.bb6
-rw-r--r--recipes-devtools/go/go-mux_git.bb13
-rw-r--r--recipes-devtools/go/go-patricia_git.bb8
-rw-r--r--recipes-devtools/go/go-pty_git.bb10
-rw-r--r--recipes-devtools/go/go-systemd_git.bb10
-rw-r--r--recipes-devtools/go/grpc-go_git.bb16
-rw-r--r--recipes-devtools/go/notary_git.bb8
-rw-r--r--recipes-devtools/python/gunicorn_20.0.4.bb (renamed from recipes-devtools/python/gunicorn_19.1.1.bb)9
-rw-r--r--recipes-devtools/python/python-backports-lzma/fix_paths.patch17
-rw-r--r--recipes-devtools/python/python-backports-lzma_0.0.3.bb32
-rw-r--r--recipes-devtools/python/python-blinker_1.3.bb24
-rw-r--r--recipes-devtools/python/python-boto_2.34.0.bb25
-rw-r--r--recipes-devtools/python/python-bugsnag_2.0.2.bb26
-rw-r--r--recipes-devtools/python/python-docker-pycreds.inc4
-rw-r--r--recipes-devtools/python/python-docker-pycreds_0.3.0.bb3
-rw-r--r--recipes-devtools/python/python-docker-registry-core_2.0.3.bb29
-rw-r--r--recipes-devtools/python/python-docker.inc15
-rw-r--r--recipes-devtools/python/python-docker_3.4.0.bb6
-rw-r--r--recipes-devtools/python/python-flask-cors_1.10.3.bb22
-rw-r--r--recipes-devtools/python/python-flask_0.10.1.bb20
-rw-r--r--recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch29
-rw-r--r--recipes-devtools/python/python-gevent/libev-conf.patch19
-rw-r--r--recipes-devtools/python/python-gevent_1.0.1.bb30
-rw-r--r--recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch158
-rw-r--r--recipes-devtools/python/python-m2crypto_0.22.3.bb63
-rw-r--r--recipes-devtools/python/python-pyyaml_5.1.2.bb32
-rw-r--r--recipes-devtools/python/python-redis_2.10.3.bb22
-rw-r--r--recipes-devtools/python/python-sphinx_1.7.8.bb12
-rw-r--r--recipes-devtools/python/python-sqlalchemy_1.0.16.bb16
-rw-r--r--recipes-devtools/python/python-sqlalchemy_1.1.5.bb18
-rw-r--r--recipes-devtools/python/python-websocket-client.inc11
-rw-r--r--recipes-devtools/python/python-websocket-client_0.44.0.bb2
-rw-r--r--recipes-devtools/python/python-werkzeug_0.10.4.bb33
-rw-r--r--recipes-devtools/python/python3-boto3_1.17.51.bb16
-rw-r--r--recipes-devtools/python/python3-botocore/0001-Fix-rejecting-URLs-with-unsafe-characters-in-is_vali.patch61
-rw-r--r--recipes-devtools/python/python3-botocore_1.20.51.bb12
-rw-r--r--recipes-devtools/python/python3-bugsnag_4.1.0.bb18
-rw-r--r--recipes-devtools/python/python3-cached-property_1.3.0.bb9
-rw-r--r--recipes-devtools/python/python3-cached-property_1.5.2.bb10
-rw-r--r--recipes-devtools/python/python3-colorama_0.3.9.bb9
-rw-r--r--recipes-devtools/python/python3-colorama_0.4.6.bb14
-rw-r--r--recipes-devtools/python/python3-docker-pycreds_0.4.0.bb (renamed from recipes-devtools/python/python3-docker-pycreds_0.3.0.bb)0
-rw-r--r--recipes-devtools/python/python3-docker_3.4.0.bb3
-rw-r--r--recipes-devtools/python/python3-docker_7.0.0.bb20
-rw-r--r--recipes-devtools/python/python3-dockerpty_0.4.1.bb7
-rw-r--r--recipes-devtools/python/python3-dotenv_0.17.0.bb12
-rw-r--r--recipes-devtools/python/python3-fastentrypoints_0.12.bb20
-rw-r--r--recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb16
-rw-r--r--recipes-devtools/python/python3-newrelic/0001-setup.py-tweak-setuptools_scm-version-dependency.patch34
-rw-r--r--recipes-devtools/python/python3-newrelic_6.2.0.156.bb (renamed from recipes-devtools/python/python-newrelic_2.22.0.19.bb)16
-rw-r--r--recipes-devtools/python/python3-sphinx-420.bb15
-rw-r--r--recipes-devtools/python/python3-sphinx_2.2.0.bb11
-rw-r--r--recipes-devtools/python/python3-texttable_0.9.1.bb9
-rw-r--r--recipes-devtools/python/python3-udica_git.bb22
-rw-r--r--recipes-devtools/python/python3-webob_1.8.7.bb (renamed from recipes-devtools/python/python-webob_1.8.5.bb)9
-rw-r--r--recipes-devtools/python/python3-websocket-client_0.44.0.bb2
-rw-r--r--recipes-devtools/python/python_2.%.bbappend8
-rw-r--r--recipes-devtools/qemu/qemu-package-split.inc71
-rw-r--r--recipes-devtools/qemu/qemu_%.bbappend1
-rwxr-xr-xrecipes-devtools/yq/files/run-ptest10
-rw-r--r--recipes-devtools/yq/yq_git.bb84
-rw-r--r--recipes-extended/ceph/ceph/0001-avoid-to_string-error.patch73
-rw-r--r--recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch183
-rw-r--r--recipes-extended/ceph/ceph/0001-cephadm-build.py-avoid-using-python3-from-sysroot-wh.patch43
-rw-r--r--recipes-extended/ceph/ceph/0001-delete-install-layout-deb.patch37
-rw-r--r--recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch93
-rw-r--r--recipes-extended/ceph/ceph/0001-rgw-add-executor-type-for-basic_waitable_timers.patch58
-rw-r--r--recipes-extended/ceph/ceph/0001-rgw-beast-handle_connection-takes-io_context.patch61
-rw-r--r--recipes-extended/ceph/ceph/0006-rocksdb-build-with-rocksdb-7.y.z.patch109
-rw-r--r--recipes-extended/ceph/ceph_14.2.3.bb132
-rw-r--r--recipes-extended/ceph/ceph_18.2.2.bb177
-rw-r--r--recipes-extended/cloud-init/cloud-init/0001-setup.py-check-for-install-anywhere-in-args.patch33
-rw-r--r--recipes-extended/cloud-init/cloud-init/cloud-init-source-local-lsb-functions.patch66
-rw-r--r--recipes-extended/cloud-init/cloud-init_git.bb73
-rw-r--r--recipes-extended/dev86/dev86/0001-cpp-Makefile-respect-LDFLAGS-when-building-bcc-cpp.patch25
-rw-r--r--recipes-extended/dev86/dev86/0001-cpp-fix-race-writing-token.h-files.patch45
-rw-r--r--recipes-extended/dev86/dev86/0003-cpp-update-token1.tok-to-make-new-gperf-happy-regen..patch30
-rw-r--r--recipes-extended/dev86/dev86/0004-regen-token2.h-token1.h-with-gperf-3.1.patch59
-rw-r--r--recipes-extended/dev86/dev86/cross.patch29
-rw-r--r--recipes-extended/dev86/dev86_0.16.20.bb38
-rw-r--r--recipes-extended/dev86/dev86_git.bb43
-rw-r--r--recipes-extended/diod/diod_1.0.24.bb23
-rw-r--r--recipes-extended/diod/files/0001-build-Find-lua-with-pkg-config.patch50
-rw-r--r--recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch126
-rw-r--r--recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch40
-rw-r--r--recipes-extended/diod/files/0001-drod-add-option-to-config-systemddir.patch51
-rw-r--r--recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch47
-rw-r--r--recipes-extended/fuse-overlayfs/fuse-overlayfs/0001-utils-Add-missing-include-on-limits.h.patch36
-rw-r--r--recipes-extended/fuse-overlayfs/fuse-overlayfs_1.9.bb (renamed from recipes-extended/fuse-overlayfs/fuse-overlayfs_0.6.4.bb)9
-rw-r--r--recipes-extended/hyperstart/hyperstart/0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch46
-rw-r--r--recipes-extended/hyperstart/hyperstart_git.bb10
-rw-r--r--recipes-extended/images/container-base.bb12
-rw-r--r--recipes-extended/images/kvm-image-minimal.bb3
-rw-r--r--recipes-extended/images/uxen-guest-image-minimal.bb9
-rw-r--r--recipes-extended/images/xen-guest-image-minimal.bb12
-rw-r--r--recipes-extended/images/xen-image-minimal.bb70
-rw-r--r--recipes-extended/images/xtf-image.bb34
-rw-r--r--recipes-extended/images/xvisor-image-minimal.bb20
-rw-r--r--recipes-extended/iptables/iptables-meta-virtualization.inc3
-rw-r--r--recipes-extended/ipxe/files/build-be-explicit-about-fcommon-compiler-directive.patch33
-rw-r--r--recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch58
-rw-r--r--recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch45
-rw-r--r--recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch91
-rw-r--r--recipes-extended/ipxe/ipxe_git.bb31
-rw-r--r--recipes-extended/irqbalance/irqbalance.inc7
-rw-r--r--recipes-extended/irqbalance/irqbalance/add-initscript.patch2
-rw-r--r--recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch2
-rw-r--r--recipes-extended/irqbalance/irqbalance/irqbalanced.service9
-rw-r--r--recipes-extended/irqbalance/irqbalance_git.bb11
-rw-r--r--recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch39
-rw-r--r--recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch14
-rw-r--r--recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch22
-rw-r--r--recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch25
-rw-r--r--recipes-extended/kvmtool/files/external-crosscompiler.patch38
-rw-r--r--recipes-extended/kvmtool/kvmtool_git.bb (renamed from recipes-extended/kvmtool/kvmtool.bb)9
-rw-r--r--recipes-extended/libibverbs/libibverbs_1.2.1.bb34
-rw-r--r--recipes-extended/libvirt/libvirt-dbus_1.4.1.bb23
-rw-r--r--recipes-extended/libvirt/libvirt-glib/0001-meson.build-allow-crosscompiling-gir-and-doc.patch37
-rw-r--r--recipes-extended/libvirt/libvirt-glib_5.0.0.bb21
-rw-r--r--recipes-extended/libvirt/libvirt-python.inc35
-rw-r--r--recipes-extended/libvirt/libvirt/0001-messon.build-remove-build-path-information-to-avoid-.patch55
-rw-r--r--recipes-extended/libvirt/libvirt/0001-prevent-gendispatch.pl-generating-build-path-in-code.patch43
-rw-r--r--recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch12
-rw-r--r--recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch49
-rw-r--r--recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch36
-rwxr-xr-xrecipes-extended/libvirt/libvirt/hook_support.py2
-rw-r--r--recipes-extended/libvirt/libvirt/install-missing-file.patch52
-rw-r--r--recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch63
-rw-r--r--recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch45
-rw-r--r--recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch87
-rw-r--r--recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch39
-rw-r--r--recipes-extended/libvirt/libvirt/runptest.patch119
-rw-r--r--recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch89
-rw-r--r--recipes-extended/libvirt/libvirt_10.0.0.bb334
-rw-r--r--recipes-extended/libvirt/libvirt_5.5.0.bb387
-rw-r--r--recipes-extended/libvmi/files/0001-Build-vbd-only-when-xen-is-enabled.patch76
-rw-r--r--recipes-extended/libvmi/libvmi_git.bb18
-rw-r--r--recipes-extended/nagios/nagios-common.inc10
-rw-r--r--recipes-extended/nagios/nagios-core/eventhandlers_nagioscmd_path.patch2
-rw-r--r--recipes-extended/nagios/nagios-core/nagios-core.service2
-rw-r--r--recipes-extended/nagios/nagios-core_4.4.6.bb (renamed from recipes-extended/nagios/nagios-core_4.4.3.bb)39
-rw-r--r--recipes-extended/nagios/nagios-nrpe/0001-Should-fix-235-nasty_metachars-was-not-being-returne.patch30
-rw-r--r--recipes-extended/nagios/nagios-nrpe/fix-compile-without-openssl.patch2
-rw-r--r--recipes-extended/nagios/nagios-nrpe/fix-configure-uses-host-openssl.patch2
-rw-r--r--recipes-extended/nagios/nagios-nrpe_4.0.2.bb (renamed from recipes-extended/nagios/nagios-nrpe_3.2.1.bb)36
-rw-r--r--recipes-extended/nagios/nagios-nsca/nagios-nsca.service2
-rw-r--r--recipes-extended/nagios/nagios-nsca_2.9.2.bb20
-rw-r--r--recipes-extended/nagios/nagios-plugins_2.2.1.bb10
-rw-r--r--recipes-extended/oath/oath/0001-oath-fix-macro-definition-error.patch2
-rw-r--r--recipes-extended/oath/oath_2.6.2.bb4
-rw-r--r--recipes-extended/seabios/seabios/hostcc.patch2
-rw-r--r--recipes-extended/seabios/seabios/python3.patch15
-rw-r--r--recipes-extended/seabios/seabios_1.16.0.bb (renamed from recipes-extended/seabios/seabios_1.11.2.bb)20
-rw-r--r--recipes-extended/upx/libucl/0001-configure.ac-Fix-with-current-autoconf.patch30
-rw-r--r--recipes-extended/upx/libucl/0002-acinclude.m4-Provide-missing-macros.patch383
-rw-r--r--recipes-extended/upx/libucl/Reproducible-build.patch30
-rw-r--r--recipes-extended/upx/libucl/use-static-assert.patch37
-rw-r--r--recipes-extended/upx/libucl_1.03.bb20
-rw-r--r--recipes-extended/upx/upx_git.bb16
-rw-r--r--recipes-extended/uxen/README.md48
-rw-r--r--recipes-extended/uxen/uxen-guest-tools/0001-vm-support-fix-build-for-kernel-s-5.4.patch86
-rw-r--r--recipes-extended/uxen/uxen-guest-tools/0002-vm-support-fix-build-for-kernel-s-5.15.patch48
-rw-r--r--recipes-extended/uxen/uxen-guest-tools/0003-vm-support-fix-build-for-kernel-s-5.14.patch34
-rw-r--r--recipes-extended/uxen/uxen-guest-tools/0004-uxenhc-fix-DMODULE-not-working-on-module-build-comma.patch58
-rw-r--r--recipes-extended/uxen/uxen-guest-tools/fix-Makefile-for-OE-kernel-build.patch38
-rw-r--r--recipes-extended/uxen/uxen-guest-tools_4.1.8.bb26
-rw-r--r--recipes-extended/vgabios/biossums_0.7a.bb37
-rw-r--r--recipes-extended/vgabios/files/build-cc.patch31
-rw-r--r--recipes-extended/vgabios/vgabios_0.7a.bb33
-rw-r--r--recipes-extended/vgabios/vgabios_0.8a.bb25
-rw-r--r--recipes-extended/vhost-device/README.md14
-rw-r--r--recipes-extended/vhost-device/vhost-device-gpio-crates.inc184
-rw-r--r--recipes-extended/vhost-device/vhost-device-gpio_0.1.0.bb22
-rw-r--r--recipes-extended/vhost-device/vhost-device-i2c-crates.inc126
-rw-r--r--recipes-extended/vhost-device/vhost-device-i2c_0.1.0.bb16
-rw-r--r--recipes-extended/vhost-device/vhost-device-rng-crates.inc158
-rw-r--r--recipes-extended/vhost-device/vhost-device-rng_0.1.0.bb17
-rw-r--r--recipes-extended/vhost-device/vhost-device-scsi-crates.inc166
-rw-r--r--recipes-extended/vhost-device/vhost-device-scsi_0.1.0.bb16
-rw-r--r--recipes-extended/vhost-device/vhost-device-vsock-crates.inc258
-rw-r--r--recipes-extended/vhost-device/vhost-device-vsock_0.1.0.bb16
-rw-r--r--recipes-extended/virt-manager/virt-manager/0001-setup.py-move-global-args-to-install-args.patch78
-rw-r--r--recipes-extended/virt-manager/virt-manager_4.1.0.bb54
-rw-r--r--recipes-extended/virt-viewer/virt-viewer_11.0.bb38
-rw-r--r--recipes-extended/virt-what/virt-what_1.21.bb11
-rw-r--r--recipes-extended/virtiofsd/README.md14
-rw-r--r--recipes-extended/virtiofsd/virtiofsd-crates.inc142
-rw-r--r--recipes-extended/virtiofsd/virtiofsd_1.7.0.bb21
-rw-r--r--recipes-extended/xen/README66
-rw-r--r--recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch57
-rw-r--r--recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch73
-rw-r--r--recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch43
-rw-r--r--recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch59
-rw-r--r--recipes-extended/xen/files/0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch34
-rw-r--r--recipes-extended/xen/xen-blktap.inc76
-rw-r--r--recipes-extended/xen/xen-hypervisor.inc117
-rw-r--r--recipes-extended/xen/xen-tools.inc859
-rw-r--r--recipes-extended/xen/xen-tools_4.17.bb19
-rw-r--r--recipes-extended/xen/xen-tools_4.18.bb21
-rw-r--r--recipes-extended/xen/xen-tools_git.bb21
-rw-r--r--recipes-extended/xen/xen.inc1013
-rw-r--r--recipes-extended/xen/xen_4.12.0.bb12
-rw-r--r--recipes-extended/xen/xen_4.17.bb22
-rw-r--r--recipes-extended/xen/xen_4.18.bb21
-rw-r--r--recipes-extended/xen/xen_git.bb25
-rw-r--r--recipes-extended/xen/xtf_git.bb56
-rw-r--r--recipes-extended/xvisor/files/0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch34
-rw-r--r--recipes-extended/xvisor/files/0001-build-use-usr-bin-env-for-python-scripts.patch38
-rw-r--r--recipes-extended/xvisor/xvisor-configs.inc25
-rw-r--r--recipes-extended/xvisor/xvisor_git.bb57
-rw-r--r--recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend13
-rw-r--r--recipes-graphics/xorg-xserver/xserver-xorg_xen.inc13
-rw-r--r--recipes-kernel/linux/linux-%.bbappend38
-rw-r--r--recipes-kernel/linux/linux-yocto-dev.bbappend1
-rw-r--r--recipes-kernel/linux/linux-yocto-rt_%.bbappend1
-rw-r--r--recipes-kernel/linux/linux-yocto/docker.cfg12
-rw-r--r--recipes-kernel/linux/linux-yocto/docker.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/ebtables.cfg2
-rw-r--r--recipes-kernel/linux/linux-yocto/ebtables.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/extra-configs.cfg1
-rw-r--r--recipes-kernel/linux/linux-yocto/lxc.cfg33
-rw-r--r--recipes-kernel/linux/linux-yocto/lxc.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/vswitch.cfg3
-rw-r--r--recipes-kernel/linux/linux-yocto/vswitch.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/xen.cfg50
-rw-r--r--recipes-kernel/linux/linux-yocto/xen.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/xt-checksum.cfg1
-rw-r--r--recipes-kernel/linux/linux-yocto/xt-checksum.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto_4.19.bbappend1
-rw-r--r--recipes-kernel/linux/linux-yocto_5.2.bbappend1
-rw-r--r--recipes-kernel/linux/linux-yocto_6.6_virtualization.inc4
-rw-r--r--recipes-kernel/linux/linux-yocto_virtualization.inc63
-rw-r--r--recipes-kernel/linux/yocto-cfg-fragments.bb37
-rw-r--r--recipes-kernel/lopper/lopper_git.bb34
-rw-r--r--recipes-networking/cni/README.md3
-rw-r--r--recipes-networking/cni/cni_git.bb72
-rw-r--r--recipes-networking/cni/files/modules.txt26
-rw-r--r--recipes-networking/cni/relocation.inc30
-rw-r--r--recipes-networking/cni/src_uri.inc65
-rw-r--r--recipes-networking/netns/netns_git.bb18
-rw-r--r--recipes-networking/openvswitch/files/openvswitch-add-ptest.patch2
-rw-r--r--recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch373
-rw-r--r--recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch15
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch29
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/Makefile.am-set-the-python3-interpreter-with-usr-bin.patch43
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch14
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/kernel_module.patch29
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch (renamed from recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-78e203138cb7253e9ca5ad8a2c4ed6bb6752f23e.patch)8
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch36
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch60
-rw-r--r--recipes-networking/openvswitch/openvswitch.inc51
-rw-r--r--recipes-networking/openvswitch/openvswitch_git.bb47
-rw-r--r--recipes-networking/slirp4netns/slirp4netns_git.bb (renamed from recipes-networking/slirp4netns/slirp4netns_0.4.1.bb)15
-rw-r--r--scripts/README-oe-go-mod-autogen.txt120
-rw-r--r--scripts/lib/wic/plugins/source/bootimg-biosxen.py212
-rwxr-xr-xscripts/oe-go-mod-autogen.py800
-rw-r--r--wic/directdisk-bootloader-xen.cfg17
-rw-r--r--wic/directdisk-bootloader-xen.wks12
-rw-r--r--wic/directdisk-xen.wks10
-rw-r--r--wic/qemuboot-xen-x86-64.cfg8
-rw-r--r--wic/qemuboot-xen-x86-64.wks12
517 files changed, 23436 insertions, 7449 deletions
diff --git a/.gitignore b/.gitignore
index 45b11062..daeb43d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
-build*/
+/build*/
pyshtables.py
*.swp
*.orig
*.rej
/*.patch
*~
+scripts/lib/wic/plugins/source/__pycache__
+lib/oeqa/runtime/cases/__pycache__
diff --git a/MAINTAINERS b/MAINTAINERS
new file mode 100644
index 00000000..4b41bad2
--- /dev/null
+++ b/MAINTAINERS
@@ -0,0 +1,36 @@
+This file contains a list of maintainers for the meta-virtualization layer.
+
+See the README file in this layer for patch send details.
+
+You may also contact the maintainers directly.
+
+Descriptions of section entries:
+
+ M: Mail patches to: FullName <address@domain>
+ F: Files and directories with wildcard patterns.
+ A trailing slash includes all files and subdirectory files.
+ F: recipes-devtools/ all files in and below recipes-devtools
+ F: recipes-selinux/* all files in recipes-selinux, but not below
+ One pattern per line. Multiple F: lines acceptable.
+
+Please keep this list in alphabetical order.
+
+Maintainers List (try to look for most precise areas first)
+
+COMMON
+M: Bruce Ashfield <bruce.ashfield@gmail.com>
+L: meta-virtualization@lists.yoctoproject.org
+S: Maintained
+F: conf/
+F: classes/
+F: docs/
+F: files/
+F: recipes-*
+
+XEN
+M: Christopher Clark <christopher.w.clark@gmail.com>
+F: recipes-extended/xen/
+F: recipes-extended/uxen/
+F: recipes-extended/images/*xen*.bb
+F: recipes-extended/images/xtf*.bb
+F: dynamic-layers/raspberrypi/
diff --git a/README b/README.md
index 0dda9f2a..c26c0955 100644
--- a/README
+++ b/README.md
@@ -8,7 +8,7 @@ The bbappend files for some recipes (e.g. linux-yocto) in this layer need to
have 'virtualization' in DISTRO_FEATURES to have effect. To enable them, add
in configuration file the following line.
- DISTRO_FEATURES_append = " virtualization"
+ DISTRO_FEATURES:append = " virtualization"
If meta-virtualization is included, but virtualization is not enabled as a
distro feature a warning is printed at parse time:
@@ -28,11 +28,13 @@ that may also be enabled:
- xen: enables xen functionality in various packages (kernel, libvirt, etc)
- kvm: enables KVM configurations in the kernel and autoloads modules
+ - k8s: enables kubernets configurations in the kernel, tools and configuration
- aufs: enables aufs support in docker and linux-yocto
- x11: enable xen and libvirt functionality related to x11
- selinux: enables functionality in libvirt and lxc
- systemd: enable systemd services and unit files (for recipes for support)
- sysvinit: enable sysvinit scripts (for recipes with support)
+ - seccomp: enable seccomp support for packages that have the capability.
Dependencies
------------
@@ -51,8 +53,6 @@ layers: meta-oe
meta-filesystems
meta-python
-BBFILE_PRIORITY_openembedded-layer = "4"
-
Required for Xen XSM policy:
URI: git://git.yoctoproject.org/meta-selinux
branch: master
@@ -66,23 +66,28 @@ revision: HEAD
prio: default
Required for cri-o:
-URI: git://github.com/advancedtelematic/meta-updater
URI: git://git.yoctoproject.org/meta-selinux
-URI: git://git.yoctoproject.org/meta-security
branch: master
revision: HEAD
prio: default
+Community / Colaboration
+------------------------
+
+Repository: https://git.yoctoproject.org/cgit/cgit.cgi/meta-virtualization/
+Mailing list: https://lists.yoctoproject.org/g/meta-virtualization
+IRC: libera.chat #meta-virt channel
Maintenance
-----------
-Send pull requests, patches, comments or questions to meta-virtualization@yoctoproject.org
+Send pull requests, patches, comments or questions to meta-virtualization@lists.yoctoproject.org
Maintainer: Bruce Ashfield <bruce.ashfield@gmail.com>
+see MAINTAINERS for more specific information
When sending single patches, please using something like:
-$ git send-email -1 -M --to meta-virtualization@yoctoproject.org --subject-prefix='meta-virtualization][PATCH'
+$ git send-email -1 -M --to meta-virtualization@lists.yoctoproject.org --subject-prefix='meta-virtualization][PATCH'
License
-------
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 00000000..9fe8a8e2
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,23 @@
+How to Report a Potential Vulnerability?
+========================================
+
+If you would like to report a public issue (for example, one with a released
+CVE number), please report it using the mailing list as described in README.md
+If you have a patch ready, submit it following the same procedure as any other
+patch as described in the same file.
+
+If you are dealing with a not-yet released or urgent issue, please send a
+message to the layer maintainer, including as many details as
+possible: the software module affected, the recipe and its version,
+and any example code, if available.
+
+Branches maintained with security fixes
+---------------------------------------
+
+See [https://wiki.yoctoproject.org/wiki/Stable_Release_and_LTS Stable release and LTS]
+for detailed info regarding the policies and maintenance of Stable branches.
+
+The [https://wiki.yoctoproject.org/wiki/Releases Release page] contains a list of all
+releases of the Yocto Project. Versions in grey are no longer actively maintained with
+security patches, but well-tested patches may still be accepted for them for
+significant issues.
diff --git a/classes/cni_networking.bbclass b/classes/cni_networking.bbclass
new file mode 100644
index 00000000..2e81d63f
--- /dev/null
+++ b/classes/cni_networking.bbclass
@@ -0,0 +1,18 @@
+DEPENDS:append:class-target = " cni"
+
+PACKAGES:prepend = "${PN}-cni "
+
+FILES:${PN}-cni = "${sysconfdir}/cni/net.d/*"
+
+RDEPENDS:${PN}-cni = "cni"
+
+do_install:append() {
+ if [ -z "${CNI_NETWORKING_FILES}" ]; then
+ bbfatal "cni-networking was inherited, but no networking configuration was provided via CNI_NETWORKING_FILES"
+ fi
+ install -d "${D}/${sysconfdir}/cni/net.d/"
+ for f in ${CNI_NETWORKING_FILES}; do
+ conf_name="$(basename $f)"
+ install -D -m 0644 "$f" "${D}/${sysconfdir}/cni/net.d/$conf_name"
+ done
+}
diff --git a/classes/container-host.bbclass b/classes/container-host.bbclass
new file mode 100644
index 00000000..99a75fea
--- /dev/null
+++ b/classes/container-host.bbclass
@@ -0,0 +1,15 @@
+# This class is the collection point for automatic dependencies,
+# package installs, rootfs postprocessing, etc, that are used
+# by container host images and recipes.
+
+# It currently is largely empty, and simply adds RDEPENDS, but
+# will expand to CRI/CNI configurations in the future.
+#
+
+RDEPENDS:${PN}:append = " container-host-config"
+
+do_install:append() {
+ # placeholder for additional package install, or configuration
+ # of the rootfs
+ true
+}
diff --git a/classes/image-oci-sloci-image.inc b/classes/image-oci-sloci-image.inc
new file mode 100644
index 00000000..9248489f
--- /dev/null
+++ b/classes/image-oci-sloci-image.inc
@@ -0,0 +1,89 @@
+IMAGE_CMD:oci() {
+ sloci_options=""
+
+ bbdebug 1 "OCI image settings:"
+ bbdebug 1 " author: ${OCI_IMAGE_AUTHOR}"
+ bbdebug 1 " author email: ${OCI_IMAGE_AUTHOR_EMAIL}"
+ bbdebug 1 " tag: ${OCI_IMAGE_TAG}"
+ bbdebug 1 " arch: ${OCI_IMAGE_ARCH}"
+ bbdebug 1 " subarch: ${OCI_IMAGE_SUBARCH}"
+ bbdebug 1 " entrypoint: ${OCI_IMAGE_ENTRYPOINT}"
+ bbdebug 1 " entrypoing args: ${OCI_IMAGE_ENTRYPOINT_ARGS}"
+ bbdebug 1 " labels: ${OCI_IMAGE_LABELS}"
+ bbdebug 1 " uid: ${OCI_IMAGE_RUNTIME_UID}"
+ bbdebug 1 " working dir: ${OCI_IMAGE_WORKINGDIR}"
+ bbdebug 1 " env vars: ${OCI_IMAGE_ENV_VARS}"
+ bbdebug 1 " ports: ${OCI_IMAGE_PORTS}"
+
+ # Change into the image deploy dir to avoid having any output operations capture
+ # long directories or the location.
+ cd ${IMGDEPLOYDIR}
+
+ oci_image_label_options=""
+ if [ -n "${OCI_IMAGE_LABELS}" ]; then
+ for l in ${OCI_IMAGE_LABELS}; do
+ oci_image_label_options="${oci_image_label_options} --label ${l}"
+ done
+ fi
+ oci_image_env_options=""
+ if [ -n "${OCI_IMAGE_ENV_VARS}" ]; then
+ for l in ${OCI_IMAGE_ENV_VARS}; do
+ oci_image_env_options="${oci_image_env_options} --env ${l}"
+ done
+ fi
+ oci_image_port_options=""
+ if [ -n "${OCI_IMAGE_PORTS}" ]; then
+ for l in ${OCI_IMAGE_PORTS}; do
+ oci_image_port_options="${oci_image_port_options} --port ${l}"
+ done
+ fi
+
+ if [ -n "${OCI_IMAGE_RUNTIME_UID}" ]; then
+ oci_image_user_options="--user ${OCI_IMAGE_RUNTIME_UID}"
+ fi
+
+ if [ -n "${OCI_IMAGE_WORKINGDIR}" ]; then
+ oci_image_working_dir_options="--working-dir ${OCI_IMAGE_WORKINGDIR}"
+ fi
+
+ if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
+ sloci_options="$sloci_options --tar"
+ fi
+
+ # options that always appear are required for a valid oci container image
+ # others are optional based on settings.
+ sloci-image $sloci_options \
+ --arch ${OCI_IMAGE_ARCH} \
+ --arch-variant "${OCI_IMAGE_SUBARCH}" \
+ --entrypoint ${OCI_IMAGE_ENTRYPOINT} \
+ --cmd "${OCI_IMAGE_ENTRYPOINT_ARGS}" \
+ --author ${OCI_IMAGE_AUTHOR_EMAIL} \
+ ${oci_image_user_options} \
+ ${oci_image_label_options} \
+ ${oci_image_env_options} \
+ ${oci_image_working_dir_options} \
+ ${oci_image_port_options} \
+ ${IMAGE_ROOTFS} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci:${OCI_IMAGE_TAG}
+
+ if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
+ # if tar is specified, sloci-image is removing the directory that we need for a secondary
+ # tar format, so we need to restore it.
+ tar xf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar
+ fi
+
+ # create a convenience symlink
+ ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci
+
+ if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
+ # move the sloci output to a naming convention that matches what we do with umoci, thie
+ # default creates a subdirectory, so it get the "-dir" in the name
+ mv ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-dir.tar
+ ln -sf ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-dir.tar ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci-dir.tar
+
+ (
+ cd "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci"
+ tar -cf ../"${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar" "."
+ )
+ ln -sf "${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-${OCI_IMAGE_TAG}-${OCI_IMAGE_ARCH}-linux.oci-image.tar" ${IMAGE_BASENAME}-${OCI_IMAGE_TAG}-oci.tar
+ fi
+}
diff --git a/classes/image-oci-umoci.inc b/classes/image-oci-umoci.inc
new file mode 100644
index 00000000..c77750fb
--- /dev/null
+++ b/classes/image-oci-umoci.inc
@@ -0,0 +1,135 @@
+IMAGE_CMD:oci() {
+ umoci_options=""
+
+ bbdebug 1 "UMOCI image settings:"
+ bbdebug 1 " author: ${OCI_IMAGE_AUTHOR}"
+ bbdebug 1 " author email: ${OCI_IMAGE_AUTHOR_EMAIL}"
+ bbdebug 1 " tag: ${OCI_IMAGE_TAG}"
+ bbdebug 1 " arch: ${OCI_IMAGE_ARCH}"
+ bbdebug 1 " subarch: ${OCI_IMAGE_SUBARCH}"
+ bbdebug 1 " entrypoint: ${OCI_IMAGE_ENTRYPOINT}"
+ bbdebug 1 " entrypoint args: ${OCI_IMAGE_ENTRYPOINT_ARGS}"
+ bbdebug 1 " labels: ${OCI_IMAGE_LABELS}"
+ bbdebug 1 " uid: ${OCI_IMAGE_RUNTIME_UID}"
+ bbdebug 1 " working dir: ${OCI_IMAGE_WORKINGDIR}"
+ bbdebug 1 " env vars: ${OCI_IMAGE_ENV_VARS}"
+ bbdebug 1 " ports: ${OCI_IMAGE_PORTS}"
+
+ OCI_REUSE_IMAGE=""
+
+ # Change into the image deploy dir to avoid having any output operations capture
+ # long directories or the location.
+ cd ${IMGDEPLOYDIR}
+
+ new_image=t
+ image_name="${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci"
+ image_bundle_name="${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci-bundle"
+ if [ -n "$OCI_REUSE_IMAGE" ]; then
+ if [ -d $image_name ]; then
+ bbdebug 1 "OCI: reusing image directory"
+ new_image=""
+ fi
+ else
+ bbdebug 1 "OCI: removing existing container image directory"
+ rm -rf $image_name $image_bundle_name
+ fi
+
+ if [ -z "${OCI_IMAGE_TAG}" ]; then
+ OCI_IMAGE_TAG="initial-tag"
+ fi
+
+ if [ -n "$new_image" ]; then
+ bbdebug 1 "OCI: umoci init --layout $image_name"
+ umoci init --layout $image_name
+ umoci new --image $image_name:${OCI_IMAGE_TAG}
+ umoci unpack --rootless --image $image_name:${OCI_IMAGE_TAG} $image_bundle_name
+ else
+ # todo: create a different tag, after checking if the passed one exists
+ true
+ fi
+
+ bbdebug 1 "OCI: populating rootfs"
+ bbdebug 1 "OCI: cp -r ${IMAGE_ROOTFS}/* $image_bundle_name/rootfs/"
+ cp -r ${IMAGE_ROOTFS}/* $image_bundle_name/rootfs
+
+ bbdebug 1 "OCI: umoci repack --image $image_name:${OCI_IMAGE_TAG} $image_bundle_name"
+ umoci repack --image $image_name:${OCI_IMAGE_TAG} $image_bundle_name
+
+ bbdebug 1 "OCI: configuring image"
+ if [ -n "${OCI_IMAGE_LABELS}" ]; then
+ for l in ${OCI_IMAGE_LABELS}; do
+ bbdebug 1 "OCI: umoci config --image $image_name:${OCI_IMAGE_TAG} --config.label \"$l\""
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.label "$l"
+ done
+ fi
+ if [ -n "${OCI_IMAGE_ENV_VARS}" ]; then
+ for l in ${OCI_IMAGE_ENV_VARS}; do
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.env \"$l\""
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.env "$l"
+ done
+ fi
+ if [ -n "${OCI_IMAGE_PORTS}" ]; then
+ for l in ${OCI_IMAGE_PORTS}; do
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.exposedports $l"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.exposedports $l
+ done
+ fi
+ if [ -n "${OCI_IMAGE_RUNTIME_UID}" ]; then
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.user ${OCI_IMAGE_RUNTIME_UID}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.user ${OCI_IMAGE_RUNTIME_UID}
+ fi
+ if [ -n "${OCI_IMAGE_WORKINGDIR}" ]; then
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.workingdir ${OCI_IMAGE_WORKINGDIR}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.workingdir ${OCI_IMAGE_WORKINGDIR}
+ fi
+ if [ -n "${OCI_IMAGE_STOPSIGNAL}" ]; then
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --config.stopsignal ${OCI_IMAGE_STOPSIGNAL}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --config.stopsignal ${OCI_IMAGE_STOPSIGNAL}
+ fi
+ if [ -n "${OCI_IMAGE_OS}" ]; then
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --os ${OCI_IMAGE_OS}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --os ${OCI_IMAGE_OS}
+ fi
+
+ bbdebug 1 "umoci config --image $image_name:${OCI_IMAGE_TAG} --architecture ${OCI_IMAGE_ARCH}"
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --architecture ${OCI_IMAGE_ARCH}
+ # NOTE: umoci doesn't currently expose setting the architecture variant,
+ # so if you need it use sloci instead
+ if [ -n "${OCI_IMAGE_SUBARCH}" ]; then
+ bbnote "OCI: image subarch is set to: ${OCI_IMAGE_SUBARCH}, but umoci does not"
+ bbnote " expose variants. use sloci instead if this is important"
+ fi
+ umoci config --image $image_name:${OCI_IMAGE_TAG} \
+ ${@" ".join("--config.entrypoint %s" % s for s in d.getVar("OCI_IMAGE_ENTRYPOINT").split())}
+ if [ -n "${OCI_IMAGE_ENTRYPOINT_ARGS}" ]; then
+ umoci config --image $image_name:${OCI_IMAGE_TAG} ${@" ".join("--config.cmd %s" % s for s in d.getVar("OCI_IMAGE_ENTRYPOINT_ARGS").split())}
+ fi
+ umoci config --image $image_name:${OCI_IMAGE_TAG} --author ${OCI_IMAGE_AUTHOR_EMAIL}
+
+ # OCI_IMAGE_TAG may contain ":", but these are not allowed in OCI file
+ # names so replace them
+ image_tag="${@d.getVar("OCI_IMAGE_TAG").replace(":", "_")}"
+
+ # make a tar version of the image direcotry
+ # 1) image_name.tar: compatible with oci tar format, blobs and rootfs
+ # are at the top level. Can load directly from something like podman
+ # 2) image_name-dir.tar: original format from meta-virt, is just a tar'd
+ # up oci image directory (compatible with skopeo :dir format)
+ if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
+ (
+ cd "$image_name"
+ tar -cf ../"$image_name.tar" "."
+ )
+ tar -cf "$image_name-dir.tar" "$image_name"
+
+ # create a convenience symlink
+ ln -sf "$image_name.tar" "${IMAGE_BASENAME}-$image_tag-oci.tar"
+ ln -sf "$image_name-dir.tar" "${IMAGE_BASENAME}-$image_tag-oci-dir.tar"
+ fi
+
+ # We could make this optional, since the bundle is directly runnable via runc
+ rm -rf $image_bundle_name
+
+ # This is the OCI image directory, which is technically the "image" as specified
+ ln -sf $image_name ${IMAGE_BASENAME}-$image_tag-oci
+}
diff --git a/classes/image-oci.bbclass b/classes/image-oci.bbclass
index c256b12c..0ec5c487 100644
--- a/classes/image-oci.bbclass
+++ b/classes/image-oci.bbclass
@@ -16,19 +16,32 @@
# And then create the bundle:
# % oci-image-tool create --ref name=latest container-base-<arch>-<stamp>.rootfs-oci container-base-oci-bundle
#
+# Alternatively, the bundle can be created with umoci (use --rootless if sudo is not available)
+# % sudo umoci unpack --image container-base-<arch>-<stamp>.rootfs-oci:latest container-base-oci-bundle
+#
# Or to copy (push) the oci image to a docker registry, skopeo can be used (vary the
# tag based on the created oci image:
#
# % skopeo copy --dest-creds <username>:<password> oci:container-base-<arch>-<stamp>:latest docker://zeddii/container-base
#
+# If your build host architecture matches the target, you can execute the unbundled
+# container with runc:
+#
+# % sudo runc run -b container-base-oci-bundle ctr-build
+# / % uname -a
+# Linux mrsdalloway 4.18.0-25-generic #26-Ubuntu SMP Mon Jun 24 09:32:08 UTC 2019 x86_64 GNU/Linux
+#
# We'd probably get this through the container image typdep, but just
# to be sure, we'll repeat it here.
ROOTFS_BOOTSTRAP_INSTALL = ""
# we want container and tar.bz2's to be created
-IMAGE_TYPEDEP_oci = "container tar.bz2"
+IMAGE_TYPEDEP:oci = "container tar.bz2"
+
# sloci is the script/project that will create the oci image
-do_image_oci[depends] += "sloci-image-native:do_populate_sysroot"
+# OCI_IMAGE_BACKEND ?= "sloci-image"
+OCI_IMAGE_BACKEND ?= "umoci"
+do_image_oci[depends] += "${OCI_IMAGE_BACKEND}-native:do_populate_sysroot"
#
# image type configuration block
@@ -39,12 +52,13 @@ OCI_IMAGE_AUTHOR_EMAIL ?= "${PATCH_GIT_USER_EMAIL}"
OCI_IMAGE_TAG ?= "latest"
OCI_IMAGE_RUNTIME_UID ?= ""
-OCI_IMAGE_ARCH ?= "${TARGET_ARCH}"
+OCI_IMAGE_ARCH ?= "${@oe.go.map_arch(d.getVar('TARGET_ARCH'))}"
OCI_IMAGE_SUBARCH ?= "${@oci_map_subarch(d.getVar('TARGET_ARCH'), d.getVar('TUNE_FEATURES'), d)}"
OCI_IMAGE_ENTRYPOINT ?= "sh"
OCI_IMAGE_ENTRYPOINT_ARGS ?= ""
OCI_IMAGE_WORKINGDIR ?= ""
+OCI_IMAGE_STOPSIGNAL ?= ""
# List of ports to expose from a container running this image:
# PORT[/PROT]
@@ -75,70 +89,7 @@ def oci_map_subarch(a, f, d):
return ''
return ''
-IMAGE_CMD_oci() {
- sloci_options=""
-
- bbdebug 1 "OCI image settings:"
- bbdebug 1 " author: ${OCI_IMAGE_AUTHOR}"
- bbdebug 1 " author email: ${OCI_IMAGE_AUTHOR_EMAIL}"
- bbdebug 1 " tag: ${OCI_IMAGE_TAG}"
- bbdebug 1 " arch: ${OCI_IMAGE_ARCH}"
- bbdebug 1 " subarch: ${OCI_IMAGE_SUBARCH}"
- bbdebug 1 " entrypoint: ${OCI_IMAGE_ENTRYPOINT}"
- bbdebug 1 " entrypoing args: ${OCI_IMAGE_ENTRYPOINT_ARGS}"
- bbdebug 1 " labels: ${OCI_IMAGE_LABELS}"
- bbdebug 1 " uid: ${OCI_IMAGE_RUNTIME_UID}"
- bbdebug 1 " working dir: ${OCI_IMAGE_WORKINGDIR}"
- bbdebug 1 " env vars: ${OCI_IMAGE_ENV_VARS}"
- bbdebug 1 " ports: ${OCI_IMAGE_PORTS}"
-
- # Change into the image deploy dir to avoid having any output operations capture
- # long directories or the location.
- cd ${IMGDEPLOYDIR}
-
- oci_image_label_options=""
- if [ -n "${OCI_IMAGE_LABELS}" ]; then
- for l in ${OCI_IMAGE_LABELS}; do
- oci_image_label_options="${oci_image_label_options} --label ${l}"
- done
- fi
- oci_image_env_options=""
- if [ -n "${OCI_IMAGE_ENV_VARS}" ]; then
- for l in ${OCI_IMAGE_ENV_VARS}; do
- oci_image_env_options="${oci_image_env_options} --env ${l}"
- done
- fi
- oci_image_port_options=""
- if [ -n "${OCI_IMAGE_PORTS}" ]; then
- for l in ${OCI_IMAGE_PORTS}; do
- oci_image_port_options="${oci_image_port_options} --port ${l}"
- done
- fi
-
- if [ -n "${OCI_IMAGE_RUNTIME_UID}" ]; then
- oci_image_user_options="--user ${OCI_IMAGE_RUNTIME_UID}"
- fi
-
- if [ -n "${OCI_IMAGE_WORKINGDIR}" ]; then
- oci_image_working_dir_options="--working-dir ${OCI_IMAGE_WORKINGDIR}"
- fi
-
- if [ -n "${OCI_IMAGE_TAR_OUTPUT}" ]; then
- sloci_options="$sloci_options --tar"
- fi
+# the IMAGE_CMD:oci comes from the .inc
+OCI_IMAGE_BACKEND_INC ?= "${@"image-oci-" + "${OCI_IMAGE_BACKEND}" + ".inc"}"
+include ${OCI_IMAGE_BACKEND_INC}
- # options that always appear are required for a valid oci container image
- # others are optional based on settings.
- sloci-image $sloci_options \
- --arch ${OCI_IMAGE_ARCH} \
- --arch-variant "${OCI_IMAGE_SUBARCH}" \
- --entrypoint ${OCI_IMAGE_ENTRYPOINT} \
- --cmd "${OCI_IMAGE_ENTRYPOINT_ARGS}" \
- --author ${OCI_IMAGE_AUTHOR_EMAIL} \
- ${oci_image_user_options} \
- ${oci_image_label_options} \
- ${oci_image_env_options} \
- ${oci_image_working_dir_options} \
- ${oci_image_port_options} \
- ${IMAGE_ROOTFS} ${IMAGE_NAME}${IMAGE_NAME_SUFFIX}-oci:${OCI_IMAGE_TAG}
-}
diff --git a/classes/meta-virt-cfg.bbclass b/classes/meta-virt-cfg.bbclass
new file mode 100644
index 00000000..a20f9fea
--- /dev/null
+++ b/classes/meta-virt-cfg.bbclass
@@ -0,0 +1,6 @@
+# We need to load the meta-virt config components, only if "virtualization"
+# is in the distro features. Since we don't know the distro flags during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_VIRT_CONFIG_PATH file.
+
+include ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${META_VIRT_CONFIG_PATH}', '', d)}
diff --git a/classes/meta-virt-container-cfg.bbclass b/classes/meta-virt-container-cfg.bbclass
new file mode 100644
index 00000000..9a4b144e
--- /dev/null
+++ b/classes/meta-virt-container-cfg.bbclass
@@ -0,0 +1,10 @@
+# We need to set the Xen meta-virt config components, only if "xen"
+# is in the distro features. Since we don't know the distro flags during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_VIRT_CONTAINER_CONFIG_PATH file.
+
+# the defaults are valid if we do or don't have virtualization enabled, so
+# we include it in either case below. But we leave the pattern in place, to
+# match the other configs of the layer and in case the above statement isn't
+# always true in the future.
+include ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${META_VIRT_CONTAINER_CONFIG_PATH}', '${META_VIRT_CONTAINER_CONFIG_PATH}', d)}
diff --git a/classes/meta-virt-depreciated-warning.bbclass b/classes/meta-virt-depreciated-warning.bbclass
new file mode 100644
index 00000000..97495bbf
--- /dev/null
+++ b/classes/meta-virt-depreciated-warning.bbclass
@@ -0,0 +1,3 @@
+do_compile:append() {
+ bbwarn "${PN} is depreciated and should not be used, it will be removed in the future"
+}
diff --git a/classes/meta-virt-hosts.bbclass b/classes/meta-virt-hosts.bbclass
new file mode 100644
index 00000000..80aefb76
--- /dev/null
+++ b/classes/meta-virt-hosts.bbclass
@@ -0,0 +1,29 @@
+# This doesn't work, since it seems to be too late for sanity checking.
+# IMAGE_FEATURES[validitems] += ' ${@bb.utils.contains("DISTRO_FEATURES", "virtualization", "virt-unique-hostname; ", "",d)}'
+
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "virt-unique-hostname", "virt_gen_hostname; ", "",d)}'
+ROOTFS_POSTPROCESS_COMMAND += '${@bb.utils.contains("IMAGE_FEATURES", "virt-unique-hostname", "virt_set_hostname; ", "",d)}'
+
+python virt_gen_hostname() {
+ import uuid
+
+ targetname = d.getVar("VIRT_TARGETNAME")
+ if targetname != None:
+ return
+
+ status, date = oe.utils.getstatusoutput("date +%d-%m-%y")
+ if status:
+ bb.warn("Can't get the date string for target hostname")
+
+ uuid = ':'.join(['{:02x}'.format((uuid.getnode() >> ele) & 0xff) for ele in range(0,8*6,8)][::-1])
+ if uuid:
+ targetname = "%s-%s" % (d.getVar("MACHINE"), uuid.split(":")[0])
+ else:
+ targetname = "%s-%s" % (d.getVar("MACHINE"), date)
+
+ d.setVar("VIRT_TARGETNAME", targetname)
+}
+
+virt_set_hostname() {
+ echo "${VIRT_TARGETNAME}" > ${IMAGE_ROOTFS}/etc/hostname
+}
diff --git a/classes/meta-virt-k8s-cfg.bbclass b/classes/meta-virt-k8s-cfg.bbclass
new file mode 100644
index 00000000..f1d7f81e
--- /dev/null
+++ b/classes/meta-virt-k8s-cfg.bbclass
@@ -0,0 +1,6 @@
+# We need to load the meta-virt config components, only if "k8s"
+# is in the distro features. Since we don't know the distro flags during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the K8S_CONFIG_PATH file.
+
+include ${@bb.utils.contains('DISTRO_FEATURES', 'k8s', '${K8S_CONFIG_PATH}', '', d)}
diff --git a/classes/meta-virt-xen-cfg.bbclass b/classes/meta-virt-xen-cfg.bbclass
new file mode 100644
index 00000000..61b32aa3
--- /dev/null
+++ b/classes/meta-virt-xen-cfg.bbclass
@@ -0,0 +1,6 @@
+# We need to load the Xen meta-virt config components, only if "xen"
+# is in the distro features. Since we don't know the distro flags during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_VIRT_XEN_CONFIG_PATH file.
+
+include ${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${META_VIRT_XEN_CONFIG_PATH}', '', d)}
diff --git a/classes/qemuboot-testimage-network.bbclass b/classes/qemuboot-testimage-network.bbclass
new file mode 100644
index 00000000..57e03551
--- /dev/null
+++ b/classes/qemuboot-testimage-network.bbclass
@@ -0,0 +1,51 @@
+# The recipe for init-ifupdown in core has a special-case for all
+# the Qemu MACHINES: it removes all external network interfaces
+# by default. However, eth0 is needed for testimage, so enable it here.
+
+# If QB_NETWORK_XEN_BRIDGE is set, configure bridging for the network.
+QB_NETWORK_XEN_BRIDGE ??= ""
+
+enable_runqemu_network() {
+ : # no-op for non-qemu MACHINES
+}
+
+enable_runqemu_network:qemuall() {
+ # Do not override a network configuration for eth0 if one is present
+ if ! grep -q eth0 "${IMAGE_ROOTFS}${sysconfdir}/network/interfaces" ; then
+
+ # Xen host networking: use bridging to support guest networks
+ if [ -n "${QB_NETWORK_XEN_BRIDGE}" ] ; then
+ # Configure a Xen host network bridge and put eth0 on it
+ cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/interfaces
+
+# Bridged host network for Xen testimage
+iface eth0 inet manual
+
+auto xenbr0
+iface xenbr0 inet dhcp
+ bridge_ports eth0
+EOF
+
+# Add a script to create the bridge and add eth0 if necessary
+ cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/if-pre-up.d/xenbr0
+#!/bin/sh
+
+if [ "\$IFACE" = xenbr0 ]; then
+ brctl addbr xenbr0 || /bin/true
+ brctl addif xenbr0 eth0 || /bin/true
+ ifconfig eth0 up
+fi
+EOF
+ chmod 755 ${IMAGE_ROOTFS}${sysconfdir}/network/if-pre-up.d/xenbr0
+ else
+ # Just configure eth0
+ cat <<EOF >>${IMAGE_ROOTFS}${sysconfdir}/network/interfaces
+
+# Network for testimage
+auto eth0
+iface eth0 inet dhcp
+EOF
+ fi
+ fi
+}
+ROOTFS_POSTPROCESS_COMMAND += 'enable_runqemu_network;'
diff --git a/classes/qemuboot-xen-defaults.bbclass b/classes/qemuboot-xen-defaults.bbclass
new file mode 100644
index 00000000..460cbe6a
--- /dev/null
+++ b/classes/qemuboot-xen-defaults.bbclass
@@ -0,0 +1,42 @@
+# Set defaults for booting Xen images with qemuboot
+
+# Xen and Dom0 command line options
+QB_XEN_CMDLINE_EXTRA ??= "dom0_mem=192M"
+QB_XEN_DOM0_BOOTARGS ??= \
+ "console=hvc0 earlyprintk clk_ignore_unused root=/dev/vda"
+
+# Launch with one initial domain, dom0, with one boot module, the kernel
+DOM0_KERNEL ??= "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}"
+DOM0_KERNEL_LOAD_ADDR ??= "0x45000000"
+QB_XEN_DOMAIN_MODULES ??= "${DOM0_KERNEL}:${DOM0_KERNEL_LOAD_ADDR}:multiboot,kernel"
+
+# Qemuboot for Arm uses the QB_DEFAULT_KERNEL method to load Xen
+# and the device loader option for the dom0 kernel:
+QB_OPT_APPEND:append:aarch64 = " \
+ -device loader,file=${DOM0_KERNEL},addr=${DOM0_KERNEL_LOAD_ADDR} \
+ "
+QB_OPT_APPEND:append:qemuarm = " \
+ -device loader,file=${DOM0_KERNEL},addr=${DOM0_KERNEL_LOAD_ADDR} \
+ "
+QB_DEFAULT_KERNEL:qemuarm64 = "xen-${MACHINE}"
+QB_DEFAULT_KERNEL:qemuarm = "xen-${MACHINE}"
+
+# 64-bit Arm: gic version 3
+QB_MACHINE:qemuarm64 = "-machine virt,gic-version=3 -machine virtualization=true"
+# 32-bit Arm: highmem=off
+# Disable highmem so that qemu does not use highmem IO regions that end up
+# being placed at the 256GiB mark (e.g. ECAM space) and can cause issues in Xen.
+QB_MACHINE:qemuarm = "-machine virt,highmem=off -machine virtualization=true"
+
+# Increase the default qemu memory allocation to allow for the hypervisor.
+# Use a weak assignment to allow for change of default and override elsewhere.
+QB_MEM_VALUE ??= "512"
+QB_MEM = "-m ${QB_MEM_VALUE}"
+
+# 64-bit Arm: qemuboot with a device tree binary
+QB_DTB:qemuarm64 = "${IMAGE_NAME}.qemuboot.dtb"
+QB_DTB_LINK:qemuarm64 = "${IMAGE_LINK_NAME}.qemuboot.dtb"
+
+# 32-bit Arm: qemuboot with a device tree binary
+QB_DTB:qemuarm = "${IMAGE_NAME}.qemuboot.dtb"
+QB_DTB_LINK:qemuarm = "${IMAGE_LINK_NAME}.qemuboot.dtb"
diff --git a/classes/qemuboot-xen-dtb.bbclass b/classes/qemuboot-xen-dtb.bbclass
new file mode 100644
index 00000000..d43d23a3
--- /dev/null
+++ b/classes/qemuboot-xen-dtb.bbclass
@@ -0,0 +1,210 @@
+# Enable booting Xen with qemuboot / runqemu: generate device tree
+#
+# Copyright (c) 2021 Star Lab Corp. All rights reserved.
+#
+# Author: Christopher Clark <christopher.clark@starlab.io>
+
+# Interface variables:
+#
+# QB_DTB : defined in qemuboot.bbclass.
+# If set, this class will generate the specified device tree file.
+#
+# QB_XEN_CMDLINE_EXTRA :
+# A string to be appended to the default Xen hypervisor boot command line,
+# for supplying Xen boot options.
+# The device tree that this bbclass generates will contain Xen command
+# line options to connect the Xen console to the Qemu serial port.
+#
+# QB_XEN_DOMAIN_MODULES :
+# A space-separated list of colon-separated entries:
+# "<file for the module>:<load memory address>:<module compatibility string>"
+#
+# QB_XEN_DOM0_BOOTARGS :
+# A string for specifying Dom0 boot options for the Xen section of the device
+# tree.
+#
+# QB_XEN_DTB_TASK_DEPENDS :
+# The task dependencies for the DTB generation. A default is provided.
+#
+# See also: Other QB_ variables as defined by the qemuboot.bbclass.
+
+write_lops_xen_section() {
+ DOM0_BOOTARGS="$2"
+ cat <<EOF >"$1"
+/dts-v1/;
+/ {
+ compatible = "system-device-tree-v1";
+ lops {
+ /* Connect the Xen console to Qemu dtuart */
+ lop_1 {
+ compatible = "system-device-tree-v1,lop,code-v1";
+ code = "
+ chosen = node.tree['/chosen']
+ stdout_path = str(chosen['stdout-path'].value[0])
+ chosen['xen,xen-bootargs'] = \
+ 'console=dtuart dtuart=%s' % stdout_path
+ return True
+ ";
+ };
+ lop_2 {
+ compatible = "system-device-tree-v1,lop,modify";
+ modify = "/chosen:xen,dom0-bootargs:${DOM0_BOOTARGS}";
+ };
+ lop_3 {
+ compatible = "system-device-tree-v1,lop,modify";
+ modify = "/chosen:#address-cells:<1>";
+ };
+ lop_4 {
+ compatible = "system-device-tree-v1,lop,modify";
+ modify = "/chosen:#size-cells:<1>";
+ };
+ };
+};
+EOF
+}
+
+write_lop_add_to_xen_cmdline() {
+ EXTRA_XEN_BOOTARGS="$2"
+ cat <<EOF >"$1"
+/dts-v1/;
+/ {
+ compatible = "system-device-tree-v1";
+ lops {
+ lop_1 {
+ compatible = "system-device-tree-v1,lop,code-v1";
+ options = "extra_xen_bootargs:${EXTRA_XEN_BOOTARGS}";
+ code = "
+ chosen = node.tree['/chosen']
+ xen_bootargs = str(chosen['xen,xen-bootargs'].value)
+ chosen['xen,xen-bootargs'] = '%s %s' % \
+ (xen_bootargs, extra_xen_bootargs)
+ return True
+ ";
+ };
+ };
+};
+EOF
+}
+
+write_lop_add_chosen_module() {
+ ADDR="$2"
+ SIZE="$3"
+ MODULE_TYPE="$4"
+ cat <<EOF >"$1"
+/dts-v1/;
+/ {
+ compatible = "system-device-tree-v1";
+ lops {
+ lop_1 {
+ compatible = "system-device-tree-v1,lop,add";
+ node_src = "module@${ADDR}";
+ node_dest = "/chosen/module@${ADDR}";
+
+ module@${ADDR} {
+ compatible = "multiboot,module", "${MODULE_TYPE}";
+ reg = <${ADDR} ${SIZE}>;
+ };
+ };
+ };
+};
+EOF
+}
+
+generate_xen_qemuboot_dtb() {
+ # First: invoke qemu to generate an initial device tree.
+ # Parameters supplied here inspired by inspection of:
+ # runqemu "${IMAGE_BASENAME}" nographic slirp \
+ # qemuparams='-dtb "" -machine dumpdtb=${B}/qemu-dumped.dtb'
+ ${QB_SYSTEM_NAME} \
+ -device qemu-xhci \
+ -device usb-tablet \
+ -device usb-kbd \
+ ${QB_MACHINE} \
+ ${QB_CPU} \
+ ${QB_SMP} \
+ ${QB_MEM} \
+ -nographic \
+ -serial mon:stdio \
+ -machine "dumpdtb=${B}/qemu-dumped.dtb"
+
+ # Lopper generates temporary files in cwd, so run it within ${B}
+ cd "${B}"
+ write_lops_xen_section "${B}/lop-insert-xen-section.dts" \
+ "${QB_XEN_DOM0_BOOTARGS}"
+
+ write_lop_add_to_xen_cmdline "${B}/lop-xen-cmdline.dts" \
+ "${QB_XEN_CMDLINE_EXTRA}"
+
+ if [ -z "${QB_XEN_DOMAIN_MODULES}" ]; then
+ bbwarn "No domain modules: please set QB_XEN_DOMAIN_MODULES"
+ fi
+
+ for DOMAIN_MODULE in ${QB_XEN_DOMAIN_MODULES}
+ do
+ MODULE_FILE="$(echo ${DOMAIN_MODULE} | cut -f1 -d:)"
+ ADDR="$(echo ${DOMAIN_MODULE} | cut -f2 -d:)"
+ MODULE_TYPE="$(echo ${DOMAIN_MODULE} | cut -f3 -d:)"
+ RESOLVED_FILE="$(readlink -f ${MODULE_FILE})"
+ SIZE=$(printf '0x%x\n' $(stat -c '%s' "${RESOLVED_FILE}"))
+ [ "x${SIZE}" != "x0x0" ] || bbfatal No module: "${MODULE_FILE}"
+ write_lop_add_chosen_module "${B}/lop-add-module-${ADDR}.dts" \
+ "${ADDR}" "${SIZE}" "${MODULE_TYPE}"
+ LOP_MODULE_ARGS="${LOP_MODULE_ARGS} -i ${B}/lop-add-module-${ADDR}.dts"
+ done
+
+ QEMUBOOT_DTB="${IMGDEPLOYDIR}/${QB_DTB}"
+ QEMUBOOT_DTB_LINK="${IMGDEPLOYDIR}/${QB_DTB_LINK}"
+
+ lopper --werror --verbose \
+ -i "${B}/lop-insert-xen-section.dts" \
+ -i "${B}/lop-xen-cmdline.dts" \
+ ${LOP_MODULE_ARGS} \
+ -f -o "${QEMUBOOT_DTB}" \
+ "${B}/qemu-dumped.dtb"
+
+ # To assist debugging:
+ dtc -I dtb -O dts -o "${B}/output.dts" "${QEMUBOOT_DTB}"
+
+ if [ "${QEMUBOOT_DTB_LINK}" != "${QEMUBOOT_DTB}" ] ; then
+ if [ -e "${QEMUBOOT_DTB_LINK}" ] ; then
+ rm "${QEMUBOOT_DTB_LINK}"
+ fi
+ ln -s "${QB_DTB}" "${QEMUBOOT_DTB_LINK}"
+ fi
+}
+
+do_write_xen_qemuboot_dtb() {
+ # Not all architectures qemuboot with a device tree binary, so check
+ # to see if one is needed. This allows this bbclass file to be used
+ # in the same image recipe for multiple architectures.
+ if [ -n "${QB_DTB}" ] && [ -n "${QB_SYSTEM_NAME}" ] ; then
+ generate_xen_qemuboot_dtb
+ fi
+}
+
+addtask do_write_xen_qemuboot_dtb after do_write_qemuboot_conf before do_image
+# Task dependency:
+# An expected common case is that the kernel for at least one of the initial
+# domains (eg. dom0) is deployed from the virtual/kernel recipe, so
+# add virtual/kernel:do_deploy as a task dependency here since the kernel size
+# needs to be known for generating the device tree.
+# Dependencies are only introduced if a device tree will be generated.
+QB_XEN_DTB_TASK_DEPENDS ?= " \
+ ${@[ ' \
+ qemu-helper-native:do_populate_sysroot \
+ lopper-native:do_populate_sysroot \
+ dtc-native:do_populate_sysroot \
+ virtual/kernel:do_deploy \
+ ', ''][d.getVar('QB_DTB') == '' or d.getVar('QB_DTB') is None]} \
+ "
+do_write_xen_qemuboot_dtb[depends] = "${QB_XEN_DTB_TASK_DEPENDS}"
+
+def qemuboot_dtb_vars(d):
+ build_vars = ['MACHINE', 'TUNE_ARCH', 'DEPLOY_DIR_IMAGE',
+ 'KERNEL_IMAGETYPE', 'IMAGE_NAME', 'IMAGE_LINK_NAME',
+ 'STAGING_DIR_NATIVE', 'STAGING_BINDIR_NATIVE',
+ 'STAGING_DIR_HOST', 'SERIAL_CONSOLES']
+ return build_vars + [k for k in d.keys() if k.startswith('QB_')]
+
+do_write_qemuboot_dtb[vardeps] += "${@' '.join(qemuboot_dtb_vars(d))}"
+do_write_qemuboot_dtb[vardepsexclude] += "TOPDIR"
diff --git a/conf/distro/include/k8s-versions.inc b/conf/distro/include/k8s-versions.inc
new file mode 100644
index 00000000..b4ec6b63
--- /dev/null
+++ b/conf/distro/include/k8s-versions.inc
@@ -0,0 +1 @@
+# placeholder for k8s specific versions
diff --git a/conf/distro/include/meta-virt-container.inc b/conf/distro/include/meta-virt-container.inc
new file mode 100644
index 00000000..c3ac8394
--- /dev/null
+++ b/conf/distro/include/meta-virt-container.inc
@@ -0,0 +1,40 @@
+# These variables represent groupings of functionality in the CNCF
+# landscape. In particular, they are areas where there is a choice
+# between more than one implementation or an area where abstraction
+# is beneficial.
+#
+# The contents of the variables are are runtime components that
+# recipes may use for RDEPENDS.
+#
+# Build dependencies are not typically flexible, so do not currently
+# have DEPENDS equivalents for the components (i.e. DEPENDS on runc
+# versus crun).
+#
+# Distro features such as kubernetes or other container stacks
+# can be used to set different defaults for these variables.
+#
+# Note: these are "global" values, since they represent choices.
+# If more than of a grouping is required on target, then the variable
+# can be appended or set to multiple values. That being said, Recipes
+# should generally agree on the values, hence the global namespace.
+# Recipe specific choices can still be done, but they risk
+# conflicting on target or causing runtime issues / errors.
+#
+
+## CNCF "components"
+
+# engines: docker-ce/docker-moby, virtual-containerd, cri-o, podman
+VIRTUAL-RUNTIME_container_engine ??= "podman"
+# runtime: runc, crun, runv, runx
+VIRTUAL-RUNTIME_container_runtime ??= "virtual-runc"
+# networking: cni, netavark
+VIRTUAL-RUNTIME_container_networking ??= "cni"
+# dns: cni, aardvark-dns
+VIRTUAL-RUNTIME_container_dns ??= "cni"
+# orchestration: k8s, k3s
+VIRTUAL-RUNTIME_container_orchestration ??= "k3s"
+
+## Kubernetes terminology "components"
+
+VIRTUAL-RUNTIME_cri ??= "virtual-containerd"
+VIRTUAL-RUNTIME_cni ??= "cni"
diff --git a/conf/distro/include/meta-virt-default-versions.inc b/conf/distro/include/meta-virt-default-versions.inc
index 27e7b90d..b62ec38d 100644
--- a/conf/distro/include/meta-virt-default-versions.inc
+++ b/conf/distro/include/meta-virt-default-versions.inc
@@ -1,9 +1,4 @@
# Meta-virtuailization PREFERED_VERSION
-PREFERRED_VERSION_python-blinker = "1.3"
-PREFERRED_VERSION_python-gevent = "1.0.1"
-PREFERRED_VERSION_python-m2crypto = "0.22.3"
-PREFERRED_VERSION_python-pyyaml = "3.11"
-PREFERRED_VERSION_python-redis = "2.10.3"
-PREFERRED_VERSION_python-sqlalchemy = "1.1.5"
-PREFERRED_VERSION_python-werkzeug = "0.10.4"
+PREFERRED_VERSION_xen ?= "4.18+stable%"
+PREFERRED_VERSION_xen-tools ?= "4.18+stable%"
diff --git a/conf/distro/include/meta-virt-xen.inc b/conf/distro/include/meta-virt-xen.inc
new file mode 100644
index 00000000..5fbb57f8
--- /dev/null
+++ b/conf/distro/include/meta-virt-xen.inc
@@ -0,0 +1,15 @@
+# Make sure Xen mode is enabled in qemu
+PACKAGECONFIG:append:pn-qemu = " xen"
+
+# For builds for ARM platforms, enable fdt
+PACKAGECONFIG:append:pn-qemu:arm = " fdt"
+PACKAGECONFIG:append:pn-qemu:aarch64 = " fdt"
+
+# Xen on Raspberry Pi 4 64-bit support
+XEN_RPI4_64_CONFIG_PATH ??= \
+ 'dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc'
+include ${@bb.utils.contains('MACHINE', 'raspberrypi4-64', \
+ '${XEN_RPI4_64_CONFIG_PATH}', '', d)}
+
+# Set serial for working qemuboot console
+SERIAL_CONSOLES:qemuarm64 ?= "115200;ttyAMA0"
diff --git a/conf/distro/include/virt_security_flags.inc b/conf/distro/include/virt_security_flags.inc
index f4c288b8..3644d822 100644
--- a/conf/distro/include/virt_security_flags.inc
+++ b/conf/distro/include/virt_security_flags.inc
@@ -1,5 +1,5 @@
# Build errors with the pie options enabled
-SECURITY_CFLAGS_pn-libvirt = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-libvirt = "${SECURITY_NO_PIE_CFLAGS}"
# This has text relco errors with the pie options enabled
-SECURITY_CFLAGS_pn-lxc = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-lxc = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/conf/layer.conf b/conf/layer.conf
index dfca6dac..7c8e3701 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -11,10 +11,17 @@ BBFILE_PRIORITY_virtualization-layer = "8"
# Custom licenses used by some packages in this layer
LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
+BBFILES_DYNAMIC += " \
+ raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bb \
+ raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bbappend \
+ xilinx:${LAYERDIR}/dynamic-layers/xilinx/*/*/*.bb \
+ xilinx:${LAYERDIR}/dynamic-layers/xilinx/*/*/*.bbappend \
+"
+
# This should only be incremented on significant changes that will
# cause compatibility issues with other layers
LAYERVERSION_virtualization-layer = "1"
-LAYERSERIES_COMPAT_virtualization-layer = "thud warrior zeus"
+LAYERSERIES_COMPAT_virtualization-layer = "nanbield scarthgap"
LAYERDEPENDS_virtualization-layer = " \
core \
openembedded-layer \
@@ -32,12 +39,26 @@ LAYERRECOMMENDS_virtualization-layer = " \
# Override security flags
require conf/distro/include/virt_security_flags.inc
-PREFERRED_PROVIDER_virtual/runc ?= "runc-docker"
+PREFERRED_PROVIDER_virtual/runc ?= "runc-opencontainers"
PREFERRED_PROVIDER_virtual/containerd ?= "containerd-opencontainers"
-PREFERRED_PROVIDER_virtual/docker ?= "docker-ce"
+PREFERRED_PROVIDER_virtual/docker ?= "docker-moby"
# Sanity check for meta-virtualization layer.
# Setting SKIP_META_VIRT_SANITY_CHECK to "1" would skip the bbappend files check.
INHERIT += "sanity-meta-virt"
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'meta-virt-default-versions.inc', '', d)}
+# We need to load the meta-virt config components, only if "virtualization"
+# is in the distro features. Since we don't know the distro flags during
+# layer.conf load time, we delay using a special bbclass that simply includes
+# the META_VIRT_CONFIG_PATH file, and likewise for the Xen and k8s configs
+META_VIRT_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/meta-virt-default-versions.inc"
+META_VIRT_CONTAINER_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/meta-virt-container.inc"
+META_VIRT_XEN_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/meta-virt-xen.inc"
+K8S_CONFIG_PATH = "${LAYERDIR}/conf/distro/include/k8s-versions.inc"
+USER_CLASSES:append = " meta-virt-cfg"
+USER_CLASSES:append = " meta-virt-container-cfg"
+USER_CLASSES:append = " meta-virt-k8s-cfg"
+USER_CLASSES:append = " meta-virt-xen-cfg"
+USER_CLASSES:append = " meta-virt-hosts"
+
+HOSTTOOLS_NONFATAL += "getent"
diff --git a/conf/multiconfig/container.conf b/conf/multiconfig/container.conf
new file mode 100644
index 00000000..f1255521
--- /dev/null
+++ b/conf/multiconfig/container.conf
@@ -0,0 +1,3 @@
+DISTRO = "poky"
+MACHINE = "qemux86-64"
+# TMPDIR = "container-tmp"
diff --git a/docs/00-INDEX b/docs/00-INDEX
index a2ffd99f..6659fbee 100644
--- a/docs/00-INDEX
+++ b/docs/00-INDEX
@@ -10,3 +10,9 @@ alphabetical order as well.
openvswitch.txt
- example on how to setup openvswitch with qemu/kvm.
+
+podman.txt
+ - documentation on podman container engine integration.
+
+xvisor.txt
+ - example on how to setup Xvisor for RISC-V QEMU.
diff --git a/docs/podman.txt b/docs/podman.txt
new file mode 100644
index 00000000..66a69b3c
--- /dev/null
+++ b/docs/podman.txt
@@ -0,0 +1,14 @@
+Podman
+======
+
+Rootless mode
+-------------
+
+Podman is a daemonless container engine that has as one of its features the
+ability to run in rootless mode. This requires a set of configurations and
+additional components. The OE/Yocto integration configures podman with this
+support disabled by default. This can be changed via configuration files
+(distro, local.conf, etc.) or bbappends using the `PACKAGECONFIG` variable.
+
+To enable rootless support, add `rootless` to the `PACKAGECONFIG` podman
+recipe variable.
diff --git a/docs/podman.txt.license b/docs/podman.txt.license
new file mode 100644
index 00000000..c7348705
--- /dev/null
+++ b/docs/podman.txt.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: Huawei Inc.
+
+SPDX-License-Identifier: MIT
diff --git a/docs/xvisor.txt b/docs/xvisor.txt
new file mode 100644
index 00000000..6f31f228
--- /dev/null
+++ b/docs/xvisor.txt
@@ -0,0 +1,16 @@
+Simple setup for starting Xvisor on RISC-V QEMU
+===============================================
+
+This is a simple starting point for running Xvisor on RISC-V QEMU.
+
+Currently meta-virtualisation supports running Xvisor on QEMU using the v0.5.0 RISC-V Hypervisor extensions.
+
+Support is still experimental.
+
+Build the images
+================
+$ MACHINE=qemuriscv64 bitbake xvisor-image-minimal
+
+Run the images
+==============
+$ MACHINE=qemuriscv64 runqemu xvisor-image-minimal slirp nographic
diff --git a/dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc b/dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc
new file mode 100644
index 00000000..2d5a167c
--- /dev/null
+++ b/dynamic-layers/raspberrypi/conf/distro/include/xen-raspberrypi4-64.inc
@@ -0,0 +1,25 @@
+# Xen on Raspberry Pi 4 settings
+
+# Xen uses u-boot for configuration and uses the uart
+RPI_USE_U_BOOT = "1"
+ENABLE_UART = "1"
+
+# Build the bootable SD card image
+IMAGE_CLASSES:append = " sdcard_image-rpi"
+IMAGE_FSTYPES:append = " rpi-sdimg"
+
+# Add Xen to the bootable SD card image
+RPI_SDIMG_EXTRA_DEPENDS:append = " xen:do_deploy"
+DEPLOYPAYLOAD = "xen-${MACHINE}:xen"
+
+# We need the GIC enabled for Xen to work
+RPI_EXTRA_CONFIG:append = "\nenable_gic=1"
+
+# Increase boot partition for space for kernel and Xen
+BOOT_SPACE = "61440"
+
+# Override the meta-raspberrypi default kernel preference
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
+KERNEL_DEVICETREE ?= "broadcom/bcm2711-rpi-4-b.dtb"
+
+PREFERRED_PROVIDER_u-boot-default-script ?= "xen-rpi-u-boot-scr"
diff --git a/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in b/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in
new file mode 100644
index 00000000..98742200
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in
@@ -0,0 +1,58 @@
+# Set the fdt address to what came from the GPU, so we can edit it
+fdt addr ${fdt_addr}
+
+# Pull the bootargs that the GPU has edited
+fdt get value bootargs /chosen bootargs
+
+# Set module load addresses
+setenv xen_loadaddr "0x00200000"
+setenv kernel_loadaddr "0x00400000"
+
+# Add some space to the fdt so we can edit it
+fdt resize 0x1000
+echo Add boot arguments for Xen
+fdt set /chosen xen,xen-bootargs "console=dtuart dtuart=/soc/serial@7e215040 dom0_mem='@@RPI_DOM0_MEM@@' @@RPI_DEBUG_XEN_ARGS@@"
+
+echo Add a dom0 node to chosen to put Linux boot information in
+fdt mknode /chosen dom0
+
+echo Set this for the Linux boot command
+fdt set /chosen/dom0 compatible "multiboot,module"
+
+# Tell Xen where PCI is
+fdt set /scb/pcie@7d500000 device_type "pci"
+# Workaround to fix:
+# "Unable to retrieve address 0 for /scb/pcie@7d500000/pci@1,0/usb@1,0"
+fdt rm /scb/pcie@7d500000/pci@1,0/usb@1,0
+
+echo Delay to allow the MMC card to be ready
+sleep 1
+
+# Retrieve PARTUUID for the rootfs partition of the sdcard
+part uuid mmc 1:2 rootfs_partuuid
+
+echo Add boot arguments for dom0
+setenv dom0_bootargs "console=hvc0 earlycon=xenboot debug root=PARTUUID=${rootfs_partuuid} rootwait"
+fdt set /chosen xen,dom0-bootargs \"${dom0_bootargs}\"
+
+echo Load Xen into memory
+fatload mmc 1:1 ${xen_loadaddr} xen
+echo Xen loaded, size: 0x$filesize
+
+echo Load Linux kernel into memory
+fatload mmc 1:1 ${kernel_loadaddr} Image
+setenv kernel_size 0x$filesize
+echo Linux loaded, size: 0x$filesize
+
+echo Set the address and size for the Linux kernel so Xen can pick it up
+fdt set /chosen/dom0 reg <${kernel_loadaddr} ${kernel_size}>
+
+# Define the size and address cells
+fdt set /chosen '#size-cells' <1>
+fdt set /chosen '#address-cells' <1>
+
+# Display the chosen fdt section - can be important for debugging
+fdt print /chosen
+
+echo Boot Xen
+booti ${xen_loadaddr} - ${fdt_addr}
diff --git a/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb b/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb
new file mode 100644
index 00000000..87619d01
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/xen-rpi-u-boot-scr.bb
@@ -0,0 +1,34 @@
+SUMMARY = "U-boot boot script for Xen on Raspberry Pi 4"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+COMPATIBLE_MACHINE = "^raspberrypi4-64$"
+
+DEPENDS = "u-boot-mkimage-native"
+
+INHIBIT_DEFAULT_DEPS = "1"
+
+SRC_URI = "file://boot.cmd.xen.in"
+
+RPI_DOM0_MEM ??= "256M"
+RPI_DEBUG_XEN_ARGS ??= "sync_console bootscrub=0"
+
+do_compile() {
+ sed -e 's/@@KERNEL_IMAGETYPE@@/${KERNEL_IMAGETYPE}/' \
+ -e 's/@@KERNEL_BOOTCMD@@/${KERNEL_BOOTCMD}/' \
+ -e 's/@@RPI_DOM0_MEM@@/${RPI_DOM0_MEM}/' \
+ -e 's/@@RPI_DEBUG_XEN_ARGS@@/${RPI_DEBUG_XEN_ARGS}/' \
+ "${WORKDIR}/boot.cmd.xen.in" > "${WORKDIR}/boot.cmd"
+
+ mkimage -A ${UBOOT_ARCH} -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
+}
+
+inherit kernel-arch deploy nopackages
+
+do_deploy() {
+ install -d ${DEPLOYDIR}
+ install -m 0644 boot.scr ${DEPLOYDIR}
+}
+
+addtask do_deploy after do_compile before do_build
+
+PROVIDES += "u-boot-default-script"
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_6.6.bbappend b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_6.6.bbappend
new file mode 100644
index 00000000..2e2f92b6
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_6.6.bbappend
@@ -0,0 +1,6 @@
+# Enable use of the linux-yocto kernel for the Raspberry Pi 4
+KBRANCH:raspberrypi4-64 ?= "v6.6/standard/bcm-2xxx-rpi"
+KMACHINE:raspberrypi4-64 ?= "bcm-2xxx-rpi4"
+COMPATIBLE_MACHINE:raspberrypi4-64 = "(raspberrypi4-64)"
+
+require linux-yocto_xen-rpi.inc
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc
new file mode 100644
index 00000000..e8c120d4
--- /dev/null
+++ b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-yocto_xen-rpi.inc
@@ -0,0 +1,6 @@
+# For a Xen-enabled distro on the Raspberry Pi, override the contents of cmdline.txt
+# with Xen-on-ARM-specific command line options
+
+DEFAULT_CMDLINE := "${CMDLINE}"
+XEN_LINUX_CMDLINE ?= "console=hvc0 clk_ignore_unused earlycon=xenboot debug root=/dev/mmcblk0p2 rootwait"
+CMDLINE = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${XEN_LINUX_CMDLINE}', '${DEFAULT_CMDLINE}', d)}"
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/device-tree.bbappend b/dynamic-layers/xilinx/recipes-bsp/device-tree/device-tree.bbappend
new file mode 100644
index 00000000..e2358262
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/device-tree.bbappend
@@ -0,0 +1,19 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+ENABLE_XEN_DTSI ?= ""
+ENABLE_XEN_QEMU_DTSI ?= ""
+
+XEN_EXTRA_OVERLAYS = ""
+XEN_EXTRA_QEMU_OVERLAYS = ""
+
+XEN_EXTRA_OVERLAYS:zynqmp = "zynqmp-xen.dtsi"
+XEN_EXTRA_QEMU_OVERLAYS:zynqmp = "zynqmp-xen.dtsi zynqmp-xen-qemu.dtsi"
+
+XEN_EXTRA_OVERLAYS:versal = "versal-xen.dtsi"
+XEN_EXTRA_QEMU_OVERLAYS:versal = "versal-xen.dtsi versal-xen-qemu.dtsi"
+
+XEN_EXTRA_OVERLAYS:versal-net = "versal-net-xen.dtsi"
+XEN_EXTRA_QEMU_OVERLAYS:versal-net = "versal-net-xen.dtsi versal-net-xen-qemu.dtsi"
+
+EXTRA_OVERLAYS:append = "${@' ${XEN_EXTRA_OVERLAYS}' if d.getVar('ENABLE_XEN_DTSI') == '1' else ''}"
+EXTRA_OVERLAYS:append = "${@' ${XEN_EXTRA_QEMU_OVERLAYS}' if d.getVar('ENABLE_XEN_QEMU_DTSI') == '1' else ''}"
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen-qemu.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen-qemu.dtsi
new file mode 100644
index 00000000..336d7a25
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen-qemu.dtsi
@@ -0,0 +1,2 @@
+/ {
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen.dtsi
new file mode 100644
index 00000000..7da1f9f1
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-net-xen.dtsi
@@ -0,0 +1,67 @@
+&smmu {
+ status = "okay";
+};
+
+&adma0 {
+ iommus = <&smmu 0x210>;
+};
+
+&adma1 {
+ iommus = <&smmu 0x212>;
+};
+
+&adma2 {
+ iommus = <&smmu 0x214>;
+};
+
+&adma3 {
+ iommus = <&smmu 0x216>;
+};
+
+&adma4 {
+ iommus = <&smmu 0x218>;
+};
+
+&adma5 {
+ iommus = <&smmu 0x21a>;
+};
+
+&adma6 {
+ iommus = <&smmu 0x21c>;
+};
+
+&adma7 {
+ iommus = <&smmu 0x21e>;
+};
+
+&dwc3_0 {
+ iommus = <&smmu 0x230>;
+};
+
+&dwc3_1 {
+ iommus = <&smmu 0x232>;
+};
+
+&gem0 {
+ iommus = <&smmu 0x234>;
+};
+
+&gem1 {
+ iommus = <&smmu 0x235>;
+};
+
+&sdhci0 {
+ iommus = <&smmu 0x242>;
+};
+
+&sdhci1 {
+ iommus = <&smmu 0x243>;
+};
+
+&qspi {
+ iommus = <&smmu 0x244>;
+};
+
+&ospi {
+ iommus = <&smmu 0x245>;
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen-qemu.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen-qemu.dtsi
new file mode 100644
index 00000000..336d7a25
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen-qemu.dtsi
@@ -0,0 +1,2 @@
+/ {
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen.dtsi
new file mode 100644
index 00000000..6782e925
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/versal-xen.dtsi
@@ -0,0 +1,59 @@
+&smmu {
+ status = "okay";
+};
+
+&gem0 {
+ iommus = <&smmu 0x234>;
+};
+
+&gem1 {
+ iommus = <&smmu 0x235>;
+};
+
+&dwc3_0 {
+ iommus = <&smmu 0x230>;
+};
+
+&qspi {
+ iommus = <&smmu 0x244>;
+};
+
+&lpd_dma_chan0 {
+ iommus = <&smmu 0x210>;
+};
+
+&lpd_dma_chan1 {
+ iommus = <&smmu 0x212>;
+};
+
+&lpd_dma_chan2 {
+ iommus = <&smmu 0x214>;
+};
+
+&lpd_dma_chan3 {
+ iommus = <&smmu 0x216>;
+};
+
+&lpd_dma_chan4 {
+ iommus = <&smmu 0x218>;
+};
+
+&lpd_dma_chan5 {
+ iommus = <&smmu 0x21a>;
+};
+
+&lpd_dma_chan6 {
+ iommus = <&smmu 0x21c>;
+};
+
+&lpd_dma_chan7 {
+ iommus = <&smmu 0x21e>;
+};
+
+&sdhci0 {
+ iommus = <&smmu 0x242>;
+};
+
+&sdhci1 {
+ iommus = <&smmu 0x243>;
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen-qemu.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen-qemu.dtsi
new file mode 100644
index 00000000..336d7a25
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen-qemu.dtsi
@@ -0,0 +1,2 @@
+/ {
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen.dtsi b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen.dtsi
new file mode 100644
index 00000000..3d75be65
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/device-tree/files/zynqmp-xen.dtsi
@@ -0,0 +1,123 @@
+&smmu {
+ status = "okay";
+};
+
+&gem0 {
+ iommus = <&smmu 0x874>;
+};
+
+&gem1 {
+ iommus = <&smmu 0x875>;
+};
+
+&gem2 {
+ iommus = <&smmu 0x876>;
+};
+
+&gem3 {
+ iommus = <&smmu 0x877>;
+};
+
+&dwc3_0 {
+ iommus = <&smmu 0x860>;
+};
+
+&dwc3_1 {
+ iommus = <&smmu 0x861>;
+};
+
+&qspi {
+ iommus = <&smmu 0x873>;
+};
+
+&lpd_dma_chan1 {
+ iommus = <&smmu 0x868>;
+};
+
+&lpd_dma_chan2 {
+ iommus = <&smmu 0x869>;
+};
+
+&lpd_dma_chan3 {
+ iommus = <&smmu 0x86a>;
+};
+
+&lpd_dma_chan4 {
+ iommus = <&smmu 0x86b>;
+};
+
+&lpd_dma_chan5 {
+ iommus = <&smmu 0x86c>;
+};
+
+&lpd_dma_chan6 {
+ iommus = <&smmu 0x86d>;
+};
+
+&lpd_dma_chan7 {
+ iommus = <&smmu 0x86e>;
+};
+
+&lpd_dma_chan8 {
+ iommus = <&smmu 0x86f>;
+};
+
+&fpd_dma_chan1 {
+ iommus = <&smmu 0x14e8>;
+};
+
+&fpd_dma_chan2 {
+ iommus = <&smmu 0x14e9>;
+};
+
+&fpd_dma_chan3 {
+ iommus = <&smmu 0x14ea>;
+};
+
+&fpd_dma_chan4 {
+ iommus = <&smmu 0x14eb>;
+};
+
+&fpd_dma_chan5 {
+ iommus = <&smmu 0x14ec>;
+};
+
+&fpd_dma_chan6 {
+ iommus = <&smmu 0x14ed>;
+};
+
+&fpd_dma_chan7 {
+ iommus = <&smmu 0x14ee>;
+};
+
+&fpd_dma_chan8 {
+ iommus = <&smmu 0x14ef>;
+};
+
+&sdhci0 {
+ iommus = <&smmu 0x870>;
+};
+
+&sdhci1 {
+ iommus = <&smmu 0x871>;
+};
+
+&nand0 {
+ iommus = <&smmu 0x872>;
+};
+
+&pcie {
+ iommus = <&smmu 0x4d0>;
+};
+
+&zynqmp_dpsub {
+ iommus = <&smmu 0xce3>;
+};
+
+&zynqmp_dpdma {
+ iommus = <&smmu 0xce4>;
+};
+
+&sata {
+ iommus = <&smmu 0x4c0>, <&smmu 0x4c1>, <&smmu 0x4c2>, <&smmu 0x4c3>;
+};
diff --git a/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr.bbappend b/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr.bbappend
new file mode 100644
index 00000000..ae847cbc
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr.bbappend
@@ -0,0 +1,2 @@
+# Include xen-boot-cmd.inc only if xen distro features is enabled.
+include ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen-boot-cmd.inc', '', d)}
diff --git a/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.xen b/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.xen
new file mode 100644
index 00000000..25e5842c
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/u-boot/u-boot-xlnx-scr/boot.cmd.xen
@@ -0,0 +1,80 @@
+# This is a boot script for U-Boot with Xen parameters used by yocto machine
+# configuration file.
+# Generate boot.scr:
+# mkimage -c none -A arm -T script -d boot.cmd.xen boot.scr
+#
+################
+xen_name=@@XEN_IMAGE_NAME@@
+kernel_name=@@KERNEL_IMAGE@@
+rootfs_name=@@RAMDISK_IMAGE@@
+@@PRE_BOOTENV@@
+
+for boot_target in ${boot_targets};
+do
+ echo "Trying to load boot images from ${boot_target}"
+ if test "${boot_target}" = "jtag" ; then
+ tftpboot @@KERNEL_LOAD_ADDRESS@@ ${kernel_name}
+ setenv kernel_size 0x$filesize;
+ tftpboot @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name}
+ setenv ramdisk_size 0x$filesize;
+ tftpboot @@XEN_LOAD_ADDRESS@@ ${xen_name}
+ tftpboot @@DEVICETREE_ADDRESS@@ system.dtb
+ fi
+ if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1" || test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
+ if test "${boot_target}" = "mmc0" || test "${boot_target}" = "mmc1"; then
+ setenv bootdev mmcblk${devnum}p
+ fi
+ if test "${boot_target}" = "usb0" || test "${boot_target}" = "usb1"; then
+ setenv bootdev sda
+ fi
+ echo "Checking for /${xen_name}"
+ if test -e ${devtype} ${devnum}:${distro_bootpart} /${xen_name}; then
+ echo "Loading ${xen_name}";
+ fatload ${devtype} ${devnum}:${distro_bootpart} @@XEN_LOAD_ADDRESS@@ ${xen_name};
+ fi
+ echo "Checking for /${kernel_name}"
+ if test -e ${devtype} ${devnum}:${distro_bootpart} /${kernel_name}; then
+ echo "Loading ${kernel_name}";
+ fatload ${devtype} ${devnum}:${distro_bootpart} @@KERNEL_LOAD_ADDRESS@@ ${kernel_name};
+ setenv kernel_size 0x$filesize;
+ fi
+ echo "Checking for /system.dtb"
+ if test -e ${devtype} ${devnum}:${distro_bootpart} /system.dtb; then
+ echo "Loading system.dtb";
+ fatload ${devtype} ${devnum}:${distro_bootpart} @@DEVICETREE_ADDRESS@@ system.dtb;
+ fi
+ echo "Checking for /${rootfs_name}"
+ if test -e ${devtype} ${devnum}:${distro_bootpart} /${rootfs_name} && test "${skip_ramdisk}" != "yes"; then
+ echo "Loading ${rootfs_name}";
+ fatload ${devtype} ${devnum}:${distro_bootpart} @@RAMDISK_IMAGE_ADDRESS@@ ${rootfs_name};
+ setenv ramdisk_size 0x$filesize;
+ fi
+ fi
+ fdt addr @@DEVICETREE_ADDRESS@@
+ fdt resize 0x1000
+ fdt get value bootargs /chosen bootargs
+ fdt set /chosen \#address-cells <0x2>
+ fdt set /chosen \#size-cells <0x2>
+ setenv xen_bootargs "console=dtuart dtuart=@@XEN_SERIAL_CONSOLES@@ dom0_mem=@@DOM0_MEM@@ dom0_max_vcpus=@@DOM0_MAX_VCPUS@@ bootscrub=0 vwfi=native @@XEN_CMDLINE_APPEND@@"
+ fdt set /chosen xen,xen-bootargs \"${xen_bootargs}\"
+
+ # Check that env $ramdisk_size is 0 or not.
+ if test -n ${ramdisk_size}; then
+ fdt mknod /chosen dom0-ramdisk
+ fdt set /chosen/dom0-ramdisk compatible "xen,linux-initrd" "xen,multiboot-module" "multiboot,module"
+ fdt set /chosen/dom0-ramdisk reg <0x0 @@RAMDISK_IMAGE_ADDRESS@@ 0x0 ${ramdisk_size}>
+ setenv rootfs_param @@KERNEL_ROOT_RAMDISK@@
+ else
+ setenv rootfs_param @@KERNEL_ROOT_SD@@
+ fi
+
+ fdt mknod /chosen dom0
+ fdt set /chosen/dom0 compatible "xen,linux-zimage" "xen,multiboot-module" "multiboot,module"
+ fdt set /chosen/dom0 reg <0x0 @@KERNEL_LOAD_ADDRESS@@ 0x0 ${kernel_size}>
+ setenv dom0_bootargs "console=hvc0 earlycon=xen earlyprintk=xen clk_ignore_unused ${rootfs_param}"
+ fdt set /chosen xen,dom0-bootargs \"${dom0_bootargs}\"
+
+ setenv fdt_high 0xffffffffffffffff
+
+ @@KERNEL_BOOTCMD@@ @@XEN_LOAD_ADDRESS@@ - @@DEVICETREE_ADDRESS@@
+done
diff --git a/dynamic-layers/xilinx/recipes-bsp/u-boot/xen-boot-cmd.inc b/dynamic-layers/xilinx/recipes-bsp/u-boot/xen-boot-cmd.inc
new file mode 100644
index 00000000..7a4e41a6
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-bsp/u-boot/xen-boot-cmd.inc
@@ -0,0 +1,38 @@
+FILESEXTRAPATHS:append := ":${THISDIR}/u-boot-xlnx-scr"
+
+SRC_URI += "file://boot.cmd.xen"
+
+# Image offsets for Xen boot
+KERNEL_OFFSET:zynqmp ?= "0xE00000"
+KERNEL_OFFSET:versal ?= "0xE00000"
+
+DEVICETREE_OFFSET:zynqmp ?= "0xC000000"
+DEVICETREE_OFFSET:versal ?= "0xC000000"
+
+RAMDISK_OFFSET:zynqmp ?= "0x2600000"
+RAMDISK_OFFSET:versal ?= "0x2600000"
+
+XEN_OFFSET:zynqmp ?= "0xBA00000"
+XEN_OFFSET:versal ?= "0xBA00000"
+XEN_LOAD_ADDRESS ?= "${@append_baseaddr(d,d.getVar('XEN_OFFSET'))}"
+
+# If dom0-ramdisk is used for Xen boot then set RAMDISK image to cpio.gz
+XEN_IMAGE_NAME ?= "xen"
+RAMDISK_IMAGE ?= "rootfs.cpio.gz"
+
+# Set the amount of memory for dom0 depending on total available memory size(DDR).
+DOM0_MEM ?= "1500M"
+
+# Specify which UART console Xen should use. You can sepecify the devicetree
+# alias or full path to a node in the devicetree
+# XEN_SERIAL_CONSOLES ?= "serial0" or XEN_SERIAL_CONSOLES ?= "/axi/serial@ff000000"
+XEN_SERIAL_CONSOLES ?= "serial0"
+
+# Specify additional Xen paramaters which will be appended to xen-bootargs
+# This can alos be used for debugging purposes.
+# Examples: XEN_CMDLINE_APPEND ?= "sched=credit loglvl=all guest_loglvl=debug"
+XEN_CMDLINE_APPEND ?= ""
+
+# Specify the max number of vcpus for dom0
+# Example usage: DOM0_MAX_VCPUS = "2" or DOM0_MAX_VCPUS = "2-4"
+DOM0_MAX_VCPUS ?= "1"
diff --git a/dynamic-layers/xilinx/recipes-extended/xen/xen-xilinx.inc b/dynamic-layers/xilinx/recipes-extended/xen/xen-xilinx.inc
new file mode 100644
index 00000000..18215572
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-extended/xen/xen-xilinx.inc
@@ -0,0 +1,11 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+DEPENDS += "u-boot-mkimage-native"
+DEPENDS += "dtc-native"
+
+XENIMAGE_KERNEL_LOADADDRESS ?= "0x6000000"
+do_deploy:append() {
+ if [ -f ${DEPLOYDIR}/xen-${MACHINE} ]; then
+ uboot-mkimage -A arm64 -T kernel -a ${XENIMAGE_KERNEL_LOADADDRESS} -e ${XENIMAGE_KERNEL_LOADADDRESS} -C none -d ${DEPLOYDIR}/xen-${MACHINE} ${DEPLOYDIR}/xen.ub
+ fi
+}
diff --git a/dynamic-layers/xilinx/recipes-extended/xen/xen_%.bbappend b/dynamic-layers/xilinx/recipes-extended/xen/xen_%.bbappend
new file mode 100644
index 00000000..54edd1ba
--- /dev/null
+++ b/dynamic-layers/xilinx/recipes-extended/xen/xen_%.bbappend
@@ -0,0 +1 @@
+include xen-xilinx.inc
diff --git a/lib/oeqa/runtime/cases/xtf_minimal.py b/lib/oeqa/runtime/cases/xtf_minimal.py
new file mode 100644
index 00000000..6094cd92
--- /dev/null
+++ b/lib/oeqa/runtime/cases/xtf_minimal.py
@@ -0,0 +1,116 @@
+#
+# SPDX-License-Identifier: MIT
+#
+# Author: Christopher Clark
+# Copyright (c) Star Lab Corp, 2021
+#
+# Integration of the Xen Test Framework (XTF) into OpenEmbedded QA
+#
+# Since not all XTF test cases are appropriate for all test environments,
+# images or machine configurations the selection of XTF test cases to run
+# is determined by variables that can be set in an image recipe.
+#
+# * XTF_TEST_CASES_POPULATE
+# Specifies the list of queries passed to xtf-runner to populate the test list.
+# eg. 'pv64 livepatch-priv-check'
+#
+# Since the space character is meaningful and may be required within a populate clause,
+# the '|' character is used for separating multiple queries.
+# eg. 'pv64 livepatch-priv-check|pv32pae selftest'
+#
+# * XTF_TEST_CASES_SKIP
+# A space-separate list of test cases that should be skipped even if returned
+# from the queries specified in XTF_TEST_CASES_POPULATE.
+# eg. 'test-pv64-livepatch-priv-check'
+#
+# * XTF_TEST_CASES_REQUIRE
+# A space-separate list of test cases that must not be skipped even if missing
+# from the results of the queries specified in XTF_TEST_CASES_POPULATE.
+
+#----------
+# The default single test case here is chosen because it exercises XTF
+# and just Xen itself rather than any specifics of the hardware
+# (virtual or not) that Xen is running on.
+# TODO: this is an x86-specific test - revisit this choice when XTF supports Arm
+DEFAULT_POPULATE = 'pv64 livepatch-priv-check'
+#----------
+
+import json
+from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.core.decorator.oetimeout import OETimeout
+from oeqa.runtime.decorator.package import OEHasPackage
+
+def xtf_runner_exit_status(state):
+ """ Convert a xtf-runner exit code to a test result. """
+ return { 0: "SUCCESS",
+ 1: "sys.exit 1",
+ 2: "sys.exit 2",
+ 3: "SKIP",
+ 4: "ERROR",
+ 5: "FAILURE",
+ 6: "CRASH",
+ }[state]
+
+xtf_rundir = '/usr/libexec/xtf'
+
+class XTFMinimalTest(OERuntimeTestCase):
+
+ def query_xtf_cases(self, query_item):
+ (status, output) = self.target.run(
+ 'cd %s; ./xtf-runner --list %s' % \
+ (xtf_rundir, query_item))
+ self.assertTrue(status == 0, msg='XTF runner failed')
+
+ populate_case_lines = output.split('\n')
+ while '' in populate_case_lines:
+ populate_case_lines.remove('')
+
+ return list(map(lambda x: x.lstrip().rstrip(), populate_case_lines))
+
+ def get_xtf_case_list(self):
+ xtf_cases = []
+
+ populate = self.tc.td.get('XTF_TEST_CASES_POPULATE')
+ skip = self.tc.td.get('XTF_TEST_CASES_SKIP')
+ require = self.tc.td.get('XTF_TEST_CASES_REQUIRE')
+
+ if populate is None:
+ populate = DEFAULT_POPULATE
+
+ for query_item in populate.split('|'):
+ xtf_cases.extend( self.query_xtf_cases(query_item) )
+
+ if skip is not None:
+ for skip_item in skip.split(' '):
+ while skip_item in xtf_cases:
+ xtf_cases.remove(skip_item)
+
+ if require is not None:
+ for require_item in require.split(' '):
+ if require_item == '':
+ continue
+ if not require_item in xtf_cases:
+ xtf_cases.append(require_item)
+
+ self.logger.info('XTF cases: %s' % str(xtf_cases))
+ return xtf_cases
+
+ def run_xtf_case(self, xtf_case_name):
+ (status, output) = self.target.run('cd %s; ./xtf-runner %s' % \
+ (xtf_rundir, xtf_case_name))
+ self.assertTrue(status == 0, msg='XTF test %s failed: %s' % \
+ (xtf_case_name, xtf_runner_exit_status(status)))
+
+ @OETimeout(2400)
+ @OETestDepends(['ssh.SSHTest.test_ssh'])
+ @OEHasPackage(['xtf'])
+ @OEHasPackage(['xen-tools'])
+ def test_xtf_minimal(self):
+
+ xtf_cases = self.get_xtf_case_list()
+
+ for xtf_case_name in xtf_cases:
+ self.logger.debug('Running XTF case: %s' % xtf_case_name)
+
+ self.run_xtf_case(xtf_case_name)
diff --git a/recipes-containers/aardvark-dns/aardvark-dns-crates.inc b/recipes-containers/aardvark-dns/aardvark-dns-crates.inc
new file mode 100644
index 00000000..55c2f308
--- /dev/null
+++ b/recipes-containers/aardvark-dns/aardvark-dns-crates.inc
@@ -0,0 +1,286 @@
+# Autogenerated with 'bitbake -c update_crates aardvark-dns'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/addr2line/0.21.0 \
+ crate://crates.io/adler/1.0.2 \
+ crate://crates.io/android-tzdata/0.1.1 \
+ crate://crates.io/android_system_properties/0.1.5 \
+ crate://crates.io/anstream/0.6.4 \
+ crate://crates.io/anstyle/1.0.4 \
+ crate://crates.io/anstyle-parse/0.2.2 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/3.0.1 \
+ crate://crates.io/anyhow/1.0.80 \
+ crate://crates.io/async-broadcast/0.7.0 \
+ crate://crates.io/async-trait/0.1.74 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/backtrace/0.3.69 \
+ crate://crates.io/bitflags/2.4.1 \
+ crate://crates.io/bumpalo/3.14.0 \
+ crate://crates.io/bytes/1.5.0 \
+ crate://crates.io/cc/1.0.83 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/chrono/0.4.34 \
+ crate://crates.io/clap/4.4.10 \
+ crate://crates.io/clap_builder/4.4.9 \
+ crate://crates.io/clap_derive/4.4.7 \
+ crate://crates.io/clap_lex/0.6.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/concurrent-queue/2.3.0 \
+ crate://crates.io/core-foundation-sys/0.8.4 \
+ crate://crates.io/crossbeam-utils/0.8.16 \
+ crate://crates.io/data-encoding/2.4.0 \
+ crate://crates.io/deranged/0.3.9 \
+ crate://crates.io/endian-type/0.1.2 \
+ crate://crates.io/enum-as-inner/0.6.0 \
+ crate://crates.io/error-chain/0.12.4 \
+ crate://crates.io/event-listener/5.0.0 \
+ crate://crates.io/event-listener-strategy/0.5.0 \
+ crate://crates.io/form_urlencoded/1.2.0 \
+ crate://crates.io/futures-channel/0.3.29 \
+ crate://crates.io/futures-core/0.3.30 \
+ crate://crates.io/futures-io/0.3.29 \
+ crate://crates.io/futures-sink/0.3.29 \
+ crate://crates.io/futures-task/0.3.30 \
+ crate://crates.io/futures-util/0.3.30 \
+ crate://crates.io/getrandom/0.2.11 \
+ crate://crates.io/gimli/0.28.0 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.3 \
+ crate://crates.io/hickory-client/0.24.0 \
+ crate://crates.io/hickory-proto/0.24.0 \
+ crate://crates.io/hickory-server/0.24.0 \
+ crate://crates.io/hostname/0.3.1 \
+ crate://crates.io/iana-time-zone/0.1.58 \
+ crate://crates.io/iana-time-zone-haiku/0.1.2 \
+ crate://crates.io/idna/0.4.0 \
+ crate://crates.io/ipnet/2.9.0 \
+ crate://crates.io/itoa/1.0.9 \
+ crate://crates.io/js-sys/0.3.65 \
+ crate://crates.io/libc/0.2.150 \
+ crate://crates.io/log/0.4.20 \
+ crate://crates.io/match_cfg/0.1.0 \
+ crate://crates.io/memchr/2.6.4 \
+ crate://crates.io/miniz_oxide/0.7.1 \
+ crate://crates.io/mio/0.8.9 \
+ crate://crates.io/nibble_vec/0.1.0 \
+ crate://crates.io/nix/0.27.1 \
+ crate://crates.io/num-traits/0.2.17 \
+ crate://crates.io/num_cpus/1.16.0 \
+ crate://crates.io/num_threads/0.1.6 \
+ crate://crates.io/object/0.32.1 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/parking/2.2.0 \
+ crate://crates.io/percent-encoding/2.3.0 \
+ crate://crates.io/pin-project-lite/0.2.13 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/powerfmt/0.2.0 \
+ crate://crates.io/ppv-lite86/0.2.17 \
+ crate://crates.io/proc-macro2/1.0.69 \
+ crate://crates.io/quick-error/1.2.3 \
+ crate://crates.io/quote/1.0.33 \
+ crate://crates.io/radix_trie/0.2.1 \
+ crate://crates.io/rand/0.8.5 \
+ crate://crates.io/rand_chacha/0.3.1 \
+ crate://crates.io/rand_core/0.6.4 \
+ crate://crates.io/resolv-conf/0.7.0 \
+ crate://crates.io/rustc-demangle/0.1.23 \
+ crate://crates.io/serde/1.0.192 \
+ crate://crates.io/serde_derive/1.0.192 \
+ crate://crates.io/signal-hook/0.3.17 \
+ crate://crates.io/signal-hook-registry/1.4.1 \
+ crate://crates.io/slab/0.4.9 \
+ crate://crates.io/smallvec/1.11.2 \
+ crate://crates.io/socket2/0.5.5 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/2.0.39 \
+ crate://crates.io/syslog/6.1.0 \
+ crate://crates.io/thiserror/1.0.50 \
+ crate://crates.io/thiserror-impl/1.0.50 \
+ crate://crates.io/time/0.3.30 \
+ crate://crates.io/time-core/0.1.2 \
+ crate://crates.io/time-macros/0.2.15 \
+ crate://crates.io/tinyvec/1.6.0 \
+ crate://crates.io/tinyvec_macros/0.1.1 \
+ crate://crates.io/tokio/1.36.0 \
+ crate://crates.io/tokio-macros/2.2.0 \
+ crate://crates.io/tokio-util/0.7.10 \
+ crate://crates.io/tracing/0.1.40 \
+ crate://crates.io/tracing-attributes/0.1.27 \
+ crate://crates.io/tracing-core/0.1.32 \
+ crate://crates.io/unicode-bidi/0.3.13 \
+ crate://crates.io/unicode-ident/1.0.12 \
+ crate://crates.io/unicode-normalization/0.1.22 \
+ crate://crates.io/url/2.4.1 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/wasm-bindgen/0.2.88 \
+ crate://crates.io/wasm-bindgen-backend/0.2.88 \
+ crate://crates.io/wasm-bindgen-macro/0.2.88 \
+ crate://crates.io/wasm-bindgen-macro-support/0.2.88 \
+ crate://crates.io/wasm-bindgen-shared/0.2.88 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-core/0.51.1 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.5 \
+ crate://crates.io/windows-targets/0.52.0 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.52.0 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.52.0 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.52.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.52.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.52.0 \
+"
+
+SRC_URI[addr2line-0.21.0.sha256sum] = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[android-tzdata-0.1.1.sha256sum] = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[anstream-0.6.4.sha256sum] = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44"
+SRC_URI[anstyle-1.0.4.sha256sum] = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+SRC_URI[anstyle-parse-0.2.2.sha256sum] = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-3.0.1.sha256sum] = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
+SRC_URI[anyhow-1.0.80.sha256sum] = "5ad32ce52e4161730f7098c077cd2ed6229b5804ccf99e5366be1ab72a98b4e1"
+SRC_URI[async-broadcast-0.7.0.sha256sum] = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb"
+SRC_URI[async-trait-0.1.74.sha256sum] = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[backtrace-0.3.69.sha256sum] = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+SRC_URI[bumpalo-3.14.0.sha256sum] = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+SRC_URI[bytes-1.5.0.sha256sum] = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.34.sha256sum] = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b"
+SRC_URI[clap-4.4.10.sha256sum] = "41fffed7514f420abec6d183b1d3acfd9099c79c3a10a06ade4f8203f1411272"
+SRC_URI[clap_builder-4.4.9.sha256sum] = "63361bae7eef3771745f02d8d892bec2fee5f6e34af316ba556e7f97a7069ff1"
+SRC_URI[clap_derive-4.4.7.sha256sum] = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+SRC_URI[clap_lex-0.6.0.sha256sum] = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[concurrent-queue-2.3.0.sha256sum] = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
+SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
+SRC_URI[data-encoding-2.4.0.sha256sum] = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+SRC_URI[deranged-0.3.9.sha256sum] = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3"
+SRC_URI[endian-type-0.1.2.sha256sum] = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+SRC_URI[enum-as-inner-0.6.0.sha256sum] = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
+SRC_URI[error-chain-0.12.4.sha256sum] = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+SRC_URI[event-listener-5.0.0.sha256sum] = "b72557800024fabbaa2449dd4bf24e37b93702d457a4d4f2b0dd1f0f039f20c1"
+SRC_URI[event-listener-strategy-0.5.0.sha256sum] = "feedafcaa9b749175d5ac357452a9d41ea2911da598fde46ce1fe02c37751291"
+SRC_URI[form_urlencoded-1.2.0.sha256sum] = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+SRC_URI[futures-channel-0.3.29.sha256sum] = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+SRC_URI[futures-core-0.3.30.sha256sum] = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+SRC_URI[futures-io-0.3.29.sha256sum] = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+SRC_URI[futures-sink-0.3.29.sha256sum] = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+SRC_URI[futures-task-0.3.30.sha256sum] = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+SRC_URI[futures-util-0.3.30.sha256sum] = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+SRC_URI[gimli-0.28.0.sha256sum] = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.3.sha256sum] = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+SRC_URI[hickory-client-0.24.0.sha256sum] = "7f3e08124cf0ddda93b1186d4af73599de401f3b52f14cd9aaa719049379462e"
+SRC_URI[hickory-proto-0.24.0.sha256sum] = "091a6fbccf4860009355e3efc52ff4acf37a63489aad7435372d44ceeb6fbbcf"
+SRC_URI[hickory-server-0.24.0.sha256sum] = "4fbbb45bc4dcb456445732c705e3cfdc7393b8bcae5c36ecec36b9d76bd67cb5"
+SRC_URI[hostname-0.3.1.sha256sum] = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+SRC_URI[iana-time-zone-0.1.58.sha256sum] = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+SRC_URI[idna-0.4.0.sha256sum] = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c"
+SRC_URI[ipnet-2.9.0.sha256sum] = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+SRC_URI[js-sys-0.3.65.sha256sum] = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+SRC_URI[libc-0.2.150.sha256sum] = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[match_cfg-0.1.0.sha256sum] = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+SRC_URI[mio-0.8.9.sha256sum] = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+SRC_URI[nibble_vec-0.1.0.sha256sum] = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
+SRC_URI[nix-0.27.1.sha256sum] = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+SRC_URI[num-traits-0.2.17.sha256sum] = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[object-0.32.1.sha256sum] = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[parking-2.2.0.sha256sum] = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+SRC_URI[percent-encoding-2.3.0.sha256sum] = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
+SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[powerfmt-0.2.0.sha256sum] = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[proc-macro2-1.0.69.sha256sum] = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+SRC_URI[quick-error-1.2.3.sha256sum] = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
+SRC_URI[quote-1.0.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+SRC_URI[radix_trie-0.2.1.sha256sum] = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[resolv-conf-0.7.0.sha256sum] = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00"
+SRC_URI[rustc-demangle-0.1.23.sha256sum] = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+SRC_URI[serde-1.0.192.sha256sum] = "bca2a08484b285dcb282d0f67b26cadc0df8b19f8c12502c13d966bf9482f001"
+SRC_URI[serde_derive-1.0.192.sha256sum] = "d6c7207fbec9faa48073f3e3074cbe553af6ea512d7c21ba46e434e70ea9fbc1"
+SRC_URI[signal-hook-0.3.17.sha256sum] = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
+SRC_URI[signal-hook-registry-1.4.1.sha256sum] = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+SRC_URI[socket2-0.5.5.sha256sum] = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-2.0.39.sha256sum] = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
+SRC_URI[syslog-6.1.0.sha256sum] = "7434e95bcccce1215d30f4bf84fe8c00e8de1b9be4fb736d747ca53d36e7f96f"
+SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+SRC_URI[time-0.3.30.sha256sum] = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5"
+SRC_URI[time-core-0.1.2.sha256sum] = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3"
+SRC_URI[time-macros-0.2.15.sha256sum] = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[tokio-1.36.0.sha256sum] = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931"
+SRC_URI[tokio-macros-2.2.0.sha256sum] = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+SRC_URI[tokio-util-0.7.10.sha256sum] = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[url-2.4.1.sha256sum] = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.88.sha256sum] = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+SRC_URI[wasm-bindgen-backend-0.2.88.sha256sum] = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+SRC_URI[wasm-bindgen-macro-0.2.88.sha256sum] = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+SRC_URI[wasm-bindgen-macro-support-0.2.88.sha256sum] = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+SRC_URI[wasm-bindgen-shared-0.2.88.sha256sum] = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-core-0.51.1.sha256sum] = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
diff --git a/recipes-containers/aardvark-dns/aardvark-dns_1.10.0.bb b/recipes-containers/aardvark-dns/aardvark-dns_1.10.0.bb
new file mode 100644
index 00000000..766cf97f
--- /dev/null
+++ b/recipes-containers/aardvark-dns/aardvark-dns_1.10.0.bb
@@ -0,0 +1,43 @@
+SUMMARY = "A container-focused DNS server"
+HOMEPAGE = "https://github.com/containers/aardvark-dns"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRCREV = "526260a1bc99d823814afb134980c749c56dea47"
+
+# It is possible to fetch the source using the crate fetcher instead:
+#SRC_URI = "crate://crates.io/${BPN}/${PV}"
+SRC_URI = "git://github.com/containers/aardvark-dns;protocol=https;nobranch=1 \
+ file://run-ptest"
+require ${BPN}-crates.inc
+
+S = "${WORKDIR}/git"
+
+inherit cargo cargo-update-recipe-crates features_check ptest
+
+# Cargo installs the binary to bin so move it to where podman expects it
+do_install:append() {
+ install -d ${D}${libexecdir}
+ mv ${D}${bindir} ${D}${libexecdir}/podman
+}
+
+do_install_ptest() {
+ cp -r ${S}/test ${D}${PTEST_PATH}
+}
+
+# rdepends on slirp4netns
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+RDEPENDS:${PN}-ptest += " \
+ bash \
+ bats \
+ bind-utils \
+ coreutils \
+ dbus-daemon-proxy \
+ ipcalc \
+ iproute2 \
+ jq \
+ slirp4netns \
+ util-linux-unshare \
+"
diff --git a/recipes-containers/aardvark-dns/files/run-ptest b/recipes-containers/aardvark-dns/files/run-ptest
new file mode 100644
index 00000000..b33d8fd4
--- /dev/null
+++ b/recipes-containers/aardvark-dns/files/run-ptest
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+NETAVARK=/usr/libexec/podman/netavark AARDVARK=/usr/libexec/podman/aardvark-dns bats ./test/
diff --git a/recipes-containers/buildah/buildah_git.bb b/recipes-containers/buildah/buildah_git.bb
new file mode 100644
index 00000000..64ee4f7d
--- /dev/null
+++ b/recipes-containers/buildah/buildah_git.bb
@@ -0,0 +1,66 @@
+HOMEPAGE = "https://buildah.io"
+SUMMARY = "A tool that facilitates building OCI container images."
+DESCRIPTION = "A tool that facilitates building OCI container images."
+
+# Apache-2.0 for containerd
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/github.com/containers/buildah/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+S = "${WORKDIR}/git"
+
+BUILDAH_VERSION = "1.34.1"
+
+PV = "${BUILDAH_VERSION}"
+
+inherit go
+inherit goarch
+inherit pkgconfig
+
+# Rdepends on podman which needs seccomp and ipv6
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "seccomp ipv6"
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+GO_IMPORT = "github.com/containers/buildah"
+GO_INSTALL = "${GO_IMPORT}"
+GO_WORKDIR = "${GO_INSTALL}"
+GOBUILDFLAGS += "-mod vendor"
+
+SRCREV_FORMAT = "buildah_storage"
+SRCREV_buildah = "dbeb097c6fbf4bfd643f096992da572a97a8ec12"
+SRCREV_storage = "246ba3062e8b551026aef2708eee747014ce5c52"
+
+SRC_URI = " \
+ git://github.com/containers/buildah;branch=release-1.34;name=buildah;protocol=https \
+ "
+
+DEPENDS = "libdevmapper btrfs-tools gpgme"
+RDEPENDS:${PN} = "cgroup-lite fuse-overlayfs libdevmapper podman"
+RDEPENDS:${PN}-dev = "bash perl"
+
+do_compile:prepend() {
+ cd ${S}/src/github.com/containers/buildah
+}
+
+go_do_compile() {
+ export TMPDIR="${GOTMPDIR}"
+ export AS='${CC} -c'
+ if [ -n "${GO_INSTALL}" ]; then
+ ${GO} install ${GOBUILDFLAGS} ./cmd/buildah
+ ${GO} install ${GOBUILDFLAGS} ./tests/imgtype/imgtype.go
+ ${GO} install ${GOBUILDFLAGS} ./tests/copy/copy.go
+ fi
+
+ # x86 statically linked executable that we don't need
+ rm -f ${S}/src/github.com/containers/buildah/internal/mkcw/embed/entrypoint
+}
+
+do_install:append() {
+ dest_dir=${D}/${sysconfdir}/containers
+ mkdir -p ${dest_dir}
+ install -m 666 ${S}/src/github.com/containers/buildah/docs/samples/registries.conf ${dest_dir}/buildah.registries.conf.sample
+ install -m 666 ${S}/src/github.com/containers/buildah/tests/policy.json ${dest_dir}/buildah.policy.json.sample
+}
+
+INSANE_SKIP:${PN} = "already-stripped"
diff --git a/recipes-containers/catatonit/catatonit_0.2.0.bb b/recipes-containers/catatonit/catatonit_0.2.0.bb
new file mode 100644
index 00000000..13537a4a
--- /dev/null
+++ b/recipes-containers/catatonit/catatonit_0.2.0.bb
@@ -0,0 +1,16 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: MIT
+
+SUMMARY = "A container init that is so simple it's effectively brain-dead."
+HOMEPAGE = "https://github.com/openSUSE/catatonit"
+DESCRIPTION = "${SUMMARY}"
+SECTION = "base"
+LICENSE = "GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "git://github.com/openSUSE/${BPN};protocol=https;branch=main"
+SRCREV = "7f0c9bb45d3490c3e7f579833c9b0689f78c8923"
+S = "${WORKDIR}/git"
+
+inherit autotools
diff --git a/recipes-containers/cgroup-lite/cgroup-lite_1.15.bb b/recipes-containers/cgroup-lite/cgroup-lite_1.15.bb
index 45cc287c..23ecfa4a 100644
--- a/recipes-containers/cgroup-lite/cgroup-lite_1.15.bb
+++ b/recipes-containers/cgroup-lite/cgroup-lite_1.15.bb
@@ -2,7 +2,7 @@ SECTION = "devel"
SUMMARY = "Light-weight package to set up cgroups at system boot."
DESCRIPTION = "Light-weight package to set up cgroups at system boot."
HOMEPAGE = "http://packages.ubuntu.com/source/artful/cgroup-lite"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://debian/copyright;md5=5d5da4e0867cf06014f87102154d0102"
SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+files/cgroup-lite_1.15.tar.xz"
SRC_URI += "file://cgroups-init"
@@ -17,8 +17,8 @@ INITSCRIPT_PARAMS = "start 8 2 3 4 5 . stop 20 0 1 6 ."
# Keeps the sysvinit scripts out of the image if building
# where systemd is in use.
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "cgroups-init.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "mask"
+SYSTEMD_SERVICE:${PN} = "cgroups-init.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "mask"
do_install() {
diff --git a/recipes-containers/conmon/conmon_2.0.0.bb b/recipes-containers/conmon/conmon_2.0.0.bb
deleted file mode 100644
index f4e2cd62..00000000
--- a/recipes-containers/conmon/conmon_2.0.0.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SUMMARY = "An OCI container runtime monitor"
-SECTION = "console/utils"
-HOMEPAGE = "https://github.com/containers/conmon"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=61af0b6932ea7b12fb9142721043bc77"
-
-DEPENDS = "glib-2.0"
-
-SRCREV = "e217fdff82e0b1a6184a28c43043a4065083407f"
-SRC_URI = "\
- git://github.com/containers/conmon.git \
- file://0001-Makefile-don-t-fail-if-clean-is-called-without-a-bui.patch \
-"
-
-SRC_URI[md5sum] = "5c711911d766d76813333c3812277574"
-SRC_URI[sha256sum] = "4c31278b2c03e5be5a696c3088bc86cf2557a70e00f697799c163aba18e3c40e"
-
-S = "${WORKDIR}/git"
-
-inherit pkgconfig
-
-EXTRA_OEMAKE = "PREFIX=${prefix} BINDIR=${bindir} LIBEXECDIR=${libexecdir}"
-
-do_install() {
- oe_runmake 'DESTDIR=${D}' install
-}
-
-FILES_${PN} += " \
- ${bindir}/conmon \
-"
diff --git a/recipes-containers/conmon/conmon_git.bb b/recipes-containers/conmon/conmon_git.bb
new file mode 100644
index 00000000..d7047ed0
--- /dev/null
+++ b/recipes-containers/conmon/conmon_git.bb
@@ -0,0 +1,32 @@
+SUMMARY = "An OCI container runtime monitor"
+SECTION = "console/utils"
+HOMEPAGE = "https://github.com/containers/conmon"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=61af0b6932ea7b12fb9142721043bc77"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+DEPENDS = "glib-2.0 go-md2man-native libseccomp"
+
+SRCREV = "affab49967eb62f75d2a47398344ab053326289f"
+SRC_URI = "\
+ git://github.com/containers/conmon.git;branch=main;protocol=https \
+"
+
+PV = "2.1.10+git"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig
+
+export GOCACHE = "${B}/.cache"
+
+EXTRA_OEMAKE = "PREFIX=${prefix} BINDIR=${bindir} LIBEXECDIR=${libexecdir}"
+
+PACKAGECONFIG ??= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+PACKAGECONFIG[systemd] = ",,systemd"
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
diff --git a/recipes-containers/conmon/files/0001-Makefile-don-t-fail-if-clean-is-called-without-a-bui.patch b/recipes-containers/conmon/files/0001-Makefile-don-t-fail-if-clean-is-called-without-a-bui.patch
deleted file mode 100644
index 8d2b473d..00000000
--- a/recipes-containers/conmon/files/0001-Makefile-don-t-fail-if-clean-is-called-without-a-bui.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 6ef63dfcc65d5401bc7cc7170d569cefcdadcb38 Mon Sep 17 00:00:00 2001
-From: Stefan Agner <stefan@agner.ch>
-Date: Fri, 30 Aug 2019 17:49:22 +0200
-Subject: [PATCH] Makefile: don't fail if clean is called without a build
-
-Do not fail when calling the clean target without building first.
-
-Upstream-Status: Backport
-
-Signed-off-by: Stefan Agner <stefan@agner.ch>
----
- Makefile | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index fb0e4fb..b525595 100644
---- a/Makefile
-+++ b/Makefile
-@@ -66,8 +66,7 @@ bin:
-
- .PHONY: clean
- clean:
-- rm -f bin/conmon src/*.o
-- rmdir bin
-+ rm -rf bin/ src/*.o
-
- .PHONY: install install.bin install.crio install.podman podman crio
- install: install.bin
---
-2.23.0
-
diff --git a/recipes-containers/container-host-config/container-host-config.bb b/recipes-containers/container-host-config/container-host-config.bb
new file mode 100644
index 00000000..80abddf0
--- /dev/null
+++ b/recipes-containers/container-host-config/container-host-config.bb
@@ -0,0 +1,22 @@
+HOMEPAGE = "https://git.yoctoproject.org/meta-virtualization"
+SUMMARY = "Configuration Package for container hosts"
+DESCRIPTION = "Common / centralized configuration files for container hosts"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = " \
+ file://storage.conf \
+ file://registries.conf \
+ file://policy.json \
+"
+
+do_install() {
+ install -d ${D}/${sysconfdir}/containers
+
+ install ${WORKDIR}/storage.conf ${D}/${sysconfdir}/containers/storage.conf
+ install ${WORKDIR}/registries.conf ${D}/${sysconfdir}/containers/registries.conf
+ install ${WORKDIR}/policy.json ${D}/${sysconfdir}/containers/policy.json
+}
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-containers/container-host-config/container-host-config/policy.json b/recipes-containers/container-host-config/container-host-config/policy.json
new file mode 100755
index 00000000..bb26e57f
--- /dev/null
+++ b/recipes-containers/container-host-config/container-host-config/policy.json
@@ -0,0 +1,7 @@
+{
+ "default": [
+ {
+ "type": "insecureAcceptAnything"
+ }
+ ]
+}
diff --git a/recipes-containers/skopeo/files/registries.conf b/recipes-containers/container-host-config/container-host-config/registries.conf
index ba6c3f6e..ba6c3f6e 100644
--- a/recipes-containers/skopeo/files/registries.conf
+++ b/recipes-containers/container-host-config/container-host-config/registries.conf
diff --git a/recipes-containers/container-host-config/container-host-config/storage.conf b/recipes-containers/container-host-config/container-host-config/storage.conf
new file mode 100644
index 00000000..cb4525f2
--- /dev/null
+++ b/recipes-containers/container-host-config/container-host-config/storage.conf
@@ -0,0 +1,243 @@
+# This file is the configuration file for all tools
+# that use the containers/storage library. The storage.conf file
+# overrides all other storage.conf files. Container engines using the
+# container/storage library do not inherit fields from other storage.conf
+# files.
+#
+# Note: The storage.conf file overrides other storage.conf files based on this precedence:
+# /usr/containers/storage.conf
+# /etc/containers/storage.conf
+# $HOME/.config/containers/storage.conf
+# $XDG_CONFIG_HOME/containers/storage.conf (If XDG_CONFIG_HOME is set)
+# See man 5 containers-storage.conf for more information
+# The "container storage" table contains all of the server options.
+[storage]
+
+# Default Storage Driver, Must be set for proper operation.
+driver = "overlay"
+
+# Temporary storage location
+runroot = "/run/containers/storage"
+
+# Primary Read/Write location of container storage
+# When changing the graphroot location on an SELINUX system, you must
+# ensure the labeling matches the default locations labels with the
+# following commands:
+# semanage fcontext -a -e /var/lib/containers/storage /NEWSTORAGEPATH
+# restorecon -R -v /NEWSTORAGEPATH
+graphroot = "/var/lib/containers/storage"
+
+# Optional alternate location of image store if a location separate from the
+# container store is required. If set, it must be different than graphroot.
+# imagestore = ""
+
+
+# Storage path for rootless users
+#
+# rootless_storage_path = "$HOME/.local/share/containers/storage"
+
+# Transient store mode makes all container metadata be saved in temporary storage
+# (i.e. runroot above). This is faster, but doesn't persist across reboots.
+# Additional garbage collection must also be performed at boot-time, so this
+# option should remain disabled in most configurations.
+# transient_store = true
+
+[storage.options]
+# Storage options to be passed to underlying storage drivers
+
+# AdditionalImageStores is used to pass paths to additional Read/Only image stores
+# Must be comma separated list.
+additionalimagestores = [
+]
+
+# Allows specification of how storage is populated when pulling images. This
+# option can speed the pulling process of images compressed with format
+# zstd:chunked. Containers/storage looks for files within images that are being
+# pulled from a container registry that were previously pulled to the host. It
+# can copy or create a hard link to the existing file when it finds them,
+# eliminating the need to pull them from the container registry. These options
+# can deduplicate pulling of content, disk storage of content and can allow the
+# kernel to use less memory when running containers.
+
+# containers/storage supports three keys
+# * enable_partial_images="true" | "false"
+# Tells containers/storage to look for files previously pulled in storage
+# rather then always pulling them from the container registry.
+# * use_hard_links = "false" | "true"
+# Tells containers/storage to use hard links rather then create new files in
+# the image, if an identical file already existed in storage.
+# * ostree_repos = ""
+# Tells containers/storage where an ostree repository exists that might have
+# previously pulled content which can be used when attempting to avoid
+# pulling content from the container registry
+pull_options = {enable_partial_images = "false", use_hard_links = "false", ostree_repos=""}
+
+# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
+# a container, to the UIDs/GIDs as they should appear outside of the container,
+# and the length of the range of UIDs/GIDs. Additional mapped sets can be
+# listed and will be heeded by libraries, but there are limits to the number of
+# mappings which the kernel will allow when you later attempt to run a
+# container.
+#
+# remap-uids = "0:1668442479:65536"
+# remap-gids = "0:1668442479:65536"
+
+# Remap-User/Group is a user name which can be used to look up one or more UID/GID
+# ranges in the /etc/subuid or /etc/subgid file. Mappings are set up starting
+# with an in-container ID of 0 and then a host-level ID taken from the lowest
+# range that matches the specified name, and using the length of that range.
+# Additional ranges are then assigned, using the ranges which specify the
+# lowest host-level IDs first, to the lowest not-yet-mapped in-container ID,
+# until all of the entries have been used for maps. This setting overrides the
+# Remap-UIDs/GIDs setting.
+#
+# remap-user = "containers"
+# remap-group = "containers"
+
+# Root-auto-userns-user is a user name which can be used to look up one or more UID/GID
+# ranges in the /etc/subuid and /etc/subgid file. These ranges will be partitioned
+# to containers configured to create automatically a user namespace. Containers
+# configured to automatically create a user namespace can still overlap with containers
+# having an explicit mapping set.
+# This setting is ignored when running as rootless.
+# root-auto-userns-user = "storage"
+#
+# Auto-userns-min-size is the minimum size for a user namespace created automatically.
+# auto-userns-min-size=1024
+#
+# Auto-userns-max-size is the maximum size for a user namespace created automatically.
+# auto-userns-max-size=65536
+
+[storage.options.overlay]
+# ignore_chown_errors can be set to allow a non privileged user running with
+# a single UID within a user namespace to run containers. The user can pull
+# and use any image even those with multiple uids. Note multiple UIDs will be
+# squashed down to the default uid in the container. These images will have no
+# separation between the users in the container. Only supported for the overlay
+# and vfs drivers.
+#ignore_chown_errors = "false"
+
+# Inodes is used to set a maximum inodes of the container image.
+# inodes = ""
+
+# Path to an helper program to use for mounting the file system instead of mounting it
+# directly.
+#mount_program = "/usr/bin/fuse-overlayfs"
+
+# mountopt specifies comma separated list of extra mount options
+mountopt = "nodev"
+
+# Set to skip a PRIVATE bind mount on the storage home directory.
+# skip_mount_home = "false"
+
+# Size is used to set a maximum size of the container image.
+# size = ""
+
+# ForceMask specifies the permissions mask that is used for new files and
+# directories.
+#
+# The values "shared" and "private" are accepted.
+# Octal permission masks are also accepted.
+#
+# "": No value specified.
+# All files/directories, get set with the permissions identified within the
+# image.
+# "private": it is equivalent to 0700.
+# All files/directories get set with 0700 permissions. The owner has rwx
+# access to the files. No other users on the system can access the files.
+# This setting could be used with networked based homedirs.
+# "shared": it is equivalent to 0755.
+# The owner has rwx access to the files and everyone else can read, access
+# and execute them. This setting is useful for sharing containers storage
+# with other users. For instance have a storage owned by root but shared
+# to rootless users as an additional store.
+# NOTE: All files within the image are made readable and executable by any
+# user on the system. Even /etc/shadow within your image is now readable by
+# any user.
+#
+# OCTAL: Users can experiment with other OCTAL Permissions.
+#
+# Note: The force_mask Flag is an experimental feature, it could change in the
+# future. When "force_mask" is set the original permission mask is stored in
+# the "user.containers.override_stat" xattr and the "mount_program" option must
+# be specified. Mount programs like "/usr/bin/fuse-overlayfs" present the
+# extended attribute permissions to processes within containers rather than the
+# "force_mask" permissions.
+#
+# force_mask = ""
+
+[storage.options.thinpool]
+# Storage Options for thinpool
+
+# autoextend_percent determines the amount by which pool needs to be
+# grown. This is specified in terms of % of pool size. So a value of 20 means
+# that when threshold is hit, pool will be grown by 20% of existing
+# pool size.
+# autoextend_percent = "20"
+
+# autoextend_threshold determines the pool extension threshold in terms
+# of percentage of pool size. For example, if threshold is 60, that means when
+# pool is 60% full, threshold has been hit.
+# autoextend_threshold = "80"
+
+# basesize specifies the size to use when creating the base device, which
+# limits the size of images and containers.
+# basesize = "10G"
+
+# blocksize specifies a custom blocksize to use for the thin pool.
+# blocksize="64k"
+
+# directlvm_device specifies a custom block storage device to use for the
+# thin pool. Required if you setup devicemapper.
+# directlvm_device = ""
+
+# directlvm_device_force wipes device even if device already has a filesystem.
+# directlvm_device_force = "True"
+
+# fs specifies the filesystem type to use for the base device.
+# fs="xfs"
+
+# log_level sets the log level of devicemapper.
+# 0: LogLevelSuppress 0 (Default)
+# 2: LogLevelFatal
+# 3: LogLevelErr
+# 4: LogLevelWarn
+# 5: LogLevelNotice
+# 6: LogLevelInfo
+# 7: LogLevelDebug
+# log_level = "7"
+
+# min_free_space specifies the min free space percent in a thin pool require for
+# new device creation to succeed. Valid values are from 0% - 99%.
+# Value 0% disables
+# min_free_space = "10%"
+
+# mkfsarg specifies extra mkfs arguments to be used when creating the base
+# device.
+# mkfsarg = ""
+
+# metadata_size is used to set the `pvcreate --metadatasize` options when
+# creating thin devices. Default is 128k
+# metadata_size = ""
+
+# Size is used to set a maximum size of the container image.
+# size = ""
+
+# use_deferred_removal marks devicemapper block device for deferred removal.
+# If the thinpool is in use when the driver attempts to remove it, the driver
+# tells the kernel to remove it as soon as possible. Note this does not free
+# up the disk space, use deferred deletion to fully remove the thinpool.
+# use_deferred_removal = "True"
+
+# use_deferred_deletion marks thinpool device for deferred deletion.
+# If the device is busy when the driver attempts to delete it, the driver
+# will attempt to delete device every 30 seconds until successful.
+# If the program using the driver exits, the driver will continue attempting
+# to cleanup the next time the driver is used. Deferred deletion permanently
+# deletes the device and all data stored in device will be lost.
+# use_deferred_deletion = "True"
+
+# xfs_nospace_max_retries specifies the maximum number of retries XFS should
+# attempt to complete IO when ENOSPC (no space) error is returned by
+# underlying storage device.
+# xfs_nospace_max_retries = "0"
diff --git a/recipes-containers/containerd/README.md b/recipes-containers/containerd/README.md
new file mode 100644
index 00000000..f7730793
--- /dev/null
+++ b/recipes-containers/containerd/README.md
@@ -0,0 +1,30 @@
+# containerd: sample image fetch and exec commands
+
+```shell
+root@qemux86-64:~# ctr images list
+REF TYPE DIGEST SIZE PLATFORMS
+docker.io/calico/node:v3.11.2 application/vnd.docker.distribution.manifest.list.v2+json sha256:887bcd551668cccae1fbfd6d2eb0f635ec37bb4cf599e1169989aa49dfac5b57 84.8 MiB linux/amd64,linux/arm64,linux/ppc64le
+docker.io/library/alpine:latest application/vnd.docker.distribution.manifest.list.v2+json sha256:c0e9560cda118f9ec63ddefb4a173a2b2a0347082d7dff7dc14272e7841a5b5a 2.7 MiB linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64/v8,l
+
+root@qemux86-64:~# ctr image pull docker.io/library/alpine:latest
+docker.io/library/alpine:latest: resolved |++++++++++++++++++++++++++++++++++++++|
+index-sha256:c0e9560cda118f9ec63ddefb4a173a2b2a0347082d7dff7dc14272e7841a5b5a: exists |++++++++++++++++++++++++++++++++++++++|
+manifest-sha256:d7342993700f8cd7aba8496c2d0e57be0666e80b4c441925fc6f9361fa81d10e: exists |++++++++++++++++++++++++++++++++++++++|
+layer-sha256:188c0c94c7c576fff0792aca7ec73d67a2f7f4cb3a6e53a84559337260b36964: exists |++++++++++++++++++++++++++++++++++++++|
+config-sha256:d6e46aa2470df1d32034c6707c8041158b652f38d2a9ae3d7ad7e7532d22ebe0: exists |++++++++++++++++++++++++++++++++++++++|
+elapsed: 6.5 s total: 0.0 B (0.0 B/s)
+unpacking linux/amd64 sha256:c0e9560cda118f9ec63ddefb4a173a2b2a0347082d7dff7dc14272e7841a5b5a...
+
+
+root@qemux86-64:~# ctr run -t docker.io/library/alpine:latest dtest /bin/sh
+/ # uname -a
+Linux qemux86-64 5.8.13-yocto-standard #1 SMP PREEMPT Tue Oct 6 12:23:29 UTC 2020 x86_64 Linux
+/ #
+
+
+ # root@qemux86-64:~# ctr c list
+CONTAINER IMAGE RUNTIME
+dtest docker.io/library/alpine:latest io.containerd.runc.v2
+
+root@qemux86-64:~# ctr c delete dtest
+``` \ No newline at end of file
diff --git a/recipes-containers/containerd/containerd-docker_git.bb b/recipes-containers/containerd/containerd-docker_git.bb
deleted file mode 100644
index b18a9bb2..00000000
--- a/recipes-containers/containerd/containerd-docker_git.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SRCREV = "3addd840653146c90a254301d6c3a663c7fd6429"
-SRC_URI = "\
- git://github.com/docker/containerd.git;branch=v0.2.x;destsuffix=git/src/github.com/containerd/containerd \
- "
-
-include containerd.inc
-
-CONTAINERD_VERSION = "v0.2.x"
-S = "${WORKDIR}/git/src/github.com/containerd/containerd"
-
-PROVIDES += "virtual/containerd"
-RPROVIDES_${PN} = "virtual/containerd"
-
-DEPENDS += "btrfs-tools"
diff --git a/recipes-containers/containerd/containerd-opencontainers/0001-Add-build-option-GODEBUG-1.patch b/recipes-containers/containerd/containerd-opencontainers/0001-Add-build-option-GODEBUG-1.patch
deleted file mode 100644
index 05c4f153..00000000
--- a/recipes-containers/containerd/containerd-opencontainers/0001-Add-build-option-GODEBUG-1.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 84874e47aa2025b8e73df0286c44f3b8a1d9fdb2 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Mon, 2 Sep 2019 16:20:07 +0800
-Subject: [PATCH] Add build option "GODEBUG=1"
-
-Make will generate GDB friendly binary with this build option.
-
-Signed-off-by: Hui Zhu <teawater@hyper.sh>
-
-Upstream-Status: Backport [c5a0c7f491b435e4eb45972903b00e2d8ed46495]
-
-Partly backport and refresh to v1.2.7
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/import/Makefile | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index 4355395..4fb5d3b 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -75,11 +75,15 @@ TEST_REQUIRES_ROOT_PACKAGES=$(filter \
- COMMANDS=ctr containerd containerd-stress
- MANPAGES=ctr.1 containerd.1 containerd-config.1 containerd-config.toml.5
-
-+ifndef GODEBUG
-+ EXTRA_LDFLAGS += -s -w
-+endif
-+
- # Build tags seccomp and apparmor are needed by CRI plugin.
- BUILDTAGS ?= seccomp apparmor
- GO_TAGS=$(if $(BUILDTAGS),-tags "$(BUILDTAGS)",)
--GO_LDFLAGS=-ldflags '-s -w -X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) $(EXTRA_LDFLAGS)'
--SHIM_GO_LDFLAGS=-ldflags '-s -w -X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) -extldflags "-static"'
-+GO_LDFLAGS=-ldflags '-X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) $(EXTRA_LDFLAGS)'
-+SHIM_GO_LDFLAGS=-ldflags '-X $(PKG)/version.Version=$(VERSION) -X $(PKG)/version.Revision=$(REVISION) -X $(PKG)/version.Package=$(PACKAGE) -extldflags "-static" $(EXTRA_LDFLAGS)'
-
- #Replaces ":" (*nix), ";" (windows) with newline for easy parsing
- GOPATHS=$(shell echo ${GOPATH} | tr ":" "\n" | tr ";" "\n")
---
-2.7.4
-
diff --git a/recipes-containers/containerd/containerd-opencontainers/0001-Makefile-allow-GO_BUILD_FLAGS-to-be-externally-speci.patch b/recipes-containers/containerd/containerd-opencontainers/0001-Makefile-allow-GO_BUILD_FLAGS-to-be-externally-speci.patch
new file mode 100644
index 00000000..63498a86
--- /dev/null
+++ b/recipes-containers/containerd/containerd-opencontainers/0001-Makefile-allow-GO_BUILD_FLAGS-to-be-externally-speci.patch
@@ -0,0 +1,35 @@
+From 474b93f8f643651144304a6971ef476add7f06f8 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 25 May 2021 12:49:41 -0400
+Subject: [PATCH] Makefile: allow GO_BUILD_FLAGS to be externally specified
+
+Since our oe-core go infrastructure insists on both -pie and static
+builds (for the most part), and that is not recommended by many
+packages, we end up with errors like:
+
+ cannot find package runtime/cgo (using -importcfg)
+ ...
+ recipe-sysroot-native/usr/lib/aarch64-poky-linux/go/pkg/tool/linux_amd64/link:
+ cannot open file : open : no such file or directory
+
+Upstream-Status: Inappropriate [specific to OE go configuration and build]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: containerd/Makefile
+===================================================================
+--- containerd.orig/Makefile
++++ containerd/Makefile
+@@ -129,7 +129,8 @@
+ GOPATHS=$(shell $(GO) env GOPATH | tr ":" "\n" | tr ";" "\n")
+
+ TESTFLAGS_RACE=
+-GO_BUILD_FLAGS ?=
++# allow flags to be exported and picked up.
++# GO_BUILD_FLAGS ?=
+ # See Golang issue re: '-trimpath': https://github.com/golang/go/issues/13809
+ GO_GCFLAGS=$(shell \
+ set -- ${GOPATHS}; \
diff --git a/recipes-containers/containerd/containerd-opencontainers/0001-build-don-t-use-gcflags-to-define-trimpath.patch b/recipes-containers/containerd/containerd-opencontainers/0001-build-don-t-use-gcflags-to-define-trimpath.patch
new file mode 100644
index 00000000..62580c6c
--- /dev/null
+++ b/recipes-containers/containerd/containerd-opencontainers/0001-build-don-t-use-gcflags-to-define-trimpath.patch
@@ -0,0 +1,32 @@
+From 9174091fa1624dbb09ce812792a4102dff693541 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Mon, 12 Sep 2022 15:40:08 -0400
+Subject: [PATCH] build: don't use gcflags to define trimpath
+
+We can pass trimpath in via environment variables. The gcflags
+definition of trimpath is for older go versions and is using the
+complete path for trimming. If the variable is captured in the
+resulting binary, we have a reproducibility and QA issue.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git git.orig/Makefile git.orig/Makefile
+index 4a6c13042..debb57925 100644
+--- git.orig/Makefile
++++ git.orig/Makefile
+@@ -130,7 +130,6 @@ TESTFLAGS_RACE=
+ # See Golang issue re: '-trimpath': https://github.com/golang/go/issues/13809
+ GO_GCFLAGS=$(shell \
+ set -- ${GOPATHS}; \
+- echo "-gcflags=-trimpath=$${1}/src"; \
+ )
+
+ BINARIES=$(addprefix bin/,$(COMMANDS))
+--
+2.19.1
+
diff --git a/recipes-containers/containerd/containerd-opencontainers_git.bb b/recipes-containers/containerd/containerd-opencontainers_git.bb
index 347eae5d..10d1ce8b 100644
--- a/recipes-containers/containerd/containerd-opencontainers_git.bb
+++ b/recipes-containers/containerd/containerd-opencontainers_git.bb
@@ -1,16 +1,100 @@
-SRCREV = "fd103cb716352c7e19768e4fed057f71d68902a0"
-SRC_URI = "git://github.com/containerd/containerd;branch=release/1.2 \
- file://0001-build-use-oe-provided-GO-and-flags.patch \
- file://0001-Add-build-option-GODEBUG-1.patch \
- "
+HOMEPAGE = "https://github.com/containerd/containerd"
+SUMMARY = "containerd is a daemon to control runC"
+DESCRIPTION = "containerd is a daemon to control runC, built for performance and density. \
+ containerd leverages runC's advanced features such as seccomp and user namespace \
+ support as well as checkpoint and restore for cloning and live migration of containers."
+
-include containerd.inc
+SRCREV = "b1624c3628954e769dd50783b63823040b2db38c"
+SRC_URI = "git://github.com/containerd/containerd;branch=main;protocol=https;destsuffix=git/src/github.com/containerd/containerd \
+ file://0001-Makefile-allow-GO_BUILD_FLAGS-to-be-externally-speci.patch \
+ file://0001-build-don-t-use-gcflags-to-define-trimpath.patch \
+ "
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=1269f40c0d099c21a871163984590d89"
+# Apache-2.0 for containerd
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1269f40c0d099c21a871163984590d89"
-CONTAINERD_VERSION = "v1.2.7"
+CONTAINERD_VERSION = "v2.0.0-beta.0"
+CVE_VERSION = "v2.0.0-beta.0"
-EXTRA_OEMAKE += "GODEBUG=1"
+# EXTRA_OEMAKE += "GODEBUG=1"
PROVIDES += "virtual/containerd"
-RPROVIDES_${PN} = "virtual/containerd"
+RPROVIDES:${PN} = "virtual-containerd"
+
+S = "${WORKDIR}/git/src/github.com/containerd/containerd"
+
+PV = "${CONTAINERD_VERSION}+git"
+
+inherit go
+inherit goarch
+
+GO_IMPORT = "import"
+
+CONTAINERD_PKG="github.com/containerd/containerd"
+
+INSANE_SKIP:${PN} += "ldflags"
+
+do_configure[noexec] = "1"
+
+do_compile() {
+ export GOARCH="${TARGET_GOARCH}"
+
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go:${WORKDIR}/git/"
+ export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export BUILDTAGS="no_btrfs static_build netgo"
+ export CFLAGS="${CFLAGS}"
+ export LDFLAGS="${LDFLAGS}"
+ export SHIM_CGO_ENABLED="${CGO_ENABLED}"
+ # fixes:
+ # cannot find package runtime/cgo (using -importcfg)
+ # ... recipe-sysroot-native/usr/lib/aarch64-poky-linux/go/pkg/tool/linux_amd64/link:
+ # cannot open file : open : no such file or directory
+ export GO_BUILD_FLAGS="-trimpath -a -pkgdir dontusecurrentpkgs"
+ export GO111MODULE=off
+
+ cd ${S}
+
+ oe_runmake binaries
+}
+
+inherit systemd
+SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','containerd.service','',d)}"
+
+do_install() {
+ mkdir -p ${D}/${bindir}
+
+ cp ${S}/bin/containerd ${D}/${bindir}/containerd
+ cp ${S}/bin/containerd-shim-runc-v2 ${D}/${bindir}/containerd-shim-runc-v2
+ cp ${S}/bin/ctr ${D}/${bindir}/containerd-ctr
+
+ ln -sf containerd ${D}/${bindir}/docker-containerd
+ ln -sf containerd-ctr ${D}/${bindir}/docker-containerd-ctr
+
+ ln -sf containerd-ctr ${D}/${bindir}/ctr
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 644 ${S}/containerd.service ${D}/${systemd_unitdir}/system
+ # adjust from /usr/local/bin to /usr/bin/
+ sed -e "s:/usr/local/bin/containerd:${bindir}/containerd:g" -i ${D}/${systemd_unitdir}/system/containerd.service
+ fi
+}
+
+FILES:${PN} += "${systemd_system_unitdir}/*"
+
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+
+COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
+
+RDEPENDS:${PN} += " ${VIRTUAL-RUNTIME_container_runtime}"
+
+CVE_PRODUCT = "containerd"
diff --git a/recipes-containers/containerd/containerd.inc b/recipes-containers/containerd/containerd.inc
deleted file mode 100644
index e226edf1..00000000
--- a/recipes-containers/containerd/containerd.inc
+++ /dev/null
@@ -1,100 +0,0 @@
-HOMEPAGE = "https://github.com/docker/containerd"
-SUMMARY = "containerd is a daemon to control runC"
-DESCRIPTION = "containerd is a daemon to control runC, built for performance and density. \
- containerd leverages runC's advanced features such as seccomp and user namespace \
- support as well as checkpoint and restore for cloning and live migration of containers."
-
-# Apache-2.0 for containerd
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE.code;md5=aadc30f9c14d876ded7bedc0afd2d3d7"
-
-SRC_URI += "file://containerd.service"
-
-S = "${WORKDIR}/git"
-
-PV = "${CONTAINERD_VERSION}+git${SRCPV}"
-
-inherit go
-inherit goarch
-
-GO_IMPORT = "import"
-
-CONTAINERD_PKG="github.com/containerd/containerd"
-
-INSANE_SKIP_${PN} += "ldflags"
-
-do_configure[noexec] = "1"
-
-do_compile() {
- export GOARCH="${TARGET_GOARCH}"
-
- # link fixups for compilation
- rm -f ${S}/src/import/vendor/src
- ln -sf ./ ${S}/src/import/vendor/src
-
- mkdir -p ${S}/src/import/vendor/src/github.com/containerd/containerd/
- mkdir -p ${S}/src/import/vendor/src/github.com/containerd/containerd/pkg/
- mkdir -p ${S}/src/import/vendor/src/github.com/containerd/containerd/contrib/
- # without this, the stress test parts of the build fail
- cp ${S}/src/import/*.go ${S}/src/import/vendor/src/github.com/containerd/containerd
-
- for c in content errdefs fs images mount snapshots linux api runtimes defaults progress \
- protobuf reference diff platforms runtime remotes version archive dialer gc metadata \
- metrics filters identifiers labels leases plugin server services \
- cmd cio containers namespaces oci events log reaper sys rootfs nvidia seed apparmor seccomp; do
- if [ -d ${S}/src/import/${c} ]; then
- ln -sfn ${S}/src/import/${c} ${S}/src/import/vendor/github.com/containerd/containerd/${c}
- fi
- if [ -d ${S}/src/import/pkg/${c} ]; then
- ln -sfn ${S}/src/import/pkg/${c} ${S}/src/import/vendor/github.com/containerd/containerd/pkg/${c}
- fi
- if [ -d ${S}/src/import/contrib/${c} ]; then
- ln -sfn ${S}/src/import/contrib/${c} ${S}/src/import/vendor/github.com/containerd/containerd/contrib/${c}
- fi
- done
-
- export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
- export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
- # Pass the needed cflags/ldflags so that cgo
- # can find the needed headers files and libraries
- export CGO_ENABLED="1"
- export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export BUILDTAGS="no_btrfs static_build netgo"
- export CFLAGS="${CFLAGS}"
- export LDFLAGS="${LDFLAGS}"
-
- cd ${S}/src/import
- oe_runmake binaries
-}
-
-# Note: disabled for now, since docker is launching containerd
-# inherit systemd
-# SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-# SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','containerd.service','',d)}"
-
-do_install() {
- mkdir -p ${D}/${bindir}
-
- cp ${S}/src/import/bin/containerd ${D}/${bindir}/containerd
- cp ${S}/src/import/bin/containerd-shim ${D}/${bindir}/containerd-shim
- cp ${S}/src/import/bin/ctr ${D}/${bindir}/containerd-ctr
-
- ln -sf containerd ${D}/${bindir}/docker-containerd
- ln -sf containerd-shim ${D}/${bindir}/docker-containerd-shim
- ln -sf containerd-ctr ${D}/${bindir}/docker-containerd-ctr
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${WORKDIR}/containerd.service ${D}/${systemd_unitdir}/system
- # adjust from /usr/local/bin to /usr/bin/
- sed -e "s:/usr/local/bin/containerd:${bindir}/docker-containerd:g" -i ${D}/${systemd_unitdir}/system/containerd.service
- fi
-}
-
-FILES_${PN} += "${systemd_system_unitdir}/*"
-
-INSANE_SKIP_${PN} += "ldflags already-stripped"
-
-COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
diff --git a/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch b/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch
index d4d5973e..20647c01 100644
--- a/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch
+++ b/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch
@@ -7,36 +7,60 @@ We want to use the go compiler as defined in the oe-enviroment, not the
generic call to 'go'. Without changing this, we'll get things like cgo
errors and invalid flag combos.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
Makefile | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
-Index: git/src/import/Makefile
+Index: git/Makefile
===================================================================
---- git.orig/src/import/Makefile
-+++ git/src/import/Makefile
-@@ -166,19 +166,19 @@
+--- git.orig/Makefile
++++ git/Makefile
+@@ -121,7 +121,7 @@
+ TESTFLAGS_PARALLEL ?= 8
+
+ # Use this to replace `go test` with, for instance, `gotestsum`
+-GOTEST ?= go test
++GOTEST ?= $(GO) test
+
+ OUTPUTDIR = $(join $(ROOTDIR), _output)
+ CRIDIR=$(OUTPUTDIR)/cri
+@@ -169,7 +169,7 @@
+
+ build: ## build the go packages
+ @echo "$(WHALE) $@"
+- @go build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} ${EXTRA_FLAGS} ${GO_LDFLAGS} ${PACKAGES}
++ @$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} ${EXTRA_FLAGS} ${GO_LDFLAGS} ${PACKAGES}
+
+ test: ## run tests, except integration tests and tests that require root
+ @echo "$(WHALE) $@"
+@@ -201,7 +201,7 @@
+
+ define BUILD_BINARY
+ @echo "$(WHALE) $@"
+-@go build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@ ${GO_LDFLAGS} ${GO_TAGS} ./$<
++@$(GO) build ${DEBUG_GO_GCFLAGS} ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@ ${GO_LDFLAGS} ${GO_TAGS} ./$<
+ endef
+
# Build a binary from a cmd.
- bin/%: cmd/% FORCE
- @echo "$(WHALE) $@${BINARY_SUFFIX}"
-- @go build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@${BINARY_SUFFIX} ${GO_LDFLAGS} ${GO_TAGS} ./$<
-+ @$(GO) build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@${BINARY_SUFFIX} ${GO_LDFLAGS} ${GO_TAGS} ./$<
+@@ -210,15 +210,15 @@
bin/containerd-shim: cmd/containerd-shim FORCE # set !cgo and omit pie for a static shim build: https://github.com/golang/go/issues/17789#issuecomment-258542220
@echo "$(WHALE) bin/containerd-shim"
-- @CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} -o bin/containerd-shim ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim
-+ @$(GO) build ${GO_BUILD_FLAGS} -o bin/containerd-shim ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim
+- @CGO_ENABLED=${SHIM_CGO_ENABLED} go build ${GO_BUILD_FLAGS} -o bin/containerd-shim ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim
++ @CGO_ENABLED=${SHIM_CGO_ENABLED} $(GO) build -a -pkgdir dontusecurrentpkgs ${GO_BUILD_FLAGS} -o bin/containerd-shim ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim
bin/containerd-shim-runc-v1: cmd/containerd-shim-runc-v1 FORCE # set !cgo and omit pie for a static shim build: https://github.com/golang/go/issues/17789#issuecomment-258542220
@echo "$(WHALE) bin/containerd-shim-runc-v1"
-- @CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v1 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v1
-+ @$(GO) build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v1 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v1
+- @CGO_ENABLED=${SHIM_CGO_ENABLED} go build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v1 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v1
++ @CGO_ENABLED=${SHIM_CGO_ENABLED} $(GO) build -a -pkgdir dontusecurrentpkgs ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v1 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v1
- bin/containerd-shim-runhcs-v1: cmd/containerd-shim-runhcs-v1 FORCE # set !cgo and omit pie for a static shim build: https://github.com/golang/go/issues/17789#issuecomment-258542220
- @echo "$(WHALE) bin/containerd-shim-runhcs-v1${BINARY_SUFFIX}"
-- @CGO_ENABLED=0 go build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runhcs-v1${BINARY_SUFFIX} ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runhcs-v1
-+ @$(GO) build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runhcs-v1${BINARY_SUFFIX} ${SHIM_GO_LDFLAGS} $(GOBUILDFLAGS) ${GO_TAGS} ./cmd/containerd-shim-runhcs-v1
+ bin/containerd-shim-runc-v2: cmd/containerd-shim-runc-v2 FORCE # set !cgo and omit pie for a static shim build: https://github.com/golang/go/issues/17789#issuecomment-258542220
+ @echo "$(WHALE) bin/containerd-shim-runc-v2"
+- @CGO_ENABLED=${SHIM_CGO_ENABLED} go build ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v2 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v2
++ @CGO_ENABLED=${SHIM_CGO_ENABLED} $(GO) build -a -pkgdir dontusecurrentpkgs ${GO_BUILD_FLAGS} -o bin/containerd-shim-runc-v2 ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim-runc-v2
binaries: $(BINARIES) ## build binaries
@echo "$(WHALE) $@"
diff --git a/recipes-containers/containerd/files/containerd.service b/recipes-containers/containerd/files/containerd.service
deleted file mode 100644
index 23633b02..00000000
--- a/recipes-containers/containerd/files/containerd.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=containerd
-Documentation=https://containerd.tools
-After=network.target
-
-[Service]
-ExecStart=/usr/local/bin/containerd
-Delegate=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/recipes-containers/cri-o/cri-o_git.bb b/recipes-containers/cri-o/cri-o_git.bb
index 34276f4e..4e17a7cd 100644
--- a/recipes-containers/cri-o/cri-o_git.bb
+++ b/recipes-containers/cri-o/cri-o_git.bb
@@ -14,10 +14,9 @@ At a high level, we expect the scope of cri-o to be restricted to the following
- Resource isolation as required by the CRI \
"
-SRCREV_cri-o = "f61719a88b7de10a88c50e35640f4a7f1f53fbab"
+SRCREV_cri-o = "5aff11c7c1afdc785adafd7da3c3f2a6ac51b88d"
SRC_URI = "\
- git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.15;name=cri-o \
- file://0001-Makefile-force-symlinks.patch \
+ git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.30;name=cri-o;protocol=https \
file://crio.conf \
"
@@ -27,7 +26,10 @@ LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c2
GO_IMPORT = "import"
-PV = "1.15.0+git${SRCREV_cri-o}"
+PV = "1.30.0+git${SRCREV_cri-o}"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
DEPENDS = " \
glib-2.0 \
@@ -36,99 +38,40 @@ DEPENDS = " \
ostree \
libdevmapper \
libseccomp \
- libselinux \
"
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN} = " \
cni \
libdevmapper \
"
-python __anonymous() {
- msg = ""
- # ERROR: Nothing PROVIDES 'libseccomp' (but /buildarea/layers/meta-virtualization/recipes-containers/cri-o/cri-o_git.bb DEPENDS on or otherwise requires it).
- # ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
- # Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'cri-o', 'libseccomp']
- if 'security' not in d.getVar('BBFILE_COLLECTIONS').split():
- msg += "Make sure meta-security should be present as it provides 'libseccomp'"
- raise bb.parse.SkipRecipe(msg)
- # ERROR: Nothing PROVIDES 'libselinux' (but /buildarea/layers/meta-virtualization/recipes-containers/cri-o/cri-o_git.bb DEPENDS on or otherwise requires it).
- # ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
- # Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'cri-o', 'libselinux']
- elif 'selinux' not in d.getVar('BBFILE_COLLECTIONS').split():
- msg += "Make sure meta-selinux should be present as it provides 'libselinux'"
- raise bb.parse.SkipRecipe(msg)
-}
+PACKAGECONFIG ?= "${@bb.utils.filter('DISTRO_FEATURES', 'selinux', d)}"
+PACKAGECONFIG[selinux] = ",,libselinux"
PACKAGES =+ "${PN}-config"
-RDEPENDS_${PN} += " virtual/containerd virtual/runc"
-RDEPENDS_${PN} += " e2fsprogs-mke2fs"
+RDEPENDS:${PN} += " ${VIRTUAL-RUNTIME_container_runtime}"
+RDEPENDS:${PN} += " e2fsprogs-mke2fs conmon util-linux iptables conntrack-tools"
inherit systemd
inherit go
inherit goarch
inherit pkgconfig
+inherit container-host
EXTRA_OEMAKE="BUILDTAGS=''"
-CRIO_BUILD_CROSS ?= "1"
do_compile() {
set +e
- export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
- # link fixups for compilation
- rm -f ${S}/src/import/vendor/src
- ln -sf ./ ${S}/src/import/vendor/src
-
- mkdir -p ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o
- ln -sf ../../../../cmd ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/cmd
- ln -sf ../../../../test ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/test
- ln -sf ../../../../oci ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/oci
- ln -sf ../../../../server ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/server
- ln -sf ../../../../pkg ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/pkg
- ln -sf ../../../../libpod ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/libpod
- ln -sf ../../../../libkpod ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/libkpod
- ln -sf ../../../../utils ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/utils
- ln -sf ../../../../types ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/types
- ln -sf ../../../../version ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/version
- ln -sf ../../../../lib ${S}/src/import/vendor/github.com/kubernetes-sigs/cri-o/lib
-
-
- rm -f ${S}/src/import/src
- ln -sf ./ ${S}/src/import/src
- mkdir -p ${S}/src/import/src/github.com/cri-o/cri-o/cmd
- ln -sf ../../../../cmd/crio-config ${S}/src/import/src/github.com/cri-o/cri-o/cmd
- ln -sf ../../../lib ${S}/src/import/src/github.com/cri-o/cri-o/lib
- ln -sf ../../../oci ${S}/src/import/src/github.com/cri-o/cri-o/oci
- ln -sf ../../../pkg ${S}/src/import/src/github.com/cri-o/cri-o/pkg
- ln -sf ../../../utils ${S}/src/import/src/github.com/cri-o/cri-o/utils
- ln -sf ../../../version ${S}/src/import/src/github.com/cri-o/cri-o/version
- ln -sf ../../../server ${S}/src/import/src/github.com/cri-o/cri-o/server
- ln -sf ../../../types ${S}/src/import/src/github.com/cri-o/cri-o/types
-
- # fixes the bin/crio build of oe_runmake binaries below
- ln -sf ../../../../cmd/crio ${S}/src/import/src/github.com/cri-o/cri-o/cmd/
cd ${S}/src/import
- if [ "${CRIO_BUILD_CROSS}" = "1" ]; then
- # New: using the -cross target. But this doesn't build conmon and pause. So
- # keeping the old parts around if someone yells.
- oe_runmake local-cross
- else
- # Build conmon/config.h, requires native versions of
- # cmd/crio-config/config.go and oci/oci.go
- (CGO_ENABLED=0 GO=go GOARCH=${BUILD_GOARCH} GOOS=${BUILD_GOOS} oe_runmake conmon/config.h)
- rm -f bin/crio-config
- rm -rf vendor/pkg
-
- oe_runmake binaries
- fi
+ oe_runmake local-cross
+ oe_runmake binaries
}
SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','crio.service','',d)}"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','crio.service','',d)}"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
do_install() {
set +e
@@ -138,6 +81,7 @@ do_install() {
install -d ${D}/${libexecdir}/crio
install -d ${D}/${sysconfdir}/crio
install -d ${D}${systemd_unitdir}/system/
+ install -d ${D}/usr/share/containers/oci/hooks.d
install ${WORKDIR}/crio.conf ${D}/${sysconfdir}/crio/crio.conf
@@ -146,21 +90,26 @@ do_install() {
install -m 755 -D ${S}/src/import/test/testdata/* ${D}/${sysconfdir}/crio/config/
install ${S}/src/import/bin/crio.cross.linux* ${D}/${localbindir}/crio
-
- if [ "${CRIO_BUILD_CROSS}" = "1" ]; then
- install ${S}/src/import/bin/conmon ${D}/${localbindir}/crio
- install ${S}/src/import/bin/pause ${D}/${localbindir}/crio
- fi
+ install ${S}/src/import/bin/crio-status ${D}/${localbindir}/
+ install ${S}/src/import/bin/pinns ${D}/${localbindir}/
install -m 0644 ${S}/src/import/contrib/systemd/crio.service ${D}${systemd_unitdir}/system/
install -m 0644 ${S}/src/import/contrib/systemd/crio-shutdown.service ${D}${systemd_unitdir}/system/
+ install -m 0644 ${S}/src/import/contrib/systemd/crio-wipe.service ${D}${systemd_unitdir}/system/
+
+ install -d ${D}${localstatedir}/lib/crio
}
-FILES_${PN}-config = "${sysconfdir}/crio/config/*"
-FILES_${PN} += "${systemd_unitdir}/system/*"
-FILES_${PN} += "/usr/local/bin/*"
+FILES:${PN}-config = "${sysconfdir}/crio/config/*"
+FILES:${PN} += "${systemd_unitdir}/system/*"
+FILES:${PN} += "/usr/local/bin/*"
+FILES:${PN} += "/usr/share/containers/oci/hooks.d"
+
+# don't clobber hooks.d
+ALLOW_EMPTY:${PN} = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN} += "ldflags already-stripped textrel"
deltask compile_ptest_base
+COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
diff --git a/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch b/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch
deleted file mode 100644
index 0b106e41..00000000
--- a/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 53371afbf0f20a1651ee6f2406cd2be056a31066 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Thu, 1 Nov 2018 11:17:05 -0400
-Subject: [PATCH] Makefile: force symlinks
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index cf37bec..68c8eeb 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -66,7 +66,7 @@ help:
- .gopathok:
- ifeq ("$(wildcard $(GOPKGDIR))","")
- mkdir -p "$(GOPKGBASEDIR)"
-- ln -s "$(CURDIR)" "$(GOPKGDIR)"
-+ ln -sf "$(CURDIR)" "$(GOPKGDIR)"
- endif
- touch "$(GOPATH)/.gopathok"
-
---
-2.7.4
-
diff --git a/recipes-containers/cri-o/files/Makefile-skip-install-when-generating-the-config.h.patch b/recipes-containers/cri-o/files/Makefile-skip-install-when-generating-the-config.h.patch
deleted file mode 100644
index 24c7e9d7..00000000
--- a/recipes-containers/cri-o/files/Makefile-skip-install-when-generating-the-config.h.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 3822e834d2dbd87a4dc8cdd36e7fe3b0e9020c4f Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Tue, 9 Apr 2019 13:52:59 -0400
-Subject: [PATCH] Makefile: skip install when generating the config.h
-
-When running 'go build' "The -i flag installs the packages that are
-dependencies of the target." The Makefile makes use of this since many
-of the dependencies needed to complete this rule will be used to by
-other rules in the Makefile, thus speeding the overall build time
-(avoiding redoing work).
-
-In our case the crio-config tool and its dependencies are not being
-cross-compiled as they have to run locally to produce the
-conmon/config.h file and thus installing them is not useful. In this
-case there are no savings and can actually result in errors during the
-build or if the build ARCH and target ARCH are the same, a potential
-for host contamination.
-
-So we drop the use of '-i'.
-
-Upstream-Status: Inappropriate [cross compile issue]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index b9fa97f..8336a5b 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -109,7 +109,7 @@ release-note:
- @$(GOPATH)/bin/release-tool -n $(release)
-
- conmon/config.h: cmd/crio-config/config.go oci/oci.go
-- $(GO) build -i $(LDFLAGS) -o bin/crio-config $(PROJECT)/cmd/crio-config
-+ $(GO) build $(LDFLAGS) -o bin/crio-config $(PROJECT)/cmd/crio-config
- ( cd conmon && $(CURDIR)/bin/crio-config )
-
- clean:
---
-2.7.4
-
diff --git a/recipes-containers/cri-o/files/crio.conf b/recipes-containers/cri-o/files/crio.conf
index 9135df08..84472d88 100644
--- a/recipes-containers/cri-o/files/crio.conf
+++ b/recipes-containers/cri-o/files/crio.conf
@@ -1,147 +1,573 @@
# generated via: crio --config="" config --default
-# The "crio" table contains all of the server options.
+# The CRI-O configuration file specifies all of the available configuration
+# options and command-line flags for the crio(8) OCI Kubernetes Container Runtime
+# daemon, but in a TOML format that can be more easily modified and versioned.
+#
+# Please refer to crio.conf(5) for details of all configuration options.
+
+# CRI-O supports partial configuration reload during runtime, which can be
+# done by sending SIGHUP to the running process. Currently supported options
+# are explicitly mentioned with: 'This option supports live configuration
+# reload'.
+
+# CRI-O reads its storage defaults from the containers-storage.conf(5) file
+# located at /etc/containers/storage.conf. Modify this storage configuration if
+# you want to change the system's defaults. If you want to modify storage just
+# for CRI-O, you can change the storage configuration options here.
[crio]
-# root is a path to the "root directory". CRIO stores all of its data,
-# including container images, in this directory.
+# Path to the "root directory". CRI-O stores all of its data, including
+# containers images, in this directory.
root = "/var/lib/containers/storage"
-# run is a path to the "run directory". CRIO stores all of its state
-# in this directory.
-runroot = "/var/run/containers/storage"
+# Path to the "run directory". CRI-O stores all of its state in this directory.
+runroot = "/run/containers/storage"
-# storage_driver select which storage driver is used to manage storage
-# of images and containers.
+# Storage driver used to manage the storage of images and containers. Please
+# refer to containers-storage.conf(5) to see all available storage drivers.
storage_driver = ""
-# storage_option is used to pass an option to the storage driver.
+# List to pass options to the storage driver. Please refer to
+# containers-storage.conf(5) to see all available storage options.
storage_option = [
]
-# The "crio.api" table contains settings for the kubelet/gRPC
-# interface (which is also used by crioctl).
+# The default log directory where all logs will go unless directly specified by
+# the kubelet. The log directory specified must be an absolute directory.
+log_dir = "/var/log/crio/pods"
+
+# Location for CRI-O to lay down the temporary version file.
+# It is used to check if crio wipe should wipe containers, which should
+# always happen on a node reboot
+version_file = "/var/run/crio/version"
+
+# Location for CRI-O to lay down the persistent version file.
+# It is used to check if crio wipe should wipe images, which should
+# only happen when CRI-O has been upgraded
+version_file_persist = ""
+
+# InternalWipe is whether CRI-O should wipe containers and images after a reboot when the server starts.
+# If set to false, one must use the external command 'crio wipe' to wipe the containers and images in these situations.
+internal_wipe = true
+
+# Location for CRI-O to lay down the clean shutdown file.
+# It is used to check whether crio had time to sync before shutting down.
+# If not found, crio wipe will clear the storage directory.
+clean_shutdown_file = "/var/lib/crio/clean.shutdown"
+
+# The crio.api table contains settings for the kubelet/gRPC interface.
[crio.api]
-# listen is the path to the AF_LOCAL socket on which crio will listen.
-listen = "/var/run/crio.sock"
+# Path to AF_LOCAL socket on which CRI-O will listen.
+listen = "/var/run/crio/crio.sock"
+
+# IP address on which the stream server will listen.
+stream_address = "127.0.0.1"
+
+# The port on which the stream server will listen. If the port is set to "0", then
+# CRI-O will allocate a random free port number.
+stream_port = "0"
+
+# Enable encrypted TLS transport of the stream server.
+stream_enable_tls = false
-# stream_address is the IP address on which the stream server will listen
-stream_address = ""
+# Length of time until open streams terminate due to lack of activity
+stream_idle_timeout = ""
-# stream_port is the port on which the stream server will listen
-stream_port = "10010"
+# Path to the x509 certificate file used to serve the encrypted stream. This
+# file can change, and CRI-O will automatically pick up the changes within 5
+# minutes.
+stream_tls_cert = ""
-# file_locking is whether file-based locking will be used instead of
-# in-memory locking
-file_locking = true
+# Path to the key file used to serve the encrypted stream. This file can
+# change and CRI-O will automatically pick up the changes within 5 minutes.
+stream_tls_key = ""
-# The "crio.runtime" table contains settings pertaining to the OCI
-# runtime used and options for how to set up and manage the OCI runtime.
+# Path to the x509 CA(s) file used to verify and authenticate client
+# communication with the encrypted stream. This file can change and CRI-O will
+# automatically pick up the changes within 5 minutes.
+stream_tls_ca = ""
+
+# Maximum grpc send message size in bytes. If not set or <=0, then CRI-O will default to 16 * 1024 * 1024.
+grpc_max_send_msg_size = 83886080
+
+# Maximum grpc receive message size. If not set or <= 0, then CRI-O will default to 16 * 1024 * 1024.
+grpc_max_recv_msg_size = 83886080
+
+# The crio.runtime table contains settings pertaining to the OCI runtime used
+# and options for how to set up and manage the OCI runtime.
[crio.runtime]
-# runtime is the OCI compatible runtime used for trusted container workloads.
-# This is a mandatory setting as this runtime will be the default one
-# and will also be used for untrusted container workloads if
-# runtime_untrusted_workload is not set.
-runtime = "/usr/bin/runc"
-
-# runtime_untrusted_workload is the OCI compatible runtime used for untrusted
-# container workloads. This is an optional setting, except if
-# default_container_trust is set to "untrusted".
-runtime_untrusted_workload = ""
-
-# default_workload_trust is the default level of trust crio puts in container
-# workloads. It can either be "trusted" or "untrusted", and the default
-# is "trusted".
-# Containers can be run through different container runtimes, depending on
-# the trust hints we receive from kubelet:
-# - If kubelet tags a container workload as untrusted, crio will try first to
-# run it through the untrusted container workload runtime. If it is not set,
-# crio will use the trusted runtime.
-# - If kubelet does not provide any information about the container workload trust
-# level, the selected runtime will depend on the default_container_trust setting.
-# If it is set to "untrusted", then all containers except for the host privileged
-# ones, will be run by the runtime_untrusted_workload runtime. Host privileged
-# containers are by definition trusted and will always use the trusted container
-# runtime. If default_container_trust is set to "trusted", crio will use the trusted
-# container runtime for all containers.
-default_workload_trust = "trusted"
-
-# conmon is the path to conmon binary, used for managing the runtime.
-conmon = "/usr/libexec/crio/conmon"
-
-# conmon_env is the environment variable list for conmon process,
-# used for passing necessary environment variable to conmon or runtime.
+# A list of ulimits to be set in containers by default, specified as
+# "<ulimit name>=<soft limit>:<hard limit>", for example:
+# "nofile=1024:2048"
+# If nothing is set here, settings will be inherited from the CRI-O daemon
+default_ulimits = [
+]
+
+# If true, the runtime will not use pivot_root, but instead use MS_MOVE.
+no_pivot = false
+
+# decryption_keys_path is the path where the keys required for
+# image decryption are stored. This option supports live configuration reload.
+decryption_keys_path = "/etc/crio/keys/"
+
+# Path to the conmon binary, used for monitoring the OCI runtime.
+# Will be searched for using $PATH if empty.
+# This option is currently deprecated, and will be replaced with RuntimeHandler.MonitorEnv.
+conmon = ""
+
+# Cgroup setting for conmon
+# This option is currently deprecated, and will be replaced with RuntimeHandler.MonitorCgroup.
+conmon_cgroup = ""
+
+# Environment variable list for the conmon process, used for passing necessary
+# environment variables to conmon or the runtime.
+# This option is currently deprecated, and will be replaced with RuntimeHandler.MonitorEnv.
conmon_env = [
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
]
-# selinux indicates whether or not SELinux will be used for pod
-# separation on the host. If you enable this flag, SELinux must be running
-# on the host.
-selinux = false
+# Additional environment variables to set for all the
+# containers. These are overridden if set in the
+# container image spec or in the container runtime configuration.
+default_env = [
+]
-# seccomp_profile is the seccomp json profile path which is used as the
-# default for the runtime.
-seccomp_profile = "/etc/crio/seccomp.json"
+# If true, SELinux will be used for pod separation on the host.
+selinux = false
-# apparmor_profile is the apparmor profile name which is used as the
-# default for the runtime.
+# Path to the seccomp.json profile which is used as the default seccomp profile
+# for the runtime. If not specified, then the internal default seccomp profile
+# will be used. This option supports live configuration reload.
+seccomp_profile = ""
+
+# Changes the meaning of an empty seccomp profile. By default
+# (and according to CRI spec), an empty profile means unconfined.
+# This option tells CRI-O to treat an empty profile as the default profile,
+# which might increase security.
+seccomp_use_default_when_empty = true
+
+# Used to change the name of the default AppArmor profile of CRI-O. The default
+# profile name is "crio-default". This profile only takes effect if the user
+# does not specify a profile via the Kubernetes Pod's metadata annotation. If
+# the profile is set to "unconfined", then this equals to disabling AppArmor.
+# This option supports live configuration reload.
apparmor_profile = "crio-default"
-# cgroup_manager is the cgroup management implementation to be used
-# for the runtime.
-cgroup_manager = "cgroupfs"
+# Path to the blockio class configuration file for configuring
+# the cgroup blockio controller.
+blockio_config_file = ""
+
+# Used to change irqbalance service config file path which is used for configuring
+# irqbalance daemon.
+irqbalance_config_file = "/etc/sysconfig/irqbalance"
+
+# Path to the RDT configuration file for configuring the resctrl pseudo-filesystem.
+# This option supports live configuration reload.
+rdt_config_file = ""
+
+# Cgroup management implementation used for the runtime.
+cgroup_manager = "systemd"
+
+# Specify whether the image pull must be performed in a separate cgroup.
+separate_pull_cgroup = ""
+
+# List of default capabilities for containers. If it is empty or commented out,
+# only the capabilities defined in the containers json file by the user/kube
+# will be added.
+default_capabilities = [
+ "CHOWN",
+ "DAC_OVERRIDE",
+ "FSETID",
+ "FOWNER",
+ "SETGID",
+ "SETUID",
+ "SETPCAP",
+ "NET_BIND_SERVICE",
+ "KILL",
+]
+
+# List of default sysctls. If it is empty or commented out, only the sysctls
+# defined in the container json file by the user/kube will be added.
+default_sysctls = [
+]
+
+# List of devices on the host that a
+# user can specify with the "io.kubernetes.cri-o.Devices" allowed annotation.
+allowed_devices = [
+ "/dev/fuse",
+]
+
+# List of additional devices. specified as
+# "<device-on-host>:<device-on-container>:<permissions>", for example: "--device=/dev/sdc:/dev/xvdc:rwm".
+# If it is empty or commented out, only the devices
+# defined in the container json file by the user/kube will be added.
+additional_devices = [
+]
+
+# List of directories to scan for CDI Spec files.
+cdi_spec_dirs = [
+ "/etc/cdi",
+ "/var/run/cdi",
+]
+
+# Change the default behavior of setting container devices uid/gid from CRI's
+# SecurityContext (RunAsUser/RunAsGroup) instead of taking host's uid/gid.
+# Defaults to false.
+device_ownership_from_security_context = false
+
+# Path to OCI hooks directories for automatically executed hooks. If one of the
+# directories does not exist, then CRI-O will automatically skip them.
+hooks_dir = [
+ "/usr/share/containers/oci/hooks.d",
+]
+
+# Path to the file specifying the defaults mounts for each container. The
+# format of the config is /SRC:/DST, one mount per line. Notice that CRI-O reads
+# its default mounts from the following two files:
+#
+# 1) /etc/containers/mounts.conf (i.e., default_mounts_file): This is the
+# override file, where users can either add in their own default mounts, or
+# override the default mounts shipped with the package.
+#
+# 2) /usr/share/containers/mounts.conf: This is the default file read for
+# mounts. If you want CRI-O to read from a different, specific mounts file,
+# you can change the default_mounts_file. Note, if this is done, CRI-O will
+# only add mounts it finds in this file.
+#
+default_mounts_file = ""
+
+# Maximum number of processes allowed in a container.
+# This option is deprecated. The Kubelet flag '--pod-pids-limit' should be used instead.
+pids_limit = 0
+
+# Maximum sized allowed for the container log file. Negative numbers indicate
+# that no size limit is imposed. If it is positive, it must be >= 8192 to
+# match/exceed conmon's read buffer. The file is truncated and re-opened so the
+# limit is never exceeded. This option is deprecated. The Kubelet flag '--container-log-max-size' should be used instead.
+log_size_max = -1
+
+# Whether container output should be logged to journald in addition to the kuberentes log file
+log_to_journald = false
+
+# Path to directory in which container exit files are written to by conmon.
+container_exits_dir = "/var/run/crio/exits"
+
+# Path to directory for container attach sockets.
+container_attach_socket_dir = "/var/run/crio"
+
+# The prefix to use for the source of the bind mounts.
+bind_mount_prefix = ""
+
+# If set to true, all containers will run in read-only mode.
+read_only = false
+
+# Changes the verbosity of the logs based on the level it is set to. Options
+# are fatal, panic, error, warn, info, debug and trace. This option supports
+# live configuration reload.
+log_level = "info"
+
+# Filter the log messages by the provided regular expression.
+# This option supports live configuration reload.
+log_filter = ""
+
+# The UID mappings for the user namespace of each container. A range is
+# specified in the form containerUID:HostUID:Size. Multiple ranges must be
+# separated by comma.
+uid_mappings = ""
+
+# The GID mappings for the user namespace of each container. A range is
+# specified in the form containerGID:HostGID:Size. Multiple ranges must be
+# separated by comma.
+gid_mappings = ""
+
+# If set, CRI-O will reject any attempt to map host UIDs below this value
+# into user namespaces. A negative value indicates that no minimum is set,
+# so specifying mappings will only be allowed for pods that run as UID 0.
+minimum_mappable_uid = -1
+
+# If set, CRI-O will reject any attempt to map host GIDs below this value
+# into user namespaces. A negative value indicates that no minimum is set,
+# so specifying mappings will only be allowed for pods that run as UID 0.
+minimum_mappable_gid = -1
+
+# The minimal amount of time in seconds to wait before issuing a timeout
+# regarding the proper termination of the container. The lowest possible
+# value is 30s, whereas lower values are not considered by CRI-O.
+ctr_stop_timeout = 30
+
+# drop_infra_ctr determines whether CRI-O drops the infra container
+# when a pod does not have a private PID namespace, and does not use
+# a kernel separating runtime (like kata).
+# It requires manage_ns_lifecycle to be true.
+drop_infra_ctr = true
+
+# infra_ctr_cpuset determines what CPUs will be used to run infra containers.
+# You can use linux CPU list format to specify desired CPUs.
+# To get better isolation for guaranteed pods, set this parameter to be equal to kubelet reserved-cpus.
+infra_ctr_cpuset = ""
+
+# The directory where the state of the managed namespaces gets tracked.
+# Only used when manage_ns_lifecycle is true.
+namespaces_dir = "/var/run"
+
+# pinns_path is the path to find the pinns binary, which is needed to manage namespace lifecycle
+pinns_path = ""
+
+# default_runtime is the _name_ of the OCI runtime to be used as the default.
+# The name is matched against the runtimes map below. If this value is changed,
+# the corresponding existing entry from the runtimes map below will be ignored.
+default_runtime = "runc"
+
+# A list of paths that, when absent from the host,
+# will cause a container creation to fail (as opposed to the current behavior being created as a directory).
+# This option is to protect from source locations whose existence as a directory could jepordize the health of the node, and whose
+# creation as a file is not desired either.
+# An example is /etc/hostname, which will cause failures on reboot if it's created as a directory, but often doesn't exist because
+# the hostname is being managed dynamically.
+absent_mount_sources_to_reject = [
+]
-# hooks_dir_path is the oci hooks directory for automatically executed hooks
-hooks_dir_path = "/usr/share/containers/oci/hooks.d"
+# The "crio.runtime.runtimes" table defines a list of OCI compatible runtimes.
+# The runtime to use is picked based on the runtime handler provided by the CRI.
+# If no runtime handler is provided, the runtime will be picked based on the level
+# of trust of the workload. Each entry in the table should follow the format:
+#
+#[crio.runtime.runtimes.runtime-handler]
+# runtime_path = "/path/to/the/executable"
+# runtime_type = "oci"
+# runtime_root = "/path/to/the/root"
+# privileged_without_host_devices = false
+# allowed_annotations = []
+# Where:
+# - runtime-handler: name used to identify the runtime
+# - runtime_path (optional, string): absolute path to the runtime executable in
+# the host filesystem. If omitted, the runtime-handler identifier should match
+# the runtime executable name, and the runtime executable should be placed
+# in $PATH.
+# - runtime_type (optional, string): type of runtime, one of: "oci", "vm". If
+# omitted, an "oci" runtime is assumed.
+# - runtime_root (optional, string): root directory for storage of containers
+# state.
+# - runtime_config_path (optional, string): the path for the runtime configuration
+# file. This can only be used with when using the VM runtime_type.
+# - privileged_without_host_devices (optional, bool): an option for restricting
+# host devices from being passed to privileged containers.
+# - allowed_annotations (optional, array of strings): an option for specifying
+# a list of experimental annotations that this runtime handler is allowed to process.
+# The currently recognized values are:
+# "io.kubernetes.cri-o.userns-mode" for configuring a user namespace for the pod.
+# "io.kubernetes.cri-o.cgroup2-mount-hierarchy-rw" for mounting cgroups writably when set to "true".
+# "io.kubernetes.cri-o.Devices" for configuring devices for the pod.
+# "io.kubernetes.cri-o.ShmSize" for configuring the size of /dev/shm.
+# "io.kubernetes.cri-o.UnifiedCgroup.$CTR_NAME" for configuring the cgroup v2 unified block for a container.
+# "io.containers.trace-syscall" for tracing syscalls via the OCI seccomp BPF hook.
+# "io.kubernetes.cri.rdt-class" for setting the RDT class of a container
+# - monitor_exec_cgroup (optional, string): if set to "container", indicates exec probes
+# should be moved to the container's cgroup
+
+
+[crio.runtime.runtimes.runc]
+runtime_path = ""
+runtime_type = "oci"
+runtime_root = "/run/runc"
+runtime_config_path = ""
+
+
+allowed_annotations = [
+ "io.containers.trace-syscall",
+]
-# pids_limit is the number of processes allowed in a container
-pids_limit = 1024
+monitor_path = ""
-# The "crio.image" table contains settings pertaining to the
-# management of OCI images.
+monitor_env = [
+ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
+]
+
+monitor_cgroup = "system.slice"
+monitor_exec_cgroup = ""
+
+
+# crun is a fast and lightweight fully featured OCI runtime and C library for
+# running containers
+#[crio.runtime.runtimes.crun]
+
+# Kata Containers is an OCI runtime, where containers are run inside lightweight
+# VMs. Kata provides additional isolation towards the host, minimizing the host attack
+# surface and mitigating the consequences of containers breakout.
+
+# Kata Containers with the default configured VMM
+#[crio.runtime.runtimes.kata-runtime]
+
+# Kata Containers with the QEMU VMM
+#[crio.runtime.runtimes.kata-qemu]
+
+# Kata Containers with the Firecracker VMM
+#[crio.runtime.runtimes.kata-fc]
+
+# The workloads table defines ways to customize containers with different resources
+# that work based on annotations, rather than the CRI.
+# Note, the behavior of this table is EXPERIMENTAL and may change at any time.
+# Each workload, has a name, activation_annotation, annotation_prefix and set of resources it supports mutating.
+# The currently supported resources are "cpu" (to configure the cpu shares) and "cpuset" to configure the cpuset.
+# Each resource can have a default value specified, or be empty.
+# For a container to opt-into this workload, the pod should be configured with the annotation $activation_annotation (key only, value is ignored).
+# To customize per-container, an annotation of the form $annotation_prefix.$resource/$ctrName = "value" can be specified
+# signifying for that resource type to override the default value.
+# If the annotation_prefix is not present, every container in the pod will be given the default values.
+# Example:
+# [crio.runtime.workloads.workload-type]
+# activation_annotation = "io.crio/workload"
+# annotation_prefix = "io.crio.workload-type"
+# [crio.runtime.workloads.workload-type.resources]
+# cpuset = 0
+# cpushares = "0-1"
+# Where:
+# The workload name is workload-type.
+# To specify, the pod must have the "io.crio.workload" annotation (this is a precise string match).
+# This workload supports setting cpuset and cpu resources.
+# annotation_prefix is used to customize the different resources.
+# To configure the cpu shares a container gets in the example above, the pod would have to have the following annotation:
+# "io.crio.workload-type/$container_name = {"cpushares": "value"}"
+
+
+# The crio.image table contains settings pertaining to the management of OCI images.
+#
+# CRI-O reads its configured registries defaults from the system wide
+# containers-registries.conf(5) located in /etc/containers/registries.conf. If
+# you want to modify just CRI-O, you can change the registries configuration in
+# this file. Otherwise, leave insecure_registries and registries commented out to
+# use the system's defaults from /etc/containers/registries.conf.
[crio.image]
-# default_transport is the prefix we try prepending to an image name if the
-# image name as we receive it can't be parsed as a valid source reference
+# Default transport for pulling images from a remote container storage.
default_transport = "docker://"
-# pause_image is the image which we use to instantiate infra containers.
-pause_image = "kubernetes/pause"
+# The path to a file containing credentials necessary for pulling images from
+# secure registries. The file is similar to that of /var/lib/kubelet/config.json
+global_auth_file = ""
+
+# The image used to instantiate infra containers.
+# This option supports live configuration reload.
+pause_image = "registry.k8s.io/pause:3.6"
-# pause_command is the command to run in a pause_image to have a container just
-# sit there. If the image contains the necessary information, this value need
-# not be specified.
+# The path to a file containing credentials specific for pulling the pause_image from
+# above. The file is similar to that of /var/lib/kubelet/config.json
+# This option supports live configuration reload.
+pause_image_auth_file = ""
+
+# The command to run to have a container stay in the paused state.
+# When explicitly set to "", it will fallback to the entrypoint and command
+# specified in the pause image. When commented out, it will fallback to the
+# default: "/pause". This option supports live configuration reload.
pause_command = "/pause"
-# signature_policy is the name of the file which decides what sort of policy we
-# use when deciding whether or not to trust an image that we've pulled.
-# Outside of testing situations, it is strongly advised that this be left
-# unspecified so that the default system-wide policy will be used.
+# Path to the file which decides what sort of policy we use when deciding
+# whether or not to trust an image that we've pulled. It is not recommended that
+# this option be used, as the default behavior of using the system-wide default
+# policy (i.e., /etc/containers/policy.json) is most often preferred. Please
+# refer to containers-policy.json(5) for more details.
signature_policy = ""
-# image_volumes controls how image volumes are handled.
-# The valid values are mkdir and ignore.
-image_volumes = "mkdir"
-
-# insecure_registries is used to skip TLS verification when pulling images.
+# List of registries to skip TLS verification for pulling images. Please
+# consider configuring the registries via /etc/containers/registries.conf before
+# changing them here.
insecure_registries = [
]
-# registries is used to specify a comma separated list of registries to be used
-# when pulling an unqualified image (e.g. fedora:rawhide).
-registries = [
-]
+# Controls how image volumes are handled. The valid values are mkdir, bind and
+# ignore; the latter will ignore volumes entirely.
+image_volumes = "mkdir"
-# The "crio.network" table contains settings pertaining to the
-# management of CNI plugins.
+# Temporary directory to use for storing big files
+big_files_temporary_dir = ""
+
+# The crio.network table containers settings pertaining to the management of
+# CNI plugins.
[crio.network]
-# network_dir is is where CNI network configuration
-# files are stored.
+# The default CNI network name to be selected. If not set or "", then
+# CRI-O will pick-up the first one found in network_dir.
+# cni_default_network = ""
+
+# Path to the directory where CNI configuration files are located.
network_dir = "/etc/cni/net.d/"
-# plugin_dir is is where CNI plugin binaries are stored.
-plugin_dir = "/opt/cni/bin"
+# Paths to directories where CNI plugin binaries are located.
+plugin_dirs = [
+ "/opt/cni/bin/",
+]
+
+# A necessary configuration for Prometheus based metrics retrieval
+[crio.metrics]
+
+# Globally enable or disable metrics support.
+enable_metrics = false
+
+# Specify enabled metrics collectors.
+# Per default all metrics are enabled.
+# It is possible, to prefix the metrics with "container_runtime_" and "crio_".
+# For example, the metrics collector "operations" would be treated in the same
+# way as "crio_operations" and "container_runtime_crio_operations".
+metrics_collectors = [
+ "operations",
+ "operations_latency_microseconds_total",
+ "operations_latency_microseconds",
+ "operations_errors",
+ "image_pulls_by_digest",
+ "image_pulls_by_name",
+ "image_pulls_by_name_skipped",
+ "image_pulls_failures",
+ "image_pulls_successes",
+ "image_pulls_layer_size",
+ "image_layer_reuse",
+ "containers_oom_total",
+ "containers_oom",
+ "processes_defunct",
+ "operations_total",
+ "operations_latency_seconds",
+ "operations_latency_seconds_total",
+ "operations_errors_total",
+ "image_pulls_bytes_total",
+ "image_pulls_skipped_bytes_total",
+ "image_pulls_failure_total",
+ "image_pulls_success_total",
+ "image_layer_reuse_total",
+ "containers_oom_count_total",
+]
+# The port on which the metrics server will listen.
+metrics_port = 9090
+
+# Local socket path to bind the metrics server to
+metrics_socket = ""
+
+# The certificate for the secure metrics server.
+# If the certificate is not available on disk, then CRI-O will generate a
+# self-signed one. CRI-O also watches for changes of this path and reloads the
+# certificate on any modification event.
+metrics_cert = ""
+
+# The certificate key for the secure metrics server.
+# Behaves in the same way as the metrics_cert.
+metrics_key = ""
+
+# A necessary configuration for OpenTelemetry trace data exporting
+[crio.tracing]
+
+# Globally enable or disable exporting OpenTelemetry traces.
+enable_tracing = false
+
+# Address on which the gRPC trace collector listens on.
+tracing_endpoint = "0.0.0.0:4317"
+
+# Number of samples to collect per million spans.
+tracing_sampling_rate_per_million = 0
+
+# Necessary information pertaining to container and pod stats reporting.
+[crio.stats]
+
+# The number of seconds between collecting pod and container stats.
+# If set to 0, the stats are collected on-demand instead.
+stats_collection_period = 0
+
diff --git a/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch b/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch
new file mode 100644
index 00000000..29e0367b
--- /dev/null
+++ b/recipes-containers/cri-tools/cri-tools/0001-build-allow-environmental-CGO-settings-and-pass-dont.patch
@@ -0,0 +1,51 @@
+From 567b618f2ab9bb722826688d84f328773e4f37ce Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Wed, 17 Aug 2022 11:03:09 -0400
+Subject: [PATCH] build: allow environmental CGO settings and pass
+ dontusecurrentpkgs
+
+The build system already knows whether or not we want to use CGO,
+so we remove the hardcoded variant so our exported environment
+variable will control the enablement.
+
+Since our oe-core go infrastructure insists on both -pie and static
+builds (for the most part), and that is not recommended by many
+packages, we end up with errors like:
+
+ 1.20.0+gitec9e336fd8c21c4bab89a6aed2c4a138c8cfae75/src/import/_output/crictl \
+ -ldflags '-X github.com/kubernetes-sigs/cri-tools/pkg/version.Version=1.20.0' \
+ -tags '' \
+ github.com/kubernetes-sigs/cri-tools/cmd/crictl
+ # github.com/kubernetes-sigs/cri-tools/cmd/crictl
+ cannot find package runtime/cgo (using -importcfg)
+ /work/cortexa72-poky-linux/cri-tools/1.20.0+gitec9e336fd8c21c4bab89a6aed2c4a138c8cfae75-r0/recipe-sysroot-native/usr/lib/aarch64-poky-linux/go/pkg/tool/linux_amd64/link:
+ cannot open file : open : no such file or directory
+
+In a similar manner to:
+
+https://www.yoctoproject.org/pipermail/meta-virtualization/2019-March/004084.html
+
+We introduce '-a -pkgdir dontusecurrentpkgs' to mask/fix the problem,
+and continue to work towards non-static builds.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ src/import/Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: cri-tools-1.27.0+gite73a7139ed4986d6a0db784ae7a036841a02b351/src/import/Makefile
+===================================================================
+--- cri-tools-1.27.0+gite73a7139ed4986d6a0db784ae7a036841a02b351.orig/src/import/Makefile
++++ cri-tools-1.27.0+gite73a7139ed4986d6a0db784ae7a036841a02b351/src/import/Makefile
+@@ -74,7 +74,8 @@
+ @$(MAKE) -B $(CRICTL)
+
+ $(CRICTL):
+- CGO_ENABLED=$(CGO_ENABLED) $(GO_BUILD) -o $@ \
++ $(GO_BUILD) -o $@ \
++ -a -pkgdir dontusecurrentpkgs \
+ -ldflags '$(GO_LDFLAGS)' \
+ $(GOFLAGS) \
+ $(PROJECT)/cmd/crictl
diff --git a/recipes-containers/cri-tools/cri-tools_git.bb b/recipes-containers/cri-tools/cri-tools_git.bb
new file mode 100644
index 00000000..e0caf740
--- /dev/null
+++ b/recipes-containers/cri-tools/cri-tools_git.bb
@@ -0,0 +1,81 @@
+HOMEPAGE = "https://github.com/kubernetes-sigs/cri-tools"
+SUMMARY = "CLI and validation tools for Kubelet Container Runtime Interface (CRI)"
+DESCRIPTION = "What is the scope of this project? \
+\
+cri-tools aims to provide a series of debugging and validation tools for \
+Kubelet CRI, which includes: \
+\
+ * crictl: CLI for kubelet CRI. \
+ * critest: validation test suites for kubelet CRI. \
+\
+What is not in scope for this project? \
+\
+ * Building a new kubelet container runtime based on CRI. \
+ * Managing pods/containers for CRI-compatible runtimes by end-users, e.g. \
+ pods created by crictl may be removed automatically by kubelet because of \
+ non-exist on the kube-apiserver. \
+ "
+
+SRCREV_cri-tools = "17b4dd65d660fec94d7a5a070e3e89ef640f1087"
+SRC_URI = "\
+ git://github.com/kubernetes-sigs/cri-tools.git;branch=master;name=cri-tools;protocol=https \
+ file://0001-build-allow-environmental-CGO-settings-and-pass-dont.patch \
+ "
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+GO_IMPORT = "import"
+
+PV = "1.29.0+git${SRCREV_cri-tools}"
+
+RPROVIDES:${PN} += "crictl"
+PACKAGES =+ "${PN}-critest"
+
+inherit go
+inherit goarch
+inherit pkgconfig
+
+EXTRA_OEMAKE="BUILDTAGS=''"
+
+do_compile() {
+ # link fixups for compilation
+ rm -f ${S}/src/import/vendor/src
+ ln -sf ./ ${S}/src/import/vendor/src
+
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
+ cd ${S}/src/import
+
+ # Build the target binaries
+ export GOARCH="${TARGET_GOARCH}"
+ # Pass the needed cflags/ldflags so that cgo can find the needed headers files and libraries
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CFLAGS=""
+ export LDFLAGS=""
+ export CC="${CC}"
+ export LD="${LD}"
+ export GOBIN=""
+
+ oe_runmake crictl
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ for f in $(find ${S}/src/import/build/bin/ -type f); do
+ echo "installing $f to ${D}/${bindir}"
+ install -m 755 -D $f ${D}/${bindir}
+ done
+}
+
+FILES:${PN}-critest = "${bindir}/critest"
+
+# don't clobber hooks.d
+ALLOW_EMPTY:${PN} = "1"
+
+INSANE_SKIP:${PN} += "ldflags already-stripped textrel"
+
+deltask compile_ptest_base
+
+COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
diff --git a/recipes-containers/criu/criu_git.bb b/recipes-containers/criu/criu_git.bb
index 6bbbed6c..09503624 100644
--- a/recipes-containers/criu/criu_git.bb
+++ b/recipes-containers/criu/criu_git.bb
@@ -7,27 +7,27 @@ it was frozen at. The distinctive feature of the CRIU project is that it is \
mainly implemented in user space"
HOMEPAGE = "http://criu.org"
SECTION = "console/tools"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
EXCLUDE_FROM_WORLD = "1"
LIC_FILES_CHKSUM = "file://COPYING;md5=412de458544c1cb6a2b512cd399286e2"
-SRCREV = "437561d2bbc09d734ae276dbfca337569f454d54"
-PV = "3.12+git${SRCPV}"
+SRCREV = "f8b14286b092853a4485813e1efd564109df9123"
+PV = "3.19.0+git"
-SRC_URI = "git://github.com/xemul/criu.git;protocol=git \
- file://0001-criu-Fix-toolchain-hardcode.patch \
- file://0002-criu-Skip-documentation-install.patch \
- file://0001-criu-Change-libraries-install-directory.patch \
- file://lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch \
- file://0001-x86-crtools-do-not-error-when-YMM-is-missing.patch \
- "
+SRC_URI = "git://github.com/checkpoint-restore/criu.git;branch=master;protocol=https \
+ file://0001-criu-Skip-documentation-install.patch \
+ file://0002-criu-Change-libraries-install-directory.patch \
+ file://0003-crit-pycriu-build-and-install-wheels.patch \
+ file://0004-pycriu-attr-pycriu.version.__version__.patch \
+ file://0005-pycriu-skip-dependency-check-during-build.patch \
+ "
COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
-DEPENDS += "libnl libcap protobuf-c-native protobuf-c util-linux-native libbsd libnet"
-RDEPENDS_${PN} = "bash"
+DEPENDS += "libnl libcap protobuf-c-native protobuf-c util-linux-native libbsd libnet python3-protobuf-native"
+RDEPENDS:${PN} = "bash cgroup-lite python3-ctypes python3-fcntl python3-protobuf"
S = "${WORKDIR}/git"
@@ -36,17 +36,17 @@ S = "${WORKDIR}/git"
# if the ARCH is ARMv7 or ARMv6.
# ARM BSPs need set CRIU_BUILD_ARCH variable for building CRIU.
#
-EXTRA_OEMAKE_arm += "ARCH=arm UNAME-M=${CRIU_BUILD_ARCH} WERROR=0"
-EXTRA_OEMAKE_x86-64 += "ARCH=x86 WERROR=0"
-EXTRA_OEMAKE_aarch64 += "ARCH=aarch64 WERROR=0"
+EXTRA_OEMAKE:arm += "ARCH=arm UNAME-M=${CRIU_BUILD_ARCH} WERROR=0"
+EXTRA_OEMAKE:x86-64 += "ARCH=x86 WERROR=0"
+EXTRA_OEMAKE:aarch64 += "ARCH=aarch64 WERROR=0"
-EXTRA_OEMAKE_append += "SBINDIR=${sbindir} LIBDIR=${libdir} INCLUDEDIR=${includedir} PIEGEN=no"
-EXTRA_OEMAKE_append += "LOGROTATEDIR=${sysconfdir} SYSTEMDUNITDIR=${systemd_unitdir}"
+EXTRA_OEMAKE:append = " SBINDIR=${sbindir} LIBDIR=${libdir} INCLUDEDIR=${includedir} PIEGEN=no"
+EXTRA_OEMAKE:append = " LOGROTATEDIR=${sysconfdir} SYSTEMDUNITDIR=${systemd_unitdir}"
-CFLAGS += "-D__USE_GNU -D_GNU_SOURCE "
+CFLAGS += "-D__USE_GNU -D_GNU_SOURCE "
CFLAGS += " -I${STAGING_INCDIR} -I${STAGING_INCDIR}/libnl3"
-CFLAGS_arm += "-D__WORDSIZE"
+CFLAGS:arm += "-D__WORDSIZE"
# overide LDFLAGS to allow criu to build without: "x86_64-poky-linux-ld: unrecognized option '-Wl,-O1'"
export LDFLAGS=""
@@ -56,34 +56,57 @@ export BUILD_SYS
export HOST_SYS
export HOSTCFLAGS = "${BUILD_CFLAGS}"
-inherit setuptools
+inherit python_setuptools_build_meta
+inherit pkgconfig
+
+B = "${S}"
PACKAGECONFIG ??= ""
PACKAGECONFIG[selinux] = ",,libselinux"
CLEANBROKEN = "1"
-do_compile_prepend() {
+# WARNING: criu-3.17.1 do_package_qa: QA Issue: criu: ELF binary /usr/sbin/criu has relocations in .text [textrel]
+INSANE_SKIP:${PN} += "textrel"
+
+do_compile:prepend() {
rm -rf ${S}/images/google/protobuf/descriptor.proto
ln -s ${PKG_CONFIG_SYSROOT_DIR}/usr/include/google/protobuf/descriptor.proto ${S}/images/google/protobuf/descriptor.proto
}
do_compile () {
- oe_runmake FULL_PYTHON=${PYTHON} PYTHON=python2
+ oe_runmake FULL_PYTHON=${PYTHON} PYTHON=nativepython3
}
do_install () {
export INSTALL_LIB="${libdir}/${PYTHON_DIR}/site-packages"
- oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" FULL_PYTHON=${PYTHON} PYTHON=python2 install
+ export PEP517_WHEEL_PATH="${PEP517_WHEEL_PATH}"
+ export USRBINPATH="${USRBINPATH}"
+ export PEP517_INSTALL_PYTHON="${PEP517_INSTALL_PYTHON}"
+ oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" PLUGINDIR="${localstatedir}/lib" FULL_PYTHON=${PYTHON} PYTHON=nativepython3 install
+
+ # python3's distutils has a feature of rewriting the interpeter on setup installed
+ # scripts. 'crit' is one of those scripts. The "executable" or "e" option to the
+ # setup call should fix it, but it is being ignored. So to avoid getting our native
+ # intepreter replaced in the script, we'll do an explicit update ourselves.
+ #
+ # we're building wheels now, so EGG-INFO need not apply
+ #sed -i 's%^\#\!.*%\#\!/usr/bin/env python3%' ${D}/usr/bin/crit ${D}${libdir}/python3*/site-packages/crit-*-py3*.egg/EGG-INFO/scripts/crit
+
+ # all the __pycache__ contains references to TMPDIR and these will be built the first time
+ # it runs on the target anyway
+ for pycachedir in $(find ${D} -name __pycache__); do
+ rm -rf $pycachedir
+ done
}
-FILES_${PN} += "${systemd_unitdir}/ \
- ${libdir}/python2.7/site-packages/ \
- ${libdir}/pycriu/ \
- ${libdir}/crit-0.0.1-py2.7.egg-info \
+FILES:${PN} += "${systemd_unitdir}/ \
+ #${libdir}/python3*/site-packages/ \
+ #${libdir}/pycriu/ \
+ #${libdir}/crit-0.0.1-py3*.egg-info \
"
-FILES_${PN}-staticdev += " \
+FILES:${PN}-staticdev += " \
${libexecdir}/compel/std.lib.a \
${libexecdir}/compel/fds.lib.a \
"
diff --git a/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch b/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch
deleted file mode 100644
index bd7a6c57..00000000
--- a/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From c005b7a4874f55df687ff22bc425551775581421 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 8 Sep 2017 15:02:14 -0400
-Subject: [PATCH] criu: Fix toolchain hardcode
-
-Replace ":=" to "?=" so that the toolchain used by bitbake build system will
-be taken.
-
-Signed-off-by: Yang Shi <yang.shi@windriver.com>
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- Makefile | 2 +-
- scripts/nmk/scripts/include.mk | 2 +-
- scripts/nmk/scripts/tools.mk | 40 ++++++++++++++++++++--------------------
- 3 files changed, 22 insertions(+), 22 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index f2583a2..d7f51e5 100644
---- a/Makefile
-+++ b/Makefile
-@@ -17,7 +17,7 @@ ifeq ($(origin HOSTCFLAGS), undefined)
- HOSTCFLAGS := $(CFLAGS) $(USERCFLAGS)
- endif
-
--UNAME-M := $(shell uname -m)
-+UNAME-M ?= $(shell uname -m)
-
- #
- # Supported Architectures
-diff --git a/scripts/nmk/scripts/include.mk b/scripts/nmk/scripts/include.mk
-index 04ccb3a..0d63bc7 100644
---- a/scripts/nmk/scripts/include.mk
-+++ b/scripts/nmk/scripts/include.mk
-@@ -22,7 +22,7 @@ SUBARCH := $(shell uname -m | sed \
- -e s/aarch64.*/aarch64/)
-
- ARCH ?= $(SUBARCH)
--SRCARCH := $(ARCH)
-+SRCARCH ?= $(ARCH)
-
- export SUBARCH ARCH SRCARCH
-
-diff --git a/scripts/nmk/scripts/tools.mk b/scripts/nmk/scripts/tools.mk
-index 56dba84..1698821 100644
---- a/scripts/nmk/scripts/tools.mk
-+++ b/scripts/nmk/scripts/tools.mk
-@@ -2,35 +2,35 @@ ifndef ____nmk_defined__tools
-
- #
- # System tools shorthands
--RM := rm -f
-+RM ?= rm -f
- HOSTLD ?= ld
- ifeq ($(origin LD), default)
- LD := $(CROSS_COMPILE)$(HOSTLD)
- endif
- HOSTCC ?= gcc
- ifeq ($(origin CC), default)
- CC := $(CROSS_COMPILE)$(HOSTCC)
- endif
--CPP := $(CC) -E
--AS := $(CROSS_COMPILE)as
--AR := $(CROSS_COMPILE)ar
--STRIP := $(CROSS_COMPILE)strip
--OBJCOPY := $(CROSS_COMPILE)objcopy
--OBJDUMP := $(CROSS_COMPILE)objdump
--NM := $(CROSS_COMPILE)nm
--MAKE := make
--MKDIR := mkdir -p
--AWK := awk
--PERL := perl
--FULL_PYTHON := $(shell which python2 2>/dev/null || which python3 2>/dev/null)
-+CPP ?= $(CC) -E
-+AS ?= $(CROSS_COMPILE)as
-+AR ?= $(CROSS_COMPILE)ar
-+STRIP ?= $(CROSS_COMPILE)strip
-+OBJCOPY ?= $(CROSS_COMPILE)objcopy
-+OBJDUMP ?= $(CROSS_COMPILE)objdump
-+NM ?= $(CROSS_COMPILE)nm
-+MAKE ?= make
-+MKDIR ?= mkdir -p
-+AWK ?= awk
-+PERL ?= perl
-+FULL_PYTHON ?= $(shell which python2 2>/dev/null || which python3 2>/dev/null)
- PYTHON ?= $(shell basename $(FULL_PYTHON))
--FIND := find
--SH := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-+FIND ?= find
-+SH ?= $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
- else if [ -x /bin/bash ]; then echo /bin/bash; \
- else echo sh; fi ; fi)
--CSCOPE := cscope
--ETAGS := etags
--CTAGS := ctags
-+CSCOPE ?= cscope
-+ETAGS ?= etags
-+CTAGS ?= ctags
-
- export RM HOSTLD LD HOSTCC CC CPP AS AR STRIP OBJCOPY OBJDUMP
- export NM SH MAKE MKDIR AWK PERL PYTHON SH CSCOPE
diff --git a/recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch b/recipes-containers/criu/files/0001-criu-Skip-documentation-install.patch
index af45db73..dd33b1bd 100644
--- a/recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch
+++ b/recipes-containers/criu/files/0001-criu-Skip-documentation-install.patch
@@ -1,22 +1,23 @@
-From 45d74ae8a314c481398ba91a3697ffbd074cd98b Mon Sep 17 00:00:00 2001
+From 485e957a4c3289d105dd6203af31c0e4e1438ac6 Mon Sep 17 00:00:00 2001
From: Jianchuan Wang <jianchuan.wang@windriver.com>
Date: Tue, 16 Aug 2016 09:42:24 +0800
-Subject: [PATCH] criu: Skip documentation install
+Subject: [PATCH 1/3] criu: Skip documentation install
asciidoc is needed to generate CRIU documentation, so skip it in install.
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
---
Makefile.install | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile.install b/Makefile.install
-index 3987bcc..1def3cf 100644
+index aafb95469..1b02b70af 100644
--- a/Makefile.install
+++ b/Makefile.install
-@@ -29,7 +29,7 @@ export PREFIX BINDIR SBINDIR MANDIR RUNDIR
- export LIBDIR INCLUDEDIR LIBEXECDIR
+@@ -30,7 +30,7 @@ export PREFIX BINDIR SBINDIR MANDIR RUNDIR
+ export LIBDIR INCLUDEDIR LIBEXECDIR PLUGINDIR
install-man:
- $(Q) $(MAKE) -C Documentation install
@@ -24,3 +25,6 @@ index 3987bcc..1def3cf 100644
.PHONY: install-man
install-lib: lib
+--
+2.25.1
+
diff --git a/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch b/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch
deleted file mode 100644
index 795ef4cf..00000000
--- a/recipes-containers/criu/files/0001-x86-crtools-do-not-error-when-YMM-is-missing.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 6072c23dbd3bbdc9fead4d90fd2ea2212f2ae0cd Mon Sep 17 00:00:00 2001
-From: Zhang Ning <ning.a.zhang@intel.com>
-Date: Tue, 16 Apr 2019 15:45:05 +0800
-Subject: [PATCH] x86/crtools: do not error when YMM is missing
-
-for Intel Apollo Lake SOC, its cpuinfo and fpu features:
-cpu: x86_family 6 x86_vendor_id GenuineIntel x86_model_id Intel(R) Celeron(R) CPU J3455 @ 1.50GHz
-cpu: fpu: xfeatures_mask 0x11 xsave_size 1088 xsave_size_max 1088 xsaves_size 704
-cpu: fpu: x87 floating point registers xstate_offsets 0 / 0 xstate_sizes 160 / 160
-
-this CPU doesn't have AVX registers, YMM feature.
-
-when CRIU runs on this CPU, it will report dump error:
-Dumping GP/FPU registers for 4888
-Error (criu/arch/x86/crtools.c:362): x86: Corruption in XFEATURE_YMM area (expected 64 but 0 obtained)
-Error (criu/cr-dump.c:1278): Can't infect (pid: 4888) with parasite
-
-that's because x86/crtools.c will still valid YMM xsave frame, thus fail to dump.
-
-bypass unsupported feature, to make CRIU runs this kinds of CPUs.
-
-Cc: Chen Hu <hu1.chen@intel.com>
-Signed-off-by: Zhang Ning <ning.a.zhang@intel.com>
-Acked-by: Cyrill Gorcunov <gorcunov@gmail.com>
-Signed-off-by: Andrei Vagin <avagin@gmail.com>
-
-Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/5a52e34655636a8f00a664cf42716e1439ea2ef0]
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- criu/arch/x86/crtools.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/criu/arch/x86/crtools.c b/criu/arch/x86/crtools.c
-index ee016da..efc23e5 100644
---- a/criu/arch/x86/crtools.c
-+++ b/criu/arch/x86/crtools.c
-@@ -354,7 +354,7 @@ static bool valid_xsave_frame(CoreEntry *core)
- };
-
- for (i = 0; i < ARRAY_SIZE(features); i++) {
-- if (!features[i].ptr && i > 0)
-+ if (!features[i].ptr)
- continue;
-
- if (features[i].expected > features[i].obtained) {
---
-2.7.4
-
diff --git a/recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch b/recipes-containers/criu/files/0002-criu-Change-libraries-install-directory.patch
index afb1332d..1a1beafd 100644
--- a/recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch
+++ b/recipes-containers/criu/files/0002-criu-Change-libraries-install-directory.patch
@@ -1,25 +1,31 @@
-From f64fbca70e6049dad3c404d871f2383d97725d2d Mon Sep 17 00:00:00 2001
+From dcbf7f8ad1b07ff718eac2ce79ed522ac1cee189 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Fri, 8 Sep 2017 15:11:31 -0400
-Subject: [PATCH] criu: Change libraries install directory
+Subject: [PATCH 2/3] criu: Change libraries install directory
Install the libraries into /usr/lib(or /usr/lib64)
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+Rebase for criu 3.17.1.
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
Makefile.install | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/Makefile.install b/Makefile.install
-index 1def3cf..d020eef 100644
+index 1b02b70af..2839ef5fe 100644
--- a/Makefile.install
+++ b/Makefile.install
@@ -9,19 +9,6 @@ LIBEXECDIR ?= $(PREFIX)/libexec
RUNDIR ?= /run
+ PLUGINDIR ?= $(PREFIX)/lib/criu
- #
+-#
-# For recent Debian/Ubuntu with multiarch support.
-DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
-ifneq "$(DEB_HOST_MULTIARCH)" ""
@@ -32,7 +38,9 @@ index 1def3cf..d020eef 100644
- endif
-endif
-
--#
+ #
# LIBDIR falls back to the standard path.
LIBDIR ?= $(PREFIX)/lib
-
+--
+2.25.1
+
diff --git a/recipes-containers/criu/files/0003-crit-pycriu-build-and-install-wheels.patch b/recipes-containers/criu/files/0003-crit-pycriu-build-and-install-wheels.patch
new file mode 100644
index 00000000..0796bb24
--- /dev/null
+++ b/recipes-containers/criu/files/0003-crit-pycriu-build-and-install-wheels.patch
@@ -0,0 +1,77 @@
+From 40d2f0735d668dca893a5f0e787f1f11af74cf25 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Fri, 1 Mar 2024 22:22:37 -0800
+Subject: [PATCH] crit/pycriu: build and install wheels
+
+Rather than using heavy handed pip (which requires network access to
+fetch the index), mimic what we do in python_pep517.bbclass do_compile
+and do_install for both crit/ and lib/pycriu
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ crit/Makefile | 8 ++++++--
+ lib/Makefile | 11 +++++++++--
+ 2 files changed, 15 insertions(+), 4 deletions(-)
+
+diff --git a/crit/Makefile b/crit/Makefile
+index 9a856db6d..9b36f4be1 100644
+--- a/crit/Makefile
++++ b/crit/Makefile
+@@ -1,5 +1,7 @@
+ PYTHON_EXTERNALLY_MANAGED := $(shell $(PYTHON) -c 'import os, sysconfig; print(int(os.path.isfile(os.path.join(sysconfig.get_path("stdlib"), "EXTERNALLY-MANAGED"))))')
+ PIP_BREAK_SYSTEM_PACKAGES := 0
++PEP517_SOURCE_PATH := ./crit
++PEP517_BUILD_OPTS :=
+
+ VERSION_FILE := $(if $(obj),$(addprefix $(obj)/,crit/version.py),crit/version.py)
+
+@@ -16,11 +18,13 @@ ifeq ($(PIP_BREAK_SYSTEM_PACKAGES),0)
+ $(E) " Consider using PIP_BREAK_SYSTEM_PACKAGES=1 make install"
+ else
+ $(E) " INSTALL " crit
+- $(Q) $(PYTHON) -m pip install --upgrade --ignore-installed --prefix=$(DESTDIR)$(PREFIX) ./crit
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ endif
+ else
++ $(E) " BUILD " crit
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ $(E) " INSTALL " crit
+- $(Q) $(PYTHON) -m pip install --upgrade --ignore-installed --prefix=$(DESTDIR)$(PREFIX) ./crit
++ $(Q) $(PYTHON) -m installer $(INSTALL_WHEEL_COMPILE_BYTECODE) --interpreter "$(USRBINPATH)/env $(PEP517_INSTALL_PYTHON)" --destdir=$(DESTDIR) $(PEP517_WHEEL_PATH)/crit-*.whl
+ endif
+ .PHONY: install
+
+diff --git a/lib/Makefile b/lib/Makefile
+index ae371e78e..b5f147482 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -1,6 +1,9 @@
+ CRIU_SO := libcriu.so
+ CRIU_A := libcriu.a
+ UAPI_HEADERS := lib/c/criu.h images/rpc.proto images/rpc.pb-c.h criu/include/version.h
++PEP517_SOURCE_PATH := ./lib
++PEP517_BUILD_OPTS :=
++INSTALL_WHEEL_COMPILE_BYTECODE ?= "--compile-bytecode=0"
+
+ all-y += lib-c lib-a lib-py
+
+@@ -63,11 +66,15 @@ ifeq ($(PIP_BREAK_SYSTEM_PACKAGES),0)
+ $(E) " Consider using PIP_BREAK_SYSTEM_PACKAGES=1 make install"
+ else
+ $(E) " INSTALL " pycriu
+- $(Q) $(PYTHON) -m pip install --upgrade --ignore-installed --prefix=$(DESTDIR)$(PREFIX) ./lib
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ endif
+ else
++ $(E) " BUILD " pycriu
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ $(E) " INSTALL " pycriu
+- $(Q) $(PYTHON) -m pip install --upgrade --ignore-installed --prefix=$(DESTDIR)$(PREFIX) ./lib
++ #nativepython3 -m installer ${INSTALL_WHEEL_COMPILE_BYTECODE} --interpreter "${USRBINPATH}/env ${PEP517_INSTALL_PYTHON}" --destdir=${D} ${PEP517_WHEEL_PATH}/*.whl
++
++ $(Q) $(PYTHON) -m installer $(INSTALL_WHEEL_COMPILE_BYTECODE) --interpreter "$(USRBINPATH)/env $(PEP517_INSTALL_PYTHON)" --destdir=$(DESTDIR) $(PEP517_WHEEL_PATH)/pycriu-*.whl
+ endif
+ .PHONY: install
+
diff --git a/recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch b/recipes-containers/criu/files/0003-lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch
index 70ccb287..0f87e366 100644
--- a/recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch
+++ b/recipes-containers/criu/files/0003-lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch
@@ -1,23 +1,24 @@
-From 6caf90592d61c8c45b32cb7ff76709f9326030e2 Mon Sep 17 00:00:00 2001
+From 0a04c5bc80319485e17e9a86e799fe2c5bfa3d38 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Fri, 8 Sep 2017 15:40:49 -0400
-Subject: [PATCH] lib/Makefile: overwrite install-lib, to allow multiarch
+Subject: [PATCH 3/3] lib/Makefile: overwrite install-lib, to allow multiarch
I am not sure why Yocto installs python modules in arch specific
/usr/libXX directories but it does. Allow the recipe to pass this via
INSTALL_LIB.
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
lib/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lib/Makefile b/lib/Makefile
-index b1bb057..06f5c5d 100644
+index 575a7bad3..f503d430b 100644
--- a/lib/Makefile
+++ b/lib/Makefile
-@@ -53,7 +53,7 @@ install: lib-c lib-py crit/crit lib/c/criu.pc.in
+@@ -59,7 +59,7 @@ install: lib-c lib-a lib-py crit/crit lib/c/criu.pc.in
$(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' -e 's,@includedir@,$(dir $(INCLUDEDIR)/criu/),' lib/c/criu.pc.in > lib/c/criu.pc
$(Q) install -m 644 lib/c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
$(E) " INSTALL " crit
@@ -26,3 +27,6 @@ index b1bb057..06f5c5d 100644
.PHONY: install
uninstall:
+--
+2.25.1
+
diff --git a/recipes-containers/criu/files/0004-criu-fix-conflicting-headers.patch b/recipes-containers/criu/files/0004-criu-fix-conflicting-headers.patch
new file mode 100644
index 00000000..f03f51da
--- /dev/null
+++ b/recipes-containers/criu/files/0004-criu-fix-conflicting-headers.patch
@@ -0,0 +1,290 @@
+Backport patch to fix criu compile error with glibc 2.36. Update context
+for Makefile.config.
+
+Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/4c86d6a7]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+From 4c86d6a7d54abb64fc5a15131f3351224e8c071b Mon Sep 17 00:00:00 2001
+From: Radostin Stoyanov <rstoyanov@fedoraproject.org>
+Date: Sun, 31 Jul 2022 16:07:30 +0000
+Subject: [PATCH] criu: fix conflicting headers
+
+There are several changes in glibc 2.36 that make sys/mount.h header
+incompatible with kernel headers:
+
+https://sourceware.org/glibc/wiki/Release/2.36#Usage_of_.3Clinux.2Fmount.h.3E_and_.3Csys.2Fmount.h.3E
+
+This patch removes conflicting includes for `<linux/mount.h>` and
+updates the content of `criu/include/linux/mount.h` to match
+`/usr/include/sys/mount.h`. In addition, inline definitions sys_*()
+functions have been moved from "linux/mount.h" to "syscall.h" to
+avoid conflicts with `uapi/compel/plugins/std/syscall.h` and
+`<unistd.h>`. The include for `<linux/aio_abi.h>` has been replaced
+with local include to avoid conflicts with `<sys/mount.h>`.
+
+Fixes: #1949
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
+---
+ Makefile.config | 2 +-
+ criu/cgroup.c | 1 +
+ criu/cr-check.c | 2 +-
+ criu/cr-restore.c | 3 ++-
+ criu/include/aio.h | 2 +-
+ criu/include/linux/aio_abi.h | 14 +++++++++++
+ criu/include/linux/mount.h | 48 +++++++++++++++++++-----------------
+ criu/include/syscall.h | 17 +++++++++++++
+ criu/pie/parasite.c | 2 +-
+ criu/util.c | 1 +
+ scripts/feature-tests.mak | 13 ----------
+ 11 files changed, 64 insertions(+), 41 deletions(-)
+ create mode 100644 criu/include/linux/aio_abi.h
+ create mode 100644 criu/include/syscall.h
+
+diff --git a/Makefile.config b/Makefile.config
+index d113e2246..270ec61c0 100644
+--- a/Makefile.config
++++ b/Makefile.config
+@@ -78,7 +78,7 @@ export DEFINES += $(FEATURE_DEFINES)
+ export CFLAGS += $(FEATURE_DEFINES)
+
+ FEATURES_LIST := TCP_REPAIR STRLCPY STRLCAT PTRACE_PEEKSIGINFO \
+- SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW FSCONFIG MEMFD_CREATE OPENAT2
++ SETPROCTITLE_INIT MEMFD TCP_REPAIR_WINDOW MEMFD_CREATE OPENAT2
+
+ # $1 - config name
+ define gen-feature-test
+diff --git a/criu/cgroup.c b/criu/cgroup.c
+index e05b0832e..325df6a1d 100644
+--- a/criu/cgroup.c
++++ b/criu/cgroup.c
+@@ -27,6 +27,7 @@
+ #include "images/cgroup.pb-c.h"
+ #include "kerndat.h"
+ #include "linux/mount.h"
++#include "syscall.h"
+
+ /*
+ * This structure describes set of controller groups
+diff --git a/criu/cr-check.c b/criu/cr-check.c
+index f589a91da..0ca80192c 100644
+--- a/criu/cr-check.c
++++ b/criu/cr-check.c
+@@ -21,7 +21,6 @@
+ #include <sys/prctl.h>
+ #include <sched.h>
+ #include <sys/mount.h>
+-#include <linux/aio_abi.h>
+
+ #include "../soccr/soccr.h"
+
+@@ -52,6 +51,7 @@
+ #include "net.h"
+ #include "restorer.h"
+ #include "uffd.h"
++#include "linux/aio_abi.h"
+
+ #include "images/inventory.pb-c.h"
+
+diff --git a/criu/cr-restore.c b/criu/cr-restore.c
+index 279246c19..d11d28173 100644
+--- a/criu/cr-restore.c
++++ b/criu/cr-restore.c
+@@ -22,7 +22,6 @@
+ #include <compel/ptrace.h>
+ #include "common/compiler.h"
+
+-#include "linux/mount.h"
+ #include "linux/rseq.h"
+
+ #include "clone-noasan.h"
+@@ -86,6 +85,8 @@
+ #include <compel/plugins/std/syscall-codes.h>
+ #include "compel/include/asm/syscall.h"
+
++#include "linux/mount.h"
++
+ #include "protobuf.h"
+ #include "images/sa.pb-c.h"
+ #include "images/timer.pb-c.h"
+diff --git a/criu/include/aio.h b/criu/include/aio.h
+index d1655739d..38e704020 100644
+--- a/criu/include/aio.h
++++ b/criu/include/aio.h
+@@ -1,7 +1,7 @@
+ #ifndef __CR_AIO_H__
+ #define __CR_AIO_H__
+
+-#include <linux/aio_abi.h>
++#include "linux/aio_abi.h"
+ #include "images/mm.pb-c.h"
+ unsigned int aio_estimate_nr_reqs(unsigned int size);
+ int dump_aio_ring(MmEntry *mme, struct vma_area *vma);
+diff --git a/criu/include/linux/aio_abi.h b/criu/include/linux/aio_abi.h
+new file mode 100644
+index 000000000..d9ce78720
+--- /dev/null
++++ b/criu/include/linux/aio_abi.h
+@@ -0,0 +1,14 @@
++#ifndef __LINUX__AIO_ABI_H
++#define __LINUX__AIO_ABI_H
++
++typedef __kernel_ulong_t aio_context_t;
++
++/* read() from /dev/aio returns these structures. */
++struct io_event {
++ __u64 data; /* the data field from the iocb */
++ __u64 obj; /* what iocb this event came from */
++ __s64 res; /* result code for this event */
++ __s64 res2; /* secondary result */
++};
++
++#endif /* __LINUX__AIO_ABI_H */
+diff --git a/criu/include/linux/mount.h b/criu/include/linux/mount.h
+index 9a3a28b10..0d55a588c 100644
+--- a/criu/include/linux/mount.h
++++ b/criu/include/linux/mount.h
+@@ -4,32 +4,34 @@
+ #include "common/config.h"
+ #include "compel/plugins/std/syscall-codes.h"
+
+-#ifdef CONFIG_HAS_FSCONFIG
+-#include <linux/mount.h>
+-#else
++/* Copied from /usr/include/sys/mount.h */
++
++#ifndef FSCONFIG_CMD_CREATE
++/* The type of fsconfig call made. */
+ enum fsconfig_command {
+- FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
+- FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
+- FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
+- FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
+- FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
+- FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
+- FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
++ FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
++#define FSCONFIG_SET_FLAG FSCONFIG_SET_FLAG
++ FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
++#define FSCONFIG_SET_STRING FSCONFIG_SET_STRING
++ FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
++#define FSCONFIG_SET_BINARY FSCONFIG_SET_BINARY
++ FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
++#define FSCONFIG_SET_PATH FSCONFIG_SET_PATH
++ FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
++#define FSCONFIG_SET_PATH_EMPTY FSCONFIG_SET_PATH_EMPTY
++ FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
++#define FSCONFIG_SET_FD FSCONFIG_SET_FD
++ FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
++#define FSCONFIG_CMD_CREATE FSCONFIG_CMD_CREATE
+ FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
++#define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
+ };
+-#endif
++#endif // FSCONFIG_CMD_CREATE
+
+-static inline int sys_fsopen(const char *fsname, unsigned int flags)
+-{
+- return syscall(__NR_fsopen, fsname, flags);
+-}
+-static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key, const char *value, int aux)
+-{
+- return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
+-}
+-static inline int sys_fsmount(int fd, unsigned int flags, unsigned int attr_flags)
+-{
+- return syscall(__NR_fsmount, fd, flags, attr_flags);
+-}
++#ifndef MS_MGC_VAL
++/* Magic mount flag number. Has to be or-ed to the flag values. */
++#define MS_MGC_VAL 0xc0ed0000 /* Magic flag number to indicate "new" flags */
++#define MS_MGC_MSK 0xffff0000 /* Magic flag number mask */
++#endif
+
+ #endif
+diff --git a/criu/include/syscall.h b/criu/include/syscall.h
+new file mode 100644
+index 000000000..c38d6d971
+--- /dev/null
++++ b/criu/include/syscall.h
+@@ -0,0 +1,17 @@
++#ifndef __CR_SYSCALL_H__
++#define __CR_SYSCALL_H__
++
++static inline int sys_fsopen(const char *fsname, unsigned int flags)
++{
++ return syscall(__NR_fsopen, fsname, flags);
++}
++static inline int sys_fsconfig(int fd, unsigned int cmd, const char *key, const char *value, int aux)
++{
++ return syscall(__NR_fsconfig, fd, cmd, key, value, aux);
++}
++static inline int sys_fsmount(int fd, unsigned int flags, unsigned int attr_flags)
++{
++ return syscall(__NR_fsmount, fd, flags, attr_flags);
++}
++
++#endif /* __CR_SYSCALL_H__ */
+\ No newline at end of file
+diff --git a/criu/pie/parasite.c b/criu/pie/parasite.c
+index e7eb1fcb6..f75fe13bb 100644
+--- a/criu/pie/parasite.c
++++ b/criu/pie/parasite.c
+@@ -3,7 +3,6 @@
+ #include <signal.h>
+ #include <linux/limits.h>
+ #include <linux/capability.h>
+-#include <sys/mount.h>
+ #include <stdarg.h>
+ #include <sys/ioctl.h>
+ #include <sys/uio.h>
+@@ -14,6 +13,7 @@
+ #include "int.h"
+ #include "types.h"
+ #include <compel/plugins/std/syscall.h>
++#include "linux/mount.h"
+ #include "parasite.h"
+ #include "fcntl.h"
+ #include "prctl.h"
+diff --git a/criu/util.c b/criu/util.c
+index 5f69465b4..060ca3bd4 100644
+--- a/criu/util.c
++++ b/criu/util.c
+@@ -40,6 +40,7 @@
+ #include "mem.h"
+ #include "namespaces.h"
+ #include "criu-log.h"
++#include "syscall.h"
+
+ #include "clone-noasan.h"
+ #include "cr_options.h"
+diff --git a/scripts/feature-tests.mak b/scripts/feature-tests.mak
+index 014e893a8..fb5d2ef7a 100644
+--- a/scripts/feature-tests.mak
++++ b/scripts/feature-tests.mak
+@@ -137,19 +137,6 @@ ENTRY(main)
+ END(main)
+ endef
+
+-define FEATURE_TEST_FSCONFIG
+-
+-#include <linux/mount.h>
+-
+-int main(void)
+-{
+- if (FSCONFIG_CMD_CREATE > 0)
+- return 0;
+- return 0;
+-}
+-
+-endef
+-
+ define FEATURE_TEST_NFTABLES_LIB_API_0
+
+ #include <string.h>
+--
+2.34.1
+
diff --git a/recipes-containers/criu/files/0004-pycriu-attr-pycriu.version.__version__.patch b/recipes-containers/criu/files/0004-pycriu-attr-pycriu.version.__version__.patch
new file mode 100644
index 00000000..a1334b7b
--- /dev/null
+++ b/recipes-containers/criu/files/0004-pycriu-attr-pycriu.version.__version__.patch
@@ -0,0 +1,22 @@
+From a2b17e7b082786e2d7b7585b33815572c9c521f0 Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sat, 2 Mar 2024 13:47:46 -0800
+Subject: [PATCH] pycriu: attr pycriu.version.__version__
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ lib/pyproject.toml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/pyproject.toml b/lib/pyproject.toml
+index 8eb4b7084..5a92f8540 100644
+--- a/lib/pyproject.toml
++++ b/lib/pyproject.toml
+@@ -16,4 +16,4 @@ requires-python = ">=3.6"
+ packages = ["pycriu", "pycriu.images"]
+
+ [tool.setuptools.dynamic]
+-version = {attr = "pycriu.__version__"}
++version = {attr = "pycriu.version.__version__"}
diff --git a/recipes-containers/criu/files/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch b/recipes-containers/criu/files/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch
new file mode 100644
index 00000000..76b8a22e
--- /dev/null
+++ b/recipes-containers/criu/files/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch
@@ -0,0 +1,114 @@
+build: integrate build fix
+
+[
+ From 517c0947050e63aac72f63a3bf373d76264723b9 Mon Sep 17 00:00:00 2001
+ From: Radostin Stoyanov <rstoyanov@fedoraproject.org>
+ Date: Wed, 24 Aug 2022 21:20:30 +0200
+ Subject: [PATCH 2/2] mount: add definition for FSOPEN_CLOEXEC
+
+ A recent change in glibc introduced `enum fsconfig_command` [1] and as a
+ result the compilation of criu fails with the following errors
+
+ In file included from criu/pie/util.c:3:
+ /usr/include/sys/mount.h:240:6: error: redeclaration of 'enum fsconfig_command'
+ 240 | enum fsconfig_command
+ | ^~~~~~~~~~~~~~~~
+ In file included from /usr/include/sys/mount.h:32:
+ criu/include/linux/mount.h:11:6: note: originally defined here
+ 11 | enum fsconfig_command {
+ | ^~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:242:3: error: redeclaration of enumerator 'FSCONFIG_SET_FLAG'
+ 242 | FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
+ | ^~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:12:9: note: previous definition of 'FSCONFIG_SET_FLAG' with type 'enum fsconfig_command'
+ 12 | FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
+ | ^~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:244:3: error: redeclaration of enumerator 'FSCONFIG_SET_STRING'
+ 244 | FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
+ | ^~~~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:14:9: note: previous definition of 'FSCONFIG_SET_STRING' with type 'enum fsconfig_command'
+ 14 | FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
+ | ^~~~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:246:3: error: redeclaration of enumerator 'FSCONFIG_SET_BINARY'
+ 246 | FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
+ | ^~~~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:16:9: note: previous definition of 'FSCONFIG_SET_BINARY' with type 'enum fsconfig_command'
+ 16 | FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
+ | ^~~~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:248:3: error: redeclaration of enumerator 'FSCONFIG_SET_PATH'
+ 248 | FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
+ | ^~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:18:9: note: previous definition of 'FSCONFIG_SET_PATH' with type 'enum fsconfig_command'
+ 18 | FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
+ | ^~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:250:3: error: redeclaration of enumerator 'FSCONFIG_SET_PATH_EMPTY'
+ 250 | FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:20:9: note: previous definition of 'FSCONFIG_SET_PATH_EMPTY' with type 'enum fsconfig_command'
+ 20 | FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
+ | ^~~~~~~~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:252:3: error: redeclaration of enumerator 'FSCONFIG_SET_FD'
+ 252 | FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
+ | ^~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:22:9: note: previous definition of 'FSCONFIG_SET_FD' with type 'enum fsconfig_command'
+ 22 | FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
+ | ^~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:254:3: error: redeclaration of enumerator 'FSCONFIG_CMD_CREATE'
+ 254 | FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
+ | ^~~~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:24:9: note: previous definition of 'FSCONFIG_CMD_CREATE' with type 'enum fsconfig_command'
+ 24 | FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
+ | ^~~~~~~~~~~~~~~~~~~
+ /usr/include/sys/mount.h:256:3: error: redeclaration of enumerator 'FSCONFIG_CMD_RECONFIGURE'
+ 256 | FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
+ | ^~~~~~~~~~~~~~~~~~~~~~~~
+ criu/include/linux/mount.h:26:9: note: previous definition of 'FSCONFIG_CMD_RECONFIGURE' with type 'enum fsconfig_command'
+ 26 | FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
+
+ This patch adds definition for FSOPEN_CLOEXEC to solve this problem. In particular,
+ sys/mount.h includes ifndef check for FSOPEN_CLOEXEC surrounding `enum fsconfig_command`.
+
+ [1] https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=7eae6a91e9b1670330c9f15730082c91c0b1d570
+
+ Reported-by: Younes Manton (@ymanton)
+ Signed-off-by: Radostin Stoyanov <rstoyanov@fedoraproject.org>
+]
+
+Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/517c0947]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ criu/include/linux/mount.h | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/criu/include/linux/mount.h b/criu/include/linux/mount.h
+index 0d55a588c..fefafa89e 100644
+--- a/criu/include/linux/mount.h
++++ b/criu/include/linux/mount.h
+@@ -6,7 +6,7 @@
+
+ /* Copied from /usr/include/sys/mount.h */
+
+-#ifndef FSCONFIG_CMD_CREATE
++#ifndef FSOPEN_CLOEXEC
+ /* The type of fsconfig call made. */
+ enum fsconfig_command {
+ FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
+@@ -26,7 +26,13 @@ enum fsconfig_command {
+ FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
+ #define FSCONFIG_CMD_RECONFIGURE FSCONFIG_CMD_RECONFIGURE
+ };
+-#endif // FSCONFIG_CMD_CREATE
++
++#endif // FSOPEN_CLOEXEC
++
++/* fsopen flags. With the redundant definition, we check if the kernel,
++ * glibc value and our value still match.
++ */
++#define FSOPEN_CLOEXEC 0x00000001
+
+ #ifndef MS_MGC_VAL
+ /* Magic mount flag number. Has to be or-ed to the flag values. */
+--
+2.34.1
+
diff --git a/recipes-containers/criu/files/0005-pycriu-skip-dependency-check-during-build.patch b/recipes-containers/criu/files/0005-pycriu-skip-dependency-check-during-build.patch
new file mode 100644
index 00000000..88872911
--- /dev/null
+++ b/recipes-containers/criu/files/0005-pycriu-skip-dependency-check-during-build.patch
@@ -0,0 +1,32 @@
+From 2ec745ac11357e3243ef1f23f817c276518ce7cb Mon Sep 17 00:00:00 2001
+From: Tim Orling <tim.orling@konsulko.com>
+Date: Sat, 2 Mar 2024 13:48:54 -0800
+Subject: [PATCH] pycriu: --skip-dependency-check during build
+
+It complains about needing protobuf<4, python3-protobuf is 4.25 in meta-python
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Tim Orling <tim.orling@konsulko.com>
+---
+ lib/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/lib/Makefile b/lib/Makefile
+index b5f147482..e3faa7a06 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -66,11 +66,11 @@ ifeq ($(PIP_BREAK_SYSTEM_PACKAGES),0)
+ $(E) " Consider using PIP_BREAK_SYSTEM_PACKAGES=1 make install"
+ else
+ $(E) " INSTALL " pycriu
+- $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --skip-dependency-check --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ endif
+ else
+ $(E) " BUILD " pycriu
+- $(Q) $(PYTHON) -m build --no-isolation --wheel --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
++ $(Q) $(PYTHON) -m build --no-isolation --wheel --skip-dependency-check --outdir $(PEP517_WHEEL_PATH) $(PEP517_SOURCE_PATH) $(PEP517_BUILD_OPTS)
+ $(E) " INSTALL " pycriu
+ #nativepython3 -m installer ${INSTALL_WHEEL_COMPILE_BYTECODE} --interpreter "${USRBINPATH}/env ${PEP517_INSTALL_PYTHON}" --destdir=${D} ${PEP517_WHEEL_PATH}/*.whl
+
diff --git a/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch b/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch
deleted file mode 100644
index 9361adc2..00000000
--- a/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From b59947007362b53e9f41f1e5a33071dedf1c59ac Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Thu, 28 Sep 2017 09:13:33 +0000
-Subject: [PATCH] fix building on newest glibc and kernel
-
-On Fedora rawhide with kernel-headers-4.14.0-0.rc2.git0.1.fc28.x86_64
-glibc-devel-2.26.90-15.fc28.x86_64 criu does not build any more:
-
-In file included from /usr/include/linux/aio_abi.h:31:0,
- from criu/cr-check.c:24:
-/usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant
- MS_RDONLY = 1, /* Mount read-only. */
- ^
-make[2]: *** [/builddir/build/BUILD/criu-3.5/scripts/nmk/scripts/build.mk:111: criu/cr-check.o] Error 1
-make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
-make: *** [Makefile:233: criu] Error 2
-
-This simple re-ordering of includes fixes it for me.
-
-Signed-off-by: Adrian Reber <areber@redhat.com>
-Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
-
-Upstream-Status: Backport
-[https://github.com/checkpoint-restore/criu/commit/f41e386d4d40e3e26b0cfdc85a812b7edb337f1d#diff-cc847b1cc975358c6582595be92d48db]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
-
----
- criu/cr-check.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/criu/cr-check.c b/criu/cr-check.c
-index 1dd887a..93df2ab 100644
---- a/criu/cr-check.c
-+++ b/criu/cr-check.c
-@@ -21,8 +21,8 @@
- #include <netinet/in.h>
- #include <sys/prctl.h>
- #include <sched.h>
--#include <linux/aio_abi.h>
- #include <sys/mount.h>
-+#include <linux/aio_abi.h>
-
- #include "../soccr/soccr.h"
-
diff --git a/recipes-containers/crun/crun_git.bb b/recipes-containers/crun/crun_git.bb
index 7781e110..89ba21b4 100644
--- a/recipes-containers/crun/crun_git.bb
+++ b/recipes-containers/crun/crun_git.bb
@@ -1,31 +1,43 @@
DESCRIPTION = "A fast and low-memory footprint OCI Container Runtime fully written in C."
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
PRIORITY = "optional"
-SRCREV_crun = "a43f72196f7aaf713dc997eaddd0f08612f60ac0"
-SRCREV_libocispec = "01c8f977ff5ed1e8010f40c2572343be1a70a51b"
-SRCREV_ispec = "775207bd45b6cb8153ce218cc59351799217451f"
-SRCREV_rspec = "19e92ca817772b4466f2ed2b8d808dfb7a8ab4be"
+SRCREV_crun = "89d44467e3b410b73f2065756a12789be45b855b"
+SRCREV_libocispec = "19c05670c37a42c217caa7b141bcaada7867cc15"
+SRCREV_ispec = "9615142d016838b5dfe7453f80af0be74feb5c7c"
+SRCREV_rspec = "720792f25ae6e9ee6b1332db698f37659e69ce8d"
+SRCREV_yajl = "f344d21280c3e4094919fd318bc5ce75da91fc06"
SRCREV_FORMAT = "crun_rspec"
-SRC_URI = "git://github.com/containers/crun.git;branch=master;name=crun \
- git://github.com/containers/libocispec.git;branch=master;name=libocispec;destsuffix=git/libocispec \
- git://github.com/opencontainers/runtime-spec.git;branch=master;name=rspec;destsuffix=git/libocispec/runtime-spec \
- git://github.com/opencontainers/image-spec.git;branch=master;name=ispec;destsuffix=git/libocispec/image-spec \
+SRC_URI = "git://github.com/containers/crun.git;branch=main;name=crun;protocol=https \
+ git://github.com/containers/libocispec.git;branch=main;name=libocispec;destsuffix=git/libocispec;protocol=https \
+ git://github.com/opencontainers/runtime-spec.git;branch=main;name=rspec;destsuffix=git/libocispec/runtime-spec;protocol=https \
+ git://github.com/opencontainers/image-spec.git;branch=main;name=ispec;destsuffix=git/libocispec/image-spec;protocol=https \
+ git://github.com/containers/yajl.git;branch=main;name=yajl;destsuffix=git/libocispec/yajl;protocol=https \
"
-PV = "0.10.2+git${SRCREV_crun}"
+PV = "v1.14.3+git${SRCREV_crun}"
S = "${WORKDIR}/git"
-inherit autotools-brokensep pkgconfig
+REQUIRED_DISTRO_FEATURES ?= "systemd seccomp"
+
+inherit autotools-brokensep pkgconfig features_check
PACKAGECONFIG ??= ""
-DEPENDS = "yajl libcap go-md2man-native"
+DEPENDS = "yajl libcap go-md2man-native m4-native"
# TODO: is there a packageconfig to turn this off ?
DEPENDS += "libseccomp"
-DEPENDS += "oci-image-spec oci-runtime-spec"
+DEPENDS += "systemd"
+DEPENDS:append:libc-musl = " argp-standalone"
+
+do_configure:prepend () {
+ # extracted from autogen.sh in crun source. This avoids
+ # git submodule fetching.
+ mkdir -p m4
+ autoreconf -fi
+}
do_install() {
oe_runmake 'DESTDIR=${D}' install
diff --git a/recipes-containers/docker-compose/docker-compose_git.bb b/recipes-containers/docker-compose/docker-compose_git.bb
new file mode 100644
index 00000000..07650126
--- /dev/null
+++ b/recipes-containers/docker-compose/docker-compose_git.bb
@@ -0,0 +1,80 @@
+HOMEPAGE = "https://github.com/docker/compose"
+SUMMARY = "Multi-container orchestration for Docker"
+DESCRIPTION = "Docker compose v2"
+
+DEPENDS = " \
+ go-md2man \
+ rsync-native \
+"
+
+# Specify the first two important SRCREVs as the format
+SRCREV_FORMAT="compose_survey"
+SRCREV_compose = "3371227794f5f3645f4f19829c60a741635ed329"
+
+SRC_URI = "git://github.com/docker/compose;name=compose;branch=main;protocol=https"
+
+include src_uri.inc
+
+# patches and config
+SRC_URI += "file://modules.txt"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=175792518e4ac015ab6696d16c4f607e"
+
+GO_IMPORT = "import"
+
+PV = "v2.26.0"
+
+COMPOSE_PKG = "github.com/docker/compose/v2"
+
+inherit go goarch
+inherit pkgconfig
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+do_configure[noexec] = "1"
+
+PACKAGECONFIG ?= "docker-plugin"
+PACKAGECONFIG[docker-plugin] = ",,,docker"
+
+include relocation.inc
+
+GOBUILDFLAGS:append = " -mod=vendor"
+do_compile() {
+ cd ${S}/src/import
+
+ export GOPATH="$GOPATH:${S}/src/import/.gopath"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export GOARCH=${TARGET_GOARCH}
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+
+ # our copied .go files are to be used for the build
+ ln -sf vendor.copy vendor
+ # inform go that we know what we are doing
+ cp ${WORKDIR}/modules.txt vendor/
+
+ GO_LDFLAGS="-s -w -X internal.Version=${PV} -X ${COMPOSE_PKG}/internal.Version=${PV}"
+ GO_BUILDTAGS=""
+ mkdir -p ./bin
+ ${GO} build ${GOBUILDFLAGS} -tags "$GO_BUILDTAGS" -ldflags "$GO_LDFLAGS" -o ./bin/docker-compose ./cmd
+}
+
+do_install() {
+ if ${@bb.utils.contains('PACKAGECONFIG', 'docker-plugin', 'true', 'false', d)}; then
+ install -d ${D}${nonarch_libdir}/docker/cli-plugins
+ install -m 755 ${S}/src/import/bin/docker-compose ${D}${nonarch_libdir}/docker/cli-plugins
+ else
+ install -d ${D}${bindir}
+ install -m 755 ${S}/src/import/bin/docker-compose ${D}${bindir}
+ fi
+}
+
+
+FILES:${PN} += " ${nonarch_libdir}/docker/cli-plugins/"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
diff --git a/recipes-containers/docker-compose/files/0001-docker-compose-support-newer-minor-version-of-reques.patch b/recipes-containers/docker-compose/files/0001-docker-compose-support-newer-minor-version-of-reques.patch
deleted file mode 100644
index 48a6f25c..00000000
--- a/recipes-containers/docker-compose/files/0001-docker-compose-support-newer-minor-version-of-reques.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From b4655b5e7f1e5b87a758dfd7af01a49a40ed148a Mon Sep 17 00:00:00 2001
-From: Li Zhou <li.zhou@windriver.com>
-Date: Thu, 10 Oct 2019 15:46:20 +0800
-Subject: [PATCH] docker-compose: support newer minor version of requests
-
-Signed-off-by: Ofek Lev <ofekmeister@gmail.com>
-
-Upstream-Status: Backport
-
-Signed-off-by: Li Zhou <li.zhou@windriver.com>
----
- requirements.txt | 2 +-
- setup.py | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/requirements.txt b/requirements.txt
-index 93a0cce..42bde41 100644
---- a/requirements.txt
-+++ b/requirements.txt
-@@ -16,7 +16,7 @@ pypiwin32==219; sys_platform == 'win32' and python_version < '3.6'
- pypiwin32==220; sys_platform == 'win32' and python_version >= '3.6'
- PySocks==1.6.7
- PyYAML==3.12
--requests==2.18.4
-+requests==2.19.1
- six==1.10.0
- texttable==0.9.1
- urllib3==1.21.1
-diff --git a/setup.py b/setup.py
-index 422ba54..a74ee0f 100644
---- a/setup.py
-+++ b/setup.py
-@@ -33,7 +33,7 @@ install_requires = [
- 'cached-property >= 1.2.0, < 2',
- 'docopt >= 0.6.1, < 0.7',
- 'PyYAML >= 3.10, < 4',
-- 'requests >= 2.6.1, != 2.11.0, != 2.12.2, != 2.18.0, < 2.19',
-+ 'requests >= 2.6.1, != 2.11.0, != 2.12.2, != 2.18.0, < 2.20',
- 'texttable >= 0.9.0, < 0.10',
- 'websocket-client >= 0.32.0, < 1.0',
- 'docker >= 3.3.0, < 4.0',
---
-1.9.1
-
diff --git a/recipes-containers/docker-compose/files/modules.txt b/recipes-containers/docker-compose/files/modules.txt
new file mode 100644
index 00000000..88bd7801
--- /dev/null
+++ b/recipes-containers/docker-compose/files/modules.txt
@@ -0,0 +1,372 @@
+# github.com/AlecAivazis/survey/v2 v2.3.7
+## explicit
+# github.com/Microsoft/go-winio v0.6.1
+## explicit
+# github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
+## explicit
+# github.com/buger/goterm v1.0.4
+## explicit
+# github.com/compose-spec/compose-go/v2 v2.0.2
+## explicit
+# github.com/containerd/console v1.0.4
+## explicit
+# github.com/containerd/containerd v1.7.13
+## explicit
+# github.com/davecgh/go-spew v1.1.1
+## explicit
+# github.com/distribution/reference v0.5.0
+## explicit
+# github.com/docker/buildx v0.13.1
+## explicit
+# github.com/docker/cli v26.0.0+incompatible
+## explicit
+# github.com/docker/cli-docs-tool v0.7.0
+## explicit
+# github.com/docker/docker v26.0.0+incompatible
+## explicit
+# github.com/docker/go-connections v0.5.0
+## explicit
+# github.com/docker/go-units v0.5.0
+## explicit
+# github.com/fsnotify/fsevents v0.1.1
+## explicit
+# github.com/google/go-cmp v0.6.0
+## explicit
+# github.com/hashicorp/go-multierror v1.1.1
+## explicit
+# github.com/hashicorp/go-version v1.6.0
+## explicit
+# github.com/jonboulle/clockwork v0.4.0
+## explicit
+# github.com/mattn/go-shellwords v1.0.12
+## explicit
+# github.com/mitchellh/go-ps v1.0.0
+## explicit
+# github.com/mitchellh/mapstructure v1.5.0
+## explicit
+# github.com/moby/buildkit v0.13.1
+## explicit
+# github.com/moby/patternmatcher v0.6.0
+## explicit
+# github.com/moby/term v0.5.0
+## explicit
+# github.com/morikuni/aec v1.0.0
+## explicit
+# github.com/opencontainers/go-digest v1.0.0
+## explicit
+# github.com/opencontainers/image-spec v1.1.0-rc6
+## explicit
+# github.com/otiai10/copy v1.14.0
+## explicit
+# github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc
+## explicit
+# github.com/sirupsen/logrus v1.9.3
+## explicit
+# github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
+## explicit
+# github.com/spf13/cobra v1.8.0
+## explicit
+# github.com/spf13/pflag v1.0.5
+## explicit
+# github.com/stretchr/testify v1.8.4
+## explicit
+# github.com/theupdateframework/notary v0.7.0
+## explicit
+# github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1
+## explicit
+# go.opentelemetry.io/otel v1.21.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
+## explicit
+# go.opentelemetry.io/otel/sdk v1.21.0
+## explicit
+# go.opentelemetry.io/otel/trace v1.21.0
+## explicit
+# go.uber.org/goleak v1.3.0
+## explicit
+# go.uber.org/mock v0.4.0
+## explicit
+# golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3
+## explicit
+# golang.org/x/sync v0.6.0
+## explicit
+# golang.org/x/sys v0.16.0
+## explicit
+# google.golang.org/grpc v1.59.0
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+# gotest.tools/v3 v3.5.1
+## explicit
+# dario.cat/mergo v1.0.0
+## explicit
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+## explicit
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+## explicit
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit
+# github.com/Microsoft/hcsshim v0.11.4
+## explicit
+# github.com/aws/aws-sdk-go-v2 v1.24.1
+## explicit
+# github.com/aws/aws-sdk-go-v2/config v1.26.6
+## explicit
+# github.com/aws/aws-sdk-go-v2/credentials v1.16.16
+## explicit
+# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/sso v1.18.7
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/sts v1.26.7
+## explicit
+# github.com/aws/smithy-go v1.19.0
+## explicit
+# github.com/beorn7/perks v1.0.1
+## explicit
+# github.com/cenkalti/backoff/v4 v4.2.1
+## explicit
+# github.com/cespare/xxhash/v2 v2.2.0
+## explicit
+# github.com/containerd/continuity v0.4.3
+## explicit
+# github.com/containerd/log v0.1.0
+## explicit
+# github.com/containerd/ttrpc v1.2.2
+## explicit
+# github.com/containerd/typeurl/v2 v2.1.1
+## explicit
+# github.com/docker/distribution v2.8.3+incompatible
+## explicit
+# github.com/docker/docker-credential-helpers v0.8.0
+## explicit
+# github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c
+## explicit
+# github.com/docker/go-metrics v0.0.1
+## explicit
+# github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203
+## explicit
+# github.com/emicklei/go-restful/v3 v3.11.0
+## explicit
+# github.com/felixge/httpsnoop v1.0.4
+## explicit
+# github.com/fvbommel/sortorder v1.0.2
+## explicit
+# github.com/go-logr/logr v1.3.0
+## explicit
+# github.com/go-logr/stdr v1.2.2
+## explicit
+# github.com/go-openapi/jsonpointer v0.19.6
+## explicit
+# github.com/go-openapi/jsonreference v0.20.2
+## explicit
+# github.com/go-openapi/swag v0.22.3
+## explicit
+# github.com/gofrs/flock v0.8.1
+## explicit
+# github.com/gogo/googleapis v1.4.1
+## explicit
+# github.com/gogo/protobuf v1.3.2
+## explicit
+# github.com/golang/protobuf v1.5.3
+## explicit
+# github.com/google/gnostic-models v0.6.8
+## explicit
+# github.com/google/gofuzz v1.2.0
+## explicit
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+## explicit
+# github.com/google/uuid v1.6.0
+## explicit
+# github.com/gorilla/mux v1.8.1
+## explicit
+# github.com/gorilla/websocket v1.5.0
+## explicit
+# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
+## explicit
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+## explicit
+# github.com/hashicorp/errwrap v1.1.0
+## explicit
+# github.com/hashicorp/go-cleanhttp v0.5.2
+## explicit
+# github.com/imdario/mergo v0.3.16
+## explicit
+# github.com/in-toto/in-toto-golang v0.5.0
+## explicit
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit
+# github.com/josharian/intern v1.0.0
+## explicit
+# github.com/json-iterator/go v1.1.12
+## explicit
+# github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
+## explicit
+# github.com/klauspost/compress v1.17.4
+## explicit
+# github.com/mailru/easyjson v0.7.7
+## explicit
+# github.com/mattn/go-colorable v0.1.13
+## explicit
+# github.com/mattn/go-isatty v0.0.17
+## explicit
+# github.com/mattn/go-runewidth v0.0.15
+## explicit
+# github.com/matttproud/golang_protobuf_extensions v1.0.4
+## explicit
+# github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b
+## explicit
+# github.com/miekg/pkcs11 v1.1.1
+## explicit
+# github.com/mitchellh/copystructure v1.2.0
+## explicit
+# github.com/mitchellh/reflectwalk v1.0.2
+## explicit
+# github.com/moby/docker-image-spec v1.3.1
+## explicit
+# github.com/moby/locker v1.0.1
+## explicit
+# github.com/moby/spdystream v0.2.0
+## explicit
+# github.com/moby/sys/mountinfo v0.7.1
+## explicit
+# github.com/moby/sys/sequential v0.5.0
+## explicit
+# github.com/moby/sys/signal v0.7.0
+## explicit
+# github.com/moby/sys/symlink v0.2.0
+## explicit
+# github.com/moby/sys/user v0.1.0
+## explicit
+# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+## explicit
+# github.com/modern-go/reflect2 v1.0.2
+## explicit
+# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+## explicit
+# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
+## explicit
+# github.com/pelletier/go-toml v1.9.5
+## explicit
+# github.com/pkg/errors v0.9.1
+## explicit
+# github.com/pmezard/go-difflib v1.0.0
+## explicit
+# github.com/prometheus/client_golang v1.17.0
+## explicit
+# github.com/prometheus/client_model v0.5.0
+## explicit
+# github.com/prometheus/common v0.44.0
+## explicit
+# github.com/prometheus/procfs v0.12.0
+## explicit
+# github.com/rivo/uniseg v0.2.0
+## explicit
+# github.com/secure-systems-lab/go-securesystemslib v0.4.0
+## explicit
+# github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b
+## explicit
+# github.com/shibumi/go-pathspec v1.3.0
+## explicit
+# github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5
+## explicit
+# github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea
+## explicit
+# github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531
+## explicit
+# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+## explicit
+# github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+## explicit
+# github.com/xeipuuv/gojsonschema v1.2.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0
+## explicit
+# go.opentelemetry.io/otel/exporters/prometheus v0.42.0
+## explicit
+# go.opentelemetry.io/otel/metric v1.21.0
+## explicit
+# go.opentelemetry.io/otel/sdk/metric v1.21.0
+## explicit
+# go.opentelemetry.io/proto/otlp v1.0.0
+## explicit
+# golang.org/x/crypto v0.18.0
+## explicit
+# golang.org/x/mod v0.14.0
+## explicit
+# golang.org/x/net v0.20.0
+## explicit
+# golang.org/x/oauth2 v0.11.0
+## explicit
+# golang.org/x/term v0.16.0
+## explicit
+# golang.org/x/text v0.14.0
+## explicit
+# golang.org/x/time v0.3.0
+## explicit
+# golang.org/x/tools v0.17.0
+## explicit
+# google.golang.org/appengine v1.6.7
+## explicit
+# google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b
+## explicit
+# google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b
+## explicit
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b
+## explicit
+# google.golang.org/protobuf v1.31.0
+## explicit
+# gopkg.in/cenkalti/backoff.v1 v1.1.0
+## explicit
+# gopkg.in/inf.v0 v0.9.1
+## explicit
+# gopkg.in/yaml.v2 v2.4.0
+## explicit
+# k8s.io/api v0.29.2
+## explicit
+# k8s.io/apimachinery v0.29.2
+## explicit
+# k8s.io/apiserver v0.29.2
+## explicit
+# k8s.io/client-go v0.29.2
+## explicit
+# k8s.io/klog/v2 v2.110.1
+## explicit
+# k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
+## explicit
+# k8s.io/utils v0.0.0-20230726121419-3b25d923346b
+## explicit
+# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+## explicit
+# sigs.k8s.io/structured-merge-diff/v4 v4.4.1
+## explicit
+# sigs.k8s.io/yaml v1.3.0
+## explicit
+# tags.cncf.io/container-device-interface v0.6.2
+## explicit
diff --git a/recipes-containers/docker-compose/python3-docker-compose_1.21.2.bb b/recipes-containers/docker-compose/python3-docker-compose_1.21.2.bb
deleted file mode 100644
index a7f7b1c9..00000000
--- a/recipes-containers/docker-compose/python3-docker-compose_1.21.2.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Multi-container orchestration for Docker"
-HOMEPAGE = "https://www.docker.com/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
-
-SRC_URI += "file://0001-docker-compose-support-newer-minor-version-of-reques.patch"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "a243f59b2d286c41ff6ed1c4d4b50996"
-SRC_URI[sha256sum] = "68b07193755440d5f8d4f47e6f3484212afc255d5b785a81353ea1e9298c1c2c"
-
-RDEPENDS_${PN} = "\
- ${PYTHON_PN}-cached-property \
- ${PYTHON_PN}-certifi \
- ${PYTHON_PN}-chardet \
- ${PYTHON_PN}-colorama \
- ${PYTHON_PN}-docker \
- ${PYTHON_PN}-docker-pycreds \
- ${PYTHON_PN}-dockerpty \
- ${PYTHON_PN}-docopt \
- ${PYTHON_PN}-idna \
- ${PYTHON_PN}-jsonschema \
- ${PYTHON_PN}-pyyaml \
- ${PYTHON_PN}-requests \
- ${PYTHON_PN}-six \
- ${PYTHON_PN}-terminal \
- ${PYTHON_PN}-texttable \
- ${PYTHON_PN}-urllib3 \
- ${PYTHON_PN}-websocket-client \
- "
diff --git a/recipes-containers/docker-compose/relocation.inc b/recipes-containers/docker-compose/relocation.inc
new file mode 100644
index 00000000..ac21ca05
--- /dev/null
+++ b/recipes-containers/docker-compose/relocation.inc
@@ -0,0 +1,203 @@
+export sites="k8s.io/api:k8s.io/api:force \
+ k8s.io/utils:k8s.io/utils:force \
+ k8s.io/klog/v2:k8s.io/klog/v2:force \
+ gotest.tools/v3:gotest.tools/v3:force \
+ dario.cat/mergo:dario.cat/mergo:force \
+ gopkg.in/inf.v0:gopkg.in/inf.v0:force \
+ go.uber.org/mock:go.uber.org/mock:force \
+ golang.org/x/exp:golang.org/x/exp:force \
+ golang.org/x/sys:golang.org/x/sys:force \
+ gopkg.in/yaml.v3:gopkg.in/yaml.v3:force \
+ golang.org/x/mod:golang.org/x/mod:force \
+ golang.org/x/net:golang.org/x/net:force \
+ gopkg.in/yaml.v2:gopkg.in/yaml.v2:force \
+ k8s.io/apiserver:k8s.io/apiserver:force \
+ k8s.io/client-go:k8s.io/client-go:force \
+ sigs.k8s.io/json:sigs.k8s.io/json:force \
+ sigs.k8s.io/yaml:sigs.k8s.io/yaml:force \
+ golang.org/x/sync:golang.org/x/sync:force \
+ golang.org/x/term:golang.org/x/term:force \
+ golang.org/x/text:golang.org/x/text:force \
+ golang.org/x/time:golang.org/x/time:force \
+ go.uber.org/goleak:go.uber.org/goleak:force \
+ golang.org/x/tools:golang.org/x/tools:force \
+ golang.org/x/crypto:golang.org/x/crypto:force \
+ golang.org/x/oauth2:golang.org/x/oauth2:force \
+ k8s.io/apimachinery:k8s.io/apimachinery:force \
+ k8s.io/kube-openapi:k8s.io/kube-openapi:force \
+ github.com/moby/term:github.com/moby/term:force \
+ github.com/docker/go:github.com/docker/go:force \
+ github.com/docker/cli:github.com/docker/cli:force \
+ github.com/r3labs/sse:github.com/r3labs/sse:force \
+ github.com/mgutz/ansi:github.com/mgutz/ansi:force \
+ github.com/pkg/errors:github.com/pkg/errors:force \
+ github.com/spf13/cobra:github.com/spf13/cobra:force \
+ github.com/spf13/pflag:github.com/spf13/pflag:force \
+ google.golang.org/grpc:google.golang.org/grpc:force \
+ github.com/gofrs/flock:github.com/gofrs/flock:force \
+ github.com/google/uuid:github.com/google/uuid:force \
+ github.com/gorilla/mux:github.com/gorilla/mux:force \
+ github.com/moby/locker:github.com/moby/locker:force \
+ github.com/rivo/uniseg:github.com/rivo/uniseg:force \
+ github.com/buger/goterm:github.com/buger/goterm:force \
+ github.com/morikuni/aec:github.com/morikuni/aec:force \
+ github.com/otiai10/copy:github.com/otiai10/copy:force \
+ github.com/beorn7/perks:github.com/beorn7/perks:force \
+ github.com/go-logr/logr:github.com/go-logr/logr:force \
+ github.com/go-logr/stdr:github.com/go-logr/stdr:force \
+ github.com/google/shlex:github.com/google/shlex:force \
+ github.com/miekg/pkcs11:github.com/miekg/pkcs11:force \
+ github.com/docker/buildx:github.com/docker/buildx:force \
+ github.com/docker/docker:github.com/docker/docker:force \
+ github.com/google/go-cmp:github.com/google/go-cmp:force \
+ github.com/moby/buildkit:github.com/moby/buildkit:force \
+ go.opentelemetry.io/otel:go.opentelemetry.io/otel:force \
+ github.com/aws/smithy-go:github.com/aws/smithy-go:force \
+ github.com/gogo/protobuf:github.com/gogo/protobuf:force \
+ github.com/google/gofuzz:github.com/google/gofuzz:force \
+ github.com/imdario/mergo:github.com/imdario/mergo:force \
+ github.com/containerd/log:github.com/containerd/log:force \
+ github.com/davecgh/go-spew:github.com/davecgh/go-spew:force \
+ github.com/docker/go-units:github.com/docker/go-units:force \
+ github.com/mitchellh/go-ps:github.com/mitchellh/go-ps:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus:force \
+ github.com/go-openapi/swag:github.com/go-openapi/swag:force \
+ github.com/gogo/googleapis:github.com/gogo/googleapis:force \
+ github.com/golang/protobuf:github.com/golang/protobuf:force \
+ github.com/mailru/easyjson:github.com/mailru/easyjson:force \
+ github.com/mattn/go-isatty:github.com/mattn/go-isatty:force \
+ github.com/moby/spdystream:github.com/moby/spdystream:force \
+ github.com/mxk/go-flowrate:github.com/mxk/go-flowrate:force \
+ google.golang.org/genproto:google.golang.org/genproto:force \
+ google.golang.org/protobuf:google.golang.org/protobuf:force \
+ github.com/moby/sys/user:github.com/moby/sys/user/user:force \
+ github.com/stretchr/testify:github.com/stretchr/testify:force \
+ github.com/containerd/ttrpc:github.com/containerd/ttrpc:force \
+ github.com/josharian/intern:github.com/josharian/intern:force \
+ github.com/json-iterator/go:github.com/json-iterator/go:force \
+ github.com/serialx/hashring:github.com/serialx/hashring:force \
+ github.com/tonistiigi/units:github.com/tonistiigi/units:force \
+ github.com/tonistiigi/vt100:github.com/tonistiigi/vt100:force \
+ google.golang.org/appengine:google.golang.org/appengine:force \
+ github.com/fsnotify/fsevents:github.com/fsnotify/fsevents:force \
+ github.com/tilt-dev/fsnotify:github.com/tilt-dev/fsnotify:force \
+ github.com/Azure/go-ansiterm:github.com/Azure/go-ansiterm:force \
+ github.com/Microsoft/hcsshim:github.com/Microsoft/hcsshim:force \
+ github.com/aws/aws-sdk-go-v2:github.com/aws/aws-sdk-go-v2:force \
+ github.com/cespare/xxhash/v2:github.com/cespare/xxhash/v2:force \
+ github.com/docker/go-metrics:github.com/docker/go-metrics:force \
+ github.com/eiannone/keyboard:github.com/eiannone/keyboard:force \
+ github.com/felixge/httpsnoop:github.com/felixge/httpsnoop:force \
+ github.com/gorilla/websocket:github.com/gorilla/websocket:force \
+ github.com/hashicorp/errwrap:github.com/hashicorp/errwrap:force \
+ github.com/munnerz/goautoneg:github.com/munnerz/goautoneg:force \
+ github.com/pelletier/go-toml:github.com/pelletier/go-toml:force \
+ github.com/prometheus/common:github.com/prometheus/common:force \
+ github.com/prometheus/procfs:github.com/prometheus/procfs:force \
+ github.com/tonistiigi/fsutil:github.com/tonistiigi/fsutil:force \
+ gopkg.in/cenkalti/backoff.v1:gopkg.in/cenkalti/backoff.v1:force \
+ github.com/Microsoft/go-winio:github.com/Microsoft/go-winio:force \
+ github.com/acarl005/stripansi:github.com/acarl005/stripansi:force \
+ github.com/containerd/console:github.com/containerd/console:force \
+ github.com/fvbommel/sortorder:github.com/fvbommel/sortorder:force \
+ github.com/klauspost/compress:github.com/klauspost/compress:force \
+ github.com/mattn/go-colorable:github.com/mattn/go-colorable:force \
+ github.com/mattn/go-runewidth:github.com/mattn/go-runewidth:force \
+ github.com/modern-go/reflect2:github.com/modern-go/reflect2:force \
+ github.com/pmezard/go-difflib:github.com/pmezard/go-difflib:force \
+ github.com/moby/sys/signal:github.com/moby/sys/signal/signal:force \
+ github.com/jonboulle/clockwork:github.com/jonboulle/clockwork:force \
+ github.com/mattn/go-shellwords:github.com/mattn/go-shellwords:force \
+ github.com/moby/patternmatcher:github.com/moby/patternmatcher:force \
+ go.opentelemetry.io/otel/sdk:go.opentelemetry.io/otel/sdk/sdk:force \
+ github.com/cenkalti/backoff/v4:github.com/cenkalti/backoff/v4:force \
+ github.com/docker/distribution:github.com/docker/distribution:force \
+ github.com/shibumi/go-pathspec:github.com/shibumi/go-pathspec:force \
+ github.com/docker/cli-docs-tool:github.com/docker/cli-docs-tool:force \
+ github.com/hashicorp/go-version:github.com/hashicorp/go-version:force \
+ github.com/moby/sys/symlink:github.com/moby/sys/symlink/symlink:force \
+ github.com/modern-go/concurrent:github.com/modern-go/concurrent:force \
+ github.com/xeipuuv/gojsonschema:github.com/xeipuuv/gojsonschema:force \
+ github.com/AlecAivazis/survey/v2:github.com/AlecAivazis/survey/v2:force \
+ github.com/containerd/containerd:github.com/containerd/containerd:force \
+ github.com/docker/go-connections:github.com/docker/go-connections:force \
+ github.com/Masterminds/semver/v3:github.com/Masterminds/semver/v3:force \
+ github.com/containerd/continuity:github.com/containerd/continuity:force \
+ github.com/containerd/typeurl/v2:github.com/containerd/typeurl/v2:force \
+ github.com/google/gnostic-models:github.com/google/gnostic-models:force \
+ github.com/mitchellh/reflectwalk:github.com/mitchellh/reflectwalk:force \
+ github.com/xeipuuv/gojsonpointer:github.com/xeipuuv/gojsonpointer:force \
+ go.opentelemetry.io/proto/otlp:go.opentelemetry.io/proto/otlp/otlp:force \
+ github.com/distribution/reference:github.com/distribution/reference:force \
+ github.com/mitchellh/mapstructure:github.com/mitchellh/mapstructure:force \
+ github.com/skratchdot/open-golang:github.com/skratchdot/open-golang:force \
+ go.opentelemetry.io/otel/trace:go.opentelemetry.io/otel/trace/trace:force \
+ github.com/emicklei/go-restful/v3:github.com/emicklei/go-restful/v3:force \
+ github.com/go-openapi/jsonpointer:github.com/go-openapi/jsonpointer:force \
+ github.com/hashicorp/go-cleanhttp:github.com/hashicorp/go-cleanhttp:force \
+ github.com/in-toto/in-toto-golang:github.com/in-toto/in-toto-golang:force \
+ github.com/kballard/go-shellquote:github.com/kballard/go-shellquote:force \
+ github.com/moby/docker-image-spec:github.com/moby/docker-image-spec:force \
+ github.com/hashicorp/go-multierror:github.com/hashicorp/go-multierror:force \
+ github.com/mitchellh/copystructure:github.com/mitchellh/copystructure:force \
+ github.com/moby/sys/mountinfo:github.com/moby/sys/mountinfo/mountinfo:force \
+ github.com/prometheus/client_model:github.com/prometheus/client_model:force \
+ github.com/xeipuuv/gojsonreference:github.com/xeipuuv/gojsonreference:force \
+ go.opentelemetry.io/otel/metric:go.opentelemetry.io/otel/metric/metric:force \
+ github.com/opencontainers/go-digest:github.com/opencontainers/go-digest:force \
+ github.com/go-openapi/jsonreference:github.com/go-openapi/jsonreference:force \
+ github.com/prometheus/client_golang:github.com/prometheus/client_golang:force \
+ github.com/moby/sys/sequential:github.com/moby/sys/sequential/sequential:force \
+ github.com/opencontainers/image-spec:github.com/opencontainers/image-spec:force \
+ github.com/theupdateframework/notary:github.com/theupdateframework/notary:force \
+ github.com/AdaLogics/go-fuzz-headers:github.com/AdaLogics/go-fuzz-headers:force \
+ github.com/inconshreveable/mousetrap:github.com/inconshreveable/mousetrap:force \
+ sigs.k8s.io/structured-merge-diff/v4:sigs.k8s.io/structured-merge-diff/v4:force \
+ github.com/compose-spec/compose-go/v2:github.com/compose-spec/compose-go/v2:force \
+ github.com/aws/aws-sdk-go-v2/config:github.com/aws/aws-sdk-go-v2/config/config:force \
+ tags.cncf.io/container-device-interface:tags.cncf.io/container-device-interface:force \
+ go.opentelemetry.io/otel/sdk/metric:go.opentelemetry.io/otel/sdk/metric/sdk/metric:force \
+ github.com/grpc-ecosystem/grpc-gateway/v2:github.com/grpc-ecosystem/grpc-gateway/v2:force \
+ github.com/docker/docker-credential-helpers:github.com/docker/docker-credential-helpers:force \
+ github.com/grpc-ecosystem/go-grpc-middleware:github.com/grpc-ecosystem/go-grpc-middleware:force \
+ github.com/aws/aws-sdk-go-v2/credentials:github.com/aws/aws-sdk-go-v2/credentials/credentials:force \
+ github.com/aws/aws-sdk-go-v2/service/sso:github.com/aws/aws-sdk-go-v2/service/sso/service/sso:force \
+ github.com/aws/aws-sdk-go-v2/service/sts:github.com/aws/aws-sdk-go-v2/service/sts/service/sts:force \
+ github.com/aws/aws-sdk-go-v2/internal/ini:github.com/aws/aws-sdk-go-v2/internal/ini/internal/ini:force \
+ github.com/matttproud/golang_protobuf_extensions:github.com/matttproud/golang_protobuf_extensions:force \
+ google.golang.org/genproto/googleapis/api:google.golang.org/genproto/googleapis/api/googleapis/api:force \
+ google.golang.org/genproto/googleapis/rpc:google.golang.org/genproto/googleapis/rpc/googleapis/rpc:force \
+ github.com/secure-systems-lab/go-securesystemslib:github.com/secure-systems-lab/go-securesystemslib:force \
+ github.com/aws/aws-sdk-go-v2/service/ssooidc:github.com/aws/aws-sdk-go-v2/service/ssooidc/service/ssooidc:force \
+ github.com/aws/aws-sdk-go-v2/feature/ec2/imds:github.com/aws/aws-sdk-go-v2/feature/ec2/imds/feature/ec2/imds:force \
+ go.opentelemetry.io/otel/exporters/prometheus:go.opentelemetry.io/otel/exporters/prometheus/exporters/prometheus:force \
+ github.com/aws/aws-sdk-go-v2/internal/endpoints/v2:github.com/aws/aws-sdk-go-v2/internal/endpoints/v2/internal/endpoints/v2:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace:go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporters/otlp/otlptrace:force \
+ github.com/aws/aws-sdk-go-v2/internal/configsources:github.com/aws/aws-sdk-go-v2/internal/configsources/internal/configsources:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric:go.opentelemetry.io/otel/exporters/otlp/otlpmetric/exporters/otlp/otlpmetric:force \
+ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url:github.com/aws/aws-sdk-go-v2/service/internal/presigned-url/service/internal/presigned-url:force \
+ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding:github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding/service/internal/accept-encoding:force \
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp:go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/instrumentation/net/http/otelhttp:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc:go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporters/otlp/otlptrace/otlptracegrpc:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp:go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp/exporters/otlp/otlptrace/otlptracehttp:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc:go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc/exporters/otlp/otlpmetric/otlpmetricgrpc:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp:go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp/exporters/otlp/otlpmetric/otlpmetrichttp:force \
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc:go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/instrumentation/google.golang.org/grpc/otelgrpc:force \
+ go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace:go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace/instrumentation/net/http/httptrace/otelhttptrace:force"
+
+do_compile:prepend() {
+ cd ${S}/src/import
+ for s in $sites; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+}
diff --git a/recipes-containers/docker-compose/src_uri.inc b/recipes-containers/docker-compose/src_uri.inc
new file mode 100644
index 00000000..1978abc7
--- /dev/null
+++ b/recipes-containers/docker-compose/src_uri.inc
@@ -0,0 +1,930 @@
+# k8s.io/api v0.29.2
+# [1] git ls-remote https://github.com/kubernetes/api d47313059888ec984bf8432ed155fae5be935c31
+SRCREV_k8s.io-api="d47313059888ec984bf8432ed155fae5be935c31"
+SRC_URI += "git://github.com/kubernetes/api;name=k8s.io-api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/api"
+
+# k8s.io/utils v0.0.0-20230726121419-3b25d923346b
+# [1] git ls-remote https://github.com/kubernetes/utils 3b25d923346b3814e0898684c97390092f31a61e
+SRCREV_utils="3b25d923346b3814e0898684c97390092f31a61e"
+SRC_URI += "git://github.com/kubernetes/utils;name=utils;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/utils"
+
+# k8s.io/klog/v2 v2.110.1
+# [1] git ls-remote https://github.com/kubernetes/klog e3f75b8af2707d64b5dd4c440ae8384ed2f2c386
+SRCREV_klog-v2="e3f75b8af2707d64b5dd4c440ae8384ed2f2c386"
+SRC_URI += "git://github.com/kubernetes/klog;name=klog-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/klog/v2"
+
+# gotest.tools/v3 v3.5.1
+# [1] git ls-remote https://github.com/gotestyourself/gotest.tools 81cea1abc596b025bf2573c7fdf97740512e4c6c
+SRCREV_v3="81cea1abc596b025bf2573c7fdf97740512e4c6c"
+SRC_URI += "git://github.com/gotestyourself/gotest.tools;name=v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gotest.tools/v3"
+
+# dario.cat/mergo v1.0.0
+# [1] git ls-remote https://github.com/imdario/mergo 131de815afc35a77c41ae99da6c8f4288b6cb513
+SRCREV_mergo="131de815afc35a77c41ae99da6c8f4288b6cb513"
+SRC_URI += "git://github.com/imdario/mergo;name=mergo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/dario.cat/mergo"
+
+# gopkg.in/inf.v0 v0.9.1
+# [1] git ls-remote https://github.com/go-inf/inf d2d2541c53f18d2a059457998ce2876cc8e67cbf
+SRCREV_inf.v0="d2d2541c53f18d2a059457998ce2876cc8e67cbf"
+SRC_URI += "git://github.com/go-inf/inf;name=inf.v0;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/inf.v0"
+
+# go.uber.org/mock v0.4.0
+# [1] git ls-remote https://github.com/uber/mock 74a29c6e6c2cbb8ccee94db061c1604ff33fd188
+SRCREV_mock="74a29c6e6c2cbb8ccee94db061c1604ff33fd188"
+SRC_URI += "git://github.com/uber/mock;name=mock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/mock"
+
+# golang.org/x/exp v0.0.0-20240112132812-db7319d0e0e3
+# [1] git ls-remote https://go.googlesource.com/exp db7319d0e0e361ccef5c449b760df8e5f2d5087c
+SRCREV_exp="db7319d0e0e361ccef5c449b760df8e5f2d5087c"
+SRC_URI += "git://go.googlesource.com/exp;name=exp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/exp"
+
+# golang.org/x/sys v0.16.0
+# [1] git ls-remote https://go.googlesource.com/sys 0829ab15b6946f47c40012db2e0c04772730317d
+SRCREV_sys="0829ab15b6946f47c40012db2e0c04772730317d"
+SRC_URI += "git://go.googlesource.com/sys;name=sys;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sys"
+
+# gopkg.in/yaml.v3 v3.0.1
+# [1] git ls-remote https://github.com/go-yaml/yaml f6f7691b1fdeb513f56608cd2c32c51f8194bf51
+SRCREV_yaml.v3="f6f7691b1fdeb513f56608cd2c32c51f8194bf51"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v3"
+
+# golang.org/x/mod v0.14.0
+# [1] git ls-remote https://go.googlesource.com/mod 6e58e47c7bd6672665dc35cce7b1f325d2addd67
+SRCREV_mod="6e58e47c7bd6672665dc35cce7b1f325d2addd67"
+SRC_URI += "git://go.googlesource.com/mod;name=mod;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/mod"
+
+# golang.org/x/net v0.20.0
+# [1] git ls-remote https://go.googlesource.com/net cb5b10f0bbc51089bf49030ce3bd43bbfee08c23
+SRCREV_net="cb5b10f0bbc51089bf49030ce3bd43bbfee08c23"
+SRC_URI += "git://go.googlesource.com/net;name=net;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/net"
+
+# gopkg.in/yaml.v2 v2.4.0
+# [1] git ls-remote https://github.com/go-yaml/yaml 7649d4548cb53a614db133b2a8ac1f31859dda8c
+SRCREV_yaml.v2="7649d4548cb53a614db133b2a8ac1f31859dda8c"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v2"
+
+# k8s.io/apiserver v0.29.2
+# [1] git ls-remote https://github.com/kubernetes/apiserver 4c39f36a732cfb11f3fc75110c7301336b6b64e3
+SRCREV_apiserver="4c39f36a732cfb11f3fc75110c7301336b6b64e3"
+SRC_URI += "git://github.com/kubernetes/apiserver;name=apiserver;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/apiserver"
+
+# k8s.io/client-go v0.29.2
+# [1] git ls-remote https://github.com/kubernetes/client-go 62c5e9e7b4bd09d2b43dcad1464376322398e994
+SRCREV_client-go="62c5e9e7b4bd09d2b43dcad1464376322398e994"
+SRC_URI += "git://github.com/kubernetes/client-go;name=client-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/client-go"
+
+# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+# [1] git ls-remote https://github.com/kubernetes-sigs/json bc3834ca7abd3a90f03ef00a27ad80cb892f9c21
+SRCREV_json="bc3834ca7abd3a90f03ef00a27ad80cb892f9c21"
+SRC_URI += "git://github.com/kubernetes-sigs/json;name=json;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/json"
+
+# sigs.k8s.io/yaml v1.3.0
+# [1] git ls-remote https://github.com/kubernetes-sigs/yaml 9535b3b1e2893fe44efb37c5c9f5665e245d786a
+SRCREV_yaml="9535b3b1e2893fe44efb37c5c9f5665e245d786a"
+SRC_URI += "git://github.com/kubernetes-sigs/yaml;name=yaml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/yaml"
+
+# golang.org/x/sync v0.6.0
+# [1] git ls-remote https://go.googlesource.com/sync 59c1ca1e4661ed4452be4069ceea3c233f4deec1
+SRCREV_sync="59c1ca1e4661ed4452be4069ceea3c233f4deec1"
+SRC_URI += "git://go.googlesource.com/sync;name=sync;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sync"
+
+# golang.org/x/term v0.16.0
+# [1] git ls-remote https://go.googlesource.com/term ae941452f58ff9bf62f7e9dca3ea6ae3d214a68b
+SRCREV_x-term="ae941452f58ff9bf62f7e9dca3ea6ae3d214a68b"
+SRC_URI += "git://go.googlesource.com/term;name=x-term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/term"
+
+# golang.org/x/text v0.14.0
+# [1] git ls-remote https://go.googlesource.com/text 6c97a165dd661335ff7bce6104a008558123c353
+SRCREV_text="6c97a165dd661335ff7bce6104a008558123c353"
+SRC_URI += "git://go.googlesource.com/text;name=text;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/text"
+
+# golang.org/x/time v0.3.0
+# [1] git ls-remote https://go.googlesource.com/time 2c09566ef13fb5556401ddff3c53c3dbc2a42dac
+SRCREV_time="2c09566ef13fb5556401ddff3c53c3dbc2a42dac"
+SRC_URI += "git://go.googlesource.com/time;name=time;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/time"
+
+# go.uber.org/goleak v1.3.0
+# [1] git ls-remote https://github.com/uber-go/goleak 31095c657c34bba405a8d480db27989aa5f60b9c
+SRCREV_goleak="31095c657c34bba405a8d480db27989aa5f60b9c"
+SRC_URI += "git://github.com/uber-go/goleak;name=goleak;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/goleak"
+
+# golang.org/x/tools v0.17.0
+# [1] git ls-remote https://go.googlesource.com/tools 0b1f1d4bc227cc2e610854f23e14696becb9e46c
+SRCREV_tools="0b1f1d4bc227cc2e610854f23e14696becb9e46c"
+SRC_URI += "git://go.googlesource.com/tools;name=tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/tools"
+
+# golang.org/x/crypto v0.18.0
+# [1] git ls-remote https://go.googlesource.com/crypto dbb6ec16ecef7a66638d8514be54b13660551b0a
+SRCREV_crypto="dbb6ec16ecef7a66638d8514be54b13660551b0a"
+SRC_URI += "git://go.googlesource.com/crypto;name=crypto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/crypto"
+
+# golang.org/x/oauth2 v0.11.0
+# [1] git ls-remote https://go.googlesource.com/oauth2 2e4a4e2bfb69ca7609cb423438c55caa131431c1
+SRCREV_oauth2="2e4a4e2bfb69ca7609cb423438c55caa131431c1"
+SRC_URI += "git://go.googlesource.com/oauth2;name=oauth2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/oauth2"
+
+# k8s.io/apimachinery v0.29.2
+# [1] git ls-remote https://github.com/kubernetes/apimachinery dc7e034c86479d49be4b0eefad307621e10caa0e
+SRCREV_apimachinery="dc7e034c86479d49be4b0eefad307621e10caa0e"
+SRC_URI += "git://github.com/kubernetes/apimachinery;name=apimachinery;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/apimachinery"
+
+# k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00
+# [1] git ls-remote https://github.com/kubernetes/kube-openapi 2dd684a91f00351087fe2f4ed5408d4d2f3775ab
+SRCREV_kube-openapi="2dd684a91f00351087fe2f4ed5408d4d2f3775ab"
+SRC_URI += "git://github.com/kubernetes/kube-openapi;name=kube-openapi;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/kube-openapi"
+
+# github.com/moby/term v0.5.0
+# [1] git ls-remote https://github.com/moby/term 9c3c875fad924eb6c9dd32a361b5fc0a49a4feb9
+SRCREV_term="9c3c875fad924eb6c9dd32a361b5fc0a49a4feb9"
+SRC_URI += "git://github.com/moby/term;name=term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/term"
+
+# github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c
+# [1] git ls-remote https://github.com/docker/go d30aec9fd63c35133f8f79c3412ad91a3b08be06
+SRCREV_go="d30aec9fd63c35133f8f79c3412ad91a3b08be06"
+SRC_URI += "git://github.com/docker/go;name=go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go"
+
+# github.com/docker/cli v26.0.0+incompatible
+# [1] git ls-remote https://github.com/docker/cli 2ae903e86cab51f694c819721cdfdf5eec693720
+SRCREV_cli="2ae903e86cab51f694c819721cdfdf5eec693720"
+SRC_URI += "git://github.com/docker/cli;name=cli;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/cli"
+
+# github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc
+# [1] git ls-remote https://github.com/r3labs/sse 26fe804710bc39ea7ea6636d36f27c438bd2c06f
+SRCREV_sse="26fe804710bc39ea7ea6636d36f27c438bd2c06f"
+SRC_URI += "git://github.com/r3labs/sse;name=sse;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/r3labs/sse"
+
+# github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b
+# [1] git ls-remote https://github.com/mgutz/ansi 9520e82c474b0a04dd04f8a40959027271bab992
+SRCREV_ansi="9520e82c474b0a04dd04f8a40959027271bab992"
+SRC_URI += "git://github.com/mgutz/ansi;name=ansi;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mgutz/ansi"
+
+# github.com/pkg/errors v0.9.1
+# [1] git ls-remote https://github.com/pkg/errors 614d223910a179a466c1767a985424175c39b465
+SRCREV_errors="614d223910a179a466c1767a985424175c39b465"
+SRC_URI += "git://github.com/pkg/errors;name=errors;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pkg/errors"
+
+# github.com/spf13/cobra v1.8.0
+# [1] git ls-remote https://github.com/spf13/cobra a0a6ae020bb3899ff0276067863e50523f897370
+SRCREV_cobra="a0a6ae020bb3899ff0276067863e50523f897370"
+SRC_URI += "git://github.com/spf13/cobra;name=cobra;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/cobra"
+
+# github.com/spf13/pflag v1.0.5
+# [1] git ls-remote https://github.com/spf13/pflag 2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab
+SRCREV_pflag="2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab"
+SRC_URI += "git://github.com/spf13/pflag;name=pflag;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/pflag"
+
+# google.golang.org/grpc v1.59.0
+# [1] git ls-remote https://github.com/grpc/grpc-go 7765221f4bf6104973db7946d56936cf838cad46
+SRCREV_grpc="7765221f4bf6104973db7946d56936cf838cad46"
+SRC_URI += "git://github.com/grpc/grpc-go;name=grpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/grpc"
+
+# github.com/gofrs/flock v0.8.1
+# [1] git ls-remote https://github.com/gofrs/flock 6f010d1acea74a32f2f2066bfe324c08bbee30e3
+SRCREV_flock="6f010d1acea74a32f2f2066bfe324c08bbee30e3"
+SRC_URI += "git://github.com/gofrs/flock;name=flock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gofrs/flock"
+
+# github.com/google/uuid v1.6.0
+# [1] git ls-remote https://github.com/google/uuid 0f11ee6918f41a04c201eceeadf612a377bc7fbc
+SRCREV_uuid="0f11ee6918f41a04c201eceeadf612a377bc7fbc"
+SRC_URI += "git://github.com/google/uuid;name=uuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/uuid"
+
+# github.com/gorilla/mux v1.8.1
+# [1] git ls-remote https://github.com/gorilla/mux b4617d0b9670ad14039b2739167fd35a60f557c5
+SRCREV_mux="b4617d0b9670ad14039b2739167fd35a60f557c5"
+SRC_URI += "git://github.com/gorilla/mux;name=mux;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gorilla/mux"
+
+# github.com/moby/locker v1.0.1
+# [1] git ls-remote https://github.com/moby/locker 281af2d563954745bea9d1487c965f24d30742fe
+SRCREV_locker="281af2d563954745bea9d1487c965f24d30742fe"
+SRC_URI += "git://github.com/moby/locker;name=locker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/locker"
+
+# github.com/rivo/uniseg v0.2.0
+# [1] git ls-remote https://github.com/rivo/uniseg 75711fccf6a3e85bc74c241e2dddd06a9bc9e53d
+SRCREV_uniseg="75711fccf6a3e85bc74c241e2dddd06a9bc9e53d"
+SRC_URI += "git://github.com/rivo/uniseg;name=uniseg;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rivo/uniseg"
+
+# github.com/buger/goterm v1.0.4
+# [1] git ls-remote https://github.com/buger/goterm a73545aae7d693f786ce4cc687460efca4845f31
+SRCREV_goterm="a73545aae7d693f786ce4cc687460efca4845f31"
+SRC_URI += "git://github.com/buger/goterm;name=goterm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/buger/goterm"
+
+# github.com/morikuni/aec v1.0.0
+# [1] git ls-remote https://github.com/morikuni/aec 39771216ff4c63d11f5e604076f9c45e8be1067b
+SRCREV_aec="39771216ff4c63d11f5e604076f9c45e8be1067b"
+SRC_URI += "git://github.com/morikuni/aec;name=aec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/morikuni/aec"
+
+# github.com/otiai10/copy v1.14.0
+# [1] git ls-remote https://github.com/otiai10/copy fba066acb0eb6e25d510073787741c0a8b31bf1e
+SRCREV_copy="fba066acb0eb6e25d510073787741c0a8b31bf1e"
+SRC_URI += "git://github.com/otiai10/copy;name=copy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/otiai10/copy"
+
+# github.com/beorn7/perks v1.0.1
+# [1] git ls-remote https://github.com/beorn7/perks 37c8de3658fcb183f997c4e13e8337516ab753e6
+SRCREV_perks="37c8de3658fcb183f997c4e13e8337516ab753e6"
+SRC_URI += "git://github.com/beorn7/perks;name=perks;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/beorn7/perks"
+
+# github.com/go-logr/logr v1.3.0
+# [1] git ls-remote https://github.com/go-logr/logr 8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f
+SRCREV_logr="8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f"
+SRC_URI += "git://github.com/go-logr/logr;name=logr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/logr"
+
+# github.com/go-logr/stdr v1.2.2
+# [1] git ls-remote https://github.com/go-logr/stdr 521af2addfa7c81c8a65d0e85ed34bb6bb6dc262
+SRCREV_stdr="521af2addfa7c81c8a65d0e85ed34bb6bb6dc262"
+SRC_URI += "git://github.com/go-logr/stdr;name=stdr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/stdr"
+
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+# [1] git ls-remote https://github.com/google/shlex e7afc7fbc51079733e9468cdfd1efcd7d196cd1d
+SRCREV_shlex="e7afc7fbc51079733e9468cdfd1efcd7d196cd1d"
+SRC_URI += "git://github.com/google/shlex;name=shlex;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/shlex"
+
+# github.com/miekg/pkcs11 v1.1.1
+# [1] git ls-remote https://github.com/miekg/pkcs11 f3481918a208bd212aa995a41f92d786eb418a7d
+SRCREV_pkcs11="f3481918a208bd212aa995a41f92d786eb418a7d"
+SRC_URI += "git://github.com/miekg/pkcs11;name=pkcs11;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/miekg/pkcs11"
+
+# github.com/docker/buildx v0.13.1
+# [1] git ls-remote https://github.com/docker/buildx 788433953af10f2a698f5c07611dddce2e08c7a0
+SRCREV_buildx="788433953af10f2a698f5c07611dddce2e08c7a0"
+SRC_URI += "git://github.com/docker/buildx;name=buildx;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/buildx"
+
+# github.com/docker/docker v26.0.0+incompatible
+# [1] git ls-remote https://github.com/moby/moby 8b79278316b532d396048bc8c2fa015a85d53a53
+SRCREV_docker="8b79278316b532d396048bc8c2fa015a85d53a53"
+SRC_URI += "git://github.com/moby/moby;name=docker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker"
+
+# github.com/google/go-cmp v0.6.0
+# [1] git ls-remote https://github.com/google/go-cmp c3ad8435e7bef96af35732bc0789e5a2278c6d5f
+SRCREV_go-cmp="c3ad8435e7bef96af35732bc0789e5a2278c6d5f"
+SRC_URI += "git://github.com/google/go-cmp;name=go-cmp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/go-cmp"
+
+# github.com/moby/buildkit v0.13.1
+# [1] git ls-remote https://github.com/moby/buildkit 2ae42e0c0c793d7d66b7a23424af6fd6c2f9c8f3
+SRCREV_buildkit="2ae42e0c0c793d7d66b7a23424af6fd6c2f9c8f3"
+SRC_URI += "git://github.com/moby/buildkit;name=buildkit;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/buildkit"
+
+# go.opentelemetry.io/otel v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_otel="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otel;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel"
+
+# github.com/aws/smithy-go v1.19.0
+# [1] git ls-remote https://github.com/aws/smithy-go f982aed889669e4bc6f1cd03f56697f1b27964a4
+SRCREV_smithy-go="f982aed889669e4bc6f1cd03f56697f1b27964a4"
+SRC_URI += "git://github.com/aws/smithy-go;name=smithy-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/smithy-go"
+
+# github.com/gogo/protobuf v1.3.2
+# [1] git ls-remote https://github.com/gogo/protobuf b03c65ea87cdc3521ede29f62fe3ce239267c1bc
+SRCREV_protobuf="b03c65ea87cdc3521ede29f62fe3ce239267c1bc"
+SRC_URI += "git://github.com/gogo/protobuf;name=protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gogo/protobuf"
+
+# github.com/google/gofuzz v1.2.0
+# [1] git ls-remote https://github.com/google/gofuzz 379e164120fbc98885a8f494b5aa41ba94f64c56
+SRCREV_gofuzz="379e164120fbc98885a8f494b5aa41ba94f64c56"
+SRC_URI += "git://github.com/google/gofuzz;name=gofuzz;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gofuzz"
+
+# github.com/imdario/mergo v0.3.16
+# [1] git ls-remote https://github.com/darccio/mergo 14fe2b165b83359196f820886a2b24f2771729e9
+SRCREV_imdario-mergo="14fe2b165b83359196f820886a2b24f2771729e9"
+SRC_URI += "git://github.com/darccio/mergo;name=imdario-mergo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/imdario/mergo"
+
+# github.com/moby/sys/user v0.1.0
+# [1] git ls-remote https://github.com/moby/sys c0711cde08c8fa33857a2c28721659267f49b5e2
+SRCREV_user="c0711cde08c8fa33857a2c28721659267f49b5e2"
+SRC_URI += "git://github.com/moby/sys;name=user;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/user"
+
+# github.com/containerd/log v0.1.0
+# [1] git ls-remote https://github.com/containerd/log 0fc1e28871fdf2786e2cc51bbe4133db6547a199
+SRCREV_log="0fc1e28871fdf2786e2cc51bbe4133db6547a199"
+SRC_URI += "git://github.com/containerd/log;name=log;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/log"
+
+# github.com/davecgh/go-spew v1.1.1
+# [1] git ls-remote https://github.com/davecgh/go-spew 8991bc29aa16c548c550c7ff78260e27b9ab7c73
+SRCREV_go-spew="8991bc29aa16c548c550c7ff78260e27b9ab7c73"
+SRC_URI += "git://github.com/davecgh/go-spew;name=go-spew;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/davecgh/go-spew"
+
+# github.com/docker/go-units v0.5.0
+# [1] git ls-remote https://github.com/docker/go-units e682442797b36348f8e1f98defdbf32bac0b6c6f
+SRCREV_go-units="e682442797b36348f8e1f98defdbf32bac0b6c6f"
+SRC_URI += "git://github.com/docker/go-units;name=go-units;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-units"
+
+# github.com/mitchellh/go-ps v1.0.0
+# [1] git ls-remote https://github.com/mitchellh/go-ps 147ff83818ae939913b2e20b91ae3cd6c391771c
+SRCREV_go-ps="147ff83818ae939913b2e20b91ae3cd6c391771c"
+SRC_URI += "git://github.com/mitchellh/go-ps;name=go-ps;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/go-ps"
+
+# github.com/sirupsen/logrus v1.9.3
+# [1] git ls-remote https://github.com/sirupsen/logrus d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd
+SRCREV_logrus="d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd"
+SRC_URI += "git://github.com/sirupsen/logrus;name=logrus;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/sirupsen/logrus"
+
+# github.com/go-openapi/swag v0.22.3
+# [1] git ls-remote https://github.com/go-openapi/swag 0579829e66fde26b27d401921afb73704c4d463d
+SRCREV_swag="0579829e66fde26b27d401921afb73704c4d463d"
+SRC_URI += "git://github.com/go-openapi/swag;name=swag;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/swag"
+
+# github.com/gogo/googleapis v1.4.1
+# [1] git ls-remote https://github.com/gogo/googleapis 1f0e43f50bc0606e385ffae1bc80b5b231dcd042
+SRCREV_googleapis="1f0e43f50bc0606e385ffae1bc80b5b231dcd042"
+SRC_URI += "git://github.com/gogo/googleapis;name=googleapis;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gogo/googleapis"
+
+# github.com/golang/protobuf v1.5.3
+# [1] git ls-remote https://github.com/golang/protobuf 5d5e8c018a13017f9d5b8bf4fad64aaa42a87308
+SRCREV_golang-protobuf="5d5e8c018a13017f9d5b8bf4fad64aaa42a87308"
+SRC_URI += "git://github.com/golang/protobuf;name=golang-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/protobuf"
+
+# github.com/mailru/easyjson v0.7.7
+# [1] git ls-remote https://github.com/mailru/easyjson c120ca7ced6051261161ce15e8f1542a4b2567fc
+SRCREV_easyjson="c120ca7ced6051261161ce15e8f1542a4b2567fc"
+SRC_URI += "git://github.com/mailru/easyjson;name=easyjson;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mailru/easyjson"
+
+# github.com/mattn/go-isatty v0.0.17
+# [1] git ls-remote https://github.com/mattn/go-isatty ed75e619dc0f0489fd4062163a7d061eaa249b9c
+SRCREV_go-isatty="ed75e619dc0f0489fd4062163a7d061eaa249b9c"
+SRC_URI += "git://github.com/mattn/go-isatty;name=go-isatty;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-isatty"
+
+# github.com/moby/spdystream v0.2.0
+# [1] git ls-remote https://github.com/moby/spdystream dbc715126c0e3fa07721879c6d265b2b82c71e5b
+SRCREV_spdystream="dbc715126c0e3fa07721879c6d265b2b82c71e5b"
+SRC_URI += "git://github.com/moby/spdystream;name=spdystream;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/spdystream"
+
+# github.com/moby/sys/signal v0.7.0
+# [1] git ls-remote https://github.com/moby/sys b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5
+SRCREV_signal="b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5"
+SRC_URI += "git://github.com/moby/sys;name=signal;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/signal"
+
+# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
+# [1] git ls-remote https://github.com/mxk/go-flowrate cca7078d478f8520f85629ad7c68962d31ed7682
+SRCREV_go-flowrate="cca7078d478f8520f85629ad7c68962d31ed7682"
+SRC_URI += "git://github.com/mxk/go-flowrate;name=go-flowrate;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mxk/go-flowrate"
+
+# google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b
+# [1] git ls-remote https://github.com/googleapis/go-genproto 49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846
+SRCREV_genproto="49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=genproto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto"
+
+# google.golang.org/protobuf v1.31.0
+# [1] git ls-remote https://github.com/protocolbuffers/protobuf-go 68463f0e96c93bc19ef36ccd3adfe690bfdb568c
+SRCREV_google.golang.org-protobuf="68463f0e96c93bc19ef36ccd3adfe690bfdb568c"
+SRC_URI += "git://github.com/protocolbuffers/protobuf-go;name=google.golang.org-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/protobuf"
+
+# github.com/stretchr/testify v1.8.4
+# [1] git ls-remote https://github.com/stretchr/testify f97607b89807936ac4ff96748d766cf4b9711f78
+SRCREV_testify="f97607b89807936ac4ff96748d766cf4b9711f78"
+SRC_URI += "git://github.com/stretchr/testify;name=testify;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/stretchr/testify"
+
+# github.com/containerd/ttrpc v1.2.2
+# [1] git ls-remote https://github.com/containerd/ttrpc ac26f8cbea1c440d451dd19a4a1b847fd073f3c3
+SRCREV_ttrpc="ac26f8cbea1c440d451dd19a4a1b847fd073f3c3"
+SRC_URI += "git://github.com/containerd/ttrpc;name=ttrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/ttrpc"
+
+# github.com/josharian/intern v1.0.0
+# [1] git ls-remote https://github.com/josharian/intern 8e6ff32b3e7c0b018c43953085fe2ac330fe9acd
+SRCREV_intern="8e6ff32b3e7c0b018c43953085fe2ac330fe9acd"
+SRC_URI += "git://github.com/josharian/intern;name=intern;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/josharian/intern"
+
+# github.com/json-iterator/go v1.1.12
+# [1] git ls-remote https://github.com/json-iterator/go 024077e996b048517130b21ea6bf12aa23055d3d
+SRCREV_json-iterator-go="024077e996b048517130b21ea6bf12aa23055d3d"
+SRC_URI += "git://github.com/json-iterator/go;name=json-iterator-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/json-iterator/go"
+
+# github.com/moby/sys/symlink v0.2.0
+# [1] git ls-remote https://github.com/moby/sys 03b9f8d59a07f5206a2264105f4903a222aea964
+SRCREV_symlink="03b9f8d59a07f5206a2264105f4903a222aea964"
+SRC_URI += "git://github.com/moby/sys;name=symlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/symlink"
+
+# github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b
+# [1] git ls-remote https://github.com/serialx/hashring 22c0c7ab6b1be4be7b950bae8b117767da7b18b6
+SRCREV_hashring="22c0c7ab6b1be4be7b950bae8b117767da7b18b6"
+SRC_URI += "git://github.com/serialx/hashring;name=hashring;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/serialx/hashring"
+
+# github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea
+# [1] git ls-remote https://github.com/tonistiigi/units 6950e57a87eaf136bbe44ef2ec8e75b9e3569de2
+SRCREV_units="6950e57a87eaf136bbe44ef2ec8e75b9e3569de2"
+SRC_URI += "git://github.com/tonistiigi/units;name=units;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tonistiigi/units"
+
+# github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531
+# [1] git ls-remote https://github.com/tonistiigi/vt100 f9a4f7ef65311848d4d4791c649a178c8e97386b
+SRCREV_vt100="f9a4f7ef65311848d4d4791c649a178c8e97386b"
+SRC_URI += "git://github.com/tonistiigi/vt100;name=vt100;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tonistiigi/vt100"
+
+# google.golang.org/appengine v1.6.7
+# [1] git ls-remote https://github.com/golang/appengine 5d1c1d03f8703c2e81478d9a30e9afa2d3e4bd8a
+SRCREV_appengine="5d1c1d03f8703c2e81478d9a30e9afa2d3e4bd8a"
+SRC_URI += "git://github.com/golang/appengine;name=appengine;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/appengine"
+
+# github.com/fsnotify/fsevents v0.1.1
+# [1] git ls-remote https://github.com/fsnotify/fsevents f721bd2b045774a566e8f7f5fa2a9985e04c875d
+SRCREV_fsevents="f721bd2b045774a566e8f7f5fa2a9985e04c875d"
+SRC_URI += "git://github.com/fsnotify/fsevents;name=fsevents;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fsnotify/fsevents"
+
+# github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375
+# [1] git ls-remote https://github.com/tilt-dev/fsnotify fff9c274a375301ae46812f257aa68393790c45b
+SRCREV_fsnotify="fff9c274a375301ae46812f257aa68393790c45b"
+SRC_URI += "git://github.com/tilt-dev/fsnotify;name=fsnotify;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tilt-dev/fsnotify"
+
+# go.opentelemetry.io/otel/sdk v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_sdk="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=sdk;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/sdk"
+
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+# [1] git ls-remote https://github.com/Azure/go-ansiterm d185dfc1b5a126116ea5a19e148e29d16b4574c9
+SRCREV_go-ansiterm="d185dfc1b5a126116ea5a19e148e29d16b4574c9"
+SRC_URI += "git://github.com/Azure/go-ansiterm;name=go-ansiterm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-ansiterm"
+
+# github.com/Microsoft/hcsshim v0.11.4
+# [1] git ls-remote https://github.com/microsoft/hcsshim b16edf62c1723deb948632261b445d0228d973e0
+SRCREV_hcsshim="b16edf62c1723deb948632261b445d0228d973e0"
+SRC_URI += "git://github.com/microsoft/hcsshim;name=hcsshim;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/hcsshim"
+
+# github.com/aws/aws-sdk-go-v2 v1.24.1
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_aws-sdk-go-v2="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=aws-sdk-go-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2"
+
+# github.com/cespare/xxhash/v2 v2.2.0
+# [1] git ls-remote https://github.com/cespare/xxhash a76eb16a93c1e30527c073ca831d9048b4b935f6
+SRCREV_xxhash-v2="a76eb16a93c1e30527c073ca831d9048b4b935f6"
+SRC_URI += "git://github.com/cespare/xxhash;name=xxhash-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cespare/xxhash/v2"
+
+# github.com/docker/go-metrics v0.0.1
+# [1] git ls-remote https://github.com/docker/go-metrics b619b3592b65de4f087d9f16863a7e6ff905973c
+SRCREV_go-metrics="b619b3592b65de4f087d9f16863a7e6ff905973c"
+SRC_URI += "git://github.com/docker/go-metrics;name=go-metrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-metrics"
+
+# github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203
+# [1] git ls-remote https://github.com/eiannone/keyboard 0d226195f2038e282bb90d2e24f7f29aa7c5b210
+SRCREV_keyboard="0d226195f2038e282bb90d2e24f7f29aa7c5b210"
+SRC_URI += "git://github.com/eiannone/keyboard;name=keyboard;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/eiannone/keyboard"
+
+# github.com/felixge/httpsnoop v1.0.4
+# [1] git ls-remote https://github.com/felixge/httpsnoop c5817c27ec125409c069052fdd171023c353501c
+SRCREV_httpsnoop="c5817c27ec125409c069052fdd171023c353501c"
+SRC_URI += "git://github.com/felixge/httpsnoop;name=httpsnoop;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/felixge/httpsnoop"
+
+# github.com/gorilla/websocket v1.5.0
+# [1] git ls-remote https://github.com/gorilla/websocket 9111bb834a68b893cebbbaed5060bdbc1d9ab7d2
+SRCREV_websocket="9111bb834a68b893cebbbaed5060bdbc1d9ab7d2"
+SRC_URI += "git://github.com/gorilla/websocket;name=websocket;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gorilla/websocket"
+
+# github.com/hashicorp/errwrap v1.1.0
+# [1] git ls-remote https://github.com/hashicorp/errwrap 7b00e5db719c64d14dd0caaacbd13e76254d02c0
+SRCREV_errwrap="7b00e5db719c64d14dd0caaacbd13e76254d02c0"
+SRC_URI += "git://github.com/hashicorp/errwrap;name=errwrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/errwrap"
+
+# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+# [1] git ls-remote https://github.com/munnerz/goautoneg a7dc8b61c822528f973a5e4e7b272055c6fdb43e
+SRCREV_goautoneg="a7dc8b61c822528f973a5e4e7b272055c6fdb43e"
+SRC_URI += "git://github.com/munnerz/goautoneg;name=goautoneg;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/munnerz/goautoneg"
+
+# github.com/pelletier/go-toml v1.9.5
+# [1] git ls-remote https://github.com/pelletier/go-toml fed1464066413075eac02cd4dc368b5221845541
+SRCREV_go-toml="fed1464066413075eac02cd4dc368b5221845541"
+SRC_URI += "git://github.com/pelletier/go-toml;name=go-toml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pelletier/go-toml"
+
+# github.com/prometheus/common v0.44.0
+# [1] git ls-remote https://github.com/prometheus/common 94bf9828e56d9670579b28a9f78237d3cd8d0395
+SRCREV_common="94bf9828e56d9670579b28a9f78237d3cd8d0395"
+SRC_URI += "git://github.com/prometheus/common;name=common;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/common"
+
+# github.com/prometheus/procfs v0.12.0
+# [1] git ls-remote https://github.com/prometheus/procfs ff0ad85f7e8bcd5c677d99143f14a2a3aab533aa
+SRCREV_procfs="ff0ad85f7e8bcd5c677d99143f14a2a3aab533aa"
+SRC_URI += "git://github.com/prometheus/procfs;name=procfs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/procfs"
+
+# github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5
+# [1] git ls-remote https://github.com/tonistiigi/fsutil 7525a1af2bb545e89dc9bced785bff7a3b7f08c2
+SRCREV_fsutil="7525a1af2bb545e89dc9bced785bff7a3b7f08c2"
+SRC_URI += "git://github.com/tonistiigi/fsutil;name=fsutil;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tonistiigi/fsutil"
+
+# gopkg.in/cenkalti/backoff.v1 v1.1.0
+# [1] git ls-remote https://github.com/cenkalti/backoff 61153c768f31ee5f130071d08fc82b85208528de
+SRCREV_backoff.v1="61153c768f31ee5f130071d08fc82b85208528de"
+SRC_URI += "git://github.com/cenkalti/backoff;name=backoff.v1;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/cenkalti/backoff.v1"
+
+# github.com/Microsoft/go-winio v0.6.1
+# [1] git ls-remote https://github.com/microsoft/go-winio 070c828abb873da9e71c7247740253b50f7cf049
+SRCREV_go-winio="070c828abb873da9e71c7247740253b50f7cf049"
+SRC_URI += "git://github.com/microsoft/go-winio;name=go-winio;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/go-winio"
+
+# github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d
+# [1] git ls-remote https://github.com/acarl005/stripansi 5a71ef0e047df0427e87a79f27009029921f1f9b
+SRCREV_stripansi="5a71ef0e047df0427e87a79f27009029921f1f9b"
+SRC_URI += "git://github.com/acarl005/stripansi;name=stripansi;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/acarl005/stripansi"
+
+# github.com/containerd/console v1.0.4
+# [1] git ls-remote https://github.com/containerd/console 8f6c4e4faef5a326d2cd907097d04c0239ee5e2f
+SRCREV_console="8f6c4e4faef5a326d2cd907097d04c0239ee5e2f"
+SRC_URI += "git://github.com/containerd/console;name=console;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/console"
+
+# github.com/fvbommel/sortorder v1.0.2
+# [1] git ls-remote https://github.com/fvbommel/sortorder 26fad50c6b32a3064c09ed089865c16f2f3615f6
+SRCREV_sortorder="26fad50c6b32a3064c09ed089865c16f2f3615f6"
+SRC_URI += "git://github.com/fvbommel/sortorder;name=sortorder;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fvbommel/sortorder"
+
+# github.com/klauspost/compress v1.17.4
+# [1] git ls-remote https://github.com/klauspost/compress 98ff542abe3108aa760c1558f80d393be0136539
+SRCREV_compress="98ff542abe3108aa760c1558f80d393be0136539"
+SRC_URI += "git://github.com/klauspost/compress;name=compress;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/klauspost/compress"
+
+# github.com/mattn/go-colorable v0.1.13
+# [1] git ls-remote https://github.com/mattn/go-colorable 11a925cff3d38c293ddc8c05a16b504e3e2c63be
+SRCREV_go-colorable="11a925cff3d38c293ddc8c05a16b504e3e2c63be"
+SRC_URI += "git://github.com/mattn/go-colorable;name=go-colorable;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-colorable"
+
+# github.com/mattn/go-runewidth v0.0.15
+# [1] git ls-remote https://github.com/mattn/go-runewidth 44b7c5b4d67df8ca22917b6800c158a6d3be3560
+SRCREV_go-runewidth="44b7c5b4d67df8ca22917b6800c158a6d3be3560"
+SRC_URI += "git://github.com/mattn/go-runewidth;name=go-runewidth;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-runewidth"
+
+# github.com/moby/sys/mountinfo v0.7.1
+# [1] git ls-remote https://github.com/moby/sys 4950d7687cf6c9b138dc0e18c2c7351e1f6ed497
+SRCREV_mountinfo="4950d7687cf6c9b138dc0e18c2c7351e1f6ed497"
+SRC_URI += "git://github.com/moby/sys;name=mountinfo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/mountinfo"
+
+# github.com/modern-go/reflect2 v1.0.2
+# [1] git ls-remote https://github.com/modern-go/reflect2 2b33151c9bbc5231aea69b8861c540102b087070
+SRCREV_reflect2="2b33151c9bbc5231aea69b8861c540102b087070"
+SRC_URI += "git://github.com/modern-go/reflect2;name=reflect2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/modern-go/reflect2"
+
+# github.com/pmezard/go-difflib v1.0.0
+# [1] git ls-remote https://github.com/pmezard/go-difflib 792786c7400a136282c1664665ae0a8db921c6c2
+SRCREV_go-difflib="792786c7400a136282c1664665ae0a8db921c6c2"
+SRC_URI += "git://github.com/pmezard/go-difflib;name=go-difflib;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pmezard/go-difflib"
+
+# github.com/jonboulle/clockwork v0.4.0
+# [1] git ls-remote https://github.com/jonboulle/clockwork 606c48b92358fcca153952b56fb0d14d6845f84a
+SRCREV_clockwork="606c48b92358fcca153952b56fb0d14d6845f84a"
+SRC_URI += "git://github.com/jonboulle/clockwork;name=clockwork;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jonboulle/clockwork"
+
+# github.com/mattn/go-shellwords v1.0.12
+# [1] git ls-remote https://github.com/mattn/go-shellwords 973b9d5391598d4ee601db46fa32f6e186a356ac
+SRCREV_go-shellwords="973b9d5391598d4ee601db46fa32f6e186a356ac"
+SRC_URI += "git://github.com/mattn/go-shellwords;name=go-shellwords;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-shellwords"
+
+# github.com/moby/patternmatcher v0.6.0
+# [1] git ls-remote https://github.com/moby/patternmatcher 347bb8d8d557f90d1b75cd8bca3c0177f380a979
+SRCREV_patternmatcher="347bb8d8d557f90d1b75cd8bca3c0177f380a979"
+SRC_URI += "git://github.com/moby/patternmatcher;name=patternmatcher;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/patternmatcher"
+
+# go.opentelemetry.io/otel/trace v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_trace="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=trace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/trace"
+
+# github.com/cenkalti/backoff/v4 v4.2.1
+# [1] git ls-remote https://github.com/cenkalti/backoff a04a6fe64ffb0e3fd0816460529d300be5f252df
+SRCREV_v4="a04a6fe64ffb0e3fd0816460529d300be5f252df"
+SRC_URI += "git://github.com/cenkalti/backoff;name=v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cenkalti/backoff/v4"
+
+# github.com/docker/distribution v2.8.3+incompatible
+# [1] git ls-remote https://github.com/distribution/distribution 4772604ae973031ab32dd9805a4bccf61d94909f
+SRCREV_distribution="4772604ae973031ab32dd9805a4bccf61d94909f"
+SRC_URI += "git://github.com/distribution/distribution;name=distribution;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/distribution"
+
+# github.com/moby/sys/sequential v0.5.0
+# [1] git ls-remote https://github.com/moby/sys b22ba8a69b306f0b4adbbe2a529457e6283ed9f7
+SRCREV_sequential="b22ba8a69b306f0b4adbbe2a529457e6283ed9f7"
+SRC_URI += "git://github.com/moby/sys;name=sequential;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/sequential"
+
+# github.com/shibumi/go-pathspec v1.3.0
+# [1] git ls-remote https://github.com/shibumi/go-pathspec 30eddf187f62305a5b34f662049d077211abaacd
+SRCREV_go-pathspec="30eddf187f62305a5b34f662049d077211abaacd"
+SRC_URI += "git://github.com/shibumi/go-pathspec;name=go-pathspec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/shibumi/go-pathspec"
+
+# go.opentelemetry.io/proto/otlp v1.0.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-proto-go 97744b2e4a0fa6787b96b9c3c740daefca754333
+SRCREV_otlp="97744b2e4a0fa6787b96b9c3c740daefca754333"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-proto-go;name=otlp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/proto/otlp"
+
+# github.com/docker/cli-docs-tool v0.7.0
+# [1] git ls-remote https://github.com/docker/cli-docs-tool 3149c912295595f6fc3bd7d3ee9283d97a4aedf6
+SRCREV_cli-docs-tool="3149c912295595f6fc3bd7d3ee9283d97a4aedf6"
+SRC_URI += "git://github.com/docker/cli-docs-tool;name=cli-docs-tool;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/cli-docs-tool"
+
+# github.com/hashicorp/go-version v1.6.0
+# [1] git ls-remote https://github.com/hashicorp/go-version 78d058c5618891f74d604bd15356fca690b64d8a
+SRCREV_go-version="78d058c5618891f74d604bd15356fca690b64d8a"
+SRC_URI += "git://github.com/hashicorp/go-version;name=go-version;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-version"
+
+# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+# [1] git ls-remote https://github.com/modern-go/concurrent bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94
+SRCREV_concurrent="bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94"
+SRC_URI += "git://github.com/modern-go/concurrent;name=concurrent;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/modern-go/concurrent"
+
+# github.com/xeipuuv/gojsonschema v1.2.0
+# [1] git ls-remote https://github.com/xeipuuv/gojsonschema 82fcdeb203eb6ab2a67d0a623d9c19e5e5a64927
+SRCREV_gojsonschema="82fcdeb203eb6ab2a67d0a623d9c19e5e5a64927"
+SRC_URI += "git://github.com/xeipuuv/gojsonschema;name=gojsonschema;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonschema"
+
+# go.opentelemetry.io/otel/metric v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_metric="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=metric;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/metric"
+
+# github.com/AlecAivazis/survey/v2 v2.3.7
+# [1] git ls-remote https://github.com/AlecAivazis/survey fa37277e6394c29db7bcc94062cb30cd7785a126
+SRCREV_v2="fa37277e6394c29db7bcc94062cb30cd7785a126"
+SRC_URI += "git://github.com/AlecAivazis/survey;name=v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AlecAivazis/survey/v2"
+
+# github.com/containerd/containerd v1.7.13
+# [1] git ls-remote https://github.com/containerd/containerd 7c3aca7a610df76212171d200ca3811ff6096eb8
+SRCREV_containerd="7c3aca7a610df76212171d200ca3811ff6096eb8"
+SRC_URI += "git://github.com/containerd/containerd;name=containerd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/containerd"
+
+# github.com/docker/go-connections v0.5.0
+# [1] git ls-remote https://github.com/docker/go-connections fa09c952e3eadbffaf8afc5b8a1667158ba38ace
+SRCREV_go-connections="fa09c952e3eadbffaf8afc5b8a1667158ba38ace"
+SRC_URI += "git://github.com/docker/go-connections;name=go-connections;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-connections"
+
+# github.com/Masterminds/semver/v3 v3.2.1
+# [1] git ls-remote https://github.com/Masterminds/semver e06051f8fcc4c8b4a4990c337b9862a2448722e5
+SRCREV_semver-v3="e06051f8fcc4c8b4a4990c337b9862a2448722e5"
+SRC_URI += "git://github.com/Masterminds/semver;name=semver-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Masterminds/semver/v3"
+
+# github.com/containerd/continuity v0.4.3
+# [1] git ls-remote https://github.com/containerd/continuity 1743d9104d944131cdedaba33a59d2f9bd80a6f2
+SRCREV_continuity="1743d9104d944131cdedaba33a59d2f9bd80a6f2"
+SRC_URI += "git://github.com/containerd/continuity;name=continuity;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/continuity"
+
+# github.com/containerd/typeurl/v2 v2.1.1
+# [1] git ls-remote https://github.com/containerd/typeurl 7ef6316b771f959cbb208b229e3423a466947df3
+SRCREV_typeurl-v2="7ef6316b771f959cbb208b229e3423a466947df3"
+SRC_URI += "git://github.com/containerd/typeurl;name=typeurl-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/typeurl/v2"
+
+# github.com/google/gnostic-models v0.6.8
+# [1] git ls-remote https://github.com/google/gnostic-models 577692584cdf09674595bba0c182d0e8a44655d3
+SRCREV_gnostic-models="577692584cdf09674595bba0c182d0e8a44655d3"
+SRC_URI += "git://github.com/google/gnostic-models;name=gnostic-models;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gnostic-models"
+
+# github.com/mitchellh/reflectwalk v1.0.2
+# [1] git ls-remote https://github.com/mitchellh/reflectwalk e0c24fdb021963cd2c4013097a0b993a7c4e344f
+SRCREV_reflectwalk="e0c24fdb021963cd2c4013097a0b993a7c4e344f"
+SRC_URI += "git://github.com/mitchellh/reflectwalk;name=reflectwalk;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/reflectwalk"
+
+# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+# [1] git ls-remote https://github.com/xeipuuv/gojsonpointer 02993c407bfbf5f6dae44c4f4b1cf6a39b5fc5bb
+SRCREV_gojsonpointer="02993c407bfbf5f6dae44c4f4b1cf6a39b5fc5bb"
+SRC_URI += "git://github.com/xeipuuv/gojsonpointer;name=gojsonpointer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonpointer"
+
+# github.com/distribution/reference v0.5.0
+# [1] git ls-remote https://github.com/distribution/reference 49c28499d219290c3226822e9cfcd4ede6d75379
+SRCREV_reference="49c28499d219290c3226822e9cfcd4ede6d75379"
+SRC_URI += "git://github.com/distribution/reference;name=reference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/distribution/reference"
+
+# github.com/mitchellh/mapstructure v1.5.0
+# [1] git ls-remote https://github.com/mitchellh/mapstructure ab69d8d93410fce4361f4912bb1ff88110a81311
+SRCREV_mapstructure="ab69d8d93410fce4361f4912bb1ff88110a81311"
+SRC_URI += "git://github.com/mitchellh/mapstructure;name=mapstructure;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/mapstructure"
+
+# github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
+# [1] git ls-remote https://github.com/skratchdot/open-golang eef8423979666925a58eb77f9db583e54320d5a4
+SRCREV_open-golang="eef8423979666925a58eb77f9db583e54320d5a4"
+SRC_URI += "git://github.com/skratchdot/open-golang;name=open-golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/skratchdot/open-golang"
+
+# github.com/emicklei/go-restful/v3 v3.11.0
+# [1] git ls-remote https://github.com/emicklei/go-restful 30bec7807481e62e1e1e59ad57e7f22054806966
+SRCREV_go-restful-v3="30bec7807481e62e1e1e59ad57e7f22054806966"
+SRC_URI += "git://github.com/emicklei/go-restful;name=go-restful-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/emicklei/go-restful/v3"
+
+# github.com/go-openapi/jsonpointer v0.19.6
+# [1] git ls-remote https://github.com/go-openapi/jsonpointer 5df0d69a6be189afff354877d332f9ede32afe12
+SRCREV_jsonpointer="5df0d69a6be189afff354877d332f9ede32afe12"
+SRC_URI += "git://github.com/go-openapi/jsonpointer;name=jsonpointer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/jsonpointer"
+
+# github.com/hashicorp/go-cleanhttp v0.5.2
+# [1] git ls-remote https://github.com/hashicorp/go-cleanhttp 6d9e2ac5d828e5f8594b97f88c4bde14a67bb6d2
+SRCREV_go-cleanhttp="6d9e2ac5d828e5f8594b97f88c4bde14a67bb6d2"
+SRC_URI += "git://github.com/hashicorp/go-cleanhttp;name=go-cleanhttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-cleanhttp"
+
+# github.com/in-toto/in-toto-golang v0.5.0
+# [1] git ls-remote https://github.com/in-toto/in-toto-golang ec599036d27ebaca3e8c03559d3f8fd5fe429dfe
+SRCREV_in-toto-golang="ec599036d27ebaca3e8c03559d3f8fd5fe429dfe"
+SRC_URI += "git://github.com/in-toto/in-toto-golang;name=in-toto-golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/in-toto/in-toto-golang"
+
+# github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
+# [1] git ls-remote https://github.com/kballard/go-shellquote 95032a82bc518f77982ea72343cc1ade730072f0
+SRCREV_go-shellquote="95032a82bc518f77982ea72343cc1ade730072f0"
+SRC_URI += "git://github.com/kballard/go-shellquote;name=go-shellquote;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/kballard/go-shellquote"
+
+# github.com/moby/docker-image-spec v1.3.1
+# [1] git ls-remote https://github.com/moby/docker-image-spec f1d00ebd2d6d6805170d5543dbca4b850f35f9af
+SRCREV_docker-image-spec="f1d00ebd2d6d6805170d5543dbca4b850f35f9af"
+SRC_URI += "git://github.com/moby/docker-image-spec;name=docker-image-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/docker-image-spec"
+
+# github.com/hashicorp/go-multierror v1.1.1
+# [1] git ls-remote https://github.com/hashicorp/go-multierror 9974e9ec57696378079ecc3accd3d6f29401b3a0
+SRCREV_go-multierror="9974e9ec57696378079ecc3accd3d6f29401b3a0"
+SRC_URI += "git://github.com/hashicorp/go-multierror;name=go-multierror;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-multierror"
+
+# github.com/mitchellh/copystructure v1.2.0
+# [1] git ls-remote https://github.com/mitchellh/copystructure d4ce1f938f7a7ea2a40bff4544b56be9c00b5e84
+SRCREV_copystructure="d4ce1f938f7a7ea2a40bff4544b56be9c00b5e84"
+SRC_URI += "git://github.com/mitchellh/copystructure;name=copystructure;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/copystructure"
+
+# github.com/prometheus/client_model v0.5.0
+# [1] git ls-remote https://github.com/prometheus/client_model 1c92cadf7d8fa1726bae12e6025cca9b86d2ba5f
+SRCREV_client_model="1c92cadf7d8fa1726bae12e6025cca9b86d2ba5f"
+SRC_URI += "git://github.com/prometheus/client_model;name=client_model;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/client_model"
+
+# github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+# [1] git ls-remote https://github.com/xeipuuv/gojsonreference bd5ef7bd5415a7ac448318e64f11a24cd21e594b
+SRCREV_gojsonreference="bd5ef7bd5415a7ac448318e64f11a24cd21e594b"
+SRC_URI += "git://github.com/xeipuuv/gojsonreference;name=gojsonreference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonreference"
+
+# github.com/opencontainers/go-digest v1.0.0
+# [1] git ls-remote https://github.com/opencontainers/go-digest ea51bea511f75cfa3ef6098cc253c5c3609b037a
+SRCREV_go-digest="ea51bea511f75cfa3ef6098cc253c5c3609b037a"
+SRC_URI += "git://github.com/opencontainers/go-digest;name=go-digest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/go-digest"
+
+# github.com/aws/aws-sdk-go-v2/config v1.26.6
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 857d5277b41f290ab7ba0e0f6f96f940045f69b7
+SRCREV_config="857d5277b41f290ab7ba0e0f6f96f940045f69b7"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=config;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/config"
+
+# github.com/go-openapi/jsonreference v0.20.2
+# [1] git ls-remote https://github.com/go-openapi/jsonreference 1f158e563669961b8e54817e3ea57978d439ffff
+SRCREV_jsonreference="1f158e563669961b8e54817e3ea57978d439ffff"
+SRC_URI += "git://github.com/go-openapi/jsonreference;name=jsonreference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/jsonreference"
+
+# github.com/prometheus/client_golang v1.17.0
+# [1] git ls-remote https://github.com/prometheus/client_golang fa1408ee351f6aba15c6d0207f7a0021eb3af406
+SRCREV_client_golang="fa1408ee351f6aba15c6d0207f7a0021eb3af406"
+SRC_URI += "git://github.com/prometheus/client_golang;name=client_golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/client_golang"
+
+# go.opentelemetry.io/otel/sdk/metric v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_sdk-metric="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=sdk-metric;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/sdk/metric"
+
+# github.com/opencontainers/image-spec v1.1.0-rc6
+# [1] git ls-remote https://github.com/opencontainers/image-spec 6c2b5fafa0731a97aad0c2a68bac238d6c98c690
+SRCREV_image-spec="6c2b5fafa0731a97aad0c2a68bac238d6c98c690"
+SRC_URI += "git://github.com/opencontainers/image-spec;name=image-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/image-spec"
+
+# github.com/theupdateframework/notary v0.7.0
+# [1] git ls-remote https://github.com/notaryproject/notary b0b6bfdd4933081e8d5ae026b24e8337311dd598
+SRCREV_notary="b0b6bfdd4933081e8d5ae026b24e8337311dd598"
+SRC_URI += "git://github.com/notaryproject/notary;name=notary;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/theupdateframework/notary"
+
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+# [1] git ls-remote https://github.com/AdaLogics/go-fuzz-headers ced1acdcaa24dc39c01b039fc37576c395f506cf
+SRCREV_go-fuzz-headers="ced1acdcaa24dc39c01b039fc37576c395f506cf"
+SRC_URI += "git://github.com/AdaLogics/go-fuzz-headers;name=go-fuzz-headers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AdaLogics/go-fuzz-headers"
+
+# github.com/inconshreveable/mousetrap v1.1.0
+# [1] git ls-remote https://github.com/inconshreveable/mousetrap 4e8053ee7ef85a6bd26368364a6d27f1641c1d21
+SRCREV_mousetrap="4e8053ee7ef85a6bd26368364a6d27f1641c1d21"
+SRC_URI += "git://github.com/inconshreveable/mousetrap;name=mousetrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/inconshreveable/mousetrap"
+
+# sigs.k8s.io/structured-merge-diff/v4 v4.4.1
+# [1] git ls-remote https://github.com/kubernetes-sigs/structured-merge-diff cf09e71f4508bfc416135048e392a8a4990bf4e3
+SRCREV_structured-merge-diff-v4="cf09e71f4508bfc416135048e392a8a4990bf4e3"
+SRC_URI += "git://github.com/kubernetes-sigs/structured-merge-diff;name=structured-merge-diff-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/structured-merge-diff/v4"
+
+# github.com/compose-spec/compose-go/v2 v2.0.2
+# [1] git ls-remote https://github.com/compose-spec/compose-go d0722c0e5564b4970f6634592638c0577ef8e028
+SRCREV_compose-go-v2="d0722c0e5564b4970f6634592638c0577ef8e028"
+SRC_URI += "git://github.com/compose-spec/compose-go;name=compose-go-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/compose-spec/compose-go/v2"
+
+# tags.cncf.io/container-device-interface v0.6.2
+# [1] git ls-remote https://github.com/cncf-tags/container-device-interface fb50bf8fc8b2c3c8fda6d23ab7e044774dcca678
+SRCREV_container-device-interface="fb50bf8fc8b2c3c8fda6d23ab7e044774dcca678"
+SRC_URI += "git://github.com/cncf-tags/container-device-interface;name=container-device-interface;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/tags.cncf.io/container-device-interface"
+
+# github.com/aws/aws-sdk-go-v2/credentials v1.16.16
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 a75d7694eb2709212655ee25e811d72a1188a68b
+SRCREV_credentials="a75d7694eb2709212655ee25e811d72a1188a68b"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=credentials;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/credentials"
+
+# github.com/aws/aws-sdk-go-v2/service/sso v1.18.7
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 a75d7694eb2709212655ee25e811d72a1188a68b
+SRCREV_sso="a75d7694eb2709212655ee25e811d72a1188a68b"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=sso;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/service/sso"
+
+# github.com/aws/aws-sdk-go-v2/service/sts v1.26.7
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_sts="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=sts;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/service/sts"
+
+# github.com/aws/aws-sdk-go-v2/internal/ini v1.7.3
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 857d5277b41f290ab7ba0e0f6f96f940045f69b7
+SRCREV_ini="857d5277b41f290ab7ba0e0f6f96f940045f69b7"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=ini;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/internal/ini"
+
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/grpc-gateway 09e3965a330155f7db8482269d7d91b9bceb7641
+SRCREV_grpc-gateway-v2="09e3965a330155f7db8482269d7d91b9bceb7641"
+SRC_URI += "git://github.com/grpc-ecosystem/grpc-gateway;name=grpc-gateway-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/grpc-gateway/v2"
+
+# google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b
+# [1] git ls-remote https://github.com/googleapis/go-genproto 49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846
+SRCREV_api="49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto/googleapis/api"
+
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b
+# [1] git ls-remote https://github.com/googleapis/go-genproto 49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846
+SRCREV_rpc="49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=rpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto/googleapis/rpc"
+
+# github.com/docker/docker-credential-helpers v0.8.0
+# [1] git ls-remote https://github.com/docker/docker-credential-helpers 8396edb35f8d7229e75482e9d82c7729fa7001b7
+SRCREV_docker-credential-helpers="8396edb35f8d7229e75482e9d82c7729fa7001b7"
+SRC_URI += "git://github.com/docker/docker-credential-helpers;name=docker-credential-helpers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker-credential-helpers"
+
+# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.7
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 f53c9bcd7ccef6fd9f13f77512e78e3a7aa3cc01
+SRCREV_ssooidc="f53c9bcd7ccef6fd9f13f77512e78e3a7aa3cc01"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=ssooidc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/service/ssooidc"
+
+# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/go-grpc-middleware df0f91b29bbbdfc3a686a7a8edbe2b9de2072fdd
+SRCREV_go-grpc-middleware="df0f91b29bbbdfc3a686a7a8edbe2b9de2072fdd"
+SRC_URI += "git://github.com/grpc-ecosystem/go-grpc-middleware;name=go-grpc-middleware;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/go-grpc-middleware"
+
+# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.11
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_imds="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=imds;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/feature/ec2/imds"
+
+# go.opentelemetry.io/otel/exporters/prometheus v0.42.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_prometheus="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=prometheus;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/prometheus"
+
+# github.com/matttproud/golang_protobuf_extensions v1.0.4
+# [1] git ls-remote https://github.com/matttproud/golang_protobuf_extensions c182affec369e30f25d3eb8cd8a478dee585ae7d
+SRCREV_golang_protobuf_extensions="c182affec369e30f25d3eb8cd8a478dee585ae7d"
+SRC_URI += "git://github.com/matttproud/golang_protobuf_extensions;name=golang_protobuf_extensions;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/matttproud/golang_protobuf_extensions"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_otlptrace="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlptrace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+
+# github.com/secure-systems-lab/go-securesystemslib v0.4.0
+# [1] git ls-remote https://github.com/secure-systems-lab/go-securesystemslib abcd7c95c952df38eb237fab3764ef1b8d2b15c9
+SRCREV_go-securesystemslib="abcd7c95c952df38eb237fab3764ef1b8d2b15c9"
+SRC_URI += "git://github.com/secure-systems-lab/go-securesystemslib;name=go-securesystemslib;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/secure-systems-lab/go-securesystemslib"
+
+# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.10
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_endpoints-v2="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=endpoints-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/internal/endpoints/v2"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_otlpmetric="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlpmetric;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlpmetric"
+
+# github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.10
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_configsources="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=configsources;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/internal/configsources"
+
+# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.10
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39
+SRCREV_presigned-url="47dd1b1bcbde244357a82ef00fa6a61a9bfb9b39"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=presigned-url;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url"
+
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib ba19074a6785b2b65c86a52c0649cf040319fa96
+SRCREV_otelhttp="ba19074a6785b2b65c86a52c0649cf040319fa96"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelhttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+
+# github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 0d643a8f0a8ad09075f41a60acba6a208cb36c58
+SRCREV_accept-encoding="0d643a8f0a8ad09075f41a60acba6a208cb36c58"
+SRC_URI += "git://github.com/aws/aws-sdk-go-v2;name=accept-encoding;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_otlptracegrpc="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlptracegrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 98b32a6c3a87fbee5d34c063b9096f416b250897
+SRCREV_otlptracehttp="98b32a6c3a87fbee5d34c063b9096f416b250897"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlptracehttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_otlpmetricgrpc="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlpmetricgrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_otlpmetrichttp="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlpmetrichttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp"
+
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib ba19074a6785b2b65c86a52c0649cf040319fa96
+SRCREV_otelgrpc="ba19074a6785b2b65c86a52c0649cf040319fa96"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelgrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
+
+# go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib ba19074a6785b2b65c86a52c0649cf040319fa96
+SRCREV_otelhttptrace="ba19074a6785b2b65c86a52c0649cf040319fa96"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelhttptrace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace"
+
diff --git a/recipes-containers/docker-distribution/docker-distribution_git.bb b/recipes-containers/docker-distribution/docker-distribution_git.bb
index 4bf3c6e5..dbca0d55 100644
--- a/recipes-containers/docker-distribution/docker-distribution_git.bb
+++ b/recipes-containers/docker-distribution/docker-distribution_git.bb
@@ -3,20 +3,20 @@ SUMMARY = "The Docker toolset to pack, ship, store, and deliver content"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
-SRCREV_distribution="2461543d988979529609e8cb6fca9ca190dc48da"
-SRC_URI = "git://github.com/docker/distribution.git;branch=release/2.7;name=distribution;destsuffix=git/src/github.com/docker/distribution \
+SRCREV_distribution= "d607c6ccb9372e05556624f973119a23d3a42987"
+SRC_URI = "git://github.com/docker/distribution.git;branch=release/2.8;name=distribution;destsuffix=git/src/github.com/docker/distribution;protocol=https \
file://docker-registry.service \
+ file://0001-build-use-to-use-cross-go-compiler.patch \
"
PACKAGES =+ "docker-registry"
-PV = "v2.7.1"
+PV = "v2.8.3+git"
S = "${WORKDIR}/git/src/github.com/docker/distribution"
GO_IMPORT = "import"
-inherit goarch
-inherit go
+inherit goarch go systemd
# This disables seccomp and apparmor, which are on by default in the
# go package.
@@ -25,15 +25,17 @@ EXTRA_OEMAKE="BUILDTAGS=''"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
export GOPATH="${WORKDIR}/git/"
- export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
+ export GOROOT="${STAGING_LIBDIR}/go"
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
export GO_GCFLAGS=""
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+ export GO111MODULE=off
+ export GO_BUILD_FLAGS="-trimpath"
cd ${S}
@@ -56,15 +58,20 @@ do_install() {
install -d ${D}/${localstatedir}/lib/registry/
}
-INSANE_SKIP_${PN} += "ldflags already-stripped"
-INSANE_SKIP_${MLPREFIX}docker-registry += "ldflags already-stripped textrel"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+INSANE_SKIP:${MLPREFIX}docker-registry += "ldflags already-stripped textrel"
-FILES_docker-registry = "${sbindir}/*"
-FILES_docker-registry += "${systemd_unitdir}/system/docker-registry.service"
-FILES_docker-registry += "${sysconfdir}/docker-distribution/*"
-FILES_docker-registry += "${localstatedir}/lib/registry/"
+FILES:docker-registry = "${sbindir}/*"
+FILES:docker-registry += "${systemd_unitdir}/system/docker-registry.service"
+FILES:docker-registry += "${sysconfdir}/docker-distribution/*"
+FILES:docker-registry += "${localstatedir}/lib/registry/"
-SYSTEMD_SERVICE_docker-registry = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker-registry.service','',d)}"
-SYSTEMD_AUTO_ENABLE_docker-registry = "enable"
+SYSTEMD_PACKAGES = "docker-registry"
+SYSTEMD_SERVICE:docker-registry = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker-registry.service','',d)}"
+SYSTEMD_AUTO_ENABLE:docker-registry = "enable"
-RDEPENDS_${PN}-ptest_remove = "${PN}"
+RDEPENDS:${PN}-ptest:remove = "${PN}"
+
+CVE_PRODUCT = "docker_registry"
+
+COMPATIBLE_HOST:riscv64 = "null"
diff --git a/recipes-containers/docker-distribution/files/0001-build-use-to-use-cross-go-compiler.patch b/recipes-containers/docker-distribution/files/0001-build-use-to-use-cross-go-compiler.patch
new file mode 100644
index 00000000..f97a60ca
--- /dev/null
+++ b/recipes-containers/docker-distribution/files/0001-build-use-to-use-cross-go-compiler.patch
@@ -0,0 +1,31 @@
+From 9c27a12dc0bc62b95d7ecf003e7d241b36c3f2e6 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 30 Jun 2020 23:35:05 -0400
+Subject: [PATCH] build: use to use cross go compiler
+
+We shouldn't be invoking 'go' as the compiler, but instead use
+${GO} which tracks our cross build go compiler for the architecture.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 4635c6ec..a95e860e 100644
+--- a/Makefile
++++ b/Makefile
+@@ -88,7 +88,7 @@ FORCE:
+ # Build a binary from a cmd.
+ bin/%: cmd/% FORCE
+ @echo "$(WHALE) $@${BINARY_SUFFIX}"
+- @go build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@${BINARY_SUFFIX} ${GO_LDFLAGS} ${GO_TAGS} ./$<
++ @${GO} build ${GO_GCFLAGS} ${GO_BUILD_FLAGS} -o $@${BINARY_SUFFIX} ${GO_LDFLAGS} ${GO_TAGS} ./$<
+
+ binaries: $(BINARIES) ## build binaries
+ @echo "$(WHALE) $@"
+--
+2.19.1
+
diff --git a/recipes-containers/docker/README b/recipes-containers/docker/README
new file mode 100644
index 00000000..565e3501
--- /dev/null
+++ b/recipes-containers/docker/README
@@ -0,0 +1,7 @@
+if containerd is starting docker, and it is interfering with standalone
+docker operation, you may need to kill the running daemon and restart
+it:
+
+ % ps axf | grep docker | grep -v grep | awk '{print "kill -9 " $1}' | sh
+ % systemctl stop docker
+ % systemctl start docker
diff --git a/recipes-containers/docker/docker-ce_git.bb b/recipes-containers/docker/docker-ce_git.bb
deleted file mode 100644
index 817795f0..00000000
--- a/recipes-containers/docker/docker-ce_git.bb
+++ /dev/null
@@ -1,129 +0,0 @@
-HOMEPAGE = "http://www.docker.com"
-SUMMARY = "Linux container runtime"
-DESCRIPTION = "Linux container runtime \
- Docker complements kernel namespacing with a high-level API which \
- operates at the process level. It runs unix processes with strong \
- guarantees of isolation and repeatability across servers. \
- . \
- Docker is a great building block for automating distributed systems: \
- large-scale web deployments, database clusters, continuous deployment \
- systems, private PaaS, service-oriented architectures, etc. \
- . \
- This package contains the daemon and client, which are \
- officially supported on x86_64 and arm hosts. \
- Other architectures are considered experimental. \
- . \
- Also, note that kernel version 3.10 or above is required for proper \
- operation of the daemon process, and that any lower versions may have \
- subtle and/or glaring issues. \
- "
-
-SRCREV_docker = "6a30dfca03664a0b6bf0646a7d389ee7d0318e6e"
-SRCREV_libnetwork = "5ac07abef4eee176423fdc1b870d435258e2d381"
-SRC_URI = "\
- git://github.com/docker/docker-ce.git;branch=19.03;name=docker \
- git://github.com/docker/libnetwork.git;branch=master;name=libnetwork;destsuffix=git/libnetwork \
- file://0001-libnetwork-use-GO-instead-of-go.patch \
- file://docker.init \
- file://0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch \
- "
-
-require docker.inc
-
-# Apache-2.0 for docker
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/components/engine/LICENSE;md5=4859e97a9c7780e77972d989f0823f28"
-
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-DOCKER_VERSION = "19.03.2-ce"
-PV = "${DOCKER_VERSION}+git${SRCREV_docker}"
-
-PACKAGES =+ "${PN}-contrib"
-
-DOCKER_PKG="github.com/docker/docker"
-
-inherit go
-inherit goarch
-inherit pkgconfig
-
-do_configure[noexec] = "1"
-
-do_compile() {
- # Set GOPATH. See 'PACKAGERS.md'. Don't rely on
- # docker to download its dependencies but rather
- # use dependencies packaged independently.
- cd ${S}/src/import
- rm -rf .gopath
- mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
- ln -sf ../../../../components/engine/ .gopath/src/"${DOCKER_PKG}"
-
- ln -sf ${S}/src/import/components/cli .gopath/src/github.com/docker/cli
-
- export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
- export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
- # Pass the needed cflags/ldflags so that cgo
- # can find the needed headers files and libraries
- export GOARCH=${TARGET_GOARCH}
- export CGO_ENABLED="1"
- export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- # in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
- export DOCKER_BUILDTAGS='exclude_graphdriver_btrfs exclude_graphdriver_devicemapper'
-
- export DISABLE_WARN_OUTSIDE_CONTAINER=1
-
- cd ${S}/src/import/components/engine
-
- # this is the unsupported build structure that doesn't rely on an
- # existing docker to build this:
- VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" ./hack/make.sh dynbinary
-
- # build the proxy
- cd ${S}/src/import
- ln -sf ${WORKDIR}/git/libnetwork .gopath/src/github.com/docker/libnetwork
- cd ${S}/src/import/.gopath/src/github.com/docker/libnetwork
- oe_runmake cross-local
-
- # build the cli
- cd ${S}/src/import/components/cli
- export CFLAGS=""
- export LDFLAGS=""
- export DOCKER_VERSION=${DOCKER_VERSION}
- VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" make dynbinary
-}
-
-do_install() {
- mkdir -p ${D}/${bindir}
- cp ${S}/src/import/components/cli/build/docker ${D}/${bindir}/docker
- cp ${S}/src/import/components/engine/bundles/latest/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
- cp ${WORKDIR}/git/libnetwork/bin/docker-proxy* ${D}/${bindir}/docker-proxy
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${S}/src/import/components/engine/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
- # replaces one copied from above with one that uses the local registry for a mirror
- install -m 644 ${S}/src/import/components/engine/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
- else
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
- fi
- # TLS key that docker creates at run-time if not found is what resides here
- if ${@bb.utils.contains('PACKAGECONFIG','transient-config','true','false',d)}; then
- install -d ${D}${sysconfdir}
- ln -s ..${localstatedir}/run/docker ${D}${sysconfdir}/docker
- else
- install -d ${D}${sysconfdir}/docker
- fi
-
- mkdir -p ${D}${datadir}/docker/
- install -m 0755 ${S}/src/import/components/engine/contrib/check-config.sh ${D}${datadir}/docker/
-}
-
-FILES_${PN} += "${systemd_unitdir}/system/* ${sysconfdir}/docker"
-
-FILES_${PN}-contrib += "${datadir}/docker/check-config.sh"
-RDEPENDS_${PN}-contrib += "bash"
diff --git a/recipes-containers/docker/docker-moby.bb b/recipes-containers/docker/docker-moby.bb
deleted file mode 100644
index 0936fdfb..00000000
--- a/recipes-containers/docker/docker-moby.bb
+++ /dev/null
@@ -1,148 +0,0 @@
-HOMEPAGE = "http://www.docker.com"
-SUMMARY = "Linux container runtime"
-DESCRIPTION = "Linux container runtime \
- Docker complements kernel namespacing with a high-level API which \
- operates at the process level. It runs unix processes with strong \
- guarantees of isolation and repeatability across servers. \
- . \
- Docker is a great building block for automating distributed systems: \
- large-scale web deployments, database clusters, continuous deployment \
- systems, private PaaS, service-oriented architectures, etc. \
- . \
- This package contains the daemon and client, which are \
- officially supported on x86_64 and arm hosts. \
- Other architectures are considered experimental. \
- . \
- Also, note that kernel version 3.10 or above is required for proper \
- operation of the daemon process, and that any lower versions may have \
- subtle and/or glaring issues. \
- "
-
-# Notes:
-# - This docker variant uses moby and the other individually maintained
-# upstream variants for SRCREVs
-# - It is a true community / upstream tracking build, and is not a
-# docker curated set of commits or additions
-# - The version number on this package tracks the versions assigned to
-# the curated docker-ce repository. This allows compatibility and
-# functional equivalence, while allowing new features to be more
-# easily added.
-# - This could be called "docker-moby" or just "moby" in the future, but
-# that would require the creation of a virtual/docker dependency, which
-# is possible, but overkill at the moment (while we wait for the upstream
-# to stop changing).
-# - The common components of this recipe and docker-ce do need to be moved
-# to a docker.inc recipe
-
-# moby commit matches the docker-engine bump on the 19.03 branch'
-SRCREV_moby = "08bc39c8f9e1ccdc5ff18f6e751105722cecc4a9"
-SRCREV_libnetwork = "5ac07abef4eee176423fdc1b870d435258e2d381"
-SRCREV_cli = "2f1931f9eb2d6bac2efd48d94739f2e9919d4d7d"
-SRC_URI = "\
- git://github.com/moby/moby.git;nobranch=1;name=moby \
- git://github.com/docker/libnetwork.git;branch=master;name=libnetwork;destsuffix=git/libnetwork \
- git://github.com/docker/cli;branch=19.03;name=cli;destsuffix=git/cli \
- file://docker.init \
- file://0001-libnetwork-use-GO-instead-of-go.patch \
- "
-
-require docker.inc
-
-# Apache-2.0 for docker
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=4859e97a9c7780e77972d989f0823f28"
-
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-DOCKER_VERSION = "19.03.2"
-PV = "${DOCKER_VERSION}+git${SRCREV_moby}"
-
-PACKAGES =+ "${PN}-contrib"
-
-DOCKER_PKG="github.com/docker/docker"
-# in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
-BUILD_TAGS = "exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
-
-inherit go
-inherit goarch
-
-do_configure[noexec] = "1"
-
-do_compile() {
- # Set GOPATH. See 'PACKAGERS.md'. Don't rely on
- # docker to download its dependencies but rather
- # use dependencies packaged independently.
- cd ${S}/src/import
- rm -rf .gopath
- mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
- ln -sf ../../../.. .gopath/src/"${DOCKER_PKG}"
-
- mkdir -p .gopath/src/github.com/docker
- ln -sf ${WORKDIR}/git/libnetwork .gopath/src/github.com/docker/libnetwork
- ln -sf ${WORKDIR}/git/cli .gopath/src/github.com/docker/cli
-
- export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
- export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
- # Pass the needed cflags/ldflags so that cgo
- # can find the needed headers files and libraries
- export GOARCH=${TARGET_GOARCH}
- export CGO_ENABLED="1"
- export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export DOCKER_BUILDTAGS='${BUILD_TAGS} ${PACKAGECONFIG_CONFARGS}'
-
- export DISABLE_WARN_OUTSIDE_CONTAINER=1
-
- cd ${S}/src/import/
-
- # this is the unsupported built structure
- # that doesn't rely on an existing docker
- # to build this:
- VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" ./hack/make.sh dynbinary
-
- # build the cli
- cd ${S}/src/import/.gopath/src/github.com/docker/cli
- export CFLAGS=""
- export LDFLAGS=""
- export DOCKER_VERSION=${DOCKER_VERSION}
- VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" make dynbinary
-
- # build the proxy
- cd ${S}/src/import/.gopath/src/github.com/docker/libnetwork
- oe_runmake cross-local
-}
-
-do_install() {
- mkdir -p ${D}/${bindir}
- cp ${WORKDIR}/git/cli/build/docker ${D}/${bindir}/docker
- cp ${S}/src/import/bundles/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
- cp ${WORKDIR}/git/libnetwork/bin/docker-proxy* ${D}/${bindir}/docker-proxy
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${S}/src/import/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
- # replaces one copied from above with one that uses the local registry for a mirror
- install -m 644 ${S}/src/import/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
- else
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
- fi
- # TLS key that docker creates at run-time if not found is what resides here
- if ${@bb.utils.contains('PACKAGECONFIG','transient-config','true','false',d)}; then
- install -d ${D}${sysconfdir}
- ln -s ..${localstatedir}/run/docker ${D}${sysconfdir}/docker
- else
- install -d ${D}${sysconfdir}/docker
- fi
-
- mkdir -p ${D}${datadir}/docker/
- install -m 0755 ${S}/src/import/contrib/check-config.sh ${D}${datadir}/docker/
-}
-
-FILES_${PN} += "${systemd_unitdir}/system/* ${sysconfdir}/docker"
-
-FILES_${PN}-contrib += "${datadir}/docker/check-config.sh"
-RDEPENDS_${PN}-contrib += "bash"
diff --git a/recipes-containers/docker/docker-moby_git.bb b/recipes-containers/docker/docker-moby_git.bb
new file mode 100644
index 00000000..0abb0b3f
--- /dev/null
+++ b/recipes-containers/docker/docker-moby_git.bb
@@ -0,0 +1,72 @@
+HOMEPAGE = "http://www.docker.com"
+SUMMARY = "Linux container runtime"
+DESCRIPTION = "Linux container runtime \
+ Docker complements kernel namespacing with a high-level API which \
+ operates at the process level. It runs unix processes with strong \
+ guarantees of isolation and repeatability across servers. \
+ . \
+ Docker is a great building block for automating distributed systems: \
+ large-scale web deployments, database clusters, continuous deployment \
+ systems, private PaaS, service-oriented architectures, etc. \
+ . \
+ This package contains the daemon and client, which are \
+ officially supported on x86_64 and arm hosts. \
+ Other architectures are considered experimental. \
+ . \
+ Also, note that kernel version 3.10 or above is required for proper \
+ operation of the daemon process, and that any lower versions may have \
+ subtle and/or glaring issues. \
+ "
+
+# Notes:
+# - This docker variant uses moby and the other individually maintained
+# upstream variants for SRCREVs
+# - It is a true community / upstream tracking build, and is not a
+# docker curated set of commits or additions
+# - The version number on this package tracks the versions assigned to
+# the curated docker-ce repository. This allows compatibility and
+# functional equivalence, while allowing new features to be more
+# easily added.
+# - The common components of this recipe and docker-ce do need to be moved
+# to a docker.inc recipe
+#
+# Packaging details:
+#
+# https://github.com/docker/docker-ce-packaging.git
+# common.mk:
+# DOCKER_CLI_REPO ?= https://github.com/docker/cli.git
+# DOCKER_ENGINE_REPO ?= https://github.com/docker/docker.git
+# REF ?= HEAD
+# DOCKER_CLI_REF ?= $(REF)
+# DOCKER_ENGINE_REF ?= $(REF)
+#
+# These follow the tags for our releases in the listed repositories
+# so we get that tag, and make it our SRCREVS:
+#
+
+SRCREV_moby = "f417435e5f6216828dec57958c490c4f8bae4f98"
+SRCREV_libnetwork = "67e0588f1ddfaf2faf4c8cae8b7ea2876434d91c"
+SRCREV_cli = "01f933261885c0126edb3f47fd56d048ae31265a"
+SRCREV_FORMAT = "moby_libnetwork"
+SRC_URI = "\
+ git://github.com/moby/moby.git;branch=25.0;name=moby;protocol=https \
+ git://github.com/docker/libnetwork.git;branch=master;name=libnetwork;destsuffix=git/libnetwork;protocol=https \
+ git://github.com/docker/cli;branch=25.0;name=cli;destsuffix=git/cli;protocol=https \
+ file://docker.init \
+ file://0001-libnetwork-use-GO-instead-of-go.patch \
+ file://0001-cli-use-external-GO111MODULE-and-cross-compiler.patch \
+ file://0001-dynbinary-use-go-cross-compiler.patch;patchdir=src/import \
+ "
+
+DOCKER_COMMIT = "${SRCREV_moby}"
+
+require docker.inc
+
+# Apache-2.0 for docker
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=4859e97a9c7780e77972d989f0823f28"
+
+DOCKER_VERSION = "25.0.3"
+PV = "${DOCKER_VERSION}+git${SRCREV_moby}"
+
+CVE_PRODUCT = "docker mobyproject:moby"
diff --git a/recipes-containers/docker/docker.inc b/recipes-containers/docker/docker.inc
index 0083902f..48f7d3ec 100644
--- a/recipes-containers/docker/docker.inc
+++ b/recipes-containers/docker/docker.inc
@@ -1,65 +1,168 @@
DEPENDS = " \
- go-cli \
- go-pty \
- go-context \
- go-mux \
- go-patricia \
- go-logrus \
- go-fsnotify \
- go-dbus \
- go-capability \
- go-systemd \
btrfs-tools \
sqlite3 \
- go-distribution \
- compose-file \
- go-connections \
- notary \
- grpc-go \
libtool-native \
libtool \
"
-DEPENDS_append_class-target = " lvm2"
-RDEPENDS_${PN} = "util-linux util-linux-unshare iptables \
+DEPENDS:append:class-target = " lvm2"
+RDEPENDS:${PN} = "util-linux util-linux-unshare iptables \
${@bb.utils.contains('DISTRO_FEATURES', 'aufs', 'aufs-util', '', d)} \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'cgroup-lite', d)} \
bridge-utils \
ca-certificates \
"
-RDEPENDS_${PN} += "virtual/containerd virtual/runc"
+RDEPENDS:${PN} += "virtual-containerd ${VIRTUAL-RUNTIME_container_runtime}"
-RRECOMMENDS_${PN} = "kernel-module-dm-thin-pool kernel-module-nf-nat"
+RRECOMMENDS:${PN} = "kernel-module-dm-thin-pool kernel-module-nf-nat kernel-module-nf-conntrack-netlink kernel-module-xt-addrtype kernel-module-xt-masquerade"
PROVIDES += "virtual/docker"
# we want all the docker variant recpes to be installable via "docker"
PACKAGE_NAME = "docker"
-RPROVIDES_${PN} += "docker"
-RPROVIDES_${PN}-dbg += "docker-dbg"
-RPROVIDES_${PN}-dev += "docker-dev"
-RPROVIDES_${PN}-contrip += "docker-dev"
+RPROVIDES:${PN} += "docker"
+RPROVIDES:${PN}-dbg += "docker-dbg"
+RPROVIDES:${PN}-dev += "docker-dev"
+RPROVIDES:${PN}-contrip += "docker-dev"
inherit pkgconfig
-PACKAGECONFIG ??= "docker-init"
+PACKAGECONFIG ??= "docker-init seccomp"
PACKAGECONFIG[seccomp] = "seccomp,,libseccomp"
PACKAGECONFIG[docker-init] = ",,,docker-init"
PACKAGECONFIG[transient-config] = "transient-config"
+
+GO_IMPORT = "import"
+S = "${WORKDIR}/git"
+
+
inherit systemd update-rc.d
+inherit go
+inherit goarch
+inherit pkgconfig
+
+do_configure[noexec] = "1"
+
+# Export for possible use in Makefiles, default value comes from go.bbclass
+export GO_LINKSHARED
+
+DOCKER_PKG="github.com/docker/docker"
+# in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
+BUILD_TAGS ?= "exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
+
+do_compile() {
+ # Set GOPATH. See 'PACKAGERS.md'. Don't rely on
+ # docker to download its dependencies but rather
+ # use dependencies packaged independently.
+ cd ${S}/src/import
+ rm -rf .gopath
+ mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
+ ln -sf ../../../.. .gopath/src/"${DOCKER_PKG}"
+
+ mkdir -p .gopath/src/github.com/docker
+ ln -sf ${WORKDIR}/git/libnetwork .gopath/src/github.com/docker/libnetwork
+ ln -sf ${WORKDIR}/git/cli .gopath/src/github.com/docker/cli
+
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor"
+ export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export GOARCH=${TARGET_GOARCH}
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export DOCKER_BUILDTAGS='${BUILD_TAGS} ${PACKAGECONFIG_CONFARGS}'
+ export GO111MODULE=off
+
+ export DISABLE_WARN_OUTSIDE_CONTAINER=1
+
+ cd ${S}/src/import/
+
+ # this is the unsupported built structure
+ # that doesn't rely on an existing docker
+ # to build this:
+ VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${DOCKER_COMMIT}" ./hack/make.sh dynbinary
+
+ # build the cli
+ cd ${S}/src/import/.gopath/src/github.com/docker/cli
+ export CFLAGS=""
+ export LDFLAGS=""
+ export DOCKER_VERSION=${DOCKER_VERSION}
+ VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${DOCKER_COMMIT}" make dynbinary
+
+ # build the proxy
+ cd ${S}/src/import/.gopath/src/github.com/docker/libnetwork
+ oe_runmake cross-local
+}
+
+do_install() {
+ mkdir -p ${D}/${bindir}
+ cp ${WORKDIR}/git/cli/build/docker ${D}/${bindir}/docker
+ cp ${S}/src/import/bundles/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
+ cp ${WORKDIR}/git/libnetwork/bin/docker-proxy* ${D}/${bindir}/docker-proxy
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d ${D}${systemd_unitdir}/system
+ install -m 644 ${S}/src/import/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
+ # replaces one copied from above with one that uses the local registry for a mirror
+ install -m 644 ${S}/src/import/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
+ rm -f ${D}/${systemd_unitdir}/system/docker.service.rpm
+ else
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
+ fi
+ # TLS key that docker creates at run-time if not found is what resides here
+ if ${@bb.utils.contains('PACKAGECONFIG','transient-config','true','false',d)}; then
+ install -d ${D}${sysconfdir}
+ ln -s ..${localstatedir}/run/docker ${D}${sysconfdir}/docker
+ else
+ install -d ${D}${sysconfdir}/docker
+ fi
+
+ mkdir -p ${D}${datadir}/docker/
+ install -m 0755 ${S}/src/import/contrib/check-config.sh ${D}${datadir}/docker/
+}
+
SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker.service','',d)}"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+SYSTEMD_SERVICE:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker.socket','',d)}"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
-INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${PN}','',d)}"
-INITSCRIPT_NAME_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','docker.init','',d)}"
-INITSCRIPT_PARAMS_${PN} = "defaults"
+# inverted logic warning. We ony want the sysvinit init to be installed if systemd
+# is NOT in the distro features
+INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES','systemd','', '${PN}',d)}"
+INITSCRIPT_NAME:${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','', 'docker.init',d)}"
+INITSCRIPT_PARAMS:${PN} = "defaults"
inherit useradd
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r docker"
+GROUPADD_PARAM:${PN} = "-r docker"
COMPATIBLE_HOST = "^(?!(qemu)?mips).*"
-INSANE_SKIP_${PN} += "ldflags textrel"
+INSANE_SKIP:${PN} += "ldflags textrel"
+
+FILES:${PN} += "${systemd_unitdir}/system/* ${sysconfdir}/docker"
+
+PACKAGES =+ "${PN}-contrib"
+FILES:${PN}-contrib += "${datadir}/docker/check-config.sh"
+RDEPENDS:${PN}-contrib += "bash"
+
+# By the docker-packaging repository and https://docs.docker.com/engine/install/centos/#installation-methods
+# docker is packaged by most distros with a split between the engine and the CLI.
+#
+# We do the same here, by introducing the -cli package
+#
+# But to keep existing use cases working, we also create a RDEPENDS between the main
+# docker package (the engine) and the cli, so existing "docker" package installs will
+# continue to work the same way. To have separate and non-redepending packages created
+# set the DOCKER_UNIFIED_PACKAGE variable to False
+#
+PACKAGES =+ "${PN}-cli"
+FILES:${PN}-cli += "${bindir}/docker"
+
+# set to "False" if packages should be generated for the cli and engine, and
+# NOT rdepend to get a classic one-package install
+DOCKER_UNIFIED_PACKAGE ?= "True"
+RDEPENDS:${PN} += "${@bb.utils.contains("DOCKER_UNIFIED_PACKAGE", "True", "${PN}-cli", "", d)}"
diff --git a/recipes-containers/docker/files/0001-cli-use-external-GO111MODULE-and-cross-compiler.patch b/recipes-containers/docker/files/0001-cli-use-external-GO111MODULE-and-cross-compiler.patch
new file mode 100644
index 00000000..26f5aad4
--- /dev/null
+++ b/recipes-containers/docker/files/0001-cli-use-external-GO111MODULE-and-cross-compiler.patch
@@ -0,0 +1,33 @@
+From 650c882d3c53db118b01dd5e15fa1bc0ddaa36f1 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Thu, 15 Apr 2021 11:28:05 -0400
+Subject: [PATCH] cli: use external GO111MODULE and cross compiler
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ git/cli/scripts/build/binary | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+Index: git/cli/scripts/build/binary
+===================================================================
+--- git.orig/cli/scripts/build/binary
++++ git/cli/scripts/build/binary
+@@ -13,8 +13,6 @@
+
+ echo "Building $GO_LINKMODE $(basename "${TARGET}")"
+
+-export GO111MODULE=auto
+-
+ if [ "$(go env GOOS)" = "windows" ]; then
+ if [ ! -x "$(command -v goversioninfo)" ]; then
+ >&2 echo "goversioninfo not found, skipping manifesting binary"
+@@ -24,6 +22,6 @@
+ fi
+ fi
+
+-(set -x ; go build -o "${TARGET}" -tags "${GO_BUILDTAGS}" -ldflags "${GO_LDFLAGS}" ${GO_BUILDMODE} "${SOURCE}")
++(set -x ; ${GO} build -trimpath -o "${TARGET}" -tags "${GO_BUILDTAGS}" -ldflags "${GO_LDFLAGS}" ${GO_BUILDMODE} "${SOURCE}")
+
+ ln -sf "$(basename "${TARGET}")" "$(dirname "${TARGET}")/docker"
diff --git a/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch b/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch
new file mode 100644
index 00000000..160a3bca
--- /dev/null
+++ b/recipes-containers/docker/files/0001-dynbinary-use-go-cross-compiler.patch
@@ -0,0 +1,111 @@
+From 3ce6089417b8c6c4e8279e6ef60213436ebf8793 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 30 Jun 2020 22:23:33 -0400
+Subject: [PATCH] dynbinary: use go cross compiler
+
+MJ: use ${GO} also in "go env" calls, because native go:
+ $ go env GOARM
+ 5
+while go cross compiler for my target:
+ $ ${GO} env GOARM
+ 7
+this can lead to:
+ error: switch '-mcpu=cortex-a9' conflicts with switch '-march=armv5t' [-Werror]
+
+but even after fixing it to use "better" -march it still doesn't match with -mcpu
+set in our GOBUILDFLAGS, causing e.g.:
+ error: switch '-mcpu=cortex-a9' conflicts with switch '-march=armv7-a+simd' [-Werror]
+
+so drop CGO_CFLAGS/CGO_CXXFLAGS as in OE builds we don't need them
+as long as ${GO} and GOBUILDFLAGS are respected
+
+it was added in:
+https://github.com/moby/moby/commit/12558c8d6ea9f388b54eb94ba6b9eb4a9fc5c9f2
+
+and it wasn't an issue before:
+https://github.com/moby/moby/commit/8c12a6648b368cc2acaea0339d6c57c920ed265c
+
+because it was using 'case "${GOARM}" in' and ${GOARM} was empty in our builds
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ hack/make/.binary | 37 ++++++++-----------------------------
+ 1 file changed, 8 insertions(+), 29 deletions(-)
+
+Index: import/hack/make/.binary
+===================================================================
+--- import.orig/hack/make/.binary
++++ import/hack/make/.binary
+@@ -3,7 +3,7 @@
+
+ # a helper to provide ".exe" when it's appropriate
+ binary_extension() {
+- if [ "$(go env GOOS)" = 'windows' ]; then
++ if [ "$(${GO} env GOOS)" = 'windows' ]; then
+ echo -n '.exe'
+ fi
+ }
+@@ -16,33 +16,12 @@
+ (
+ export GOGC=${DOCKER_BUILD_GOGC:-1000}
+
+- if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
+- # must be cross-compiling!
+- if [ "$(go env GOOS)/$(go env GOARCH)" = "linux/arm" ]; then
+- # specify name of the target ARM architecture
+- case "$(go env GOARM)" in
+- 5)
+- export CGO_CFLAGS="-march=armv5t"
+- export CGO_CXXFLAGS="-march=armv5t"
+- ;;
+- 6)
+- export CGO_CFLAGS="-march=armv6"
+- export CGO_CXXFLAGS="-march=armv6"
+- ;;
+- 7)
+- export CGO_CFLAGS="-march=armv7-a"
+- export CGO_CXXFLAGS="-march=armv7-a"
+- ;;
+- esac
+- fi
+- fi
+-
+ # -buildmode=pie is not supported on Windows arm64 and Linux mips*, ppc64be
+ # https://github.com/golang/go/blob/go1.19.4/src/cmd/internal/sys/supported.go#L125-L132
+ if ! [ "$DOCKER_STATIC" = "1" ]; then
+ # -buildmode=pie not supported when -race is enabled
+ if [[ " $BUILDFLAGS " != *" -race "* ]]; then
+- case "$(go env GOOS)/$(go env GOARCH)" in
++ case "$(${GO} env GOOS)/$(${GO} env GOARCH)" in
+ windows/arm64 | linux/mips* | linux/ppc64) ;;
+ *)
+ BUILDFLAGS+=("-buildmode=pie")
+@@ -66,11 +45,11 @@
+ # only necessary for non-sandboxed invocation where TARGETPLATFORM is empty
+ PLATFORM_NAME=$TARGETPLATFORM
+ if [ -z "$PLATFORM_NAME" ]; then
+- PLATFORM_NAME="$(go env GOOS)/$(go env GOARCH)"
+- if [ -n "$(go env GOARM)" ]; then
+- PLATFORM_NAME+="/v$(go env GOARM)"
+- elif [ -n "$(go env GOAMD64)" ] && [ "$(go env GOAMD64)" != "v1" ]; then
+- PLATFORM_NAME+="/$(go env GOAMD64)"
++ PLATFORM_NAME="$(${GO} env GOOS)/$(${GO} env GOARCH)"
++ if [ -n "$(${GO} env GOARM)" ]; then
++ PLATFORM_NAME+="/v$(${GO} env GOARM)"
++ elif [ -n "$(${GO} env GOAMD64)" ] && [ "$(${GO} env GOAMD64)" != "v1" ]; then
++ PLATFORM_NAME+="/$(${GO} env GOAMD64)"
+ fi
+ fi
+
+@@ -82,7 +61,7 @@
+ if [ -n "$DOCKER_DEBUG" ]; then
+ set -x
+ fi
+- ./hack/with-go-mod.sh go build -mod=vendor -modfile=vendor.mod -o "$DEST/$BINARY_FULLNAME" "${BUILDFLAGS[@]}" -ldflags "$LDFLAGS $LDFLAGS_STATIC $DOCKER_LDFLAGS" -gcflags="${GCFLAGS}" "$GO_PACKAGE"
++ ./hack/with-go-mod.sh ${GO} build -trimpath -mod=vendor -modfile=vendor.mod -o "$DEST/$BINARY_FULLNAME" "${BUILDFLAGS[@]}" -ldflags "$LDFLAGS $LDFLAGS_STATIC $DOCKER_LDFLAGS" -gcflags="${GCFLAGS}" "$GO_PACKAGE"
+ )
+
+ echo "Created binary: $DEST/$BINARY_FULLNAME"
diff --git a/recipes-containers/docker/files/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch b/recipes-containers/docker/files/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch
deleted file mode 100644
index 70fdaf83..00000000
--- a/recipes-containers/docker/files/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 1263fdb50a540e9db742694b7cee08284ad986d0 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Wed, 17 Jul 2019 17:34:04 +0800
-Subject: [PATCH] imporve hardcoded CC on cross compile
-
-Since commit applied in moby [61a3285 Support cross-compile for arm]
-it hardcoded var-CC to support cross-compile for arm
-
-Correct it with "${parameter:-word}" format, it is helpful for user
-define toolchains
-
-(Use Default Values. If parameter is unset or null, the expansion of
-word is substituted. Otherwise, the value of parameter is substituted.)
-
-Upstream-Status: Submitted [https://github.com/moby/moby/pull/39546]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- components/engine/hack/make/.binary | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/import/components/engine/hack/make/.binary b/src/import/components/engine/hack/make/.binary
-index 53de6749e5..66f4ca05f3 100644
---- a/src/import/components/engine/hack/make/.binary
-+++ b/src/import/components/engine/hack/make/.binary
-@@ -44,27 +44,27 @@ if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARC
- # must be cross-compiling!
- case "$(go env GOOS)/$(go env GOARCH)" in
- windows/amd64)
-- export CC=x86_64-w64-mingw32-gcc
-+ export CC="${CC:-x86_64-w64-mingw32-gcc}"
- export CGO_ENABLED=1
- ;;
- linux/arm)
- case "${GOARM}" in
- 5|"")
-- export CC=arm-linux-gnueabi-gcc
-+ export CC="${CC:-arm-linux-gnueabi-gcc}"
- export CGO_ENABLED=1
- ;;
- 7)
-- export CC=arm-linux-gnueabihf-gcc
-+ export CC="${CC:-arm-linux-gnueabihf-gcc}"
- export CGO_ENABLED=1
- ;;
- esac
- ;;
- linux/arm64)
-- export CC=aarch64-linux-gnu-gcc
-+ export CC="${CC:-aarch64-linux-gnu-gcc}"
- export CGO_ENABLED=1
- ;;
- linux/amd64)
-- export CC=x86_64-linux-gnu-gcc
-+ export CC="${CC:-x86_64-linux-gnu-gcc}"
- export CGO_ENABLED=1
- ;;
- esac
---
-2.23.0
-
diff --git a/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch b/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch
index c623b260..f94f73e4 100644
--- a/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch
+++ b/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch
@@ -6,6 +6,8 @@ Subject: [PATCH] libnetwork: use $(GO) instead of go
Ensure that the libnetwork makefile uses the go cross flags and
utilities.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
Makefile | 14 +++++++-------
@@ -15,27 +17,29 @@ Index: git/libnetwork/Makefile
===================================================================
--- git.orig/libnetwork/Makefile
+++ git/libnetwork/Makefile
-@@ -45,9 +45,9 @@
+@@ -45,10 +45,10 @@
build-local:
@echo "🐳 $@"
@mkdir -p "bin"
-- go build -tags experimental -o "bin/dnet" ./cmd/dnet
-- go build -o "bin/docker-proxy" ./cmd/proxy
+- GO111MODULE=off go build -tags experimental -o "bin/dnet" ./cmd/dnet
+- GO111MODULE=off go build -o "bin/docker-proxy" ./cmd/proxy
- CGO_ENABLED=0 go build -o "bin/diagnosticClient" ./cmd/diagnostic
-+ $(GO) build -tags experimental -o "bin/dnet" ./cmd/dnet
-+ $(GO) build -o "bin/proxy" ./cmd/proxy
-+ CGO_ENABLED=0 $(GO) build -o "bin/diagnosticClient" ./cmd/diagnostic
- CGO_ENABLED=0 go build -o "bin/testMain" ./cmd/networkdb-test/testMain.go
+- CGO_ENABLED=0 go build -o "bin/testMain" ./cmd/networkdb-test/testMain.go
++ GO111MODULE=off $(GO) build -trimpath -tags experimental -o "bin/dnet" ./cmd/dnet
++ GO111MODULE=off $(GO) build -trimpath -o "bin/docker-proxy" ./cmd/proxy
++ CGO_ENABLED=0 $(GO) build -trimpath -o "bin/diagnosticClient" ./cmd/diagnostic
++ CGO_ENABLED=0 $(GO) build -trimpath -o "bin/testMain" ./cmd/networkdb-test/testMain.go
build-images:
+ @echo "🐳 $@"
@@ -82,8 +82,8 @@
cross-local:
@echo "🐳 $@"
-- go build -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
-- go build -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
-+ @$(GO) build -linkshared $(GOBUILDFLAGS) -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
-+ @$(GO) build -linkshared $(GOBUILDFLAGS) -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
+- GO111MODULE=off go build -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
+- GO111MODULE=off go build -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
++ GO111MODULE=off $(GO) build -trimpath $(GO_LINKSHARED) $(GOBUILDFLAGS) -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
++ GO111MODULE=off $(GO) build -trimpath $(GO_LINKSHARED) $(GOBUILDFLAGS) -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
# Rebuild protocol buffers.
# These may need to be rebuilt after vendoring updates, so .proto files are declared .PHONY so they are always rebuilt.
diff --git a/recipes-containers/docker/files/docker-registry.service b/recipes-containers/docker/files/docker-registry.service
deleted file mode 100644
index 7b4bc468..00000000
--- a/recipes-containers/docker/files/docker-registry.service
+++ /dev/null
@@ -1,19 +0,0 @@
-[Unit]
-Description=docker private registry service
-After=docker.service
-
-[Service]
-ExecStartPre=-/usr/bin/docker kill registry
-ExecStartPre=-/usr/bin/docker rm registry
-ExecStart=/usr/bin/docker run --name registry -v /mirror/registry:/tmp/ -p 5000:5000 \
- -e "STANDALONE=true" \
- -e "MIRROR_SOURCE=https://registry-1.docker.io" \
- -e "MIRROR_SOURCE_INDEX=https://index.docker.io" \
- -e "SETTINGS_FLAVOR=local" \
- registry
-ExecStop=-/usr/bin/docker stop registry
-Restart=always
-RestartSec=10s
-
-[Install]
-WantedBy=multi-user.target
diff --git a/recipes-containers/docker/files/docker.init b/recipes-containers/docker/files/docker.init
index b37ddc95..24f8fea6 100644
--- a/recipes-containers/docker/files/docker.init
+++ b/recipes-containers/docker/files/docker.init
@@ -40,7 +40,7 @@ start() {
if ! [ -f $pidfile ]; then
printf "Starting $prog:\t"
echo -e "\n$(date)\n" >> $logfile
- "$unshare" -m -- $exec $other_args &>> $logfile &
+ "$unshare" -m -- $exec $other_args >> $logfile 2>&1 &
pid=$!
touch $lockfile
# wait up to 10 seconds for the pidfile to exist. see
diff --git a/recipes-containers/go-digest/go-digest_git.bb b/recipes-containers/go-digest/go-digest_git.bb
index a2f8cd69..a1be705d 100644
--- a/recipes-containers/go-digest/go-digest_git.bb
+++ b/recipes-containers/go-digest/go-digest_git.bb
@@ -2,15 +2,15 @@ DESCRIPTION = "Common digest package used across the container ecosystem."
HOMEPAGE = "https://github.com/opencontainers/go-digest.git"
SECTION = "devel/go"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE.code;md5=9cd86830b557232ce55e2a6b47387471"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=2d6fc0e85c3f118af64c85a78d56d3cf"
SRCNAME = "go-digest"
PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
-SRCREV = "b6234c321f263c503268e3b205f3d9755f9d14ed"
-PV = "v1.0.0-rc0+git${SRCPV}"
+SRCREV = "65fac7b55eb714642e9359458656939349dcb766"
+PV = "v1.0.0-rc0+git"
S = "${WORKDIR}/git"
@@ -18,6 +18,8 @@ S = "${WORKDIR}/git"
do_compile() {
}
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
@@ -26,7 +28,7 @@ do_install() {
fi
cp $j ${D}${prefix}/local/go/$j
done
- cp -r ${S}/src/${PKG_NAME}/LICENSE.code ${D}${prefix}/local/go/src/${PKG_NAME}/
+ cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
}
SYSROOT_PREPROCESS_FUNCS += "go_digest_file_sysroot_preprocess"
@@ -36,6 +38,6 @@ go_digest_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-CLEANBROKEN = "1" \ No newline at end of file
+CLEANBROKEN = "1"
diff --git a/recipes-containers/go-errors/go-errors_git.bb b/recipes-containers/go-errors/go-errors_git.bb
index 3bb74a7c..1236bb7b 100644
--- a/recipes-containers/go-errors/go-errors_git.bb
+++ b/recipes-containers/go-errors/go-errors_git.bb
@@ -1,16 +1,16 @@
DESCRIPTION = "Simple error handling primitives"
HOMEPAGE = "https://github.com/pkg/errors"
SECTION = "devel/go"
-LICENSE = "BSD"
+LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=6fe682a02df52c6653f33bd0f7126b5a"
SRCNAME = "errors"
PKG_NAME = "github.com/pkg/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
-SRCREV = "248dadf4e9068a0b3e79f02ed0a610d935de5302"
-PV = "v0.8.0+git${SRCPV}"
+SRCREV = "5dd12d0cfe7f152f80558d591504ce685299311e"
+PV = "v0.8.1+git"
S = "${WORKDIR}/git"
@@ -18,6 +18,8 @@ S = "${WORKDIR}/git"
do_compile() {
}
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
@@ -36,6 +38,6 @@ go_errors_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-CLEANBROKEN = "1" \ No newline at end of file
+CLEANBROKEN = "1"
diff --git a/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb b/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb
index e942e4e3..8dfb0692 100644
--- a/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb
+++ b/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb
@@ -7,10 +7,10 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE.txt;md5=920d76114a32b0fb75b3f
SRCNAME = "cobra"
PKG_NAME = "github.com/spf13/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=main;protocol=https"
-SRCREV = "b5d8e8f46a2f829f755b6e33b454e25c61c935e1"
-PV = "v0.0.1+git${SRCPV}"
+SRCREV = "4dd4b25de38418174a6e859e8a32eaccca32dccc"
+PV = "v1.6.0+git"
S = "${WORKDIR}/git"
@@ -18,6 +18,8 @@ S = "${WORKDIR}/git"
do_compile() {
}
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
@@ -36,6 +38,6 @@ cobra_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-CLEANBROKEN = "1" \ No newline at end of file
+CLEANBROKEN = "1"
diff --git a/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb b/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb
index 2fbcb439..b3e41545 100644
--- a/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb
+++ b/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb
@@ -1,16 +1,16 @@
DESCRIPTION = "Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags."
HOMEPAGE = "https://github.com/spf13/pflag"
SECTION = "devel/go"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=1e8b7dc8b906737639131047a590f21d"
SRCNAME = "pflag"
PKG_NAME = "github.com/spf13/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
-SRCREV = "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
-PV = "v1.0.0-rc4+git${SRCPV}"
+SRCREV = "d5e0c0615acee7028e1e2740a11102313be88de1"
+PV = "v1.0.5+git"
S = "${WORKDIR}/git"
@@ -18,6 +18,8 @@ S = "${WORKDIR}/git"
do_compile() {
}
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
@@ -36,6 +38,6 @@ pflag_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-CLEANBROKEN = "1" \ No newline at end of file
+CLEANBROKEN = "1"
diff --git a/recipes-containers/k3s/README.md b/recipes-containers/k3s/README.md
new file mode 100644
index 00000000..d167bcdb
--- /dev/null
+++ b/recipes-containers/k3s/README.md
@@ -0,0 +1,268 @@
+# k3s: Lightweight Kubernetes
+
+Rancher's [k3s](https://k3s.io/), available under
+[Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0), provides
+lightweight Kubernetes suitable for small/edge devices. There are use cases
+where the
+[installation procedures provided by Rancher](https://rancher.com/docs/k3s/latest/en/installation/)
+are not ideal but a bitbake-built version is what is needed. And only a few
+mods to the [k3s source code](https://github.com/rancher/k3s) is needed to
+accomplish that.
+
+## CNI
+
+By default, K3s will run with flannel as the CNI, using VXLAN as the default
+backend. It is both possible to change the flannel backend and to change from
+flannel to another CNI.
+
+Please see <https://rancher.com/docs/k3s/latest/en/installation/network-options/>
+for further k3s networking details.
+
+## Configure and run a k3s agent
+
+The convenience script `k3s-agent` can be used to set up a k3s agent (service):
+
+```shell
+k3s-agent -t <token> -s https://<master>:6443
+```
+(Here `<token>` is found in `/var/lib/rancher/k3s/server/node-token` at the
+k3s master.)
+
+Example:
+```shell
+k3s-agent -t /var/lib/rancher/k3s/server/node-token -s https://localhost:6443
+```
+
+If you are running an all in one node (both the server and agent) for testing
+purposes, do not run the above script. It will perform cleanup and break flannel
+networking on your host.
+
+Instead, run the following (note the space between 'k3s' and 'agent'):
+
+```shell
+k3s agent -t /var/lib/rancher/k3s/server/token --server http://localhost:6443/
+```
+
+## Notes:
+
+Memory:
+
+ if running under qemu, the default of 256M of memory is not enough, k3s will
+ OOM and exit.
+
+ Boot with qemuparams="-m 2048" to boot with 2G of memory (or choose the
+ appropriate amount for your configuration)
+
+Disk:
+
+ if using qemu and core-image* you'll need to add extra space in your disks
+ to ensure containers can start. The following in your image recipe, or
+ local.conf would add 2G of extra space to the rootfs:
+
+```shell
+IMAGE_ROOTFS_EXTRA_SPACE = "2097152"
+```
+
+## Example qemux86-64 boot line:
+
+```shell
+runqemu qemux86-64 nographic kvm slirp qemuparams="-m 2048"
+```
+
+k3s logs can be seen via:
+
+
+```shell
+% journalctl -u k3s
+```
+
+or
+
+```shell
+% journalctl -xe
+```
+
+## Example output from qemux86-64 running k3s server:
+
+```shell
+root@qemux86-64:~# kubectl get nodes
+NAME STATUS ROLES AGE VERSION
+qemux86-64 Ready master 46s v1.18.9-k3s1
+
+root@qemux86-64:~# kubectl get pods -n kube-system
+NAME READY STATUS RESTARTS AGE
+local-path-provisioner-6d59f47c7-h7lxk 1/1 Running 0 2m32s
+metrics-server-7566d596c8-mwntr 1/1 Running 0 2m32s
+helm-install-traefik-229v7 0/1 Completed 0 2m32s
+coredns-7944c66d8d-9rfj7 1/1 Running 0 2m32s
+svclb-traefik-pb5j4 2/2 Running 0 89s
+traefik-758cd5fc85-lxpr8 1/1 Running 0 89s
+
+root@qemux86-64:~# kubectl describe pods -n kube-system
+
+root@qemux86-64:~# ip a s
+1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
+ link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
+ inet 127.0.0.1/8 scope host lo
+ valid_lft forever preferred_lft forever
+ inet6 ::1/128 scope host
+ valid_lft forever preferred_lft forever
+2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
+ link/ether 52:54:00:12:35:02 brd ff:ff:ff:ff:ff:ff
+ inet 10.0.2.15/24 brd 10.0.2.255 scope global eth0
+ valid_lft forever preferred_lft forever
+ inet6 fec0::5054:ff:fe12:3502/64 scope site dynamic mngtmpaddr
+ valid_lft 86239sec preferred_lft 14239sec
+ inet6 fe80::5054:ff:fe12:3502/64 scope link
+ valid_lft forever preferred_lft forever
+3: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
+ link/sit 0.0.0.0 brd 0.0.0.0
+4: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default
+ link/ether e2:aa:04:89:e6:0a brd ff:ff:ff:ff:ff:ff
+ inet 10.42.0.0/32 brd 10.42.0.0 scope global flannel.1
+ valid_lft forever preferred_lft forever
+ inet6 fe80::e0aa:4ff:fe89:e60a/64 scope link
+ valid_lft forever preferred_lft forever
+5: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
+ link/ether 02:42:be:3e:25:e7 brd ff:ff:ff:ff:ff:ff
+ inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
+ valid_lft forever preferred_lft forever
+6: cni0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
+ link/ether 82:8e:b4:f8:06:e7 brd ff:ff:ff:ff:ff:ff
+ inet 10.42.0.1/24 brd 10.42.0.255 scope global cni0
+ valid_lft forever preferred_lft forever
+ inet6 fe80::808e:b4ff:fef8:6e7/64 scope link
+ valid_lft forever preferred_lft forever
+7: veth82ac482e@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
+ link/ether ea:9d:14:c1:00:70 brd ff:ff:ff:ff:ff:ff link-netns cni-c52e6e09-f6e0-a47b-aea3-d6c47d3e2d01
+ inet6 fe80::e89d:14ff:fec1:70/64 scope link
+ valid_lft forever preferred_lft forever
+8: vethb94745ed@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
+ link/ether 1e:7f:7e:d3:ca:e8 brd ff:ff:ff:ff:ff:ff link-netns cni-86958efe-2462-016f-292d-81dbccc16a83
+ inet6 fe80::8046:3cff:fe23:ced1/64 scope link
+ valid_lft forever preferred_lft forever
+9: veth81ffb276@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
+ link/ether 2a:1d:48:54:76:50 brd ff:ff:ff:ff:ff:ff link-netns cni-5d77238e-6452-4fa3-40d2-91d48386080b
+ inet6 fe80::acf4:7fff:fe11:b6f2/64 scope link
+ valid_lft forever preferred_lft forever
+10: vethce261f6a@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
+ link/ether 72:a3:90:4a:c5:12 brd ff:ff:ff:ff:ff:ff link-netns cni-55675948-77f2-a952-31ce-615f2bdb0093
+ inet6 fe80::4d5:1bff:fe5d:db3a/64 scope link
+ valid_lft forever preferred_lft forever
+11: vethee199cf4@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
+ link/ether e6:90:a4:a3:bc:a1 brd ff:ff:ff:ff:ff:ff link-netns cni-4aeccd16-2976-8a78-b2c4-e028da3bb1ea
+ inet6 fe80::c85a:8bff:fe0b:aea0/64 scope link
+ valid_lft forever preferred_lft forever
+
+
+root@qemux86-64:~# kubectl describe nodes
+
+Name: qemux86-64
+Roles: master
+Labels: beta.kubernetes.io/arch=amd64
+ beta.kubernetes.io/instance-type=k3s
+ beta.kubernetes.io/os=linux
+ k3s.io/hostname=qemux86-64
+ k3s.io/internal-ip=10.0.2.15
+ kubernetes.io/arch=amd64
+ kubernetes.io/hostname=qemux86-64
+ kubernetes.io/os=linux
+ node-role.kubernetes.io/master=true
+ node.kubernetes.io/instance-type=k3s
+Annotations: flannel.alpha.coreos.com/backend-data: {"VtepMAC":"2e:52:6a:1b:76:d4"}
+ flannel.alpha.coreos.com/backend-type: vxlan
+ flannel.alpha.coreos.com/kube-subnet-manager: true
+ flannel.alpha.coreos.com/public-ip: 10.0.2.15
+ k3s.io/node-args: ["server"]
+ k3s.io/node-config-hash: MLFMUCBMRVINLJJKSG32TOUFWB4CN55GMSNY25AZPESQXZCYRN2A====
+ k3s.io/node-env: {}
+ node.alpha.kubernetes.io/ttl: 0
+ volumes.kubernetes.io/controller-managed-attach-detach: true
+CreationTimestamp: Tue, 10 Nov 2020 14:01:28 +0000
+Taints: <none>
+Unschedulable: false
+Lease:
+ HolderIdentity: qemux86-64
+ AcquireTime: <unset>
+ RenewTime: Tue, 10 Nov 2020 14:56:27 +0000
+Conditions:
+ Type Status LastHeartbeatTime LastTransitionTime Reason Message
+ ---- ------ ----------------- ------------------ ------ -------
+ NetworkUnavailable False Tue, 10 Nov 2020 14:43:46 +0000 Tue, 10 Nov 2020 14:43:46 +0000 FlannelIsUp Flannel is running on this node
+ MemoryPressure False Tue, 10 Nov 2020 14:51:48 +0000 Tue, 10 Nov 2020 14:45:46 +0000 KubeletHasSufficientMemory kubelet has sufficient memory available
+ DiskPressure False Tue, 10 Nov 2020 14:51:48 +0000 Tue, 10 Nov 2020 14:45:46 +0000 KubeletHasNoDiskPressure kubelet has no disk pressure
+ PIDPressure False Tue, 10 Nov 2020 14:51:48 +0000 Tue, 10 Nov 2020 14:45:46 +0000 KubeletHasSufficientPID kubelet has sufficient PID available
+ Ready True Tue, 10 Nov 2020 14:51:48 +0000 Tue, 10 Nov 2020 14:45:46 +0000 KubeletReady kubelet is posting ready status
+Addresses:
+ InternalIP: 10.0.2.15
+ Hostname: qemux86-64
+Capacity:
+ cpu: 1
+ ephemeral-storage: 39748144Ki
+ memory: 2040164Ki
+ pods: 110
+Allocatable:
+ cpu: 1
+ ephemeral-storage: 38666994453
+ memory: 2040164Ki
+ pods: 110
+System Info:
+ Machine ID: 6a4abfacbf83457e9a0cbb5777457c5d
+ System UUID: 6a4abfacbf83457e9a0cbb5777457c5d
+ Boot ID: f5ddf6c8-1abf-4aef-9e29-106488e3c337
+ Kernel Version: 5.8.13-yocto-standard
+ OS Image: Poky (Yocto Project Reference Distro) 3.2+snapshot-20201105 (master)
+ Operating System: linux
+ Architecture: amd64
+ Container Runtime Version: containerd://1.4.1-4-ge44e8ebea.m
+ Kubelet Version: v1.18.9-k3s1
+ Kube-Proxy Version: v1.18.9-k3s1
+PodCIDR: 10.42.0.0/24
+PodCIDRs: 10.42.0.0/24
+ProviderID: k3s://qemux86-64
+Non-terminated Pods: (5 in total)
+ Namespace Name CPU Requests CPU Limits Memory Requests Memory Limits AGE
+ --------- ---- ------------ ---------- --------------- ------------- ---
+ kube-system svclb-traefik-jpmnd 0 (0%) 0 (0%) 0 (0%) 0 (0%) 54m
+ kube-system metrics-server-7566d596c8-wh29d 0 (0%) 0 (0%) 0 (0%) 0 (0%) 56m
+ kube-system local-path-provisioner-6d59f47c7-npn4d 0 (0%) 0 (0%) 0 (0%) 0 (0%) 56m
+ kube-system coredns-7944c66d8d-md8hr 100m (10%) 0 (0%) 70Mi (3%) 170Mi (8%) 56m
+ kube-system traefik-758cd5fc85-phjr2 0 (0%) 0 (0%) 0 (0%) 0 (0%) 54m
+Allocated resources:
+ (Total limits may be over 100 percent, i.e., overcommitted.)
+ Resource Requests Limits
+ -------- -------- ------
+ cpu 100m (10%) 0 (0%)
+ memory 70Mi (3%) 170Mi (8%)
+ ephemeral-storage 0 (0%) 0 (0%)
+Events:
+ Type Reason Age From Message
+ ---- ------ ---- ---- -------
+ Normal Starting 56m kube-proxy Starting kube-proxy.
+ Normal Starting 55m kubelet Starting kubelet.
+ Warning InvalidDiskCapacity 55m kubelet invalid capacity 0 on image filesystem
+ Normal NodeHasSufficientPID 55m (x2 over 55m) kubelet Node qemux86-64 status is now: NodeHasSufficientPID
+ Normal NodeHasSufficientMemory 55m (x2 over 55m) kubelet Node qemux86-64 status is now: NodeHasSufficientMemory
+ Normal NodeHasNoDiskPressure 55m (x2 over 55m) kubelet Node qemux86-64 status is now: NodeHasNoDiskPressure
+ Normal NodeAllocatableEnforced 55m kubelet Updated Node Allocatable limit across pods
+ Normal NodeReady 54m kubelet Node qemux86-64 status is now: NodeReady
+ Normal Starting 52m kube-proxy Starting kube-proxy.
+ Normal NodeReady 50m kubelet Node qemux86-64 status is now: NodeReady
+ Normal NodeAllocatableEnforced 50m kubelet Updated Node Allocatable limit across pods
+ Warning Rebooted 50m kubelet Node qemux86-64 has been rebooted, boot id: a4e4d2d8-ddb4-49b8-b0a9-e81d12707113
+ Normal NodeHasSufficientMemory 50m (x2 over 50m) kubelet Node qemux86-64 status is now: NodeHasSufficientMemory
+ Normal Starting 50m kubelet Starting kubelet.
+ Normal NodeHasSufficientPID 50m (x2 over 50m) kubelet Node qemux86-64 status is now: NodeHasSufficientPID
+ Normal NodeHasNoDiskPressure 50m (x2 over 50m) kubelet Node qemux86-64 status is now: NodeHasNoDiskPressure
+ Normal NodeNotReady 17m kubelet Node qemux86-64 status is now: NodeNotReady
+ Warning InvalidDiskCapacity 15m (x2 over 50m) kubelet invalid capacity 0 on image filesystem
+ Normal Starting 12m kube-proxy Starting kube-proxy.
+ Normal Starting 10m kubelet Starting kubelet.
+ Warning InvalidDiskCapacity 10m kubelet invalid capacity 0 on image filesystem
+ Normal NodeAllocatableEnforced 10m kubelet Updated Node Allocatable limit across pods
+ Warning Rebooted 10m kubelet Node qemux86-64 has been rebooted, boot id: f5ddf6c8-1abf-4aef-9e29-106488e3c337
+ Normal NodeHasSufficientMemory 10m (x2 over 10m) kubelet Node qemux86-64 status is now: NodeHasSufficientMemory
+ Normal NodeHasNoDiskPressure 10m (x2 over 10m) kubelet Node qemux86-64 status is now: NodeHasNoDiskPressure
+ Normal NodeHasSufficientPID 10m (x2 over 10m) kubelet Node qemux86-64 status is now: NodeHasSufficientPID
+ Normal NodeReady 10m kubelet Node qemux86-64 status is now: NodeReady
+```
diff --git a/recipes-containers/k3s/k3s/0001-Finding-host-local-in-usr-libexec.patch b/recipes-containers/k3s/k3s/0001-Finding-host-local-in-usr-libexec.patch
new file mode 100644
index 00000000..3e8e5512
--- /dev/null
+++ b/recipes-containers/k3s/k3s/0001-Finding-host-local-in-usr-libexec.patch
@@ -0,0 +1,24 @@
+From 4faf68d68c97cfd10947e1152f711acc59f39647 Mon Sep 17 00:00:00 2001
+From: Erik Jansson <erikja@axis.com>
+Date: Wed, 16 Oct 2019 15:07:48 +0200
+Subject: [PATCH] Finding host-local in /usr/libexec
+
+Upstream-Status: Inappropriate [embedded specific]
+Signed-off-by: <erikja@axis.com>
+---
+ pkg/agent/config/config.go | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: import/pkg/agent/config/config.go
+===================================================================
+--- import.orig/pkg/agent/config/config.go
++++ import/pkg/agent/config/config.go
+@@ -577,7 +577,7 @@ func get(ctx context.Context, envInfo *c
+
+ nodeConfig.NoFlannel = nodeConfig.FlannelBackend == config.FlannelBackendNone
+ if !nodeConfig.NoFlannel {
+- hostLocal, err := exec.LookPath("host-local")
++ hostLocal, err := exec.LookPath("/usr/libexec/cni/host-local")
+ if err != nil {
+ return nil, errors.Wrapf(err, "failed to find host-local")
+ }
diff --git a/recipes-containers/k3s/k3s/cni-containerd-net.conf b/recipes-containers/k3s/k3s/cni-containerd-net.conf
new file mode 100644
index 00000000..ca434d6f
--- /dev/null
+++ b/recipes-containers/k3s/k3s/cni-containerd-net.conf
@@ -0,0 +1,24 @@
+{
+ "cniVersion": "0.4.0",
+ "name": "containerd-net",
+ "plugins": [
+ {
+ "type": "bridge",
+ "bridge": "cni0",
+ "isGateway": true,
+ "ipMasq": true,
+ "promiscMode": true,
+ "ipam": {
+ "type": "host-local",
+ "subnet": "10.88.0.0/16",
+ "routes": [
+ { "dst": "0.0.0.0/0" }
+ ]
+ }
+ },
+ {
+ "type": "portmap",
+ "capabilities": {"portMappings": true}
+ }
+ ]
+}
diff --git a/recipes-containers/k3s/k3s/k3s-agent b/recipes-containers/k3s/k3s/k3s-agent
new file mode 100755
index 00000000..b6c6cb62
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-agent
@@ -0,0 +1,103 @@
+#!/bin/sh -eu
+#
+# Copyright (C) 2020 Axis Communications AB
+#
+# SPDX-License-Identifier: Apache-2.0
+
+ENV_CONF=/etc/systemd/system/k3s-agent.service.d/10-env.conf
+
+usage() {
+ echo "
+USAGE:
+ ${0##*/} [OPTIONS]
+OPTIONS:
+ --token value, -t value Token to use for authentication [\$K3S_TOKEN]
+ --token-file value Token file to use for authentication [\$K3S_TOKEN_FILE]
+ --server value, -s value Server to connect to [\$K3S_URL]
+ --node-name value Node name [\$K3S_NODE_NAME]
+ --resolv-conf value Kubelet resolv.conf file [\$K3S_RESOLV_CONF]
+ --cluster-secret value Shared secret used to bootstrap a cluster [\$K3S_CLUSTER_SECRET]
+ -h print this
+"
+}
+
+[ $# -gt 0 ] || {
+ usage
+ exit
+}
+
+case $1 in
+ -*)
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+esac
+
+rm -f $ENV_CONF
+mkdir -p ${ENV_CONF%/*}
+echo [Service] > $ENV_CONF
+
+while getopts "t:s:-:h" opt; do
+ case $opt in
+ h)
+ usage
+ exit
+ ;;
+ t)
+ VAR_NAME=K3S_TOKEN
+ ;;
+ s)
+ VAR_NAME=K3S_URL
+ ;;
+ -)
+ [ $# -ge $OPTIND ] || {
+ usage
+ exit 1
+ }
+ opt=$OPTARG
+ eval OPTARG='$'$OPTIND
+ OPTIND=$(($OPTIND + 1))
+ case $opt in
+ token)
+ VAR_NAME=K3S_TOKEN
+ ;;
+ token-file)
+ VAR_NAME=K3S_TOKEN_FILE
+ ;;
+ server)
+ VAR_NAME=K3S_URL
+ ;;
+ node-name)
+ VAR_NAME=K3S_NODE_NAME
+ ;;
+ resolv-conf)
+ VAR_NAME=K3S_RESOLV_CONF
+ ;;
+ cluster-secret)
+ VAR_NAME=K3S_CLUSTER_SECRET
+ ;;
+ help)
+ usage
+ exit
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+ echo Environment=$VAR_NAME=$OPTARG >> $ENV_CONF
+done
+
+chmod 0644 $ENV_CONF
+rm -rf /var/lib/rancher/k3s/agent
+systemctl daemon-reload
+systemctl restart k3s-agent
+systemctl enable k3s-agent.service
diff --git a/recipes-containers/k3s/k3s/k3s-agent.service b/recipes-containers/k3s/k3s/k3s-agent.service
new file mode 100644
index 00000000..9f9016da
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-agent.service
@@ -0,0 +1,26 @@
+# Derived from the k3s install.sh's create_systemd_service_file() function
+[Unit]
+Description=Lightweight Kubernetes Agent
+Documentation=https://k3s.io
+Requires=containerd.service
+After=containerd.service
+
+[Install]
+WantedBy=multi-user.target
+
+[Service]
+Type=notify
+KillMode=control-group
+Delegate=yes
+LimitNOFILE=infinity
+LimitNPROC=infinity
+LimitCORE=infinity
+TasksMax=infinity
+TimeoutStartSec=0
+Restart=always
+RestartSec=5s
+ExecStartPre=-/sbin/modprobe br_netfilter
+ExecStartPre=-/sbin/modprobe overlay
+ExecStart=/usr/local/bin/k3s agent
+ExecStopPost=/usr/local/bin/k3s-clean
+
diff --git a/recipes-containers/k3s/k3s/k3s-clean b/recipes-containers/k3s/k3s/k3s-clean
new file mode 100755
index 00000000..8eca918c
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-clean
@@ -0,0 +1,30 @@
+#!/bin/sh -eu
+#
+# Copyright (C) 2020 Axis Communications AB
+#
+# SPDX-License-Identifier: Apache-2.0
+
+do_unmount() {
+ [ $# -eq 2 ] || return
+ local mounts=
+ while read ignore mount ignore; do
+ case $mount in
+ $1/*|$2/*)
+ mounts="$mount $mounts"
+ ;;
+ esac
+ done </proc/self/mounts
+ [ -z "$mounts" ] || umount $mounts
+}
+
+do_unmount /run/k3s /var/lib/rancher/k3s
+
+# The lines below come from install.sh's create_killall() function:
+ip link show 2>/dev/null | grep 'master cni0' | while read ignore iface ignore; do
+ iface=${iface%%@*}
+ [ -z "$iface" ] || ip link delete $iface
+done
+
+ip link delete cni0
+ip link delete flannel.1
+rm -rf /var/lib/cni/
diff --git a/recipes-containers/k3s/k3s/k3s-killall.sh b/recipes-containers/k3s/k3s/k3s-killall.sh
new file mode 100644
index 00000000..9e726153
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s-killall.sh
@@ -0,0 +1,82 @@
+#!/bin/sh
+
+# Based on: k3s-killall.sh installed when running Rancher Lab's K3S install.sh
+# In open-source project: https://github.com/k3s-io/k3s
+#
+# Original file: Copyright (c) 2021 Rancher Labs and Contributors.
+# Modifications: Copyright (c) 2021 Arm Limited and Contributors. All rights reserved.
+#
+# Modifications:
+# - Change systemd service directory location
+# - Fix PID parsing to run on core image
+# - Remove service stopping code (as this is intended to run as part of service
+# stop)
+# - Changes to resolve warnings from the ShellCheck static analysis tool
+#
+# SPDX-License-Identifier: Apache License 2.0
+
+[ "$(id -u)" -eq 0 ] || exec sudo "$0" "$@"
+
+for bin in /var/lib/rancher/k3s/data/**/bin/; do
+ [ -d "$bin" ] && export PATH=$PATH:$bin:$bin/aux
+done
+
+set -x
+
+pschildren() {
+ ps -e -o ppid= -o pid= | sed -e 's/^\s*//g; s/\s\s*/\t/g;' | grep -w "^$1" | cut -f2
+}
+
+pstree() {
+ for pid in "$@"; do
+ echo "$pid"
+ for child in $(pschildren "$pid"); do
+ pstree "$child"
+ done
+ done
+}
+
+killtree() {
+ while read -r pid; do
+ if [ -n "${pid}" ]; then
+ kill -9 "${pid}" 2>/dev/null
+ fi
+ done <<EOF
+$({ set +x; } 2>/dev/null; pstree "$@"; set -x;)
+EOF
+}
+
+getshims() {
+ ps -e -o pid= -o args= | sed -e 's/^ *//; s/\s\s*/\t/;' | grep -w '[^/]*/bin/containerd-shim' | cut -f1
+}
+
+killtree "$({ set +x; } 2>/dev/null; getshims; set -x)"
+
+# shellcheck disable=SC2016
+do_unmount_and_remove() {
+ set +x
+ while read -r _ path _; do
+ case "$path" in $1*) echo "$path" ;; esac
+ done < /proc/self/mounts | sort -r | xargs -r -t -n 1 sh -c 'umount "$0" && rm -rf "$0"'
+ set -x
+}
+
+do_unmount_and_remove '/run/k3s'
+do_unmount_and_remove '/var/lib/rancher/k3s'
+do_unmount_and_remove '/var/lib/kubelet/pods'
+do_unmount_and_remove '/var/lib/kubelet/plugins'
+do_unmount_and_remove '/run/netns/cni-'
+
+# Remove CNI namespaces
+ip netns show 2>/dev/null | grep cni- | xargs -r -t -n 1 ip netns delete
+
+# Delete network interface(s) that match 'master cni0'
+ip link show 2>/dev/null | grep 'master cni0' | while read -r _ iface _; do
+ iface=${iface%%@*}
+ [ -z "$iface" ] || ip link delete "$iface"
+done
+ip link delete cni0
+ip link delete flannel.1
+ip link delete flannel-v6.1
+rm -rf /var/lib/cni/
+iptables-save | grep -v KUBE- | grep -v CNI- | iptables-restore
diff --git a/recipes-containers/k3s/k3s/k3s.service b/recipes-containers/k3s/k3s/k3s.service
new file mode 100644
index 00000000..33d3ee74
--- /dev/null
+++ b/recipes-containers/k3s/k3s/k3s.service
@@ -0,0 +1,37 @@
+# Derived from the k3s install.sh's create_systemd_service_file() function
+[Unit]
+Description=Lightweight Kubernetes
+Documentation=https://k3s.io
+Requires=containerd.service
+After=containerd.service
+After=network-online.target
+Wants=network-online.target
+
+[Install]
+WantedBy=multi-user.target
+
+[Service]
+Type=notify
+EnvironmentFile=-/etc/default/%N
+EnvironmentFile=-/etc/sysconfig/%N
+EnvironmentFile=-/etc/systemd/system/k3s.service.env
+KillMode=process
+Delegate=yes
+# Having non-zero Limit*s causes performance problems due to accounting overhead
+# in the kernel. We recommend using cgroups to do container-local accounting.
+LimitNOFILE=1048576
+LimitNPROC=infinity
+LimitCORE=infinity
+TasksMax=infinity
+TimeoutStartSec=0
+Restart=always
+RestartSec=5s
+ExecStartPre=/bin/sh -xc '! systemctl is-enabled --quiet nm-cloud-setup.service'
+ExecStartPre=-/sbin/modprobe br_netfilter
+ExecStartPre=-/sbin/modprobe overlay
+ExecStart=/usr/local/bin/k3s server
+# Avoid any delay due to this service when the system is rebooting or shutting
+# down by using the k3s-killall.sh script to kill all of the running k3s
+# services and containers
+ExecStopPost=/bin/sh -c "if systemctl is-system-running | grep -i \
+ 'stopping'; then /usr/local/bin/k3s-killall.sh; fi"
diff --git a/recipes-containers/k3s/k3s/modules.txt b/recipes-containers/k3s/k3s/modules.txt
new file mode 100644
index 00000000..04a8523c
--- /dev/null
+++ b/recipes-containers/k3s/k3s/modules.txt
@@ -0,0 +1,946 @@
+# github.com/Microsoft/hcsshim v0.11.4
+## explicit
+# github.com/Mirantis/cri-dockerd v0.0.0-00010101000000-000000000000
+## explicit
+# github.com/blang/semver/v4 v4.0.0
+## explicit
+# github.com/cloudnativelabs/kube-router/v2 v2.0.0-00010101000000-000000000000
+## explicit
+# github.com/containerd/aufs v1.0.0
+## explicit
+# github.com/containerd/cgroups/v3 v3.0.2
+## explicit
+# github.com/containerd/containerd v1.7.11
+## explicit
+# github.com/containerd/fuse-overlayfs-snapshotter v1.0.5
+## explicit
+# github.com/containerd/stargz-snapshotter v0.14.4-0.20230913082252-7275d45b185c
+## explicit
+# github.com/containerd/zfs v1.1.0
+## explicit
+# github.com/coreos/go-iptables v0.7.0
+## explicit
+# github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
+## explicit
+# github.com/docker/docker v24.0.7+incompatible
+## explicit
+# github.com/erikdubbelboer/gspt v0.0.0-20190125194910-e68493906b83
+## explicit
+# github.com/flannel-io/flannel v0.24.2
+## explicit
+# github.com/go-bindata/go-bindata v3.1.2+incompatible
+## explicit
+# github.com/go-logr/logr v1.4.1
+## explicit
+# github.com/go-logr/stdr v1.2.3-0.20220714215716-96bad1d688c5
+## explicit
+# github.com/go-sql-driver/mysql v1.7.1
+## explicit
+# github.com/go-test/deep v1.0.7
+## explicit
+# github.com/golang/mock v1.6.0
+## explicit
+# github.com/google/cadvisor v0.47.3
+## explicit
+# github.com/google/uuid v1.4.0
+## explicit
+# github.com/gorilla/mux v1.8.1
+## explicit
+# github.com/gorilla/websocket v1.5.0
+## explicit
+# github.com/ipfs/go-ds-leveldb v0.5.0
+## explicit
+# github.com/ipfs/go-log/v2 v2.5.1
+## explicit
+# github.com/json-iterator/go v1.1.12
+## explicit
+# github.com/k3s-io/helm-controller v0.15.8
+## explicit
+# github.com/k3s-io/kine v0.11.4
+## explicit
+# github.com/klauspost/compress v1.17.2
+## explicit
+# github.com/kubernetes-sigs/cri-tools v0.0.0-00010101000000-000000000000
+## explicit
+# github.com/lib/pq v1.10.2
+## explicit
+# github.com/libp2p/go-libp2p v0.30.0
+## explicit
+# github.com/mattn/go-sqlite3 v1.14.19
+## explicit
+# github.com/minio/minio-go/v7 v7.0.33
+## explicit
+# github.com/mwitkow/go-http-dialer v0.0.0-20161116154839-378f744fb2b8
+## explicit
+# github.com/natefinch/lumberjack v2.0.0+incompatible
+## explicit
+# github.com/onsi/ginkgo/v2 v2.11.0
+## explicit
+# github.com/onsi/gomega v1.27.10
+## explicit
+# github.com/opencontainers/runc v1.1.12
+## explicit
+# github.com/opencontainers/selinux v1.11.0
+## explicit
+# github.com/otiai10/copy v1.7.0
+## explicit
+# github.com/pkg/errors v0.9.1
+## explicit
+# github.com/rancher/dynamiclistener v0.3.6
+## explicit
+# github.com/rancher/lasso v0.0.0-20230830164424-d684fdeb6f29
+## explicit
+# github.com/rancher/remotedialer v0.3.0
+## explicit
+# github.com/rancher/wharfie v0.6.4
+## explicit
+# github.com/rancher/wrangler v1.1.1
+## explicit
+# github.com/robfig/cron/v3 v3.0.1
+## explicit
+# github.com/rootless-containers/rootlesskit v1.0.1
+## explicit
+# github.com/sirupsen/logrus v1.9.3
+## explicit
+# github.com/spf13/pflag v1.0.5
+## explicit
+# github.com/stretchr/testify v1.8.4
+## explicit
+# github.com/urfave/cli v1.22.14
+## explicit
+# github.com/vishvananda/netlink v1.2.1-beta.2
+## explicit
+# github.com/xenitab/spegel v0.0.16
+## explicit
+# github.com/yl2chen/cidranger v1.0.2
+## explicit
+# go.etcd.io/etcd/api/v3 v3.5.10
+## explicit
+# go.etcd.io/etcd/client/pkg/v3 v3.5.10
+## explicit
+# go.etcd.io/etcd/client/v3 v3.5.10
+## explicit
+# go.etcd.io/etcd/etcdutl/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/server/v3 v3.5.10
+## explicit
+# go.uber.org/zap v1.26.0
+## explicit
+# golang.org/x/crypto v0.17.0
+## explicit
+# golang.org/x/net v0.19.0
+## explicit
+# golang.org/x/sync v0.6.0
+## explicit
+# golang.org/x/sys v0.16.0
+## explicit
+# google.golang.org/grpc v1.60.1
+## explicit
+# gopkg.in/yaml.v2 v2.4.0
+## explicit
+# inet.af/tcpproxy v0.0.0-20200125044825-b6bb9b5b8252
+## explicit
+# k8s.io/api v0.28.7
+## explicit
+# k8s.io/apimachinery v0.28.7
+## explicit
+# k8s.io/apiserver v0.28.7
+## explicit
+# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
+## explicit
+# k8s.io/cloud-provider v0.28.7
+## explicit
+# k8s.io/cluster-bootstrap v0.0.0
+## explicit
+# k8s.io/component-base v0.28.7
+## explicit
+# k8s.io/component-helpers v0.28.7
+## explicit
+# k8s.io/cri-api v0.29.0-alpha.0
+## explicit
+# k8s.io/klog/v2 v2.100.1
+## explicit
+# k8s.io/kube-proxy v0.0.0
+## explicit
+# k8s.io/kubectl v0.25.0
+## explicit
+# k8s.io/kubernetes v1.28.7
+## explicit
+# k8s.io/utils v0.0.0-20230726121419-3b25d923346b
+## explicit
+# sigs.k8s.io/yaml v1.4.0
+## explicit
+# github.com/benbjohnson/clock v1.3.5
+## explicit
+# github.com/bytedance/sonic v1.9.1
+## explicit
+# github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311
+## explicit
+# github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c
+## explicit
+# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0
+## explicit
+# github.com/elastic/gosigar v0.14.2
+## explicit
+# github.com/flynn/noise v1.0.0
+## explicit
+# github.com/francoispqt/gojay v1.2.13
+## explicit
+# github.com/gabriel-vasile/mimetype v1.4.2
+## explicit
+# github.com/gin-contrib/sse v0.1.0
+## explicit
+# github.com/gin-gonic/gin v1.9.1
+## explicit
+# github.com/go-playground/locales v0.14.1
+## explicit
+# github.com/go-playground/universal-translator v0.18.1
+## explicit
+# github.com/go-playground/validator/v10 v10.14.0
+## explicit
+# github.com/goccy/go-json v0.10.2
+## explicit
+# github.com/golang/snappy v0.0.4
+## explicit
+# github.com/google/gopacket v1.1.19
+## explicit
+# github.com/hashicorp/golang-lru v0.5.4
+## explicit
+# github.com/hashicorp/golang-lru/arc/v2 v2.0.5
+## explicit
+# github.com/hashicorp/golang-lru/v2 v2.0.5
+## explicit
+# github.com/huin/goupnp v1.2.0
+## explicit
+# github.com/ipfs/boxo v0.10.0
+## explicit
+# github.com/ipfs/go-cid v0.4.1
+## explicit
+# github.com/ipfs/go-datastore v0.6.0
+## explicit
+# github.com/ipfs/go-log v1.0.5
+## explicit
+# github.com/ipld/go-ipld-prime v0.20.0
+## explicit
+# github.com/jackpal/go-nat-pmp v1.0.2
+## explicit
+# github.com/jbenet/go-temp-err-catcher v0.1.0
+## explicit
+# github.com/jbenet/goprocess v0.1.4
+## explicit
+# github.com/koron/go-ssdp v0.0.4
+## explicit
+# github.com/leodido/go-urn v1.2.4
+## explicit
+# github.com/libp2p/go-buffer-pool v0.1.0
+## explicit
+# github.com/libp2p/go-cidranger v1.1.0
+## explicit
+# github.com/libp2p/go-flow-metrics v0.1.0
+## explicit
+# github.com/libp2p/go-libp2p-asn-util v0.3.0
+## explicit
+# github.com/libp2p/go-libp2p-kad-dht v0.25.2
+## explicit
+# github.com/libp2p/go-libp2p-kbucket v0.6.3
+## explicit
+# github.com/libp2p/go-libp2p-record v0.2.0
+## explicit
+# github.com/libp2p/go-libp2p-routing-helpers v0.7.2
+## explicit
+# github.com/libp2p/go-msgio v0.3.0
+## explicit
+# github.com/libp2p/go-nat v0.2.0
+## explicit
+# github.com/libp2p/go-netroute v0.2.1
+## explicit
+# github.com/libp2p/go-reuseport v0.4.0
+## explicit
+# github.com/libp2p/go-yamux/v4 v4.0.1
+## explicit
+# github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd
+## explicit
+# github.com/mattn/go-isatty v0.0.19
+## explicit
+# github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0
+## explicit
+# github.com/miekg/dns v1.1.55
+## explicit
+# github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
+## explicit
+# github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc
+## explicit
+# github.com/mr-tron/base58 v1.2.0
+## explicit
+# github.com/multiformats/go-base32 v0.1.0
+## explicit
+# github.com/multiformats/go-base36 v0.2.0
+## explicit
+# github.com/multiformats/go-multiaddr v0.12.0
+## explicit
+# github.com/multiformats/go-multiaddr-dns v0.3.1
+## explicit
+# github.com/multiformats/go-multiaddr-fmt v0.1.0
+## explicit
+# github.com/multiformats/go-multibase v0.2.0
+## explicit
+# github.com/multiformats/go-multicodec v0.9.0
+## explicit
+# github.com/multiformats/go-multihash v0.2.3
+## explicit
+# github.com/multiformats/go-multistream v0.4.1
+## explicit
+# github.com/multiformats/go-varint v0.0.7
+## explicit
+# github.com/opentracing/opentracing-go v1.2.0
+## explicit
+# github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
+## explicit
+# github.com/pelletier/go-toml/v2 v2.1.1
+## explicit
+# github.com/polydawn/refmt v0.89.0
+## explicit
+# github.com/quic-go/qpack v0.4.0
+## explicit
+# github.com/quic-go/qtls-go1-20 v0.3.3
+## explicit
+# github.com/quic-go/quic-go v0.38.0
+## explicit
+# github.com/quic-go/webtransport-go v0.5.3
+## explicit
+# github.com/raulk/go-watchdog v1.3.0
+## explicit
+# github.com/slok/go-http-metrics v0.10.0
+## explicit
+# github.com/spaolacci/murmur3 v1.1.0
+## explicit
+# github.com/spf13/afero v1.11.0
+## explicit
+# github.com/syndtr/goleveldb v1.0.0
+## explicit
+# github.com/twitchyliquid64/golang-asm v0.15.1
+## explicit
+# github.com/ugorji/go/codec v1.2.11
+## explicit
+# github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1
+## explicit
+# github.com/xenitab/pkg/channels v0.0.2
+## explicit
+# github.com/xenitab/pkg/gin v0.0.9
+## explicit
+# go.uber.org/dig v1.17.0
+## explicit
+# go.uber.org/fx v1.20.0
+## explicit
+# golang.org/x/arch v0.3.0
+## explicit
+# gonum.org/v1/gonum v0.13.0
+## explicit
+# lukechampine.com/blake3 v1.2.1
+## explicit
+# cloud.google.com/go/compute v1.23.3
+## explicit
+# cloud.google.com/go/compute/metadata v0.2.3
+## explicit
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+## explicit
+# github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0
+## explicit
+# github.com/Azure/azure-sdk-for-go v68.0.0+incompatible
+## explicit
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+## explicit
+# github.com/Azure/go-autorest v14.2.0+incompatible
+## explicit
+# github.com/Azure/go-autorest/autorest v0.11.29
+## explicit
+# github.com/Azure/go-autorest/autorest/adal v0.9.23
+## explicit
+# github.com/Azure/go-autorest/autorest/date v0.3.0
+## explicit
+# github.com/Azure/go-autorest/autorest/mocks v0.4.2
+## explicit
+# github.com/Azure/go-autorest/autorest/to v0.4.0
+## explicit
+# github.com/Azure/go-autorest/autorest/validation v0.3.1
+## explicit
+# github.com/Azure/go-autorest/logger v0.2.1
+## explicit
+# github.com/Azure/go-autorest/tracing v0.6.0
+## explicit
+# github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b
+## explicit
+# github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab
+## explicit
+# github.com/MakeNowJust/heredoc v1.0.0
+## explicit
+# github.com/Microsoft/go-winio v0.6.1
+## explicit
+# github.com/NYTimes/gziphandler v1.1.1
+## explicit
+# github.com/Rican7/retry v0.1.0
+## explicit
+# github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df
+## explicit
+# github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e
+## explicit
+# github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a
+## explicit
+# github.com/avast/retry-go/v4 v4.3.2
+## explicit
+# github.com/beorn7/perks v1.0.1
+## explicit
+# github.com/blang/semver v3.5.1+incompatible
+## explicit
+# github.com/bronze1man/goStrongswanVici v0.0.0-20221114103242-3f6dc524986c
+## explicit
+# github.com/canonical/go-dqlite v1.5.1
+## explicit
+# github.com/cenkalti/backoff/v4 v4.2.1
+## explicit
+# github.com/cespare/xxhash/v2 v2.2.0
+## explicit
+# github.com/chai2010/gettext-go v1.0.2
+## explicit
+# github.com/checkpoint-restore/go-criu/v5 v5.3.0
+## explicit
+# github.com/cilium/ebpf v0.9.1
+## explicit
+# github.com/container-orchestrated-devices/container-device-interface v0.5.4
+## explicit
+# github.com/container-storage-interface/spec v1.8.0
+## explicit
+# github.com/containerd/btrfs/v2 v2.0.0
+## explicit
+# github.com/containerd/cgroups v1.1.0
+## explicit
+# github.com/containerd/console v1.0.3
+## explicit
+# github.com/containerd/continuity v0.4.2
+## explicit
+# github.com/containerd/fifo v1.1.0
+## explicit
+# github.com/containerd/go-cni v1.1.9
+## explicit
+# github.com/containerd/go-runc v1.0.0
+## explicit
+# github.com/containerd/imgcrypt v1.1.7
+## explicit
+# github.com/containerd/log v0.1.0
+## explicit
+# github.com/containerd/nri v0.4.0
+## explicit
+# github.com/containerd/stargz-snapshotter/estargz v0.14.3
+## explicit
+# github.com/containerd/ttrpc v1.2.2
+## explicit
+# github.com/containerd/typeurl v1.0.2
+## explicit
+# github.com/containerd/typeurl/v2 v2.1.1
+## explicit
+# github.com/containernetworking/cni v1.1.2
+## explicit
+# github.com/containernetworking/plugins v1.3.0
+## explicit
+# github.com/containers/ocicrypt v1.1.6
+## explicit
+# github.com/coreos/go-oidc v2.2.1+incompatible
+## explicit
+# github.com/coreos/go-semver v0.3.1
+## explicit
+# github.com/coreos/go-systemd/v22 v22.5.0
+## explicit
+# github.com/cpuguy83/go-md2man/v2 v2.0.3
+## explicit
+# github.com/cyphar/filepath-securejoin v0.2.4
+## explicit
+# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
+## explicit
+# github.com/daviddengcn/go-colortext v1.0.0
+## explicit
+# github.com/docker/cli v24.0.5+incompatible
+## explicit
+# github.com/docker/distribution v2.8.3+incompatible
+## explicit
+# github.com/docker/docker-credential-helpers v0.7.0
+## explicit
+# github.com/docker/go-connections v0.5.0
+## explicit
+# github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
+## explicit
+# github.com/docker/go-metrics v0.0.1
+## explicit
+# github.com/docker/go-units v0.5.0
+## explicit
+# github.com/dustin/go-humanize v1.0.1
+## explicit
+# github.com/emicklei/go-restful v2.16.0+incompatible
+## explicit
+# github.com/emicklei/go-restful/v3 v3.11.0
+## explicit
+# github.com/euank/go-kmsg-parser v2.0.0+incompatible
+## explicit
+# github.com/evanphx/json-patch v5.6.0+incompatible
+## explicit
+# github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d
+## explicit
+# github.com/fatih/camelcase v1.0.0
+## explicit
+# github.com/felixge/httpsnoop v1.0.4
+## explicit
+# github.com/fsnotify/fsnotify v1.7.0
+## explicit
+# github.com/fvbommel/sortorder v1.1.0
+## explicit
+# github.com/ghodss/yaml v1.0.0
+## explicit
+# github.com/go-errors/errors v1.4.2
+## explicit
+# github.com/go-openapi/jsonpointer v0.20.0
+## explicit
+# github.com/go-openapi/jsonreference v0.20.2
+## explicit
+# github.com/go-openapi/swag v0.22.4
+## explicit
+# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
+## explicit
+# github.com/godbus/dbus/v5 v5.1.0
+## explicit
+# github.com/gofrs/flock v0.8.1
+## explicit
+# github.com/gofrs/uuid v4.4.0+incompatible
+## explicit
+# github.com/gogo/protobuf v1.3.2
+## explicit
+# github.com/golang-jwt/jwt/v4 v4.5.0
+## explicit
+# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+## explicit
+# github.com/golang/protobuf v1.5.3
+## explicit
+# github.com/google/btree v1.1.2
+## explicit
+# github.com/google/cel-go v0.16.1
+## explicit
+# github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49
+## explicit
+# github.com/google/go-cmp v0.6.0
+## explicit
+# github.com/google/go-containerregistry v0.14.0
+## explicit
+# github.com/google/gofuzz v1.2.0
+## explicit
+# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
+## explicit
+# github.com/google/s2a-go v0.1.7
+## explicit
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+## explicit
+# github.com/googleapis/enterprise-certificate-proxy v0.3.2
+## explicit
+# github.com/googleapis/gax-go/v2 v2.12.0
+## explicit
+# github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7
+## explicit
+# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
+## explicit
+# github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
+## explicit
+# github.com/grpc-ecosystem/grpc-gateway v1.16.0
+## explicit
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+## explicit
+# github.com/hanwen/go-fuse/v2 v2.3.0
+## explicit
+# github.com/hashicorp/errwrap v1.1.0
+## explicit
+# github.com/hashicorp/go-cleanhttp v0.5.2
+## explicit
+# github.com/hashicorp/go-multierror v1.1.1
+## explicit
+# github.com/hashicorp/go-retryablehttp v0.7.4
+## explicit
+# github.com/hashicorp/go-version v1.6.0
+## explicit
+# github.com/imdario/mergo v0.3.16
+## explicit
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit
+# github.com/intel/goresctrl v0.3.0
+## explicit
+# github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa
+## explicit
+# github.com/jackc/pgpassfile v1.0.0
+## explicit
+# github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a
+## explicit
+# github.com/jackc/pgx/v5 v5.4.2
+## explicit
+# github.com/jonboulle/clockwork v0.4.0
+## explicit
+# github.com/josharian/intern v1.0.0
+## explicit
+# github.com/josharian/native v1.1.0
+## explicit
+# github.com/karrick/godirwalk v1.17.0
+## explicit
+# github.com/klauspost/cpuid/v2 v2.2.5
+## explicit
+# github.com/kylelemons/godebug v1.1.0
+## explicit
+# github.com/libopenstorage/openstorage v1.0.0
+## explicit
+# github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
+## explicit
+# github.com/lithammer/dedent v1.1.0
+## explicit
+# github.com/mailru/easyjson v0.7.7
+## explicit
+# github.com/mdlayher/genetlink v1.3.2
+## explicit
+# github.com/mdlayher/netlink v1.7.2
+## explicit
+# github.com/mdlayher/socket v0.4.1
+## explicit
+# github.com/miekg/pkcs11 v1.1.1
+## explicit
+# github.com/minio/highwayhash v1.0.2
+## explicit
+# github.com/minio/md5-simd v1.1.2
+## explicit
+# github.com/minio/sha256-simd v1.0.1
+## explicit
+# github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible
+## explicit
+# github.com/mistifyio/go-zfs/v3 v3.0.1
+## explicit
+# github.com/mitchellh/go-homedir v1.1.0
+## explicit
+# github.com/mitchellh/go-wordwrap v1.0.1
+## explicit
+# github.com/moby/ipvs v1.1.0
+## explicit
+# github.com/moby/locker v1.0.1
+## explicit
+# github.com/moby/spdystream v0.2.0
+## explicit
+# github.com/moby/sys/mountinfo v0.6.2
+## explicit
+# github.com/moby/sys/sequential v0.5.0
+## explicit
+# github.com/moby/sys/signal v0.7.0
+## explicit
+# github.com/moby/sys/symlink v0.2.0
+## explicit
+# github.com/moby/term v0.0.0-20221205130635-1aeaba878587
+## explicit
+# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+## explicit
+# github.com/modern-go/reflect2 v1.0.2
+## explicit
+# github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
+## explicit
+# github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
+## explicit
+# github.com/morikuni/aec v1.0.0
+## explicit
+# github.com/mrunalp/fileutils v0.5.1
+## explicit
+# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+## explicit
+# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
+## explicit
+# github.com/nats-io/jsm.go v0.0.31-0.20220317133147-fe318f464eee
+## explicit
+# github.com/nats-io/jwt/v2 v2.5.3
+## explicit
+# github.com/nats-io/nats-server/v2 v2.10.5
+## explicit
+# github.com/nats-io/nats.go v1.31.0
+## explicit
+# github.com/nats-io/nkeys v0.4.6
+## explicit
+# github.com/nats-io/nuid v1.0.1
+## explicit
+# github.com/opencontainers/go-digest v1.0.0
+## explicit
+# github.com/opencontainers/image-spec v1.1.0-rc5
+## explicit
+# github.com/opencontainers/runtime-spec v1.1.0
+## explicit
+# github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626
+## explicit
+# github.com/pelletier/go-toml v1.9.5
+## explicit
+# github.com/peterbourgon/diskv v2.0.1+incompatible
+## explicit
+# github.com/pierrec/lz4 v2.6.0+incompatible
+## explicit
+# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
+## explicit
+# github.com/pquerna/cachecontrol v0.1.0
+## explicit
+# github.com/prometheus/client_golang v1.18.0
+## explicit
+# github.com/prometheus/client_model v0.5.0
+## explicit
+# github.com/prometheus/common v0.45.0
+## explicit
+# github.com/prometheus/procfs v0.12.0
+## explicit
+# github.com/rs/xid v1.5.0
+## explicit
+# github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021
+## explicit
+# github.com/russross/blackfriday/v2 v2.1.0
+## explicit
+# github.com/seccomp/libseccomp-golang v0.10.0
+## explicit
+# github.com/shengdoushi/base58 v1.0.0
+## explicit
+# github.com/soheilhy/cmux v0.1.5
+## explicit
+# github.com/spf13/cobra v1.8.0
+## explicit
+# github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980
+## explicit
+# github.com/stoewer/go-strcase v1.2.0
+## explicit
+# github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
+## explicit
+# github.com/tchap/go-patricia/v2 v2.3.1
+## explicit
+# github.com/tidwall/btree v1.6.0
+## explicit
+# github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75
+## explicit
+# github.com/urfave/cli/v2 v2.23.5
+## explicit
+# github.com/vbatts/tar-split v0.11.5
+## explicit
+# github.com/vishvananda/netns v0.0.4
+## explicit
+# github.com/vmware/govmomi v0.30.6
+## explicit
+# github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510
+## explicit
+# github.com/xlab/treeprint v1.2.0
+## explicit
+# github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
+## explicit
+# go.etcd.io/bbolt v1.3.8
+## explicit
+# go.etcd.io/etcd/client/v2 v2.305.10
+## explicit
+# go.etcd.io/etcd/pkg/v3 v3.5.10
+## explicit
+# go.etcd.io/etcd/raft/v3 v3.5.10
+## explicit
+# go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1
+## explicit
+# go.opencensus.io v0.24.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.42.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1
+## explicit
+# go.opentelemetry.io/otel v1.21.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0
+## explicit
+# go.opentelemetry.io/otel/metric v1.21.0
+## explicit
+# go.opentelemetry.io/otel/sdk v1.21.0
+## explicit
+# go.opentelemetry.io/otel/trace v1.21.0
+## explicit
+# go.opentelemetry.io/proto/otlp v1.0.0
+## explicit
+# go.starlark.net v0.0.0-20230525235612-a134d8f9ddca
+## explicit
+# go.uber.org/multierr v1.11.0
+## explicit
+# golang.org/x/exp v0.0.0-20231006140011-7918f672742d
+## explicit
+# golang.org/x/mod v0.14.0
+## explicit
+# golang.org/x/oauth2 v0.15.0
+## explicit
+# golang.org/x/term v0.15.0
+## explicit
+# golang.org/x/text v0.14.0
+## explicit
+# golang.org/x/time v0.5.0
+## explicit
+# golang.org/x/tools v0.16.1
+## explicit
+# golang.zx2c4.com/wireguard v0.0.0-20230325221338-052af4a8072b
+## explicit
+# golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6
+## explicit
+# google.golang.org/api v0.152.0
+## explicit
+# google.golang.org/appengine v1.6.8
+## explicit
+# google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17
+## explicit
+# google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17
+## explicit
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f
+## explicit
+# google.golang.org/protobuf v1.31.0
+## explicit
+# gopkg.in/gcfg.v1 v1.2.3
+## explicit
+# gopkg.in/inf.v0 v0.9.1
+## explicit
+# gopkg.in/ini.v1 v1.67.0
+## explicit
+# gopkg.in/natefinch/lumberjack.v2 v2.2.1
+## explicit
+# gopkg.in/square/go-jose.v2 v2.6.0
+## explicit
+# gopkg.in/warnings.v0 v0.1.2
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+# k8s.io/apiextensions-apiserver v0.28.7
+## explicit
+# k8s.io/cli-runtime v0.22.2
+## explicit
+# k8s.io/code-generator v0.28.7
+## explicit
+# k8s.io/controller-manager v0.25.4
+## explicit
+# k8s.io/csi-translation-lib v0.0.0
+## explicit
+# k8s.io/dynamic-resource-allocation v0.0.0
+## explicit
+# k8s.io/endpointslice v0.0.0
+## explicit
+# k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01
+## explicit
+# k8s.io/kms v0.0.0
+## explicit
+# k8s.io/kube-aggregator v0.28.7
+## explicit
+# k8s.io/kube-controller-manager v0.0.0
+## explicit
+# k8s.io/kube-openapi v0.0.0-20230928205116-a78145627833
+## explicit
+# k8s.io/kube-scheduler v0.0.0
+## explicit
+# k8s.io/kubelet v0.28.7
+## explicit
+# k8s.io/legacy-cloud-providers v0.0.0
+## explicit
+# k8s.io/metrics v0.0.0
+## explicit
+# k8s.io/mount-utils v0.28.7
+## explicit
+# k8s.io/pod-security-admission v0.0.0
+## explicit
+# sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2
+## explicit
+# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+## explicit
+# sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3
+## explicit
+# sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3
+## explicit
+# sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3
+## explicit
+# sigs.k8s.io/structured-merge-diff/v4 v4.3.0
+## explicit
+# github.com/Microsoft/hcsshim => github.com/Microsoft/hcsshim v0.11.0
+# github.com/Mirantis/cri-dockerd => github.com/k3s-io/cri-dockerd v0.3.9-k3s2
+# github.com/cloudnativelabs/kube-router/v2 => github.com/k3s-io/kube-router/v2 v2.0.1
+# github.com/containerd/containerd => github.com/k3s-io/containerd v1.7.11-k3s2
+# github.com/coreos/go-systemd => github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
+# github.com/docker/distribution => github.com/docker/distribution v2.8.2+incompatible
+# github.com/docker/docker => github.com/docker/docker v24.0.0-rc.2.0.20230801142700-69c9adb7d386+incompatible
+# github.com/docker/libnetwork => github.com/docker/libnetwork v0.8.0-dev.2.0.20190624125649-f0e46a78ea34
+# github.com/emicklei/go-restful/v3 => github.com/emicklei/go-restful/v3 v3.9.0
+# github.com/golang/protobuf => github.com/golang/protobuf v1.5.3
+# github.com/googleapis/gax-go/v2 => github.com/googleapis/gax-go/v2 v2.12.0
+# github.com/juju/errors => github.com/k3s-io/nocode v0.0.0-20200630202308-cb097102c09f
+# github.com/kubernetes-sigs/cri-tools => github.com/k3s-io/cri-tools v1.26.0-rc.0-k3s1
+# github.com/open-policy-agent/opa => github.com/open-policy-agent/opa v0.59.0
+# github.com/opencontainers/runc => github.com/k3s-io/runc v1.1.12-k3s1
+# github.com/opencontainers/runtime-spec => github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78
+# github.com/opencontainers/selinux => github.com/opencontainers/selinux v1.10.1
+# github.com/quic-go/qtls-go1-20 => github.com/quic-go/qtls-go1-20 v0.3.3
+# github.com/quic-go/quic-go => github.com/quic-go/quic-go v0.38.2
+# github.com/rancher/wrangler => github.com/rancher/wrangler v1.1.1-0.20230818201331-3604a6be798d
+# github.com/ugorji/go => github.com/ugorji/go v1.2.11
+# github.com/xenitab/spegel => github.com/k3s-io/spegel v0.0.17-0.20240109004735-9466a5529330
+# go.etcd.io/etcd/api/v3 => github.com/k3s-io/etcd/api/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/client/pkg/v3 => github.com/k3s-io/etcd/client/pkg/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/client/v2 => github.com/k3s-io/etcd/client/v2 v2.305.9-k3s1
+# go.etcd.io/etcd/client/v3 => github.com/k3s-io/etcd/client/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/etcdutl/v3 => github.com/k3s-io/etcd/etcdutl/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/pkg/v3 => github.com/k3s-io/etcd/pkg/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/raft/v3 => github.com/k3s-io/etcd/raft/v3 v3.5.9-k3s1
+# go.etcd.io/etcd/server/v3 => github.com/k3s-io/etcd/server/v3 v3.5.9-k3s1
+# go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful => go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.35.0
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc => go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp => go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.1
+# go.opentelemetry.io/contrib/propagators/b3 => go.opentelemetry.io/contrib/propagators/b3 v1.13.0
+# go.opentelemetry.io/otel => go.opentelemetry.io/otel v1.13.0
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry => go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric => go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.32.1
+# go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc => go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.32.1
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace => go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc => go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0
+# go.opentelemetry.io/otel/metric => go.opentelemetry.io/otel/metric v0.32.1
+# go.opentelemetry.io/otel/sdk => go.opentelemetry.io/otel/sdk v1.13.0
+# go.opentelemetry.io/otel/trace => go.opentelemetry.io/otel/trace v1.13.0
+# go.opentelemetry.io/proto/otlp => go.opentelemetry.io/proto/otlp v0.19.0
+# golang.org/x/crypto => golang.org/x/crypto v0.14.0
+# golang.org/x/net => golang.org/x/net v0.17.0
+# golang.org/x/sys => golang.org/x/sys v0.13.0
+# google.golang.org/genproto => google.golang.org/genproto v0.0.0-20230525234035-dd9d682886f9
+# google.golang.org/grpc => google.golang.org/grpc v1.58.3
+# gopkg.in/square/go-jose.v2 => gopkg.in/square/go-jose.v2 v2.6.0
+# k8s.io/api => github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.28.7-k3s1
+# k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.28.7-k3s1
+# k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.28.7-k3s1
+# k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.28.7-k3s1
+# k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.28.7-k3s1
+# k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.28.7-k3s1
+# k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.28.7-k3s1
+# k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.28.7-k3s1
+# k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.28.7-k3s1
+# k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.28.7-k3s1
+# k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.28.7-k3s1
+# k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.28.7-k3s1
+# k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.28.7-k3s1
+# k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.28.7-k3s1
+# k8s.io/dynamic-resource-allocation => github.com/k3s-io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v1.28.7-k3s1
+# k8s.io/endpointslice => github.com/k3s-io/kubernetes/staging/src/k8s.io/endpointslice v1.28.7-k3s1
+# k8s.io/klog => github.com/k3s-io/klog v1.0.0-k3s2
+# k8s.io/klog/v2 => github.com/k3s-io/klog/v2 v2.100.1-k3s1
+# k8s.io/kms => github.com/k3s-io/kubernetes/staging/src/k8s.io/kms v1.28.7-k3s1
+# k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.28.7-k3s1
+# k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.28.7-k3s1
+# k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9
+# k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.28.7-k3s1
+# k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.28.7-k3s1
+# k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.28.7-k3s1
+# k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.28.7-k3s1
+# k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.28.7-k3s1
+# k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.28.7-k3s1
+# k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.28.7-k3s1
+# k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.28.7-k3s1
+# k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.28.7-k3s1
+# k8s.io/pod-security-admission => github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission v1.28.7-k3s1
+# k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.28.7-k3s1
+# k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.28.7-k3s1
+# k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.28.7-k3s1
+# mvdan.cc/unparam => mvdan.cc/unparam v0.0.0-20210104141923-aac4ce9116a7
diff --git a/recipes-containers/k3s/k3s_git.bb b/recipes-containers/k3s/k3s_git.bb
new file mode 100644
index 00000000..b88b8349
--- /dev/null
+++ b/recipes-containers/k3s/k3s_git.bb
@@ -0,0 +1,151 @@
+SUMMARY = "Production-Grade Container Scheduling and Management"
+DESCRIPTION = "Lightweight Kubernetes, intended to be a fully compliant Kubernetes."
+HOMEPAGE = "https://k3s.io/"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${S}/src/import/LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI = "git://github.com/rancher/k3s.git;branch=release-1.28;name=k3s;protocol=https \
+ file://k3s.service \
+ file://k3s-agent.service \
+ file://k3s-agent \
+ file://k3s-clean \
+ file://cni-containerd-net.conf \
+ file://0001-Finding-host-local-in-usr-libexec.patch;patchdir=src/import \
+ file://k3s-killall.sh \
+ file://modules.txt \
+ "
+
+SRC_URI[k3s.md5sum] = "363d3a08dc0b72ba6e6577964f6e94a5"
+SRCREV_k3s = "051b14b248655896fdfd7ba6c93db6182cde7431"
+
+SRCREV_FORMAT = "k3s_fuse"
+PV = "v1.28.7+k3s1+git${SRCREV_k3s}"
+
+include src_uri.inc
+
+CNI_NETWORKING_FILES ?= "${WORKDIR}/cni-containerd-net.conf"
+
+inherit go
+inherit goarch
+inherit systemd
+inherit cni_networking
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+PACKAGECONFIG = ""
+PACKAGECONFIG[upx] = ",,upx-native"
+GO_IMPORT = "import"
+GO_BUILD_LDFLAGS = "-X github.com/k3s-io/k3s/pkg/version.Version=${PV} \
+ -X github.com/k3s-io/k3s/pkg/version.GitCommit=${@d.getVar('SRCREV_k3s', d, 1)[:8]} \
+ -w -s \
+ "
+BIN_PREFIX ?= "${exec_prefix}/local"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+DEPENDS += "rsync-native"
+
+include relocation.inc
+
+do_compile() {
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
+ export CGO_ENABLED="1"
+ export GOFLAGS="-mod=vendor"
+
+ # TAGS="static_build ctrd no_btrfs netcgo osusergo providerless"
+ TAGS="static_build netcgo osusergo providerless"
+
+ cd ${S}/src/import
+
+ if ! [ -e vendor/.noclobber ]; then
+ ln -sf vendor.copy vendor
+ else
+ echo "[INFO]: no clobber on vendor"
+ fi
+
+ # these are bad symlinks, go validates them and breaks the build if they are present
+ rm -f vendor/go.etcd.io/etcd/client/v*/example_*
+ rm -f vendor/go.etcd.io/etcd/client/v*/concurrency/example_*.go
+
+ # Note: if no_brtfs is used in the tags, we'll violate build
+ # constraints, and the following files need to have them
+ # removed for the build to continue:
+ #
+ # vendor/github.com/containerd/containerd/snapshots/btrfs/plugin/*.go
+
+ cp ${WORKDIR}/modules.txt vendor/
+
+ VERSION_GOLANG="$(go version | cut -d" " -f3)"
+ ${GO} build -trimpath -tags "$TAGS" -ldflags "-X github.com/k3s-io/k3s/pkg/version.UpstreamGolang=$VERSION_GOLANG ${GO_BUILD_LDFLAGS} -w -s" -o ./dist/artifacts/k3s ./cmd/server/main.go
+
+ # Use UPX if it is enabled (and thus exists) to compress binary
+ if command -v upx > /dev/null 2>&1; then
+ upx -9 ./dist/artifacts/k3s
+ fi
+}
+
+do_install() {
+ install -d "${D}${BIN_PREFIX}/bin"
+ install -m 755 "${S}/src/import/dist/artifacts/k3s" "${D}${BIN_PREFIX}/bin"
+ ln -sr "${D}/${BIN_PREFIX}/bin/k3s" "${D}${BIN_PREFIX}/bin/crictl"
+ # We want to use the containerd provided ctr
+ # ln -sr "${D}/${BIN_PREFIX}/bin/k3s" "${D}${BIN_PREFIX}/bin/ctr"
+ ln -sr "${D}/${BIN_PREFIX}/bin/k3s" "${D}${BIN_PREFIX}/bin/kubectl"
+ install -m 755 "${WORKDIR}/k3s-clean" "${D}${BIN_PREFIX}/bin"
+ install -m 755 "${WORKDIR}/k3s-killall.sh" "${D}${BIN_PREFIX}/bin"
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -D -m 0644 "${WORKDIR}/k3s.service" "${D}${systemd_system_unitdir}/k3s.service"
+ install -D -m 0644 "${WORKDIR}/k3s-agent.service" "${D}${systemd_system_unitdir}/k3s-agent.service"
+ sed -i "s#\(Exec\)\(.*\)=\(.*\)\(k3s\)#\1\2=${BIN_PREFIX}/bin/\4#g" "${D}${systemd_system_unitdir}/k3s.service" "${D}${systemd_system_unitdir}/k3s-agent.service"
+ install -m 755 "${WORKDIR}/k3s-agent" "${D}${BIN_PREFIX}/bin"
+ fi
+
+ mkdir -p ${D}${datadir}/k3s/
+ install -m 0755 ${S}/src/import/contrib/util/check-config.sh ${D}${datadir}/k3s/
+}
+
+PACKAGES =+ "${PN}-server ${PN}-agent"
+
+SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}-server ${PN}-agent','',d)}"
+SYSTEMD_SERVICE:${PN}-server = "${@bb.utils.contains('DISTRO_FEATURES','systemd','k3s.service','',d)}"
+SYSTEMD_SERVICE:${PN}-agent = "${@bb.utils.contains('DISTRO_FEATURES','systemd','k3s-agent.service','',d)}"
+SYSTEMD_AUTO_ENABLE:${PN}-agent = "disable"
+
+FILES:${PN}-agent = "${BIN_PREFIX}/bin/k3s-agent"
+FILES:${PN} += "${BIN_PREFIX}/bin/*"
+
+RDEPENDS:${PN} = "k3s-cni conntrack-tools coreutils findutils iptables iproute2 ipset virtual-containerd"
+RDEPENDS:${PN}-server = "${PN}"
+RDEPENDS:${PN}-agent = "${PN}"
+
+RRECOMMENDS:${PN} = "\
+ kernel-module-xt-addrtype \
+ kernel-module-xt-nat \
+ kernel-module-xt-multiport \
+ kernel-module-xt-conntrack \
+ kernel-module-xt-comment \
+ kernel-module-xt-mark \
+ kernel-module-xt-connmark \
+ kernel-module-vxlan \
+ kernel-module-xt-masquerade \
+ kernel-module-xt-statistic \
+ kernel-module-xt-physdev \
+ kernel-module-xt-nflog \
+ kernel-module-xt-limit \
+ kernel-module-nfnetlink-log \
+ kernel-module-ip-vs \
+ kernel-module-ip-vs-rr \
+ kernel-module-ip-vs-sh \
+ kernel-module-ip-vs-wrr \
+ "
+
+RCONFLICTS:${PN} = "kubectl"
+
+PACKAGES =+ "${PN}-contrib"
+FILES:${PN}-contrib += "${datadir}/k3s/check-config.sh"
+RDEPENDS:${PN}-contrib += "bash"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP:${PN} += "ldflags already-stripped textrel"
diff --git a/recipes-containers/k3s/relocation.inc b/recipes-containers/k3s/relocation.inc
new file mode 100644
index 00000000..024f2605
--- /dev/null
+++ b/recipes-containers/k3s/relocation.inc
@@ -0,0 +1,447 @@
+export sites="k8s.io/utils:k8s.io/utils:force \
+ k8s.io/gengo:k8s.io/gengo:force \
+ go.uber.org/fx:go.uber.org/fx:force \
+ go.uber.org/zap:go.uber.org/zap:force \
+ go.uber.org/dig:go.uber.org/dig:force \
+ go.starlark.net:go.starlark.net:force \
+ gopkg.in/inf.v0:gopkg.in/inf.v0:force \
+ gopkg.in/ini.v1:gopkg.in/ini.v1:force \
+ golang.org/x/net:golang.org/x/net:force \
+ golang.org/x/sys:golang.org/x/sys:force \
+ gopkg.in/yaml.v2:gopkg.in/yaml.v2:force \
+ inet.af/tcpproxy:inet.af/tcpproxy:force \
+ sigs.k8s.io/yaml:sigs.k8s.io/yaml:force \
+ go.etcd.io/bbolt:go.etcd.io/bbolt:force \
+ go.opencensus.io:go.opencensus.io:force \
+ golang.org/x/exp:golang.org/x/exp:force \
+ golang.org/x/mod:golang.org/x/mod:force \
+ gopkg.in/gcfg.v1:gopkg.in/gcfg.v1:force \
+ gopkg.in/yaml.v3:gopkg.in/yaml.v3:force \
+ sigs.k8s.io/json:sigs.k8s.io/json:force \
+ github.com/lib/pq:github.com/lib/pq:force \
+ golang.org/x/sync:golang.org/x/sync:force \
+ golang.org/x/arch:golang.org/x/arch:force \
+ github.com/rs/xid:github.com/rs/xid:force \
+ golang.org/x/term:golang.org/x/term:force \
+ golang.org/x/text:golang.org/x/text:force \
+ golang.org/x/time:golang.org/x/time:force \
+ gonum.org/v1/gonum:gonum.org/v1/gonum:force \
+ golang.org/x/tools:golang.org/x/tools:force \
+ golang.org/x/crypto:golang.org/x/crypto:force \
+ golang.org/x/oauth2:golang.org/x/oauth2:force \
+ k8s.io/kube-openapi:k8s.io/kube-openapi:force \
+ k8s.io/klog/v2:github.com/k3s-io/klog/v2:force \
+ github.com/ipfs/boxo:github.com/ipfs/boxo:force \
+ github.com/miekg/dns:github.com/miekg/dns:force \
+ github.com/moby/ipvs:github.com/moby/ipvs:force \
+ github.com/moby/term:github.com/moby/term:force \
+ go.mozilla.org/pkcs7:go.mozilla.org/pkcs7:force \
+ go.uber.org/multierr:go.uber.org/multierr:force \
+ gopkg.in/warnings.v0:gopkg.in/warnings.v0:force \
+ github.com/pkg/errors:github.com/pkg/errors:force \
+ github.com/urfave/cli:github.com/urfave/cli:force \
+ github.com/docker/cli:github.com/docker/cli:force \
+ github.com/gofrs/uuid:github.com/gofrs/uuid:force \
+ google.golang.org/api:google.golang.org/api:force \
+ github.com/golang/mock:github.com/golang/mock:force \
+ github.com/google/uuid:github.com/google/uuid:force \
+ github.com/gorilla/mux:github.com/gorilla/mux:force \
+ github.com/k3s-io/kine:github.com/k3s-io/kine:force \
+ github.com/onsi/gomega:github.com/onsi/gomega:force \
+ github.com/spf13/pflag:github.com/spf13/pflag:force \
+ google.golang.org/grpc:google.golang.org/grpc:force \
+ github.com/flynn/noise:github.com/flynn/noise:force \
+ github.com/huin/goupnp:github.com/huin/goupnp:force \
+ github.com/ipfs/go-cid:github.com/ipfs/go-cid:force \
+ github.com/ipfs/go-log:github.com/ipfs/go-log:force \
+ github.com/spf13/afero:github.com/spf13/afero:force \
+ github.com/cilium/ebpf:github.com/cilium/ebpf:force \
+ github.com/ghodss/yaml:github.com/ghodss/yaml:force \
+ github.com/gofrs/flock:github.com/gofrs/flock:force \
+ github.com/moby/locker:github.com/moby/locker:force \
+ github.com/pierrec/lz4:github.com/pierrec/lz4:force \
+ github.com/spf13/cobra:github.com/spf13/cobra:force \
+ k8s.io/kubernetes:github.com/k3s-io/kubernetes:force \
+ github.com/go-logr/logr:github.com/go-logr/logr:force \
+ github.com/go-logr/stdr:github.com/go-logr/stdr:force \
+ github.com/go-test/deep:github.com/go-test/deep:force \
+ github.com/otiai10/copy:github.com/otiai10/copy:force \
+ lukechampine.com/blake3:lukechampine.com/blake3:force \
+ github.com/Rican7/retry:github.com/Rican7/retry:force \
+ github.com/beorn7/perks:github.com/beorn7/perks:force \
+ github.com/blang/semver:github.com/blang/semver:force \
+ github.com/google/btree:github.com/google/btree:force \
+ github.com/google/pprof:github.com/google/pprof:force \
+ github.com/google/shlex:github.com/google/shlex:force \
+ github.com/jackc/pgx/v5:github.com/jackc/pgx/v5:force \
+ github.com/miekg/pkcs11:github.com/miekg/pkcs11:force \
+ github.com/morikuni/aec:github.com/morikuni/aec:force \
+ github.com/nats-io/nuid:github.com/nats-io/nuid:force \
+ github.com/docker/docker:github.com/docker/docker:force \
+ github.com/rancher/lasso:github.com/rancher/lasso:force \
+ github.com/gin-gonic/gin:github.com/gin-gonic/gin:force \
+ github.com/goccy/go-json:github.com/goccy/go-json:force \
+ github.com/golang/snappy:github.com/golang/snappy:force \
+ github.com/koron/go-ssdp:github.com/koron/go-ssdp:force \
+ github.com/libp2p/go-nat:github.com/libp2p/go-nat:force \
+ github.com/mikioh/tcpopt:github.com/mikioh/tcpopt:force \
+ github.com/pbnjay/memory:github.com/pbnjay/memory:force \
+ github.com/quic-go/qpack:github.com/quic-go/qpack:force \
+ github.com/armon/circbuf:github.com/armon/circbuf:force \
+ github.com/gogo/protobuf:github.com/gogo/protobuf:force \
+ github.com/google/cel-go:github.com/google/cel-go:force \
+ github.com/google/go-cmp:github.com/google/go-cmp:force \
+ github.com/google/gofuzz:github.com/google/gofuzz:force \
+ github.com/google/s2a-go:github.com/google/s2a-go:force \
+ github.com/imdario/mergo:github.com/imdario/mergo:force \
+ github.com/nats-io/nkeys:github.com/nats-io/nkeys:force \
+ github.com/soheilhy/cmux:github.com/soheilhy/cmux:force \
+ github.com/tidwall/btree:github.com/tidwall/btree:force \
+ github.com/urfave/cli/v2:github.com/urfave/cli/v2:force \
+ go.opentelemetry.io/otel:go.opentelemetry.io/otel:force \
+ github.com/xenitab/spegel:github.com/k3s-io/spegel:force \
+ github.com/containerd/zfs:github.com/containerd/zfs:force \
+ github.com/ipfs/go-log/v2:github.com/ipfs/go-log/v2:force \
+ github.com/onsi/ginkgo/v2:github.com/onsi/ginkgo/v2:force \
+ github.com/robfig/cron/v3:github.com/robfig/cron/v3:force \
+ github.com/leodido/go-urn:github.com/leodido/go-urn:force \
+ github.com/mikioh/tcpinfo:github.com/mikioh/tcpinfo:force \
+ github.com/mr-tron/base58:github.com/mr-tron/base58:force \
+ github.com/polydawn/refmt:github.com/polydawn/refmt:force \
+ github.com/containerd/log:github.com/containerd/log:force \
+ github.com/containerd/nri:github.com/containerd/nri:force \
+ github.com/coreos/go-oidc:github.com/coreos/go-oidc:force \
+ github.com/godbus/dbus/v5:github.com/godbus/dbus/v5:force \
+ github.com/minio/md5-simd:github.com/minio/md5-simd:force \
+ github.com/mohae/deepcopy:github.com/mohae/deepcopy:force \
+ github.com/nats-io/jsm.go:github.com/nats-io/jsm.go:force \
+ github.com/nats-io/jwt/v2:github.com/nats-io/jwt/v2:force \
+ github.com/rubiojr/go-vhd:github.com/rubiojr/go-vhd:force \
+ github.com/vmware/govmomi:github.com/vmware/govmomi:force \
+ github.com/xlab/treeprint:github.com/xlab/treeprint:force \
+ github.com/xrash/smetrics:github.com/xrash/smetrics:force \
+ github.com/blang/semver/v4:github.com/blang/semver/v4:force \
+ github.com/containerd/aufs:github.com/containerd/aufs:force \
+ github.com/google/cadvisor:github.com/google/cadvisor:force \
+ github.com/opencontainers/runc:github.com/k3s-io/runc:force \
+ github.com/rancher/wharfie:github.com/rancher/wharfie:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus:force \
+ github.com/bytedance/sonic:github.com/bytedance/sonic:force \
+ github.com/elastic/gosigar:github.com/elastic/gosigar:force \
+ github.com/gin-contrib/sse:github.com/gin-contrib/sse:force \
+ github.com/google/gopacket:github.com/google/gopacket:force \
+ github.com/libp2p/go-msgio:github.com/libp2p/go-msgio:force \
+ github.com/mattn/go-isatty:github.com/mattn/go-isatty:force \
+ github.com/quic-go/quic-go:github.com/quic-go/quic-go:force \
+ github.com/containerd/fifo:github.com/containerd/fifo:force \
+ github.com/davecgh/go-spew:github.com/davecgh/go-spew:force \
+ github.com/docker/go-units:github.com/docker/go-units:force \
+ github.com/fatih/camelcase:github.com/fatih/camelcase:force \
+ github.com/go-openapi/swag:github.com/go-openapi/swag:force \
+ github.com/golang/protobuf:github.com/golang/protobuf:force \
+ github.com/intel/goresctrl:github.com/intel/goresctrl:force \
+ github.com/jackc/pgerrcode:github.com/jackc/pgerrcode:force \
+ github.com/mailru/easyjson:github.com/mailru/easyjson:force \
+ github.com/mdlayher/socket:github.com/mdlayher/socket:force \
+ github.com/moby/spdystream:github.com/moby/spdystream:force \
+ github.com/mxk/go-flowrate:github.com/mxk/go-flowrate:force \
+ github.com/nats-io/nats.go:github.com/nats-io/nats.go:force \
+ github.com/xiang90/probing:github.com/xiang90/probing:force \
+ golang.zx2c4.com/wireguard:golang.zx2c4.com/wireguard:force \
+ google.golang.org/genproto:google.golang.org/genproto:force \
+ google.golang.org/protobuf:google.golang.org/protobuf:force \
+ gopkg.in/square/go-jose.v2:gopkg.in/square/go-jose.v2:force \
+ github.com/json-iterator/go:github.com/json-iterator/go:force \
+ github.com/libp2p/go-libp2p:github.com/libp2p/go-libp2p:force \
+ github.com/mattn/go-sqlite3:github.com/mattn/go-sqlite3:force \
+ github.com/rancher/wrangler:github.com/rancher/wrangler:force \
+ github.com/stretchr/testify:github.com/stretchr/testify:force \
+ github.com/jbenet/goprocess:github.com/jbenet/goprocess:force \
+ github.com/syndtr/goleveldb:github.com/syndtr/goleveldb:force \
+ github.com/containerd/ttrpc:github.com/containerd/ttrpc:force \
+ github.com/coreos/go-semver:github.com/coreos/go-semver:force \
+ github.com/docker/go-events:github.com/docker/go-events:force \
+ github.com/go-errors/errors:github.com/go-errors/errors:force \
+ github.com/jackc/pgpassfile:github.com/jackc/pgpassfile:force \
+ github.com/josharian/intern:github.com/josharian/intern:force \
+ github.com/josharian/native:github.com/josharian/native:force \
+ github.com/lithammer/dedent:github.com/lithammer/dedent:force \
+ github.com/mdlayher/netlink:github.com/mdlayher/netlink:force \
+ github.com/mistifyio/go-zfs:github.com/mistifyio/go-zfs:force \
+ github.com/vbatts/tar-split:github.com/vbatts/tar-split:force \
+ google.golang.org/appengine:google.golang.org/appengine:force \
+ sigs.k8s.io/kustomize/api:sigs.k8s.io/kustomize/api/api:force \
+ go.etcd.io/etcd/api/v3:github.com/k3s-io/etcd/api/v3/api:force \
+ go.etcd.io/etcd/pkg/v3:github.com/k3s-io/etcd/pkg/v3/pkg:force \
+ github.com/Microsoft/hcsshim:github.com/Microsoft/hcsshim:force \
+ github.com/coreos/go-systemd:github.com/coreos/go-systemd:force \
+ github.com/gorilla/websocket:github.com/gorilla/websocket:force \
+ github.com/minio/minio-go/v7:github.com/minio/minio-go/v7:force \
+ github.com/yl2chen/cidranger:github.com/yl2chen/cidranger:force \
+ github.com/benbjohnson/clock:github.com/benbjohnson/clock:force \
+ github.com/francoispqt/gojay:github.com/francoispqt/gojay:force \
+ github.com/ipfs/go-datastore:github.com/ipfs/go-datastore:force \
+ github.com/raulk/go-watchdog:github.com/raulk/go-watchdog:force \
+ github.com/spaolacci/murmur3:github.com/spaolacci/murmur3:force \
+ github.com/xenitab/pkg/gin:github.com/xenitab/pkg/gin/gin:force \
+ github.com/Azure/go-ansiterm:github.com/Azure/go-ansiterm:force \
+ github.com/Azure/go-autorest:github.com/Azure/go-autorest:force \
+ github.com/avast/retry-go/v4:github.com/avast/retry-go/v4:force \
+ github.com/cespare/xxhash/v2:github.com/cespare/xxhash/v2:force \
+ github.com/containerd/go-cni:github.com/containerd/go-cni:force \
+ github.com/docker/go-metrics:github.com/docker/go-metrics:force \
+ github.com/felixge/httpsnoop:github.com/felixge/httpsnoop:force \
+ github.com/fsnotify/fsnotify:github.com/fsnotify/fsnotify:force \
+ github.com/golang-jwt/jwt/v4:github.com/golang-jwt/jwt/v4:force \
+ github.com/golang/groupcache:github.com/golang/groupcache:force \
+ github.com/hanwen/go-fuse/v2:github.com/hanwen/go-fuse/v2:force \
+ github.com/hashicorp/errwrap:github.com/hashicorp/errwrap:force \
+ github.com/karrick/godirwalk:github.com/karrick/godirwalk:force \
+ github.com/liggitt/tabwriter:github.com/liggitt/tabwriter:force \
+ github.com/minio/highwayhash:github.com/minio/highwayhash:force \
+ github.com/minio/sha256-simd:github.com/minio/sha256-simd:force \
+ github.com/mrunalp/fileutils:github.com/mrunalp/fileutils:force \
+ github.com/munnerz/goautoneg:github.com/munnerz/goautoneg:force \
+ github.com/pelletier/go-toml:github.com/pelletier/go-toml:force \
+ github.com/prometheus/common:github.com/prometheus/common:force \
+ github.com/prometheus/procfs:github.com/prometheus/procfs:force \
+ github.com/vishvananda/netns:github.com/vishvananda/netns:force \
+ github.com/coreos/go-iptables:github.com/coreos/go-iptables:force \
+ github.com/flannel-io/flannel:github.com/flannel-io/flannel:force \
+ github.com/ipfs/go-ds-leveldb:github.com/ipfs/go-ds-leveldb:force \
+ github.com/klauspost/compress:github.com/klauspost/compress:force \
+ github.com/chenzhuoyu/base64x:github.com/chenzhuoyu/base64x:force \
+ github.com/ipld/go-ipld-prime:github.com/ipld/go-ipld-prime:force \
+ github.com/jackpal/go-nat-pmp:github.com/jackpal/go-nat-pmp:force \
+ github.com/libp2p/go-netroute:github.com/libp2p/go-netroute:force \
+ github.com/libp2p/go-yamux/v4:github.com/libp2p/go-yamux/v4:force \
+ github.com/marten-seemann/tcp:github.com/marten-seemann/tcp:force \
+ github.com/ugorji/go/codec:github.com/ugorji/go/codec/codec:force \
+ github.com/JeffAshton/win_pdh:github.com/JeffAshton/win_pdh:force \
+ github.com/Microsoft/go-winio:github.com/Microsoft/go-winio:force \
+ github.com/containerd/cgroups:github.com/containerd/cgroups:force \
+ github.com/containerd/console:github.com/containerd/console:force \
+ github.com/containerd/go-runc:github.com/containerd/go-runc:force \
+ github.com/containerd/typeurl:github.com/containerd/typeurl:force \
+ github.com/dustin/go-humanize:github.com/dustin/go-humanize:force \
+ github.com/evanphx/json-patch:github.com/evanphx/json-patch:force \
+ github.com/fvbommel/sortorder:github.com/fvbommel/sortorder:force \
+ github.com/go-task/slim-sprig:github.com/go-task/slim-sprig:force \
+ github.com/klauspost/cpuid/v2:github.com/klauspost/cpuid/v2:force \
+ github.com/kylelemons/godebug:github.com/kylelemons/godebug:force \
+ github.com/mdlayher/genetlink:github.com/mdlayher/genetlink:force \
+ github.com/modern-go/reflect2:github.com/modern-go/reflect2:force \
+ github.com/peterbourgon/diskv:github.com/peterbourgon/diskv:force \
+ github.com/pmezard/go-difflib:github.com/pmezard/go-difflib:force \
+ github.com/shengdoushi/base58:github.com/shengdoushi/base58:force \
+ github.com/stoewer/go-strcase:github.com/stoewer/go-strcase:force \
+ go.etcd.io/etcd/raft/v3:github.com/k3s-io/etcd/raft/v3/raft:force \
+ github.com/moby/sys/signal:github.com/moby/sys/signal/signal:force \
+ github.com/Mirantis/cri-dockerd:github.com/k3s-io/cri-dockerd:force \
+ github.com/containerd/containerd:github.com/k3s-io/containerd:force \
+ github.com/erikdubbelboer/gspt:github.com/erikdubbelboer/gspt:force \
+ github.com/go-sql-driver/mysql:github.com/go-sql-driver/mysql:force \
+ github.com/vishvananda/netlink:github.com/vishvananda/netlink:force \
+ github.com/libp2p/go-cidranger:github.com/libp2p/go-cidranger:force \
+ github.com/libp2p/go-reuseport:github.com/libp2p/go-reuseport:force \
+ github.com/quic-go/qtls-go1-20:github.com/quic-go/qtls-go1-20:force \
+ github.com/MakeNowJust/heredoc:github.com/MakeNowJust/heredoc:force \
+ github.com/NYTimes/gziphandler:github.com/NYTimes/gziphandler:force \
+ github.com/canonical/go-dqlite:github.com/canonical/go-dqlite:force \
+ github.com/cenkalti/backoff/v4:github.com/cenkalti/backoff/v4:force \
+ github.com/chai2010/gettext-go:github.com/chai2010/gettext-go:force \
+ github.com/containerd/btrfs/v2:github.com/containerd/btrfs/v2:force \
+ github.com/containerd/imgcrypt:github.com/containerd/imgcrypt:force \
+ github.com/containers/ocicrypt:github.com/containers/ocicrypt:force \
+ github.com/docker/distribution:github.com/docker/distribution:force \
+ github.com/emicklei/go-restful:github.com/emicklei/go-restful:force \
+ github.com/gregjones/httpcache:github.com/gregjones/httpcache:force \
+ github.com/jackc/pgservicefile:github.com/jackc/pgservicefile:force \
+ github.com/jonboulle/clockwork:github.com/jonboulle/clockwork:force \
+ github.com/mistifyio/go-zfs/v3:github.com/mistifyio/go-zfs/v3:force \
+ github.com/syndtr/gocapability:github.com/syndtr/gocapability:force \
+ go.opentelemetry.io/otel/sdk:go.opentelemetry.io/otel/sdk/sdk:force \
+ sigs.k8s.io/kustomize/kyaml:sigs.k8s.io/kustomize/kyaml/kyaml:force \
+ github.com/natefinch/lumberjack:github.com/natefinch/lumberjack:force \
+ github.com/rancher/remotedialer:github.com/rancher/remotedialer:force \
+ github.com/davidlazar/go-crypto:github.com/davidlazar/go-crypto:force \
+ github.com/hashicorp/golang-lru:github.com/hashicorp/golang-lru:force \
+ github.com/pelletier/go-toml/v2:github.com/pelletier/go-toml/v2:force \
+ github.com/slok/go-http-metrics:github.com/slok/go-http-metrics:force \
+ cloud.google.com/go/compute:cloud.google.com/go/compute/compute:force \
+ github.com/euank/go-kmsg-parser:github.com/euank/go-kmsg-parser:force \
+ github.com/exponent-io/jsonpath:github.com/exponent-io/jsonpath:force \
+ github.com/googleapis/gax-go/v2:github.com/googleapis/gax-go/v2:force \
+ github.com/hashicorp/go-version:github.com/hashicorp/go-version:force \
+ github.com/mitchellh/go-homedir:github.com/mitchellh/go-homedir:force \
+ github.com/moby/sys/symlink:github.com/moby/sys/symlink/symlink:force \
+ github.com/modern-go/concurrent:github.com/modern-go/concurrent:force \
+ github.com/pquerna/cachecontrol:github.com/pquerna/cachecontrol:force \
+ github.com/tchap/go-patricia/v2:github.com/tchap/go-patricia/v2:force \
+ github.com/kubernetes-sigs/cri-tools:github.com/k3s-io/cri-tools:force \
+ github.com/containerd/cgroups/v3:github.com/containerd/cgroups/v3:force \
+ github.com/go-bindata/go-bindata:github.com/go-bindata/go-bindata:force \
+ go.etcd.io/etcd/server/v3:github.com/k3s-io/etcd/server/v3/server:force \
+ github.com/go-playground/locales:github.com/go-playground/locales:force \
+ github.com/libp2p/go-buffer-pool:github.com/libp2p/go-buffer-pool:force \
+ github.com/containerd/continuity:github.com/containerd/continuity:force \
+ github.com/containerd/typeurl/v2:github.com/containerd/typeurl/v2:force \
+ github.com/coreos/go-systemd/v22:github.com/coreos/go-systemd/v22:force \
+ github.com/cpuguy83/go-md2man/v2:github.com/cpuguy83/go-md2man/v2:force \
+ github.com/docker/go-connections:github.com/docker/go-connections:force \
+ github.com/google/gnostic-models:github.com/google/gnostic-models:force \
+ github.com/mitchellh/go-wordwrap:github.com/mitchellh/go-wordwrap:force \
+ gopkg.in/natefinch/lumberjack.v2:gopkg.in/natefinch/lumberjack.v2:force \
+ go.opentelemetry.io/proto/otlp:go.opentelemetry.io/proto/otlp/otlp:force \
+ github.com/k3s-io/helm-controller:github.com/k3s-io/helm-controller:force \
+ github.com/mwitkow/go-http-dialer:github.com/mwitkow/go-http-dialer:force \
+ github.com/opencontainers/selinux:github.com/opencontainers/selinux:force \
+ github.com/libp2p/go-flow-metrics:github.com/libp2p/go-flow-metrics:force \
+ github.com/multiformats/go-base32:github.com/multiformats/go-base32:force \
+ github.com/multiformats/go-base36:github.com/multiformats/go-base36:force \
+ github.com/multiformats/go-varint:github.com/multiformats/go-varint:force \
+ github.com/Azure/azure-sdk-for-go:github.com/Azure/azure-sdk-for-go:force \
+ github.com/asaskevich/govalidator:github.com/asaskevich/govalidator:force \
+ github.com/emicklei/go-restful/v3:github.com/emicklei/go-restful/v3:force \
+ github.com/go-openapi/jsonpointer:github.com/go-openapi/jsonpointer:force \
+ github.com/hashicorp/go-cleanhttp:github.com/hashicorp/go-cleanhttp:force \
+ github.com/nats-io/nats-server/v2:github.com/nats-io/nats-server/v2:force \
+ go.opentelemetry.io/otel/trace:go.opentelemetry.io/otel/trace/trace:force \
+ golang.zx2c4.com/wireguard/wgctrl:golang.zx2c4.com/wireguard/wgctrl:force \
+ go.etcd.io/etcd/client/v3:github.com/k3s-io/etcd/client/v3/client/v3:force \
+ go.etcd.io/etcd/etcdutl/v3:github.com/k3s-io/etcd/etcdutl/v3/etcdutl:force \
+ go.etcd.io/etcd/client/v2:github.com/k3s-io/etcd/client/v2/client/v2:force \
+ github.com/rancher/dynamiclistener:github.com/rancher/dynamiclistener:force \
+ github.com/gabriel-vasile/mimetype:github.com/gabriel-vasile/mimetype:force \
+ github.com/hashicorp/golang-lru/v2:github.com/hashicorp/golang-lru/v2:force \
+ github.com/libp2p/go-libp2p-record:github.com/libp2p/go-libp2p-record:force \
+ github.com/quic-go/webtransport-go:github.com/quic-go/webtransport-go:force \
+ github.com/containernetworking/cni:github.com/containernetworking/cni:force \
+ github.com/hashicorp/go-multierror:github.com/hashicorp/go-multierror:force \
+ github.com/moby/sys/mountinfo:github.com/moby/sys/mountinfo/mountinfo:force \
+ github.com/prometheus/client_model:github.com/prometheus/client_model:force \
+ github.com/russross/blackfriday/v2:github.com/russross/blackfriday/v2:force \
+ sigs.k8s.io/kustomize/kustomize/v5:sigs.k8s.io/kustomize/kustomize/v5/kustomize:force \
+ go.opentelemetry.io/otel/metric:go.opentelemetry.io/otel/metric/metric:force \
+ github.com/libp2p/go-libp2p-kad-dht:github.com/libp2p/go-libp2p-kad-dht:force \
+ github.com/libp2p/go-libp2p-kbucket:github.com/libp2p/go-libp2p-kbucket:force \
+ github.com/daviddengcn/go-colortext:github.com/daviddengcn/go-colortext:force \
+ github.com/go-openapi/jsonreference:github.com/go-openapi/jsonreference:force \
+ github.com/opencontainers/go-digest:github.com/opencontainers/go-digest:force \
+ github.com/prometheus/client_golang:github.com/prometheus/client_golang:force \
+ github.com/tmc/grpc-websocket-proxy:github.com/tmc/grpc-websocket-proxy:force \
+ github.com/xenitab/pkg/channels:github.com/xenitab/pkg/channels/channels:force \
+ github.com/moby/sys/sequential:github.com/moby/sys/sequential/sequential:force \
+ github.com/libp2p/go-libp2p-asn-util:github.com/libp2p/go-libp2p-asn-util:force \
+ github.com/multiformats/go-multiaddr:github.com/multiformats/go-multiaddr:force \
+ github.com/multiformats/go-multibase:github.com/multiformats/go-multibase:force \
+ github.com/multiformats/go-multihash:github.com/multiformats/go-multihash:force \
+ github.com/whyrusleeping/go-keyspace:github.com/whyrusleeping/go-keyspace:force \
+ github.com/AdaLogics/go-fuzz-headers:github.com/AdaLogics/go-fuzz-headers:force \
+ github.com/inconshreveable/mousetrap:github.com/inconshreveable/mousetrap:force \
+ github.com/opencontainers/image-spec:github.com/opencontainers/image-spec:force \
+ github.com/seccomp/libseccomp-golang:github.com/seccomp/libseccomp-golang:force \
+ github.com/stefanberger/go-pkcs11uri:github.com/stefanberger/go-pkcs11uri:force \
+ sigs.k8s.io/structured-merge-diff/v4:sigs.k8s.io/structured-merge-diff/v4:force \
+ github.com/cloudnativelabs/kube-router/v2:github.com/k3s-io/kube-router/v2:force \
+ github.com/jbenet/go-temp-err-catcher:github.com/jbenet/go-temp-err-catcher:force \
+ github.com/multiformats/go-multicodec:github.com/multiformats/go-multicodec:force \
+ github.com/opentracing/opentracing-go:github.com/opentracing/opentracing-go:force \
+ github.com/twitchyliquid64/golang-asm:github.com/twitchyliquid64/golang-asm:force \
+ github.com/cyphar/filepath-securejoin:github.com/cyphar/filepath-securejoin:force \
+ github.com/hashicorp/go-retryablehttp:github.com/hashicorp/go-retryablehttp:force \
+ github.com/libopenstorage/openstorage:github.com/libopenstorage/openstorage:force \
+ go.etcd.io/etcd/client/pkg/v3:github.com/k3s-io/etcd/client/pkg/v3/client/pkg:force \
+ github.com/go-playground/validator/v10:github.com/go-playground/validator/v10:force \
+ github.com/multiformats/go-multistream:github.com/multiformats/go-multistream:force \
+ github.com/AdamKorcz/go-118-fuzz-build:github.com/AdamKorcz/go-118-fuzz-build:force \
+ github.com/bronze1man/goStrongswanVici:github.com/bronze1man/goStrongswanVici:force \
+ github.com/containernetworking/plugins:github.com/containernetworking/plugins:force \
+ github.com/google/go-containerregistry:github.com/google/go-containerregistry:force \
+ github.com/grpc-ecosystem/grpc-gateway:github.com/grpc-ecosystem/grpc-gateway:force \
+ github.com/monochromegane/go-gitignore:github.com/monochromegane/go-gitignore:force \
+ github.com/opencontainers/runtime-spec:github.com/opencontainers/runtime-spec:force \
+ github.com/Azure/go-autorest/logger:github.com/Azure/go-autorest/logger/logger:force \
+ github.com/opencontainers/runtime-tools:github.com/opencontainers/runtime-tools:force \
+ github.com/containerd/stargz-snapshotter:github.com/containerd/stargz-snapshotter:force \
+ github.com/hashicorp/golang-lru/arc/v2:github.com/hashicorp/golang-lru/arc/v2/arc:force \
+ github.com/multiformats/go-multiaddr-dns:github.com/multiformats/go-multiaddr-dns:force \
+ github.com/multiformats/go-multiaddr-fmt:github.com/multiformats/go-multiaddr-fmt:force \
+ github.com/Azure/go-autorest/tracing:github.com/Azure/go-autorest/tracing/tracing:force \
+ github.com/checkpoint-restore/go-criu/v5:github.com/checkpoint-restore/go-criu/v5:force \
+ github.com/grpc-ecosystem/grpc-gateway/v2:github.com/grpc-ecosystem/grpc-gateway/v2:force \
+ github.com/Azure/go-autorest/autorest:github.com/Azure/go-autorest/autorest/autorest:force \
+ github.com/rootless-containers/rootlesskit:github.com/rootless-containers/rootlesskit:force \
+ k8s.io/api:github.com/k3s-io/kubernetes/staging/src/k8s.io/api/staging/src/k8s.io/api:force \
+ k8s.io/kms:github.com/k3s-io/kubernetes/staging/src/k8s.io/kms/staging/src/k8s.io/kms:force \
+ github.com/libp2p/go-libp2p-routing-helpers:github.com/libp2p/go-libp2p-routing-helpers:force \
+ github.com/container-storage-interface/spec:github.com/container-storage-interface/spec:force \
+ github.com/docker/docker-credential-helpers:github.com/docker/docker-credential-helpers:force \
+ github.com/grpc-ecosystem/go-grpc-middleware:github.com/grpc-ecosystem/go-grpc-middleware:force \
+ github.com/grpc-ecosystem/go-grpc-prometheus:github.com/grpc-ecosystem/go-grpc-prometheus:force \
+ cloud.google.com/go/compute/metadata:cloud.google.com/go/compute/metadata/compute/metadata:force \
+ github.com/go-playground/universal-translator:github.com/go-playground/universal-translator:force \
+ github.com/Azure/go-autorest/autorest/to:github.com/Azure/go-autorest/autorest/to/autorest/to:force \
+ github.com/containerd/fuse-overlayfs-snapshotter:github.com/containerd/fuse-overlayfs-snapshotter:force \
+ k8s.io/cri-api:github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api/staging/src/k8s.io/cri-api:force \
+ k8s.io/kubectl:github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl/staging/src/k8s.io/kubectl:force \
+ k8s.io/kubelet:github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet/staging/src/k8s.io/kubelet:force \
+ k8s.io/metrics:github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics/staging/src/k8s.io/metrics:force \
+ google.golang.org/genproto/googleapis/api:google.golang.org/genproto/googleapis/api/googleapis/api:force \
+ google.golang.org/genproto/googleapis/rpc:google.golang.org/genproto/googleapis/rpc/googleapis/rpc:force \
+ github.com/decred/dcrd/dcrec/secp256k1/v4:github.com/decred/dcrd/dcrec/secp256k1/v4/dcrec/secp256k1:force \
+ github.com/Azure/go-autorest/autorest/adal:github.com/Azure/go-autorest/autorest/adal/autorest/adal:force \
+ github.com/Azure/go-autorest/autorest/date:github.com/Azure/go-autorest/autorest/date/autorest/date:force \
+ github.com/GoogleCloudPlatform/k8s-cloud-provider:github.com/GoogleCloudPlatform/k8s-cloud-provider:force \
+ github.com/googleapis/enterprise-certificate-proxy:github.com/googleapis/enterprise-certificate-proxy:force \
+ github.com/Azure/go-autorest/autorest/mocks:github.com/Azure/go-autorest/autorest/mocks/autorest/mocks:force \
+ k8s.io/apiserver:github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver/staging/src/k8s.io/apiserver:force \
+ k8s.io/client-go:github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go/staging/src/k8s.io/client-go:force \
+ github.com/matttproud/golang_protobuf_extensions/v2:github.com/matttproud/golang_protobuf_extensions/v2:force \
+ github.com/containerd/stargz-snapshotter/estargz:github.com/containerd/stargz-snapshotter/estargz/estargz:force \
+ k8s.io/kube-proxy:github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy/staging/src/k8s.io/kube-proxy:force \
+ github.com/antlr/antlr4/runtime/Go/antlr/v4:github.com/antlr/antlr4/runtime/Go/antlr/v4/runtime/Go/antlr/v4:force \
+ k8s.io/cli-runtime:github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime/staging/src/k8s.io/cli-runtime:force \
+ k8s.io/mount-utils:github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils/staging/src/k8s.io/mount-utils:force \
+ k8s.io/apimachinery:github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery/staging/src/k8s.io/apimachinery:force \
+ k8s.io/endpointslice:github.com/k3s-io/kubernetes/staging/src/k8s.io/endpointslice/staging/src/k8s.io/endpointslice:force \
+ github.com/Azure/go-autorest/autorest/validation:github.com/Azure/go-autorest/autorest/validation/autorest/validation:force \
+ k8s.io/cloud-provider:github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider/staging/src/k8s.io/cloud-provider:force \
+ k8s.io/component-base:github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base/staging/src/k8s.io/component-base:force \
+ k8s.io/code-generator:github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator/staging/src/k8s.io/code-generator:force \
+ k8s.io/kube-scheduler:github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler/staging/src/k8s.io/kube-scheduler:force \
+ k8s.io/kube-aggregator:github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator/staging/src/k8s.io/kube-aggregator:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace:go.opentelemetry.io/otel/exporters/otlp/otlptrace/exporters/otlp/otlptrace:force \
+ k8s.io/cluster-bootstrap:github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap/staging/src/k8s.io/cluster-bootstrap:force \
+ k8s.io/component-helpers:github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers/staging/src/k8s.io/component-helpers:force \
+ k8s.io/controller-manager:github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager/staging/src/k8s.io/controller-manager:force \
+ sigs.k8s.io/apiserver-network-proxy/konnectivity-client:sigs.k8s.io/apiserver-network-proxy/konnectivity-client/konnectivity-client:force \
+ k8s.io/csi-translation-lib:github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib/staging/src/k8s.io/csi-translation-lib:force \
+ github.com/container-orchestrated-devices/container-device-interface:github.com/container-orchestrated-devices/container-device-interface:force \
+ go.opentelemetry.io/otel/exporters/otlp/internal/retry:go.opentelemetry.io/otel/exporters/otlp/internal/retry/exporters/otlp/internal/retry:force \
+ k8s.io/legacy-cloud-providers:github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers/staging/src/k8s.io/legacy-cloud-providers:force \
+ k8s.io/pod-security-admission:github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission/staging/src/k8s.io/pod-security-admission:force \
+ k8s.io/apiextensions-apiserver:github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver/staging/src/k8s.io/apiextensions-apiserver:force \
+ k8s.io/kube-controller-manager:github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager/staging/src/k8s.io/kube-controller-manager:force \
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp:go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/instrumentation/net/http/otelhttp:force \
+ k8s.io/dynamic-resource-allocation:github.com/k3s-io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation/staging/src/k8s.io/dynamic-resource-allocation:force \
+ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc:go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/exporters/otlp/otlptrace/otlptracegrpc:force \
+ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc:go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/instrumentation/google.golang.org/grpc/otelgrpc:force \
+ go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful:go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful/instrumentation/github.com/emicklei/go-restful/otelrestful:force"
+
+do_compile:prepend() {
+ cd ${S}/src/import
+ for s in $sites; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+}
diff --git a/recipes-containers/k3s/src_uri.inc b/recipes-containers/k3s/src_uri.inc
new file mode 100644
index 00000000..b90441e1
--- /dev/null
+++ b/recipes-containers/k3s/src_uri.inc
@@ -0,0 +1,2150 @@
+# k8s.io/utils v0.0.0-20230726121419-3b25d923346b
+# [1] git ls-remote https://github.com/kubernetes/utils 3b25d923346b3814e0898684c97390092f31a61e
+SRCREV_utils="3b25d923346b3814e0898684c97390092f31a61e"
+SRC_URI += "git://github.com/kubernetes/utils;name=utils;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/utils"
+
+# k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01
+# [1] git ls-remote https://github.com/kubernetes/gengo 9cce18d56c01fab1d8ed72411ad6ef7005fc33a4
+SRCREV_gengo="9cce18d56c01fab1d8ed72411ad6ef7005fc33a4"
+SRC_URI += "git://github.com/kubernetes/gengo;name=gengo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/gengo"
+
+# go.uber.org/fx v1.20.0
+# [1] git ls-remote https://github.com/uber-go/fx 1320bc693745e5e7c08c29843de3d7915cac826c
+SRCREV_fx="1320bc693745e5e7c08c29843de3d7915cac826c"
+SRC_URI += "git://github.com/uber-go/fx;name=fx;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/fx"
+
+# go.uber.org/zap v1.26.0
+# [1] git ls-remote https://github.com/uber-go/zap 96038b71a7d96b8c14fedb3aeddcb3d0d7605b2d
+SRCREV_zap="96038b71a7d96b8c14fedb3aeddcb3d0d7605b2d"
+SRC_URI += "git://github.com/uber-go/zap;name=zap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/zap"
+
+# go.uber.org/dig v1.17.0
+# [1] git ls-remote https://github.com/uber-go/dig a8b6f0db4f27681ad7233eed1bda9d5c69881f5b
+SRCREV_dig="a8b6f0db4f27681ad7233eed1bda9d5c69881f5b"
+SRC_URI += "git://github.com/uber-go/dig;name=dig;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/dig"
+
+# go.starlark.net v0.0.0-20230525235612-a134d8f9ddca
+# [1] git ls-remote https://github.com/google/starlark-go a134d8f9ddca7469c736775b67544671f0a135ad
+SRCREV_go.starlark.net="a134d8f9ddca7469c736775b67544671f0a135ad"
+SRC_URI += "git://github.com/google/starlark-go;name=go.starlark.net;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.starlark.net"
+
+# gopkg.in/inf.v0 v0.9.1
+# [1] git ls-remote https://github.com/go-inf/inf d2d2541c53f18d2a059457998ce2876cc8e67cbf
+SRCREV_inf.v0="d2d2541c53f18d2a059457998ce2876cc8e67cbf"
+SRC_URI += "git://github.com/go-inf/inf;name=inf.v0;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/inf.v0"
+
+# gopkg.in/ini.v1 v1.67.0
+# [1] git ls-remote https://github.com/go-ini/ini b2f570e5b5b844226bbefe6fb521d891f529a951
+SRCREV_ini.v1="b2f570e5b5b844226bbefe6fb521d891f529a951"
+SRC_URI += "git://github.com/go-ini/ini;name=ini.v1;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/ini.v1"
+
+# golang.org/x/net v0.17.0
+# [1] git ls-remote https://go.googlesource.com/net b225e7ca6dde1ef5a5ae5ce922861bda011cfabd
+SRCREV_net="b225e7ca6dde1ef5a5ae5ce922861bda011cfabd"
+SRC_URI += "git://go.googlesource.com/net;name=net;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/net"
+
+# golang.org/x/sys v0.13.0
+# [1] git ls-remote https://go.googlesource.com/sys 2964e1e4b1dbd55a8ac69a4c9e3004a8038515b6
+SRCREV_sys="2964e1e4b1dbd55a8ac69a4c9e3004a8038515b6"
+SRC_URI += "git://go.googlesource.com/sys;name=sys;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sys"
+
+# gopkg.in/yaml.v2 v2.4.0
+# [1] git ls-remote https://github.com/go-yaml/yaml 7649d4548cb53a614db133b2a8ac1f31859dda8c
+SRCREV_yaml.v2="7649d4548cb53a614db133b2a8ac1f31859dda8c"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v2"
+
+# inet.af/tcpproxy v0.0.0-20200125044825-b6bb9b5b8252
+# [1] git ls-remote https://github.com/inetaf/tcpproxy b6bb9b5b82524122bcf27291ede32d1517a14ab8
+SRCREV_tcpproxy="b6bb9b5b82524122bcf27291ede32d1517a14ab8"
+SRC_URI += "git://github.com/inetaf/tcpproxy;name=tcpproxy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/inet.af/tcpproxy"
+
+# sigs.k8s.io/yaml v1.4.0
+# [1] git ls-remote https://github.com/kubernetes-sigs/yaml c3772b51db126345efe2dfe4ff8dac83b8141684
+SRCREV_yaml="c3772b51db126345efe2dfe4ff8dac83b8141684"
+SRC_URI += "git://github.com/kubernetes-sigs/yaml;name=yaml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/yaml"
+
+# go.etcd.io/bbolt v1.3.8
+# [1] git ls-remote https://github.com/etcd-io/bbolt 42a914d8be1995a845e12dedbbbc77b7a450f9c7
+SRCREV_bbolt="42a914d8be1995a845e12dedbbbc77b7a450f9c7"
+SRC_URI += "git://github.com/etcd-io/bbolt;name=bbolt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.etcd.io/bbolt"
+
+# go.opencensus.io v0.24.0
+# [1] git ls-remote https://github.com/census-instrumentation/opencensus-go b1a01ee95db0e690d91d7193d037447816fae4c5
+SRCREV_go.opencensus.io="b1a01ee95db0e690d91d7193d037447816fae4c5"
+SRC_URI += "git://github.com/census-instrumentation/opencensus-go;name=go.opencensus.io;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opencensus.io"
+
+# golang.org/x/exp v0.0.0-20231006140011-7918f672742d
+# [1] git ls-remote https://go.googlesource.com/exp 7918f672742dd40ff5cf8d3c316a9315410c2d3c
+SRCREV_exp="7918f672742dd40ff5cf8d3c316a9315410c2d3c"
+SRC_URI += "git://go.googlesource.com/exp;name=exp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/exp"
+
+# golang.org/x/mod v0.14.0
+# [1] git ls-remote https://go.googlesource.com/mod 6e58e47c7bd6672665dc35cce7b1f325d2addd67
+SRCREV_mod="6e58e47c7bd6672665dc35cce7b1f325d2addd67"
+SRC_URI += "git://go.googlesource.com/mod;name=mod;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/mod"
+
+# gopkg.in/gcfg.v1 v1.2.3
+# [1] git ls-remote https://github.com/go-gcfg/gcfg 61b2c08bc8f6068f7c5ca684372f9a6cb1c45ebe
+SRCREV_gcfg.v1="61b2c08bc8f6068f7c5ca684372f9a6cb1c45ebe"
+SRC_URI += "git://github.com/go-gcfg/gcfg;name=gcfg.v1;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/gcfg.v1"
+
+# gopkg.in/yaml.v3 v3.0.1
+# [1] git ls-remote https://github.com/go-yaml/yaml f6f7691b1fdeb513f56608cd2c32c51f8194bf51
+SRCREV_yaml.v3="f6f7691b1fdeb513f56608cd2c32c51f8194bf51"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v3"
+
+# sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd
+# [1] git ls-remote https://github.com/kubernetes-sigs/json bc3834ca7abd3a90f03ef00a27ad80cb892f9c21
+SRCREV_json="bc3834ca7abd3a90f03ef00a27ad80cb892f9c21"
+SRC_URI += "git://github.com/kubernetes-sigs/json;name=json;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/json"
+
+# github.com/lib/pq v1.10.2
+# [1] git ls-remote https://github.com/lib/pq 2da6713d67f03911a05b1b6559adc85927fe076e
+SRCREV_pq="2da6713d67f03911a05b1b6559adc85927fe076e"
+SRC_URI += "git://github.com/lib/pq;name=pq;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/lib/pq"
+
+# golang.org/x/sync v0.6.0
+# [1] git ls-remote https://go.googlesource.com/sync 59c1ca1e4661ed4452be4069ceea3c233f4deec1
+SRCREV_sync="59c1ca1e4661ed4452be4069ceea3c233f4deec1"
+SRC_URI += "git://go.googlesource.com/sync;name=sync;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sync"
+
+# golang.org/x/arch v0.3.0
+# [1] git ls-remote https://go.googlesource.com/arch 40c19ba4a7c5ffc92baaef5977ffc2b82dfb0e47
+SRCREV_arch="40c19ba4a7c5ffc92baaef5977ffc2b82dfb0e47"
+SRC_URI += "git://go.googlesource.com/arch;name=arch;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/arch"
+
+# github.com/rs/xid v1.5.0
+# [1] git ls-remote https://github.com/rs/xid 47a0ac1e0b750ee1f43718be223bb07601c66a1f
+SRCREV_xid="47a0ac1e0b750ee1f43718be223bb07601c66a1f"
+SRC_URI += "git://github.com/rs/xid;name=xid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rs/xid"
+
+# golang.org/x/term v0.15.0
+# [1] git ls-remote https://go.googlesource.com/term ee66497fa39f03ba841b568a7b4f4ee4e4546f74
+SRCREV_x-term="ee66497fa39f03ba841b568a7b4f4ee4e4546f74"
+SRC_URI += "git://go.googlesource.com/term;name=x-term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/term"
+
+# golang.org/x/text v0.14.0
+# [1] git ls-remote https://go.googlesource.com/text 6c97a165dd661335ff7bce6104a008558123c353
+SRCREV_text="6c97a165dd661335ff7bce6104a008558123c353"
+SRC_URI += "git://go.googlesource.com/text;name=text;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/text"
+
+# golang.org/x/time v0.5.0
+# [1] git ls-remote https://go.googlesource.com/time 883aed519795b30de35e6bc28ec8f681494afa87
+SRCREV_time="883aed519795b30de35e6bc28ec8f681494afa87"
+SRC_URI += "git://go.googlesource.com/time;name=time;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/time"
+
+# gonum.org/v1/gonum v0.13.0
+# [1] git ls-remote https://github.com/gonum/gonum 91a06ac64c4b32c929427846d4d1d3b8202ad7b1
+SRCREV_gonum="91a06ac64c4b32c929427846d4d1d3b8202ad7b1"
+SRC_URI += "git://github.com/gonum/gonum;name=gonum;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gonum.org/v1/gonum"
+
+# golang.org/x/tools v0.16.1
+# [1] git ls-remote https://go.googlesource.com/tools 2acb2e697b49f179be93652febb89d384f0f09c9
+SRCREV_tools="2acb2e697b49f179be93652febb89d384f0f09c9"
+SRC_URI += "git://go.googlesource.com/tools;name=tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/tools"
+
+# golang.org/x/crypto v0.14.0
+# [1] git ls-remote https://go.googlesource.com/crypto e3cc52e598e302f8c613a645bb7231264d8ec995
+SRCREV_crypto="e3cc52e598e302f8c613a645bb7231264d8ec995"
+SRC_URI += "git://go.googlesource.com/crypto;name=crypto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/crypto"
+
+# golang.org/x/oauth2 v0.15.0
+# [1] git ls-remote https://go.googlesource.com/oauth2 6e9ec9323da7adcd2cc6e62e4deb9fae4c309a1a
+SRCREV_oauth2="6e9ec9323da7adcd2cc6e62e4deb9fae4c309a1a"
+SRC_URI += "git://go.googlesource.com/oauth2;name=oauth2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/oauth2"
+
+# k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9
+# [1] git ls-remote https://github.com/kubernetes/kube-openapi 2695361300d9d6b66602baa8cf366b7212cc9836
+SRCREV_kube-openapi="2695361300d9d6b66602baa8cf366b7212cc9836"
+SRC_URI += "git://github.com/kubernetes/kube-openapi;name=kube-openapi;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/k8s.io/kube-openapi"
+
+# github.com/ipfs/boxo v0.10.0
+# [1] git ls-remote https://github.com/ipfs/boxo 6f82d77995476b0d85722539230a50a321706ead
+SRCREV_boxo="6f82d77995476b0d85722539230a50a321706ead"
+SRC_URI += "git://github.com/ipfs/boxo;name=boxo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/boxo"
+
+# github.com/miekg/dns v1.1.55
+# [1] git ls-remote https://github.com/miekg/dns 48f38ebef989eedc6b57f1869ae849ccc8f5fe29
+SRCREV_dns="48f38ebef989eedc6b57f1869ae849ccc8f5fe29"
+SRC_URI += "git://github.com/miekg/dns;name=dns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/miekg/dns"
+
+# github.com/moby/ipvs v1.1.0
+# [1] git ls-remote https://github.com/moby/ipvs fe22ac585b3e22a969cbde61addd99ecd93ab22c
+SRCREV_ipvs="fe22ac585b3e22a969cbde61addd99ecd93ab22c"
+SRC_URI += "git://github.com/moby/ipvs;name=ipvs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/ipvs"
+
+# github.com/moby/term v0.0.0-20221205130635-1aeaba878587
+# [1] git ls-remote https://github.com/moby/term 1aeaba8785877a66f57739be9fccb6f5cfab429e
+SRCREV_term="1aeaba8785877a66f57739be9fccb6f5cfab429e"
+SRC_URI += "git://github.com/moby/term;name=term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/term"
+
+# go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1
+# [1] git ls-remote https://github.com/mozilla-services/pkcs7 432b2356ecb18209c1cec25680b8a23632794f21
+SRCREV_pkcs7="432b2356ecb18209c1cec25680b8a23632794f21"
+SRC_URI += "git://github.com/mozilla-services/pkcs7;name=pkcs7;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.mozilla.org/pkcs7"
+
+# go.uber.org/multierr v1.11.0
+# [1] git ls-remote https://github.com/uber-go/multierr de75ae527b39a27afcb50a84427ec7b84021d5f4
+SRCREV_multierr="de75ae527b39a27afcb50a84427ec7b84021d5f4"
+SRC_URI += "git://github.com/uber-go/multierr;name=multierr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/multierr"
+
+# gopkg.in/warnings.v0 v0.1.2
+# [1] git ls-remote https://github.com/go-warnings/warnings ec4a0fea49c7b46c2aeb0b51aac55779c607e52b
+SRCREV_warnings.v0="ec4a0fea49c7b46c2aeb0b51aac55779c607e52b"
+SRC_URI += "git://github.com/go-warnings/warnings;name=warnings.v0;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/warnings.v0"
+
+# github.com/pkg/errors v0.9.1
+# [1] git ls-remote https://github.com/pkg/errors 614d223910a179a466c1767a985424175c39b465
+SRCREV_errors="614d223910a179a466c1767a985424175c39b465"
+SRC_URI += "git://github.com/pkg/errors;name=errors;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pkg/errors"
+
+# github.com/urfave/cli v1.22.14
+# [1] git ls-remote https://github.com/urfave/cli f5ca62f301d773bdc9c800aa0e24aec82ad01a1d
+SRCREV_cli="f5ca62f301d773bdc9c800aa0e24aec82ad01a1d"
+SRC_URI += "git://github.com/urfave/cli;name=cli;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/urfave/cli"
+
+# github.com/docker/cli v24.0.5+incompatible
+# [1] git ls-remote https://github.com/docker/cli ced099660009713e0e845eeb754e6050dbaa45d0
+SRCREV_docker-cli="ced099660009713e0e845eeb754e6050dbaa45d0"
+SRC_URI += "git://github.com/docker/cli;name=docker-cli;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/cli"
+
+# github.com/gofrs/uuid v4.4.0+incompatible
+# [1] git ls-remote https://github.com/gofrs/uuid 8345c9a6e83034ec02edb1887c08c6c7fbfdd9ee
+SRCREV_gofrs-uuid="8345c9a6e83034ec02edb1887c08c6c7fbfdd9ee"
+SRC_URI += "git://github.com/gofrs/uuid;name=gofrs-uuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gofrs/uuid"
+
+# google.golang.org/api v0.152.0
+# [1] git ls-remote https://github.com/googleapis/google-api-go-client c18c15e47e02cc3fa5d9e68b88313952381d31ae
+SRCREV_google.golang.org-api="c18c15e47e02cc3fa5d9e68b88313952381d31ae"
+SRC_URI += "git://github.com/googleapis/google-api-go-client;name=google.golang.org-api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/api"
+
+# github.com/golang/mock v1.6.0
+# [1] git ls-remote https://github.com/golang/mock aba2ff9a6844d5e3289e8472d3217d5b3090f083
+SRCREV_mock="aba2ff9a6844d5e3289e8472d3217d5b3090f083"
+SRC_URI += "git://github.com/golang/mock;name=mock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/mock"
+
+# github.com/google/uuid v1.4.0
+# [1] git ls-remote https://github.com/google/uuid 8de8764e294f072b7a2f1a209e88fdcdb1ebc875
+SRCREV_uuid="8de8764e294f072b7a2f1a209e88fdcdb1ebc875"
+SRC_URI += "git://github.com/google/uuid;name=uuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/uuid"
+
+# github.com/gorilla/mux v1.8.1
+# [1] git ls-remote https://github.com/gorilla/mux b4617d0b9670ad14039b2739167fd35a60f557c5
+SRCREV_mux="b4617d0b9670ad14039b2739167fd35a60f557c5"
+SRC_URI += "git://github.com/gorilla/mux;name=mux;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gorilla/mux"
+
+# github.com/k3s-io/kine v0.11.4
+# [1] git ls-remote https://github.com/k3s-io/kine 37736729c40f1e7ad18521d1eb5c2a13e314ebde
+SRCREV_kine="37736729c40f1e7ad18521d1eb5c2a13e314ebde"
+SRC_URI += "git://github.com/k3s-io/kine;name=kine;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kine"
+
+# github.com/onsi/gomega v1.27.10
+# [1] git ls-remote https://github.com/onsi/gomega 9cbf7b0019d4d489d668583b0d7a6ac889ee2bc8
+SRCREV_gomega="9cbf7b0019d4d489d668583b0d7a6ac889ee2bc8"
+SRC_URI += "git://github.com/onsi/gomega;name=gomega;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/onsi/gomega"
+
+# github.com/k3s-io/runc v1.1.12-k3s1
+# [1] git ls-remote https://github.com/k3s-io/runc 7d07dac287da807a624adba7ea7ccc1b3f28c614
+SRCREV_runc="7d07dac287da807a624adba7ea7ccc1b3f28c614"
+SRC_URI += "git://github.com/k3s-io/runc;name=runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/runc"
+
+# github.com/spf13/pflag v1.0.5
+# [1] git ls-remote https://github.com/spf13/pflag 2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab
+SRCREV_pflag="2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab"
+SRC_URI += "git://github.com/spf13/pflag;name=pflag;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/pflag"
+
+# google.golang.org/grpc v1.58.3
+# [1] git ls-remote https://github.com/grpc/grpc-go bf05b9558c16677e362d231120f8213eb276d406
+SRCREV_grpc="bf05b9558c16677e362d231120f8213eb276d406"
+SRC_URI += "git://github.com/grpc/grpc-go;name=grpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/grpc"
+
+# github.com/flynn/noise v1.0.0
+# [1] git ls-remote https://github.com/flynn/noise 2499bf1bad239a8316c32932a993642350b3afdb
+SRCREV_noise="2499bf1bad239a8316c32932a993642350b3afdb"
+SRC_URI += "git://github.com/flynn/noise;name=noise;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/flynn/noise"
+
+# github.com/huin/goupnp v1.2.0
+# [1] git ls-remote https://github.com/huin/goupnp 8ca2329ddbfe051b906efe0883e7a66ac296bc0a
+SRCREV_goupnp="8ca2329ddbfe051b906efe0883e7a66ac296bc0a"
+SRC_URI += "git://github.com/huin/goupnp;name=goupnp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/huin/goupnp"
+
+# github.com/ipfs/go-cid v0.4.1
+# [1] git ls-remote https://github.com/ipfs/go-cid d46e7f28669cd2c463bc68fe86e7dbe4f8240ab7
+SRCREV_go-cid="d46e7f28669cd2c463bc68fe86e7dbe4f8240ab7"
+SRC_URI += "git://github.com/ipfs/go-cid;name=go-cid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-cid"
+
+# github.com/ipfs/go-log v1.0.5
+# [1] git ls-remote https://github.com/ipfs/go-log c39ee80c0915c5cca41dc1311e848c2fd7fa4101
+SRCREV_go-log="c39ee80c0915c5cca41dc1311e848c2fd7fa4101"
+SRC_URI += "git://github.com/ipfs/go-log;name=go-log;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-log"
+
+# github.com/spf13/afero v1.11.0
+# [1] git ls-remote https://github.com/spf13/afero 5c4385aa20510dba5ca4db12c02b0c9211d82892
+SRCREV_afero="5c4385aa20510dba5ca4db12c02b0c9211d82892"
+SRC_URI += "git://github.com/spf13/afero;name=afero;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/afero"
+
+# github.com/cilium/ebpf v0.9.1
+# [1] git ls-remote https://github.com/cilium/ebpf d560e4479b395c4523851a4571b04ba0b3846cd1
+SRCREV_ebpf="d560e4479b395c4523851a4571b04ba0b3846cd1"
+SRC_URI += "git://github.com/cilium/ebpf;name=ebpf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cilium/ebpf"
+
+# github.com/ghodss/yaml v1.0.0
+# [1] git ls-remote https://github.com/ghodss/yaml 0ca9ea5df5451ffdf184b4428c902747c2c11cd7
+SRCREV_ghodss-yaml="0ca9ea5df5451ffdf184b4428c902747c2c11cd7"
+SRC_URI += "git://github.com/ghodss/yaml;name=ghodss-yaml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ghodss/yaml"
+
+# github.com/gofrs/flock v0.8.1
+# [1] git ls-remote https://github.com/gofrs/flock 6f010d1acea74a32f2f2066bfe324c08bbee30e3
+SRCREV_flock="6f010d1acea74a32f2f2066bfe324c08bbee30e3"
+SRC_URI += "git://github.com/gofrs/flock;name=flock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gofrs/flock"
+
+# github.com/moby/locker v1.0.1
+# [1] git ls-remote https://github.com/moby/locker 281af2d563954745bea9d1487c965f24d30742fe
+SRCREV_locker="281af2d563954745bea9d1487c965f24d30742fe"
+SRC_URI += "git://github.com/moby/locker;name=locker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/locker"
+
+# github.com/pierrec/lz4 v2.6.0+incompatible
+# [1] git ls-remote https://github.com/pierrec/lz4 0e583d326e0ec6b9c1ad223188dc709af385408e
+SRCREV_lz4="0e583d326e0ec6b9c1ad223188dc709af385408e"
+SRC_URI += "git://github.com/pierrec/lz4;name=lz4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pierrec/lz4"
+
+# github.com/spf13/cobra v1.8.0
+# [1] git ls-remote https://github.com/spf13/cobra a0a6ae020bb3899ff0276067863e50523f897370
+SRCREV_cobra="a0a6ae020bb3899ff0276067863e50523f897370"
+SRC_URI += "git://github.com/spf13/cobra;name=cobra;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/cobra"
+
+# github.com/go-logr/logr v1.4.1
+# [1] git ls-remote https://github.com/go-logr/logr dcdc3f2cd12e8a5c4e2a6712d6958c90e2e5bd98
+SRCREV_logr="dcdc3f2cd12e8a5c4e2a6712d6958c90e2e5bd98"
+SRC_URI += "git://github.com/go-logr/logr;name=logr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/logr"
+
+# github.com/go-logr/stdr v1.2.3-0.20220714215716-96bad1d688c5
+# [1] git ls-remote https://github.com/go-logr/stdr 96bad1d688c524409b0da98c82fb7d3d51e60639
+SRCREV_stdr="96bad1d688c524409b0da98c82fb7d3d51e60639"
+SRC_URI += "git://github.com/go-logr/stdr;name=stdr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/stdr"
+
+# github.com/go-test/deep v1.0.7
+# [1] git ls-remote https://github.com/go-test/deep c733f5ed5136b7437e29ac91bb97c653af3694b5
+SRCREV_deep="c733f5ed5136b7437e29ac91bb97c653af3694b5"
+SRC_URI += "git://github.com/go-test/deep;name=deep;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-test/deep"
+
+# github.com/otiai10/copy v1.7.0
+# [1] git ls-remote https://github.com/otiai10/copy 323db161ae97db91e6e13dbcda403fdb29c3fff8
+SRCREV_copy="323db161ae97db91e6e13dbcda403fdb29c3fff8"
+SRC_URI += "git://github.com/otiai10/copy;name=copy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/otiai10/copy"
+
+# lukechampine.com/blake3 v1.2.1
+# [1] git ls-remote https://github.com/lukechampine/blake3 6e4325968f64ca24b1bbc8fbf08ea320d17ebfa0
+SRCREV_blake3="6e4325968f64ca24b1bbc8fbf08ea320d17ebfa0"
+SRC_URI += "git://github.com/lukechampine/blake3;name=blake3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/lukechampine.com/blake3"
+
+# github.com/Rican7/retry v0.1.0
+# [1] git ls-remote https://github.com/Rican7/retry 28d17f812805614e76f170aa3c8698155ea8e019
+SRCREV_retry="28d17f812805614e76f170aa3c8698155ea8e019"
+SRC_URI += "git://github.com/Rican7/retry;name=retry;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Rican7/retry"
+
+# github.com/beorn7/perks v1.0.1
+# [1] git ls-remote https://github.com/beorn7/perks 37c8de3658fcb183f997c4e13e8337516ab753e6
+SRCREV_perks="37c8de3658fcb183f997c4e13e8337516ab753e6"
+SRC_URI += "git://github.com/beorn7/perks;name=perks;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/beorn7/perks"
+
+# github.com/blang/semver v3.5.1+incompatible
+# [1] git ls-remote https://github.com/blang/semver 2ee87856327ba09384cabd113bc6b5d174e9ec0f
+SRCREV_semver="2ee87856327ba09384cabd113bc6b5d174e9ec0f"
+SRC_URI += "git://github.com/blang/semver;name=semver;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/blang/semver"
+
+# github.com/google/btree v1.1.2
+# [1] git ls-remote https://github.com/google/btree 8e29150ba321eef204059de2ab494f179b6cff2c
+SRCREV_btree="8e29150ba321eef204059de2ab494f179b6cff2c"
+SRC_URI += "git://github.com/google/btree;name=btree;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/btree"
+
+# github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f
+# [1] git ls-remote https://github.com/google/pprof 407c9e7a662f39c592c77f0db959db282b687a32
+SRCREV_pprof="407c9e7a662f39c592c77f0db959db282b687a32"
+SRC_URI += "git://github.com/google/pprof;name=pprof;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/pprof"
+
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+# [1] git ls-remote https://github.com/google/shlex e7afc7fbc51079733e9468cdfd1efcd7d196cd1d
+SRCREV_shlex="e7afc7fbc51079733e9468cdfd1efcd7d196cd1d"
+SRC_URI += "git://github.com/google/shlex;name=shlex;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/shlex"
+
+# github.com/jackc/pgx/v5 v5.4.2
+# [1] git ls-remote https://github.com/jackc/pgx 038fc448c1cc91b9372a6a0d151789f41536f033
+SRCREV_pgx-v5="038fc448c1cc91b9372a6a0d151789f41536f033"
+SRC_URI += "git://github.com/jackc/pgx;name=pgx-v5;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jackc/pgx/v5"
+
+# github.com/miekg/pkcs11 v1.1.1
+# [1] git ls-remote https://github.com/miekg/pkcs11 f3481918a208bd212aa995a41f92d786eb418a7d
+SRCREV_pkcs11="f3481918a208bd212aa995a41f92d786eb418a7d"
+SRC_URI += "git://github.com/miekg/pkcs11;name=pkcs11;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/miekg/pkcs11"
+
+# github.com/morikuni/aec v1.0.0
+# [1] git ls-remote https://github.com/morikuni/aec 39771216ff4c63d11f5e604076f9c45e8be1067b
+SRCREV_aec="39771216ff4c63d11f5e604076f9c45e8be1067b"
+SRC_URI += "git://github.com/morikuni/aec;name=aec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/morikuni/aec"
+
+# github.com/nats-io/nuid v1.0.1
+# [1] git ls-remote https://github.com/nats-io/nuid 4b96681fa6d28dd0ab5fe79bac63b3a493d9ee94
+SRCREV_nuid="4b96681fa6d28dd0ab5fe79bac63b3a493d9ee94"
+SRC_URI += "git://github.com/nats-io/nuid;name=nuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/nuid"
+
+# github.com/docker/docker v24.0.0-rc.2.0.20230801142700-69c9adb7d386+incompatible
+# [1] git ls-remote https://github.com/moby/moby 69c9adb7d3868cb0560b1ffcef798015c5a70510
+SRCREV_docker="69c9adb7d3868cb0560b1ffcef798015c5a70510"
+SRC_URI += "git://github.com/moby/moby;name=docker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker"
+
+# github.com/rancher/lasso v0.0.0-20230830164424-d684fdeb6f29
+# [1] git ls-remote https://github.com/rancher/lasso d684fdeb6f29e221289c6f59fdc390b6adbaaccf
+SRCREV_lasso="d684fdeb6f29e221289c6f59fdc390b6adbaaccf"
+SRC_URI += "git://github.com/rancher/lasso;name=lasso;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rancher/lasso"
+
+# github.com/k3s-io/spegel v0.0.17-0.20240109004735-9466a5529330
+# [1] git ls-remote https://github.com/k3s-io/spegel 9466a55293301075a2d1613a3744c6bf45342e8b
+SRCREV_spegel="9466a55293301075a2d1613a3744c6bf45342e8b"
+SRC_URI += "git://github.com/k3s-io/spegel;name=spegel;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/spegel"
+
+# github.com/gin-gonic/gin v1.9.1
+# [1] git ls-remote https://github.com/gin-gonic/gin 4ea0e648e38a63d6caff14100f5eab5c50912bcd
+SRCREV_gin="4ea0e648e38a63d6caff14100f5eab5c50912bcd"
+SRC_URI += "git://github.com/gin-gonic/gin;name=gin;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gin-gonic/gin"
+
+# github.com/goccy/go-json v0.10.2
+# [1] git ls-remote https://github.com/goccy/go-json 8e8cdeacf2f2faef082f32848138f0f9af7cfb66
+SRCREV_go-json="8e8cdeacf2f2faef082f32848138f0f9af7cfb66"
+SRC_URI += "git://github.com/goccy/go-json;name=go-json;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/goccy/go-json"
+
+# github.com/golang/snappy v0.0.4
+# [1] git ls-remote https://github.com/golang/snappy 544b4180ac705b7605231d4a4550a1acb22a19fe
+SRCREV_snappy="544b4180ac705b7605231d4a4550a1acb22a19fe"
+SRC_URI += "git://github.com/golang/snappy;name=snappy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/snappy"
+
+# github.com/koron/go-ssdp v0.0.4
+# [1] git ls-remote https://github.com/koron/go-ssdp 615e2904c24d115f20139e60b9ab5916b1dfd55d
+SRCREV_go-ssdp="615e2904c24d115f20139e60b9ab5916b1dfd55d"
+SRC_URI += "git://github.com/koron/go-ssdp;name=go-ssdp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/koron/go-ssdp"
+
+# github.com/libp2p/go-nat v0.2.0
+# [1] git ls-remote https://github.com/libp2p/go-nat 14ce74b6949ca4d3f4889568e20840bdf0b05009
+SRCREV_go-nat="14ce74b6949ca4d3f4889568e20840bdf0b05009"
+SRC_URI += "git://github.com/libp2p/go-nat;name=go-nat;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-nat"
+
+# github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc
+# [1] git ls-remote https://github.com/mikioh/tcpopt 172688c1accceb1c8699343c22838f55e4b662ca
+SRCREV_tcpopt="172688c1accceb1c8699343c22838f55e4b662ca"
+SRC_URI += "git://github.com/mikioh/tcpopt;name=tcpopt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mikioh/tcpopt"
+
+# github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58
+# [1] git ls-remote https://github.com/pbnjay/memory 7b4eea64cf580186c0eceb10dc94ba3a098af46c
+SRCREV_memory="7b4eea64cf580186c0eceb10dc94ba3a098af46c"
+SRC_URI += "git://github.com/pbnjay/memory;name=memory;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pbnjay/memory"
+
+# github.com/quic-go/qpack v0.4.0
+# [1] git ls-remote https://github.com/quic-go/qpack 3e7287cc7ce655141583b8511fbe09800d4ba896
+SRCREV_qpack="3e7287cc7ce655141583b8511fbe09800d4ba896"
+SRC_URI += "git://github.com/quic-go/qpack;name=qpack;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/quic-go/qpack"
+
+# github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e
+# [1] git ls-remote https://github.com/armon/circbuf bbbad097214e2918d8543d5201d12bfd7bca254d
+SRCREV_circbuf="bbbad097214e2918d8543d5201d12bfd7bca254d"
+SRC_URI += "git://github.com/armon/circbuf;name=circbuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/armon/circbuf"
+
+# github.com/gogo/protobuf v1.3.2
+# [1] git ls-remote https://github.com/gogo/protobuf b03c65ea87cdc3521ede29f62fe3ce239267c1bc
+SRCREV_protobuf="b03c65ea87cdc3521ede29f62fe3ce239267c1bc"
+SRC_URI += "git://github.com/gogo/protobuf;name=protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gogo/protobuf"
+
+# github.com/google/cel-go v0.16.1
+# [1] git ls-remote https://github.com/google/cel-go 59a1b5d69d8d826a02e8e3d7911121ea60cba987
+SRCREV_cel-go="59a1b5d69d8d826a02e8e3d7911121ea60cba987"
+SRC_URI += "git://github.com/google/cel-go;name=cel-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/cel-go"
+
+# github.com/google/go-cmp v0.6.0
+# [1] git ls-remote https://github.com/google/go-cmp c3ad8435e7bef96af35732bc0789e5a2278c6d5f
+SRCREV_go-cmp="c3ad8435e7bef96af35732bc0789e5a2278c6d5f"
+SRC_URI += "git://github.com/google/go-cmp;name=go-cmp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/go-cmp"
+
+# github.com/google/gofuzz v1.2.0
+# [1] git ls-remote https://github.com/google/gofuzz 379e164120fbc98885a8f494b5aa41ba94f64c56
+SRCREV_gofuzz="379e164120fbc98885a8f494b5aa41ba94f64c56"
+SRC_URI += "git://github.com/google/gofuzz;name=gofuzz;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gofuzz"
+
+# github.com/google/s2a-go v0.1.7
+# [1] git ls-remote https://github.com/google/s2a-go 141996cc2c0b07d53f1970aa1b2e8e5dde4a7a52
+SRCREV_s2a-go="141996cc2c0b07d53f1970aa1b2e8e5dde4a7a52"
+SRC_URI += "git://github.com/google/s2a-go;name=s2a-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/s2a-go"
+
+# github.com/imdario/mergo v0.3.16
+# [1] git ls-remote https://github.com/darccio/mergo 14fe2b165b83359196f820886a2b24f2771729e9
+SRCREV_mergo="14fe2b165b83359196f820886a2b24f2771729e9"
+SRC_URI += "git://github.com/darccio/mergo;name=mergo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/imdario/mergo"
+
+# github.com/nats-io/nkeys v0.4.6
+# [1] git ls-remote https://github.com/nats-io/nkeys 62e5d8c7c4af84283b6535bcbf1300ab25b45e2d
+SRCREV_nkeys="62e5d8c7c4af84283b6535bcbf1300ab25b45e2d"
+SRC_URI += "git://github.com/nats-io/nkeys;name=nkeys;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/nkeys"
+
+# github.com/soheilhy/cmux v0.1.5
+# [1] git ls-remote https://github.com/soheilhy/cmux 5ec6847320e53b5fee0ab9a4757b56625a946c85
+SRCREV_cmux="5ec6847320e53b5fee0ab9a4757b56625a946c85"
+SRC_URI += "git://github.com/soheilhy/cmux;name=cmux;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/soheilhy/cmux"
+
+# github.com/tidwall/btree v1.6.0
+# [1] git ls-remote https://github.com/tidwall/btree c538c0ce1d47ebada0c423fd430978ba274d7d68
+SRCREV_tidwall-btree="c538c0ce1d47ebada0c423fd430978ba274d7d68"
+SRC_URI += "git://github.com/tidwall/btree;name=tidwall-btree;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tidwall/btree"
+
+# github.com/urfave/cli/v2 v2.23.5
+# [1] git ls-remote https://github.com/urfave/cli 600ef6e4dd5db1819a8eb0b453487bf1c0e59099
+SRCREV_cli-v2="600ef6e4dd5db1819a8eb0b453487bf1c0e59099"
+SRC_URI += "git://github.com/urfave/cli;name=cli-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/urfave/cli/v2"
+
+# go.opentelemetry.io/otel v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_otel="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otel;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel"
+
+# github.com/containerd/zfs v1.1.0
+# [1] git ls-remote https://github.com/containerd/zfs 26134297cde4138b412644d6819c20b105472991
+SRCREV_zfs="26134297cde4138b412644d6819c20b105472991"
+SRC_URI += "git://github.com/containerd/zfs;name=zfs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/zfs"
+
+# github.com/ipfs/go-log/v2 v2.5.1
+# [1] git ls-remote https://github.com/ipfs/go-log 8625e3ec81bdeb96627de192e6fe21eab5896603
+SRCREV_go-log-v2="8625e3ec81bdeb96627de192e6fe21eab5896603"
+SRC_URI += "git://github.com/ipfs/go-log;name=go-log-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-log/v2"
+
+# github.com/onsi/ginkgo/v2 v2.11.0
+# [1] git ls-remote https://github.com/onsi/ginkgo 5c32b2a6408b866b04774abad81eca2274f4fb5b
+SRCREV_ginkgo-v2="5c32b2a6408b866b04774abad81eca2274f4fb5b"
+SRC_URI += "git://github.com/onsi/ginkgo;name=ginkgo-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/onsi/ginkgo/v2"
+
+# github.com/robfig/cron/v3 v3.0.1
+# [1] git ls-remote https://github.com/robfig/cron ccba498c397bb90a9c84945bbb0f7af2d72b6309
+SRCREV_cron-v3="ccba498c397bb90a9c84945bbb0f7af2d72b6309"
+SRC_URI += "git://github.com/robfig/cron;name=cron-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/robfig/cron/v3"
+
+# github.com/k3s-io/klog/v2 v2.100.1-k3s1
+# [1] git ls-remote https://github.com/k3s-io/klog 977d5aa511a87a6cfa1d251772bcd5344c8d1280
+SRCREV_klog-v2="977d5aa511a87a6cfa1d251772bcd5344c8d1280"
+SRC_URI += "git://github.com/k3s-io/klog;name=klog-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/klog/v2"
+
+# github.com/leodido/go-urn v1.2.4
+# [1] git ls-remote https://github.com/leodido/go-urn 87e1d5ed73ec8689aa799a976831dcf6c81c8c98
+SRCREV_go-urn="87e1d5ed73ec8689aa799a976831dcf6c81c8c98"
+SRC_URI += "git://github.com/leodido/go-urn;name=go-urn;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/leodido/go-urn"
+
+# github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b
+# [1] git ls-remote https://github.com/mikioh/tcpinfo 30a79bb1804bc47fa7fe29928c9109f368792a9e
+SRCREV_tcpinfo="30a79bb1804bc47fa7fe29928c9109f368792a9e"
+SRC_URI += "git://github.com/mikioh/tcpinfo;name=tcpinfo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mikioh/tcpinfo"
+
+# github.com/mr-tron/base58 v1.2.0
+# [1] git ls-remote https://github.com/mr-tron/base58 cd0e5141f51dfcadb8311fd8e495eb11126a8010
+SRCREV_base58="cd0e5141f51dfcadb8311fd8e495eb11126a8010"
+SRC_URI += "git://github.com/mr-tron/base58;name=base58;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mr-tron/base58"
+
+# github.com/polydawn/refmt v0.89.0
+# [1] git ls-remote https://github.com/polydawn/refmt ad1efcb83999082a4ec5ac34b9d5c08bc388faf3
+SRCREV_refmt="ad1efcb83999082a4ec5ac34b9d5c08bc388faf3"
+SRC_URI += "git://github.com/polydawn/refmt;name=refmt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/polydawn/refmt"
+
+# github.com/containerd/log v0.1.0
+# [1] git ls-remote https://github.com/containerd/log 0fc1e28871fdf2786e2cc51bbe4133db6547a199
+SRCREV_log="0fc1e28871fdf2786e2cc51bbe4133db6547a199"
+SRC_URI += "git://github.com/containerd/log;name=log;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/log"
+
+# github.com/containerd/nri v0.4.0
+# [1] git ls-remote https://github.com/containerd/nri e2d9a1b06b9d0916b0074340990df0fbe3388dd1
+SRCREV_nri="e2d9a1b06b9d0916b0074340990df0fbe3388dd1"
+SRC_URI += "git://github.com/containerd/nri;name=nri;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/nri"
+
+# github.com/coreos/go-oidc v2.2.1+incompatible
+# [1] git ls-remote https://github.com/coreos/go-oidc 8d771559cf6e5111c9b9159810d0e4538e7cdc82
+SRCREV_go-oidc="8d771559cf6e5111c9b9159810d0e4538e7cdc82"
+SRC_URI += "git://github.com/coreos/go-oidc;name=go-oidc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-oidc"
+
+# github.com/godbus/dbus/v5 v5.1.0
+# [1] git ls-remote https://github.com/godbus/dbus e523abc905595cf17fb0001a7d77eaaddfaa216d
+SRCREV_dbus-v5="e523abc905595cf17fb0001a7d77eaaddfaa216d"
+SRC_URI += "git://github.com/godbus/dbus;name=dbus-v5;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/godbus/dbus/v5"
+
+# github.com/minio/md5-simd v1.1.2
+# [1] git ls-remote https://github.com/minio/md5-simd 776275e0c9a74ceebbd50fe5c1d61b0c80c608df
+SRCREV_md5-simd="776275e0c9a74ceebbd50fe5c1d61b0c80c608df"
+SRC_URI += "git://github.com/minio/md5-simd;name=md5-simd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/minio/md5-simd"
+
+# github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
+# [1] git ls-remote https://github.com/mohae/deepcopy c48cc78d482608239f6c4c92a4abd87eb8761c90
+SRCREV_deepcopy="c48cc78d482608239f6c4c92a4abd87eb8761c90"
+SRC_URI += "git://github.com/mohae/deepcopy;name=deepcopy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mohae/deepcopy"
+
+# github.com/nats-io/jsm.go v0.0.31-0.20220317133147-fe318f464eee
+# [1] git ls-remote https://github.com/nats-io/jsm.go fe318f464eee9ceef6120ea851e5cf94a0497ac6
+SRCREV_jsm.go="fe318f464eee9ceef6120ea851e5cf94a0497ac6"
+SRC_URI += "git://github.com/nats-io/jsm.go;name=jsm.go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/jsm.go"
+
+# github.com/nats-io/jwt/v2 v2.5.3
+# [1] git ls-remote https://github.com/nats-io/jwt 457367366f2ff72a3fefeed38b56a1da281476fb
+SRCREV_jwt-v2="457367366f2ff72a3fefeed38b56a1da281476fb"
+SRC_URI += "git://github.com/nats-io/jwt;name=jwt-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/jwt/v2"
+
+# github.com/rubiojr/go-vhd v0.0.0-20200706105327-02e210299021
+# [1] git ls-remote https://github.com/rubiojr/go-vhd 02e2102990218160c1cb608a3e9679312a3b8425
+SRCREV_go-vhd="02e2102990218160c1cb608a3e9679312a3b8425"
+SRC_URI += "git://github.com/rubiojr/go-vhd;name=go-vhd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rubiojr/go-vhd"
+
+# github.com/vmware/govmomi v0.30.6
+# [1] git ls-remote https://github.com/vmware/govmomi 55614148d1fe0df8ac8e04174ffd2344e374adb8
+SRCREV_govmomi="55614148d1fe0df8ac8e04174ffd2344e374adb8"
+SRC_URI += "git://github.com/vmware/govmomi;name=govmomi;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vmware/govmomi"
+
+# github.com/xlab/treeprint v1.2.0
+# [1] git ls-remote https://github.com/xlab/treeprint 044005a3b405f660f109e066d9f589755835c2ea
+SRCREV_treeprint="044005a3b405f660f109e066d9f589755835c2ea"
+SRC_URI += "git://github.com/xlab/treeprint;name=treeprint;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xlab/treeprint"
+
+# github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673
+# [1] git ls-remote https://github.com/xrash/smetrics 039620a656736e6ad994090895784a7af15e0b80
+SRCREV_smetrics="039620a656736e6ad994090895784a7af15e0b80"
+SRC_URI += "git://github.com/xrash/smetrics;name=smetrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xrash/smetrics"
+
+# sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3
+# [1] git ls-remote https://github.com/kubernetes-sigs/kustomize 6ce0bf390ce3dae580947a2b739da3306c675eef
+SRCREV_kustomize-api="6ce0bf390ce3dae580947a2b739da3306c675eef"
+SRC_URI += "git://github.com/kubernetes-sigs/kustomize;name=kustomize-api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/kustomize/api"
+
+# github.com/blang/semver/v4 v4.0.0
+# [1] git ls-remote https://github.com/blang/semver af3461a9cbcf1f3f5889d21b83f5ef63880c33a8
+SRCREV_v4="af3461a9cbcf1f3f5889d21b83f5ef63880c33a8"
+SRC_URI += "git://github.com/blang/semver;name=v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/blang/semver/v4"
+
+# github.com/containerd/aufs v1.0.0
+# [1] git ls-remote https://github.com/containerd/aufs fb0192dcb2c0bbfce3bd8756fc88026870c0354d
+SRCREV_aufs="fb0192dcb2c0bbfce3bd8756fc88026870c0354d"
+SRC_URI += "git://github.com/containerd/aufs;name=aufs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/aufs"
+
+# github.com/google/cadvisor v0.47.3
+# [1] git ls-remote https://github.com/google/cadvisor c5730c5a72b527a724e7333d0e2f5b9a3ce5cf4d
+SRCREV_cadvisor="c5730c5a72b527a724e7333d0e2f5b9a3ce5cf4d"
+SRC_URI += "git://github.com/google/cadvisor;name=cadvisor;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/cadvisor"
+
+# github.com/rancher/wharfie v0.6.4
+# [1] git ls-remote https://github.com/rancher/wharfie afa72eb3bb2e8fc03366c87f4a51b6894ea65b2e
+SRCREV_wharfie="afa72eb3bb2e8fc03366c87f4a51b6894ea65b2e"
+SRC_URI += "git://github.com/rancher/wharfie;name=wharfie;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rancher/wharfie"
+
+# github.com/sirupsen/logrus v1.9.3
+# [1] git ls-remote https://github.com/sirupsen/logrus d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd
+SRCREV_logrus="d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd"
+SRC_URI += "git://github.com/sirupsen/logrus;name=logrus;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/sirupsen/logrus"
+
+# github.com/bytedance/sonic v1.9.1
+# [1] git ls-remote https://github.com/bytedance/sonic d7db21691cb8c0380c14a41037c4ce67087260c5
+SRCREV_sonic="d7db21691cb8c0380c14a41037c4ce67087260c5"
+SRC_URI += "git://github.com/bytedance/sonic;name=sonic;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/bytedance/sonic"
+
+# github.com/elastic/gosigar v0.14.2
+# [1] git ls-remote https://github.com/elastic/gosigar 9d6c92629470099edd40ead9a3d8cf1b38020ec6
+SRCREV_gosigar="9d6c92629470099edd40ead9a3d8cf1b38020ec6"
+SRC_URI += "git://github.com/elastic/gosigar;name=gosigar;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/elastic/gosigar"
+
+# github.com/gin-contrib/sse v0.1.0
+# [1] git ls-remote https://github.com/gin-contrib/sse 54d8467d122d380a14768b6b4e5cd7ca4755938f
+SRCREV_sse="54d8467d122d380a14768b6b4e5cd7ca4755938f"
+SRC_URI += "git://github.com/gin-contrib/sse;name=sse;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gin-contrib/sse"
+
+# github.com/google/gopacket v1.1.19
+# [1] git ls-remote https://github.com/google/gopacket a9779d139771f6a06fc983b18e0efd23ca30222f
+SRCREV_gopacket="a9779d139771f6a06fc983b18e0efd23ca30222f"
+SRC_URI += "git://github.com/google/gopacket;name=gopacket;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gopacket"
+
+# github.com/libp2p/go-msgio v0.3.0
+# [1] git ls-remote https://github.com/libp2p/go-msgio 12f8f7a72c7dbbb246151e4c98b5a6d59e27e0c6
+SRCREV_go-msgio="12f8f7a72c7dbbb246151e4c98b5a6d59e27e0c6"
+SRC_URI += "git://github.com/libp2p/go-msgio;name=go-msgio;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-msgio"
+
+# github.com/mattn/go-isatty v0.0.19
+# [1] git ls-remote https://github.com/mattn/go-isatty c067b4f3df49dfc0f376d884e16cfd784ea1874b
+SRCREV_go-isatty="c067b4f3df49dfc0f376d884e16cfd784ea1874b"
+SRC_URI += "git://github.com/mattn/go-isatty;name=go-isatty;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-isatty"
+
+# github.com/quic-go/quic-go v0.38.2
+# [1] git ls-remote https://github.com/quic-go/quic-go 9aaefe19fc3dc8c8917cc87e6128bb56d9e9e6cc
+SRCREV_quic-go="9aaefe19fc3dc8c8917cc87e6128bb56d9e9e6cc"
+SRC_URI += "git://github.com/quic-go/quic-go;name=quic-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/quic-go/quic-go"
+
+# github.com/ugorji/go/codec v1.2.11
+# [1] git ls-remote https://github.com/ugorji/go 29258c4dfb14a196b559b89bbee11927b830537e
+SRCREV_codec="29258c4dfb14a196b559b89bbee11927b830537e"
+SRC_URI += "git://github.com/ugorji/go;name=codec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ugorji/go/codec"
+
+# github.com/xenitab/pkg/gin v0.0.9
+# [1] git ls-remote https://github.com/xenitab/pkg 9331fe68723313fdd444403a41999761a294c50f
+SRCREV_pkg-gin="9331fe68723313fdd444403a41999761a294c50f"
+SRC_URI += "git://github.com/xenitab/pkg;name=pkg-gin;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xenitab/pkg/gin"
+
+# github.com/containerd/fifo v1.1.0
+# [1] git ls-remote https://github.com/containerd/fifo 151b205263c29d471e0d55c787d2ce9f5343fd46
+SRCREV_fifo="151b205263c29d471e0d55c787d2ce9f5343fd46"
+SRC_URI += "git://github.com/containerd/fifo;name=fifo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/fifo"
+
+# github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
+# [1] git ls-remote https://github.com/davecgh/go-spew d8f796af33cc11cb798c1aaeb27a4ebc5099927d
+SRCREV_go-spew="d8f796af33cc11cb798c1aaeb27a4ebc5099927d"
+SRC_URI += "git://github.com/davecgh/go-spew;name=go-spew;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/davecgh/go-spew"
+
+# github.com/docker/go-units v0.5.0
+# [1] git ls-remote https://github.com/docker/go-units e682442797b36348f8e1f98defdbf32bac0b6c6f
+SRCREV_go-units="e682442797b36348f8e1f98defdbf32bac0b6c6f"
+SRC_URI += "git://github.com/docker/go-units;name=go-units;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-units"
+
+# github.com/fatih/camelcase v1.0.0
+# [1] git ls-remote https://github.com/fatih/camelcase 44e46d280b43ec1531bb25252440e34f1b800b65
+SRCREV_camelcase="44e46d280b43ec1531bb25252440e34f1b800b65"
+SRC_URI += "git://github.com/fatih/camelcase;name=camelcase;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fatih/camelcase"
+
+# github.com/go-openapi/swag v0.22.4
+# [1] git ls-remote https://github.com/go-openapi/swag f28dd7aae5534e2e3681204c90019f1dda8a7393
+SRCREV_swag="f28dd7aae5534e2e3681204c90019f1dda8a7393"
+SRC_URI += "git://github.com/go-openapi/swag;name=swag;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/swag"
+
+# github.com/golang/protobuf v1.5.3
+# [1] git ls-remote https://github.com/golang/protobuf 5d5e8c018a13017f9d5b8bf4fad64aaa42a87308
+SRCREV_golang-protobuf="5d5e8c018a13017f9d5b8bf4fad64aaa42a87308"
+SRC_URI += "git://github.com/golang/protobuf;name=golang-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/protobuf"
+
+# github.com/intel/goresctrl v0.3.0
+# [1] git ls-remote https://github.com/intel/goresctrl c40cbba82c8e94fe89926174efc817586bb3950a
+SRCREV_goresctrl="c40cbba82c8e94fe89926174efc817586bb3950a"
+SRC_URI += "git://github.com/intel/goresctrl;name=goresctrl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/intel/goresctrl"
+
+# github.com/jackc/pgerrcode v0.0.0-20220416144525-469b46aa5efa
+# [1] git ls-remote https://github.com/jackc/pgerrcode 469b46aa5efae8a229646096c4d7026bf9ff89fe
+SRCREV_pgerrcode="469b46aa5efae8a229646096c4d7026bf9ff89fe"
+SRC_URI += "git://github.com/jackc/pgerrcode;name=pgerrcode;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jackc/pgerrcode"
+
+# github.com/mailru/easyjson v0.7.7
+# [1] git ls-remote https://github.com/mailru/easyjson c120ca7ced6051261161ce15e8f1542a4b2567fc
+SRCREV_easyjson="c120ca7ced6051261161ce15e8f1542a4b2567fc"
+SRC_URI += "git://github.com/mailru/easyjson;name=easyjson;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mailru/easyjson"
+
+# github.com/mdlayher/socket v0.4.1
+# [1] git ls-remote https://github.com/mdlayher/socket 024cdfb30ba417ac6f1b27bb5189a8099787dcf7
+SRCREV_socket="024cdfb30ba417ac6f1b27bb5189a8099787dcf7"
+SRC_URI += "git://github.com/mdlayher/socket;name=socket;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mdlayher/socket"
+
+# github.com/moby/spdystream v0.2.0
+# [1] git ls-remote https://github.com/moby/spdystream dbc715126c0e3fa07721879c6d265b2b82c71e5b
+SRCREV_spdystream="dbc715126c0e3fa07721879c6d265b2b82c71e5b"
+SRC_URI += "git://github.com/moby/spdystream;name=spdystream;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/spdystream"
+
+# github.com/moby/sys/signal v0.7.0
+# [1] git ls-remote https://github.com/moby/sys b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5
+SRCREV_signal="b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5"
+SRC_URI += "git://github.com/moby/sys;name=signal;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/signal"
+
+# github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f
+# [1] git ls-remote https://github.com/mxk/go-flowrate cca7078d478f8520f85629ad7c68962d31ed7682
+SRCREV_go-flowrate="cca7078d478f8520f85629ad7c68962d31ed7682"
+SRC_URI += "git://github.com/mxk/go-flowrate;name=go-flowrate;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mxk/go-flowrate"
+
+# github.com/nats-io/nats.go v1.31.0
+# [1] git ls-remote https://github.com/nats-io/nats.go 8712190da1d17ab0c4719bffa7c0174214c56e6c
+SRCREV_nats.go="8712190da1d17ab0c4719bffa7c0174214c56e6c"
+SRC_URI += "git://github.com/nats-io/nats.go;name=nats.go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/nats.go"
+
+# github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510
+# [1] git ls-remote https://github.com/xiang90/probing a49e3df8f510ee8b42e68345ca4636dbb161bd0a
+SRCREV_probing="a49e3df8f510ee8b42e68345ca4636dbb161bd0a"
+SRC_URI += "git://github.com/xiang90/probing;name=probing;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xiang90/probing"
+
+# golang.zx2c4.com/wireguard v0.0.0-20230325221338-052af4a8072b
+# [1] git ls-remote https://git.zx2c4.com/wireguard-go 052af4a8072bbbd3bfe7edf46fe3c1b350f71f08
+SRCREV_wireguard="052af4a8072bbbd3bfe7edf46fe3c1b350f71f08"
+SRC_URI += "git://git.zx2c4.com/wireguard-go;name=wireguard;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.zx2c4.com/wireguard"
+
+# google.golang.org/genproto v0.0.0-20230525234035-dd9d682886f9
+# [1] git ls-remote https://github.com/googleapis/go-genproto dd9d682886f99d242574cd3eaea438ce7ea66399
+SRCREV_genproto="dd9d682886f99d242574cd3eaea438ce7ea66399"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=genproto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto"
+
+# google.golang.org/protobuf v1.31.0
+# [1] git ls-remote https://github.com/protocolbuffers/protobuf-go 68463f0e96c93bc19ef36ccd3adfe690bfdb568c
+SRCREV_google.golang.org-protobuf="68463f0e96c93bc19ef36ccd3adfe690bfdb568c"
+SRC_URI += "git://github.com/protocolbuffers/protobuf-go;name=google.golang.org-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/protobuf"
+
+# gopkg.in/square/go-jose.v2 v2.6.0
+# [1] git ls-remote https://github.com/square/go-jose a10ff54e00bc6e833bf549e04ae976f0fe8ea2fd
+SRCREV_go-jose.v2="a10ff54e00bc6e833bf549e04ae976f0fe8ea2fd"
+SRC_URI += "git://github.com/square/go-jose;name=go-jose.v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/square/go-jose.v2"
+
+# github.com/json-iterator/go v1.1.12
+# [1] git ls-remote https://github.com/json-iterator/go 024077e996b048517130b21ea6bf12aa23055d3d
+SRCREV_go="024077e996b048517130b21ea6bf12aa23055d3d"
+SRC_URI += "git://github.com/json-iterator/go;name=go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/json-iterator/go"
+
+# github.com/k3s-io/cri-tools v1.26.0-rc.0-k3s1
+# [1] git ls-remote https://github.com/k3s-io/cri-tools 029d9bbf8bfb43c46a80b013cb6bf163739df0c8
+SRCREV_cri-tools="029d9bbf8bfb43c46a80b013cb6bf163739df0c8"
+SRC_URI += "git://github.com/k3s-io/cri-tools;name=cri-tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/cri-tools"
+
+# github.com/libp2p/go-libp2p v0.30.0
+# [1] git ls-remote https://github.com/libp2p/go-libp2p 37319a699f336e3e062c7894f44d47db3fea4dc2
+SRCREV_go-libp2p="37319a699f336e3e062c7894f44d47db3fea4dc2"
+SRC_URI += "git://github.com/libp2p/go-libp2p;name=go-libp2p;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p"
+
+# github.com/mattn/go-sqlite3 v1.14.19
+# [1] git ls-remote https://github.com/mattn/go-sqlite3 00b02e0ba98effd5f157d39216e244af8a807f9b
+SRCREV_go-sqlite3="00b02e0ba98effd5f157d39216e244af8a807f9b"
+SRC_URI += "git://github.com/mattn/go-sqlite3;name=go-sqlite3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-sqlite3"
+
+# github.com/rancher/wrangler v1.1.1-0.20230818201331-3604a6be798d
+# [1] git ls-remote https://github.com/rancher/wrangler 3604a6be798d0e52e1d935d61d57b4ecbd5dfb2a
+SRCREV_wrangler="3604a6be798d0e52e1d935d61d57b4ecbd5dfb2a"
+SRC_URI += "git://github.com/rancher/wrangler;name=wrangler;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rancher/wrangler"
+
+# github.com/stretchr/testify v1.8.4
+# [1] git ls-remote https://github.com/stretchr/testify f97607b89807936ac4ff96748d766cf4b9711f78
+SRCREV_testify="f97607b89807936ac4ff96748d766cf4b9711f78"
+SRC_URI += "git://github.com/stretchr/testify;name=testify;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/stretchr/testify"
+
+# github.com/jbenet/goprocess v0.1.4
+# [1] git ls-remote https://github.com/jbenet/goprocess 23d20c20149e1f362afda26f4500cb9d6393f0ad
+SRCREV_goprocess="23d20c20149e1f362afda26f4500cb9d6393f0ad"
+SRC_URI += "git://github.com/jbenet/goprocess;name=goprocess;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jbenet/goprocess"
+
+# github.com/syndtr/goleveldb v1.0.0
+# [1] git ls-remote https://github.com/syndtr/goleveldb 9d007e481048296f09f59bd19bb7ae584563cd95
+SRCREV_goleveldb="9d007e481048296f09f59bd19bb7ae584563cd95"
+SRC_URI += "git://github.com/syndtr/goleveldb;name=goleveldb;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/syndtr/goleveldb"
+
+# cloud.google.com/go/compute v1.23.3
+# [1] git ls-remote https://github.com/googleapis/google-cloud-go 2ba47cb7adfef32617eb11888331ccc2d2a0f84d
+SRCREV_compute="2ba47cb7adfef32617eb11888331ccc2d2a0f84d"
+SRC_URI += "git://github.com/googleapis/google-cloud-go;name=compute;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/cloud.google.com/go/compute"
+
+# github.com/containerd/ttrpc v1.2.2
+# [1] git ls-remote https://github.com/containerd/ttrpc ac26f8cbea1c440d451dd19a4a1b847fd073f3c3
+SRCREV_ttrpc="ac26f8cbea1c440d451dd19a4a1b847fd073f3c3"
+SRC_URI += "git://github.com/containerd/ttrpc;name=ttrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/ttrpc"
+
+# github.com/coreos/go-semver v0.3.1
+# [1] git ls-remote https://github.com/coreos/go-semver c16f28124668daf02b2a32a431dec2f183977ffc
+SRCREV_go-semver="c16f28124668daf02b2a32a431dec2f183977ffc"
+SRC_URI += "git://github.com/coreos/go-semver;name=go-semver;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-semver"
+
+# github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
+# [1] git ls-remote https://github.com/docker/go-events e31b211e4f1cd09aa76fe4ac244571fab96ae47f
+SRCREV_go-events="e31b211e4f1cd09aa76fe4ac244571fab96ae47f"
+SRC_URI += "git://github.com/docker/go-events;name=go-events;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-events"
+
+# github.com/go-errors/errors v1.4.2
+# [1] git ls-remote https://github.com/go-errors/errors 33d496f939bc762321a636d4035e15c302eb0b00
+SRCREV_go-errors-errors="33d496f939bc762321a636d4035e15c302eb0b00"
+SRC_URI += "git://github.com/go-errors/errors;name=go-errors-errors;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-errors/errors"
+
+# github.com/jackc/pgpassfile v1.0.0
+# [1] git ls-remote https://github.com/jackc/pgpassfile 99d8e8e28945ffceaf75b0299fcb2bb656b8a683
+SRCREV_pgpassfile="99d8e8e28945ffceaf75b0299fcb2bb656b8a683"
+SRC_URI += "git://github.com/jackc/pgpassfile;name=pgpassfile;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jackc/pgpassfile"
+
+# github.com/josharian/intern v1.0.0
+# [1] git ls-remote https://github.com/josharian/intern 8e6ff32b3e7c0b018c43953085fe2ac330fe9acd
+SRCREV_intern="8e6ff32b3e7c0b018c43953085fe2ac330fe9acd"
+SRC_URI += "git://github.com/josharian/intern;name=intern;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/josharian/intern"
+
+# github.com/josharian/native v1.1.0
+# [1] git ls-remote https://github.com/josharian/native c1e37c09b531b14ae12a501eb6fd529b31cecdaa
+SRCREV_native="c1e37c09b531b14ae12a501eb6fd529b31cecdaa"
+SRC_URI += "git://github.com/josharian/native;name=native;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/josharian/native"
+
+# github.com/lithammer/dedent v1.1.0
+# [1] git ls-remote https://github.com/lithammer/dedent 8478954c3bc893cf36c5ee7c822266b993a3b3ee
+SRCREV_dedent="8478954c3bc893cf36c5ee7c822266b993a3b3ee"
+SRC_URI += "git://github.com/lithammer/dedent;name=dedent;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/lithammer/dedent"
+
+# github.com/mdlayher/netlink v1.7.2
+# [1] git ls-remote https://github.com/mdlayher/netlink 657f7da1d9bd78d246ae610e0b5efc63a6a5f9e4
+SRCREV_mdlayher-netlink="657f7da1d9bd78d246ae610e0b5efc63a6a5f9e4"
+SRC_URI += "git://github.com/mdlayher/netlink;name=mdlayher-netlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mdlayher/netlink"
+
+# github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible
+# [1] git ls-remote https://github.com/mistifyio/go-zfs f784269be439d704d3dfa1906f45dd848fed2beb
+SRCREV_go-zfs="f784269be439d704d3dfa1906f45dd848fed2beb"
+SRC_URI += "git://github.com/mistifyio/go-zfs;name=go-zfs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mistifyio/go-zfs"
+
+# github.com/moby/sys/symlink v0.2.0
+# [1] git ls-remote https://github.com/moby/sys 03b9f8d59a07f5206a2264105f4903a222aea964
+SRCREV_symlink="03b9f8d59a07f5206a2264105f4903a222aea964"
+SRC_URI += "git://github.com/moby/sys;name=symlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/symlink"
+
+# github.com/vbatts/tar-split v0.11.5
+# [1] git ls-remote https://github.com/vbatts/tar-split 5ef0dd8243164ebacd755916a89d8085a5b6bb7f
+SRCREV_tar-split="5ef0dd8243164ebacd755916a89d8085a5b6bb7f"
+SRC_URI += "git://github.com/vbatts/tar-split;name=tar-split;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vbatts/tar-split"
+
+# google.golang.org/appengine v1.6.8
+# [1] git ls-remote https://github.com/golang/appengine aa58fcd18e4ab7ac816760ee266fa30a0907ab9e
+SRCREV_appengine="aa58fcd18e4ab7ac816760ee266fa30a0907ab9e"
+SRC_URI += "git://github.com/golang/appengine;name=appengine;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/appengine"
+
+# sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3
+# [1] git ls-remote https://github.com/kubernetes-sigs/kustomize 6ce0bf390ce3dae580947a2b739da3306c675eef
+SRCREV_kyaml="6ce0bf390ce3dae580947a2b739da3306c675eef"
+SRC_URI += "git://github.com/kubernetes-sigs/kustomize;name=kyaml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/kustomize/kyaml"
+
+# github.com/Microsoft/hcsshim v0.11.0
+# [1] git ls-remote https://github.com/microsoft/hcsshim 750e11bf07440fd1581413bdc1fc7731fa2d6d64
+SRCREV_hcsshim="750e11bf07440fd1581413bdc1fc7731fa2d6d64"
+SRC_URI += "git://github.com/microsoft/hcsshim;name=hcsshim;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/hcsshim"
+
+# github.com/k3s-io/containerd v1.7.11-k3s2
+# [1] git ls-remote https://github.com/k3s-io/containerd 64c566767b99d0bacf26fb6e2355775c413331c9
+SRCREV_containerd="64c566767b99d0bacf26fb6e2355775c413331c9"
+SRC_URI += "git://github.com/k3s-io/containerd;name=containerd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/containerd"
+
+# github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e
+# [1] git ls-remote https://github.com/coreos/go-systemd 95778dfbb74eb7e4dbaf43bf7d71809650ef8076
+SRCREV_go-systemd="95778dfbb74eb7e4dbaf43bf7d71809650ef8076"
+SRC_URI += "git://github.com/coreos/go-systemd;name=go-systemd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-systemd"
+
+# github.com/gorilla/websocket v1.5.0
+# [1] git ls-remote https://github.com/gorilla/websocket 9111bb834a68b893cebbbaed5060bdbc1d9ab7d2
+SRCREV_websocket="9111bb834a68b893cebbbaed5060bdbc1d9ab7d2"
+SRC_URI += "git://github.com/gorilla/websocket;name=websocket;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gorilla/websocket"
+
+# github.com/minio/minio-go/v7 v7.0.33
+# [1] git ls-remote https://github.com/minio/minio-go a80fee3343f12028079ae831a04b9583ba09c695
+SRCREV_v7="a80fee3343f12028079ae831a04b9583ba09c695"
+SRC_URI += "git://github.com/minio/minio-go;name=v7;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/minio/minio-go/v7"
+
+# github.com/yl2chen/cidranger v1.0.2
+# [1] git ls-remote https://github.com/yl2chen/cidranger 7ff5a0e84593dad6fbd50551343618d7956b3c71
+SRCREV_cidranger="7ff5a0e84593dad6fbd50551343618d7956b3c71"
+SRC_URI += "git://github.com/yl2chen/cidranger;name=cidranger;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/yl2chen/cidranger"
+
+# github.com/k3s-io/kubernetes v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kubernetes="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kubernetes;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes"
+
+# github.com/benbjohnson/clock v1.3.5
+# [1] git ls-remote https://github.com/benbjohnson/clock 96c602caabb567343046c08a8fca8560b4f00bb4
+SRCREV_clock="96c602caabb567343046c08a8fca8560b4f00bb4"
+SRC_URI += "git://github.com/benbjohnson/clock;name=clock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/benbjohnson/clock"
+
+# github.com/francoispqt/gojay v1.2.13
+# [1] git ls-remote https://github.com/francoispqt/gojay 1398296d938f9fae26750ddc2fe356b6d897f799
+SRCREV_gojay="1398296d938f9fae26750ddc2fe356b6d897f799"
+SRC_URI += "git://github.com/francoispqt/gojay;name=gojay;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/francoispqt/gojay"
+
+# github.com/ipfs/go-datastore v0.6.0
+# [1] git ls-remote https://github.com/ipfs/go-datastore 1de47089f5c72b61d91b5cd9043e49fe95771ac0
+SRCREV_go-datastore="1de47089f5c72b61d91b5cd9043e49fe95771ac0"
+SRC_URI += "git://github.com/ipfs/go-datastore;name=go-datastore;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-datastore"
+
+# github.com/raulk/go-watchdog v1.3.0
+# [1] git ls-remote https://github.com/raulk/go-watchdog 9c5e371109037bec1852ea63c9512a94307bfea0
+SRCREV_go-watchdog="9c5e371109037bec1852ea63c9512a94307bfea0"
+SRC_URI += "git://github.com/raulk/go-watchdog;name=go-watchdog;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/raulk/go-watchdog"
+
+# github.com/spaolacci/murmur3 v1.1.0
+# [1] git ls-remote https://github.com/spaolacci/murmur3 f09979ecbc725b9e6d41a297405f65e7e8804acc
+SRCREV_murmur3="f09979ecbc725b9e6d41a297405f65e7e8804acc"
+SRC_URI += "git://github.com/spaolacci/murmur3;name=murmur3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spaolacci/murmur3"
+
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+# [1] git ls-remote https://github.com/Azure/go-ansiterm d185dfc1b5a126116ea5a19e148e29d16b4574c9
+SRCREV_go-ansiterm="d185dfc1b5a126116ea5a19e148e29d16b4574c9"
+SRC_URI += "git://github.com/Azure/go-ansiterm;name=go-ansiterm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-ansiterm"
+
+# github.com/Azure/go-autorest v14.2.0+incompatible
+# [1] git ls-remote https://github.com/Azure/go-autorest e7b391b759b050d6719cc6fd8bb87b6dc038bca6
+SRCREV_go-autorest="e7b391b759b050d6719cc6fd8bb87b6dc038bca6"
+SRC_URI += "git://github.com/Azure/go-autorest;name=go-autorest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest"
+
+# github.com/avast/retry-go/v4 v4.3.2
+# [1] git ls-remote https://github.com/avast/retry-go c65eeae03ec06cb591b05d092457de9f691bb359
+SRCREV_retry-go-v4="c65eeae03ec06cb591b05d092457de9f691bb359"
+SRC_URI += "git://github.com/avast/retry-go;name=retry-go-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/avast/retry-go/v4"
+
+# github.com/cespare/xxhash/v2 v2.2.0
+# [1] git ls-remote https://github.com/cespare/xxhash a76eb16a93c1e30527c073ca831d9048b4b935f6
+SRCREV_xxhash-v2="a76eb16a93c1e30527c073ca831d9048b4b935f6"
+SRC_URI += "git://github.com/cespare/xxhash;name=xxhash-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cespare/xxhash/v2"
+
+# github.com/containerd/go-cni v1.1.9
+# [1] git ls-remote https://github.com/containerd/go-cni 6603d5bd8941d7f2026bb5627f6aa4ff434f859a
+SRCREV_go-cni="6603d5bd8941d7f2026bb5627f6aa4ff434f859a"
+SRC_URI += "git://github.com/containerd/go-cni;name=go-cni;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/go-cni"
+
+# github.com/docker/go-metrics v0.0.1
+# [1] git ls-remote https://github.com/docker/go-metrics b619b3592b65de4f087d9f16863a7e6ff905973c
+SRCREV_go-metrics="b619b3592b65de4f087d9f16863a7e6ff905973c"
+SRC_URI += "git://github.com/docker/go-metrics;name=go-metrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-metrics"
+
+# github.com/felixge/httpsnoop v1.0.4
+# [1] git ls-remote https://github.com/felixge/httpsnoop c5817c27ec125409c069052fdd171023c353501c
+SRCREV_httpsnoop="c5817c27ec125409c069052fdd171023c353501c"
+SRC_URI += "git://github.com/felixge/httpsnoop;name=httpsnoop;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/felixge/httpsnoop"
+
+# github.com/fsnotify/fsnotify v1.7.0
+# [1] git ls-remote https://github.com/fsnotify/fsnotify cfc9c4f277ea6ec18de92444b31983b183deb4fb
+SRCREV_fsnotify="cfc9c4f277ea6ec18de92444b31983b183deb4fb"
+SRC_URI += "git://github.com/fsnotify/fsnotify;name=fsnotify;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fsnotify/fsnotify"
+
+# github.com/golang-jwt/jwt/v4 v4.5.0
+# [1] git ls-remote https://github.com/golang-jwt/jwt 9358574a7a1a2c8d644f22b6e8de627ba85c58d0
+SRCREV_jwt-v4="9358574a7a1a2c8d644f22b6e8de627ba85c58d0"
+SRC_URI += "git://github.com/golang-jwt/jwt;name=jwt-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang-jwt/jwt/v4"
+
+# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+# [1] git ls-remote https://github.com/golang/groupcache 41bb18bfe9da5321badc438f91158cd790a33aa3
+SRCREV_groupcache="41bb18bfe9da5321badc438f91158cd790a33aa3"
+SRC_URI += "git://github.com/golang/groupcache;name=groupcache;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/groupcache"
+
+# github.com/hanwen/go-fuse/v2 v2.3.0
+# [1] git ls-remote https://github.com/hanwen/go-fuse d537a5a8d65c6552bc3844571f1d8ec76bcac5e4
+SRCREV_go-fuse-v2="d537a5a8d65c6552bc3844571f1d8ec76bcac5e4"
+SRC_URI += "git://github.com/hanwen/go-fuse;name=go-fuse-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hanwen/go-fuse/v2"
+
+# github.com/hashicorp/errwrap v1.1.0
+# [1] git ls-remote https://github.com/hashicorp/errwrap 7b00e5db719c64d14dd0caaacbd13e76254d02c0
+SRCREV_errwrap="7b00e5db719c64d14dd0caaacbd13e76254d02c0"
+SRC_URI += "git://github.com/hashicorp/errwrap;name=errwrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/errwrap"
+
+# github.com/karrick/godirwalk v1.17.0
+# [1] git ls-remote https://github.com/karrick/godirwalk 9a7752c108e7ea76255201b9f47bd4d4d2df868e
+SRCREV_godirwalk="9a7752c108e7ea76255201b9f47bd4d4d2df868e"
+SRC_URI += "git://github.com/karrick/godirwalk;name=godirwalk;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/karrick/godirwalk"
+
+# github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de
+# [1] git ls-remote https://github.com/liggitt/tabwriter 89fcab3d43de07060e4fd4c1547430ed57e87f24
+SRCREV_tabwriter="89fcab3d43de07060e4fd4c1547430ed57e87f24"
+SRC_URI += "git://github.com/liggitt/tabwriter;name=tabwriter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/liggitt/tabwriter"
+
+# github.com/minio/highwayhash v1.0.2
+# [1] git ls-remote https://github.com/minio/highwayhash 08ce0b4fa7932a018438133f1b632e1c674d4107
+SRCREV_highwayhash="08ce0b4fa7932a018438133f1b632e1c674d4107"
+SRC_URI += "git://github.com/minio/highwayhash;name=highwayhash;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/minio/highwayhash"
+
+# github.com/minio/sha256-simd v1.0.1
+# [1] git ls-remote https://github.com/minio/sha256-simd 6096f891a77bfe490cbea7a424c821b5fdb92849
+SRCREV_sha256-simd="6096f891a77bfe490cbea7a424c821b5fdb92849"
+SRC_URI += "git://github.com/minio/sha256-simd;name=sha256-simd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/minio/sha256-simd"
+
+# github.com/mrunalp/fileutils v0.5.1
+# [1] git ls-remote https://github.com/mrunalp/fileutils 7363e975f9cfb558be601bece0df81714c3c9084
+SRCREV_fileutils="7363e975f9cfb558be601bece0df81714c3c9084"
+SRC_URI += "git://github.com/mrunalp/fileutils;name=fileutils;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mrunalp/fileutils"
+
+# github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822
+# [1] git ls-remote https://github.com/munnerz/goautoneg a7dc8b61c822528f973a5e4e7b272055c6fdb43e
+SRCREV_goautoneg="a7dc8b61c822528f973a5e4e7b272055c6fdb43e"
+SRC_URI += "git://github.com/munnerz/goautoneg;name=goautoneg;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/munnerz/goautoneg"
+
+# github.com/pelletier/go-toml v1.9.5
+# [1] git ls-remote https://github.com/pelletier/go-toml fed1464066413075eac02cd4dc368b5221845541
+SRCREV_go-toml="fed1464066413075eac02cd4dc368b5221845541"
+SRC_URI += "git://github.com/pelletier/go-toml;name=go-toml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pelletier/go-toml"
+
+# github.com/prometheus/common v0.45.0
+# [1] git ls-remote https://github.com/prometheus/common c59927ec74c04c0c17891bf27784fe7c484ae97f
+SRCREV_common="c59927ec74c04c0c17891bf27784fe7c484ae97f"
+SRC_URI += "git://github.com/prometheus/common;name=common;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/common"
+
+# github.com/prometheus/procfs v0.12.0
+# [1] git ls-remote https://github.com/prometheus/procfs ff0ad85f7e8bcd5c677d99143f14a2a3aab533aa
+SRCREV_procfs="ff0ad85f7e8bcd5c677d99143f14a2a3aab533aa"
+SRC_URI += "git://github.com/prometheus/procfs;name=procfs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/procfs"
+
+# github.com/vishvananda/netns v0.0.4
+# [1] git ls-remote https://github.com/vishvananda/netns 7a452d2d15292b2bfb2a2d88e6bdeac156a761b9
+SRCREV_netns="7a452d2d15292b2bfb2a2d88e6bdeac156a761b9"
+SRC_URI += "git://github.com/vishvananda/netns;name=netns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vishvananda/netns"
+
+# go.opentelemetry.io/otel/sdk v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_sdk="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=sdk;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/sdk"
+
+# github.com/k3s-io/cri-dockerd v0.3.9-k3s2
+# [1] git ls-remote https://github.com/k3s-io/cri-dockerd 0d2146805dcd844e15d02d6f1956b4cd0e4365cf
+SRCREV_cri-dockerd="0d2146805dcd844e15d02d6f1956b4cd0e4365cf"
+SRC_URI += "git://github.com/k3s-io/cri-dockerd;name=cri-dockerd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/cri-dockerd"
+
+# github.com/coreos/go-iptables v0.7.0
+# [1] git ls-remote https://github.com/coreos/go-iptables b9dff5a19d9c3925da3f9b3c0a705de6c1fdc56c
+SRCREV_go-iptables="b9dff5a19d9c3925da3f9b3c0a705de6c1fdc56c"
+SRC_URI += "git://github.com/coreos/go-iptables;name=go-iptables;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-iptables"
+
+# github.com/flannel-io/flannel v0.24.2
+# [1] git ls-remote https://github.com/flannel-io/flannel 3d56ed16e123a6fb06841ba920664b3ce4c99cda
+SRCREV_flannel="3d56ed16e123a6fb06841ba920664b3ce4c99cda"
+SRC_URI += "git://github.com/flannel-io/flannel;name=flannel;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/flannel-io/flannel"
+
+# github.com/ipfs/go-ds-leveldb v0.5.0
+# [1] git ls-remote https://github.com/ipfs/go-ds-leveldb 6f6dc580f7325ad411fc5967ccee67e40545e208
+SRCREV_go-ds-leveldb="6f6dc580f7325ad411fc5967ccee67e40545e208"
+SRC_URI += "git://github.com/ipfs/go-ds-leveldb;name=go-ds-leveldb;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-ds-leveldb"
+
+# github.com/klauspost/compress v1.17.2
+# [1] git ls-remote https://github.com/klauspost/compress 8eb6542f08f086fb92796f6d8a4531d754947309
+SRCREV_compress="8eb6542f08f086fb92796f6d8a4531d754947309"
+SRC_URI += "git://github.com/klauspost/compress;name=compress;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/klauspost/compress"
+
+# github.com/k3s-io/etcd/api/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_api-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=api-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/api/v3"
+
+# github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311
+# [1] git ls-remote https://github.com/chenzhuoyu/base64x fe3a3abad31102e33411b1b239aa111b80ae336d
+SRCREV_base64x="fe3a3abad31102e33411b1b239aa111b80ae336d"
+SRC_URI += "git://github.com/chenzhuoyu/base64x;name=base64x;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/chenzhuoyu/base64x"
+
+# github.com/ipld/go-ipld-prime v0.20.0
+# [1] git ls-remote https://github.com/ipld/go-ipld-prime 200b4a6b6fb6720911cb385aff05da55c39d56de
+SRCREV_go-ipld-prime="200b4a6b6fb6720911cb385aff05da55c39d56de"
+SRC_URI += "git://github.com/ipld/go-ipld-prime;name=go-ipld-prime;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipld/go-ipld-prime"
+
+# github.com/jackpal/go-nat-pmp v1.0.2
+# [1] git ls-remote https://github.com/jackpal/go-nat-pmp 059203efa1edd7130293a583541b8308e7c640c4
+SRCREV_go-nat-pmp="059203efa1edd7130293a583541b8308e7c640c4"
+SRC_URI += "git://github.com/jackpal/go-nat-pmp;name=go-nat-pmp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jackpal/go-nat-pmp"
+
+# github.com/libp2p/go-netroute v0.2.1
+# [1] git ls-remote https://github.com/libp2p/go-netroute 462cbfaf52f4c2a2321e6382455a8f56396f3664
+SRCREV_go-netroute="462cbfaf52f4c2a2321e6382455a8f56396f3664"
+SRC_URI += "git://github.com/libp2p/go-netroute;name=go-netroute;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-netroute"
+
+# github.com/libp2p/go-yamux/v4 v4.0.1
+# [1] git ls-remote https://github.com/libp2p/go-yamux e584a210c72651b67829477b4b4285cae25b1a1b
+SRCREV_go-yamux-v4="e584a210c72651b67829477b4b4285cae25b1a1b"
+SRC_URI += "git://github.com/libp2p/go-yamux;name=go-yamux-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-yamux/v4"
+
+# github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd
+# [1] git ls-remote https://github.com/marten-seemann/tcp dfbc87cc63fd003b9a070c76d605769fa3e2e3b2
+SRCREV_tcp="dfbc87cc63fd003b9a070c76d605769fa3e2e3b2"
+SRC_URI += "git://github.com/marten-seemann/tcp;name=tcp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/marten-seemann/tcp"
+
+# github.com/JeffAshton/win_pdh v0.0.0-20161109143554-76bb4ee9f0ab
+# [1] git ls-remote https://github.com/JeffAshton/win_pdh 76bb4ee9f0ab50f77826f2a2ee7fb9d3880d6ec2
+SRCREV_win_pdh="76bb4ee9f0ab50f77826f2a2ee7fb9d3880d6ec2"
+SRC_URI += "git://github.com/JeffAshton/win_pdh;name=win_pdh;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/JeffAshton/win_pdh"
+
+# github.com/Microsoft/go-winio v0.6.1
+# [1] git ls-remote https://github.com/microsoft/go-winio 070c828abb873da9e71c7247740253b50f7cf049
+SRCREV_go-winio="070c828abb873da9e71c7247740253b50f7cf049"
+SRC_URI += "git://github.com/microsoft/go-winio;name=go-winio;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/go-winio"
+
+# github.com/containerd/cgroups v1.1.0
+# [1] git ls-remote https://github.com/containerd/cgroups fe7323f622bc222e72473679f12a9089aeeda177
+SRCREV_cgroups="fe7323f622bc222e72473679f12a9089aeeda177"
+SRC_URI += "git://github.com/containerd/cgroups;name=cgroups;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/cgroups"
+
+# github.com/containerd/console v1.0.3
+# [1] git ls-remote https://github.com/containerd/console b5cb846c9186d67bcae3ce3c324e47cd317d9527
+SRCREV_console="b5cb846c9186d67bcae3ce3c324e47cd317d9527"
+SRC_URI += "git://github.com/containerd/console;name=console;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/console"
+
+# github.com/containerd/go-runc v1.0.0
+# [1] git ls-remote https://github.com/containerd/go-runc 16b287bc67d069a60fa48db15f330b790b74365b
+SRCREV_go-runc="16b287bc67d069a60fa48db15f330b790b74365b"
+SRC_URI += "git://github.com/containerd/go-runc;name=go-runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/go-runc"
+
+# github.com/containerd/typeurl v1.0.2
+# [1] git ls-remote https://github.com/containerd/typeurl 5e43fb8b75ed2f2305fc04e6918c8d10636771bc
+SRCREV_typeurl="5e43fb8b75ed2f2305fc04e6918c8d10636771bc"
+SRC_URI += "git://github.com/containerd/typeurl;name=typeurl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/typeurl"
+
+# github.com/dustin/go-humanize v1.0.1
+# [1] git ls-remote https://github.com/dustin/go-humanize 9ec74ab2f7a7161664182fd4e5e292fccffbc75f
+SRCREV_go-humanize="9ec74ab2f7a7161664182fd4e5e292fccffbc75f"
+SRC_URI += "git://github.com/dustin/go-humanize;name=go-humanize;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/dustin/go-humanize"
+
+# github.com/evanphx/json-patch v5.6.0+incompatible
+# [1] git ls-remote https://github.com/evanphx/json-patch 5561fe05a1ec79c9bca966376211b2ab81959671
+SRCREV_json-patch="5561fe05a1ec79c9bca966376211b2ab81959671"
+SRC_URI += "git://github.com/evanphx/json-patch;name=json-patch;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/evanphx/json-patch"
+
+# github.com/fvbommel/sortorder v1.1.0
+# [1] git ls-remote https://github.com/fvbommel/sortorder a8d9302c17f9f46c6580b82b919672e58ef6e396
+SRCREV_sortorder="a8d9302c17f9f46c6580b82b919672e58ef6e396"
+SRC_URI += "git://github.com/fvbommel/sortorder;name=sortorder;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fvbommel/sortorder"
+
+# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
+# [1] git ls-remote https://github.com/go-task/slim-sprig 52ccab3ef572c7e1a2c258be183f9a9296d60152
+SRCREV_slim-sprig="52ccab3ef572c7e1a2c258be183f9a9296d60152"
+SRC_URI += "git://github.com/go-task/slim-sprig;name=slim-sprig;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-task/slim-sprig"
+
+# github.com/klauspost/cpuid/v2 v2.2.5
+# [1] git ls-remote https://github.com/klauspost/cpuid 1af2d99c24e60b21f4c8e8ea63ed69523ebbbb16
+SRCREV_cpuid-v2="1af2d99c24e60b21f4c8e8ea63ed69523ebbbb16"
+SRC_URI += "git://github.com/klauspost/cpuid;name=cpuid-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/klauspost/cpuid/v2"
+
+# github.com/kylelemons/godebug v1.1.0
+# [1] git ls-remote https://github.com/kylelemons/godebug 9ff306d4fbead574800b66369df5b6144732d58e
+SRCREV_godebug="9ff306d4fbead574800b66369df5b6144732d58e"
+SRC_URI += "git://github.com/kylelemons/godebug;name=godebug;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/kylelemons/godebug"
+
+# github.com/mdlayher/genetlink v1.3.2
+# [1] git ls-remote https://github.com/mdlayher/genetlink 7531bffe0f5e10d1ce558d35e6feb5d1d1600851
+SRCREV_genetlink="7531bffe0f5e10d1ce558d35e6feb5d1d1600851"
+SRC_URI += "git://github.com/mdlayher/genetlink;name=genetlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mdlayher/genetlink"
+
+# github.com/moby/sys/mountinfo v0.6.2
+# [1] git ls-remote https://github.com/moby/sys 1bf36f7188c31f2797c556c4c4d7d9af7a6a965b
+SRCREV_mountinfo="1bf36f7188c31f2797c556c4c4d7d9af7a6a965b"
+SRC_URI += "git://github.com/moby/sys;name=mountinfo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/mountinfo"
+
+# github.com/modern-go/reflect2 v1.0.2
+# [1] git ls-remote https://github.com/modern-go/reflect2 2b33151c9bbc5231aea69b8861c540102b087070
+SRCREV_reflect2="2b33151c9bbc5231aea69b8861c540102b087070"
+SRC_URI += "git://github.com/modern-go/reflect2;name=reflect2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/modern-go/reflect2"
+
+# github.com/peterbourgon/diskv v2.0.1+incompatible
+# [1] git ls-remote https://github.com/peterbourgon/diskv 5f041e8faa004a95c88a202771f4cc3e991971e6
+SRCREV_diskv="5f041e8faa004a95c88a202771f4cc3e991971e6"
+SRC_URI += "git://github.com/peterbourgon/diskv;name=diskv;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/peterbourgon/diskv"
+
+# github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
+# [1] git ls-remote https://github.com/pmezard/go-difflib 5d4384ee4fb2527b0a1256a821ebfc92f91efefc
+SRCREV_go-difflib="5d4384ee4fb2527b0a1256a821ebfc92f91efefc"
+SRC_URI += "git://github.com/pmezard/go-difflib;name=go-difflib;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pmezard/go-difflib"
+
+# github.com/shengdoushi/base58 v1.0.0
+# [1] git ls-remote https://github.com/shengdoushi/base58 c5f44ca1af76fb63925d5fba8fa7b85870199839
+SRCREV_shengdoushi-base58="c5f44ca1af76fb63925d5fba8fa7b85870199839"
+SRC_URI += "git://github.com/shengdoushi/base58;name=shengdoushi-base58;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/shengdoushi/base58"
+
+# github.com/stoewer/go-strcase v1.2.0
+# [1] git ls-remote https://github.com/stoewer/go-strcase 7962b205553802087345c0b4c74d57b65236f676
+SRCREV_go-strcase="7962b205553802087345c0b4c74d57b65236f676"
+SRC_URI += "git://github.com/stoewer/go-strcase;name=go-strcase;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/stoewer/go-strcase"
+
+# github.com/k3s-io/etcd/pkg/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_pkg-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=pkg-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/pkg/v3"
+
+# github.com/erikdubbelboer/gspt v0.0.0-20190125194910-e68493906b83
+# [1] git ls-remote https://github.com/erikdubbelboer/gspt e68493906b8382891943ddc9960cb9c6ecd1a1f0
+SRCREV_gspt="e68493906b8382891943ddc9960cb9c6ecd1a1f0"
+SRC_URI += "git://github.com/erikdubbelboer/gspt;name=gspt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/erikdubbelboer/gspt"
+
+# github.com/go-sql-driver/mysql v1.7.1
+# [1] git ls-remote https://github.com/go-sql-driver/mysql f20b2863636093e5fbf1481b59bdaff3b0fbb779
+SRCREV_mysql="f20b2863636093e5fbf1481b59bdaff3b0fbb779"
+SRC_URI += "git://github.com/go-sql-driver/mysql;name=mysql;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-sql-driver/mysql"
+
+# github.com/vishvananda/netlink v1.2.1-beta.2
+# [1] git ls-remote https://github.com/vishvananda/netlink 5e915e0149386ce3d02379ff93f4c0a5601779d5
+SRCREV_netlink="5e915e0149386ce3d02379ff93f4c0a5601779d5"
+SRC_URI += "git://github.com/vishvananda/netlink;name=netlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vishvananda/netlink"
+
+# github.com/libp2p/go-cidranger v1.1.0
+# [1] git ls-remote https://github.com/libp2p/go-cidranger 1dec7f87b45b32e24d3f59548ad61647de34586d
+SRCREV_go-cidranger="1dec7f87b45b32e24d3f59548ad61647de34586d"
+SRC_URI += "git://github.com/libp2p/go-cidranger;name=go-cidranger;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-cidranger"
+
+# github.com/libp2p/go-reuseport v0.4.0
+# [1] git ls-remote https://github.com/libp2p/go-reuseport ac34b4fb35437abcc176b5bb97cc431d62d983e0
+SRCREV_go-reuseport="ac34b4fb35437abcc176b5bb97cc431d62d983e0"
+SRC_URI += "git://github.com/libp2p/go-reuseport;name=go-reuseport;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-reuseport"
+
+# github.com/quic-go/qtls-go1-20 v0.3.3
+# [1] git ls-remote https://github.com/quic-go/qtls-go1-20 5ba42598e0a018acd682059ee240c6bb8d085b07
+SRCREV_qtls-go1-20="5ba42598e0a018acd682059ee240c6bb8d085b07"
+SRC_URI += "git://github.com/quic-go/qtls-go1-20;name=qtls-go1-20;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/quic-go/qtls-go1-20"
+
+# github.com/MakeNowJust/heredoc v1.0.0
+# [1] git ls-remote https://github.com/makenowjust/heredoc bbd9af33722b79a933ef99c7c94833065e2d6c20
+SRCREV_heredoc="bbd9af33722b79a933ef99c7c94833065e2d6c20"
+SRC_URI += "git://github.com/makenowjust/heredoc;name=heredoc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/MakeNowJust/heredoc"
+
+# github.com/NYTimes/gziphandler v1.1.1
+# [1] git ls-remote https://github.com/nytimes/gziphandler dd0439581c7657cb652dfe5c71d7d48baf39541d
+SRCREV_gziphandler="dd0439581c7657cb652dfe5c71d7d48baf39541d"
+SRC_URI += "git://github.com/nytimes/gziphandler;name=gziphandler;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/NYTimes/gziphandler"
+
+# github.com/canonical/go-dqlite v1.5.1
+# [1] git ls-remote https://github.com/canonical/go-dqlite 830c1a017995b73322e86c2a6f2ca799c1caca07
+SRCREV_go-dqlite="830c1a017995b73322e86c2a6f2ca799c1caca07"
+SRC_URI += "git://github.com/canonical/go-dqlite;name=go-dqlite;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/canonical/go-dqlite"
+
+# github.com/cenkalti/backoff/v4 v4.2.1
+# [1] git ls-remote https://github.com/cenkalti/backoff a04a6fe64ffb0e3fd0816460529d300be5f252df
+SRCREV_backoff-v4="a04a6fe64ffb0e3fd0816460529d300be5f252df"
+SRC_URI += "git://github.com/cenkalti/backoff;name=backoff-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cenkalti/backoff/v4"
+
+# github.com/chai2010/gettext-go v1.0.2
+# [1] git ls-remote https://github.com/chai2010/gettext-go 274d1753d015d0362761b6a1cc2a572e6a035913
+SRCREV_gettext-go="274d1753d015d0362761b6a1cc2a572e6a035913"
+SRC_URI += "git://github.com/chai2010/gettext-go;name=gettext-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/chai2010/gettext-go"
+
+# github.com/containerd/btrfs/v2 v2.0.0
+# [1] git ls-remote https://github.com/containerd/btrfs f611cf12b33f43269574b2ad82bcb55e4d6f9982
+SRCREV_btrfs-v2="f611cf12b33f43269574b2ad82bcb55e4d6f9982"
+SRC_URI += "git://github.com/containerd/btrfs;name=btrfs-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/btrfs/v2"
+
+# github.com/containerd/imgcrypt v1.1.7
+# [1] git ls-remote https://github.com/containerd/imgcrypt 01a05dffff35aadeb0a3008016ed745e7ff6beda
+SRCREV_imgcrypt="01a05dffff35aadeb0a3008016ed745e7ff6beda"
+SRC_URI += "git://github.com/containerd/imgcrypt;name=imgcrypt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/imgcrypt"
+
+# github.com/containers/ocicrypt v1.1.6
+# [1] git ls-remote https://github.com/containers/ocicrypt c61dfa5ee6c2ac10004c4e156d1a435f11c444cf
+SRCREV_ocicrypt="c61dfa5ee6c2ac10004c4e156d1a435f11c444cf"
+SRC_URI += "git://github.com/containers/ocicrypt;name=ocicrypt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containers/ocicrypt"
+
+# github.com/docker/distribution v2.8.2+incompatible
+# [1] git ls-remote https://github.com/distribution/distribution 7c354a4b40feeea21d7eeae4de91c8ff7951e672
+SRCREV_distribution="7c354a4b40feeea21d7eeae4de91c8ff7951e672"
+SRC_URI += "git://github.com/distribution/distribution;name=distribution;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/distribution"
+
+# github.com/emicklei/go-restful v2.16.0+incompatible
+# [1] git ls-remote https://github.com/emicklei/go-restful ac666c045e035603f2704c98c59e979fccbfa94f
+SRCREV_go-restful="ac666c045e035603f2704c98c59e979fccbfa94f"
+SRC_URI += "git://github.com/emicklei/go-restful;name=go-restful;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/emicklei/go-restful"
+
+# github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7
+# [1] git ls-remote https://github.com/gregjones/httpcache 9cad4c3443a7200dd6400aef47183728de563a38
+SRCREV_httpcache="9cad4c3443a7200dd6400aef47183728de563a38"
+SRC_URI += "git://github.com/gregjones/httpcache;name=httpcache;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gregjones/httpcache"
+
+# github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a
+# [1] git ls-remote https://github.com/jackc/pgservicefile 091c0ba34f0a65a78ab8d0e313fde0695c0f7186
+SRCREV_pgservicefile="091c0ba34f0a65a78ab8d0e313fde0695c0f7186"
+SRC_URI += "git://github.com/jackc/pgservicefile;name=pgservicefile;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jackc/pgservicefile"
+
+# github.com/jonboulle/clockwork v0.4.0
+# [1] git ls-remote https://github.com/jonboulle/clockwork 606c48b92358fcca153952b56fb0d14d6845f84a
+SRCREV_clockwork="606c48b92358fcca153952b56fb0d14d6845f84a"
+SRC_URI += "git://github.com/jonboulle/clockwork;name=clockwork;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jonboulle/clockwork"
+
+# github.com/mistifyio/go-zfs/v3 v3.0.1
+# [1] git ls-remote https://github.com/mistifyio/go-zfs f6d5c373cf63ae2477370aa9bda9fa49804c2d72
+SRCREV_go-zfs-v3="f6d5c373cf63ae2477370aa9bda9fa49804c2d72"
+SRC_URI += "git://github.com/mistifyio/go-zfs;name=go-zfs-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mistifyio/go-zfs/v3"
+
+# github.com/moby/sys/sequential v0.5.0
+# [1] git ls-remote https://github.com/moby/sys b22ba8a69b306f0b4adbbe2a529457e6283ed9f7
+SRCREV_sequential="b22ba8a69b306f0b4adbbe2a529457e6283ed9f7"
+SRC_URI += "git://github.com/moby/sys;name=sequential;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/sequential"
+
+# github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635
+# [1] git ls-remote https://github.com/syndtr/gocapability 42c35b4376354fd554efc7ad35e0b7f94e3a0ffb
+SRCREV_gocapability="42c35b4376354fd554efc7ad35e0b7f94e3a0ffb"
+SRC_URI += "git://github.com/syndtr/gocapability;name=gocapability;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/syndtr/gocapability"
+
+# github.com/k3s-io/etcd/raft/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_raft-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=raft-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/raft/v3"
+
+# go.opentelemetry.io/otel/trace v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_trace="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=trace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/trace"
+
+# go.opentelemetry.io/proto/otlp v0.19.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-proto-go c98f6b5f7362c9b4a717c7a4dab1ba90796a8f21
+SRCREV_otlp="c98f6b5f7362c9b4a717c7a4dab1ba90796a8f21"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-proto-go;name=otlp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/proto/otlp"
+
+# github.com/natefinch/lumberjack v2.0.0+incompatible
+# [1] git ls-remote https://github.com/natefinch/lumberjack 7d6a1875575e09256dc552b4c0e450dcd02bd10e
+SRCREV_lumberjack="7d6a1875575e09256dc552b4c0e450dcd02bd10e"
+SRC_URI += "git://github.com/natefinch/lumberjack;name=lumberjack;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/natefinch/lumberjack"
+
+# github.com/rancher/remotedialer v0.3.0
+# [1] git ls-remote https://github.com/rancher/remotedialer 24498689a9ccec9adbdbadbe3f5d18df75ba133b
+SRCREV_remotedialer="24498689a9ccec9adbdbadbe3f5d18df75ba133b"
+SRC_URI += "git://github.com/rancher/remotedialer;name=remotedialer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rancher/remotedialer"
+
+# github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c
+# [1] git ls-remote https://github.com/davidlazar/go-crypto b73af7476f6c55b31aa2797d1f98afc94699548d
+SRCREV_go-crypto="b73af7476f6c55b31aa2797d1f98afc94699548d"
+SRC_URI += "git://github.com/davidlazar/go-crypto;name=go-crypto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/davidlazar/go-crypto"
+
+# github.com/hashicorp/golang-lru v0.5.4
+# [1] git ls-remote https://github.com/hashicorp/golang-lru 14eae340515388ca95aa8e7b86f0de668e981f54
+SRCREV_golang-lru="14eae340515388ca95aa8e7b86f0de668e981f54"
+SRC_URI += "git://github.com/hashicorp/golang-lru;name=golang-lru;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/golang-lru"
+
+# github.com/pelletier/go-toml/v2 v2.1.1
+# [1] git ls-remote https://github.com/pelletier/go-toml 34765b4a9e937ab927b5bd57231e98c68fe13109
+SRCREV_go-toml-v2="34765b4a9e937ab927b5bd57231e98c68fe13109"
+SRC_URI += "git://github.com/pelletier/go-toml;name=go-toml-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pelletier/go-toml/v2"
+
+# github.com/slok/go-http-metrics v0.10.0
+# [1] git ls-remote https://github.com/slok/go-http-metrics 9382ededffcb5ecf9f7041bfb779ddc1fc9c08dc
+SRCREV_go-http-metrics="9382ededffcb5ecf9f7041bfb779ddc1fc9c08dc"
+SRC_URI += "git://github.com/slok/go-http-metrics;name=go-http-metrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/slok/go-http-metrics"
+
+# github.com/xenitab/pkg/channels v0.0.2
+# [1] git ls-remote https://github.com/xenitab/pkg 94c2ab1cbf9c7aff34ed28237765cefd6d409f34
+SRCREV_channels="94c2ab1cbf9c7aff34ed28237765cefd6d409f34"
+SRC_URI += "git://github.com/xenitab/pkg;name=channels;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xenitab/pkg/channels"
+
+# github.com/euank/go-kmsg-parser v2.0.0+incompatible
+# [1] git ls-remote https://github.com/euank/go-kmsg-parser 5ba4d492e455a77d25dcf0d2c4acc9f2afebef4e
+SRCREV_go-kmsg-parser="5ba4d492e455a77d25dcf0d2c4acc9f2afebef4e"
+SRC_URI += "git://github.com/euank/go-kmsg-parser;name=go-kmsg-parser;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/euank/go-kmsg-parser"
+
+# github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d
+# [1] git ls-remote https://github.com/exponent-io/jsonpath d6023ce2651d8eafb5c75bb0c7167536102ec9f5
+SRCREV_jsonpath="d6023ce2651d8eafb5c75bb0c7167536102ec9f5"
+SRC_URI += "git://github.com/exponent-io/jsonpath;name=jsonpath;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/exponent-io/jsonpath"
+
+# github.com/googleapis/gax-go/v2 v2.12.0
+# [1] git ls-remote https://github.com/googleapis/gax-go db3387b70e605dfc1f09513359d396496a91c66b
+SRCREV_gax-go-v2="db3387b70e605dfc1f09513359d396496a91c66b"
+SRC_URI += "git://github.com/googleapis/gax-go;name=gax-go-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/googleapis/gax-go/v2"
+
+# github.com/hashicorp/go-version v1.6.0
+# [1] git ls-remote https://github.com/hashicorp/go-version 78d058c5618891f74d604bd15356fca690b64d8a
+SRCREV_go-version="78d058c5618891f74d604bd15356fca690b64d8a"
+SRC_URI += "git://github.com/hashicorp/go-version;name=go-version;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-version"
+
+# github.com/mitchellh/go-homedir v1.1.0
+# [1] git ls-remote https://github.com/mitchellh/go-homedir af06845cf3004701891bf4fdb884bfe4920b3727
+SRCREV_go-homedir="af06845cf3004701891bf4fdb884bfe4920b3727"
+SRC_URI += "git://github.com/mitchellh/go-homedir;name=go-homedir;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/go-homedir"
+
+# github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd
+# [1] git ls-remote https://github.com/modern-go/concurrent bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94
+SRCREV_concurrent="bacd9c7ef1dd9b15be4a9909b8ac7a4e313eec94"
+SRC_URI += "git://github.com/modern-go/concurrent;name=concurrent;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/modern-go/concurrent"
+
+# github.com/pquerna/cachecontrol v0.1.0
+# [1] git ls-remote https://github.com/pquerna/cachecontrol fb00f8a766ae43bf209f50299ce7d69669416dfb
+SRCREV_cachecontrol="fb00f8a766ae43bf209f50299ce7d69669416dfb"
+SRC_URI += "git://github.com/pquerna/cachecontrol;name=cachecontrol;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pquerna/cachecontrol"
+
+# github.com/tchap/go-patricia/v2 v2.3.1
+# [1] git ls-remote https://github.com/tchap/go-patricia 5fc88dd7937ad82ca516f7f1f6b2c06dd0180309
+SRCREV_go-patricia-v2="5fc88dd7937ad82ca516f7f1f6b2c06dd0180309"
+SRC_URI += "git://github.com/tchap/go-patricia;name=go-patricia-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tchap/go-patricia/v2"
+
+# go.opentelemetry.io/otel/metric v0.32.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go d7bfe6675fe79b0c01cae3d4c5f06330b2fece73
+SRCREV_metric="d7bfe6675fe79b0c01cae3d4c5f06330b2fece73"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=metric;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/metric"
+
+# github.com/k3s-io/kube-router/v2 v2.0.1
+# [1] git ls-remote https://github.com/k3s-io/kube-router 6842973d656f0bf1562858d278ea5d1f06a16f56
+SRCREV_v2="6842973d656f0bf1562858d278ea5d1f06a16f56"
+SRC_URI += "git://github.com/k3s-io/kube-router;name=v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kube-router/v2"
+
+# github.com/containerd/cgroups/v3 v3.0.2
+# [1] git ls-remote https://github.com/containerd/cgroups 8fa64246e17ceea54277b3ad7139d9ec17545bfa
+SRCREV_v3="8fa64246e17ceea54277b3ad7139d9ec17545bfa"
+SRC_URI += "git://github.com/containerd/cgroups;name=v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/cgroups/v3"
+
+# github.com/go-bindata/go-bindata v3.1.2+incompatible
+# [1] git ls-remote https://github.com/go-bindata/go-bindata ff7109080027ec152dabb369e157c4f359b76f31
+SRCREV_go-bindata="ff7109080027ec152dabb369e157c4f359b76f31"
+SRC_URI += "git://github.com/go-bindata/go-bindata;name=go-bindata;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-bindata/go-bindata"
+
+# github.com/k3s-io/etcd/client/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_client-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=client-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/client/v3"
+
+# github.com/k3s-io/etcd/server/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_server-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=server-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/server/v3"
+
+# github.com/go-playground/locales v0.14.1
+# [1] git ls-remote https://github.com/go-playground/locales ce315c8672599942003599943a1e64288f55b03f
+SRCREV_locales="ce315c8672599942003599943a1e64288f55b03f"
+SRC_URI += "git://github.com/go-playground/locales;name=locales;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-playground/locales"
+
+# github.com/libp2p/go-buffer-pool v0.1.0
+# [1] git ls-remote https://github.com/libp2p/go-buffer-pool c5070857211a0615ebd7b56588154941af580a4d
+SRCREV_go-buffer-pool="c5070857211a0615ebd7b56588154941af580a4d"
+SRC_URI += "git://github.com/libp2p/go-buffer-pool;name=go-buffer-pool;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-buffer-pool"
+
+# github.com/containerd/continuity v0.4.2
+# [1] git ls-remote https://github.com/containerd/continuity 77a2d47a6668b82465fdf6cb749fe3a2aa2c9743
+SRCREV_continuity="77a2d47a6668b82465fdf6cb749fe3a2aa2c9743"
+SRC_URI += "git://github.com/containerd/continuity;name=continuity;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/continuity"
+
+# github.com/containerd/typeurl/v2 v2.1.1
+# [1] git ls-remote https://github.com/containerd/typeurl 7ef6316b771f959cbb208b229e3423a466947df3
+SRCREV_typeurl-v2="7ef6316b771f959cbb208b229e3423a466947df3"
+SRC_URI += "git://github.com/containerd/typeurl;name=typeurl-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/typeurl/v2"
+
+# github.com/coreos/go-systemd/v22 v22.5.0
+# [1] git ls-remote https://github.com/coreos/go-systemd d5623bf85e8e73ae6352f78ee6b55a287619dd4e
+SRCREV_v22="d5623bf85e8e73ae6352f78ee6b55a287619dd4e"
+SRC_URI += "git://github.com/coreos/go-systemd;name=v22;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-systemd/v22"
+
+# github.com/cpuguy83/go-md2man/v2 v2.0.3
+# [1] git ls-remote https://github.com/cpuguy83/go-md2man f67b5f6400a3ea2156517041a329ae5f5935395c
+SRCREV_go-md2man-v2="f67b5f6400a3ea2156517041a329ae5f5935395c"
+SRC_URI += "git://github.com/cpuguy83/go-md2man;name=go-md2man-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cpuguy83/go-md2man/v2"
+
+# github.com/docker/go-connections v0.5.0
+# [1] git ls-remote https://github.com/docker/go-connections fa09c952e3eadbffaf8afc5b8a1667158ba38ace
+SRCREV_go-connections="fa09c952e3eadbffaf8afc5b8a1667158ba38ace"
+SRC_URI += "git://github.com/docker/go-connections;name=go-connections;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-connections"
+
+# github.com/google/gnostic-models v0.6.9-0.20230804172637-c7be7c783f49
+# [1] git ls-remote https://github.com/google/gnostic-models c7be7c783f49e86348a1081eb387e01a347a4f23
+SRCREV_gnostic-models="c7be7c783f49e86348a1081eb387e01a347a4f23"
+SRC_URI += "git://github.com/google/gnostic-models;name=gnostic-models;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gnostic-models"
+
+# github.com/mitchellh/go-wordwrap v1.0.1
+# [1] git ls-remote https://github.com/mitchellh/go-wordwrap ecf0936a077a4bd73a1cc2ac5c370f2b55618d62
+SRCREV_go-wordwrap="ecf0936a077a4bd73a1cc2ac5c370f2b55618d62"
+SRC_URI += "git://github.com/mitchellh/go-wordwrap;name=go-wordwrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/go-wordwrap"
+
+# github.com/k3s-io/etcd/client/v2 v2.305.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_client-v2="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=client-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/client/v2"
+
+# gopkg.in/natefinch/lumberjack.v2 v2.2.1
+# [1] git ls-remote https://github.com/natefinch/lumberjack 4cb27fcfbb0f35cb48c542c5ea80b7c1d18933d0
+SRCREV_lumberjack.v2="4cb27fcfbb0f35cb48c542c5ea80b7c1d18933d0"
+SRC_URI += "git://github.com/natefinch/lumberjack;name=lumberjack.v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/natefinch/lumberjack.v2"
+
+# github.com/k3s-io/helm-controller v0.15.8
+# [1] git ls-remote https://github.com/k3s-io/helm-controller 6479edd3c7f919dd9cc65a88aca75390f391eb4f
+SRCREV_helm-controller="6479edd3c7f919dd9cc65a88aca75390f391eb4f"
+SRC_URI += "git://github.com/k3s-io/helm-controller;name=helm-controller;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/helm-controller"
+
+# github.com/mwitkow/go-http-dialer v0.0.0-20161116154839-378f744fb2b8
+# [1] git ls-remote https://github.com/mwitkow/go-http-dialer 378f744fb2b81a6b96e3f40cde4f3bcab5a9cff0
+SRCREV_go-http-dialer="378f744fb2b81a6b96e3f40cde4f3bcab5a9cff0"
+SRC_URI += "git://github.com/mwitkow/go-http-dialer;name=go-http-dialer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mwitkow/go-http-dialer"
+
+# github.com/opencontainers/selinux v1.10.1
+# [1] git ls-remote https://github.com/opencontainers/selinux 84e248a28e776216cd33a51fdea90a20fe308136
+SRCREV_selinux="84e248a28e776216cd33a51fdea90a20fe308136"
+SRC_URI += "git://github.com/opencontainers/selinux;name=selinux;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/selinux"
+
+# github.com/k3s-io/etcd/etcdutl/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_etcdutl-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=etcdutl-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/etcdutl/v3"
+
+# github.com/libp2p/go-flow-metrics v0.1.0
+# [1] git ls-remote https://github.com/libp2p/go-flow-metrics 3f13d05958e2d1be0245aed1bdb38f9ff1b4efdc
+SRCREV_go-flow-metrics="3f13d05958e2d1be0245aed1bdb38f9ff1b4efdc"
+SRC_URI += "git://github.com/libp2p/go-flow-metrics;name=go-flow-metrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-flow-metrics"
+
+# github.com/multiformats/go-base32 v0.1.0
+# [1] git ls-remote https://github.com/multiformats/go-base32 a16b66327f327428b32b919939b8c93482507e1f
+SRCREV_go-base32="a16b66327f327428b32b919939b8c93482507e1f"
+SRC_URI += "git://github.com/multiformats/go-base32;name=go-base32;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-base32"
+
+# github.com/multiformats/go-base36 v0.2.0
+# [1] git ls-remote https://github.com/multiformats/go-base36 da52c98bb97cfaa321be04030bc97dcee7de63ff
+SRCREV_go-base36="da52c98bb97cfaa321be04030bc97dcee7de63ff"
+SRC_URI += "git://github.com/multiformats/go-base36;name=go-base36;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-base36"
+
+# github.com/multiformats/go-varint v0.0.7
+# [1] git ls-remote https://github.com/multiformats/go-varint 8c8129accb08fc978bb276c81d568c41eafdd48f
+SRCREV_go-varint="8c8129accb08fc978bb276c81d568c41eafdd48f"
+SRC_URI += "git://github.com/multiformats/go-varint;name=go-varint;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-varint"
+
+# github.com/Azure/azure-sdk-for-go v68.0.0+incompatible
+# [1] git ls-remote https://github.com/Azure/azure-sdk-for-go 2187aca40bbf6931ffac666977e5d29128d82585
+SRCREV_azure-sdk-for-go="2187aca40bbf6931ffac666977e5d29128d82585"
+SRC_URI += "git://github.com/Azure/azure-sdk-for-go;name=azure-sdk-for-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/azure-sdk-for-go"
+
+# github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a
+# [1] git ls-remote https://github.com/asaskevich/govalidator f61b66f89f4a311bef65f13e575bcf1a2ffadda6
+SRCREV_govalidator="f61b66f89f4a311bef65f13e575bcf1a2ffadda6"
+SRC_URI += "git://github.com/asaskevich/govalidator;name=govalidator;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/asaskevich/govalidator"
+
+# github.com/emicklei/go-restful/v3 v3.9.0
+# [1] git ls-remote https://github.com/emicklei/go-restful ce871fa2f7069b65c784c9c708da1f00b1f2bd66
+SRCREV_go-restful-v3="ce871fa2f7069b65c784c9c708da1f00b1f2bd66"
+SRC_URI += "git://github.com/emicklei/go-restful;name=go-restful-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/emicklei/go-restful/v3"
+
+# github.com/go-openapi/jsonpointer v0.20.0
+# [1] git ls-remote https://github.com/go-openapi/jsonpointer 7df7a464d60e04018cf8f616a7abda94907fdf63
+SRCREV_jsonpointer="7df7a464d60e04018cf8f616a7abda94907fdf63"
+SRC_URI += "git://github.com/go-openapi/jsonpointer;name=jsonpointer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/jsonpointer"
+
+# github.com/hashicorp/go-cleanhttp v0.5.2
+# [1] git ls-remote https://github.com/hashicorp/go-cleanhttp 6d9e2ac5d828e5f8594b97f88c4bde14a67bb6d2
+SRCREV_go-cleanhttp="6d9e2ac5d828e5f8594b97f88c4bde14a67bb6d2"
+SRC_URI += "git://github.com/hashicorp/go-cleanhttp;name=go-cleanhttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-cleanhttp"
+
+# github.com/nats-io/nats-server/v2 v2.10.5
+# [1] git ls-remote https://github.com/nats-io/nats-server 0883d32bbcc5619603a9e5344d15aa10d069f059
+SRCREV_nats-server-v2="0883d32bbcc5619603a9e5344d15aa10d069f059"
+SRC_URI += "git://github.com/nats-io/nats-server;name=nats-server-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/nats-io/nats-server/v2"
+
+# golang.zx2c4.com/wireguard/wgctrl v0.0.0-20230429144221-925a1e7659e6
+# [1] git ls-remote https://github.com/WireGuard/wgctrl-go 925a1e7659e675c94c1a659d39daa9141e450c7d
+SRCREV_wgctrl="925a1e7659e675c94c1a659d39daa9141e450c7d"
+SRC_URI += "git://github.com/WireGuard/wgctrl-go;name=wgctrl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.zx2c4.com/wireguard/wgctrl"
+
+# github.com/rancher/dynamiclistener v0.3.6
+# [1] git ls-remote https://github.com/rancher/dynamiclistener 0a2d8dff62fde6dfaf009141c12b30c316d8cff3
+SRCREV_dynamiclistener="0a2d8dff62fde6dfaf009141c12b30c316d8cff3"
+SRC_URI += "git://github.com/rancher/dynamiclistener;name=dynamiclistener;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rancher/dynamiclistener"
+
+# github.com/gabriel-vasile/mimetype v1.4.2
+# [1] git ls-remote https://github.com/gabriel-vasile/mimetype 6f575b3e3509415374009db9cb81d6eae1fdfefb
+SRCREV_mimetype="6f575b3e3509415374009db9cb81d6eae1fdfefb"
+SRC_URI += "git://github.com/gabriel-vasile/mimetype;name=mimetype;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gabriel-vasile/mimetype"
+
+# github.com/hashicorp/golang-lru/v2 v2.0.5
+# [1] git ls-remote https://github.com/hashicorp/golang-lru 99d7b177d1c3f01ae145e824fe627961e76edb8b
+SRCREV_golang-lru-v2="99d7b177d1c3f01ae145e824fe627961e76edb8b"
+SRC_URI += "git://github.com/hashicorp/golang-lru;name=golang-lru-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/golang-lru/v2"
+
+# github.com/libp2p/go-libp2p-record v0.2.0
+# [1] git ls-remote https://github.com/libp2p/go-libp2p-record 90bb9b0e21ffe5e9a5f1af1c1e8cc6d9a0fce24c
+SRCREV_go-libp2p-record="90bb9b0e21ffe5e9a5f1af1c1e8cc6d9a0fce24c"
+SRC_URI += "git://github.com/libp2p/go-libp2p-record;name=go-libp2p-record;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p-record"
+
+# github.com/quic-go/webtransport-go v0.5.3
+# [1] git ls-remote https://github.com/quic-go/webtransport-go 16472ffb325d4869a24326e509abf359a8309775
+SRCREV_webtransport-go="16472ffb325d4869a24326e509abf359a8309775"
+SRC_URI += "git://github.com/quic-go/webtransport-go;name=webtransport-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/quic-go/webtransport-go"
+
+# github.com/containernetworking/cni v1.1.2
+# [1] git ls-remote https://github.com/containernetworking/cni 3363d143688bb83ca18489ac8b9dc204c1d49c4a
+SRCREV_cni="3363d143688bb83ca18489ac8b9dc204c1d49c4a"
+SRC_URI += "git://github.com/containernetworking/cni;name=cni;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containernetworking/cni"
+
+# github.com/hashicorp/go-multierror v1.1.1
+# [1] git ls-remote https://github.com/hashicorp/go-multierror 9974e9ec57696378079ecc3accd3d6f29401b3a0
+SRCREV_go-multierror="9974e9ec57696378079ecc3accd3d6f29401b3a0"
+SRC_URI += "git://github.com/hashicorp/go-multierror;name=go-multierror;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-multierror"
+
+# github.com/prometheus/client_model v0.5.0
+# [1] git ls-remote https://github.com/prometheus/client_model 1c92cadf7d8fa1726bae12e6025cca9b86d2ba5f
+SRCREV_client_model="1c92cadf7d8fa1726bae12e6025cca9b86d2ba5f"
+SRC_URI += "git://github.com/prometheus/client_model;name=client_model;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/client_model"
+
+# github.com/russross/blackfriday/v2 v2.1.0
+# [1] git ls-remote https://github.com/russross/blackfriday 4c9bf9512682b995722660a4196c0013228e2049
+SRCREV_blackfriday-v2="4c9bf9512682b995722660a4196c0013228e2049"
+SRC_URI += "git://github.com/russross/blackfriday;name=blackfriday-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/russross/blackfriday/v2"
+
+# sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3
+# [1] git ls-remote https://github.com/kubernetes-sigs/kustomize 6ce0bf390ce3dae580947a2b739da3306c675eef
+SRCREV_kustomize-v5="6ce0bf390ce3dae580947a2b739da3306c675eef"
+SRC_URI += "git://github.com/kubernetes-sigs/kustomize;name=kustomize-v5;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/kustomize/kustomize/v5"
+
+# github.com/libp2p/go-libp2p-kad-dht v0.25.2
+# [1] git ls-remote https://github.com/libp2p/go-libp2p-kad-dht bdca14419ec5f7ad0790f17856964bb99bee7436
+SRCREV_go-libp2p-kad-dht="bdca14419ec5f7ad0790f17856964bb99bee7436"
+SRC_URI += "git://github.com/libp2p/go-libp2p-kad-dht;name=go-libp2p-kad-dht;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p-kad-dht"
+
+# github.com/libp2p/go-libp2p-kbucket v0.6.3
+# [1] git ls-remote https://github.com/libp2p/go-libp2p-kbucket 437b9fccd6a22835a67b8fe2a5eae0b92f307224
+SRCREV_go-libp2p-kbucket="437b9fccd6a22835a67b8fe2a5eae0b92f307224"
+SRC_URI += "git://github.com/libp2p/go-libp2p-kbucket;name=go-libp2p-kbucket;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p-kbucket"
+
+# github.com/Azure/go-autorest/logger v0.2.1
+# [1] git ls-remote https://github.com/Azure/go-autorest 820a319d2214dc91d083022ae5ec50070175314c
+SRCREV_logger="820a319d2214dc91d083022ae5ec50070175314c"
+SRC_URI += "git://github.com/Azure/go-autorest;name=logger;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/logger"
+
+# github.com/daviddengcn/go-colortext v1.0.0
+# [1] git ls-remote https://github.com/daviddengcn/go-colortext dc4cd66b56a892657c0bea8bf4389d35210ce0ee
+SRCREV_go-colortext="dc4cd66b56a892657c0bea8bf4389d35210ce0ee"
+SRC_URI += "git://github.com/daviddengcn/go-colortext;name=go-colortext;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/daviddengcn/go-colortext"
+
+# github.com/go-openapi/jsonreference v0.20.2
+# [1] git ls-remote https://github.com/go-openapi/jsonreference 1f158e563669961b8e54817e3ea57978d439ffff
+SRCREV_jsonreference="1f158e563669961b8e54817e3ea57978d439ffff"
+SRC_URI += "git://github.com/go-openapi/jsonreference;name=jsonreference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-openapi/jsonreference"
+
+# github.com/opencontainers/go-digest v1.0.0
+# [1] git ls-remote https://github.com/opencontainers/go-digest ea51bea511f75cfa3ef6098cc253c5c3609b037a
+SRCREV_go-digest="ea51bea511f75cfa3ef6098cc253c5c3609b037a"
+SRC_URI += "git://github.com/opencontainers/go-digest;name=go-digest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/go-digest"
+
+# github.com/prometheus/client_golang v1.18.0
+# [1] git ls-remote https://github.com/prometheus/client_golang 53be91d12107cb69053a8792d0a3a2a6124d59cf
+SRCREV_client_golang="53be91d12107cb69053a8792d0a3a2a6124d59cf"
+SRC_URI += "git://github.com/prometheus/client_golang;name=client_golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/prometheus/client_golang"
+
+# github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75
+# [1] git ls-remote https://github.com/tmc/grpc-websocket-proxy 673ab2c3ae75cc01952b84b88590e30e75dcf395
+SRCREV_grpc-websocket-proxy="673ab2c3ae75cc01952b84b88590e30e75dcf395"
+SRC_URI += "git://github.com/tmc/grpc-websocket-proxy;name=grpc-websocket-proxy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tmc/grpc-websocket-proxy"
+
+# github.com/k3s-io/etcd/client/pkg/v3 v3.5.9-k3s1
+# [1] git ls-remote https://github.com/k3s-io/etcd 341ce193b458049401364c20193ebd14f38fce6d
+SRCREV_pkg-v3="341ce193b458049401364c20193ebd14f38fce6d"
+SRC_URI += "git://github.com/k3s-io/etcd;name=pkg-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/etcd/client/pkg/v3"
+
+# github.com/libp2p/go-libp2p-asn-util v0.3.0
+# [1] git ls-remote https://github.com/libp2p/go-libp2p-asn-util bce6420c4bcf80f1ab03cdfd4b64575e53328099
+SRCREV_go-libp2p-asn-util="bce6420c4bcf80f1ab03cdfd4b64575e53328099"
+SRC_URI += "git://github.com/libp2p/go-libp2p-asn-util;name=go-libp2p-asn-util;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p-asn-util"
+
+# github.com/multiformats/go-multiaddr v0.12.0
+# [1] git ls-remote https://github.com/multiformats/go-multiaddr 5dd793c6fc4935fad347429a48a168acc8073474
+SRCREV_go-multiaddr="5dd793c6fc4935fad347429a48a168acc8073474"
+SRC_URI += "git://github.com/multiformats/go-multiaddr;name=go-multiaddr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multiaddr"
+
+# github.com/multiformats/go-multibase v0.2.0
+# [1] git ls-remote https://github.com/multiformats/go-multibase 58a41f7df1d82d16599e259325b3337d69f70e3b
+SRCREV_go-multibase="58a41f7df1d82d16599e259325b3337d69f70e3b"
+SRC_URI += "git://github.com/multiformats/go-multibase;name=go-multibase;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multibase"
+
+# github.com/multiformats/go-multihash v0.2.3
+# [1] git ls-remote https://github.com/multiformats/go-multihash ff9da31500dddfc675e996601a05cdfc3ce7c764
+SRCREV_go-multihash="ff9da31500dddfc675e996601a05cdfc3ce7c764"
+SRC_URI += "git://github.com/multiformats/go-multihash;name=go-multihash;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multihash"
+
+# github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1
+# [1] git ls-remote https://github.com/whyrusleeping/go-keyspace 5b898ac5add1da7178a4a98e69cb7b9205c085ee
+SRCREV_go-keyspace="5b898ac5add1da7178a4a98e69cb7b9205c085ee"
+SRC_URI += "git://github.com/whyrusleeping/go-keyspace;name=go-keyspace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/whyrusleeping/go-keyspace"
+
+# cloud.google.com/go/compute/metadata v0.2.3
+# [1] git ls-remote https://github.com/googleapis/google-cloud-go cf8081fada0955a1682ce3fc400b44bc141309c7
+SRCREV_metadata="cf8081fada0955a1682ce3fc400b44bc141309c7"
+SRC_URI += "git://github.com/googleapis/google-cloud-go;name=metadata;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/cloud.google.com/go/compute/metadata"
+
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+# [1] git ls-remote https://github.com/AdaLogics/go-fuzz-headers ced1acdcaa24dc39c01b039fc37576c395f506cf
+SRCREV_go-fuzz-headers="ced1acdcaa24dc39c01b039fc37576c395f506cf"
+SRC_URI += "git://github.com/AdaLogics/go-fuzz-headers;name=go-fuzz-headers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AdaLogics/go-fuzz-headers"
+
+# github.com/Azure/go-autorest/tracing v0.6.0
+# [1] git ls-remote https://github.com/Azure/go-autorest b3a0b30a7423314874b3f585289e0e260cf5fc8d
+SRCREV_tracing="b3a0b30a7423314874b3f585289e0e260cf5fc8d"
+SRC_URI += "git://github.com/Azure/go-autorest;name=tracing;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/tracing"
+
+# github.com/inconshreveable/mousetrap v1.1.0
+# [1] git ls-remote https://github.com/inconshreveable/mousetrap 4e8053ee7ef85a6bd26368364a6d27f1641c1d21
+SRCREV_mousetrap="4e8053ee7ef85a6bd26368364a6d27f1641c1d21"
+SRC_URI += "git://github.com/inconshreveable/mousetrap;name=mousetrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/inconshreveable/mousetrap"
+
+# github.com/opencontainers/image-spec v1.1.0-rc5
+# [1] git ls-remote https://github.com/opencontainers/image-spec 1e54f0195ce54b4a1a2ecbac8eab7686d91d3080
+SRCREV_image-spec="1e54f0195ce54b4a1a2ecbac8eab7686d91d3080"
+SRC_URI += "git://github.com/opencontainers/image-spec;name=image-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/image-spec"
+
+# github.com/seccomp/libseccomp-golang v0.10.0
+# [1] git ls-remote https://github.com/seccomp/libseccomp-golang 879684a7b708c2ebc730e62fdae39ae9081b4680
+SRCREV_libseccomp-golang="879684a7b708c2ebc730e62fdae39ae9081b4680"
+SRC_URI += "git://github.com/seccomp/libseccomp-golang;name=libseccomp-golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/seccomp/libseccomp-golang"
+
+# github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980
+# [1] git ls-remote https://github.com/stefanberger/go-pkcs11uri 78d3cae3a9805d89aa4fa80a362ca944c89a1b99
+SRCREV_go-pkcs11uri="78d3cae3a9805d89aa4fa80a362ca944c89a1b99"
+SRC_URI += "git://github.com/stefanberger/go-pkcs11uri;name=go-pkcs11uri;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/stefanberger/go-pkcs11uri"
+
+# sigs.k8s.io/structured-merge-diff/v4 v4.3.0
+# [1] git ls-remote https://github.com/kubernetes-sigs/structured-merge-diff 7785c50b1768fa997df435a484ab9aa5041596a6
+SRCREV_structured-merge-diff-v4="7785c50b1768fa997df435a484ab9aa5041596a6"
+SRC_URI += "git://github.com/kubernetes-sigs/structured-merge-diff;name=structured-merge-diff-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/structured-merge-diff/v4"
+
+# github.com/jbenet/go-temp-err-catcher v0.1.0
+# [1] git ls-remote https://github.com/jbenet/go-temp-err-catcher fa11adda5e7cccb838a208007c9ea79dda63c0c0
+SRCREV_go-temp-err-catcher="fa11adda5e7cccb838a208007c9ea79dda63c0c0"
+SRC_URI += "git://github.com/jbenet/go-temp-err-catcher;name=go-temp-err-catcher;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jbenet/go-temp-err-catcher"
+
+# github.com/multiformats/go-multicodec v0.9.0
+# [1] git ls-remote https://github.com/multiformats/go-multicodec b8b4bf5270f9f220f00bcdeddf1641b13e67cc0b
+SRCREV_go-multicodec="b8b4bf5270f9f220f00bcdeddf1641b13e67cc0b"
+SRC_URI += "git://github.com/multiformats/go-multicodec;name=go-multicodec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multicodec"
+
+# github.com/opentracing/opentracing-go v1.2.0
+# [1] git ls-remote https://github.com/opentracing/opentracing-go d34af3eaa63c4d08ab54863a4bdd0daa45212e12
+SRCREV_opentracing-go="d34af3eaa63c4d08ab54863a4bdd0daa45212e12"
+SRC_URI += "git://github.com/opentracing/opentracing-go;name=opentracing-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opentracing/opentracing-go"
+
+# github.com/twitchyliquid64/golang-asm v0.15.1
+# [1] git ls-remote https://github.com/twitchyliquid64/golang-asm 8d7f1f783b11f9a00f5bcdfcae17f5ac8f22512e
+SRCREV_golang-asm="8d7f1f783b11f9a00f5bcdfcae17f5ac8f22512e"
+SRC_URI += "git://github.com/twitchyliquid64/golang-asm;name=golang-asm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/twitchyliquid64/golang-asm"
+
+# github.com/Azure/go-autorest/autorest v0.11.29
+# [1] git ls-remote https://github.com/Azure/go-autorest c2958ac74c65c138045daa60f149c5f9d949d743
+SRCREV_autorest="c2958ac74c65c138045daa60f149c5f9d949d743"
+SRC_URI += "git://github.com/Azure/go-autorest;name=autorest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest"
+
+# github.com/cyphar/filepath-securejoin v0.2.4
+# [1] git ls-remote https://github.com/cyphar/filepath-securejoin 2710d06c5b4ba3168beffa0689798d2db12e8ac4
+SRCREV_filepath-securejoin="2710d06c5b4ba3168beffa0689798d2db12e8ac4"
+SRC_URI += "git://github.com/cyphar/filepath-securejoin;name=filepath-securejoin;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cyphar/filepath-securejoin"
+
+# github.com/hashicorp/go-retryablehttp v0.7.4
+# [1] git ls-remote https://github.com/hashicorp/go-retryablehttp 571a88bc9c3b7c64575f0e9b0f646af1510f2c76
+SRCREV_go-retryablehttp="571a88bc9c3b7c64575f0e9b0f646af1510f2c76"
+SRC_URI += "git://github.com/hashicorp/go-retryablehttp;name=go-retryablehttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-retryablehttp"
+
+# github.com/libopenstorage/openstorage v1.0.0
+# [1] git ls-remote https://github.com/libopenstorage/openstorage 093a0c3888753c2056e7373183693d670c6bba01
+SRCREV_openstorage="093a0c3888753c2056e7373183693d670c6bba01"
+SRC_URI += "git://github.com/libopenstorage/openstorage;name=openstorage;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libopenstorage/openstorage"
+
+# github.com/go-playground/validator/v10 v10.14.0
+# [1] git ls-remote https://github.com/go-playground/validator ce28d7c4b27fbcafff82bc87a8bf58257beb9030
+SRCREV_v10="ce28d7c4b27fbcafff82bc87a8bf58257beb9030"
+SRC_URI += "git://github.com/go-playground/validator;name=v10;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-playground/validator/v10"
+
+# github.com/hashicorp/golang-lru/arc/v2 v2.0.5
+# [1] git ls-remote https://github.com/hashicorp/golang-lru 3afaa48530f711754c178ceb61ff060d86c17b95
+SRCREV_arc-v2="3afaa48530f711754c178ceb61ff060d86c17b95"
+SRC_URI += "git://github.com/hashicorp/golang-lru;name=arc-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/golang-lru/arc/v2"
+
+# github.com/multiformats/go-multistream v0.4.1
+# [1] git ls-remote https://github.com/multiformats/go-multistream 5b2f48e2db22aa1db90bb5a21aa4e6702d4ee33c
+SRCREV_go-multistream="5b2f48e2db22aa1db90bb5a21aa4e6702d4ee33c"
+SRC_URI += "git://github.com/multiformats/go-multistream;name=go-multistream;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multistream"
+
+# github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0
+# [1] git ls-remote https://github.com/AdamKorcz/go-118-fuzz-build 8075edf89bb034603c758f28fe93143047ac5677
+SRCREV_go-118-fuzz-build="8075edf89bb034603c758f28fe93143047ac5677"
+SRC_URI += "git://github.com/AdamKorcz/go-118-fuzz-build;name=go-118-fuzz-build;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AdamKorcz/go-118-fuzz-build"
+
+# github.com/bronze1man/goStrongswanVici v0.0.0-20221114103242-3f6dc524986c
+# [1] git ls-remote https://github.com/bronze1man/goStrongswanVici 3f6dc524986c8a20ee1e139f9e1bef1595877b5d
+SRCREV_goStrongswanVici="3f6dc524986c8a20ee1e139f9e1bef1595877b5d"
+SRC_URI += "git://github.com/bronze1man/goStrongswanVici;name=goStrongswanVici;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/bronze1man/goStrongswanVici"
+
+# github.com/containernetworking/plugins v1.3.0
+# [1] git ls-remote https://github.com/containernetworking/plugins 38f18d26ecfef550b8bac02656cc11103fd7cff1
+SRCREV_plugins="38f18d26ecfef550b8bac02656cc11103fd7cff1"
+SRC_URI += "git://github.com/containernetworking/plugins;name=plugins;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containernetworking/plugins"
+
+# github.com/google/go-containerregistry v0.14.0
+# [1] git ls-remote https://github.com/google/go-containerregistry 4b081f801f399fa293f23e42ba4c4ac6a6003f2c
+SRCREV_go-containerregistry="4b081f801f399fa293f23e42ba4c4ac6a6003f2c"
+SRC_URI += "git://github.com/google/go-containerregistry;name=go-containerregistry;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/go-containerregistry"
+
+# github.com/grpc-ecosystem/grpc-gateway v1.16.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/grpc-gateway 094a6fe78b3ca888297d090185cdf30f0e42e157
+SRCREV_grpc-gateway="094a6fe78b3ca888297d090185cdf30f0e42e157"
+SRC_URI += "git://github.com/grpc-ecosystem/grpc-gateway;name=grpc-gateway;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/grpc-gateway"
+
+# github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00
+# [1] git ls-remote https://github.com/monochromegane/go-gitignore 205db1a8cc001de79230472da52edde4974df734
+SRCREV_go-gitignore="205db1a8cc001de79230472da52edde4974df734"
+SRC_URI += "git://github.com/monochromegane/go-gitignore;name=go-gitignore;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/monochromegane/go-gitignore"
+
+# github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78
+# [1] git ls-remote https://github.com/opencontainers/runtime-spec 494a5a6aca782455c0fbfc35af8e12f04e98a55e
+SRCREV_runtime-spec="494a5a6aca782455c0fbfc35af8e12f04e98a55e"
+SRC_URI += "git://github.com/opencontainers/runtime-spec;name=runtime-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runtime-spec"
+
+# github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626
+# [1] git ls-remote https://github.com/opencontainers/runtime-tools 2e043c6bd62639199bdd0d5f0c5082797de4de2a
+SRCREV_runtime-tools="2e043c6bd62639199bdd0d5f0c5082797de4de2a"
+SRC_URI += "git://github.com/opencontainers/runtime-tools;name=runtime-tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runtime-tools"
+
+# github.com/containerd/stargz-snapshotter v0.14.4-0.20230913082252-7275d45b185c
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 7275d45b185cd720ce13747f0d0a78e9e7cd60e3
+SRCREV_stargz-snapshotter="7275d45b185cd720ce13747f0d0a78e9e7cd60e3"
+SRC_URI += "git://github.com/containerd/stargz-snapshotter;name=stargz-snapshotter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/stargz-snapshotter"
+
+# github.com/multiformats/go-multiaddr-dns v0.3.1
+# [1] git ls-remote https://github.com/multiformats/go-multiaddr-dns 448c10b622b0c09ce6834487156c1fd9a65f1597
+SRCREV_go-multiaddr-dns="448c10b622b0c09ce6834487156c1fd9a65f1597"
+SRC_URI += "git://github.com/multiformats/go-multiaddr-dns;name=go-multiaddr-dns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multiaddr-dns"
+
+# github.com/multiformats/go-multiaddr-fmt v0.1.0
+# [1] git ls-remote https://github.com/multiformats/go-multiaddr-fmt 113ed87ed03cfff94f29fd95236be3ccd933fd36
+SRCREV_go-multiaddr-fmt="113ed87ed03cfff94f29fd95236be3ccd933fd36"
+SRC_URI += "git://github.com/multiformats/go-multiaddr-fmt;name=go-multiaddr-fmt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multiaddr-fmt"
+
+# github.com/Azure/go-autorest/autorest/to v0.4.0
+# [1] git ls-remote https://github.com/Azure/go-autorest b3a0b30a7423314874b3f585289e0e260cf5fc8d
+SRCREV_to="b3a0b30a7423314874b3f585289e0e260cf5fc8d"
+SRC_URI += "git://github.com/Azure/go-autorest;name=to;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest/to"
+
+# github.com/checkpoint-restore/go-criu/v5 v5.3.0
+# [1] git ls-remote https://github.com/checkpoint-restore/go-criu e3059103a5cf6adca2183e08c0315e8d8d5135a5
+SRCREV_v5="e3059103a5cf6adca2183e08c0315e8d8d5135a5"
+SRC_URI += "git://github.com/checkpoint-restore/go-criu;name=v5;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/checkpoint-restore/go-criu/v5"
+
+# github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0
+# [1] git ls-remote https://github.com/decred/dcrd bacf8444a8bc79178f9eb2c65477ab6df01a6439
+SRCREV_secp256k1-v4="bacf8444a8bc79178f9eb2c65477ab6df01a6439"
+SRC_URI += "git://github.com/decred/dcrd;name=secp256k1-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/decred/dcrd/dcrec/secp256k1/v4"
+
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/grpc-gateway 09e3965a330155f7db8482269d7d91b9bceb7641
+SRCREV_grpc-gateway-v2="09e3965a330155f7db8482269d7d91b9bceb7641"
+SRC_URI += "git://github.com/grpc-ecosystem/grpc-gateway;name=grpc-gateway-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/grpc-gateway/v2"
+
+# google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17
+# [1] git ls-remote https://github.com/googleapis/go-genproto bbf56f31fb17579209f44dda2d2567d20ff21a20
+SRCREV_googleapis-api="bbf56f31fb17579209f44dda2d2567d20ff21a20"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=googleapis-api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto/googleapis/api"
+
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f
+# [1] git ls-remote https://github.com/googleapis/go-genproto 83a465c0220f57b4c18228172454daeffa772607
+SRCREV_rpc="83a465c0220f57b4c18228172454daeffa772607"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=rpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto/googleapis/rpc"
+
+# github.com/rootless-containers/rootlesskit v1.0.1
+# [1] git ls-remote https://github.com/rootless-containers/rootlesskit 5d5f4c0c26e26a6b51d1838c23e793e5836442d0
+SRCREV_rootlesskit="5d5f4c0c26e26a6b51d1838c23e793e5836442d0"
+SRC_URI += "git://github.com/rootless-containers/rootlesskit;name=rootlesskit;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rootless-containers/rootlesskit"
+
+# github.com/Azure/go-autorest/autorest/adal v0.9.23
+# [1] git ls-remote https://github.com/Azure/go-autorest 553a90ae65a6a2b18306fa04d7b1625960c5decb
+SRCREV_adal="553a90ae65a6a2b18306fa04d7b1625960c5decb"
+SRC_URI += "git://github.com/Azure/go-autorest;name=adal;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest/adal"
+
+# github.com/Azure/go-autorest/autorest/date v0.3.0
+# [1] git ls-remote https://github.com/Azure/go-autorest b3a0b30a7423314874b3f585289e0e260cf5fc8d
+SRCREV_date="b3a0b30a7423314874b3f585289e0e260cf5fc8d"
+SRC_URI += "git://github.com/Azure/go-autorest;name=date;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest/date"
+
+# github.com/libp2p/go-libp2p-routing-helpers v0.7.2
+# [1] git ls-remote https://github.com/libp2p/go-libp2p-routing-helpers 71d7c965185ed346e39cc26140ac49ea13b2222f
+SRCREV_go-libp2p-routing-helpers="71d7c965185ed346e39cc26140ac49ea13b2222f"
+SRC_URI += "git://github.com/libp2p/go-libp2p-routing-helpers;name=go-libp2p-routing-helpers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/libp2p/go-libp2p-routing-helpers"
+
+# github.com/Azure/go-autorest/autorest/mocks v0.4.2
+# [1] git ls-remote https://github.com/Azure/go-autorest a91292dd2fc10381ac9b90eea72b92e60761eac4
+SRCREV_mocks="a91292dd2fc10381ac9b90eea72b92e60761eac4"
+SRC_URI += "git://github.com/Azure/go-autorest;name=mocks;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest/mocks"
+
+# github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df
+# [1] git ls-remote https://github.com/antlr/antlr4 8188dc5388dfe9246deb9b6ae507c3693fd55c3f
+SRCREV_antlr-v4="8188dc5388dfe9246deb9b6ae507c3693fd55c3f"
+SRC_URI += "git://github.com/antlr/antlr4;name=antlr-v4;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/antlr/antlr4/runtime/Go/antlr/v4"
+
+# github.com/container-storage-interface/spec v1.8.0
+# [1] git ls-remote https://github.com/container-storage-interface/spec c7ab2f379311a9ae234ae42bdfbfebfa9c15e538
+SRCREV_spec="c7ab2f379311a9ae234ae42bdfbfebfa9c15e538"
+SRC_URI += "git://github.com/container-storage-interface/spec;name=spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/container-storage-interface/spec"
+
+# github.com/docker/docker-credential-helpers v0.7.0
+# [1] git ls-remote https://github.com/docker/docker-credential-helpers ac5992b5f4756fc0398a7d0c93c609e624368bde
+SRCREV_docker-credential-helpers="ac5992b5f4756fc0398a7d0c93c609e624368bde"
+SRC_URI += "git://github.com/docker/docker-credential-helpers;name=docker-credential-helpers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker-credential-helpers"
+
+# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/go-grpc-middleware df0f91b29bbbdfc3a686a7a8edbe2b9de2072fdd
+SRCREV_go-grpc-middleware="df0f91b29bbbdfc3a686a7a8edbe2b9de2072fdd"
+SRC_URI += "git://github.com/grpc-ecosystem/go-grpc-middleware;name=go-grpc-middleware;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/go-grpc-middleware"
+
+# github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
+# [1] git ls-remote https://github.com/grpc-ecosystem/go-grpc-prometheus c225b8c3b01faf2899099b768856a9e916e5087b
+SRCREV_go-grpc-prometheus="c225b8c3b01faf2899099b768856a9e916e5087b"
+SRC_URI += "git://github.com/grpc-ecosystem/go-grpc-prometheus;name=go-grpc-prometheus;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/grpc-ecosystem/go-grpc-prometheus"
+
+# github.com/go-playground/universal-translator v0.18.1
+# [1] git ls-remote https://github.com/go-playground/universal-translator f83cd526536e253181a13835b00cd107f627c505
+SRCREV_universal-translator="f83cd526536e253181a13835b00cd107f627c505"
+SRC_URI += "git://github.com/go-playground/universal-translator;name=universal-translator;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-playground/universal-translator"
+
+# github.com/containerd/fuse-overlayfs-snapshotter v1.0.5
+# [1] git ls-remote https://github.com/containerd/fuse-overlayfs-snapshotter 11c45f4d24689d8cb279813fbcb9bbd01773e0e8
+SRCREV_fuse-overlayfs-snapshotter="11c45f4d24689d8cb279813fbcb9bbd01773e0e8"
+SRC_URI += "git://github.com/containerd/fuse-overlayfs-snapshotter;name=fuse-overlayfs-snapshotter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/fuse-overlayfs-snapshotter"
+
+# github.com/Azure/go-autorest/autorest/validation v0.3.1
+# [1] git ls-remote https://github.com/Azure/go-autorest 446f41b7d65b2ab6c25b1a7afe42abd3622e9110
+SRCREV_validation="446f41b7d65b2ab6c25b1a7afe42abd3622e9110"
+SRC_URI += "git://github.com/Azure/go-autorest;name=validation;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-autorest/autorest/validation"
+
+# github.com/containerd/stargz-snapshotter/estargz v0.14.3
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 6ee6fa1a88df6ea098f6b7dddde29e33f09d5331
+SRCREV_estargz="6ee6fa1a88df6ea098f6b7dddde29e33f09d5331"
+SRC_URI += "git://github.com/containerd/stargz-snapshotter;name=estargz;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/stargz-snapshotter/estargz"
+
+# github.com/GoogleCloudPlatform/k8s-cloud-provider v1.18.1-0.20220218231025-f11817397a1b
+# [1] git ls-remote https://github.com/GoogleCloudPlatform/k8s-cloud-provider f11817397a1bb27e88115807a9c083a36e12eaf8
+SRCREV_k8s-cloud-provider="f11817397a1bb27e88115807a9c083a36e12eaf8"
+SRC_URI += "git://github.com/GoogleCloudPlatform/k8s-cloud-provider;name=k8s-cloud-provider;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/GoogleCloudPlatform/k8s-cloud-provider"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_otlptrace="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlptrace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlptrace"
+
+# github.com/googleapis/enterprise-certificate-proxy v0.3.2
+# [1] git ls-remote https://github.com/googleapis/enterprise-certificate-proxy d928958b5b9ec0c2d3ce5e97ea5d1f000125ba7b
+SRCREV_enterprise-certificate-proxy="d928958b5b9ec0c2d3ce5e97ea5d1f000125ba7b"
+SRC_URI += "git://github.com/googleapis/enterprise-certificate-proxy;name=enterprise-certificate-proxy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/googleapis/enterprise-certificate-proxy"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/api v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_api="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/api"
+
+# github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0
+# [1] git ls-remote https://github.com/matttproud/golang_protobuf_extensions 5a0f9169fc38cc42a5c617c3dc049548ddc27487
+SRCREV_golang_protobuf_extensions-v2="5a0f9169fc38cc42a5c617c3dc049548ddc27487"
+SRC_URI += "git://github.com/matttproud/golang_protobuf_extensions;name=golang_protobuf_extensions-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/matttproud/golang_protobuf_extensions/v2"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kms v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kms="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kms;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kms"
+
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_internal-retry="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=internal-retry;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/internal/retry"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_cri-api="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=cri-api;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kubectl="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kubectl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kubelet="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kubelet;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_metrics="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=metrics;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics"
+
+# sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2
+# [1] git ls-remote https://github.com/kubernetes-sigs/apiserver-network-proxy 60b5f0e02800910cbb363668e285ec0e78d7cae1
+SRCREV_konnectivity-client="60b5f0e02800910cbb363668e285ec0e78d7cae1"
+SRC_URI += "git://github.com/kubernetes-sigs/apiserver-network-proxy;name=konnectivity-client;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/sigs.k8s.io/apiserver-network-proxy/konnectivity-client"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_apiserver="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=apiserver;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_client-go="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=client-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kube-proxy="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kube-proxy;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_cli-runtime="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=cli-runtime;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_mount-utils="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=mount-utils;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_apimachinery="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=apimachinery;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery"
+
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib 356ee7f4343df3704346603fbde1b8d3d8fb86e9
+SRCREV_otelhttp="356ee7f4343df3704346603fbde1b8d3d8fb86e9"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelhttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/endpointslice v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_endpointslice="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=endpointslice;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/endpointslice"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_cloud-provider="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=cloud-provider;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_component-base="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=component-base;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_code-generator="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=code-generator;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kube-scheduler="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kube-scheduler;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.13.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go f2fd476f433128c2494476950ce11600a51bbe35
+SRCREV_otlptracegrpc="f2fd476f433128c2494476950ce11600a51bbe35"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otlptracegrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kube-aggregator="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kube-aggregator;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_cluster-bootstrap="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=cluster-bootstrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_component-helpers="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=component-helpers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_controller-manager="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=controller-manager;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_csi-translation-lib="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=csi-translation-lib;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib"
+
+# github.com/container-orchestrated-devices/container-device-interface v0.5.4
+# [1] git ls-remote https://github.com/cncf-tags/container-device-interface 0a1a5bea37b41bbdbb65d0e42b6305eba051f185
+SRCREV_container-device-interface="0a1a5bea37b41bbdbb65d0e42b6305eba051f185"
+SRC_URI += "git://github.com/cncf-tags/container-device-interface;name=container-device-interface;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/container-orchestrated-devices/container-device-interface"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_legacy-cloud-providers="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=legacy-cloud-providers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_pod-security-admission="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=pod-security-admission;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_apiextensions-apiserver="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=apiextensions-apiserver;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_kube-controller-manager="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=kube-controller-manager;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager"
+
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib c4876c33a8e2e4b09501013f3543153d8aa10178
+SRCREV_otelgrpc="c4876c33a8e2e4b09501013f3543153d8aa10178"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelgrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc"
+
+# github.com/k3s-io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v1.28.7-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 94b07a975a29425d3f5f835ef5e7d9c22f33f8c1
+SRCREV_dynamic-resource-allocation="94b07a975a29425d3f5f835ef5e7d9c22f33f8c1"
+SRC_URI += "git://github.com/k3s-io/kubernetes;name=dynamic-resource-allocation;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/k3s-io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation"
+
+# go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful v0.35.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib c4876c33a8e2e4b09501013f3543153d8aa10178
+SRCREV_otelrestful="c4876c33a8e2e4b09501013f3543153d8aa10178"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelrestful;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful"
+
diff --git a/recipes-containers/kubernetes/README.md b/recipes-containers/kubernetes/README.md
new file mode 100644
index 00000000..ae79d6c2
--- /dev/null
+++ b/recipes-containers/kubernetes/README.md
@@ -0,0 +1,117 @@
+# k8s: Kubernetes
+
+meta-virtualization provides the recipes and packages suitable for a k8s
+cluster instance.
+
+For a kubernetes controller:
+
+ - packagegroup-k8s-host
+
+For a kubernetes worker/node:
+
+ - packagegroup-k8s-node
+
+If kernel issues or missing features are detected, consider adding the
+"kernel-modules" package to your image (Since the configuration and RDEPENDS
+may not be correct for your kernel + k8s version).
+
+## CNI
+
+The CNI base packages provide core support and are installed by default as
+dependencies of the kubernetes packages. Minimal configuration and startup
+are provided, but you will need to apply the CNI configuration of your choice
+after boot (see below fo an example)
+
+## Configure and initialize the host
+
+A convenience script "k8s-init" is provided to do basic setup on the controller
+node. After the contoller boots, run it for kubeadm setup and other basic
+configuration.
+
+Once the node is ready ('kubectl get nodes' to check), follow the instructions
+for copying the token to your home directory, and apply the networking configuration
+of choice (flannel in the example):
+
+```shell
+ % mkdir -p $HOME/.kube
+ % cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
+ % chown $(id -u):$(id -g) $HOME/.kube/config
+
+ % kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
+```
+
+## Configuration and initialize the node/worker
+
+Once the kubernetes node has booted, it is ready to join the cluster. Some
+basica configuration is done via the packages and a systctl.d configuration
+snippet.
+
+Join the cluster (substitute your controller ip and token information):
+
+```shell
+kubeadm join <controller ip>:6443 --token cq8ngi.6m6mgqi9zf08ypc4 --discovery-token-ca-cert-hash sha256:6064ae531c8dad824f9eadff030f83ec84d00796fac75f1adbd343255eb34fd2
+```
+
+## Notes:
+
+Memory:
+
+ if running under qemu, the default of 256M of memory is not enough, k3s will
+ OOM and exit.
+
+ Boot with qemuparams="-m 2048" to boot with 2G of memory (or choose the
+ appropriate amount for your configuration)
+
+CPUs:
+
+ Kubernetes needs at least two cpus, so ensure your qemuboot is smp of at
+ least 2, and/or that your hardware has the required capabilties.
+
+Disk:
+
+ if using qemu and core-image* you'll need to add extra space in your disks
+ to ensure containers can start. The following in your image recipe, or
+ local.conf would add 2G of extra space to the rootfs:
+
+```shell
+IMAGE_ROOTFS_EXTRA_SPACE = "2097152"
+```
+
+## Example qemux86-64 boot line:
+
+```shell
+runqemu qemux86-64 nographic kvm slirp qemuparams="-m 2048"
+```
+k8s logs can be seen via:
+
+```shell
+% journalctl -u kubelet
+```
+
+or
+
+```shell
+% journalctl -xe
+```
+
+## Example output from qemux86-64:
+
+If you've lost the join token, you can create a new one, or list existing
+ones:
+
+```shell
+root@qemux86-64-7b:~# kubeadm token create --print-join-command
+kubeadm join 10.10.10.117:6443 --token dr71zq.y5vi3s2n2antvcej --discovery-token-ca-cert-hash sha256:6064ae531c8dad824f9eadff030f83ec84d00796fac75f1adbd343255eb34fd2
+
+root@qemux86-64-7b:~# kubeadm token list
+TOKEN TTL EXPIRES USAGES DESCRIPTION EXTRA GROUPS
+cq8ngi.6m6mgqi9zf08ypc4 23h 2021-12-16T16:58:02Z authentication,signing The default bootstrap token generated by 'kubeadm init'. system:bootstrappers:kubeadm:default-node-token
+dr71zq.y5vi3s2n2antvcej 23h 2021-12-16T17:46:28Z authentication,signing <none> system:bootstrappers:kubeadm:default-node-token
+```
+
+```shell
+root@qemux86-64:~# kubectl get nodes
+NAME STATUS ROLES AGE VERSION
+qemux86-64-7b Ready control-plane,master 51m v1.23.1-rc.0.1+dd1b0a12471310-dirty
+qemux86-64-9d Ready <none> 49m v1.23.1-rc.0.1+dd1b0a12471310-dirty
+```
diff --git a/recipes-containers/kubernetes/kubernetes/0001-build-golang.sh-convert-remaining-go-calls-to-use.patch b/recipes-containers/kubernetes/kubernetes/0001-build-golang.sh-convert-remaining-go-calls-to-use.patch
new file mode 100644
index 00000000..ae956794
--- /dev/null
+++ b/recipes-containers/kubernetes/kubernetes/0001-build-golang.sh-convert-remaining-go-calls-to-use.patch
@@ -0,0 +1,50 @@
+From 9973a66665992c49593595ae1eb70848907ea6a9 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Wed, 12 Aug 2020 16:01:49 +0000
+Subject: [PATCH] build/golang.sh: convert remaining 'go' calls to use
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ hack/lib/golang.sh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+Index: kubernetes/hack/lib/golang.sh
+===================================================================
+--- kubernetes.orig/hack/lib/golang.sh
++++ kubernetes/hack/lib/golang.sh
+@@ -689,7 +689,7 @@
+ kube::golang::create_coverage_dummy_test "${package}"
+ kube::util::trap_add "kube::golang::delete_coverage_dummy_test \"${package}\"" EXIT
+
+- go test -c -o "$(kube::golang::outfile_for_binary "${package}" "${platform}")" \
++ $GO test -c -o "$(kube::golang::outfile_for_binary "${package}" "${platform}")" \
+ -covermode count \
+ -coverpkg k8s.io/...,k8s.io/kubernetes/vendor/k8s.io/... \
+ "${build_args[@]}" \
+@@ -701,13 +701,13 @@
+ done
+ if [[ "${#uncovered[@]}" != 0 ]]; then
+ V=2 kube::log::info "Building ${uncovered[*]} without coverage..."
+- GO111MODULE=on GOPROXY=off go install "${build_args[@]}" "${uncovered[@]}"
++ GO111MODULE=on GOPROXY=off $GO install "${build_args[@]}" "${uncovered[@]}"
+ else
+ V=2 kube::log::info "Nothing to build without coverage."
+ fi
+ else
+ V=2 kube::log::info "Coverage is disabled."
+- GO111MODULE=on GOPROXY=off go install "${build_args[@]}" "$@"
++ GO111MODULE=on GOPROXY=off $GO install "${build_args[@]}" "$@"
+ fi
+ }
+
+@@ -769,7 +769,7 @@
+ testpkg=$(dirname "${test}")
+
+ mkdir -p "$(dirname "${outfile}")"
+- go test -c \
++ $GO test -c \
+ ${goflags:+"${goflags[@]}"} \
+ -gcflags="${gogcflags}" \
+ -asmflags="${goasmflags}" \
diff --git a/recipes-containers/kubernetes/kubernetes/0001-build-hack-allow-go-1.20-building.patch b/recipes-containers/kubernetes/kubernetes/0001-build-hack-allow-go-1.20-building.patch
new file mode 100644
index 00000000..ac2d8c47
--- /dev/null
+++ b/recipes-containers/kubernetes/kubernetes/0001-build-hack-allow-go-1.20-building.patch
@@ -0,0 +1,35 @@
+From 6f67131b030c4c228cabb33d45ae9330cbf8fa0a Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 27 Feb 2024 18:05:54 +0000
+Subject: [PATCH] build/hack: allow go 1.20 building
+
+Although k8s checks for, and demands, golang 1.21.x, runtime
+tests show that golang 1.20.x is properly building and providing
+enough for core functionality.
+
+In an effort to see what else may be lurking, we patch out the
+check to allow builds with our 1.20.x toolchain.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ hack/lib/golang.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh
+index 588288285bb..eb2bcc917b8 100755
+--- a/hack/lib/golang.sh
++++ b/hack/lib/golang.sh
+@@ -499,7 +499,7 @@ Detected go version: ${go_version[*]}.
+ Kubernetes requires ${minimum_go_version} or greater.
+ Please install ${minimum_go_version} or later.
+ EOF
+- return 2
++ return 0
+ fi
+ }
+
+--
+2.39.2
+
diff --git a/recipes-containers/kubernetes/kubernetes/0001-cross-don-t-build-tests-by-default.patch b/recipes-containers/kubernetes/kubernetes/0001-cross-don-t-build-tests-by-default.patch
index 659e3013..c24088f1 100644
--- a/recipes-containers/kubernetes/kubernetes/0001-cross-don-t-build-tests-by-default.patch
+++ b/recipes-containers/kubernetes/kubernetes/0001-cross-don-t-build-tests-by-default.patch
@@ -10,15 +10,17 @@ In our case, we are cross building and can't build the server test
components without error. As such, we patch the targets out of the
script to allow a successful build.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
hack/make-rules/cross.sh | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/src/import/hack/make-rules/cross.sh b/hack/make-rules/cross.sh
+diff --git a/hack/make-rules/cross.sh b/hack/make-rules/cross.sh
index 8e1e938..0898c5c 100755
---- a/src/import/hack/make-rules/cross.sh
-+++ b/src/import/hack/make-rules/cross.sh
+--- a/hack/make-rules/cross.sh
++++ b/hack/make-rules/cross.sh
@@ -33,6 +33,6 @@ make all WHAT="${KUBE_NODE_TARGETS[*]}" KUBE_BUILD_PLATFORMS="${KUBE_NODE_PLATFO
make all WHAT="${KUBE_CLIENT_TARGETS[*]}" KUBE_BUILD_PLATFORMS="${KUBE_CLIENT_PLATFORMS[*]}"
diff --git a/recipes-containers/kubernetes/kubernetes/0001-fix-compiling-failure-execvp-bin-bash-Argument-list-.patch b/recipes-containers/kubernetes/kubernetes/0001-fix-compiling-failure-execvp-bin-bash-Argument-list-.patch
deleted file mode 100644
index 42fd51ac..00000000
--- a/recipes-containers/kubernetes/kubernetes/0001-fix-compiling-failure-execvp-bin-bash-Argument-list-.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From dbca1bfc6ffca8a6536d91a716cb9c5e9bc2f8a0 Mon Sep 17 00:00:00 2001
-From: Hongxu Jia <hongxu.jia@windriver.com>
-Date: Tue, 17 Sep 2019 14:43:30 +0800
-Subject: [PATCH] fix compiling failure: execvp: /bin/bash: Argument list too
- long
-
-Use GNU Make 4.2.1(such as fedora-29) to build k8s in a long directory,
-it failed with `execvp: /bin/bash: Argument list too long'
-[snip]
-$ cd /buildarea1/hjia/wrlinux-1019/I_/suspect_/that_/if_/you_/create_/your_/project_/in_/a_/very_/deep_/directory/build_master-wr_qemux86-64_faw_2019090509/build/tmp-glibc/work/core2-64-wrs-linux/kubernetes/v1.16.0-alpha+git7054e3ead7e1a00ca6ac3ec47ea355b76061a35a-r0/kubernetes-v1.16.0-alpha+git7054e3ead7e1a00ca6ac3ec47ea355b76061a35a/src/import
-$ make cross KUBE_BUILD_PLATFORMS=linux/amd64 GOLDFLAGS=""
-|+++ [0804 16:38:32] Building go targets for linux/amd64:
-| ./vendor/k8s.io/code-generator/cmd/deepcopy-gen
-|make[1]: execvp: /bin/bash: Argument list too long
-|make[1]: *** [Makefile.generated_files:184: pkg/kubectl/cmd/testing/zz_generated.deepcopy.go] Error 127
-|make: *** [Makefile:557: generated_files] Error 2
-...
-[snip]
-
-From make manual [1]
-$?
- The names of all the prerequisites that are newer than the target, with spaces between them.
-
-While two `$?' was passed to bash in a line, it caused above failure,
-drop a duplicated one could workaround the issue.
-
-[1] https://www.gnu.org/software/make/manual/html_node/Automatic-Variables.html
-
-Upstream-Status: Submitted [https://github.com/kubernetes/kubernetes/pull/82777]
-
-Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
----
- src/import/build/root/Makefile.generated_files | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/import/build/root/Makefile.generated_files b/src/import/build/root/Makefile.generated_files
-index 4892325..f17f1f3 100644
---- a/src/import/build/root/Makefile.generated_files
-+++ b/src/import/build/root/Makefile.generated_files
-@@ -182,7 +182,7 @@ $(META_DIR)/$(DEEPCOPY_GEN).todo: $(DEEPCOPY_FILES)
-
- $(DEEPCOPY_FILES): $(DEEPCOPY_GEN)
- if [[ "$(DBG_CODEGEN)" == 1 ]]; then \
-- echo "DBG: deepcopy needed $(@D): $?"; \
-+ echo "DBG: deepcopy needed $(@D):"; \
- ls -lf --full-time $@ $? || true; \
- fi
- echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(DEEPCOPY_GEN).todo
-@@ -276,7 +276,7 @@ $(META_DIR)/$(DEFAULTER_GEN).todo: $(DEFAULTER_FILES)
-
- $(DEFAULTER_FILES): $(DEFAULTER_GEN)
- if [[ "$(DBG_CODEGEN)" == 1 ]]; then \
-- echo "DBG: defaulter needed $(@D): $?"; \
-+ echo "DBG: defaulter needed $(@D):"; \
- ls -lf --full-time $@ $? || true; \
- fi
- echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(DEFAULTER_GEN).todo
-@@ -380,7 +380,7 @@ $(META_DIR)/$(CONVERSION_GEN).todo: $(CONVERSION_FILES)
-
- $(CONVERSION_FILES): $(CONVERSION_GEN)
- if [[ "$(DBG_CODEGEN)" == 1 ]]; then \
-- echo "DBG: conversion needed $(@D): $?"; \
-+ echo "DBG: conversion needed $(@D):"; \
- ls -lf --full-time $@ $? || true; \
- fi
- echo $(PRJ_SRC_PATH)/$(@D) >> $(META_DIR)/$(CONVERSION_GEN).todo
---
-2.7.4
-
diff --git a/recipes-containers/kubernetes/kubernetes/0001-hack-lib-golang.sh-use-CC-from-environment.patch b/recipes-containers/kubernetes/kubernetes/0001-hack-lib-golang.sh-use-CC-from-environment.patch
index 62d05210..15e8ffa5 100644
--- a/recipes-containers/kubernetes/kubernetes/0001-hack-lib-golang.sh-use-CC-from-environment.patch
+++ b/recipes-containers/kubernetes/kubernetes/0001-hack-lib-golang.sh-use-CC-from-environment.patch
@@ -1,40 +1,44 @@
-From 9cbb2d523d481053d405ebac830c2074b00d3417 Mon Sep 17 00:00:00 2001
+From 116ccf93eef322db23e3bd4f35b12be09ebfbde5 Mon Sep 17 00:00:00 2001
From: Koen Kooi <koen.kooi@linaro.org>
Date: Mon, 23 Jul 2018 15:28:02 +0200
-Subject: [PATCH] hack/lib/golang.sh: use CC from environment
+Subject: [PATCH 1/2] hack/lib/golang.sh: use CC from environment
Toolchain tupples differs, especially when using vendor provides ones.
-Upstream-status: Inappropriate [embedded specific]
+Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Koen Kooi <koen.kooi@linaro.org>
---
- hack/lib/golang.sh | 4 ----
- 1 file changed, 4 deletions(-)
+ hack/lib/golang.sh | 5 -----
+ 1 file changed, 5 deletions(-)
diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh
-index c5d4634..563e2b4b 100755
---- a/src/import/hack/lib/golang.sh
-+++ b/src/import/hack/lib/golang.sh
-@@ -278,19 +278,15 @@ kube::golang::set_platform_envs() {
+index fb97ee76783..0ed2d719dd1 100755
+--- a/hack/lib/golang.sh
++++ b/hack/lib/golang.sh
+@@ -419,23 +419,18 @@ kube::golang::set_platform_envs() {
case "${platform}" in
+ "linux/amd64")
+ export CGO_ENABLED=1
+- export CC=${KUBE_LINUX_AMD64_CC:-x86_64-linux-gnu-gcc}
+ ;;
"linux/arm")
export CGO_ENABLED=1
-- export CC=arm-linux-gnueabihf-gcc
+- export CC=${KUBE_LINUX_ARM_CC:-arm-linux-gnueabihf-gcc}
;;
"linux/arm64")
export CGO_ENABLED=1
-- export CC=aarch64-linux-gnu-gcc
+- export CC=${KUBE_LINUX_ARM64_CC:-aarch64-linux-gnu-gcc}
;;
"linux/ppc64le")
export CGO_ENABLED=1
-- export CC=powerpc64le-linux-gnu-gcc
+- export CC=${KUBE_LINUX_PPC64LE_CC:-powerpc64le-linux-gnu-gcc}
;;
"linux/s390x")
export CGO_ENABLED=1
-- export CC=s390x-linux-gnu-gcc
+- export CC=${KUBE_LINUX_S390X_CC:-s390x-linux-gnu-gcc}
;;
esac
fi
--
-2.9.5
+2.37.1
diff --git a/recipes-containers/kubernetes/kubernetes/99-kubernetes.conf b/recipes-containers/kubernetes/kubernetes/99-kubernetes.conf
new file mode 100644
index 00000000..89331ca2
--- /dev/null
+++ b/recipes-containers/kubernetes/kubernetes/99-kubernetes.conf
@@ -0,0 +1 @@
+net.ipv4.ip_forward = 1
diff --git a/recipes-containers/kubernetes/kubernetes/cni-containerd-net.conflist b/recipes-containers/kubernetes/kubernetes/cni-containerd-net.conflist
new file mode 100644
index 00000000..ca434d6f
--- /dev/null
+++ b/recipes-containers/kubernetes/kubernetes/cni-containerd-net.conflist
@@ -0,0 +1,24 @@
+{
+ "cniVersion": "0.4.0",
+ "name": "containerd-net",
+ "plugins": [
+ {
+ "type": "bridge",
+ "bridge": "cni0",
+ "isGateway": true,
+ "ipMasq": true,
+ "promiscMode": true,
+ "ipam": {
+ "type": "host-local",
+ "subnet": "10.88.0.0/16",
+ "routes": [
+ { "dst": "0.0.0.0/0" }
+ ]
+ }
+ },
+ {
+ "type": "portmap",
+ "capabilities": {"portMappings": true}
+ }
+ ]
+}
diff --git a/recipes-containers/kubernetes/kubernetes/k8s-init b/recipes-containers/kubernetes/kubernetes/k8s-init
new file mode 100644
index 00000000..8aaa86e8
--- /dev/null
+++ b/recipes-containers/kubernetes/kubernetes/k8s-init
@@ -0,0 +1,31 @@
+#!/bin/sh
+#
+# Copyright (C) 2021 Bruce Ashfield
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# cleanup the iptables
+if [ -f /etc/sysconfig/iptables ]; then
+ cp /etc/sysconfig/iptables /etc/sysconfig/iptables.ORIG
+fi
+iptables --flush && iptables --flush && iptables-save > /etc/sysconfig/iptables
+systemctl restart iptables.service
+
+# Load/Enable br_netfilter kernel module
+modprobe br_netfilter
+modprobe overlay
+
+echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables
+echo '1' > /proc/sys/net/bridge/bridge-nf-call-ip6tables
+echo 'net.bridge.bridge-nf-call-iptables=1' >> /etc/sysctl.d/k8s.conf
+echo 'net.bridge.bridge-nf-call-ip6tables=1' >> /etc/sysctl.d/k8s.conf
+echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.d/k8s.conf
+
+systemctl restart systemd-sysctl.service
+
+kubeadm init
+
+# Copy the cluster configuration to the regular users home directory
+mkdir -p $HOME/.kube
+cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
+chown $(id -u):$(id -g) $HOME/.kube/config
diff --git a/recipes-containers/kubernetes/kubernetes_git.bb b/recipes-containers/kubernetes/kubernetes_git.bb
index fae554da..caa5ec17 100644
--- a/recipes-containers/kubernetes/kubernetes_git.bb
+++ b/recipes-containers/kubernetes/kubernetes_git.bb
@@ -1,51 +1,85 @@
-HOMEPAGE = "git://github.com/kubernetes/kubernetes"
+HOMEPAGE = "git://github.com/kubernetes/kubernetes;branch=master;protocol=https"
SUMMARY = "Production-Grade Container Scheduling and Management"
DESCRIPTION = "Kubernetes is an open source system for managing containerized \
applications across multiple hosts, providing basic mechanisms for deployment, \
maintenance, and scaling of applications. \
"
-PV = "v1.16.2+git${SRCREV_kubernetes}"
-SRCREV_kubernetes = "c97fe5036ef3df2967d086711e6c0c405941e14b"
+PV = "v1.29.1+git${SRCREV_kubernetes}"
+CVE_VERSION = "1.29.1"
+SRCREV_kubernetes = "a02da633101bd7919153dd56412b09221c0139bf"
+SRCREV_kubernetes-release = "21382abdbfa8e6a43fd417306fa649cb651cc06e"
+PE = "1"
-SRC_URI = "git://github.com/kubernetes/kubernetes.git;branch=release-1.16;name=kubernetes \
+BBCLASSEXTEND = "devupstream:target"
+LIC_FILES_CHKSUM:class-devupstream = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+DEFAULT_PREFERENCE:class-devupstream = "-1"
+SRC_URI:class-devupstream = "git://github.com/kubernetes/kubernetes.git;branch=release-1.29;name=kubernetes;protocol=https \
+ git://github.com/kubernetes/release;branch=master;name=kubernetes-release;destsuffix=git/release;protocol=https \
+ "
+SRCREV_kubernetes:class-devupstream = "e3b5e621f07f0fee298f641ebded61b8f393fe27"
+SRCREV_kubernetes-release:class-devupstream = "21382abdbfa8e6a43fd417306fa649cb651cc06e"
+PV:class-devupstream = "v1.28.2+git${SRCREV_kubernetes}"
+
+SRCREV_FORMAT ?= "kubernetes_release"
+
+SRC_URI = "git://github.com/kubernetes/kubernetes.git;branch=release-1.29;name=kubernetes;protocol=https;destsuffix=git/src/github.com/kubernetes/kubernetes \
+ git://github.com/kubernetes/release;branch=master;name=kubernetes-release;destsuffix=git/release;protocol=https"
+
+SRC_URI:append = " \
file://0001-hack-lib-golang.sh-use-CC-from-environment.patch \
file://0001-cross-don-t-build-tests-by-default.patch \
- file://0001-fix-compiling-failure-execvp-bin-bash-Argument-list-.patch \
+ file://0001-build-golang.sh-convert-remaining-go-calls-to-use.patch \
+ file://0001-build-hack-allow-go-1.20-building.patch \
+ file://cni-containerd-net.conflist \
+ file://k8s-init \
+ file://99-kubernetes.conf \
"
DEPENDS += "rsync-native \
coreutils-native \
+ go-native \
"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
GO_IMPORT = "import"
+S = "${WORKDIR}/git/src/github.com/kubernetes/kubernetes"
inherit systemd
inherit go
inherit goarch
+inherit cni_networking
COMPATIBLE_HOST = '(x86_64.*|arm.*|aarch64.*)-linux'
do_compile() {
- # link fixups for compilation
- rm -f ${S}/src/import/vendor/src
- ln -sf ./ ${S}/src/import/vendor/src
-
- export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
- cd ${S}/src/import
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go:${WORKDIR}/git/"
+ cd ${S}
# Build the host tools first, using the host compiler
export GOARCH="${BUILD_GOARCH}"
# Pass the needed cflags/ldflags so that cgo can find the needed headers files and libraries
export CGO_ENABLED="1"
- export CFLAGS=""
- export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- make generated_files KUBE_BUILD_PLATFORMS="${HOST_GOOS}/${BUILD_GOARCH}"
+ export CFLAGS="${BUILD_CFLAGS}"
+ export LDFLAGS="${BUILD_LDFLAGS}"
+ export CGO_CFLAGS="${BUILD_CFLAGS}"
+ # as of go 1.15.5, there are some flags the CGO doesn't like. Rather than
+ # clearing them all, we sed away the ones we don't want.
+ export CGO_LDFLAGS="$(echo ${BUILD_LDFLAGS} | sed 's/-Wl,-O1//g' | sed 's/-Wl,--dynamic-linker.*?\( \|$\)//g')"
+ export CC="${BUILD_CC}"
+ export LD="${BUILD_LD}"
+
+ # set the toolchain to local to avoid an attempted fetch of
+ # valiation by the build
+ # https://github.com/actions/setup-go/issues/420
+ export GOTOOLCHAIN="local"
+
+ # make generated_files GO="go" KUBE_BUILD_PLATFORMS="${HOST_GOOS}/${BUILD_GOARCH}"
+ # is replaced by:
+ # ./hack/update-codegen.sh
+ # but we don't appear to need either anymore, but we leave them as a placeholder/reminder
# Build the target binaries
export GOARCH="${TARGET_GOARCH}"
@@ -53,8 +87,14 @@ do_compile() {
export CGO_ENABLED="1"
export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CFLAGS=""
+ export LDFLAGS=""
+ export CC="${CC}"
+ export LD="${LD}"
+ export GOBIN=""
+
# to limit what is built, use 'WHAT', i.e. make WHAT=cmd/kubelet
- make cross KUBE_BUILD_PLATFORMS=${GOOS}/${GOARCH} GOLDFLAGS=""
+ make cross CGO_FLAGS=${CGO_FLAGS} GO=${GO} KUBE_BUILD_PLATFORMS=${GOOS}/${GOARCH} GOLDFLAGS="" DBG=1
}
do_install() {
@@ -64,38 +104,69 @@ do_install() {
install -d ${D}${sysconfdir}/kubernetes/manifests/
- install -m 755 -D ${S}/src/import/_output/local/bin/${TARGET_GOOS}/${TARGET_GOARCH}/* ${D}/${bindir}
+ install -m 755 -D ${S}/_output/local/bin/${TARGET_GOOS}/${TARGET_GOARCH}/* ${D}/${bindir}
+
+ install -m 0644 ${WORKDIR}/git/release/cmd/kubepkg/templates/latest/deb/kubelet/lib/systemd/system/kubelet.service ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/git/release/cmd/kubepkg/templates/latest/deb/kubeadm/10-kubeadm.conf ${D}${systemd_unitdir}/system/kubelet.service.d/
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ install -d "${D}${BIN_PREFIX}${base_bindir}"
+ install -m 755 "${WORKDIR}/k8s-init" "${D}${BIN_PREFIX}${base_bindir}"
- install -m 0644 ${S}/src/import/build/debs/kubelet.service ${D}${systemd_unitdir}/system/
- install -m 0644 ${S}/src/import/build/debs/10-kubeadm.conf ${D}${systemd_unitdir}/system/kubelet.service.d/
+ install -d ${D}${sysconfdir}/sysctl.d
+ install -m 0644 "${WORKDIR}/99-kubernetes.conf" "${D}${sysconfdir}/sysctl.d"
+ fi
}
-PACKAGES =+ "kubeadm kubectl kubelet kube-proxy ${PN}-misc"
+CNI_NETWORKING_FILES ?= "${WORKDIR}/cni-containerd-net.conflist"
-ALLOW_EMPTY_${PN} = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
-INSANE_SKIP_${PN}-misc += "ldflags already-stripped"
+PACKAGES =+ "kubeadm kubectl kubelet kube-proxy ${PN}-misc ${PN}-host"
+
+ALLOW_EMPTY:${PN} = "1"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN}-misc += "ldflags already-stripped textrel"
+INSANE_SKIP:kubelet += "ldflags already-stripped"
# Note: we are explicitly *not* adding docker to the rdepends, since we allow
# backends like cri-o to be used.
-RDEPENDS_${PN} += "kubeadm \
+RDEPENDS:${PN} += "kubeadm \
kubectl \
kubelet \
- cni"
+ kubernetes-cni"
-RDEPENDS_kubeadm = "kubelet kubectl"
-FILES_kubeadm = "${bindir}/kubeadm ${systemd_unitdir}/system/kubelet.service.d/*"
+RDEPENDS:kubeadm = "kubelet kubectl cri-tools conntrack-tools"
+FILES:kubeadm = "${bindir}/kubeadm ${systemd_unitdir}/system/kubelet.service.d/*"
-RDEPENDS_kubelet = "iptables socat util-linux ethtool iproute2 ebtables iproute2-tc"
-FILES_kubelet = "${bindir}/kubelet ${systemd_unitdir}/system/kubelet.service ${sysconfdir}/kubernetes/manifests/"
+RDEPENDS:kubelet = "iptables socat util-linux ethtool iproute2 ebtables iproute2-tc"
+FILES:kubelet = "${bindir}/kubelet ${systemd_unitdir}/system/kubelet.service ${sysconfdir}/kubernetes/manifests/"
SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','kubelet','',d)}"
-SYSTEMD_SERVICE_kubelet = "${@bb.utils.contains('DISTRO_FEATURES','systemd','kubelet.service','',d)}"
-SYSTEMD_AUTO_ENABLE_kubelet = "enable"
-
-FILES_kubectl = "${bindir}/kubectl"
-FILES_kube-proxy = "${bindir}/kube-proxy"
-FILES_${PN}-misc = "${bindir}"
-
+SYSTEMD_SERVICE:kubelet = "${@bb.utils.contains('DISTRO_FEATURES','systemd','kubelet.service','',d)}"
+SYSTEMD_AUTO_ENABLE:kubelet = "enable"
+
+FILES:kubectl = "${bindir}/kubectl"
+FILES:kube-proxy = "${bindir}/kube-proxy"
+FILES:${PN}-misc = "${bindir} ${sysconfdir}/sysctl.d"
+
+ALLOW_EMPTY:${PN}-host = "1"
+FILES:${PN}-host = "${BIN_PREFIX}${base_bindir}/k8s-init"
+RDEPENDS:${PN}-host = "${PN}"
+
+RRECOMMENDS:${PN} = "\
+ kernel-module-xt-addrtype \
+ kernel-module-xt-nat \
+ kernel-module-xt-multiport \
+ kernel-module-xt-conntrack \
+ kernel-module-xt-comment \
+ kernel-module-xt-mark \
+ kernel-module-xt-connmark \
+ kernel-module-vxlan \
+ kernel-module-xt-masquerade \
+ kernel-module-xt-statistic \
+ kernel-module-xt-physdev \
+ kernel-module-xt-nflog \
+ kernel-module-xt-limit \
+ kernel-module-nfnetlink-log \
+ "
deltask compile_ptest_base
diff --git a/recipes-containers/lxc/README b/recipes-containers/lxc/README
new file mode 100644
index 00000000..e6e3f1af
--- /dev/null
+++ b/recipes-containers/lxc/README
@@ -0,0 +1,23 @@
+install:
+--------
+
+ Install the following packages to your image:
+
+ IMAGE_INSTALL:append = "lxc lxc-networking kernel-modules"
+
+ These will put the core lxc application and networking onto your image.
+ No other configuration is required for a basic system.
+
+ Note: has only been tested with systemd, sysvinit patches are welcome
+
+ Note: Partially conflicts with packages such as k3s, networking will fail to
+ start.
+
+sample test:
+-----------
+
+ % lxc-create -n test -t download -- --server us.lxd.images.canonical.com -d alpine -r 3.16 -a amd64
+ % lxc-start test
+ % lxc-console test
+
+
diff --git a/recipes-containers/lxc/files/0001-download-don-t-try-compatbility-index.patch b/recipes-containers/lxc/files/0001-download-don-t-try-compatbility-index.patch
new file mode 100644
index 00000000..a1e5fb67
--- /dev/null
+++ b/recipes-containers/lxc/files/0001-download-don-t-try-compatbility-index.patch
@@ -0,0 +1,45 @@
+From d69c856f90c752637b33e59fbbcfa31f619e2285 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Sun, 14 Aug 2022 22:44:24 -0400
+Subject: [PATCH] download: don't try compatbility index
+
+This is being mistaken for a valid, non compat index .. and we never
+try for the one that exists (the index without a compatibility
+extension). So we just drop the compat try for now.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ templates/lxc-download.in | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/templates/lxc-download.in b/templates/lxc-download.in
+index 9a3290fbc..216e4dda7 100755
+--- a/templates/lxc-download.in
++++ b/templates/lxc-download.in
+@@ -234,9 +234,7 @@ if [ "${DOWNLOAD_LIST_IMAGES}" = "true" ] || [ "${DOWNLOAD_INTERACTIVE}" = "true
+ DOWNLOAD_INDEX_PATH="/meta/1.0/index-${DOWNLOAD_MODE}"
+
+ echo "Downloading the image index"
+- if ! download_file "${DOWNLOAD_INDEX_PATH}.${DOWNLOAD_COMPAT_LEVEL}" "${DOWNLOAD_TEMP}/index" noexit; then
+- download_file "${DOWNLOAD_INDEX_PATH}" "${DOWNLOAD_TEMP}/index" normal
+- fi
++ download_file "${DOWNLOAD_INDEX_PATH}" "${DOWNLOAD_TEMP}/index" normal
+
+ # Parse it
+ echo ""
+@@ -316,9 +314,7 @@ if [ "${DOWNLOAD_USE_CACHE}" = "false" ]; then
+ DOWNLOAD_INDEX_PATH="/meta/1.0/index-${DOWNLOAD_MODE}"
+
+ echo "Downloading the image index"
+- if ! download_file "${DOWNLOAD_INDEX_PATH}.${DOWNLOAD_COMPAT_LEVEL}" "${DOWNLOAD_TEMP}/index" noexit; then
+- download_file "${DOWNLOAD_INDEX_PATH}" "${DOWNLOAD_TEMP}/index" normal
+- fi
++ download_file "${DOWNLOAD_INDEX_PATH}" "${DOWNLOAD_TEMP}/index" normal
+
+ # Parse it
+ while IFS=';' read -r f1 f2 f3 f4 f5 f6; do
+--
+2.25.1
+
diff --git a/recipes-containers/lxc/files/0001-lxc-test-usernic-drop-cgroup-handling.patch b/recipes-containers/lxc/files/0001-lxc-test-usernic-drop-cgroup-handling.patch
new file mode 100644
index 00000000..162e8f9d
--- /dev/null
+++ b/recipes-containers/lxc/files/0001-lxc-test-usernic-drop-cgroup-handling.patch
@@ -0,0 +1,61 @@
+From ec85e5ca4953292c4341497704ce738669a79b64 Mon Sep 17 00:00:00 2001
+From: Serge Hallyn <serge@hallyn.com>
+Date: Fri, 2 Feb 2024 10:41:11 -0600
+Subject: [PATCH] lxc-test-usernic: drop cgroup handling
+
+This stuff is not needed in a modern systemd based system, and in fact
+breaks. It would probably be better to detect such a system so that a
+non-systemd box can still run this test. But I'm not sure what would be
+reliable.
+
+Upstream-Status: Backport from
+[https://github.com/lxc/lxc/commit/ec85e5ca4953292c4341497704ce738669a79b64]
+
+Signed-off-by: Serge Hallyn <serge@hallyn.com>
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ src/tests/lxc-test-usernic.in | 28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+diff --git a/src/tests/lxc-test-usernic.in b/src/tests/lxc-test-usernic.in
+index 9af8678f3..49fd5e3f7 100755
+--- a/src/tests/lxc-test-usernic.in
++++ b/src/tests/lxc-test-usernic.in
+@@ -80,34 +80,6 @@ lxc.idmap = u 0 910000 10000
+ lxc.idmap = g 0 910000 10000
+ EOF
+
+-if command -v cgm >/dev/null 2>&1; then
+- cgm create all usernic-user
+- cgm chown all usernic-user $(id -u usernic-user) $(id -g usernic-user)
+- cgm movepid all usernic-user $$
+-elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then
+- for d in $(cut -d : -f 2 /proc/self/cgroup); do
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \
+- string:$d string:usernic-user >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Chown \
+- string:$d string:usernic-user int32:$(id -u usernic-user) int32:$(id -g usernic-user) >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.MovePid \
+- string:$d string:usernic-user int32:$$ >/dev/null
+- done
+-else
+- for d in /sys/fs/cgroup/*; do
+- [ "$d" = "/sys/fs/cgroup/unified" ] && continue
+- [ -f $d/cgroup.clone_children ] && echo 1 > $d/cgroup.clone_children
+- [ ! -d $d/lxctest ] && mkdir $d/lxctest
+- chown -R usernic-user: $d/lxctest
+- echo $$ > $d/lxctest/tasks
+- done
+-fi
+-
+ mkdir -p /run/user/$(id -u usernic-user)
+ chown -R usernic-user: /run/user/$(id -u usernic-user) /home/usernic-user
+
+--
+2.35.5
+
diff --git a/recipes-containers/lxc/files/0001-template-if-busybox-contains-init-use-it-in-containe.patch b/recipes-containers/lxc/files/0001-template-if-busybox-contains-init-use-it-in-containe.patch
new file mode 100644
index 00000000..760ebe64
--- /dev/null
+++ b/recipes-containers/lxc/files/0001-template-if-busybox-contains-init-use-it-in-containe.patch
@@ -0,0 +1,45 @@
+From 2789860daaa7780e1542bb1c60a89860e5661739 Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Wed, 1 Mar 2023 09:25:35 +0800
+Subject: [PATCH] template: if busybox contains init, use it in container
+
+The lxc test code using busybox template, some cases would be failed or hang
+if the init progress not from busybox. This cause ptest report lots of failed.
+
+The changes is checking whether the busybox has built-in init, if it has,use it.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ templates/lxc-busybox.in | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
+index dab7c1faf..e2beae7a4 100755
+--- a/templates/lxc-busybox.in
++++ b/templates/lxc-busybox.in
+@@ -184,10 +184,16 @@ configure_busybox()
+ return 1
+ fi
+
+- # copy bash binary as the container init
+- if ! cp "$(which bash)" "${rootfs}/sbin/init"; then
+- echo "ERROR: Failed to copy bash binary"
+- return 1
++ # checking whether busybox has init or not
++ if ! ${rootfs}/bin/busybox --list | grep "init" > /dev/null; then
++ # copy bash binary as the container init
++ if ! cp "$(which bash)" "${rootfs}/sbin/init"; then
++ echo "ERROR: Failed to copy bash binary"
++ return 1
++ fi
++ else
++ # relink /sbin/init
++ ln "${rootfs}/bin/busybox" "${rootfs}/sbin/init"
+ fi
+
+
+--
+2.34.1
+
diff --git a/recipes-containers/lxc/files/0001-tests-remove-old-and-broken-cgroup-handling-code-fro.patch b/recipes-containers/lxc/files/0001-tests-remove-old-and-broken-cgroup-handling-code-fro.patch
new file mode 100644
index 00000000..bf8df795
--- /dev/null
+++ b/recipes-containers/lxc/files/0001-tests-remove-old-and-broken-cgroup-handling-code-fro.patch
@@ -0,0 +1,103 @@
+From 8f9733d756361ff8f8d8d589f286c0e064b1195d Mon Sep 17 00:00:00 2001
+From: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
+Date: Thu, 15 Feb 2024 18:13:05 +0100
+Subject: [PATCH] tests: remove old and broken cgroup handling code from tests
+
+We have removed the same piece of code in
+ec85e5ca495 ("lxc-test-usernic: drop cgroup handling")
+let's do the same for two other tests.
+
+This fixes autopkgtests.
+
+Upstream-Status: Backport from
+[https://github.com/lxc/lxc/commit/8f9733d756361ff8f8d8d589f286c0e064b1195d]
+
+Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@canonical.com>
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ src/tests/lxc-test-apparmor-mount | 29 -----------------------------
+ src/tests/lxc-test-unpriv | 28 ----------------------------
+ 2 files changed, 57 deletions(-)
+
+diff --git a/src/tests/lxc-test-apparmor-mount b/src/tests/lxc-test-apparmor-mount
+index 7c9d9ad50..ddf783d4b 100755
+--- a/src/tests/lxc-test-apparmor-mount
++++ b/src/tests/lxc-test-apparmor-mount
+@@ -119,35 +119,6 @@ chown -R $TUSER: /run/user/$(id -u $TUSER)
+
+ cd $HDIR
+
+-if command -v cgm >/dev/null 2>&1; then
+- cgm create all $TUSER
+- cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER)
+- cgm movepid all $TUSER $$
+-elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then
+- for d in $(cut -d : -f 2 /proc/self/cgroup); do
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \
+- string:$d string:$TUSER >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Chown \
+- string:$d string:$TUSER int32:$(id -u $TUSER) int32:$(id -g $TUSER) >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.MovePid \
+- string:$d string:$TUSER int32:$$ >/dev/null
+- done
+-else
+- for d in /sys/fs/cgroup/*; do
+- [ "$d" = "/sys/fs/cgroup/unified" ] && continue
+- [ -f $d/cgroup.clone_children ] && echo 1 > $d/cgroup.clone_children
+- [ ! -d $d/lxctest ] && mkdir $d/lxctest
+- chown -R $TUSER: $d/lxctest
+- echo $$ > $d/lxctest/tasks
+- done
+-fi
+-
+-
+ run_cmd lxc-create -t busybox -n $cname
+
+ echo "test default confined container"
+diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv
+index 8fb9106d6..426add9da 100755
+--- a/src/tests/lxc-test-unpriv
++++ b/src/tests/lxc-test-unpriv
+@@ -130,34 +130,6 @@ chown -R $TUSER: /run/user/$(id -u $TUSER)
+
+ cd $HDIR
+
+-if command -v cgm >/dev/null 2>&1; then
+- cgm create all $TUSER
+- cgm chown all $TUSER $(id -u $TUSER) $(id -g $TUSER)
+- cgm movepid all $TUSER $$
+-elif [ -e /sys/fs/cgroup/cgmanager/sock ]; then
+- for d in $(cut -d : -f 2 /proc/self/cgroup); do
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Create \
+- string:$d string:$TUSER >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.Chown \
+- string:$d string:$TUSER int32:$(id -u $TUSER) int32:$(id -g $TUSER) >/dev/null
+-
+- dbus-send --print-reply --address=unix:path=/sys/fs/cgroup/cgmanager/sock \
+- --type=method_call /org/linuxcontainers/cgmanager org.linuxcontainers.cgmanager0_0.MovePid \
+- string:$d string:$TUSER int32:$$ >/dev/null
+- done
+-else
+- for d in /sys/fs/cgroup/*; do
+- [ "$d" = "/sys/fs/cgroup/unified" ] && continue
+- [ -f $d/cgroup.clone_children ] && echo 1 > $d/cgroup.clone_children
+- [ ! -d $d/lxctest ] && mkdir $d/lxctest
+- chown -R $TUSER: $d/lxctest
+- echo $$ > $d/lxctest/tasks
+- done
+-fi
+-
+ run_cmd lxc-create -t busybox -n c1 -l trace -o "${UNPRIV_LOG}"
+
+ # Make sure we can start it - twice
+--
+2.35.5
+
diff --git a/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch b/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
deleted file mode 100644
index 648193b4..00000000
--- a/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From c50ddb2b2cf22a29e4c671b1efbd338eeba694aa Mon Sep 17 00:00:00 2001
-From: Jim Somerville <Jim.Somerville@windriver.com>
-Date: Fri, 25 Sep 2015 15:08:17 -0400
-Subject: [PATCH] logs: optionally use base filenames to report src files
-
-Message-Id: <4729d0f4c4d1dacd150ddfd7061dda875eb94e34.1443216870.git.Jim.Somerville@windriver.com>
-
-Problem: Logs are nice in that they report the source file,
-routine, and line number where an issue occurs. But the
-file is printed as the absolute filename. Users do not
-need to see a long spew of path directory names where the package
-was built. It just confuses things.
-
-Solution: Optionally chop off all leading directories so that just
-the source filename ie. basename is printed. This is done by
-setting a #ifdef LXC_LOG_USE_BASENAME check in the code. That
-define is done via the optional --enable-log-src-basename provided
-at configure time.
-
-Using __BASE_FILE__ instead of __FILE__ did not work. It
-refers to the file name as presented to the compile
-machinery, and that may still be the absolute pathname to
-the file.
-
-Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
-
----
- configure.ac | 9 +++++++++
- src/lxc/log.h | 5 +++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index 74b976a..9c561f7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -356,6 +356,15 @@ AC_ARG_ENABLE([examples],
- [], [enable_examples=yes])
- AM_CONDITIONAL([ENABLE_EXAMPLES], [test "x$enable_examples" = "xyes"])
-
-+# Enable basenames in the logs for source files
-+AC_ARG_ENABLE([log-src-basename],
-+ [AC_HELP_STRING([--enable-log-src-basename], [Use the shorter source file basename in the logs [default=no]])],
-+ [], [enable_log_src_basename=no])
-+
-+if test "x$enable_log_src_basename" = "xyes"; then
-+ AC_DEFINE([LXC_LOG_USE_BASENAME], 1, [Enabling shorter src filenames in the logs])
-+fi
-+
- # Enable dumping stack traces
- AC_ARG_ENABLE([mutex-debugging],
- [AC_HELP_STRING([--enable-mutex-debugging], [Makes mutexes to report error and provide stack trace [default=no]])],
-diff --git a/src/lxc/log.h b/src/lxc/log.h
-index 4654fd9..6885d78 100644
---- a/src/lxc/log.h
-+++ b/src/lxc/log.h
-@@ -77,8 +77,13 @@ struct lxc_log_locinfo {
- int line;
- };
-
-+#ifdef LXC_LOG_USE_BASENAME
-+#define LXC_LOG_LOCINFO_INIT \
-+ { .file = (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), .func = __func__, .line = __LINE__ }
-+#else
- #define LXC_LOG_LOCINFO_INIT \
- { .file = __FILE__, .func = __func__, .line = __LINE__ }
-+#endif
-
- /* brief logging event object */
- struct lxc_log_event {
diff --git a/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch b/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch
index 85177c8f..ea7bee9b 100644
--- a/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch
+++ b/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch
@@ -1,17 +1,19 @@
-From 74efbe7f47379375c51948dd0f86248fb9429a1b Mon Sep 17 00:00:00 2001
+From 8227e720438ff0bdfe45d7307de85f660e491d49 Mon Sep 17 00:00:00 2001
From: Bogdan Purcareata <bogdan.purcareata@freescale.com>
Date: Mon, 8 Apr 2013 18:30:19 +0300
Subject: [PATCH] lxc-0.9.0-disable-udhcp-from-busybox-template
+Upstream-Status: Inappropriate [embedded specific]
+
---
templates/lxc-busybox.in | 1 -
1 file changed, 1 deletion(-)
diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
-index 7243b36..9637a71 100644
+index 1a8618b..8ba7cfe 100644
--- a/templates/lxc-busybox.in
+++ b/templates/lxc-busybox.in
-@@ -111,7 +111,6 @@ EOF
+@@ -120,7 +120,6 @@ EOF
#!/bin/sh
/bin/syslogd
/bin/mount -a
diff --git a/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch b/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch
deleted file mode 100644
index 085ffe80..00000000
--- a/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 5190dce1a675dfcdf88e3b94bd48070ac180bacc Mon Sep 17 00:00:00 2001
-From: Jim Somerville <Jim.Somerville@windriver.com>
-Date: Tue, 11 Aug 2015 14:05:00 -0400
-Subject: [PATCH] lxc: doc: upgrade to use docbook 3.1 DTD
-
-docbook2man fails to build the man pages in poky
-due to missing the ancient Davenport 3.0 DTD.
-Poky meta has the Oasis 3.1 version so upgrade
-to use that instead.
-
-Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
-
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1acc461..74b976a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -213,7 +213,7 @@ AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"])
- AM_CONDITIONAL([USE_DOCBOOK2X], [test "x$db2xman" != "xdocbook2man"])
-
- if test "x$db2xman" = "xdocbook2man"; then
-- docdtd="\"-//Davenport//DTD DocBook V3.0//EN\""
-+ docdtd="\"-//OASIS//DTD DocBook V3.1//EN\""
- else
- docdtd="\"-//OASIS//DTD DocBook XML\" \"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\""
- fi
diff --git a/recipes-containers/lxc/files/lxc-fix-B-S.patch b/recipes-containers/lxc/files/lxc-fix-B-S.patch
deleted file mode 100644
index 6b09193a..00000000
--- a/recipes-containers/lxc/files/lxc-fix-B-S.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 2fa77a1803939de2d155a14cf680b53140b92f06 Mon Sep 17 00:00:00 2001
-From: Dmitry Eremin-Solenikov <dmitry_eremin@mentor.com>
-Date: Thu, 9 Apr 2015 23:01:48 +0300
-
----
- config/init/upstart/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/config/init/upstart/Makefile.am b/config/init/upstart/Makefile.am
-index 5552d32..186ae3d 100644
---- a/config/init/upstart/Makefile.am
-+++ b/config/init/upstart/Makefile.am
-@@ -3,9 +3,9 @@ EXTRA_DIST = lxc.conf lxc-instance.conf lxc-net.conf.in
- if INIT_SCRIPT_UPSTART
- install-upstart: lxc.conf lxc-instance.conf lxc-net.conf
- $(MKDIR_P) $(DESTDIR)$(sysconfdir)/init/
-- $(INSTALL_DATA) lxc.conf $(DESTDIR)$(sysconfdir)/init/
-+ $(INSTALL_DATA) $(srcdir)/lxc.conf $(DESTDIR)$(sysconfdir)/init/
- $(INSTALL_DATA) $(srcdir)/lxc-instance.conf $(DESTDIR)$(sysconfdir)/init/
-- $(INSTALL_DATA) lxc-net.conf $(DESTDIR)$(sysconfdir)/init/
-+ $(INSTALL_DATA) $(srcdir)/lxc-net.conf $(DESTDIR)$(sysconfdir)/init/
-
- uninstall-upstart:
- rm -f $(DESTDIR)$(sysconfdir)/init/lxc.conf
diff --git a/recipes-containers/lxc/files/network-restore-ability-to-move-nl80211-devices.patch b/recipes-containers/lxc/files/network-restore-ability-to-move-nl80211-devices.patch
deleted file mode 100644
index aa1aecd4..00000000
--- a/recipes-containers/lxc/files/network-restore-ability-to-move-nl80211-devices.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 3dd7829433f63b2ec1323a1f237efa7d67ea6e2b Mon Sep 17 00:00:00 2001
-From: Christian Brauner <christian.brauner@ubuntu.com>
-Date: Fri, 26 Jul 2019 08:20:02 +0200
-Subject: [PATCH] network: restore ability to move nl80211 devices
-
-Closes #3105.
-Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
----
- src/lxc/network.c | 31 +++++++++++++++++--------------
- 1 file changed, 17 insertions(+), 14 deletions(-)
-
-diff --git a/src/lxc/network.c b/src/lxc/network.c
-index 9755116..7684f95 100644
---- a/src/lxc/network.c
-+++ b/src/lxc/network.c
-@@ -1248,22 +1248,21 @@ static int lxc_netdev_rename_by_name_in_netns(pid_t pid, const char *old,
- static int lxc_netdev_move_wlan(char *physname, const char *ifname, pid_t pid,
- const char *newname)
- {
-- char *cmd;
-+ __do_free char *cmd = NULL;
- pid_t fpid;
-- int err = -1;
-
- /* Move phyN into the container. TODO - do this using netlink.
- * However, IIUC this involves a bit more complicated work to talk to
- * the 80211 module, so for now just call out to iw.
- */
- cmd = on_path("iw", NULL);
-- if (!cmd)
-- goto out1;
-- free(cmd);
-+ if (!cmd) {
-+ return -1;
-+ }
-
- fpid = fork();
- if (fpid < 0)
-- goto out1;
-+ return -1;
-
- if (fpid == 0) {
- char pidstr[30];
-@@ -1274,21 +1273,18 @@ static int lxc_netdev_move_wlan(char *physname, const char *ifname, pid_t pid,
- }
-
- if (wait_for_pid(fpid))
-- goto out1;
-+ return -1;
-
-- err = 0;
- if (newname)
-- err = lxc_netdev_rename_by_name_in_netns(pid, ifname, newname);
-+ return lxc_netdev_rename_by_name_in_netns(pid, ifname, newname);
-
--out1:
-- free(physname);
-- return err;
-+ return 0;
- }
-
- int lxc_netdev_move_by_name(const char *ifname, pid_t pid, const char* newname)
- {
-+ __do_free char *physname = NULL;
- int index;
-- char *physname;
-
- if (!ifname)
- return -EINVAL;
-@@ -3279,13 +3275,20 @@ int lxc_network_move_created_netdev_priv(struct lxc_handler *handler)
- return 0;
-
- lxc_list_for_each(iterator, network) {
-+ __do_free char *physname = NULL;
- int ret;
- struct lxc_netdev *netdev = iterator->elem;
-
- if (!netdev->ifindex)
- continue;
-
-- ret = lxc_netdev_move_by_index(netdev->ifindex, pid, NULL);
-+ if (netdev->type == LXC_NET_PHYS)
-+ physname = is_wlan(netdev->link);
-+
-+ if (physname)
-+ ret = lxc_netdev_move_wlan(physname, netdev->link, pid, NULL);
-+ else
-+ ret = lxc_netdev_move_by_index(netdev->ifindex, pid, NULL);
- if (ret) {
- errno = -ret;
- SYSERROR("Failed to move network device \"%s\" with ifindex %d to network namespace %d",
---
-2.7.4
-
diff --git a/recipes-containers/lxc/files/run-ptest b/recipes-containers/lxc/files/run-ptest
index 3f3a75f2..196adb04 100644
--- a/recipes-containers/lxc/files/run-ptest
+++ b/recipes-containers/lxc/files/run-ptest
@@ -9,10 +9,17 @@ dmesg -n 1
blacklist=""
# Not applicable
blacklist="$blacklist lxc-test-apparmor"
+blacklist="$blacklist lxc-test-apparmor-mount"
+#lxc-test-get_item would report Built without AppArmor support error
+blacklist="$blacklist lxc-test-get_item"
# These currently hang so skip them until someone fixes them up
blacklist="$blacklist lxc-test-shutdowntest"
blacklist="$blacklist lxc-test-state-server"
+# Tests in firstrunlist will be run first
+firstrunlist=""
+firstrunlist="$firstrunlist lxc-test-unpriv"
+
passed=0
failed=0
skipped=0
@@ -23,11 +30,29 @@ rm -f logs/*
echo "### Starting LXC ptest ###"
+for test in $firstrunlist
+do
+ ./tests/$test >logs/$(basename $test).log 2>&1
+ if [ $? -eq 0 ]
+ then
+ echo "PASS: $(basename $test)"
+ passed=$((passed+1))
+ else
+ echo "FAIL: $(basename $test)"
+ failed=$((failed+1))
+ fi
+done
+
for test in ./tests/*
do
if [[ ! $blacklist = *$(basename $test)* ]]
then
- $test >logs/$(basename $test).log 2>&1
+ if [[ ! $firstrunlist = *$(basename $test)* ]]
+ then
+ $test >logs/$(basename $test).log 2>&1
+ else
+ continue;
+ fi
else
echo "SKIPPED: $(basename $test)"
skipped=$((skipped+1))
@@ -44,6 +69,7 @@ do
fi
done
+
echo ""
echo "Results:"
echo " PASSED = $passed"
diff --git a/recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch b/recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch
index e4bb72a0..1970fdd2 100644
--- a/recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch
+++ b/recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch
@@ -1,4 +1,4 @@
-From 3a7112a38d2c44b6fa49e0da1dc4765defd88dbb Mon Sep 17 00:00:00 2001
+From 96bf043ec0ed93613036c324174c149655cf52be Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Thu, 31 May 2018 11:44:44 -0400
Subject: [PATCH] template: make busybox template compatible with
@@ -16,6 +16,8 @@ changes here to at least have the template work with
core-image-minimal to be able to demonstrate that it can work as well
as to have it available for the ptests.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
@@ -23,10 +25,10 @@ Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
-index 9637a71..45b386f 100644
+index 8ba7cfe..effdb73 100644
--- a/templates/lxc-busybox.in
+++ b/templates/lxc-busybox.in
-@@ -181,6 +181,19 @@ configure_busybox()
+@@ -194,6 +194,19 @@ configure_busybox()
return 1
fi
@@ -46,7 +48,7 @@ index 9637a71..45b386f 100644
# symlink busybox for the commands it supports
# it would be nice to just use "chroot $rootfs busybox --install -s /bin"
# but that only works right in a chroot with busybox >= 1.19.0
-@@ -189,9 +202,6 @@ configure_busybox()
+@@ -202,9 +215,6 @@ configure_busybox()
./busybox --list | grep -v busybox | xargs -n1 ln -s busybox
)
diff --git a/recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch b/recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch
index 756cddc3..3a2b1f0d 100644
--- a/recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch
+++ b/recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch
@@ -1,4 +1,4 @@
-From 68b0dd97130ffc5776de9219a42188b4a140d446 Mon Sep 17 00:00:00 2001
+From b30643c37d0d64a15d15026ac94e548cae8a88d2 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Thu, 31 May 2018 16:21:45 -0400
Subject: [PATCH] templates: actually create DOWNLOAD_TEMP directory
@@ -23,12 +23,12 @@ Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/templates/lxc-download.in b/templates/lxc-download.in
-index 973783b..015a679 100644
+index 4cb2129..923d2a1 100644
--- a/templates/lxc-download.in
+++ b/templates/lxc-download.in
-@@ -323,7 +323,7 @@ elif [ -n "${DOWNLOAD_TEMP}" ]; then
+@@ -329,7 +329,7 @@ elif [ -n "${DOWNLOAD_TEMP}" ]; then
mkdir -p "${DOWNLOAD_TEMP}"
- DOWNLOAD_TEMP="$(mktemp -p ${DOWNLOAD_TEMP} -d)"
+ DOWNLOAD_TEMP="$(mktemp -p "${DOWNLOAD_TEMP}" -d)"
else
- DOWNLOAD_TEMP="${DOWNLOAD_TEMP}$(mktemp -d)"
+ DOWNLOAD_TEMP="$(mktemp -p ${DOWNLOAD_TEMP} -d)"
diff --git a/recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch b/recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch
index 4b185bf0..e9af8335 100644
--- a/recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch
+++ b/recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch
@@ -1,21 +1,24 @@
-From dd7b0a2e4542c352456747a45d7eeb11e9fdec26 Mon Sep 17 00:00:00 2001
-From: Joakim Roubert <joakimr@axis.com>
-Date: Fri, 16 Aug 2019 07:52:48 +0200
-Subject: [PATCH] Use curl instead of wget
+From 3e4cb0b738649f7750413cefbcfdb2115213ad0d Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Sun, 14 Aug 2022 14:08:56 -0400
+Subject: [PATCH] download: Use curl instead of wget
When curl's MIT license is preferable to wget's GPLv3.
-Change-Id: I4684ae7569704514fdcc63e0655c556efcaf44f8
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Joakim Roubert <joakimr@axis.com>
+Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
- templates/lxc-download.in | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
+ templates/lxc-download.in | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/templates/lxc-download.in b/templates/lxc-download.in
-index b70daaf..9526eae 100644
+index a62ddf482..690307338 100755
--- a/templates/lxc-download.in
+++ b/templates/lxc-download.in
-@@ -74,9 +74,9 @@ cleanup() {
+@@ -59,9 +59,9 @@ cleanup() {
fi
}
@@ -27,18 +30,16 @@ index b70daaf..9526eae 100644
return 0
fi
done
-@@ -85,8 +85,8 @@ wget_wrapper() {
+@@ -70,7 +70,7 @@ wget_wrapper() {
}
download_file() {
-- if ! wget_wrapper -T 30 -q "https://${DOWNLOAD_SERVER}/$1" -O "$2" >/dev/null 2>&1; then
-- if ! wget_wrapper -T 30 -q "http://${DOWNLOAD_SERVER}/$1" -O "$2" >/dev/null 2>&1; then
-+ if ! curl_wrapper -m 30 -s "https://${DOWNLOAD_SERVER}/$1" -o "$2" >/dev/null 2>&1; then
-+ if ! curl_wrapper -m 30 -s "http://${DOWNLOAD_SERVER}/$1" -o "$2" >/dev/null 2>&1; then
- if [ "$3" = "noexit" ]; then
- return 1
- else
-@@ -266,7 +266,7 @@ while :; do
+- if ! wget_wrapper --user-agent="lxc/@PACKAGE_VERSION@ compat:${DOWNLOAD_COMPAT_LEVEL}" -T 30 -q "https://${DOWNLOAD_SERVER}/$1" -O "$2" >/dev/null 2>&1; then
++ if ! curl_wrapper -L --user-agent "lxc/@PACKAGE_VERSION@ compat:${DOWNLOAD_COMPAT_LEVEL}" -m 30 -s "https://${DOWNLOAD_SERVER}/$1" -o "$2" >/dev/null 2>&1; then
+ if [ "$3" = "noexit" ]; then
+ return 1
+ else
+@@ -176,7 +176,7 @@ while :; do
done
# Check for required binaries
@@ -47,3 +48,6 @@ index b70daaf..9526eae 100644
if ! command -V "${bin}" >/dev/null 2>&1; then
echo "ERROR: Missing required tool: ${bin}" 1>&2
exit 1
+--
+2.25.1
+
diff --git a/recipes-containers/lxc/files/tests-add-no-validate-when-using-download-template.patch b/recipes-containers/lxc/files/tests-add-no-validate-when-using-download-template.patch
deleted file mode 100644
index abddef6e..00000000
--- a/recipes-containers/lxc/files/tests-add-no-validate-when-using-download-template.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 1b334bdaf598600314a678509a702728721001a2 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 31 May 2018 15:14:26 -0400
-Subject: [PATCH] tests: add '--no-validate' when using download template
-
-We are usually running the ptests with core-image-minimal which has no
-mechanism to validate the downloads. Validation isn't really of
-interest to this test at any rate so simply add '--no-validate' to
-avoid failing due to no GPG validation.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- src/tests/lxc-test-apparmor-mount | 2 +-
- src/tests/lxc-test-autostart | 2 +-
- src/tests/lxc-test-no-new-privs | 2 +-
- src/tests/lxc-test-unpriv | 2 +-
- src/tests/lxc-test-usernic.in | 2 +-
- 5 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/tests/lxc-test-apparmor-mount b/src/tests/lxc-test-apparmor-mount
-index 56d598f..573cff8 100755
---- a/src/tests/lxc-test-apparmor-mount
-+++ b/src/tests/lxc-test-apparmor-mount
-@@ -169,7 +169,7 @@ if [ -f /etc/lsb-release ]; then
- done
- fi
-
--run_cmd lxc-create -t download -n $cname -- -d ubuntu -r $release -a $ARCH
-+run_cmd lxc-create -t download -n $cname -- --no-validate -d ubuntu -r $release -a $ARCH
-
- echo "test default confined container"
- run_cmd lxc-start -n $cname -d -lDEBUG -o "$logfile"
-diff --git a/src/tests/lxc-test-autostart b/src/tests/lxc-test-autostart
-index e5b651b..d15b79b 100755
---- a/src/tests/lxc-test-autostart
-+++ b/src/tests/lxc-test-autostart
-@@ -55,7 +55,7 @@ if [ -f /etc/lsb-release ]; then
- done
- fi
-
--lxc-create -t download -n $CONTAINER_NAME -B dir -- -d ubuntu -r $release -a $ARCH
-+lxc-create -t download -n $CONTAINER_NAME -B dir -- --no-validate -d ubuntu -r $release -a $ARCH
- CONTAINER_PATH=$(dirname $(lxc-info -n $CONTAINER_NAME -c lxc.rootfs.path -H) | sed -e 's/dir://')
- cp $CONTAINER_PATH/config $CONTAINER_PATH/config.bak
-
-diff --git a/src/tests/lxc-test-no-new-privs b/src/tests/lxc-test-no-new-privs
-index 8642992..e72bdf0 100755
---- a/src/tests/lxc-test-no-new-privs
-+++ b/src/tests/lxc-test-no-new-privs
-@@ -47,7 +47,7 @@ if type dpkg >/dev/null 2>&1; then
- ARCH=$(dpkg --print-architecture)
- fi
-
--lxc-create -t download -n c1 -- -d ubuntu -r xenial -a $ARCH
-+lxc-create -t download -n c1 -- --no-validate -d ubuntu -r xenial -a $ARCH
- echo "lxc.no_new_privs = 1" >> /var/lib/lxc/c1/config
-
- lxc-start -n c1
-diff --git a/src/tests/lxc-test-unpriv b/src/tests/lxc-test-unpriv
-index 16ff12d..0958d48 100755
---- a/src/tests/lxc-test-unpriv
-+++ b/src/tests/lxc-test-unpriv
-@@ -173,7 +173,7 @@ run_cmd mkdir -p $HDIR/.cache/lxc
- cp -R /var/cache/lxc/download $HDIR/.cache/lxc && \
- chown -R $TUSER: $HDIR/.cache/lxc
-
--run_cmd lxc-create -t download -n c1 -- -d ubuntu -r $release -a $ARCH
-+run_cmd lxc-create -t download -n c1 -- --no-validate -d ubuntu -r $release -a $ARCH
-
- # Make sure we can start it - twice
-
-diff --git a/src/tests/lxc-test-usernic.in b/src/tests/lxc-test-usernic.in
-index 3e35008..f489286 100755
---- a/src/tests/lxc-test-usernic.in
-+++ b/src/tests/lxc-test-usernic.in
-@@ -146,7 +146,7 @@ if [ -f /etc/lsb-release ]; then
- fi
-
- # Create three containers
--run_cmd "lxc-create -t download -n b1 -- -d ubuntu -r $release -a $ARCH"
-+run_cmd "lxc-create -t download -n b1 -- --no-validate -d ubuntu -r $release -a $ARCH"
- run_cmd "lxc-start -n b1 -d"
- p1=$(run_cmd "lxc-info -n b1 -p -H")
-
diff --git a/recipes-containers/lxc/files/tests-our-init-is-not-busybox.patch b/recipes-containers/lxc/files/tests-our-init-is-not-busybox.patch
index e6c71d3d..3a4855c8 100644
--- a/recipes-containers/lxc/files/tests-our-init-is-not-busybox.patch
+++ b/recipes-containers/lxc/files/tests-our-init-is-not-busybox.patch
@@ -1,4 +1,4 @@
-From 51d88d9741c30ff4a798698514cac831ae61680b Mon Sep 17 00:00:00 2001
+From 06b2a3054b9526c89d5abc314c7d7cda35ddb6a5 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
Date: Thu, 31 May 2018 15:00:34 -0400
Subject: [PATCH] tests: our init is not busybox
@@ -8,6 +8,8 @@ template) we can't compare '/sbin/init' and 'busybox'. Actually we are
really only interested in the fact 'cmp' is being run and not the
result, so simplify by comparing '/sbin/init' to itself.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
diff --git a/recipes-containers/lxc/lxc_3.2.1.bb b/recipes-containers/lxc/lxc_3.2.1.bb
deleted file mode 100644
index b8525156..00000000
--- a/recipes-containers/lxc/lxc_3.2.1.bb
+++ /dev/null
@@ -1,198 +0,0 @@
-DESCRIPTION = "lxc aims to use these new functionnalities to provide an userspace container object"
-SECTION = "console/utils"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS = "libxml2 libcap"
-RDEPENDS_${PN} = " \
- rsync \
- curl \
- gzip \
- xz \
- tar \
- libcap-bin \
- bridge-utils \
- dnsmasq \
- perl-module-strict \
- perl-module-getopt-long \
- perl-module-vars \
- perl-module-exporter \
- perl-module-constant \
- perl-module-overload \
- perl-module-exporter-heavy \
- gmp \
- libidn \
- gnutls \
- nettle \
- util-linux-mountpoint \
- util-linux-getopt \
-"
-
-RDEPENDS_${PN}_append_libc-glibc = " glibc-utils"
-
-RDEPENDS_${PN}-ptest += "file make gmp nettle gnutls bash libgcc"
-
-RDEPENDS_${PN}-networking += "iptables"
-
-SRC_URI = "http://linuxcontainers.org/downloads/${BPN}-${PV}.tar.gz \
- file://lxc-1.0.0-disable-udhcp-from-busybox-template.patch \
- file://run-ptest \
- file://lxc-fix-B-S.patch \
- file://lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch \
- file://logs-optionally-use-base-filenames-to-report-src-fil.patch \
- file://templates-actually-create-DOWNLOAD_TEMP-directory.patch \
- file://template-make-busybox-template-compatible-with-core-.patch \
- file://templates-use-curl-instead-of-wget.patch \
- file://tests-our-init-is-not-busybox.patch \
- file://tests-add-no-validate-when-using-download-template.patch \
- file://network-restore-ability-to-move-nl80211-devices.patch \
- file://dnsmasq.conf \
- file://lxc-net \
- "
-
-SRC_URI[md5sum] = "4886c8d1c8e221fe526eefcb47857b85"
-SRC_URI[sha256sum] = "5f903986a4b17d607eea28c0aa56bf1e76e8707747b1aa07d31680338b1cc3d4"
-
-S = "${WORKDIR}/${BPN}-${PV}"
-
-# Let's not configure for the host distro.
-#
-PTEST_CONF = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '--enable-tests', '', d)}"
-EXTRA_OECONF += "--with-distro=${DISTRO} ${PTEST_CONF}"
-
-EXTRA_OECONF += "--with-init-script=\
-${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit,', '', d)}\
-${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
-
-EXTRA_OECONF += "--enable-log-src-basename"
-
-CFLAGS_append = " -Wno-error=deprecated-declarations"
-
-PACKAGECONFIG ??= "templates \
- ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
- ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
-"
-PACKAGECONFIG[doc] = "--enable-doc --enable-api-docs,--disable-doc --disable-api-docs,,"
-PACKAGECONFIG[rpath] = "--enable-rpath,--disable-rpath,,"
-PACKAGECONFIG[apparmor] = "--enable-apparmor,--disable-apparmor,apparmor,apparmor"
-PACKAGECONFIG[templates] = ",,, ${PN}-templates"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
-PACKAGECONFIG[seccomp] ="--enable-seccomp,--disable-seccomp,libseccomp,libseccomp"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
-
-# required by python3 to run setup.py
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-inherit autotools pkgconfig ptest update-rc.d systemd python3native
-
-SYSTEMD_PACKAGES = "${PN} ${PN}-networking"
-SYSTEMD_SERVICE_${PN} = "lxc.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "disable"
-SYSTEMD_SERVICE_${PN}-networking = "lxc-net.service"
-SYSTEMD_AUTO_ENABLE_${PN}-networking = "enable"
-
-INITSCRIPT_PACKAGES = "${PN} ${PN}-networking"
-INITSCRIPT_NAME_${PN} = "lxc-containers"
-INITSCRIPT_PARAMS_${PN} = "defaults"
-INITSCRIPT_NAME_${PN}-networking = "lxc-net"
-INITSCRIPT_PARAMS_${PN}-networking = "defaults"
-
-FILES_${PN}-doc = "${mandir} ${infodir}"
-# For LXC the docdir only contains example configuration files and should be included in the lxc package
-FILES_${PN} += "${docdir}"
-FILES_${PN} += "${libdir}/python3*"
-FILES_${PN} += "${datadir}/bash-completion"
-FILES_${PN}-dbg += "${libexecdir}/lxc/.debug"
-FILES_${PN}-dbg += "${libexecdir}/lxc/hooks/.debug"
-PACKAGES =+ "${PN}-templates ${PN}-networking ${PN}-lua"
-FILES_lua-${PN} = "${datadir}/lua ${libdir}/lua"
-FILES_lua-${PN}-dbg += "${libdir}/lua/lxc/.debug"
-FILES_${PN}-templates += "${datadir}/lxc/templates"
-RDEPENDS_${PN}-templates += "bash"
-
-FILES_${PN}-networking += " \
- ${sysconfdir}/init.d/lxc-net \
- ${sysconfdir}/default/lxc-net \
-"
-
-CACHED_CONFIGUREVARS += " \
- ac_cv_path_PYTHON='${STAGING_BINDIR_NATIVE}/python3-native/python3' \
- am_cv_python_pyexecdir='${exec_prefix}/${libdir}/python3.5/site-packages' \
- am_cv_python_pythondir='${prefix}/${libdir}/python3.5/site-packages' \
-"
-
-do_install_append() {
- # The /var/cache/lxc directory created by the Makefile
- # is wiped out in volatile, we need to create this at boot.
- rm -rf ${D}${localstatedir}/cache
- install -d ${D}${sysconfdir}/default/volatiles
- echo "d root root 0755 ${localstatedir}/cache/lxc none" \
- > ${D}${sysconfdir}/default/volatiles/99_lxc
-
- for i in `grep -l "#! */bin/bash" ${D}${datadir}/lxc/hooks/*`; do \
- sed -e 's|#! */bin/bash|#!/bin/sh|' -i $i; done
-
- install -d ${D}${sysconfdir}/init.d
- install -m 755 config/init/sysvinit/lxc* ${D}${sysconfdir}/init.d
-
- # since python3-native is used for install location this will not be
- # suitable for the target and we will have to correct the package install
- if ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
- if [ -d ${D}${exec_prefix}/lib/python* ]; then mv ${D}${exec_prefix}/lib/python* ${D}${libdir}/; fi
- rmdir --ignore-fail-on-non-empty ${D}${exec_prefix}/lib
- fi
-
- # /etc/default/lxc sources lxc-net, this allows lxc bridge when lxc-networking
- # is not installed this results in no lxcbr0, but when lxc-networking is installed
- # lxcbr0 will be fully configured.
- install -m 644 ${WORKDIR}/lxc-net ${D}${sysconfdir}/default/
-
- # Force the main dnsmasq instance to bind only to specified interfaces and
- # to not bind to virbr0. Libvirt will run its own instance on this interface.
- install -d ${D}/${sysconfdir}/dnsmasq.d
- install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/lxc
-}
-
-EXTRA_OEMAKE += "TEST_DIR=${D}${PTEST_PATH}/src/tests"
-
-do_install_ptest() {
- # Move tests to the "ptest directory"
- install -d ${D}/${PTEST_PATH}/tests
- mv ${D}/usr/bin/lxc-test-* ${D}/${PTEST_PATH}/tests/.
-}
-
-pkg_postinst_${PN}() {
- if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
- /etc/init.d/populate-volatile.sh update
- fi
-}
-
-pkg_postinst_ontarget_${PN}-networking() {
-if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-cat >> /etc/network/interfaces << EOF
-
-auto lxcbr0
-iface lxcbr0 inet dhcp
- bridge_ports eth0
- bridge_fd 0
- bridge_maxwait 0
-EOF
-
-cat<<EOF>/etc/network/if-pre-up.d/lxcbr0
-#! /bin/sh
-
-if test "x\$IFACE" = xlxcbr0 ; then
- brctl show |grep lxcbr0 > /dev/null 2>/dev/null
- if [ \$? != 0 ] ; then
- brctl addbr lxcbr0
- brctl addif lxcbr0 eth0
- ip addr flush eth0
- ifconfig eth0 up
- fi
-fi
-EOF
-chmod 755 /etc/network/if-pre-up.d/lxcbr0
-fi
-}
diff --git a/recipes-containers/lxc/lxc_git.bb b/recipes-containers/lxc/lxc_git.bb
new file mode 100644
index 00000000..ee0e442f
--- /dev/null
+++ b/recipes-containers/lxc/lxc_git.bb
@@ -0,0 +1,212 @@
+DESCRIPTION = "lxc aims to use these new functionnalities to provide an userspace container object"
+SECTION = "console/utils"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c \
+ file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
+"
+
+DEPENDS = "libxml2 libcap"
+RDEPENDS:${PN} = " \
+ rsync \
+ curl \
+ gzip \
+ xz \
+ tar \
+ libcap-bin \
+ bridge-utils \
+ dnsmasq \
+ perl-module-strict \
+ perl-module-getopt-long \
+ perl-module-vars \
+ perl-module-exporter \
+ perl-module-constant \
+ perl-module-overload \
+ perl-module-exporter-heavy \
+ gmp \
+ libidn \
+ gnutls \
+ nettle \
+ util-linux-mountpoint \
+ util-linux-getopt \
+"
+
+RDEPENDS:${PN}:append:libc-glibc = " glibc-utils"
+
+RDEPENDS:${PN}-ptest += "file make gmp nettle gnutls bash libgcc"
+
+RDEPENDS:${PN}-networking += "iptables"
+
+SRC_URI = "git://github.com/lxc/lxc.git;branch=stable-5.0;protocol=https \
+ file://lxc-1.0.0-disable-udhcp-from-busybox-template.patch \
+ file://run-ptest \
+ file://templates-actually-create-DOWNLOAD_TEMP-directory.patch \
+ file://template-make-busybox-template-compatible-with-core-.patch \
+ file://templates-use-curl-instead-of-wget.patch \
+ file://0001-download-don-t-try-compatbility-index.patch \
+ file://tests-our-init-is-not-busybox.patch \
+ file://0001-template-if-busybox-contains-init-use-it-in-containe.patch \
+ file://dnsmasq.conf \
+ file://lxc-net \
+ file://0001-lxc-test-usernic-drop-cgroup-handling.patch \
+ file://0001-tests-remove-old-and-broken-cgroup-handling-code-fro.patch \
+ "
+
+SRCREV = "cb8e38aca27a23964941f0f011a8919aab8bebab"
+PV = "5.0.3+git"
+
+S = "${WORKDIR}/git"
+
+# Let's not configure for the host distro.
+#
+PTEST_CONF = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '-Dtests=true', '', d)}"
+
+# No meson equivalent for --with-distro
+# EXTRA_OECONF += "--with-distro=${DISTRO} ${PTEST_CONF}"
+EXTRA_OEMESON += "${PTEST_CONF} -Ddistrosysconfdir=${sysconfdir}/default"
+# No meson equivalent for these yet
+# EXTRA_OECONF += "--enable-log-src-basename --disable-werror"
+
+PACKAGECONFIG ??= "templates \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'seccomp', 'seccomp', '', d)} \
+"
+
+# Meson doesn't seem to be as fine grained as the autotools releases
+# PACKAGECONFIG[doc] = "--enable-doc --enable-api-docs,--disable-doc --disable-api-docs,,"
+PACKAGECONFIG[doc] = "-Dman=true,-Dman=false,,"
+# No meson equiv found for rpath yet
+# PACKAGECONFIG[rpath] = "--enable-rpath,--disable-rpath,,"
+PACKAGECONFIG[apparmor] = "-Dapparmor=true,-Dapparmor=false,apparmor,apparmor"
+PACKAGECONFIG[templates] = ",,, ${PN}-templates"
+PACKAGECONFIG[selinux] = "-Dselinux=true,-Dselinux=false,libselinux,libselinux"
+PACKAGECONFIG[seccomp] ="-Dseccomp=true,-Dseccomp=false,libseccomp,libseccomp"
+# meson equiv for the unitdir found yet
+# PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
+PACKAGECONFIG[systemd] = "-Dinit-script=systemd,-Dinit-script=sysvinit,systemd,"
+
+# required by python3 to run setup.py
+export BUILD_SYS
+export HOST_SYS
+export STAGING_INCDIR
+export STAGING_LIBDIR
+
+inherit meson pkgconfig ptest update-rc.d systemd python3native
+
+SYSTEMD_PACKAGES = "${PN} ${PN}-networking"
+SYSTEMD_SERVICE:${PN} = "lxc.service lxc-monitord.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "disable"
+SYSTEMD_SERVICE:${PN}-networking = "lxc-net.service"
+SYSTEMD_AUTO_ENABLE:${PN}-networking = "enable"
+
+INITSCRIPT_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${PN}', d)} ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${PN}-networking',d)}"
+INITSCRIPT_NAME:${PN} = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'lxc-containers', d)}"
+INITSCRIPT_PARAMS:${PN} = "defaults"
+INITSCRIPT_NAME:${PN}-networking = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'lxc-net', d)}"
+INITSCRIPT_PARAMS:${PN}-networking = "defaults"
+
+FILES:${PN}-doc = "${mandir} ${infodir}"
+# For LXC the docdir only contains example configuration files and should be included in the lxc package
+FILES:${PN} += "${docdir}"
+FILES:${PN} += "${libdir}/python3*"
+FILES:${PN} += "${datadir}/bash-completion"
+FILES:${PN}-dbg += "${libexecdir}/lxc/.debug"
+FILES:${PN}-dbg += "${libexecdir}/lxc/hooks/.debug"
+PACKAGES =+ "${PN}-templates ${PN}-networking ${PN}-lua"
+FILES:lua-${PN} = "${datadir}/lua ${libdir}/lua"
+FILES:lua-${PN}-dbg += "${libdir}/lua/lxc/.debug"
+FILES:${PN}-templates += "${datadir}/lxc/templates"
+RDEPENDS:${PN}-templates += "bash"
+
+FILES:${PN}-networking += " \
+ ${sysconfdir}/init.d/lxc-net \
+ ${sysconfdir}/default/lxc-net \
+"
+
+# Not needed for meson
+# CACHED_CONFIGUREVARS += " \
+# ac_cv_path_PYTHON='${STAGING_BINDIR_NATIVE}/python3-native/python3' \
+# am_cv_python_pyexecdir='${PYTHON_SITEPACKAGES_DIR}' \
+# am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
+#"
+
+do_install:append() {
+ # The /var/cache/lxc directory created by the Makefile
+ # is wiped out in volatile, we need to create this at boot.
+ rm -rf ${D}${localstatedir}/cache
+ install -d ${D}${sysconfdir}/default/volatiles
+ echo "d root root 0755 ${localstatedir}/cache/lxc none" \
+ > ${D}${sysconfdir}/default/volatiles/99_lxc
+
+ for i in `grep -l "#! */bin/bash" ${D}${datadir}/lxc/hooks/*`; do \
+ sed -e 's|#! */bin/bash|#!/bin/sh|' -i $i; done
+
+ if "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}"; then
+ # nothing special for systemd at the moment
+ true
+ else
+ # with meson, these aren't built unless sysvinit is the enabled
+ # init system.
+ install -d ${D}${sysconfdir}/init.d
+ install -m 755 config/init/sysvinit/lxc* ${D}${sysconfdir}/init.d
+ fi
+
+ # since python3-native is used for install location this will not be
+ # suitable for the target and we will have to correct the package install
+ if ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
+ if [ -d ${D}${exec_prefix}/lib/python* ]; then mv ${D}${exec_prefix}/lib/python* ${D}${libdir}/; fi
+ rmdir --ignore-fail-on-non-empty ${D}${exec_prefix}/lib
+ fi
+
+ # /etc/default/lxc sources lxc-net, this allows lxc bridge when lxc-networking
+ # is not installed this results in no lxcbr0, but when lxc-networking is installed
+ # lxcbr0 will be fully configured.
+ install -m 644 ${WORKDIR}/lxc-net ${D}${sysconfdir}/default/
+
+ # Force the main dnsmasq instance to bind only to specified interfaces and
+ # to not bind to virbr0. Libvirt will run its own instance on this interface.
+ install -d ${D}/${sysconfdir}/dnsmasq.d
+ install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/lxc
+}
+
+EXTRA_OEMAKE += "TEST_DIR=${D}${PTEST_PATH}/src/tests"
+
+do_install_ptest() {
+ # Move tests to the "ptest directory"
+ install -d ${D}/${PTEST_PATH}/tests
+ mv ${D}/usr/bin/lxc-test-* ${D}/${PTEST_PATH}/tests/.
+}
+
+pkg_postinst:${PN}() {
+ if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+ /etc/init.d/populate-volatile.sh update
+ fi
+}
+
+pkg_postinst:${PN}-networking() {
+if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+cat >> $D/etc/network/interfaces << EOF
+
+auto lxcbr0
+iface lxcbr0 inet dhcp
+ bridge_ports eth0
+ bridge_fd 0
+ bridge_maxwait 0
+EOF
+
+cat<<EOF>$D/etc/network/if-pre-up.d/lxcbr0
+#! /bin/sh
+
+if test "x\$IFACE" = xlxcbr0 ; then
+ brctl show |grep lxcbr0 > /dev/null 2>/dev/null
+ if [ \$? != 0 ] ; then
+ brctl addbr lxcbr0
+ brctl addif lxcbr0 eth0
+ ip addr flush eth0
+ ifconfig eth0 up
+ fi
+fi
+EOF
+chmod 755 $D/etc/network/if-pre-up.d/lxcbr0
+fi
+}
diff --git a/recipes-containers/lxcfs/files/systemd-allow-for-distinct-build-directory.patch b/recipes-containers/lxcfs/files/systemd-allow-for-distinct-build-directory.patch
deleted file mode 100644
index 14228d65..00000000
--- a/recipes-containers/lxcfs/files/systemd-allow-for-distinct-build-directory.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 66a71fbf94020651880f1dbb6e4663d93391b47c Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Mon, 10 Sep 2018 13:14:07 -0400
-Subject: [PATCH] systemd: allow for distinct build directory
-
-The Makefile.am is currently written in a way that doesn't allow for a
-distinct build directory. As such we get the error:
-
- install: cannot stat 'lxcfs.service': No such file or directory
-
-Make use of $(srcdir) to correct this.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- config/init/systemd/Makefile.am | 2 +-
- config/init/systemd/Makefile.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/config/init/systemd/Makefile.am b/config/init/systemd/Makefile.am
-index 79e96f5..d6933f9 100644
---- a/config/init/systemd/Makefile.am
-+++ b/config/init/systemd/Makefile.am
-@@ -5,7 +5,7 @@ SYSTEMD_UNIT_DIR = /lib/systemd/system
-
- install-systemd: lxcfs.service
- $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
-- $(INSTALL_DATA) lxcfs.service $(DESTDIR)$(SYSTEMD_UNIT_DIR)/
-+ $(INSTALL_DATA) $(srcdir)/lxcfs.service $(DESTDIR)$(SYSTEMD_UNIT_DIR)/
-
- uninstall-systemd:
- rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/lxcfs.service
-diff --git a/config/init/systemd/Makefile.in b/config/init/systemd/Makefile.in
-index d433e8a..430190c 100644
---- a/config/init/systemd/Makefile.in
-+++ b/config/init/systemd/Makefile.in
-@@ -450,7 +450,7 @@ uninstall-am: uninstall-local
-
- @INIT_SCRIPT_SYSTEMD_TRUE@install-systemd: lxcfs.service
- @INIT_SCRIPT_SYSTEMD_TRUE@ $(MKDIR_P) $(DESTDIR)$(SYSTEMD_UNIT_DIR)
--@INIT_SCRIPT_SYSTEMD_TRUE@ $(INSTALL_DATA) lxcfs.service $(DESTDIR)$(SYSTEMD_UNIT_DIR)/
-+@INIT_SCRIPT_SYSTEMD_TRUE@ $(INSTALL_DATA) $(srcdir)/lxcfs.service $(DESTDIR)$(SYSTEMD_UNIT_DIR)/
-
- @INIT_SCRIPT_SYSTEMD_TRUE@uninstall-systemd:
- @INIT_SCRIPT_SYSTEMD_TRUE@ rm -f $(DESTDIR)$(SYSTEMD_UNIT_DIR)/lxcfs.service
---
-2.7.4
-
diff --git a/recipes-containers/lxcfs/files/systemd-ensure-var-lib-lxcfs-exists.patch b/recipes-containers/lxcfs/files/systemd-ensure-var-lib-lxcfs-exists.patch
deleted file mode 100644
index 5e5673ac..00000000
--- a/recipes-containers/lxcfs/files/systemd-ensure-var-lib-lxcfs-exists.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 89bf4b64e810e174068e7861490e6d6ab2d14854 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Mon, 10 Sep 2018 15:01:54 -0400
-Subject: [PATCH] systemd: ensure /var/lib/lxcfs exists
-
-If the directory doesn't exist the service will fail to start.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- config/init/systemd/lxcfs.service | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/config/init/systemd/lxcfs.service b/config/init/systemd/lxcfs.service
-index 95e3ee9..d887203 100644
---- a/config/init/systemd/lxcfs.service
-+++ b/config/init/systemd/lxcfs.service
-@@ -5,6 +5,7 @@ Before=lxc.service
- Documentation=man:lxcfs(1)
-
- [Service]
-+ExecStartPre=-/bin/mkdir /var/lib/lxcfs
- ExecStart=/usr/bin/lxcfs /var/lib/lxcfs/
- KillMode=process
- Restart=on-failure
---
-2.7.4
-
diff --git a/recipes-containers/lxcfs/lxcfs/0001-bindings-fix-build-with-newer-linux-libc-headers.patch b/recipes-containers/lxcfs/lxcfs/0001-bindings-fix-build-with-newer-linux-libc-headers.patch
new file mode 100644
index 00000000..64d19f47
--- /dev/null
+++ b/recipes-containers/lxcfs/lxcfs/0001-bindings-fix-build-with-newer-linux-libc-headers.patch
@@ -0,0 +1,50 @@
+From ca3c3484b078304998b3f2a2d6cd6c00540deb2c Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 28 Apr 2023 19:16:11 +0000
+Subject: [PATCH] bindings: fix build with newer linux-libc-headers
+
+Fixes:
+
+../../lxcfs-4.0.7/src/bindings.c: In function 'initpid_still_valid_pidfd':
+../../lxcfs-4.0.7/src/bindings.c:160:15: error: implicit declaration of function 'pidfd_send_signal'; did you mean 'SYS_pidfd_send_signal'? [-Werr
+or=implicit-function-declaration]
+ 160 | ret = pidfd_send_signal(entry->init_pidfd, 0, NULL, 0);
+ | ^~~~~~~~~~~~~~~~~
+ | SYS_pidfd_send_signal
+../../lxcfs-4.0.7/src/bindings.c:160:15: warning: nested extern declaration of 'pidfd_send_signal' [-Wnested-externs]
+../../lxcfs-4.0.7/src/bindings.c: In function 'save_initpid':
+../../lxcfs-4.0.7/src/bindings.c:296:25: error: implicit declaration of function 'pidfd_open' [-Werror=implicit-function-declaration]
+ 296 | pidfd = pidfd_open(pid, 0);
+ | ^~~~~~~~~~
+../../lxcfs-4.0.7/src/bindings.c:296:25: warning: nested extern declaration of 'pidfd_open' [-Wnested-externs]
+../../lxcfs-4.0.7/src/bindings.c: At top level:
+../../lxcfs-4.0.7/src/bindings.c:612:12: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ 612 | static int pivot_enter()
+ | ^~~~~~~~~~~
+../../lxcfs-4.0.7/src/bindings.c: In function 'pivot_enter':
+../../lxcfs-4.0.7/src/bindings.c:612:12: warning: old-style function definition [-Wold-style-definition]
+../../lxcfs-4.0.7/src/bindings.c: At top level:
+../../lxcfs-4.0.7/src/bindings.c:655:12: warning: function declaration isn't a prototype [-Wstrict-prototypes]
+ 655 | static int chroot_enter()
+ | ^~~~~~~~~~~~
+../../lxcfs-4.0.7/src/bindings.c: In function 'chroot_enter':
+../../lxcfs-4.0.7/src/bindings.c:655:12: warning: old-style function definition [-Wold-style-definition]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Pending
+---
+ src/bindings.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/bindings.c b/src/bindings.c
+index 6f2444c..3e0d60a 100644
+--- a/src/bindings.c
++++ b/src/bindings.c
+@@ -39,6 +39,7 @@
+ #include <sys/mman.h>
+ #include <sys/mount.h>
+ #include <sys/param.h>
++#include <sys/pidfd.h>
+ #include <sys/socket.h>
+ #include <sys/syscall.h>
+ #include <sys/sysinfo.h>
diff --git a/recipes-containers/lxcfs/lxcfs/0001-meson.build-force-pid-open-send_signal-detection.patch b/recipes-containers/lxcfs/lxcfs/0001-meson.build-force-pid-open-send_signal-detection.patch
new file mode 100644
index 00000000..5f21a956
--- /dev/null
+++ b/recipes-containers/lxcfs/lxcfs/0001-meson.build-force-pid-open-send_signal-detection.patch
@@ -0,0 +1,38 @@
+From 65fcb73cdef34609f28461424672551a6e65327e Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Thu, 3 Aug 2023 15:01:42 +0000
+Subject: [PATCH] meson.build: force pid open/send_signal detection
+
+meson is not correctly detecting that our cross build environment
+has the pid* definitions, which leads to compile errors when internal
+definitions conflict:
+
+ lxcfs-5.0.4/src/utils.h:45:19: error: static declaration of 'pidfd_open' follows non-static declaration
+
+We could possibly generate a meson.cross file, and specify it via
+--cross-file, but we can just force the detection to 'true' as we
+don't have to support configurations without the functionality.
+
+Upstream-Status: Inappropriate [OE-Specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ meson.build | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/meson.build b/meson.build
+index a0289ad..9480c30 100644
+--- a/meson.build
++++ b/meson.build
+@@ -143,6 +143,8 @@ foreach ident: [
+ ]
+ have = cc.has_function(ident[0], prefix: ident[1], args: '-D_GNU_SOURCE')
+ conf.set10('HAVE_' + ident[0].to_upper(), have)
++ conf.set10('HAVE_PIDFD_OPEN', true)
++ conf.set10('HAVE_PIDFD_SEND_SIGNAL', true)
+ endforeach
+
+ fuse_version = get_option('fuse-version')
+--
+2.39.2
+
diff --git a/recipes-containers/lxcfs/lxcfs_3.0.3.bb b/recipes-containers/lxcfs/lxcfs_3.0.3.bb
deleted file mode 100644
index b6b6ac6b..00000000
--- a/recipes-containers/lxcfs/lxcfs_3.0.3.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "LXCFS is a userspace filesystem created to avoid kernel limitations"
-LICENSE = "Apache-2.0"
-
-inherit autotools pkgconfig systemd
-
-SRC_URI = " \
- https://linuxcontainers.org/downloads/lxcfs/lxcfs-${PV}.tar.gz \
- file://systemd-allow-for-distinct-build-directory.patch \
- file://systemd-ensure-var-lib-lxcfs-exists.patch \
-"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI[md5sum] = "bfc41f949caeabd0468189480222f25e"
-SRC_URI[sha256sum] = "890aa30d960d9b1e53b0c0712bf645c1f1924f750e32cd090f368c1338bd462f"
-
-DEPENDS += "fuse"
-RDEPENDS_${PN} += "fuse"
-
-FILES_${PN} += "${datadir}/lxc/config/common.conf.d/*"
-
-CACHED_CONFIGUREVARS += "ac_cv_path_HELP2MAN='false // No help2man //'"
-EXTRA_OECONF += "--with-distro=unknown --with-init-script=${VIRTUAL-RUNTIME_init_manager}"
-
-SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "lxcfs.service"
diff --git a/recipes-containers/lxcfs/lxcfs_5.0.4.bb b/recipes-containers/lxcfs/lxcfs_5.0.4.bb
new file mode 100644
index 00000000..5d2ad164
--- /dev/null
+++ b/recipes-containers/lxcfs/lxcfs_5.0.4.bb
@@ -0,0 +1,26 @@
+SUMMARY = "LXCFS is a userspace filesystem created to avoid kernel limitations"
+LICENSE = "LGPL-2.1-or-later"
+
+REQUIRED_DISTRO_FEATURES ?= "systemd"
+inherit meson pkgconfig systemd features_check
+
+SRC_URI = " \
+ https://linuxcontainers.org/downloads/lxcfs/lxcfs-${PV}.tar.gz \
+ file://0001-bindings-fix-build-with-newer-linux-libc-headers.patch \
+ file://0001-meson.build-force-pid-open-send_signal-detection.patch \
+"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=29ae50a788f33f663405488bc61eecb1"
+SRC_URI[md5sum] = "00a6632e094d0a2f2308c8365ac91912"
+SRC_URI[sha256sum] = "c2b361edc881d5ca8fa2cd3260a4999b8f87afce8d937be2160e5cf0b482c52f"
+
+DEPENDS += "fuse python3-jinja2-native help2man-native systemd"
+RDEPENDS:${PN} += "fuse"
+
+FILES:${PN} += "${datadir}/lxc/config/common.conf.d/*"
+
+# help2man doesn't work, so we disable docs
+EXTRA_OEMESON += "-Dinit-script=${VIRTUAL-RUNTIME_init_manager} -Ddocs=false"
+
+SYSTEMD_PACKAGES = "${PN}"
+SYSTEMD_SERVICE:${PN} = "lxcfs.service"
diff --git a/recipes-containers/nerdctl/nerdctl/0001-Makefile-allow-external-specification-of-build-setti.patch b/recipes-containers/nerdctl/nerdctl/0001-Makefile-allow-external-specification-of-build-setti.patch
new file mode 100644
index 00000000..ca7b3042
--- /dev/null
+++ b/recipes-containers/nerdctl/nerdctl/0001-Makefile-allow-external-specification-of-build-setti.patch
@@ -0,0 +1,25 @@
+From 0e6809ea075acd3edf7de197cd4e190ccdad6361 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Mon, 29 Mar 2021 20:50:47 -0400
+Subject: [PATCH] Makefile: allow external specification of build settings
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ Makefile | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+Index: nerdctl-v2.0.0-beta.1/src/import/Makefile
+===================================================================
+--- nerdctl-v2.0.0-beta.1.orig/src/import/Makefile
++++ nerdctl-v2.0.0-beta.1/src/import/Makefile
+@@ -38,7 +38,7 @@
+
+ GO_BUILD_LDFLAGS ?= -s -w
+ GO_BUILD_FLAGS ?=
+-export GO_BUILD=GO111MODULE=on CGO_ENABLED=0 GOOS=$(GOOS) $(GO) build -ldflags "$(GO_BUILD_LDFLAGS) -X $(PACKAGE)/pkg/version.Version=$(VERSION) -X $(PACKAGE)/pkg/version.Revision=$(REVISION)"
++export GO_BUILD=$(GO) build -ldflags "$(GO_BUILD_LDFLAGS) -X $(PACKAGE)/pkg/version.Version=$(VERSION) -X $(PACKAGE)/pkg/version.Revision=$(REVISION)"
+
+ ifdef VERBOSE
+ VERBOSE_FLAG := -v
diff --git a/recipes-containers/nerdctl/nerdctl/modules.txt b/recipes-containers/nerdctl/nerdctl/modules.txt
new file mode 100644
index 00000000..b26ec8ec
--- /dev/null
+++ b/recipes-containers/nerdctl/nerdctl/modules.txt
@@ -0,0 +1,270 @@
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit
+# github.com/Microsoft/go-winio v0.6.1
+## explicit
+# github.com/Microsoft/hcsshim v0.11.4
+## explicit
+# github.com/awslabs/soci-snapshotter v0.4.1
+## explicit
+# github.com/compose-spec/compose-go v1.20.2
+## explicit
+# github.com/containerd/accelerated-container-image v1.0.2
+## explicit
+# github.com/containerd/cgroups/v3 v3.0.3
+## explicit
+# github.com/containerd/console v1.0.4
+## explicit
+# github.com/containerd/containerd v1.7.13
+## explicit
+# github.com/containerd/continuity v0.4.3
+## explicit
+# github.com/containerd/fifo v1.1.0
+## explicit
+# github.com/containerd/go-cni v1.1.9
+## explicit
+# github.com/containerd/imgcrypt v1.1.9
+## explicit
+# github.com/containerd/log v0.1.0
+## explicit
+# github.com/containerd/nydus-snapshotter v0.13.7
+## explicit
+# github.com/containerd/platforms v0.1.1
+## explicit
+# github.com/containerd/stargz-snapshotter v0.15.1
+## explicit
+# github.com/containerd/stargz-snapshotter/estargz v0.15.1
+## explicit
+# github.com/containerd/stargz-snapshotter/ipfs v0.15.1
+## explicit
+# github.com/containerd/typeurl/v2 v2.1.1
+## explicit
+# github.com/containernetworking/cni v1.1.2
+## explicit
+# github.com/containernetworking/plugins v1.4.0
+## explicit
+# github.com/coreos/go-iptables v0.7.0
+## explicit
+# github.com/coreos/go-systemd/v22 v22.5.0
+## explicit
+# github.com/cyphar/filepath-securejoin v0.2.4
+## explicit
+# github.com/docker/cli v24.0.7+incompatible
+## explicit
+# github.com/docker/docker v24.0.7+incompatible
+## explicit
+# github.com/docker/go-connections v0.5.0
+## explicit
+# github.com/docker/go-units v0.5.0
+## explicit
+# github.com/fahedouch/go-logrotate v0.2.0
+## explicit
+# github.com/fatih/color v1.16.0
+## explicit
+# github.com/fluent/fluent-logger-golang v1.9.0
+## explicit
+# github.com/ipfs/go-cid v0.4.1
+## explicit
+# github.com/mattn/go-isatty v0.0.20
+## explicit
+# github.com/mitchellh/mapstructure v1.5.0
+## explicit
+# github.com/moby/sys/mount v0.3.3
+## explicit
+# github.com/moby/sys/signal v0.7.0
+## explicit
+# github.com/moby/term v0.5.0
+## explicit
+# github.com/muesli/cancelreader v0.2.2
+## explicit
+# github.com/opencontainers/go-digest v1.0.0
+## explicit
+# github.com/opencontainers/image-spec v1.1.0
+## explicit
+# github.com/opencontainers/runtime-spec v1.2.0
+## explicit
+# github.com/pelletier/go-toml/v2 v2.1.1
+## explicit
+# github.com/rootless-containers/bypass4netns v0.4.0
+## explicit
+# github.com/rootless-containers/rootlesskit/v2 v2.0.1
+## explicit
+# github.com/spf13/cobra v1.8.0
+## explicit
+# github.com/spf13/pflag v1.0.5
+## explicit
+# github.com/tidwall/gjson v1.17.1
+## explicit
+# github.com/vishvananda/netlink v1.2.1-beta.2
+## explicit
+# github.com/vishvananda/netns v0.0.4
+## explicit
+# github.com/yuchanns/srslog v1.1.0
+## explicit
+# go.uber.org/mock v0.4.0
+## explicit
+# golang.org/x/crypto v0.19.0
+## explicit
+# golang.org/x/net v0.21.0
+## explicit
+# golang.org/x/sync v0.6.0
+## explicit
+# golang.org/x/sys v0.17.0
+## explicit
+# golang.org/x/term v0.17.0
+## explicit
+# golang.org/x/text v0.14.0
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+# gotest.tools/v3 v3.5.1
+## explicit
+# github.com/moby/sys/user v0.1.0
+## explicit
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+## explicit
+# github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0
+## explicit
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+## explicit
+# github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869
+## explicit
+# github.com/cilium/ebpf v0.11.0
+## explicit
+# github.com/containerd/cgroups v1.1.0
+## explicit
+# github.com/containerd/go-runc v1.0.0
+## explicit
+# github.com/containerd/ttrpc v1.2.2
+## explicit
+# github.com/containerd/typeurl v1.0.3-0.20220422153119-7f6e6d160d67
+## explicit
+# github.com/containers/ocicrypt v1.1.9
+## explicit
+# github.com/distribution/reference v0.5.0
+## explicit
+# github.com/djherbis/times v1.5.0
+## explicit
+# github.com/docker/docker-credential-helpers v0.7.0
+## explicit
+# github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
+## explicit
+# github.com/felixge/httpsnoop v1.0.3
+## explicit
+# github.com/go-jose/go-jose/v3 v3.0.1
+## explicit
+# github.com/go-logr/logr v1.3.0
+## explicit
+# github.com/go-logr/stdr v1.2.2
+## explicit
+# github.com/godbus/dbus/v5 v5.1.0
+## explicit
+# github.com/gogo/protobuf v1.3.2
+## explicit
+# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+## explicit
+# github.com/golang/protobuf v1.5.3
+## explicit
+# github.com/google/go-cmp v0.6.0
+## explicit
+# github.com/google/uuid v1.6.0
+## explicit
+# github.com/hashicorp/errwrap v1.1.0
+## explicit
+# github.com/hashicorp/go-multierror v1.1.1
+## explicit
+# github.com/imdario/mergo v0.3.16
+## explicit
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit
+# github.com/klauspost/compress v1.17.6
+## explicit
+# github.com/klauspost/cpuid/v2 v2.2.3
+## explicit
+# github.com/mattn/go-colorable v0.1.13
+## explicit
+# github.com/mattn/go-shellwords v1.0.12
+## explicit
+# github.com/miekg/pkcs11 v1.1.1
+## explicit
+# github.com/minio/sha256-simd v1.0.1
+## explicit
+# github.com/mitchellh/go-homedir v1.1.0
+## explicit
+# github.com/moby/locker v1.0.1
+## explicit
+# github.com/moby/sys/mountinfo v0.7.1
+## explicit
+# github.com/moby/sys/sequential v0.5.0
+## explicit
+# github.com/moby/sys/symlink v0.2.0
+## explicit
+# github.com/mr-tron/base58 v1.2.0
+## explicit
+# github.com/multiformats/go-base32 v0.1.0
+## explicit
+# github.com/multiformats/go-base36 v0.1.0
+## explicit
+# github.com/multiformats/go-multiaddr v0.12.0
+## explicit
+# github.com/multiformats/go-multibase v0.1.1
+## explicit
+# github.com/multiformats/go-multihash v0.2.1
+## explicit
+# github.com/multiformats/go-varint v0.0.6
+## explicit
+# github.com/opencontainers/selinux v1.11.0
+## explicit
+# github.com/pelletier/go-toml v1.9.5
+## explicit
+# github.com/philhofer/fwd v1.1.1
+## explicit
+# github.com/pkg/errors v0.9.1
+## explicit
+# github.com/sirupsen/logrus v1.9.3
+## explicit
+# github.com/spaolacci/murmur3 v1.1.0
+## explicit
+# github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980
+## explicit
+# github.com/tidwall/match v1.1.1
+## explicit
+# github.com/tidwall/pretty v1.2.0
+## explicit
+# github.com/tinylib/msgp v1.1.6
+## explicit
+# github.com/vbatts/tar-split v0.11.5
+## explicit
+# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+## explicit
+# github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+## explicit
+# github.com/xeipuuv/gojsonschema v1.2.0
+## explicit
+# go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1
+## explicit
+# go.opencensus.io v0.24.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0
+## explicit
+# go.opentelemetry.io/otel v1.19.0
+## explicit
+# go.opentelemetry.io/otel/metric v1.19.0
+## explicit
+# go.opentelemetry.io/otel/trace v1.19.0
+## explicit
+# golang.org/x/exp v0.0.0-20231006140011-7918f672742d
+## explicit
+# golang.org/x/mod v0.13.0
+## explicit
+# golang.org/x/tools v0.14.0
+## explicit
+# google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a
+## explicit
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b
+## explicit
+# google.golang.org/grpc v1.59.0
+## explicit
+# google.golang.org/protobuf v1.31.0
+## explicit
+# lukechampine.com/blake3 v1.1.7
+## explicit
diff --git a/recipes-containers/nerdctl/nerdctl_git.bb b/recipes-containers/nerdctl/nerdctl_git.bb
new file mode 100644
index 00000000..8868274f
--- /dev/null
+++ b/recipes-containers/nerdctl/nerdctl_git.bb
@@ -0,0 +1,84 @@
+HOMEPAGE = "https://github.com/containerd/nerdctl"
+SUMMARY = "Docker-compatible CLI for containerd"
+DESCRIPTION = "nerdctl: Docker-compatible CLI for containerd \
+ "
+
+DEPENDS = " \
+ go-md2man \
+ rsync-native \
+ ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+"
+
+# Specify the first two important SRCREVs as the format
+SRCREV_FORMAT="nerdcli_cgroups"
+SRCREV_nerdcli = "265d6b9cf526ce7d9ed8d34a0e3c3066901cc463"
+
+SRC_URI = "git://github.com/containerd/nerdctl.git;name=nerdcli;branch=main;protocol=https"
+
+include src_uri.inc
+
+# patches and config
+SRC_URI += "file://0001-Makefile-allow-external-specification-of-build-setti.patch \
+ file://modules.txt \
+ "
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+GO_IMPORT = "import"
+
+# S = "${WORKDIR}/git"
+
+PV = "v2.0.0-beta.1"
+
+NERDCTL_PKG = "github.com/containerd/nerdctl"
+
+inherit go goarch
+inherit systemd pkgconfig
+
+do_configure[noexec] = "1"
+
+EXTRA_OEMAKE = " \
+ PREFIX=${prefix} BINDIR=${bindir} LIBEXECDIR=${libexecdir} \
+ ETCDIR=${sysconfdir} TMPFILESDIR=${nonarch_libdir}/tmpfiles.d \
+ SYSTEMDDIR=${systemd_unitdir}/system USERSYSTEMDDIR=${systemd_unitdir}/user \
+"
+
+PACKAGECONFIG ?= ""
+
+# sets the "sites" variable.
+include relocation.inc
+
+PIEFLAG = "${@bb.utils.contains('GOBUILDFLAGS', '-buildmode=pie', '-buildmode=pie', '', d)}"
+
+do_compile() {
+
+ cd ${S}/src/import
+
+ export GOPATH="$GOPATH:${S}/src/import/.gopath"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export GOARCH=${TARGET_GOARCH}
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+
+ export GOFLAGS="-mod=vendor -trimpath ${PIEFLAG}"
+
+ # our copied .go files are to be used for the build
+ ln -sf vendor.copy vendor
+ # inform go that we know what we are doing
+ cp ${WORKDIR}/modules.txt vendor/
+
+ oe_runmake GO=${GO} BUILDTAGS="${BUILDTAGS}" binaries
+}
+
+do_install() {
+ install -d "${D}${BIN_PREFIX}${base_bindir}"
+ install -m 755 "${S}/src/import/_output/nerdctl" "${D}${BIN_PREFIX}${base_bindir}"
+}
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+
diff --git a/recipes-containers/nerdctl/relocation.inc b/recipes-containers/nerdctl/relocation.inc
new file mode 100644
index 00000000..7f3a1d34
--- /dev/null
+++ b/recipes-containers/nerdctl/relocation.inc
@@ -0,0 +1,152 @@
+export sites="gotest.tools/v3:gotest.tools/v3:force \
+ go.uber.org/mock:go.uber.org/mock:force \
+ golang.org/x/net:golang.org/x/net:force \
+ golang.org/x/sys:golang.org/x/sys:force \
+ gopkg.in/yaml.v3:gopkg.in/yaml.v3:force \
+ go.opencensus.io:go.opencensus.io:force \
+ golang.org/x/exp:golang.org/x/exp:force \
+ golang.org/x/mod:golang.org/x/mod:force \
+ golang.org/x/sync:golang.org/x/sync:force \
+ golang.org/x/term:golang.org/x/term:force \
+ golang.org/x/text:golang.org/x/text:force \
+ golang.org/x/tools:golang.org/x/tools:force \
+ golang.org/x/crypto:golang.org/x/crypto:force \
+ github.com/moby/term:github.com/moby/term:force \
+ go.mozilla.org/pkcs7:go.mozilla.org/pkcs7:force \
+ github.com/docker/cli:github.com/docker/cli:force \
+ github.com/pkg/errors:github.com/pkg/errors:force \
+ github.com/fatih/color:github.com/fatih/color:force \
+ github.com/ipfs/go-cid:github.com/ipfs/go-cid:force \
+ github.com/spf13/cobra:github.com/spf13/cobra:force \
+ github.com/spf13/pflag:github.com/spf13/pflag:force \
+ github.com/cilium/ebpf:github.com/cilium/ebpf:force \
+ github.com/google/uuid:github.com/google/uuid:force \
+ github.com/moby/locker:github.com/moby/locker:force \
+ google.golang.org/grpc:google.golang.org/grpc:force \
+ github.com/go-logr/logr:github.com/go-logr/logr:force \
+ github.com/go-logr/stdr:github.com/go-logr/stdr:force \
+ github.com/miekg/pkcs11:github.com/miekg/pkcs11:force \
+ github.com/tinylib/msgp:github.com/tinylib/msgp:force \
+ lukechampine.com/blake3:lukechampine.com/blake3:force \
+ github.com/docker/docker:github.com/docker/docker:force \
+ github.com/tidwall/gjson:github.com/tidwall/gjson:force \
+ github.com/gogo/protobuf:github.com/gogo/protobuf:force \
+ github.com/google/go-cmp:github.com/google/go-cmp:force \
+ github.com/imdario/mergo:github.com/imdario/mergo:force \
+ github.com/philhofer/fwd:github.com/philhofer/fwd:force \
+ github.com/tidwall/match:github.com/tidwall/match:force \
+ go.opentelemetry.io/otel:go.opentelemetry.io/otel:force \
+ github.com/containerd/log:github.com/containerd/log:force \
+ github.com/djherbis/times:github.com/djherbis/times:force \
+ github.com/godbus/dbus/v5:github.com/godbus/dbus/v5:force \
+ github.com/mr-tron/base58:github.com/mr-tron/base58:force \
+ github.com/tidwall/pretty:github.com/tidwall/pretty:force \
+ github.com/containerd/fifo:github.com/containerd/fifo:force \
+ github.com/docker/go-units:github.com/docker/go-units:force \
+ github.com/mattn/go-isatty:github.com/mattn/go-isatty:force \
+ github.com/yuchanns/srslog:github.com/yuchanns/srslog:force \
+ github.com/golang/protobuf:github.com/golang/protobuf:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus:force \
+ google.golang.org/genproto:google.golang.org/genproto:force \
+ google.golang.org/protobuf:google.golang.org/protobuf:force \
+ github.com/moby/sys/user:github.com/moby/sys/user/user:force \
+ github.com/bmizerany/assert:github.com/bmizerany/assert:force \
+ github.com/containerd/ttrpc:github.com/containerd/ttrpc:force \
+ github.com/docker/go-events:github.com/docker/go-events:force \
+ github.com/vbatts/tar-split:github.com/vbatts/tar-split:force \
+ github.com/Microsoft/hcsshim:github.com/Microsoft/hcsshim:force \
+ github.com/containerd/go-cni:github.com/containerd/go-cni:force \
+ github.com/moby/sys/mount:github.com/moby/sys/mount/mount:force \
+ github.com/vishvananda/netns:github.com/vishvananda/netns:force \
+ github.com/Azure/go-ansiterm:github.com/Azure/go-ansiterm:force \
+ github.com/felixge/httpsnoop:github.com/felixge/httpsnoop:force \
+ github.com/golang/groupcache:github.com/golang/groupcache:force \
+ github.com/hashicorp/errwrap:github.com/hashicorp/errwrap:force \
+ github.com/minio/sha256-simd:github.com/minio/sha256-simd:force \
+ github.com/pelletier/go-toml:github.com/pelletier/go-toml:force \
+ github.com/spaolacci/murmur3:github.com/spaolacci/murmur3:force \
+ github.com/Microsoft/go-winio:github.com/Microsoft/go-winio:force \
+ github.com/containerd/console:github.com/containerd/console:force \
+ github.com/coreos/go-iptables:github.com/coreos/go-iptables:force \
+ github.com/containerd/cgroups:github.com/containerd/cgroups:force \
+ github.com/containerd/go-runc:github.com/containerd/go-runc:force \
+ github.com/containerd/typeurl:github.com/containerd/typeurl:force \
+ github.com/go-jose/go-jose/v3:github.com/go-jose/go-jose/v3:force \
+ github.com/klauspost/compress:github.com/klauspost/compress:force \
+ github.com/klauspost/cpuid/v2:github.com/klauspost/cpuid/v2:force \
+ github.com/mattn/go-colorable:github.com/mattn/go-colorable:force \
+ github.com/moby/sys/signal:github.com/moby/sys/signal/signal:force \
+ github.com/containerd/imgcrypt:github.com/containerd/imgcrypt:force \
+ github.com/muesli/cancelreader:github.com/muesli/cancelreader:force \
+ github.com/vishvananda/netlink:github.com/vishvananda/netlink:force \
+ github.com/containers/ocicrypt:github.com/containers/ocicrypt:force \
+ github.com/mattn/go-shellwords:github.com/mattn/go-shellwords:force \
+ github.com/containerd/platforms:github.com/containerd/platforms:force \
+ github.com/pelletier/go-toml/v2:github.com/pelletier/go-toml/v2:force \
+ github.com/mitchellh/go-homedir:github.com/mitchellh/go-homedir:force \
+ github.com/moby/sys/symlink:github.com/moby/sys/symlink/symlink:force \
+ github.com/xeipuuv/gojsonschema:github.com/xeipuuv/gojsonschema:force \
+ github.com/Masterminds/semver/v3:github.com/Masterminds/semver/v3:force \
+ github.com/containerd/cgroups/v3:github.com/containerd/cgroups/v3:force \
+ github.com/containerd/containerd:github.com/containerd/containerd:force \
+ github.com/containerd/continuity:github.com/containerd/continuity:force \
+ github.com/containerd/typeurl/v2:github.com/containerd/typeurl/v2:force \
+ github.com/coreos/go-systemd/v22:github.com/coreos/go-systemd/v22:force \
+ github.com/docker/go-connections:github.com/docker/go-connections:force \
+ github.com/xeipuuv/gojsonpointer:github.com/xeipuuv/gojsonpointer:force \
+ github.com/fahedouch/go-logrotate:github.com/fahedouch/go-logrotate:force \
+ github.com/mitchellh/mapstructure:github.com/mitchellh/mapstructure:force \
+ github.com/distribution/reference:github.com/distribution/reference:force \
+ github.com/multiformats/go-base32:github.com/multiformats/go-base32:force \
+ github.com/multiformats/go-base36:github.com/multiformats/go-base36:force \
+ github.com/multiformats/go-varint:github.com/multiformats/go-varint:force \
+ github.com/opencontainers/selinux:github.com/opencontainers/selinux:force \
+ go.opentelemetry.io/otel/trace:go.opentelemetry.io/otel/trace/trace:force \
+ github.com/compose-spec/compose-go:github.com/compose-spec/compose-go:force \
+ github.com/containernetworking/cni:github.com/containernetworking/cni:force \
+ github.com/hashicorp/go-multierror:github.com/hashicorp/go-multierror:force \
+ github.com/moby/sys/mountinfo:github.com/moby/sys/mountinfo/mountinfo:force \
+ github.com/xeipuuv/gojsonreference:github.com/xeipuuv/gojsonreference:force \
+ go.opentelemetry.io/otel/metric:go.opentelemetry.io/otel/metric/metric:force \
+ github.com/awslabs/soci-snapshotter:github.com/awslabs/soci-snapshotter:force \
+ github.com/opencontainers/go-digest:github.com/opencontainers/go-digest:force \
+ github.com/moby/sys/sequential:github.com/moby/sys/sequential/sequential:force \
+ github.com/opencontainers/image-spec:github.com/opencontainers/image-spec:force \
+ github.com/AdaLogics/go-fuzz-headers:github.com/AdaLogics/go-fuzz-headers:force \
+ github.com/inconshreveable/mousetrap:github.com/inconshreveable/mousetrap:force \
+ github.com/multiformats/go-multiaddr:github.com/multiformats/go-multiaddr:force \
+ github.com/multiformats/go-multibase:github.com/multiformats/go-multibase:force \
+ github.com/multiformats/go-multihash:github.com/multiformats/go-multihash:force \
+ github.com/stefanberger/go-pkcs11uri:github.com/stefanberger/go-pkcs11uri:force \
+ github.com/cyphar/filepath-securejoin:github.com/cyphar/filepath-securejoin:force \
+ github.com/containernetworking/plugins:github.com/containernetworking/plugins:force \
+ github.com/fluent/fluent-logger-golang:github.com/fluent/fluent-logger-golang:force \
+ github.com/opencontainers/runtime-spec:github.com/opencontainers/runtime-spec:force \
+ github.com/AdamKorcz/go-118-fuzz-build:github.com/AdamKorcz/go-118-fuzz-build:force \
+ github.com/containerd/nydus-snapshotter:github.com/containerd/nydus-snapshotter:force \
+ github.com/containerd/stargz-snapshotter:github.com/containerd/stargz-snapshotter:force \
+ github.com/rootless-containers/bypass4netns:github.com/rootless-containers/bypass4netns:force \
+ github.com/docker/docker-credential-helpers:github.com/docker/docker-credential-helpers:force \
+ github.com/rootless-containers/rootlesskit/v2:github.com/rootless-containers/rootlesskit/v2:force \
+ github.com/containerd/stargz-snapshotter/ipfs:github.com/containerd/stargz-snapshotter/ipfs/ipfs:force \
+ google.golang.org/genproto/googleapis/rpc:google.golang.org/genproto/googleapis/rpc/googleapis/rpc:force \
+ github.com/containerd/accelerated-container-image:github.com/containerd/accelerated-container-image:force \
+ github.com/containerd/stargz-snapshotter/estargz:github.com/containerd/stargz-snapshotter/estargz/estargz:force \
+ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp:go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/instrumentation/net/http/otelhttp:force"
+
+do_compile:prepend() {
+ cd ${S}/src/import
+ for s in $sites; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+}
diff --git a/recipes-containers/nerdctl/src_uri.inc b/recipes-containers/nerdctl/src_uri.inc
new file mode 100644
index 00000000..eff9ec1a
--- /dev/null
+++ b/recipes-containers/nerdctl/src_uri.inc
@@ -0,0 +1,675 @@
+# gotest.tools/v3 v3.5.1
+# [1] git ls-remote https://github.com/gotestyourself/gotest.tools 81cea1abc596b025bf2573c7fdf97740512e4c6c
+SRCREV_gotest.tools-v3="81cea1abc596b025bf2573c7fdf97740512e4c6c"
+SRC_URI += "git://github.com/gotestyourself/gotest.tools;name=gotest.tools-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gotest.tools/v3"
+
+# go.uber.org/mock v0.4.0
+# [1] git ls-remote https://github.com/uber/mock 74a29c6e6c2cbb8ccee94db061c1604ff33fd188
+SRCREV_mock="74a29c6e6c2cbb8ccee94db061c1604ff33fd188"
+SRC_URI += "git://github.com/uber/mock;name=mock;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/mock"
+
+# golang.org/x/net v0.21.0
+# [1] git ls-remote https://go.googlesource.com/net 73d21fdbb4d7dc7115b50526b93b6c37a4e3377f
+SRCREV_net="73d21fdbb4d7dc7115b50526b93b6c37a4e3377f"
+SRC_URI += "git://go.googlesource.com/net;name=net;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/net"
+
+# golang.org/x/sys v0.17.0
+# [1] git ls-remote https://go.googlesource.com/sys 914b96c1bddd0738464c043cccbbac14fc94b955
+SRCREV_sys="914b96c1bddd0738464c043cccbbac14fc94b955"
+SRC_URI += "git://go.googlesource.com/sys;name=sys;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sys"
+
+# gopkg.in/yaml.v3 v3.0.1
+# [1] git ls-remote https://github.com/go-yaml/yaml f6f7691b1fdeb513f56608cd2c32c51f8194bf51
+SRCREV_yaml.v3="f6f7691b1fdeb513f56608cd2c32c51f8194bf51"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v3"
+
+# go.opencensus.io v0.24.0
+# [1] git ls-remote https://github.com/census-instrumentation/opencensus-go b1a01ee95db0e690d91d7193d037447816fae4c5
+SRCREV_go.opencensus.io="b1a01ee95db0e690d91d7193d037447816fae4c5"
+SRC_URI += "git://github.com/census-instrumentation/opencensus-go;name=go.opencensus.io;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opencensus.io"
+
+# golang.org/x/exp v0.0.0-20231006140011-7918f672742d
+# [1] git ls-remote https://go.googlesource.com/exp 7918f672742dd40ff5cf8d3c316a9315410c2d3c
+SRCREV_exp="7918f672742dd40ff5cf8d3c316a9315410c2d3c"
+SRC_URI += "git://go.googlesource.com/exp;name=exp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/exp"
+
+# golang.org/x/mod v0.13.0
+# [1] git ls-remote https://go.googlesource.com/mod 5b692803cf76a65fc5d39178c0a36678e69c0e5a
+SRCREV_mod="5b692803cf76a65fc5d39178c0a36678e69c0e5a"
+SRC_URI += "git://go.googlesource.com/mod;name=mod;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/mod"
+
+# golang.org/x/sync v0.6.0
+# [1] git ls-remote https://go.googlesource.com/sync 59c1ca1e4661ed4452be4069ceea3c233f4deec1
+SRCREV_sync="59c1ca1e4661ed4452be4069ceea3c233f4deec1"
+SRC_URI += "git://go.googlesource.com/sync;name=sync;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sync"
+
+# golang.org/x/term v0.17.0
+# [1] git ls-remote https://go.googlesource.com/term 353276a841e232e41e0f76e7a61fe0e5d1f92cf1
+SRCREV_x-term="353276a841e232e41e0f76e7a61fe0e5d1f92cf1"
+SRC_URI += "git://go.googlesource.com/term;name=x-term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/term"
+
+# golang.org/x/text v0.14.0
+# [1] git ls-remote https://go.googlesource.com/text 6c97a165dd661335ff7bce6104a008558123c353
+SRCREV_text="6c97a165dd661335ff7bce6104a008558123c353"
+SRC_URI += "git://go.googlesource.com/text;name=text;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/text"
+
+# golang.org/x/tools v0.14.0
+# [1] git ls-remote https://go.googlesource.com/tools 3f4194ee29d7db9b59757dfff729ef55cf89661c
+SRCREV_tools="3f4194ee29d7db9b59757dfff729ef55cf89661c"
+SRC_URI += "git://go.googlesource.com/tools;name=tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/tools"
+
+# golang.org/x/crypto v0.19.0
+# [1] git ls-remote https://go.googlesource.com/crypto 405cb3bdea78b1b48ee79096733841247a944de0
+SRCREV_crypto="405cb3bdea78b1b48ee79096733841247a944de0"
+SRC_URI += "git://go.googlesource.com/crypto;name=crypto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/crypto"
+
+# github.com/moby/term v0.5.0
+# [1] git ls-remote https://github.com/moby/term 9c3c875fad924eb6c9dd32a361b5fc0a49a4feb9
+SRCREV_term="9c3c875fad924eb6c9dd32a361b5fc0a49a4feb9"
+SRC_URI += "git://github.com/moby/term;name=term;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/term"
+
+# go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1
+# [1] git ls-remote https://github.com/mozilla-services/pkcs7 432b2356ecb18209c1cec25680b8a23632794f21
+SRCREV_pkcs7="432b2356ecb18209c1cec25680b8a23632794f21"
+SRC_URI += "git://github.com/mozilla-services/pkcs7;name=pkcs7;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.mozilla.org/pkcs7"
+
+# github.com/docker/cli v24.0.7+incompatible
+# [1] git ls-remote https://github.com/docker/cli afdd53b4e341be38d2056a42113b938559bb1d94
+SRCREV_cli="afdd53b4e341be38d2056a42113b938559bb1d94"
+SRC_URI += "git://github.com/docker/cli;name=cli;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/cli"
+
+# github.com/pkg/errors v0.9.1
+# [1] git ls-remote https://github.com/pkg/errors 614d223910a179a466c1767a985424175c39b465
+SRCREV_errors="614d223910a179a466c1767a985424175c39b465"
+SRC_URI += "git://github.com/pkg/errors;name=errors;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pkg/errors"
+
+# github.com/fatih/color v1.16.0
+# [1] git ls-remote https://github.com/fatih/color 0f9779ed479afd460f0c2cc5a3d3eb69b9ba188b
+SRCREV_color="0f9779ed479afd460f0c2cc5a3d3eb69b9ba188b"
+SRC_URI += "git://github.com/fatih/color;name=color;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fatih/color"
+
+# github.com/ipfs/go-cid v0.4.1
+# [1] git ls-remote https://github.com/ipfs/go-cid d46e7f28669cd2c463bc68fe86e7dbe4f8240ab7
+SRCREV_go-cid="d46e7f28669cd2c463bc68fe86e7dbe4f8240ab7"
+SRC_URI += "git://github.com/ipfs/go-cid;name=go-cid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/ipfs/go-cid"
+
+# github.com/spf13/cobra v1.8.0
+# [1] git ls-remote https://github.com/spf13/cobra a0a6ae020bb3899ff0276067863e50523f897370
+SRCREV_cobra="a0a6ae020bb3899ff0276067863e50523f897370"
+SRC_URI += "git://github.com/spf13/cobra;name=cobra;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/cobra"
+
+# github.com/spf13/pflag v1.0.5
+# [1] git ls-remote https://github.com/spf13/pflag 2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab
+SRCREV_pflag="2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab"
+SRC_URI += "git://github.com/spf13/pflag;name=pflag;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/pflag"
+
+# github.com/cilium/ebpf v0.11.0
+# [1] git ls-remote https://github.com/cilium/ebpf 270c859894bd38cdd0c7783317b16343409e4df8
+SRCREV_ebpf="270c859894bd38cdd0c7783317b16343409e4df8"
+SRC_URI += "git://github.com/cilium/ebpf;name=ebpf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cilium/ebpf"
+
+# github.com/google/uuid v1.6.0
+# [1] git ls-remote https://github.com/google/uuid 0f11ee6918f41a04c201eceeadf612a377bc7fbc
+SRCREV_uuid="0f11ee6918f41a04c201eceeadf612a377bc7fbc"
+SRC_URI += "git://github.com/google/uuid;name=uuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/uuid"
+
+# github.com/moby/locker v1.0.1
+# [1] git ls-remote https://github.com/moby/locker 281af2d563954745bea9d1487c965f24d30742fe
+SRCREV_locker="281af2d563954745bea9d1487c965f24d30742fe"
+SRC_URI += "git://github.com/moby/locker;name=locker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/locker"
+
+# google.golang.org/grpc v1.59.0
+# [1] git ls-remote https://github.com/grpc/grpc-go 7765221f4bf6104973db7946d56936cf838cad46
+SRCREV_grpc="7765221f4bf6104973db7946d56936cf838cad46"
+SRC_URI += "git://github.com/grpc/grpc-go;name=grpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/grpc"
+
+# github.com/go-logr/logr v1.3.0
+# [1] git ls-remote https://github.com/go-logr/logr 8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f
+SRCREV_logr="8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f"
+SRC_URI += "git://github.com/go-logr/logr;name=logr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/logr"
+
+# github.com/go-logr/stdr v1.2.2
+# [1] git ls-remote https://github.com/go-logr/stdr 521af2addfa7c81c8a65d0e85ed34bb6bb6dc262
+SRCREV_stdr="521af2addfa7c81c8a65d0e85ed34bb6bb6dc262"
+SRC_URI += "git://github.com/go-logr/stdr;name=stdr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/stdr"
+
+# github.com/miekg/pkcs11 v1.1.1
+# [1] git ls-remote https://github.com/miekg/pkcs11 f3481918a208bd212aa995a41f92d786eb418a7d
+SRCREV_pkcs11="f3481918a208bd212aa995a41f92d786eb418a7d"
+SRC_URI += "git://github.com/miekg/pkcs11;name=pkcs11;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/miekg/pkcs11"
+
+# github.com/tinylib/msgp v1.1.6
+# [1] git ls-remote https://github.com/tinylib/msgp 205265da651409c54677b486e350b4d105da6d8b
+SRCREV_msgp="205265da651409c54677b486e350b4d105da6d8b"
+SRC_URI += "git://github.com/tinylib/msgp;name=msgp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tinylib/msgp"
+
+# lukechampine.com/blake3 v1.1.7
+# [1] git ls-remote https://github.com/lukechampine/blake3 bb7ece4161ea910c6c385c17799b17d658075fcd
+SRCREV_blake3="bb7ece4161ea910c6c385c17799b17d658075fcd"
+SRC_URI += "git://github.com/lukechampine/blake3;name=blake3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/lukechampine.com/blake3"
+
+# github.com/docker/docker v24.0.7+incompatible
+# [1] git ls-remote https://github.com/moby/moby 311b9ff0aa93aa55880e1e5f8871c4fb69583426
+SRCREV_docker="311b9ff0aa93aa55880e1e5f8871c4fb69583426"
+SRC_URI += "git://github.com/moby/moby;name=docker;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker"
+
+# github.com/tidwall/gjson v1.17.1
+# [1] git ls-remote https://github.com/tidwall/gjson bbf40bb0e4f47860677c7115b2eaa5b3413ce23e
+SRCREV_gjson="bbf40bb0e4f47860677c7115b2eaa5b3413ce23e"
+SRC_URI += "git://github.com/tidwall/gjson;name=gjson;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tidwall/gjson"
+
+# github.com/moby/sys/user v0.1.0
+# [1] git ls-remote https://github.com/moby/sys c0711cde08c8fa33857a2c28721659267f49b5e2
+SRCREV_user="c0711cde08c8fa33857a2c28721659267f49b5e2"
+SRC_URI += "git://github.com/moby/sys;name=user;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/user"
+
+# github.com/gogo/protobuf v1.3.2
+# [1] git ls-remote https://github.com/gogo/protobuf b03c65ea87cdc3521ede29f62fe3ce239267c1bc
+SRCREV_protobuf="b03c65ea87cdc3521ede29f62fe3ce239267c1bc"
+SRC_URI += "git://github.com/gogo/protobuf;name=protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gogo/protobuf"
+
+# github.com/google/go-cmp v0.6.0
+# [1] git ls-remote https://github.com/google/go-cmp c3ad8435e7bef96af35732bc0789e5a2278c6d5f
+SRCREV_go-cmp="c3ad8435e7bef96af35732bc0789e5a2278c6d5f"
+SRC_URI += "git://github.com/google/go-cmp;name=go-cmp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/go-cmp"
+
+# github.com/imdario/mergo v0.3.16
+# [1] git ls-remote https://github.com/darccio/mergo 14fe2b165b83359196f820886a2b24f2771729e9
+SRCREV_mergo="14fe2b165b83359196f820886a2b24f2771729e9"
+SRC_URI += "git://github.com/darccio/mergo;name=mergo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/imdario/mergo"
+
+# github.com/philhofer/fwd v1.1.1
+# [1] git ls-remote https://github.com/philhofer/fwd 9bcb9cab1b0394d8516a132ec243ba944efdb644
+SRCREV_fwd="9bcb9cab1b0394d8516a132ec243ba944efdb644"
+SRC_URI += "git://github.com/philhofer/fwd;name=fwd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/philhofer/fwd"
+
+# github.com/tidwall/match v1.1.1
+# [1] git ls-remote https://github.com/tidwall/match 4c9fc61b493b7aa0a3d347e9190aa78c5bec09cf
+SRCREV_match="4c9fc61b493b7aa0a3d347e9190aa78c5bec09cf"
+SRC_URI += "git://github.com/tidwall/match;name=match;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tidwall/match"
+
+# go.opentelemetry.io/otel v1.19.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_otel="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=otel;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel"
+
+# github.com/containerd/log v0.1.0
+# [1] git ls-remote https://github.com/containerd/log 0fc1e28871fdf2786e2cc51bbe4133db6547a199
+SRCREV_log="0fc1e28871fdf2786e2cc51bbe4133db6547a199"
+SRC_URI += "git://github.com/containerd/log;name=log;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/log"
+
+# github.com/moby/sys/mount v0.3.3
+# [1] git ls-remote https://github.com/moby/sys 416188aff8404d549e1e34a50e513befeb11c3b9
+SRCREV_mount="416188aff8404d549e1e34a50e513befeb11c3b9"
+SRC_URI += "git://github.com/moby/sys;name=mount;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/mount"
+
+# github.com/djherbis/times v1.5.0
+# [1] git ls-remote https://github.com/djherbis/times a1edc5dc082a710e4a808e99c78989b8d04e3025
+SRCREV_times="a1edc5dc082a710e4a808e99c78989b8d04e3025"
+SRC_URI += "git://github.com/djherbis/times;name=times;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/djherbis/times"
+
+# github.com/godbus/dbus/v5 v5.1.0
+# [1] git ls-remote https://github.com/godbus/dbus e523abc905595cf17fb0001a7d77eaaddfaa216d
+SRCREV_v5="e523abc905595cf17fb0001a7d77eaaddfaa216d"
+SRC_URI += "git://github.com/godbus/dbus;name=v5;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/godbus/dbus/v5"
+
+# github.com/mr-tron/base58 v1.2.0
+# [1] git ls-remote https://github.com/mr-tron/base58 cd0e5141f51dfcadb8311fd8e495eb11126a8010
+SRCREV_base58="cd0e5141f51dfcadb8311fd8e495eb11126a8010"
+SRC_URI += "git://github.com/mr-tron/base58;name=base58;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mr-tron/base58"
+
+# github.com/tidwall/pretty v1.2.0
+# [1] git ls-remote https://github.com/tidwall/pretty aaa765e7476acb0028a854b85675801362cbdaa2
+SRCREV_pretty="aaa765e7476acb0028a854b85675801362cbdaa2"
+SRC_URI += "git://github.com/tidwall/pretty;name=pretty;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tidwall/pretty"
+
+# github.com/containerd/fifo v1.1.0
+# [1] git ls-remote https://github.com/containerd/fifo 151b205263c29d471e0d55c787d2ce9f5343fd46
+SRCREV_fifo="151b205263c29d471e0d55c787d2ce9f5343fd46"
+SRC_URI += "git://github.com/containerd/fifo;name=fifo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/fifo"
+
+# github.com/docker/go-units v0.5.0
+# [1] git ls-remote https://github.com/docker/go-units e682442797b36348f8e1f98defdbf32bac0b6c6f
+SRCREV_go-units="e682442797b36348f8e1f98defdbf32bac0b6c6f"
+SRC_URI += "git://github.com/docker/go-units;name=go-units;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-units"
+
+# github.com/mattn/go-isatty v0.0.20
+# [1] git ls-remote https://github.com/mattn/go-isatty a7c02353c47bc4ec6b30dc9628154ae4fe760c11
+SRCREV_go-isatty="a7c02353c47bc4ec6b30dc9628154ae4fe760c11"
+SRC_URI += "git://github.com/mattn/go-isatty;name=go-isatty;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-isatty"
+
+# github.com/moby/sys/signal v0.7.0
+# [1] git ls-remote https://github.com/moby/sys b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5
+SRCREV_signal="b8d8fabf1fa5cf0de7c1a1729145eee854ea31f5"
+SRC_URI += "git://github.com/moby/sys;name=signal;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/signal"
+
+# github.com/yuchanns/srslog v1.1.0
+# [1] git ls-remote https://github.com/yuchanns/srslog becd9b11119269a7928ae89fde90784335c1d016
+SRCREV_srslog="becd9b11119269a7928ae89fde90784335c1d016"
+SRC_URI += "git://github.com/yuchanns/srslog;name=srslog;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/yuchanns/srslog"
+
+# github.com/golang/protobuf v1.5.3
+# [1] git ls-remote https://github.com/golang/protobuf 5d5e8c018a13017f9d5b8bf4fad64aaa42a87308
+SRCREV_golang-protobuf="5d5e8c018a13017f9d5b8bf4fad64aaa42a87308"
+SRC_URI += "git://github.com/golang/protobuf;name=golang-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/protobuf"
+
+# github.com/sirupsen/logrus v1.9.3
+# [1] git ls-remote https://github.com/sirupsen/logrus d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd
+SRCREV_logrus="d40e25cd45ed9c6b2b66e6b97573a0413e4c23bd"
+SRC_URI += "git://github.com/sirupsen/logrus;name=logrus;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/sirupsen/logrus"
+
+# google.golang.org/genproto v0.0.0-20231012201019-e917dd12ba7a
+# [1] git ls-remote https://github.com/googleapis/go-genproto e917dd12ba7ad5f78e3112f832eeda0f94ca8fd4
+SRCREV_genproto="e917dd12ba7ad5f78e3112f832eeda0f94ca8fd4"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=genproto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto"
+
+# google.golang.org/protobuf v1.31.0
+# [1] git ls-remote https://github.com/protocolbuffers/protobuf-go 68463f0e96c93bc19ef36ccd3adfe690bfdb568c
+SRCREV_google.golang.org-protobuf="68463f0e96c93bc19ef36ccd3adfe690bfdb568c"
+SRC_URI += "git://github.com/protocolbuffers/protobuf-go;name=google.golang.org-protobuf;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/protobuf"
+
+# github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869
+# [1] git ls-remote https://github.com/bmizerany/assert b7ed37b82869576c289d7d97fb2bbd8b64a0cb28
+SRCREV_assert="b7ed37b82869576c289d7d97fb2bbd8b64a0cb28"
+SRC_URI += "git://github.com/bmizerany/assert;name=assert;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/bmizerany/assert"
+
+# github.com/containerd/ttrpc v1.2.2
+# [1] git ls-remote https://github.com/containerd/ttrpc ac26f8cbea1c440d451dd19a4a1b847fd073f3c3
+SRCREV_ttrpc="ac26f8cbea1c440d451dd19a4a1b847fd073f3c3"
+SRC_URI += "git://github.com/containerd/ttrpc;name=ttrpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/ttrpc"
+
+# github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c
+# [1] git ls-remote https://github.com/docker/go-events e31b211e4f1cd09aa76fe4ac244571fab96ae47f
+SRCREV_go-events="e31b211e4f1cd09aa76fe4ac244571fab96ae47f"
+SRC_URI += "git://github.com/docker/go-events;name=go-events;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-events"
+
+# github.com/moby/sys/symlink v0.2.0
+# [1] git ls-remote https://github.com/moby/sys 03b9f8d59a07f5206a2264105f4903a222aea964
+SRCREV_symlink="03b9f8d59a07f5206a2264105f4903a222aea964"
+SRC_URI += "git://github.com/moby/sys;name=symlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/symlink"
+
+# github.com/vbatts/tar-split v0.11.5
+# [1] git ls-remote https://github.com/vbatts/tar-split 5ef0dd8243164ebacd755916a89d8085a5b6bb7f
+SRCREV_tar-split="5ef0dd8243164ebacd755916a89d8085a5b6bb7f"
+SRC_URI += "git://github.com/vbatts/tar-split;name=tar-split;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vbatts/tar-split"
+
+# github.com/Microsoft/hcsshim v0.11.4
+# [1] git ls-remote https://github.com/microsoft/hcsshim b16edf62c1723deb948632261b445d0228d973e0
+SRCREV_hcsshim="b16edf62c1723deb948632261b445d0228d973e0"
+SRC_URI += "git://github.com/microsoft/hcsshim;name=hcsshim;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/hcsshim"
+
+# github.com/containerd/go-cni v1.1.9
+# [1] git ls-remote https://github.com/containerd/go-cni 6603d5bd8941d7f2026bb5627f6aa4ff434f859a
+SRCREV_go-cni="6603d5bd8941d7f2026bb5627f6aa4ff434f859a"
+SRC_URI += "git://github.com/containerd/go-cni;name=go-cni;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/go-cni"
+
+# github.com/vishvananda/netns v0.0.4
+# [1] git ls-remote https://github.com/vishvananda/netns 7a452d2d15292b2bfb2a2d88e6bdeac156a761b9
+SRCREV_netns="7a452d2d15292b2bfb2a2d88e6bdeac156a761b9"
+SRC_URI += "git://github.com/vishvananda/netns;name=netns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vishvananda/netns"
+
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+# [1] git ls-remote https://github.com/Azure/go-ansiterm d185dfc1b5a126116ea5a19e148e29d16b4574c9
+SRCREV_go-ansiterm="d185dfc1b5a126116ea5a19e148e29d16b4574c9"
+SRC_URI += "git://github.com/Azure/go-ansiterm;name=go-ansiterm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Azure/go-ansiterm"
+
+# github.com/felixge/httpsnoop v1.0.3
+# [1] git ls-remote https://github.com/felixge/httpsnoop ef9fc62cdc3cc5abc33d6018fe1324890bb48145
+SRCREV_httpsnoop="ef9fc62cdc3cc5abc33d6018fe1324890bb48145"
+SRC_URI += "git://github.com/felixge/httpsnoop;name=httpsnoop;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/felixge/httpsnoop"
+
+# github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da
+# [1] git ls-remote https://github.com/golang/groupcache 41bb18bfe9da5321badc438f91158cd790a33aa3
+SRCREV_groupcache="41bb18bfe9da5321badc438f91158cd790a33aa3"
+SRC_URI += "git://github.com/golang/groupcache;name=groupcache;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/golang/groupcache"
+
+# github.com/hashicorp/errwrap v1.1.0
+# [1] git ls-remote https://github.com/hashicorp/errwrap 7b00e5db719c64d14dd0caaacbd13e76254d02c0
+SRCREV_errwrap="7b00e5db719c64d14dd0caaacbd13e76254d02c0"
+SRC_URI += "git://github.com/hashicorp/errwrap;name=errwrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/errwrap"
+
+# github.com/minio/sha256-simd v1.0.1
+# [1] git ls-remote https://github.com/minio/sha256-simd 6096f891a77bfe490cbea7a424c821b5fdb92849
+SRCREV_sha256-simd="6096f891a77bfe490cbea7a424c821b5fdb92849"
+SRC_URI += "git://github.com/minio/sha256-simd;name=sha256-simd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/minio/sha256-simd"
+
+# github.com/pelletier/go-toml v1.9.5
+# [1] git ls-remote https://github.com/pelletier/go-toml fed1464066413075eac02cd4dc368b5221845541
+SRCREV_go-toml="fed1464066413075eac02cd4dc368b5221845541"
+SRC_URI += "git://github.com/pelletier/go-toml;name=go-toml;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pelletier/go-toml"
+
+# github.com/spaolacci/murmur3 v1.1.0
+# [1] git ls-remote https://github.com/spaolacci/murmur3 f09979ecbc725b9e6d41a297405f65e7e8804acc
+SRCREV_murmur3="f09979ecbc725b9e6d41a297405f65e7e8804acc"
+SRC_URI += "git://github.com/spaolacci/murmur3;name=murmur3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spaolacci/murmur3"
+
+# github.com/Microsoft/go-winio v0.6.1
+# [1] git ls-remote https://github.com/microsoft/go-winio 070c828abb873da9e71c7247740253b50f7cf049
+SRCREV_go-winio="070c828abb873da9e71c7247740253b50f7cf049"
+SRC_URI += "git://github.com/microsoft/go-winio;name=go-winio;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Microsoft/go-winio"
+
+# github.com/containerd/console v1.0.4
+# [1] git ls-remote https://github.com/containerd/console 8f6c4e4faef5a326d2cd907097d04c0239ee5e2f
+SRCREV_console="8f6c4e4faef5a326d2cd907097d04c0239ee5e2f"
+SRC_URI += "git://github.com/containerd/console;name=console;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/console"
+
+# github.com/coreos/go-iptables v0.7.0
+# [1] git ls-remote https://github.com/coreos/go-iptables b9dff5a19d9c3925da3f9b3c0a705de6c1fdc56c
+SRCREV_go-iptables="b9dff5a19d9c3925da3f9b3c0a705de6c1fdc56c"
+SRC_URI += "git://github.com/coreos/go-iptables;name=go-iptables;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-iptables"
+
+# github.com/containerd/cgroups v1.1.0
+# [1] git ls-remote https://github.com/containerd/cgroups fe7323f622bc222e72473679f12a9089aeeda177
+SRCREV_cgroups="fe7323f622bc222e72473679f12a9089aeeda177"
+SRC_URI += "git://github.com/containerd/cgroups;name=cgroups;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/cgroups"
+
+# github.com/containerd/go-runc v1.0.0
+# [1] git ls-remote https://github.com/containerd/go-runc 16b287bc67d069a60fa48db15f330b790b74365b
+SRCREV_go-runc="16b287bc67d069a60fa48db15f330b790b74365b"
+SRC_URI += "git://github.com/containerd/go-runc;name=go-runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/go-runc"
+
+# github.com/containerd/typeurl v1.0.3-0.20220422153119-7f6e6d160d67
+# [1] git ls-remote https://github.com/containerd/typeurl 7f6e6d160d675241af388d5cf1b90814786bac40
+SRCREV_typeurl="7f6e6d160d675241af388d5cf1b90814786bac40"
+SRC_URI += "git://github.com/containerd/typeurl;name=typeurl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/typeurl"
+
+# github.com/go-jose/go-jose/v3 v3.0.1
+# [1] git ls-remote https://github.com/go-jose/go-jose 47edce0854d533ac27795c9befd90b1f7ef87554
+SRCREV_go-jose-v3="47edce0854d533ac27795c9befd90b1f7ef87554"
+SRC_URI += "git://github.com/go-jose/go-jose;name=go-jose-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-jose/go-jose/v3"
+
+# github.com/klauspost/compress v1.17.6
+# [1] git ls-remote https://github.com/klauspost/compress 255a13270e4608f2f2b97166d92f297de906c951
+SRCREV_compress="255a13270e4608f2f2b97166d92f297de906c951"
+SRC_URI += "git://github.com/klauspost/compress;name=compress;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/klauspost/compress"
+
+# github.com/klauspost/cpuid/v2 v2.2.3
+# [1] git ls-remote https://github.com/klauspost/cpuid 3c0ec06adeb260a595bfb1dff123742e8bac34fb
+SRCREV_cpuid-v2="3c0ec06adeb260a595bfb1dff123742e8bac34fb"
+SRC_URI += "git://github.com/klauspost/cpuid;name=cpuid-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/klauspost/cpuid/v2"
+
+# github.com/mattn/go-colorable v0.1.13
+# [1] git ls-remote https://github.com/mattn/go-colorable 11a925cff3d38c293ddc8c05a16b504e3e2c63be
+SRCREV_go-colorable="11a925cff3d38c293ddc8c05a16b504e3e2c63be"
+SRC_URI += "git://github.com/mattn/go-colorable;name=go-colorable;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-colorable"
+
+# github.com/moby/sys/mountinfo v0.7.1
+# [1] git ls-remote https://github.com/moby/sys 4950d7687cf6c9b138dc0e18c2c7351e1f6ed497
+SRCREV_mountinfo="4950d7687cf6c9b138dc0e18c2c7351e1f6ed497"
+SRC_URI += "git://github.com/moby/sys;name=mountinfo;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/mountinfo"
+
+# github.com/containerd/imgcrypt v1.1.9
+# [1] git ls-remote https://github.com/containerd/imgcrypt 90513b079771363133611a91de350ea932e09b26
+SRCREV_imgcrypt="90513b079771363133611a91de350ea932e09b26"
+SRC_URI += "git://github.com/containerd/imgcrypt;name=imgcrypt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/imgcrypt"
+
+# github.com/muesli/cancelreader v0.2.2
+# [1] git ls-remote https://github.com/muesli/cancelreader d11f1e77abf7f8d69d81553ccaaf0b81163541a6
+SRCREV_cancelreader="d11f1e77abf7f8d69d81553ccaaf0b81163541a6"
+SRC_URI += "git://github.com/muesli/cancelreader;name=cancelreader;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/muesli/cancelreader"
+
+# github.com/vishvananda/netlink v1.2.1-beta.2
+# [1] git ls-remote https://github.com/vishvananda/netlink 5e915e0149386ce3d02379ff93f4c0a5601779d5
+SRCREV_netlink="5e915e0149386ce3d02379ff93f4c0a5601779d5"
+SRC_URI += "git://github.com/vishvananda/netlink;name=netlink;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vishvananda/netlink"
+
+# github.com/containers/ocicrypt v1.1.9
+# [1] git ls-remote https://github.com/containers/ocicrypt c0e1fd5b82bc57acdb1a241dc602534eea42edb6
+SRCREV_ocicrypt="c0e1fd5b82bc57acdb1a241dc602534eea42edb6"
+SRC_URI += "git://github.com/containers/ocicrypt;name=ocicrypt;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containers/ocicrypt"
+
+# github.com/mattn/go-shellwords v1.0.12
+# [1] git ls-remote https://github.com/mattn/go-shellwords 973b9d5391598d4ee601db46fa32f6e186a356ac
+SRCREV_go-shellwords="973b9d5391598d4ee601db46fa32f6e186a356ac"
+SRC_URI += "git://github.com/mattn/go-shellwords;name=go-shellwords;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mattn/go-shellwords"
+
+# github.com/moby/sys/sequential v0.5.0
+# [1] git ls-remote https://github.com/moby/sys b22ba8a69b306f0b4adbbe2a529457e6283ed9f7
+SRCREV_sequential="b22ba8a69b306f0b4adbbe2a529457e6283ed9f7"
+SRC_URI += "git://github.com/moby/sys;name=sequential;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/moby/sys/sequential"
+
+# go.opentelemetry.io/otel/trace v1.19.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_trace="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=trace;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/trace"
+
+# github.com/containerd/platforms v0.1.1
+# [1] git ls-remote https://github.com/containerd/platforms db76a43eaea9a004a5f240620f966b0081123884
+SRCREV_platforms="db76a43eaea9a004a5f240620f966b0081123884"
+SRC_URI += "git://github.com/containerd/platforms;name=platforms;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/platforms"
+
+# github.com/pelletier/go-toml/v2 v2.1.1
+# [1] git ls-remote https://github.com/pelletier/go-toml 34765b4a9e937ab927b5bd57231e98c68fe13109
+SRCREV_go-toml-v2="34765b4a9e937ab927b5bd57231e98c68fe13109"
+SRC_URI += "git://github.com/pelletier/go-toml;name=go-toml-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/pelletier/go-toml/v2"
+
+# github.com/mitchellh/go-homedir v1.1.0
+# [1] git ls-remote https://github.com/mitchellh/go-homedir af06845cf3004701891bf4fdb884bfe4920b3727
+SRCREV_go-homedir="af06845cf3004701891bf4fdb884bfe4920b3727"
+SRC_URI += "git://github.com/mitchellh/go-homedir;name=go-homedir;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/go-homedir"
+
+# github.com/xeipuuv/gojsonschema v1.2.0
+# [1] git ls-remote https://github.com/xeipuuv/gojsonschema 82fcdeb203eb6ab2a67d0a623d9c19e5e5a64927
+SRCREV_gojsonschema="82fcdeb203eb6ab2a67d0a623d9c19e5e5a64927"
+SRC_URI += "git://github.com/xeipuuv/gojsonschema;name=gojsonschema;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonschema"
+
+# go.opentelemetry.io/otel/metric v1.19.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 60666c554065ac4da502fe28943eea4b938ab479
+SRCREV_metric="60666c554065ac4da502fe28943eea4b938ab479"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=metric;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/metric"
+
+# github.com/Masterminds/semver/v3 v3.2.1
+# [1] git ls-remote https://github.com/Masterminds/semver e06051f8fcc4c8b4a4990c337b9862a2448722e5
+SRCREV_v3="e06051f8fcc4c8b4a4990c337b9862a2448722e5"
+SRC_URI += "git://github.com/Masterminds/semver;name=v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Masterminds/semver/v3"
+
+# github.com/containerd/cgroups/v3 v3.0.3
+# [1] git ls-remote https://github.com/containerd/cgroups 1e056883d58ac58daf7566065a46016b4532f35c
+SRCREV_cgroups-v3="1e056883d58ac58daf7566065a46016b4532f35c"
+SRC_URI += "git://github.com/containerd/cgroups;name=cgroups-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/cgroups/v3"
+
+# github.com/containerd/containerd v1.7.13
+# [1] git ls-remote https://github.com/containerd/containerd 7c3aca7a610df76212171d200ca3811ff6096eb8
+SRCREV_containerd="7c3aca7a610df76212171d200ca3811ff6096eb8"
+SRC_URI += "git://github.com/containerd/containerd;name=containerd;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/containerd"
+
+# github.com/containerd/continuity v0.4.3
+# [1] git ls-remote https://github.com/containerd/continuity 1743d9104d944131cdedaba33a59d2f9bd80a6f2
+SRCREV_continuity="1743d9104d944131cdedaba33a59d2f9bd80a6f2"
+SRC_URI += "git://github.com/containerd/continuity;name=continuity;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/continuity"
+
+# github.com/containerd/typeurl/v2 v2.1.1
+# [1] git ls-remote https://github.com/containerd/typeurl 7ef6316b771f959cbb208b229e3423a466947df3
+SRCREV_v2="7ef6316b771f959cbb208b229e3423a466947df3"
+SRC_URI += "git://github.com/containerd/typeurl;name=v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/typeurl/v2"
+
+# github.com/coreos/go-systemd/v22 v22.5.0
+# [1] git ls-remote https://github.com/coreos/go-systemd d5623bf85e8e73ae6352f78ee6b55a287619dd4e
+SRCREV_v22="d5623bf85e8e73ae6352f78ee6b55a287619dd4e"
+SRC_URI += "git://github.com/coreos/go-systemd;name=v22;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/coreos/go-systemd/v22"
+
+# github.com/docker/go-connections v0.5.0
+# [1] git ls-remote https://github.com/docker/go-connections fa09c952e3eadbffaf8afc5b8a1667158ba38ace
+SRCREV_go-connections="fa09c952e3eadbffaf8afc5b8a1667158ba38ace"
+SRC_URI += "git://github.com/docker/go-connections;name=go-connections;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/go-connections"
+
+# github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb
+# [1] git ls-remote https://github.com/xeipuuv/gojsonpointer 02993c407bfbf5f6dae44c4f4b1cf6a39b5fc5bb
+SRCREV_gojsonpointer="02993c407bfbf5f6dae44c4f4b1cf6a39b5fc5bb"
+SRC_URI += "git://github.com/xeipuuv/gojsonpointer;name=gojsonpointer;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonpointer"
+
+# github.com/fahedouch/go-logrotate v0.2.0
+# [1] git ls-remote https://github.com/fahedouch/go-logrotate 6b28a8e09e886889e0bc4347e66bd4d4d82f5b10
+SRCREV_go-logrotate="6b28a8e09e886889e0bc4347e66bd4d4d82f5b10"
+SRC_URI += "git://github.com/fahedouch/go-logrotate;name=go-logrotate;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fahedouch/go-logrotate"
+
+# github.com/mitchellh/mapstructure v1.5.0
+# [1] git ls-remote https://github.com/mitchellh/mapstructure ab69d8d93410fce4361f4912bb1ff88110a81311
+SRCREV_mapstructure="ab69d8d93410fce4361f4912bb1ff88110a81311"
+SRC_URI += "git://github.com/mitchellh/mapstructure;name=mapstructure;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/mitchellh/mapstructure"
+
+# github.com/distribution/reference v0.5.0
+# [1] git ls-remote https://github.com/distribution/reference 49c28499d219290c3226822e9cfcd4ede6d75379
+SRCREV_reference="49c28499d219290c3226822e9cfcd4ede6d75379"
+SRC_URI += "git://github.com/distribution/reference;name=reference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/distribution/reference"
+
+# github.com/multiformats/go-base32 v0.1.0
+# [1] git ls-remote https://github.com/multiformats/go-base32 a16b66327f327428b32b919939b8c93482507e1f
+SRCREV_go-base32="a16b66327f327428b32b919939b8c93482507e1f"
+SRC_URI += "git://github.com/multiformats/go-base32;name=go-base32;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-base32"
+
+# github.com/multiformats/go-base36 v0.1.0
+# [1] git ls-remote https://github.com/multiformats/go-base36 dc4afa6ad3b0720f4a1b282776db2a59ca9c8be7
+SRCREV_go-base36="dc4afa6ad3b0720f4a1b282776db2a59ca9c8be7"
+SRC_URI += "git://github.com/multiformats/go-base36;name=go-base36;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-base36"
+
+# github.com/multiformats/go-varint v0.0.6
+# [1] git ls-remote https://github.com/multiformats/go-varint a3ded45ab16ca9f2f2a516e68053ffa7ebd9bb0e
+SRCREV_go-varint="a3ded45ab16ca9f2f2a516e68053ffa7ebd9bb0e"
+SRC_URI += "git://github.com/multiformats/go-varint;name=go-varint;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-varint"
+
+# github.com/opencontainers/selinux v1.11.0
+# [1] git ls-remote https://github.com/opencontainers/selinux b68c45eb2df48c6b0c949901ccda90c8e65fe677
+SRCREV_selinux="b68c45eb2df48c6b0c949901ccda90c8e65fe677"
+SRC_URI += "git://github.com/opencontainers/selinux;name=selinux;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/selinux"
+
+# github.com/compose-spec/compose-go v1.20.2
+# [1] git ls-remote https://github.com/compose-spec/compose-go e390b9774ca100e1d75c8bc075054502783b48b8
+SRCREV_compose-go="e390b9774ca100e1d75c8bc075054502783b48b8"
+SRC_URI += "git://github.com/compose-spec/compose-go;name=compose-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/compose-spec/compose-go"
+
+# github.com/containernetworking/cni v1.1.2
+# [1] git ls-remote https://github.com/containernetworking/cni 3363d143688bb83ca18489ac8b9dc204c1d49c4a
+SRCREV_cni="3363d143688bb83ca18489ac8b9dc204c1d49c4a"
+SRC_URI += "git://github.com/containernetworking/cni;name=cni;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containernetworking/cni"
+
+# github.com/hashicorp/go-multierror v1.1.1
+# [1] git ls-remote https://github.com/hashicorp/go-multierror 9974e9ec57696378079ecc3accd3d6f29401b3a0
+SRCREV_go-multierror="9974e9ec57696378079ecc3accd3d6f29401b3a0"
+SRC_URI += "git://github.com/hashicorp/go-multierror;name=go-multierror;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-multierror"
+
+# github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415
+# [1] git ls-remote https://github.com/xeipuuv/gojsonreference bd5ef7bd5415a7ac448318e64f11a24cd21e594b
+SRCREV_gojsonreference="bd5ef7bd5415a7ac448318e64f11a24cd21e594b"
+SRC_URI += "git://github.com/xeipuuv/gojsonreference;name=gojsonreference;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/xeipuuv/gojsonreference"
+
+# github.com/awslabs/soci-snapshotter v0.4.1
+# [1] git ls-remote https://github.com/awslabs/soci-snapshotter 34e069d90460f422c549b3a8994aa26820cf6544
+SRCREV_soci-snapshotter="34e069d90460f422c549b3a8994aa26820cf6544"
+SRC_URI += "git://github.com/awslabs/soci-snapshotter;name=soci-snapshotter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/awslabs/soci-snapshotter"
+
+# github.com/opencontainers/go-digest v1.0.0
+# [1] git ls-remote https://github.com/opencontainers/go-digest ea51bea511f75cfa3ef6098cc253c5c3609b037a
+SRCREV_go-digest="ea51bea511f75cfa3ef6098cc253c5c3609b037a"
+SRC_URI += "git://github.com/opencontainers/go-digest;name=go-digest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/go-digest"
+
+# github.com/opencontainers/image-spec v1.1.0
+# [1] git ls-remote https://github.com/opencontainers/image-spec e7f7c0ca69b21688c3cea7c87a04e4503e6099e2
+SRCREV_image-spec="e7f7c0ca69b21688c3cea7c87a04e4503e6099e2"
+SRC_URI += "git://github.com/opencontainers/image-spec;name=image-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/image-spec"
+
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24
+# [1] git ls-remote https://github.com/AdaLogics/go-fuzz-headers ced1acdcaa24dc39c01b039fc37576c395f506cf
+SRCREV_go-fuzz-headers="ced1acdcaa24dc39c01b039fc37576c395f506cf"
+SRC_URI += "git://github.com/AdaLogics/go-fuzz-headers;name=go-fuzz-headers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AdaLogics/go-fuzz-headers"
+
+# github.com/inconshreveable/mousetrap v1.1.0
+# [1] git ls-remote https://github.com/inconshreveable/mousetrap 4e8053ee7ef85a6bd26368364a6d27f1641c1d21
+SRCREV_mousetrap="4e8053ee7ef85a6bd26368364a6d27f1641c1d21"
+SRC_URI += "git://github.com/inconshreveable/mousetrap;name=mousetrap;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/inconshreveable/mousetrap"
+
+# github.com/multiformats/go-multiaddr v0.12.0
+# [1] git ls-remote https://github.com/multiformats/go-multiaddr 5dd793c6fc4935fad347429a48a168acc8073474
+SRCREV_go-multiaddr="5dd793c6fc4935fad347429a48a168acc8073474"
+SRC_URI += "git://github.com/multiformats/go-multiaddr;name=go-multiaddr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multiaddr"
+
+# github.com/multiformats/go-multibase v0.1.1
+# [1] git ls-remote https://github.com/multiformats/go-multibase c1bc15b22eedb45f9205f3b60ce5fcb8fca93e08
+SRCREV_go-multibase="c1bc15b22eedb45f9205f3b60ce5fcb8fca93e08"
+SRC_URI += "git://github.com/multiformats/go-multibase;name=go-multibase;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multibase"
+
+# github.com/multiformats/go-multihash v0.2.1
+# [1] git ls-remote https://github.com/multiformats/go-multihash 16974ad98ab1fb19eb756919f55373b39cc80bec
+SRCREV_go-multihash="16974ad98ab1fb19eb756919f55373b39cc80bec"
+SRC_URI += "git://github.com/multiformats/go-multihash;name=go-multihash;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/multiformats/go-multihash"
+
+# github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980
+# [1] git ls-remote https://github.com/stefanberger/go-pkcs11uri 78d3cae3a9805d89aa4fa80a362ca944c89a1b99
+SRCREV_go-pkcs11uri="78d3cae3a9805d89aa4fa80a362ca944c89a1b99"
+SRC_URI += "git://github.com/stefanberger/go-pkcs11uri;name=go-pkcs11uri;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/stefanberger/go-pkcs11uri"
+
+# github.com/cyphar/filepath-securejoin v0.2.4
+# [1] git ls-remote https://github.com/cyphar/filepath-securejoin 2710d06c5b4ba3168beffa0689798d2db12e8ac4
+SRCREV_filepath-securejoin="2710d06c5b4ba3168beffa0689798d2db12e8ac4"
+SRC_URI += "git://github.com/cyphar/filepath-securejoin;name=filepath-securejoin;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cyphar/filepath-securejoin"
+
+# github.com/containernetworking/plugins v1.4.0
+# [1] git ls-remote https://github.com/containernetworking/plugins 1fb5bf669e42cd208008e52d45b41fe2c3eb8dbc
+SRCREV_plugins="1fb5bf669e42cd208008e52d45b41fe2c3eb8dbc"
+SRC_URI += "git://github.com/containernetworking/plugins;name=plugins;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containernetworking/plugins"
+
+# github.com/fluent/fluent-logger-golang v1.9.0
+# [1] git ls-remote https://github.com/fluent/fluent-logger-golang 5538e904aeb515c10a624da620581bdf420d4b8a
+SRCREV_fluent-logger-golang="5538e904aeb515c10a624da620581bdf420d4b8a"
+SRC_URI += "git://github.com/fluent/fluent-logger-golang;name=fluent-logger-golang;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/fluent/fluent-logger-golang"
+
+# github.com/opencontainers/runtime-spec v1.2.0
+# [1] git ls-remote https://github.com/opencontainers/runtime-spec 36852b0d072a4b5da675300a9e73bc4b0853f5c6
+SRCREV_runtime-spec="36852b0d072a4b5da675300a9e73bc4b0853f5c6"
+SRC_URI += "git://github.com/opencontainers/runtime-spec;name=runtime-spec;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runtime-spec"
+
+# github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0
+# [1] git ls-remote https://github.com/AdamKorcz/go-118-fuzz-build 8075edf89bb034603c758f28fe93143047ac5677
+SRCREV_go-118-fuzz-build="8075edf89bb034603c758f28fe93143047ac5677"
+SRC_URI += "git://github.com/AdamKorcz/go-118-fuzz-build;name=go-118-fuzz-build;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/AdamKorcz/go-118-fuzz-build"
+
+# github.com/containerd/nydus-snapshotter v0.13.7
+# [1] git ls-remote https://github.com/containerd/nydus-snapshotter 3fcac86ccfe192b34e8605de9e26b9f40150c8cb
+SRCREV_nydus-snapshotter="3fcac86ccfe192b34e8605de9e26b9f40150c8cb"
+SRC_URI += "git://github.com/containerd/nydus-snapshotter;name=nydus-snapshotter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/nydus-snapshotter"
+
+# github.com/containerd/stargz-snapshotter v0.15.1
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 64ab83bd65cd4a763e262955984232cc5ddfeb3f
+SRCREV_stargz-snapshotter="64ab83bd65cd4a763e262955984232cc5ddfeb3f"
+SRC_URI += "git://github.com/containerd/stargz-snapshotter;name=stargz-snapshotter;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/stargz-snapshotter"
+
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b
+# [1] git ls-remote https://github.com/googleapis/go-genproto 49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846
+SRCREV_rpc="49dd2c1f3d0bf0f025ccaf8eeaaad902e3c63846"
+SRC_URI += "git://github.com/googleapis/go-genproto;name=rpc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/google.golang.org/genproto/googleapis/rpc"
+
+# github.com/rootless-containers/bypass4netns v0.4.0
+# [1] git ls-remote https://github.com/rootless-containers/bypass4netns 3385f1f32437dba4300a2bdf1567a7ece939f9b9
+SRCREV_bypass4netns="3385f1f32437dba4300a2bdf1567a7ece939f9b9"
+SRC_URI += "git://github.com/rootless-containers/bypass4netns;name=bypass4netns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rootless-containers/bypass4netns"
+
+# github.com/docker/docker-credential-helpers v0.7.0
+# [1] git ls-remote https://github.com/docker/docker-credential-helpers ac5992b5f4756fc0398a7d0c93c609e624368bde
+SRCREV_docker-credential-helpers="ac5992b5f4756fc0398a7d0c93c609e624368bde"
+SRC_URI += "git://github.com/docker/docker-credential-helpers;name=docker-credential-helpers;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/docker/docker-credential-helpers"
+
+# github.com/containerd/stargz-snapshotter/ipfs v0.15.1
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 64ab83bd65cd4a763e262955984232cc5ddfeb3f
+SRCREV_ipfs="64ab83bd65cd4a763e262955984232cc5ddfeb3f"
+SRC_URI += "git://github.com/containerd/stargz-snapshotter;name=ipfs;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/stargz-snapshotter/ipfs"
+
+# github.com/rootless-containers/rootlesskit/v2 v2.0.1
+# [1] git ls-remote https://github.com/rootless-containers/rootlesskit 5e9cd7880619a3c0a675e6a41d9562b6839066ee
+SRCREV_rootlesskit-v2="5e9cd7880619a3c0a675e6a41d9562b6839066ee"
+SRC_URI += "git://github.com/rootless-containers/rootlesskit;name=rootlesskit-v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/rootless-containers/rootlesskit/v2"
+
+# github.com/containerd/stargz-snapshotter/estargz v0.15.1
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 64ab83bd65cd4a763e262955984232cc5ddfeb3f
+SRCREV_estargz="64ab83bd65cd4a763e262955984232cc5ddfeb3f"
+SRC_URI += "git://github.com/containerd/stargz-snapshotter;name=estargz;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/stargz-snapshotter/estargz"
+
+# github.com/containerd/accelerated-container-image v1.0.2
+# [1] git ls-remote https://github.com/containerd/accelerated-container-image 526b680966031d9e07371894e1de68cbf9ae6282
+SRCREV_accelerated-container-image="526b680966031d9e07371894e1de68cbf9ae6282"
+SRC_URI += "git://github.com/containerd/accelerated-container-image;name=accelerated-container-image;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/containerd/accelerated-container-image"
+
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib 9d4eb7e7706038b07d33f83f76afbe13f53d171d
+SRCREV_otelhttp="9d4eb7e7706038b07d33f83f76afbe13f53d171d"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go-contrib;name=otelhttp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp"
+
diff --git a/recipes-containers/netavark/files/run-ptest b/recipes-containers/netavark/files/run-ptest
new file mode 100644
index 00000000..7e017ae2
--- /dev/null
+++ b/recipes-containers/netavark/files/run-ptest
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+shopt -s extglob
+
+# Skip the plugin tests because those example plugins are built only while
+# running cargo test and for this to work as a ptest they would need to be cross
+# compiled and installed as part of the ptest.
+NETAVARK=/usr/libexec/podman/netavark bats test/!(*-plugin.bats)
diff --git a/recipes-containers/netavark/files/tests.patch b/recipes-containers/netavark/files/tests.patch
new file mode 100644
index 00000000..3e1e9ed9
--- /dev/null
+++ b/recipes-containers/netavark/files/tests.patch
@@ -0,0 +1,24 @@
+Upstream-Status: Pending
+
+Index: git/test/helpers.bash
+===================================================================
+--- git.orig/test/helpers.bash
++++ git/test/helpers.bash
+@@ -575,7 +575,7 @@
+ fi
+
+ nsenter -n -t "${CONTAINER_NS_PIDS[$container_ns]}" timeout --foreground -v --kill=10 5 \
+- nc $nc_common_args -l -p $container_port &>"$NETAVARK_TMPDIR/nc-out" <$stdin &
++ ncat $nc_common_args -l -p $container_port &>"$NETAVARK_TMPDIR/nc-out" <$stdin &
+
+ # make sure to wait until port is bound otherwise test can flake
+ # https://github.com/containers/netavark/issues/433
+@@ -588,7 +588,7 @@
+ fi
+
+ data=$(random_string)
+- run_in_host_netns nc $nc_common_args $connect_ip $host_port <<<"$data"
++ run_in_host_netns ncat $nc_common_args $connect_ip $host_port <<<"$data"
+
+ got=$(cat "$NETAVARK_TMPDIR/nc-out")
+ assert "$got" == "$data" "ncat received data"
diff --git a/recipes-containers/netavark/netavark-crates.inc b/recipes-containers/netavark/netavark-crates.inc
new file mode 100644
index 00000000..00b7c53b
--- /dev/null
+++ b/recipes-containers/netavark/netavark-crates.inc
@@ -0,0 +1,560 @@
+# Autogenerated with 'bitbake -c update_crates netavark'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/addr2line/0.21.0 \
+ crate://crates.io/adler/1.0.2 \
+ crate://crates.io/aho-corasick/1.1.2 \
+ crate://crates.io/android-tzdata/0.1.1 \
+ crate://crates.io/android_system_properties/0.1.5 \
+ crate://crates.io/anstream/0.6.11 \
+ crate://crates.io/anstyle/1.0.4 \
+ crate://crates.io/anstyle-parse/0.2.2 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/3.0.1 \
+ crate://crates.io/anyhow/1.0.75 \
+ crate://crates.io/arrayvec/0.7.4 \
+ crate://crates.io/async-broadcast/0.5.1 \
+ crate://crates.io/async-channel/2.1.0 \
+ crate://crates.io/async-executor/1.7.2 \
+ crate://crates.io/async-fs/1.6.0 \
+ crate://crates.io/async-io/1.13.0 \
+ crate://crates.io/async-io/2.2.0 \
+ crate://crates.io/async-lock/2.8.0 \
+ crate://crates.io/async-lock/3.1.1 \
+ crate://crates.io/async-process/1.8.1 \
+ crate://crates.io/async-recursion/1.0.5 \
+ crate://crates.io/async-signal/0.2.5 \
+ crate://crates.io/async-stream/0.3.5 \
+ crate://crates.io/async-stream-impl/0.3.5 \
+ crate://crates.io/async-task/4.5.0 \
+ crate://crates.io/async-trait/0.1.74 \
+ crate://crates.io/atomic-waker/1.1.2 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/axum/0.6.20 \
+ crate://crates.io/axum-core/0.3.4 \
+ crate://crates.io/backtrace/0.3.69 \
+ crate://crates.io/base64/0.21.5 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.4.1 \
+ crate://crates.io/block-buffer/0.10.4 \
+ crate://crates.io/blocking/1.5.1 \
+ crate://crates.io/bumpalo/3.14.0 \
+ crate://crates.io/byteorder/1.5.0 \
+ crate://crates.io/bytes/1.5.0 \
+ crate://crates.io/cc/1.0.83 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/chrono/0.4.32 \
+ crate://crates.io/clap/4.4.12 \
+ crate://crates.io/clap_builder/4.4.12 \
+ crate://crates.io/clap_derive/4.4.7 \
+ crate://crates.io/clap_lex/0.6.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/concurrent-queue/2.3.0 \
+ crate://crates.io/core-foundation-sys/0.8.4 \
+ crate://crates.io/cpufeatures/0.2.11 \
+ crate://crates.io/crossbeam-utils/0.8.16 \
+ crate://crates.io/crypto-common/0.1.6 \
+ crate://crates.io/data-encoding/2.4.0 \
+ crate://crates.io/derivative/2.2.0 \
+ crate://crates.io/dhcproto/0.9.0 \
+ crate://crates.io/dhcproto-macros/0.1.0 \
+ crate://crates.io/digest/0.10.7 \
+ crate://crates.io/either/1.9.0 \
+ crate://crates.io/enum-as-inner/0.5.1 \
+ crate://crates.io/enum-as-inner/0.6.0 \
+ crate://crates.io/enumflags2/0.7.8 \
+ crate://crates.io/enumflags2_derive/0.7.8 \
+ crate://crates.io/env_filter/0.1.0 \
+ crate://crates.io/env_logger/0.11.0 \
+ crate://crates.io/equivalent/1.0.1 \
+ crate://crates.io/errno/0.3.8 \
+ crate://crates.io/etherparse/0.13.0 \
+ crate://crates.io/ethtool/0.2.5 \
+ crate://crates.io/event-listener/2.5.3 \
+ crate://crates.io/event-listener/3.1.0 \
+ crate://crates.io/event-listener-strategy/0.3.0 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/fastrand/2.0.1 \
+ crate://crates.io/fixedbitset/0.4.2 \
+ crate://crates.io/fnv/1.0.7 \
+ crate://crates.io/form_urlencoded/1.2.1 \
+ crate://crates.io/fs2/0.4.3 \
+ crate://crates.io/futures/0.3.29 \
+ crate://crates.io/futures-channel/0.3.30 \
+ crate://crates.io/futures-core/0.3.30 \
+ crate://crates.io/futures-executor/0.3.29 \
+ crate://crates.io/futures-io/0.3.30 \
+ crate://crates.io/futures-lite/1.13.0 \
+ crate://crates.io/futures-lite/2.0.1 \
+ crate://crates.io/futures-macro/0.3.30 \
+ crate://crates.io/futures-sink/0.3.30 \
+ crate://crates.io/futures-task/0.3.30 \
+ crate://crates.io/futures-util/0.3.30 \
+ crate://crates.io/generic-array/0.14.7 \
+ crate://crates.io/genetlink/0.2.5 \
+ crate://crates.io/getrandom/0.2.11 \
+ crate://crates.io/gimli/0.28.0 \
+ crate://crates.io/h2/0.3.24 \
+ crate://crates.io/hashbrown/0.12.3 \
+ crate://crates.io/hashbrown/0.14.2 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.3 \
+ crate://crates.io/hex/0.4.3 \
+ crate://crates.io/home/0.5.5 \
+ crate://crates.io/http/0.2.11 \
+ crate://crates.io/http-body/0.4.5 \
+ crate://crates.io/httparse/1.8.0 \
+ crate://crates.io/httpdate/1.0.3 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/hyper/0.14.27 \
+ crate://crates.io/hyper-timeout/0.4.1 \
+ crate://crates.io/iana-time-zone/0.1.58 \
+ crate://crates.io/iana-time-zone-haiku/0.1.2 \
+ crate://crates.io/idna/0.2.3 \
+ crate://crates.io/idna/0.5.0 \
+ crate://crates.io/indexmap/1.9.3 \
+ crate://crates.io/indexmap/2.1.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/ipnet/2.9.0 \
+ crate://crates.io/iptables/0.5.1 \
+ crate://crates.io/itertools/0.11.0 \
+ crate://crates.io/itoa/1.0.9 \
+ crate://crates.io/js-sys/0.3.65 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/libc/0.2.150 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/linux-raw-sys/0.4.11 \
+ crate://crates.io/log/0.4.20 \
+ crate://crates.io/matches/0.1.10 \
+ crate://crates.io/matchit/0.7.3 \
+ crate://crates.io/memchr/2.6.4 \
+ crate://crates.io/memoffset/0.7.1 \
+ crate://crates.io/mime/0.3.17 \
+ crate://crates.io/miniz_oxide/0.7.1 \
+ crate://crates.io/mio/0.8.9 \
+ crate://crates.io/mozim/0.2.2 \
+ crate://crates.io/mptcp-pm/0.1.3 \
+ crate://crates.io/multimap/0.8.3 \
+ crate://crates.io/netlink-packet-core/0.7.0 \
+ crate://crates.io/netlink-packet-generic/0.3.3 \
+ crate://crates.io/netlink-packet-route/0.18.1 \
+ crate://crates.io/netlink-packet-utils/0.5.2 \
+ crate://crates.io/netlink-proto/0.11.2 \
+ crate://crates.io/netlink-sys/0.8.5 \
+ crate://crates.io/nftables/0.3.0 \
+ crate://crates.io/nispor/1.2.16 \
+ crate://crates.io/nix/0.26.4 \
+ crate://crates.io/nix/0.27.1 \
+ crate://crates.io/num-traits/0.2.17 \
+ crate://crates.io/num_cpus/1.16.0 \
+ crate://crates.io/object/0.32.1 \
+ crate://crates.io/once_cell/1.19.0 \
+ crate://crates.io/ordered-float/2.10.1 \
+ crate://crates.io/ordered-stream/0.2.0 \
+ crate://crates.io/parking/2.2.0 \
+ crate://crates.io/paste/1.0.14 \
+ crate://crates.io/percent-encoding/2.3.1 \
+ crate://crates.io/petgraph/0.6.4 \
+ crate://crates.io/pin-project/1.1.3 \
+ crate://crates.io/pin-project-internal/1.1.3 \
+ crate://crates.io/pin-project-lite/0.2.13 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/piper/0.2.1 \
+ crate://crates.io/polling/2.8.0 \
+ crate://crates.io/polling/3.3.0 \
+ crate://crates.io/ppv-lite86/0.2.17 \
+ crate://crates.io/prettyplease/0.2.15 \
+ crate://crates.io/proc-macro-crate/1.3.1 \
+ crate://crates.io/proc-macro2/1.0.74 \
+ crate://crates.io/prost/0.12.2 \
+ crate://crates.io/prost-build/0.12.2 \
+ crate://crates.io/prost-derive/0.12.2 \
+ crate://crates.io/prost-types/0.12.2 \
+ crate://crates.io/quote/1.0.35 \
+ crate://crates.io/rand/0.8.5 \
+ crate://crates.io/rand_chacha/0.3.1 \
+ crate://crates.io/rand_core/0.6.4 \
+ crate://crates.io/redox_syscall/0.4.1 \
+ crate://crates.io/regex/1.10.2 \
+ crate://crates.io/regex-automata/0.4.3 \
+ crate://crates.io/regex-syntax/0.8.2 \
+ crate://crates.io/rtnetlink/0.14.0 \
+ crate://crates.io/rustc-demangle/0.1.23 \
+ crate://crates.io/rustix/0.37.27 \
+ crate://crates.io/rustix/0.38.28 \
+ crate://crates.io/rustversion/1.0.14 \
+ crate://crates.io/ryu/1.0.15 \
+ crate://crates.io/same-file/1.0.6 \
+ crate://crates.io/serde/1.0.194 \
+ crate://crates.io/serde-value/0.7.0 \
+ crate://crates.io/serde_derive/1.0.194 \
+ crate://crates.io/serde_json/1.0.111 \
+ crate://crates.io/serde_path_to_error/0.1.14 \
+ crate://crates.io/serde_repr/0.1.17 \
+ crate://crates.io/sha1/0.10.6 \
+ crate://crates.io/sha2/0.10.8 \
+ crate://crates.io/signal-hook-registry/1.4.1 \
+ crate://crates.io/slab/0.4.9 \
+ crate://crates.io/smallvec/1.11.2 \
+ crate://crates.io/socket2/0.4.10 \
+ crate://crates.io/socket2/0.5.5 \
+ crate://crates.io/static_assertions/1.1.0 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/strum/0.25.0 \
+ crate://crates.io/strum_macros/0.25.3 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.46 \
+ crate://crates.io/sync_wrapper/0.1.2 \
+ crate://crates.io/sysctl/0.5.5 \
+ crate://crates.io/tempfile/3.9.0 \
+ crate://crates.io/thiserror/1.0.50 \
+ crate://crates.io/thiserror-impl/1.0.50 \
+ crate://crates.io/tinyvec/1.6.0 \
+ crate://crates.io/tinyvec_macros/0.1.1 \
+ crate://crates.io/tokio/1.35.0 \
+ crate://crates.io/tokio-io-timeout/1.2.0 \
+ crate://crates.io/tokio-macros/2.2.0 \
+ crate://crates.io/tokio-stream/0.1.14 \
+ crate://crates.io/tokio-util/0.7.10 \
+ crate://crates.io/toml_datetime/0.6.5 \
+ crate://crates.io/toml_edit/0.19.15 \
+ crate://crates.io/tonic/0.10.2 \
+ crate://crates.io/tonic-build/0.10.2 \
+ crate://crates.io/tower/0.4.13 \
+ crate://crates.io/tower-layer/0.3.2 \
+ crate://crates.io/tower-service/0.3.2 \
+ crate://crates.io/tracing/0.1.40 \
+ crate://crates.io/tracing-attributes/0.1.27 \
+ crate://crates.io/tracing-core/0.1.32 \
+ crate://crates.io/trust-dns-proto/0.22.0 \
+ crate://crates.io/try-lock/0.2.4 \
+ crate://crates.io/typenum/1.17.0 \
+ crate://crates.io/uds_windows/1.0.2 \
+ crate://crates.io/unicode-bidi/0.3.13 \
+ crate://crates.io/unicode-ident/1.0.12 \
+ crate://crates.io/unicode-normalization/0.1.22 \
+ crate://crates.io/url/2.5.0 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/waker-fn/1.1.1 \
+ crate://crates.io/walkdir/2.4.0 \
+ crate://crates.io/want/0.3.1 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/wasm-bindgen/0.2.88 \
+ crate://crates.io/wasm-bindgen-backend/0.2.88 \
+ crate://crates.io/wasm-bindgen-macro/0.2.88 \
+ crate://crates.io/wasm-bindgen-macro-support/0.2.88 \
+ crate://crates.io/wasm-bindgen-shared/0.2.88 \
+ crate://crates.io/which/4.4.2 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.6 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-core/0.51.1 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-sys/0.52.0 \
+ crate://crates.io/windows-targets/0.48.5 \
+ crate://crates.io/windows-targets/0.52.0 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.52.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.52.0 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.52.0 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.52.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.52.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.52.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.52.0 \
+ crate://crates.io/winnow/0.5.19 \
+ crate://crates.io/xdg-home/1.0.0 \
+ crate://crates.io/zbus/3.14.1 \
+ crate://crates.io/zbus_macros/3.14.1 \
+ crate://crates.io/zbus_names/2.6.0 \
+ crate://crates.io/zvariant/3.15.0 \
+ crate://crates.io/zvariant_derive/3.15.0 \
+ crate://crates.io/zvariant_utils/1.0.1 \
+"
+
+SRC_URI[addr2line-0.21.0.sha256sum] = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb"
+SRC_URI[adler-1.0.2.sha256sum] = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
+SRC_URI[aho-corasick-1.1.2.sha256sum] = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
+SRC_URI[android-tzdata-0.1.1.sha256sum] = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
+SRC_URI[android_system_properties-0.1.5.sha256sum] = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
+SRC_URI[anstream-0.6.11.sha256sum] = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5"
+SRC_URI[anstyle-1.0.4.sha256sum] = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87"
+SRC_URI[anstyle-parse-0.2.2.sha256sum] = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-3.0.1.sha256sum] = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628"
+SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[arrayvec-0.7.4.sha256sum] = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711"
+SRC_URI[async-broadcast-0.5.1.sha256sum] = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b"
+SRC_URI[async-channel-2.1.0.sha256sum] = "d37875bd9915b7d67c2f117ea2c30a0989874d0b2cb694fe25403c85763c0c9e"
+SRC_URI[async-executor-1.7.2.sha256sum] = "fc5ea910c42e5ab19012bab31f53cb4d63d54c3a27730f9a833a88efcf4bb52d"
+SRC_URI[async-fs-1.6.0.sha256sum] = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
+SRC_URI[async-io-1.13.0.sha256sum] = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
+SRC_URI[async-io-2.2.0.sha256sum] = "41ed9d5715c2d329bf1b4da8d60455b99b187f27ba726df2883799af9af60997"
+SRC_URI[async-lock-2.8.0.sha256sum] = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
+SRC_URI[async-lock-3.1.1.sha256sum] = "655b9c7fe787d3b25cc0f804a1a8401790f0c5bc395beb5a64dc77d8de079105"
+SRC_URI[async-process-1.8.1.sha256sum] = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
+SRC_URI[async-recursion-1.0.5.sha256sum] = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0"
+SRC_URI[async-signal-0.2.5.sha256sum] = "9e47d90f65a225c4527103a8d747001fc56e375203592b25ad103e1ca13124c5"
+SRC_URI[async-stream-0.3.5.sha256sum] = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51"
+SRC_URI[async-stream-impl-0.3.5.sha256sum] = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
+SRC_URI[async-task-4.5.0.sha256sum] = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1"
+SRC_URI[async-trait-0.1.74.sha256sum] = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9"
+SRC_URI[atomic-waker-1.1.2.sha256sum] = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[axum-0.6.20.sha256sum] = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf"
+SRC_URI[axum-core-0.3.4.sha256sum] = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c"
+SRC_URI[backtrace-0.3.69.sha256sum] = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837"
+SRC_URI[base64-0.21.5.sha256sum] = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.4.1.sha256sum] = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07"
+SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+SRC_URI[blocking-1.5.1.sha256sum] = "6a37913e8dc4ddcc604f0c6d3bf2887c995153af3611de9e23c352b44c1b9118"
+SRC_URI[bumpalo-3.14.0.sha256sum] = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec"
+SRC_URI[byteorder-1.5.0.sha256sum] = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b"
+SRC_URI[bytes-1.5.0.sha256sum] = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223"
+SRC_URI[cc-1.0.83.sha256sum] = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[chrono-0.4.32.sha256sum] = "41daef31d7a747c5c847246f36de49ced6f7403b4cdabc807a97b5cc184cda7a"
+SRC_URI[clap-4.4.12.sha256sum] = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d"
+SRC_URI[clap_builder-4.4.12.sha256sum] = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9"
+SRC_URI[clap_derive-4.4.7.sha256sum] = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442"
+SRC_URI[clap_lex-0.6.0.sha256sum] = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[concurrent-queue-2.3.0.sha256sum] = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400"
+SRC_URI[core-foundation-sys-0.8.4.sha256sum] = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa"
+SRC_URI[cpufeatures-0.2.11.sha256sum] = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0"
+SRC_URI[crossbeam-utils-0.8.16.sha256sum] = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[data-encoding-2.4.0.sha256sum] = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
+SRC_URI[derivative-2.2.0.sha256sum] = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
+SRC_URI[dhcproto-0.9.0.sha256sum] = "dcee045385d5f7819022821f41209b9945d17550760b0b2349aaef4ecfa14bc3"
+SRC_URI[dhcproto-macros-0.1.0.sha256sum] = "a7993efb860416547839c115490d4951c6d0f8ec04a3594d9dd99d50ed7ec170"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[either-1.9.0.sha256sum] = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
+SRC_URI[enum-as-inner-0.5.1.sha256sum] = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116"
+SRC_URI[enum-as-inner-0.6.0.sha256sum] = "5ffccbb6966c05b32ef8fbac435df276c4ae4d3dc55a8cd0eb9745e6c12f546a"
+SRC_URI[enumflags2-0.7.8.sha256sum] = "5998b4f30320c9d93aed72f63af821bfdac50465b75428fce77b48ec482c3939"
+SRC_URI[enumflags2_derive-0.7.8.sha256sum] = "f95e2801cd355d4a1a3e3953ce6ee5ae9603a5c833455343a8bfe3f44d418246"
+SRC_URI[env_filter-0.1.0.sha256sum] = "a009aa4810eb158359dda09d0c87378e4bbb89b5a801f016885a4707ba24f7ea"
+SRC_URI[env_logger-0.11.0.sha256sum] = "9eeb342678d785662fd2514be38c459bb925f02b68dd2a3e0f21d7ef82d979dd"
+SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+SRC_URI[errno-0.3.8.sha256sum] = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245"
+SRC_URI[etherparse-0.13.0.sha256sum] = "827292ea592108849932ad8e30218f8b1f21c0dfd0696698a18b5d0aed62d990"
+SRC_URI[ethtool-0.2.5.sha256sum] = "1d8e04a35517dc77748dc04bf38152799382d3d8f85cb07cb579bb7f4d8d3b5a"
+SRC_URI[event-listener-2.5.3.sha256sum] = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
+SRC_URI[event-listener-3.1.0.sha256sum] = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
+SRC_URI[event-listener-strategy-0.3.0.sha256sum] = "d96b852f1345da36d551b9473fa1e2b1eb5c5195585c6c018118bc92a8d91160"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[fastrand-2.0.1.sha256sum] = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5"
+SRC_URI[fixedbitset-0.4.2.sha256sum] = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80"
+SRC_URI[fnv-1.0.7.sha256sum] = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
+SRC_URI[form_urlencoded-1.2.1.sha256sum] = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456"
+SRC_URI[fs2-0.4.3.sha256sum] = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213"
+SRC_URI[futures-0.3.29.sha256sum] = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335"
+SRC_URI[futures-channel-0.3.30.sha256sum] = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78"
+SRC_URI[futures-core-0.3.30.sha256sum] = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d"
+SRC_URI[futures-executor-0.3.29.sha256sum] = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+SRC_URI[futures-io-0.3.30.sha256sum] = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1"
+SRC_URI[futures-lite-1.13.0.sha256sum] = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+SRC_URI[futures-lite-2.0.1.sha256sum] = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb"
+SRC_URI[futures-macro-0.3.30.sha256sum] = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
+SRC_URI[futures-sink-0.3.30.sha256sum] = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5"
+SRC_URI[futures-task-0.3.30.sha256sum] = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004"
+SRC_URI[futures-util-0.3.30.sha256sum] = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[genetlink-0.2.5.sha256sum] = "1f890076c1faa1298bf747ce3694a8d9e0d2cc4b06fe293f12dd95742bfd079f"
+SRC_URI[getrandom-0.2.11.sha256sum] = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
+SRC_URI[gimli-0.28.0.sha256sum] = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0"
+SRC_URI[h2-0.3.24.sha256sum] = "bb2c4422095b67ee78da96fbb51a4cc413b3b25883c7717ff7ca1ab31022c9c9"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hashbrown-0.14.2.sha256sum] = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.3.sha256sum] = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7"
+SRC_URI[hex-0.4.3.sha256sum] = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70"
+SRC_URI[home-0.5.5.sha256sum] = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb"
+SRC_URI[http-0.2.11.sha256sum] = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb"
+SRC_URI[http-body-0.4.5.sha256sum] = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1"
+SRC_URI[httparse-1.8.0.sha256sum] = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904"
+SRC_URI[httpdate-1.0.3.sha256sum] = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[hyper-0.14.27.sha256sum] = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468"
+SRC_URI[hyper-timeout-0.4.1.sha256sum] = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1"
+SRC_URI[iana-time-zone-0.1.58.sha256sum] = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
+SRC_URI[iana-time-zone-haiku-0.1.2.sha256sum] = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
+SRC_URI[idna-0.2.3.sha256sum] = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8"
+SRC_URI[idna-0.5.0.sha256sum] = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6"
+SRC_URI[indexmap-1.9.3.sha256sum] = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
+SRC_URI[indexmap-2.1.0.sha256sum] = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[ipnet-2.9.0.sha256sum] = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3"
+SRC_URI[iptables-0.5.1.sha256sum] = "d39f0d72d0feb83c9b7f4e1fbde2b4a629886f30841127b3f86383831dba2629"
+SRC_URI[itertools-0.11.0.sha256sum] = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
+SRC_URI[itoa-1.0.9.sha256sum] = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
+SRC_URI[js-sys-0.3.65.sha256sum] = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.150.sha256sum] = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[linux-raw-sys-0.4.11.sha256sum] = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
+SRC_URI[log-0.4.20.sha256sum] = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
+SRC_URI[matches-0.1.10.sha256sum] = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5"
+SRC_URI[matchit-0.7.3.sha256sum] = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
+SRC_URI[memchr-2.6.4.sha256sum] = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
+SRC_URI[memoffset-0.7.1.sha256sum] = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4"
+SRC_URI[mime-0.3.17.sha256sum] = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a"
+SRC_URI[miniz_oxide-0.7.1.sha256sum] = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7"
+SRC_URI[mio-0.8.9.sha256sum] = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0"
+SRC_URI[mozim-0.2.2.sha256sum] = "0c1c15d0df314be0af498b122169739cc873045e431a0cb1a83564f7459ac491"
+SRC_URI[mptcp-pm-0.1.3.sha256sum] = "3eafa8fc63dce407b75e336f9a22f18cf5510a3a5c3a5d83262688eb5cca42d5"
+SRC_URI[multimap-0.8.3.sha256sum] = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a"
+SRC_URI[netlink-packet-core-0.7.0.sha256sum] = "72724faf704479d67b388da142b186f916188505e7e0b26719019c525882eda4"
+SRC_URI[netlink-packet-generic-0.3.3.sha256sum] = "1cd7eb8ad331c84c6b8cb7f685b448133e5ad82e1ffd5acafac374af4a5a308b"
+SRC_URI[netlink-packet-route-0.18.1.sha256sum] = "dd9ccdfabb457e05c7c61e66eb39262a204fbb376c53968b5e52dce15b423fc5"
+SRC_URI[netlink-packet-utils-0.5.2.sha256sum] = "0ede8a08c71ad5a95cdd0e4e52facd37190977039a4704eb82a283f713747d34"
+SRC_URI[netlink-proto-0.11.2.sha256sum] = "842c6770fc4bb33dd902f41829c61ef872b8e38de1405aa0b938b27b8fba12c3"
+SRC_URI[netlink-sys-0.8.5.sha256sum] = "6471bf08e7ac0135876a9581bf3217ef0333c191c128d34878079f42ee150411"
+SRC_URI[nftables-0.3.0.sha256sum] = "71d11bb5c74ea03d97b6eaed2a30a81657d9884152c661d28d44b4d22616b652"
+SRC_URI[nispor-1.2.16.sha256sum] = "0c9f198b82210da3f72354fb061ca8b683f274ae137cd6d862758bd9b176d047"
+SRC_URI[nix-0.26.4.sha256sum] = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b"
+SRC_URI[nix-0.27.1.sha256sum] = "2eb04e9c688eff1c89d72b407f168cf79bb9e867a9d3323ed6c01519eb9cc053"
+SRC_URI[num-traits-0.2.17.sha256sum] = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
+SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+SRC_URI[object-0.32.1.sha256sum] = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0"
+SRC_URI[once_cell-1.19.0.sha256sum] = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
+SRC_URI[ordered-float-2.10.1.sha256sum] = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
+SRC_URI[ordered-stream-0.2.0.sha256sum] = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50"
+SRC_URI[parking-2.2.0.sha256sum] = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae"
+SRC_URI[paste-1.0.14.sha256sum] = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
+SRC_URI[percent-encoding-2.3.1.sha256sum] = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
+SRC_URI[petgraph-0.6.4.sha256sum] = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9"
+SRC_URI[pin-project-1.1.3.sha256sum] = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
+SRC_URI[pin-project-internal-1.1.3.sha256sum] = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
+SRC_URI[pin-project-lite-0.2.13.sha256sum] = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[piper-0.2.1.sha256sum] = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4"
+SRC_URI[polling-2.8.0.sha256sum] = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
+SRC_URI[polling-3.3.0.sha256sum] = "e53b6af1f60f36f8c2ac2aad5459d75a5a9b4be1e8cdd40264f315d78193e531"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[prettyplease-0.2.15.sha256sum] = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d"
+SRC_URI[proc-macro-crate-1.3.1.sha256sum] = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+SRC_URI[proc-macro2-1.0.74.sha256sum] = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db"
+SRC_URI[prost-0.12.2.sha256sum] = "5a5a410fc7882af66deb8d01d01737353cf3ad6204c408177ba494291a626312"
+SRC_URI[prost-build-0.12.2.sha256sum] = "1fa3d084c8704911bfefb2771be2f9b6c5c0da7343a71e0021ee3c665cada738"
+SRC_URI[prost-derive-0.12.2.sha256sum] = "065717a5dfaca4a83d2fe57db3487b311365200000551d7a364e715dbf4346bc"
+SRC_URI[prost-types-0.12.2.sha256sum] = "8339f32236f590281e2f6368276441394fcd1b2133b549cc895d0ae80f2f9a52"
+SRC_URI[quote-1.0.35.sha256sum] = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redox_syscall-0.4.1.sha256sum] = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
+SRC_URI[regex-1.10.2.sha256sum] = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
+SRC_URI[regex-automata-0.4.3.sha256sum] = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
+SRC_URI[regex-syntax-0.8.2.sha256sum] = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
+SRC_URI[rtnetlink-0.14.0.sha256sum] = "bb5bbb61e037711ff30a3657ec537285b2e1ecb5427e4365d275164f0928c884"
+SRC_URI[rustc-demangle-0.1.23.sha256sum] = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76"
+SRC_URI[rustix-0.37.27.sha256sum] = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2"
+SRC_URI[rustix-0.38.28.sha256sum] = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316"
+SRC_URI[rustversion-1.0.14.sha256sum] = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
+SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[same-file-1.0.6.sha256sum] = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
+SRC_URI[serde-1.0.194.sha256sum] = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773"
+SRC_URI[serde-value-0.7.0.sha256sum] = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+SRC_URI[serde_derive-1.0.194.sha256sum] = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0"
+SRC_URI[serde_json-1.0.111.sha256sum] = "176e46fa42316f18edd598015a5166857fc835ec732f5215eac6b7bdbf0a84f4"
+SRC_URI[serde_path_to_error-0.1.14.sha256sum] = "4beec8bce849d58d06238cb50db2e1c417cfeafa4c63f692b15c82b7c80f8335"
+SRC_URI[serde_repr-0.1.17.sha256sum] = "3081f5ffbb02284dda55132aa26daecedd7372a42417bbbab6f14ab7d6bb9145"
+SRC_URI[sha1-0.10.6.sha256sum] = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba"
+SRC_URI[sha2-0.10.8.sha256sum] = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
+SRC_URI[signal-hook-registry-1.4.1.sha256sum] = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1"
+SRC_URI[slab-0.4.9.sha256sum] = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67"
+SRC_URI[smallvec-1.11.2.sha256sum] = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970"
+SRC_URI[socket2-0.4.10.sha256sum] = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
+SRC_URI[socket2-0.5.5.sha256sum] = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9"
+SRC_URI[static_assertions-1.1.0.sha256sum] = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[strum-0.25.0.sha256sum] = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
+SRC_URI[strum_macros-0.25.3.sha256sum] = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.46.sha256sum] = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e"
+SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+SRC_URI[sysctl-0.5.5.sha256sum] = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea"
+SRC_URI[tempfile-3.9.0.sha256sum] = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa"
+SRC_URI[thiserror-1.0.50.sha256sum] = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
+SRC_URI[thiserror-impl-1.0.50.sha256sum] = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
+SRC_URI[tinyvec-1.6.0.sha256sum] = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
+SRC_URI[tinyvec_macros-0.1.1.sha256sum] = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
+SRC_URI[tokio-1.35.0.sha256sum] = "841d45b238a16291a4e1584e61820b8ae57d696cc5015c459c229ccc6990cc1c"
+SRC_URI[tokio-io-timeout-1.2.0.sha256sum] = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf"
+SRC_URI[tokio-macros-2.2.0.sha256sum] = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
+SRC_URI[tokio-stream-0.1.14.sha256sum] = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842"
+SRC_URI[tokio-util-0.7.10.sha256sum] = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15"
+SRC_URI[toml_datetime-0.6.5.sha256sum] = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1"
+SRC_URI[toml_edit-0.19.15.sha256sum] = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421"
+SRC_URI[tonic-0.10.2.sha256sum] = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e"
+SRC_URI[tonic-build-0.10.2.sha256sum] = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889"
+SRC_URI[tower-0.4.13.sha256sum] = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
+SRC_URI[tower-layer-0.3.2.sha256sum] = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0"
+SRC_URI[tower-service-0.3.2.sha256sum] = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
+SRC_URI[tracing-0.1.40.sha256sum] = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
+SRC_URI[tracing-attributes-0.1.27.sha256sum] = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
+SRC_URI[tracing-core-0.1.32.sha256sum] = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
+SRC_URI[trust-dns-proto-0.22.0.sha256sum] = "4f7f83d1e4a0e4358ac54c5c3681e5d7da5efc5a7a632c90bb6d6669ddd9bc26"
+SRC_URI[try-lock-0.2.4.sha256sum] = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed"
+SRC_URI[typenum-1.17.0.sha256sum] = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
+SRC_URI[uds_windows-1.0.2.sha256sum] = "ce65604324d3cce9b966701489fbd0cf318cb1f7bd9dd07ac9a4ee6fb791930d"
+SRC_URI[unicode-bidi-0.3.13.sha256sum] = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
+SRC_URI[unicode-ident-1.0.12.sha256sum] = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
+SRC_URI[unicode-normalization-0.1.22.sha256sum] = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
+SRC_URI[url-2.5.0.sha256sum] = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[waker-fn-1.1.1.sha256sum] = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690"
+SRC_URI[walkdir-2.4.0.sha256sum] = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee"
+SRC_URI[want-0.3.1.sha256sum] = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[wasm-bindgen-0.2.88.sha256sum] = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce"
+SRC_URI[wasm-bindgen-backend-0.2.88.sha256sum] = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217"
+SRC_URI[wasm-bindgen-macro-0.2.88.sha256sum] = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2"
+SRC_URI[wasm-bindgen-macro-support-0.2.88.sha256sum] = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907"
+SRC_URI[wasm-bindgen-shared-0.2.88.sha256sum] = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b"
+SRC_URI[which-4.4.2.sha256sum] = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.6.sha256sum] = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-core-0.51.1.sha256sum] = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-sys-0.52.0.sha256sum] = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d"
+SRC_URI[windows-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows-targets-0.52.0.sha256sum] = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_gnullvm-0.52.0.sha256sum] = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_aarch64_msvc-0.52.0.sha256sum] = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_gnu-0.52.0.sha256sum] = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_i686_msvc-0.52.0.sha256sum] = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnu-0.52.0.sha256sum] = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_gnullvm-0.52.0.sha256sum] = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+SRC_URI[windows_x86_64_msvc-0.52.0.sha256sum] = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04"
+SRC_URI[winnow-0.5.19.sha256sum] = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b"
+SRC_URI[xdg-home-1.0.0.sha256sum] = "2769203cd13a0c6015d515be729c526d041e9cf2c0cc478d57faee85f40c6dcd"
+SRC_URI[zbus-3.14.1.sha256sum] = "31de390a2d872e4cd04edd71b425e29853f786dc99317ed72d73d6fcf5ebb948"
+SRC_URI[zbus_macros-3.14.1.sha256sum] = "41d1794a946878c0e807f55a397187c11fc7a038ba5d868e7db4f3bd7760bc9d"
+SRC_URI[zbus_names-2.6.0.sha256sum] = "fb80bb776dbda6e23d705cf0123c3b95df99c4ebeaec6c2599d4a5419902b4a9"
+SRC_URI[zvariant-3.15.0.sha256sum] = "44b291bee0d960c53170780af148dca5fa260a63cdd24f1962fa82e03e53338c"
+SRC_URI[zvariant_derive-3.15.0.sha256sum] = "934d7a7dfc310d6ee06c87ffe88ef4eca7d3e37bb251dece2ef93da8f17d8ecd"
+SRC_URI[zvariant_utils-1.0.1.sha256sum] = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
diff --git a/recipes-containers/netavark/netavark_1.10.3.bb b/recipes-containers/netavark/netavark_1.10.3.bb
new file mode 100644
index 00000000..b65b73e8
--- /dev/null
+++ b/recipes-containers/netavark/netavark_1.10.3.bb
@@ -0,0 +1,61 @@
+SUMMARY = "A container network stack"
+HOMEPAGE = "https://github.com/containers/netavark"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRCREV = "d9f9fdc116ea3ed72a6eb4e59da33bf5d7c60b38"
+
+# It is possible to fetch the source using the crate fetcher instead:
+#SRC_URI = "crate://crates.io/${BPN}/${PV}"
+SRC_URI = "git://github.com/containers/netavark.git;protocol=https;branch=v1.10 \
+ file://tests.patch \
+ file://run-ptest"
+require ${BPN}-crates.inc
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ?= "aardvark-dns"
+
+# From the documentation of netavark
+# https://github.com/containers/netavark/blob/v1.1.0/DISTRO_PACKAGE.md#dependency-on-aardvark-dns
+# The aardvark-dns will be installed by default with netavark, but
+# netavark will be functional without it.
+PACKAGECONFIG[aardvark-dns]= ",,, aardvark-dns"
+
+inherit cargo cargo-update-recipe-crates features_check ptest
+
+# Cargo installs the binary to bin so move it to where podman expects it
+do_install:append() {
+ install -d ${D}${libexecdir}
+ mv ${D}${bindir} ${D}${libexecdir}/podman
+}
+
+do_install_ptest() {
+ cp -r ${S}/test ${D}${PTEST_PATH}
+}
+
+# rdepends on aardvark-dns which rdepends on slirp4netns
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+
+DEPENDS += "protobuf-c-native protobuf-c"
+
+# bind-utils is used to install dig
+# procps-ps is necessary because the ps from busybox is
+# not having the same behavior
+# iputils is used because busybox ping behaves differently
+RDEPENDS:${PN}-ptest += " \
+ bash \
+ bats \
+ bind-utils \
+ coreutils \
+ dbus-daemon-proxy \
+ iproute2 \
+ iputils \
+ jq \
+ nmap \
+ procps-ps \
+ util-linux-nsenter \
+ util-linux-unshare \
+"
diff --git a/recipes-containers/oci-image-spec/oci-image-spec_git.bb b/recipes-containers/oci-image-spec/oci-image-spec_git.bb
index 58057408..e5422cec 100644
--- a/recipes-containers/oci-image-spec/oci-image-spec_git.bb
+++ b/recipes-containers/oci-image-spec/oci-image-spec_git.bb
@@ -7,10 +7,10 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=27ef03aa2da6e424307f102e8
SRCNAME = "image-spec"
PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=main;protocol=https"
-SRCREV = "bd4f8fcb0979a663d8b97a1d4d9b030b3d2ca1fa"
-PV = "v1.0.1+git${SRCPV}"
+SRCREV = "9615142d016838b5dfe7453f80af0be74feb5c7c"
+PV = "v1.1.0-rc3+git"
S = "${WORKDIR}/git"
@@ -36,6 +36,6 @@ image_spec_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
CLEANBROKEN = "1"
diff --git a/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch b/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch
index 78d2b9d0..10371af3 100644
--- a/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch
+++ b/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch
@@ -7,15 +7,17 @@ Rather than throwing an error if we can't map a user to a uid,
output a warning. We aren't actually running the code, but are
just extracting it .. so the user not existing isn't an issue.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
image/config.go | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/src/import/image/config.go b/src/import/image/config.go
+diff --git a/image/config.go b/image/config.go
index d28b1bc4fe5f..37dfd1f14ef7 100644
---- a/src/import/image/config.go
-+++ b/src/import/image/config.go
+--- a/image/config.go
++++ b/image/config.go
@@ -106,7 +106,7 @@ func (c *config) runtimeSpec(rootfs string) (*specs.Spec, error) {
s.Process.User.UID = uint32(uid)
s.Process.User.GID = uint32(gid)
diff --git a/recipes-containers/oci-image-tools/files/0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch b/recipes-containers/oci-image-tools/files/0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch
index 7e0b2a11..90337aa4 100644
--- a/recipes-containers/oci-image-tools/files/0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch
+++ b/recipes-containers/oci-image-tools/files/0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch
@@ -8,15 +8,17 @@ build flags from our environemnt. Otherwise, we'll use the host
settings for each and end up with a binary that cannot be run on
the target.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/src/import/Makefile b/src/import/Makefile
+diff --git a/Makefile b/Makefile
index bacb341..1bfe021 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
+--- a/Makefile
++++ b/Makefile
@@ -27,7 +27,7 @@ check-license:
.PHONY: tool
diff --git a/recipes-containers/oci-image-tools/oci-image-tools_git.bb b/recipes-containers/oci-image-tools/oci-image-tools_git.bb
index 676f3cc4..ade6534d 100644
--- a/recipes-containers/oci-image-tools/oci-image-tools_git.bb
+++ b/recipes-containers/oci-image-tools/oci-image-tools_git.bb
@@ -1,23 +1,14 @@
HOMEPAGE = "https://github.com/opencontainers/image-tools"
SUMMARY = "A collection of tools for working with the OCI image format specification"
-LICENSE = "Apache-2"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
-
-DEPENDS = "\
- oci-image-spec \
- oci-runtime-spec \
- go-digest \
- go-errors \
- spf13-cobra \
- spf13-pflag \
- "
-
-SRC_URI = "git://github.com/opencontainers/image-tools.git \
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+SRC_URI = "git://github.com/opencontainers/image-tools.git;branch=master;protocol=https;destsuffix=git/src/github.com/opencontainers/image-tools \
file://0001-config-make-Config.User-mapping-errors-a-warning.patch \
file://0001-tool-respect-GO-and-GOBUILDFLAGS-when-building.patch"
-SRCREV = "93db3b16e6738bf9b8bee47d86ac93be5340838b"
-PV = "0.2.0-dev+git${SRCPV}"
+SRCREV = "11f9988298305d36f64248a6ee55318e60bf170b"
+PV = "1.0.0-rc3+git"
GO_IMPORT = "import"
inherit goarch
@@ -27,37 +18,34 @@ inherit go
# go package.
EXTRA_OEMAKE="BUILDTAGS=''"
+S = "${WORKDIR}/git/src/github.com/opencontainers/image-tools"
+
+COMPATIBLE_HOST:riscv64 = "null"
+
do_compile() {
export GOARCH="${TARGET_GOARCH}"
- export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
- # Setup vendor directory so that it can be used in GOPATH.
- #
- # Go looks in a src directory under any directory in GOPATH but riddler
- # uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
- #
- # We also need to link in the ipallocator directory as that is not under
- # a src directory.
- ln -sfn . "${S}/src/import/vendor/src"
- mkdir -p "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/"
- ln -sfn "${S}/src/import/image" "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/image"
- ln -sfn "${S}/src/import/version" "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/version"
- export GOPATH="${S}/src/import/vendor"
+ export GOROOT="${STAGING_LIBDIR}/go"
+ export GOPATH="${WORKDIR}/git/"
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- cd ${S}/src/import
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+ export GO111MODULE=off
+
+ export GOBUILDFLAGS="-trimpath"
+
+ cd ${S}
oe_runmake tool
}
do_install() {
install -d ${D}/${sbindir}
- install ${S}/src/import/oci-image-tool ${D}/${sbindir}/
+ install ${S}/oci-image-tool ${D}/${sbindir}/
}
-INSANE_SKIP_${PN} += "ldflags textrel"
+INSANE_SKIP:${PN} += "ldflags textrel"
diff --git a/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb b/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb
index c4083c09..6eccb148 100644
--- a/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb
+++ b/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb
@@ -7,10 +7,10 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=b355a61a394a504dacde901c9
SRCNAME = "runtime-spec"
PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME};destsuffix=git/src/${PKG_NAME};branch=main;protocol=https"
-SRCREV = "78ab98c0761136f84e6e21b24b4dcd0be68ab782"
-PV = "v1.0.1+git${SRCPV}"
+SRCREV = "720792f25ae6e9ee6b1332db698f37659e69ce8d"
+PV = "v1.1.0-rc2+git"
S = "${WORKDIR}/git"
@@ -36,6 +36,6 @@ runtime_spec_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
CLEANBROKEN = "1"
diff --git a/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch b/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch
index 99a9310b..abfd0dfb 100644
--- a/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch
+++ b/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch
@@ -4,6 +4,9 @@ Date: Wed, 20 Sep 2017 23:28:52 -0400
Subject: [PATCH] Revert "implement add/set function for hooks items"
This reverts commit df3a46feb971386f922c7c2c2822b88301f87cb0.
+
+Upstream-Status: Inappropriate [embedded specific]
+
---
cmd/oci-runtime-tool/generate.go | 12 ++++++------
generate/generate.go | 42 ++++++----------------------------------
diff --git a/recipes-containers/oci-runtime-tools/files/0001-build-use-for-cross-compiler.patch b/recipes-containers/oci-runtime-tools/files/0001-build-use-for-cross-compiler.patch
new file mode 100644
index 00000000..06db99fd
--- /dev/null
+++ b/recipes-containers/oci-runtime-tools/files/0001-build-use-for-cross-compiler.patch
@@ -0,0 +1,30 @@
+From b4ad9b2a57d6c736870657c06959ccc44b578f12 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 30 Jun 2020 23:47:08 -0400
+Subject: [PATCH] build: use for cross compiler
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ a/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: oci-runtime-tools-0.9.0+gitAUTOINC+0105384f68/Makefile
+===================================================================
+--- oci-runtime-tools-0.9.0+gitAUTOINC+0105384f68.orig/Makefile
++++ oci-runtime-tools-0.9.0+gitAUTOINC+0105384f68/Makefile
+@@ -13,11 +13,11 @@
+ all: tool runtimetest validation-executables
+
+ tool:
+- go build $(BUILD_FLAGS) -o oci-runtime-tool ./cmd/oci-runtime-tool
++ ${GO} build $(BUILD_FLAGS) -o oci-runtime-tool ./cmd/oci-runtime-tool
+
+ .PHONY: runtimetest
+ runtimetest:
+- go build $(STATIC_BUILD_FLAGS) -o runtimetest ./cmd/runtimetest
++ ${GO} build $(STATIC_BUILD_FLAGS) -o runtimetest ./cmd/runtimetest
+
+ .PHONY: man
+ man:
diff --git a/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb b/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb
index adbfc1ef..81bebfe2 100644
--- a/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb
+++ b/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb
@@ -1,51 +1,53 @@
HOMEPAGE = "https://github.com/opencontainers/runtime-tools"
SUMMARY = "oci-runtime-tool is a collection of tools for working with the OCI runtime specification"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=b355a61a394a504dacde901c958f662c"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b355a61a394a504dacde901c958f662c"
-SRC_URI = "git://github.com/opencontainers/runtime-tools.git \
- file://0001-Revert-implement-add-set-function-for-hooks-items.patch \
+SRC_URI = "git://github.com/opencontainers/runtime-tools.git;branch=master;protocol=https;destsuffix=git/src/github.com/opencontainers/runtime-tools \
+ file://0001-build-use-for-cross-compiler.patch \
"
-SRCREV = "6e7da8148f4de2c9e9c9d3b345576898d4f412cb"
-PV = "0.1.0+git${SRCPV}"
+SRCREV = "0105384f68e16803891d0a17d9067b1def6a2778"
+PV = "0.9.0+git"
GO_IMPORT = "import"
-INSANE_SKIP_${PN} += "ldflags textrel"
+INSANE_SKIP:${PN} += "ldflags textrel"
inherit goarch
inherit go
+S = "${WORKDIR}/git/src/github.com/opencontainers/runtime-tools"
+
do_compile() {
export GOARCH="${TARGET_GOARCH}"
- export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
- export GOPATH="${S}/src/import:${S}/src/import/vendor"
+ export GOPATH="${WORKDIR}/git/"
+ export GOROOT="${STAGING_LIBDIR}/go"
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
- # link fixups for compilation
- rm -f ${S}/src/import/vendor/src
- ln -sf ./ ${S}/src/import/vendor/src
- mkdir -p ${S}/src/import/vendor/github.com/opencontainers/runtime-tools
- ln -sf ../../../../generate ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/generate
- ln -sf ../../../../validate ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/validate
- ln -sf ../../../../cmd ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/cmd
- ln -sf ../../../../error ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/error
- ln -sf ../../../../specerror ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/specerror
- cd ${S}/src/import
-
- oe_runmake
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+ export GO111MODULE=off
+ export GOFLAGS="-mod=vendor"
+
+ # fixes:
+ # cannot find package runtime/cgo (using -importcfg)
+ # ... recipe-sysroot-native/usr/lib/aarch64-poky-linux/go/pkg/tool/linux_amd64/link:
+ # cannot open file : open : no such file or directory
+ # export GO_BUILD_FLAGS="-a -pkgdir dontusecurrentpkgs"
+ export EXTRA_FLAGS="-trimpath"
+
+ cd ${S}
+
+ oe_runmake tool
}
do_install() {
install -d ${D}/${sbindir}
- install ${S}/src/import/oci-runtime-tool ${D}/${sbindir}/oci-runtime-tool
+ install ${S}/oci-runtime-tool ${D}/${sbindir}/oci-runtime-tool
}
deltask compile_ptest_base
diff --git a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch
index 34f0c09e..388eda3d 100644
--- a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch
+++ b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch
@@ -3,6 +3,8 @@ From: Jason Wessel <jason.wessel@windriver.com>
Date: Tue, 2 Jul 2019 20:51:08 +0000
Subject: [PATCH] Add additional cgroup mounts from root NS automatically
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
src/systemdhook.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
diff --git a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch
index 510126e4..fc9236b5 100644
--- a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch
+++ b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch
@@ -3,6 +3,8 @@ From: Bruce Ashfield <bruce.ashfield@windriver.com>
Date: Tue, 8 Nov 2016 13:16:19 -0500
Subject: [PATCH] configure: drop selinux support
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
configure.ac | 1 -
diff --git a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch
index a3ec57df..d2b19285 100644
--- a/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch
+++ b/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch
@@ -3,6 +3,8 @@ From: Bruce Ashfield <bruce.ashfield@windriver.com>
Date: Tue, 8 Nov 2016 13:15:46 -0500
Subject: [PATCH] selinux: drop selinux support
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
src/systemdhook.c | 12 ------------
diff --git a/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb b/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb
index 6734bffe..0d5ce5f5 100644
--- a/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb
+++ b/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb
@@ -1,19 +1,19 @@
DESCRIPTION = "OCI systemd hook enables users to run systemd in docker and OCI"
SECTION = "console/utils"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
PRIORITY = "optional"
DEPENDS = "yajl util-linux"
SRCREV = "05e692346ca73e022754332a7da641230dae2ffe"
-SRC_URI = "git://github.com/projectatomic/oci-systemd-hook \
+SRC_URI = "git://github.com/projectatomic/oci-systemd-hook;branch=master;protocol=https \
file://0001-selinux-drop-selinux-support.patch \
file://0001-configure-drop-selinux-support.patch \
file://0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch \
"
-PV = "0.2.0+git${SRCPV}"
+PV = "0.2.0+git"
S = "${WORKDIR}/git"
inherit autotools pkgconfig
@@ -32,5 +32,5 @@ do_install() {
oe_runmake 'DESTDIR=${D}' install-exec-am
}
-FILES_${PN} += "${libexecdir}/oci/hooks.d/"
+FILES:${PN} += "${libexecdir}/oci/hooks.d/"
diff --git a/recipes-containers/podman-compose/podman-compose_0.1.5.bb b/recipes-containers/podman-compose/podman-compose_0.1.5.bb
deleted file mode 100644
index 4015069a..00000000
--- a/recipes-containers/podman-compose/podman-compose_0.1.5.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-DESCRIPTION = "An implementation of docker-compose with podman backend"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-
-inherit setuptools3 pypi
-
-SRC_URI = "git://github.com/containers/podman-compose.git"
-
-SRCREV = "f008986633879acf3f54848dabbf07cef8e9c68f"
-
-S = "${WORKDIR}/git"
-
-DEPENDS += "${PYTHON_PN}-pyyaml-native"
-
-RDEPENDS_${PN} += "${PYTHON_PN}-pyyaml"
diff --git a/recipes-containers/podman-compose/podman-compose_1.0.6.bb b/recipes-containers/podman-compose/podman-compose_1.0.6.bb
new file mode 100644
index 00000000..e055ee45
--- /dev/null
+++ b/recipes-containers/podman-compose/podman-compose_1.0.6.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "An implementation of docker-compose with podman backend"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+inherit setuptools3
+
+SRC_URI = "git://github.com/containers/podman-compose.git;branch=stable;protocol=https"
+
+SRCREV = "f6dbce36181c44d0d08b6f4ca166508542875ce1"
+
+S = "${WORKDIR}/git"
+
+DEPENDS += "python3-pyyaml-native"
+
+RDEPENDS:${PN} += "\
+ python3-pyyaml \
+ python3-dotenv \
+"
diff --git a/recipes-containers/podman-tui/README b/recipes-containers/podman-tui/README
new file mode 100644
index 00000000..661556c1
--- /dev/null
+++ b/recipes-containers/podman-tui/README
@@ -0,0 +1,6 @@
+
+# to get the graphics to draw:
+
+a) export LC_ALL="en_CA.UTF-8"
+b) don't run under screen
+
diff --git a/recipes-containers/podman-tui/podman-tui_git.bb b/recipes-containers/podman-tui/podman-tui_git.bb
new file mode 100644
index 00000000..210f4f5b
--- /dev/null
+++ b/recipes-containers/podman-tui/podman-tui_git.bb
@@ -0,0 +1,74 @@
+HOMEPAGE = "https://github.com/containers/podman-tui"
+SUMMARY = "podman-tui is a Terminal User Interface to interact with podman"
+DESCRIPTION = "podman-tui is a Terminal User Interface to interact with the podman v4. \
+podman bindings has been used to communicate with podman environment through rest api API (unix socket). \
+ "
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp ipv6"
+
+DEPENDS = " \
+ libseccomp \
+ libdevmapper \
+ lvm2 \
+ btrfs-tools \
+ gpgme \
+ libassuan \
+ libgpg-error \
+"
+
+SRCREV_FORMAT = "podmantui_storage"
+SRCREV_podmantui = "b4350927babdaa35fbf50424190683aeb9f5f66f"
+SRCREV_storage = "246ba3062e8b551026aef2708eee747014ce5c52"
+SRC_URI = " \
+ git://github.com/containers/podman-tui;protocol=https;name=podmantui;branch=release-v0.17 \
+"
+# Due to some other API changes, we can't directly import containers/storage at
+# the right commit, so we instead extract a patch and apply it to the tree
+#SRC_URI += "git://github.com/containers/storage;protocol=https;name=storage;branch=release-v0.17;destsuffix=git/src/import/vendor/github.com/containers/storage"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+GO_IMPORT = "import"
+
+S = "${WORKDIR}/git"
+
+PV = "v0.17.0+git"
+
+PODMAN_PKG = "github.com/containers/podman-tui"
+
+inherit go goarch
+inherit pkgconfig
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+do_configure[noexec] = "1"
+
+BUILD_TAGS ?= "exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
+
+do_compile() {
+ cd ${S}/src
+
+ rm -rf .gopath
+ mkdir -p .gopath/src/"$(dirname "${PODMAN_PKG}")"
+ ln -sf ../../../../import/ .gopath/src/"${PODMAN_PKG}"
+
+ cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export GOFLAGS="-mod=vendor"
+
+ # oe_runmake BUILDTAGS="${BUILDTAGS}"
+ ${GO} build -trimpath -tags "$(BUILDTAGS)" ${GO_LDFLAGS} -o bin/podman-tui
+}
+
+do_install() {
+ cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
+
+ install -d ${D}/${bindir}
+ install bin/podman-tui ${D}/${bindir}/
+}
+
+RDEPENDS:${PN} += "podman"
diff --git a/recipes-containers/podman/README b/recipes-containers/podman/README
new file mode 100644
index 00000000..213ac256
--- /dev/null
+++ b/recipes-containers/podman/README
@@ -0,0 +1,41 @@
+rootless podman
+---------------
+
+Basic configuration:
+
+ https://developers.redhat.com/blog/2020/09/25/rootless-containers-with-podman-the-basics#
+
+% echo "user.max_user_namespaces=28633" > /etc/sysctl.d/userns.conf
+% sysctl -p /etc/sysctl.d/userns.conf
+
+% useradd -c "yocto" yocto
+% passwd yocto
+
+% su - yocto
+
+% podman pull alpine
+% podman run alpine cat /etc/os-release
+% podman images
+% podman unshare cat /proc/self/uid_map
+
+
+podman system service
+---------------
+
+The podman system service command creates a listening service that answers API
+calls for Podman, it supports systemd socket activation.
+
+Test with docker-compose (v2):
+
+To be noticed, docker could NOT be installed together with podman, so
+docker-compose should be built as a standalone tool, remove 'docker-plugin'
+from its PACKAGECONFIG at build time:
+
+```
+PACKAGECONFIG:remove:pn-docker-compose = "docker-plugin"
+```
+
+% sudo systemctl start podman.socket
+% git clone https://github.com/docker/awesome-compose.git
+% cd awesome-compose/postgresql-pgadmin; source .env
+% sudo docker-compose up -d
diff --git a/recipes-containers/podman/podman/50-podman-rootless.conf b/recipes-containers/podman/podman/50-podman-rootless.conf
new file mode 100644
index 00000000..aaede0e1
--- /dev/null
+++ b/recipes-containers/podman/podman/50-podman-rootless.conf
@@ -0,0 +1,6 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: MIT
+
+# User namespaces are required for rootless containers.
+user.max_user_namespaces = 15000
diff --git a/recipes-containers/podman/podman/run-ptest b/recipes-containers/podman/podman/run-ptest
new file mode 100644
index 00000000..108ff451
--- /dev/null
+++ b/recipes-containers/podman/podman/run-ptest
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: MIT
+
+#
+# Podman system tests
+#
+
+# The system tests don't need any go related variables. Dummy-define them to
+# avoid useless warnings/errors.
+GOOS=undefined GO=true BUILDTAGS= make localsystem
diff --git a/recipes-containers/podman/podman_git.bb b/recipes-containers/podman/podman_git.bb
index 50d07eab..f69dec16 100644
--- a/recipes-containers/podman/podman_git.bb
+++ b/recipes-containers/podman/podman_git.bb
@@ -6,58 +6,63 @@ DESCRIPTION = "Podman is a daemonless container engine for developing, \
`alias docker=podman`. \
"
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp ipv6"
+
DEPENDS = " \
go-metalinter-native \
- go-md2man-native \
gpgme \
libseccomp \
${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
+ gettext-native \
"
-python __anonymous() {
- msg = ""
- # ERROR: Nothing PROVIDES 'libseccomp' (but meta-virtualization/recipes-containers/podman/ DEPENDS on or otherwise requires it).
- # ERROR: Required build target 'meta-world-pkgdata' has no buildable providers.
- # Missing or unbuildable dependency chain was: ['meta-world-pkgdata', 'podman', 'libseccomp']
- if 'security' not in d.getVar('BBFILE_COLLECTIONS').split():
- msg += "Make sure meta-security should be present as it provides 'libseccomp'"
- raise bb.parse.SkipRecipe(msg)
-}
-
-SRCREV = "233d95f4f0a815f11d1c1ae9aba16781c4eb2700"
+SRCREV = "bb81e85a430fa95d23a15b77c717fd68bf06ebf2"
SRC_URI = " \
- git://github.com/containers/libpod.git;branch=master \
+ git://github.com/containers/libpod.git;branch=v5.0;protocol=https \
+ ${@bb.utils.contains('PACKAGECONFIG', 'rootless', 'file://50-podman-rootless.conf', '', d)} \
+ file://run-ptest \
"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=3d9b931fa23ab1cacd0087f9e2ee12c0"
GO_IMPORT = "import"
S = "${WORKDIR}/git"
-PV = "1.6.1+git${SRCREV}"
+PV = "5.0.1+git"
+
+CVE_STATUS[CVE-2022-2989] = "fixed-version: fixed since v4.3.0"
+CVE_STATUS[CVE-2023-0778] = "fixed-version: fixed since v4.5.0"
PACKAGES =+ "${PN}-contrib"
PODMAN_PKG = "github.com/containers/libpod"
-BUILDTAGS ?= "seccomp varlink remoteclient \
+
+BUILDTAGS_EXTRA ?= "${@bb.utils.contains('VIRTUAL-RUNTIME_container_networking','cni','cni','',d)}"
+BUILDTAGS ?= "seccomp varlink \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-exclude_graphdriver_btrfs exclude_graphdriver_devicemapper \
-containers_image_ostree_stub"
+exclude_graphdriver_btrfs exclude_graphdriver_devicemapper ${BUILDTAGS_EXTRA}"
# overide LDFLAGS to allow podman to build without: "flag provided but not # defined: -Wl,-O1
export LDFLAGS=""
+# https://github.com/llvm/llvm-project/issues/53999
+TOOLCHAIN = "gcc"
+
+# podmans Makefile expects BUILDFLAGS to be set but go.bbclass defines them in GOBUILDFLAGS
+export BUILDFLAGS="${GOBUILDFLAGS}"
+
inherit go goarch
-inherit systemd pkgconfig
+inherit systemd pkgconfig ptest
do_configure[noexec] = "1"
EXTRA_OEMAKE = " \
PREFIX=${prefix} BINDIR=${bindir} LIBEXECDIR=${libexecdir} \
ETCDIR=${sysconfdir} TMPFILESDIR=${nonarch_libdir}/tmpfiles.d \
- SYSTEMDDIR=${systemd_unitdir}/system USERSYSTEMDDIR=${systemd_unitdir}/user \
+ SYSTEMDDIR=${systemd_unitdir}/system USERSYSTEMDDIR=${systemd_user_unitdir} \
"
# remove 'docker' from the packageconfig if you don't want podman to
@@ -79,8 +84,6 @@ do_compile() {
cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
- oe_runmake cmd/podman/varlink/iopodman.go GO=go
-
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export GOARCH=${TARGET_GOARCH}
@@ -88,25 +91,86 @@ do_compile() {
export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- oe_runmake BUILDTAGS="${BUILDTAGS}"
+ # podman now builds go-md2man and requires the host/build details
+ export NATIVE_GOOS=${BUILD_GOOS}
+ export NATIVE_GOARCH=${BUILD_GOARCH}
+
+ oe_runmake NATIVE_GOOS=${BUILD_GOOS} NATIVE_GOARCH=${BUILD_GOARCH} BUILDTAGS="${BUILDTAGS}"
}
do_install() {
cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
+ export GOARCH="${BUILD_GOARCH}"
+ export GOPATH="${S}/src/.gopath"
+ export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
+
oe_runmake install DESTDIR="${D}"
if ${@bb.utils.contains('PACKAGECONFIG', 'docker', 'true', 'false', d)}; then
oe_runmake install.docker DESTDIR="${D}"
fi
+
+ # Silence docker emulation warnings.
+ mkdir -p ${D}/etc/containers
+ touch ${D}/etc/containers/nodocker
+
+ if ${@bb.utils.contains('PACKAGECONFIG', 'rootless', 'true', 'false', d)}; then
+ install -d "${D}${sysconfdir}/sysctl.d"
+ install -m 0644 "${WORKDIR}/50-podman-rootless.conf" "${D}${sysconfdir}/sysctl.d"
+ fi
+}
+
+do_install_ptest () {
+ cp ${S}/src/import/Makefile ${D}${PTEST_PATH}
+ install -d ${D}${PTEST_PATH}/test
+ cp -r ${S}/src/import/test/system ${D}${PTEST_PATH}/test
+
+ # Some compatibility links for the Makefile assumptions.
+ install -d ${D}${PTEST_PATH}/bin
+ ln -s ${bindir}/podman ${D}${PTEST_PATH}/bin/podman
+ ln -s ${bindir}/podman-remote ${D}${PTEST_PATH}/bin/podman-remote
}
-FILES_${PN} += " \
+FILES:${PN} += " \
${systemd_unitdir}/system/* \
- ${systemd_unitdir}/user/* \
+ ${nonarch_libdir}/systemd/* \
+ ${systemd_user_unitdir/* \
${nonarch_libdir}/tmpfiles.d/* \
+ ${datadir}/user-tmpfiles.d/* \
${sysconfdir}/cni \
"
-RDEPENDS_${PN} += "conmon virtual/runc iptables cni skopeo"
-RRECOMMENDS_${PN} += "slirp4netns"
-RCONFLICTS_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'docker', 'docker', '', d)}"
+SYSTEMD_SERVICE:${PN} = "podman.service podman.socket"
+
+# The other option for this is "busybox", since meta-virt ensures
+# that busybox is configured with nsenter
+VIRTUAL-RUNTIME_base-utils-nsenter ?= "util-linux-nsenter"
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+RDEPENDS:${PN} += "\
+ conmon ${VIRTUAL-RUNTIME_container_runtime} iptables ${VIRTUAL-RUNTIME_container_networking} skopeo ${VIRTUAL-RUNTIME_base-utils-nsenter} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'rootless', 'fuse-overlayfs slirp4netns', '', d)} \
+"
+RRECOMMENDS:${PN} += "slirp4netns \
+ kernel-module-xt-masquerade \
+ kernel-module-xt-comment \
+ kernel-module-xt-mark \
+ kernel-module-xt-addrtype \
+ kernel-module-xt-conntrack \
+ kernel-module-xt-tcpudp \
+ "
+RCONFLICTS:${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'docker', 'docker', '', d)}"
+
+RDEPENDS:${PN}-ptest += " \
+ bash \
+ bats \
+ buildah \
+ catatonit \
+ coreutils \
+ file \
+ gnupg \
+ jq \
+ make \
+ tar \
+"
diff --git a/recipes-containers/riddler/files/0001-build-use-to-select-cross-compiler.patch b/recipes-containers/riddler/files/0001-build-use-to-select-cross-compiler.patch
new file mode 100644
index 00000000..9c6c124c
--- /dev/null
+++ b/recipes-containers/riddler/files/0001-build-use-to-select-cross-compiler.patch
@@ -0,0 +1,53 @@
+From 8ca4391a5954db168d513ba64c3791f63b044fbf Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 30 Jun 2020 23:58:22 -0400
+Subject: [PATCH] build: use to select cross compiler
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ git/Makefile | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git git/Makefile git/Makefile
+index c6976af..f3c8d17 100644
+--- git/Makefile
++++ git/Makefile
+@@ -10,11 +10,11 @@ all: clean build static fmt lint test vet
+
+ build:
+ @echo "+ $@"
+- @go build -tags "$(BUILDTAGS) cgo" .
++ @${GO} build ${GOBUILDFLAGS} -tags "$(BUILDTAGS) cgo" .
+
+ static:
+ @echo "+ $@"
+- CGO_ENABLED=1 go build -tags "$(BUILDTAGS) cgo static_build" -ldflags "-w -extldflags -static" -o riddler .
++ CGO_ENABLED=1 ${GO} build ${GOBUILDFLAGS} -tags "$(BUILDTAGS) cgo static_build" -ldflags "-w -extldflags -static" -o riddler .
+
+ fmt:
+ @echo "+ $@"
+@@ -26,11 +26,11 @@ lint:
+
+ test: fmt lint vet
+ @echo "+ $@"
+- @go test -v -tags "$(BUILDTAGS) cgo" $(shell go list ./... | grep -v vendor)
++ @${GO} test -v -tags "$(BUILDTAGS) cgo" $(shell go list ./... | grep -v vendor)
+
+ vet:
+ @echo "+ $@"
+- @go vet $(shell go list ./... | grep -v vendor)
++ @${GO} vet $(shell go list ./... | grep -v vendor)
+
+ clean:
+ @echo "+ $@"
+@@ -38,4 +38,4 @@ clean:
+
+ install:
+ @echo "+ $@"
+- @go install -v .
++ @${GO} install -v .
+--
+2.19.1
+
diff --git a/recipes-containers/riddler/riddler_git.bb b/recipes-containers/riddler/riddler_git.bb
index 08976060..2b2902b5 100644
--- a/recipes-containers/riddler/riddler_git.bb
+++ b/recipes-containers/riddler/riddler_git.bb
@@ -1,21 +1,24 @@
HOMEPAGE = "https://github.com/jfrazelle/riddler"
SUMMARY = "Convert `docker inspect` to opencontainers (OCI compatible) runc spec."
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=20ce4c6a4f32d6ee4a68e3a7506db3f1"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=20ce4c6a4f32d6ee4a68e3a7506db3f1"
+
+SRC_URI = "git://github.com/jfrazelle/riddler;branch=master;protocol=https;destsuffix=git/src/github.com/jessfraz/riddler \
+ file://0001-build-use-to-select-cross-compiler.patch \
+ "
-SRC_URI = "git://github.com/jfrazelle/riddler;branch=master"
SRCREV = "23befa0b232877b5b502b828e24161d801bd67f6"
-PV = "0.1.0+git${SRCPV}"
-GO_IMPORT = "import"
+PV = "0.1.0+git"
-S = "${WORKDIR}/git"
+S = "${WORKDIR}/git/src/github.com/jessfraz/riddler"
+GO_IMPORT = "github.com/jessfraz/riddler"
inherit goarch
inherit go
# In addition to hosts go does not like, we do not build for mips.
#
-COMPATIBLE_HOST_mipsarch = "null"
+COMPATIBLE_HOST:mipsarch = "null"
# This disables seccomp and apparmor, which are on by default in the
# go package.
@@ -23,32 +26,25 @@ EXTRA_OEMAKE="BUILDTAGS=''"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
- export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
- # Setup vendor directory so that it can be used in GOPATH.
- #
- # Go looks in a src directory under any directory in GOPATH but riddler
- # uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
- #
- # We also need to link in the ipallocator directory as that is not under
- # a src directory.
- ln -sfn . "${S}/src/import/vendor/src"
- mkdir -p "${S}/src/import/vendor/src/github.com/jessfraz/riddler"
- ln -sfn "${S}/src/import/parse" "${S}/src/import/vendor/src/github.com/jessfraz/riddler/parse"
- export GOPATH="${S}/src/import/vendor"
+ export GOROOT="${STAGING_LIBDIR}/go"
+ export GOPATH="${S}/src/import/vendor:${WORKDIR}/git/"
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- cd ${S}/src/import
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+ export GO111MODULE=off
+ export GOBUILDFLAGS="-trimpath"
+
+ cd ${S}
oe_runmake static
}
do_install() {
install -d ${D}/${sbindir}
- install ${S}/src/import/riddler ${D}/${sbindir}/riddler
+ install ${S}/riddler ${D}/${sbindir}/riddler
}
diff --git a/recipes-containers/runc/files/0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch b/recipes-containers/runc/files/0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch
index 94cbb4cb..9e5a8313 100644
--- a/recipes-containers/runc/files/0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch
+++ b/recipes-containers/runc/files/0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch
@@ -1,35 +1,28 @@
-From d2c47a973f354ffd505bb4e809c59e57b543726d Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Tue, 6 Aug 2019 19:01:45 +0800
+From 0fe50d2ca4517f5e3070585040f35ace413acd44 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 24 Aug 2021 11:38:23 -0400
Subject: [PATCH] Makefile: respect GOBUILDFLAGS for runc and remove recvtty
from static
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+[bva: refreshed for release 1.0.2]
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
Makefile | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
-diff --git a/Makefile b/Makefile
-index 0f26a1c8..a0c6b40b 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -30,7 +30,7 @@ SHELL := $(shell command -v bash 2>/dev/null)
- .DEFAULT: runc
-
- runc: $(SOURCES)
-- $(GO) build -buildmode=pie $(EXTRA_FLAGS) -ldflags "-X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -tags "$(BUILDTAGS)" -o runc .
-+ $(GO) build $(GOBUILDFLAGS) $(EXTRA_FLAGS) -ldflags "-X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -tags "$(BUILDTAGS)" -o runc .
-
- all: runc recvtty
+Index: git/src/import/Makefile
+===================================================================
+--- git.orig/src/import/Makefile
++++ git/src/import/Makefile
+@@ -24,7 +24,7 @@
+ GO_BUILDMODE := "-buildmode=pie"
+ endif
+ endif
+-GO_BUILD := $(GO) build -trimpath $(GO_BUILDMODE) \
++GO_BUILD := $(GO) build $(GOBUILDFLAGS) -trimpath $(GO_BUILDMODE) \
+ $(EXTRA_FLAGS) -tags "$(BUILDTAGS)" \
+ -ldflags "$(LDFLAGS_COMMON) $(EXTRA_LDFLAGS)"
-@@ -41,7 +41,6 @@ contrib/cmd/recvtty/recvtty: $(SOURCES)
-
- static: $(SOURCES)
- CGO_ENABLED=1 $(GO) build $(EXTRA_FLAGS) -tags "$(BUILDTAGS) netgo osusergo static_build" -installsuffix netgo -ldflags "-w -extldflags -static -X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -o runc .
-- CGO_ENABLED=1 $(GO) build $(EXTRA_FLAGS) -tags "$(BUILDTAGS) netgo osusergo static_build" -installsuffix netgo -ldflags "-w -extldflags -static -X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty
-
- release:
- script/release.sh -r release/$(VERSION) -v $(VERSION)
---
-2.17.1
-
diff --git a/recipes-containers/runc/files/0001-Only-allow-proc-mount-if-it-is-procfs.patch b/recipes-containers/runc/files/0001-Only-allow-proc-mount-if-it-is-procfs.patch
deleted file mode 100644
index 5aca99e2..00000000
--- a/recipes-containers/runc/files/0001-Only-allow-proc-mount-if-it-is-procfs.patch
+++ /dev/null
@@ -1,201 +0,0 @@
-From d75b05441772417a0828465a9483f16287937724 Mon Sep 17 00:00:00 2001
-From: Michael Crosby <crosbymichael@gmail.com>
-Date: Mon, 23 Sep 2019 16:45:45 -0400
-Subject: [PATCH] Only allow proc mount if it is procfs
-
-Fixes #2128
-
-This allows proc to be bind mounted for host and rootless namespace usecases but
-it removes the ability to mount over the top of proc with a directory.
-
-```bash
-> sudo docker run --rm apparmor
-docker: Error response from daemon: OCI runtime create failed:
-container_linux.go:346: starting container process caused "process_linux.go:449:
-container init caused \"rootfs_linux.go:58: mounting
-\\\"/var/lib/docker/volumes/aae28ea068c33d60e64d1a75916cf3ec2dc3634f97571854c9ed30c8401460c1/_data\\\"
-to rootfs
-\\\"/var/lib/docker/overlay2/a6be5ae911bf19f8eecb23a295dec85be9a8ee8da66e9fb55b47c841d1e381b7/merged\\\"
-at \\\"/proc\\\" caused
-\\\"\\\\\\\"/var/lib/docker/overlay2/a6be5ae911bf19f8eecb23a295dec85be9a8ee8da66e9fb55b47c841d1e381b7/merged/proc\\\\\\\"
-cannot be mounted because it is not of type proc\\\"\"": unknown.
-
-> sudo docker run --rm -v /proc:/proc apparmor
-
-docker-default (enforce) root 18989 0.9 0.0 1288 4 ?
-Ss 16:47 0:00 sleep 20
-```
-
-Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
-
-Upstream-Status: Backport [https://github.com/opencontainers/runc/pull/2129/commits/331692baa7afdf6c186f8667cb0e6362ea0802b3]
-
-CVE: CVE-2019-16884
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
----
- libcontainer/container_linux.go | 4 +--
- libcontainer/rootfs_linux.go | 50 +++++++++++++++++++++++--------
- libcontainer/rootfs_linux_test.go | 8 ++---
- 3 files changed, 43 insertions(+), 19 deletions(-)
-
-diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go
-index 7e58e5e0..d51e35df 100644
---- a/src/import/libcontainer/container_linux.go
-+++ b/src/import/libcontainer/container_linux.go
-@@ -19,7 +19,7 @@ import (
- "syscall" // only for SysProcAttr and Signal
- "time"
-
-- "github.com/cyphar/filepath-securejoin"
-+ securejoin "github.com/cyphar/filepath-securejoin"
- "github.com/opencontainers/runc/libcontainer/cgroups"
- "github.com/opencontainers/runc/libcontainer/configs"
- "github.com/opencontainers/runc/libcontainer/intelrdt"
-@@ -1160,7 +1160,7 @@ func (c *linuxContainer) makeCriuRestoreMountpoints(m *configs.Mount) error {
- if err != nil {
- return err
- }
-- if err := checkMountDestination(c.config.Rootfs, dest); err != nil {
-+ if err := checkProcMount(c.config.Rootfs, dest, ""); err != nil {
- return err
- }
- m.Destination = dest
-diff --git a/libcontainer/rootfs_linux.go b/libcontainer/rootfs_linux.go
-index f13b226e..5650b0ac 100644
---- a/src/import/libcontainer/rootfs_linux.go
-+++ b/src/import/libcontainer/rootfs_linux.go
-@@ -13,7 +13,7 @@ import (
- "strings"
- "time"
-
-- "github.com/cyphar/filepath-securejoin"
-+ securejoin "github.com/cyphar/filepath-securejoin"
- "github.com/mrunalp/fileutils"
- "github.com/opencontainers/runc/libcontainer/cgroups"
- "github.com/opencontainers/runc/libcontainer/configs"
-@@ -197,7 +197,7 @@ func prepareBindMount(m *configs.Mount, rootfs string) error {
- if dest, err = securejoin.SecureJoin(rootfs, m.Destination); err != nil {
- return err
- }
-- if err := checkMountDestination(rootfs, dest); err != nil {
-+ if err := checkProcMount(rootfs, dest, m.Source); err != nil {
- return err
- }
- // update the mount with the correct dest after symlinks are resolved.
-@@ -388,7 +388,7 @@ func mountToRootfs(m *configs.Mount, rootfs, mountLabel string, enableCgroupns b
- if dest, err = securejoin.SecureJoin(rootfs, m.Destination); err != nil {
- return err
- }
-- if err := checkMountDestination(rootfs, dest); err != nil {
-+ if err := checkProcMount(rootfs, dest, m.Source); err != nil {
- return err
- }
- // update the mount with the correct dest after symlinks are resolved.
-@@ -435,12 +435,12 @@ func getCgroupMounts(m *configs.Mount) ([]*configs.Mount, error) {
- return binds, nil
- }
-
--// checkMountDestination checks to ensure that the mount destination is not over the top of /proc.
-+// checkProcMount checks to ensure that the mount destination is not over the top of /proc.
- // dest is required to be an abs path and have any symlinks resolved before calling this function.
--func checkMountDestination(rootfs, dest string) error {
-- invalidDestinations := []string{
-- "/proc",
-- }
-+//
-+// if source is nil, don't stat the filesystem. This is used for restore of a checkpoint.
-+func checkProcMount(rootfs, dest, source string) error {
-+ const procPath = "/proc"
- // White list, it should be sub directories of invalid destinations
- validDestinations := []string{
- // These entries can be bind mounted by files emulated by fuse,
-@@ -463,16 +463,40 @@ func checkMountDestination(rootfs, dest string) error {
- return nil
- }
- }
-- for _, invalid := range invalidDestinations {
-- path, err := filepath.Rel(filepath.Join(rootfs, invalid), dest)
-+ path, err := filepath.Rel(filepath.Join(rootfs, procPath), dest)
-+ if err != nil {
-+ return err
-+ }
-+ // pass if the mount path is located outside of /proc
-+ if strings.HasPrefix(path, "..") {
-+ return nil
-+ }
-+ if path == "." {
-+ // an empty source is pasted on restore
-+ if source == "" {
-+ return nil
-+ }
-+ // only allow a mount on-top of proc if it's source is "proc"
-+ isproc, err := isProc(source)
- if err != nil {
- return err
- }
-- if path != "." && !strings.HasPrefix(path, "..") {
-- return fmt.Errorf("%q cannot be mounted because it is located inside %q", dest, invalid)
-+ // pass if the mount is happening on top of /proc and the source of
-+ // the mount is a proc filesystem
-+ if isproc {
-+ return nil
- }
-+ return fmt.Errorf("%q cannot be mounted because it is not of type proc", dest)
- }
-- return nil
-+ return fmt.Errorf("%q cannot be mounted because it is inside /proc", dest)
-+}
-+
-+func isProc(path string) (bool, error) {
-+ var s unix.Statfs_t
-+ if err := unix.Statfs(path, &s); err != nil {
-+ return false, err
-+ }
-+ return s.Type == unix.PROC_SUPER_MAGIC, nil
- }
-
- func setupDevSymlinks(rootfs string) error {
-diff --git a/libcontainer/rootfs_linux_test.go b/libcontainer/rootfs_linux_test.go
-index d755984b..1bfe7c66 100644
---- a/src/import/libcontainer/rootfs_linux_test.go
-+++ b/src/import/libcontainer/rootfs_linux_test.go
-@@ -10,7 +10,7 @@ import (
-
- func TestCheckMountDestOnProc(t *testing.T) {
- dest := "/rootfs/proc/sys"
-- err := checkMountDestination("/rootfs", dest)
-+ err := checkProcMount("/rootfs", dest, "")
- if err == nil {
- t.Fatal("destination inside proc should return an error")
- }
-@@ -18,7 +18,7 @@ func TestCheckMountDestOnProc(t *testing.T) {
-
- func TestCheckMountDestOnProcChroot(t *testing.T) {
- dest := "/rootfs/proc/"
-- err := checkMountDestination("/rootfs", dest)
-+ err := checkProcMount("/rootfs", dest, "/proc")
- if err != nil {
- t.Fatal("destination inside proc when using chroot should not return an error")
- }
-@@ -26,7 +26,7 @@ func TestCheckMountDestOnProcChroot(t *testing.T) {
-
- func TestCheckMountDestInSys(t *testing.T) {
- dest := "/rootfs//sys/fs/cgroup"
-- err := checkMountDestination("/rootfs", dest)
-+ err := checkProcMount("/rootfs", dest, "")
- if err != nil {
- t.Fatal("destination inside /sys should not return an error")
- }
-@@ -34,7 +34,7 @@ func TestCheckMountDestInSys(t *testing.T) {
-
- func TestCheckMountDestFalsePositive(t *testing.T) {
- dest := "/rootfs/sysfiles/fs/cgroup"
-- err := checkMountDestination("/rootfs", dest)
-+ err := checkProcMount("/rootfs", dest, "")
- if err != nil {
- t.Fatal(err)
- }
---
-2.17.1
-
diff --git a/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch b/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch
index 48c1250d..cb0ddc37 100644
--- a/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch
+++ b/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch
@@ -7,16 +7,18 @@ This allows for setting up a detached session where you do not want to
set the terminal to false in the config.json. More or less this is a
runtime override.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
utils_linux.go | 5 +++++
1 file changed, 5 insertions(+)
-diff --git a/utils_linux.go b/utils_linux.go
-index 8085f7fe..e6d31b35 100644
---- a/src/import/utils_linux.go
-+++ b/src/import/utils_linux.go
-@@ -227,6 +227,11 @@ type runner struct {
+Index: git/src/import/utils_linux.go
+===================================================================
+--- git.orig/src/import/utils_linux.go
++++ git/src/import/utils_linux.go
+@@ -267,6 +267,11 @@
}
func (r *runner) run(config *specs.Process) (int, error) {
@@ -25,9 +27,6 @@ index 8085f7fe..e6d31b35 100644
+ r.consoleSocket = ""
+ config.Terminal = false
+ }
- if err := r.checkTerminal(config); err != nil {
- r.destroy()
- return -1, err
---
-2.11.0
-
+ var err error
+ defer func() {
+ if err != nil {
diff --git a/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch b/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch
index 0af74952..d3d1134b 100644
--- a/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch
+++ b/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch
@@ -23,6 +23,8 @@ is set.
because it was blocking until runc performed everything it was
required to perform.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
---
signals.go | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
@@ -33,15 +35,17 @@ Index: git/src/import/signals.go
===================================================================
--- git.orig/src/import/signals.go
+++ git/src/import/signals.go
-@@ -6,6 +6,7 @@
+@@ -5,7 +5,9 @@
+ import (
"os"
"os/signal"
- "syscall" // only for Signal
-+ "strconv"
++ "syscall" // only for Signal
++ "strconv"
"github.com/opencontainers/runc/libcontainer"
"github.com/opencontainers/runc/libcontainer/system"
-@@ -56,9 +57,6 @@
+ "github.com/opencontainers/runc/libcontainer/utils"
+@@ -55,9 +57,6 @@
func (h *signalHandler) forward(process *libcontainer.Process, tty *tty, detach bool) (int, error) {
// make sure we know the pid of our main process so that we can return
// after it dies.
@@ -51,13 +55,14 @@ Index: git/src/import/signals.go
pid1, err := process.Pid()
if err != nil {
-@@ -68,11 +66,60 @@
+@@ -67,12 +66,61 @@
if h.notifySocket != nil {
if detach {
- h.notifySocket.run(pid1)
+ _ = h.notifySocket.run(pid1)
- return 0, nil
}
- go h.notifySocket.run(0)
+ _ = h.notifySocket.run(os.Getpid())
+ go func() { _ = h.notifySocket.run(0) }()
}
+ if (detach) {
@@ -117,7 +122,7 @@ Index: git/src/import/utils_linux.go
===================================================================
--- git.orig/src/import/utils_linux.go
+++ git/src/import/utils_linux.go
-@@ -347,7 +347,7 @@
+@@ -345,7 +345,7 @@
if err != nil {
r.terminate(process)
}
@@ -125,4 +130,4 @@ Index: git/src/import/utils_linux.go
+ if (detach && os.Getenv("SIGUSR1_PARENT_PID") == "") {
return 0, nil
}
- r.destroy()
+ if err == nil {
diff --git a/recipes-containers/runc/runc-docker_git.bb b/recipes-containers/runc/runc-docker_git.bb
index 8d810d01..8d078e85 100644
--- a/recipes-containers/runc/runc-docker_git.bb
+++ b/recipes-containers/runc/runc-docker_git.bb
@@ -2,12 +2,13 @@ include runc.inc
# Note: this rev is before the required protocol field, update when all components
# have been updated to match.
-SRCREV_runc-docker = "425e105d5a03fabd737a126ad93d62a9eeede87f"
-SRC_URI = "git://github.com/opencontainers/runc;nobranch=1;name=runc-docker \
+SRCREV_runc-docker = "a9833ff391a71b30069a6c3f816db113379a4346"
+SRC_URI = "git://github.com/opencontainers/runc;branch=release-1.1;name=runc-docker;protocol=https \
file://0001-runc-Add-console-socket-dev-null.patch \
file://0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch \
file://0001-runc-docker-SIGUSR1-daemonize.patch \
- file://0001-Only-allow-proc-mount-if-it-is-procfs.patch \
"
-RUNC_VERSION = "1.0.0-rc8"
+RUNC_VERSION = "1.1.12"
+
+CVE_PRODUCT = "runc"
diff --git a/recipes-containers/runc/runc-opencontainers_git.bb b/recipes-containers/runc/runc-opencontainers_git.bb
index 3a7e7aaf..188b8440 100644
--- a/recipes-containers/runc/runc-opencontainers_git.bb
+++ b/recipes-containers/runc/runc-opencontainers_git.bb
@@ -1,9 +1,12 @@
include runc.inc
-SRCREV = "652297c7c7e6c94e8d064ad5916c32891a6fd388"
+SRCREV = "a9833ff391a71b30069a6c3f816db113379a4346"
SRC_URI = " \
- git://github.com/opencontainers/runc;branch=master \
+ git://github.com/opencontainers/runc;branch=release-1.1;protocol=https \
file://0001-Makefile-respect-GOBUILDFLAGS-for-runc-and-remove-re.patch \
- file://0001-Only-allow-proc-mount-if-it-is-procfs.patch \
"
-RUNC_VERSION = "1.0.0-rc8"
+RUNC_VERSION = "1.1.12"
+
+CVE_PRODUCT = "runc"
+
+LDFLAGS += "${@bb.utils.contains('DISTRO_FEATURES', 'ld-is-gold', ' -fuse-ld=bfd', '', d)}"
diff --git a/recipes-containers/runc/runc.inc b/recipes-containers/runc/runc.inc
index 41ea41be..c8e74273 100644
--- a/recipes-containers/runc/runc.inc
+++ b/recipes-containers/runc/runc.inc
@@ -14,20 +14,31 @@ inherit go
inherit goarch
inherit pkgconfig
-PACKAGECONFIG ??= "static"
PACKAGECONFIG[seccomp] = "seccomp,,libseccomp"
+PACKAGECONFIG[selinux] = "selinux,,libselinux"
# This PACKAGECONFIG serves the purpose of whether building runc as static or not
PACKAGECONFIG[static] = ""
+PACKAGECONFIG ??= "static \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'seccomp', 'seccomp', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
+ "
+
+
PROVIDES += "virtual/runc"
-RPROVIDES_${PN} = "virtual/runc"
+RPROVIDES:${PN} = "virtual-runc"
GO_IMPORT = "import"
LIBCONTAINER_PACKAGE="github.com/opencontainers/runc/libcontainer"
do_configure[noexec] = "1"
-EXTRA_OEMAKE="BUILDTAGS='${PACKAGECONFIG_CONFARGS}' GO=${GO}"
+
+
+DISTRO_BUILDTAGS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'seccomp', 'seccomp', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)}"
+
+EXTRA_OEMAKE="BUILDTAGS='${PACKAGECONFIG_CONFARGS} ${DISTRO_BUILDTAGS}' GO=${GO}"
do_compile() {
# Set GOPATH. See 'PACKAGERS.md'. Don't rely on
diff --git a/recipes-containers/singularity/singularity/0001-Use-python3.patch b/recipes-containers/singularity/singularity/0001-Use-python3.patch
new file mode 100644
index 00000000..5af21719
--- /dev/null
+++ b/recipes-containers/singularity/singularity/0001-Use-python3.patch
@@ -0,0 +1,150 @@
+From 758c1edc7bf3d2a023954f4fcc9ddf46fd370272 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Thu, 21 May 2020 14:14:56 +0200
+Subject: [PATCH] Use python3
+
+* without /usr/bin/python this just fails to configure with:
+ | checking for python... no
+ | configure: error: Please install python before installing.
+ | WARNING: exit code 1 from a shell command.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 6 +++---
+ etc/configure_transform.py | 2 +-
+ libexec/python/helpers/json/add.py | 2 +-
+ libexec/python/helpers/json/delete.py | 2 +-
+ libexec/python/helpers/json/dump.py | 2 +-
+ libexec/python/helpers/json/get.py | 2 +-
+ libexec/python/helpers/json/inspect.py | 2 +-
+ libexec/python/import.py | 2 +-
+ libexec/python/pull.py | 2 +-
+ libexec/python/shub/api.py | 2 +-
+ libexec/python/size.py | 2 +-
+ 11 files changed, 13 insertions(+), 13 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ffa5ab32..71a1605b2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -251,15 +251,15 @@ fi
+ # PYTHON
+ # ---------------------------------------------------------------------
+
+-AC_CHECK_PROG(PYTHON_CHECK,python,yes)
++AC_CHECK_PROG(PYTHON_CHECK,python3,yes)
+ if test x"$PYTHON_CHECK" != x"yes" ; then
+- AC_MSG_ERROR([Please install python before installing.])
++ AC_MSG_ERROR([Please install python3 before installing.])
+ else
+
+ PYTHON_MODULES="base64 datetime glob hashlib io itertools json math multiprocessing pickle pwd re shutil signal subprocess stat sys tarfile tempfile time"
+ for PYTHON_MODULE in $PYTHON_MODULES; do
+ AC_MSG_CHECKING([for the $PYTHON_MODULE python module])
+- python_module_result=`python -c "import $PYTHON_MODULE" 2>&1`
++ python_module_result=`python3 -c "import $PYTHON_MODULE" 2>&1`
+ if test -z "$python_module_result"; then
+ AC_MSG_RESULT([yes])
+ else
+diff --git a/etc/configure_transform.py b/etc/configure_transform.py
+index a1ff5c427..9ec445d21 100755
+--- a/etc/configure_transform.py
++++ b/etc/configure_transform.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ #
+ # Copyright (c) 2017, SingularityWare, LLC. All rights reserved.
+ #
+diff --git a/libexec/python/helpers/json/add.py b/libexec/python/helpers/json/add.py
+index b24aec75a..22abbbeb9 100644
+--- a/libexec/python/helpers/json/add.py
++++ b/libexec/python/helpers/json/add.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/helpers/json/delete.py b/libexec/python/helpers/json/delete.py
+index 0975e4e60..07e255228 100644
+--- a/libexec/python/helpers/json/delete.py
++++ b/libexec/python/helpers/json/delete.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/helpers/json/dump.py b/libexec/python/helpers/json/dump.py
+index ddba06e4a..37a8edf70 100644
+--- a/libexec/python/helpers/json/dump.py
++++ b/libexec/python/helpers/json/dump.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/helpers/json/get.py b/libexec/python/helpers/json/get.py
+index 355be9040..d1d822aea 100644
+--- a/libexec/python/helpers/json/get.py
++++ b/libexec/python/helpers/json/get.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/helpers/json/inspect.py b/libexec/python/helpers/json/inspect.py
+index 65772a4ef..61c723495 100644
+--- a/libexec/python/helpers/json/inspect.py
++++ b/libexec/python/helpers/json/inspect.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/import.py b/libexec/python/import.py
+index 2ec208417..1c58eda5c 100644
+--- a/libexec/python/import.py
++++ b/libexec/python/import.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/pull.py b/libexec/python/pull.py
+index 1cd705c90..4431023f3 100644
+--- a/libexec/python/pull.py
++++ b/libexec/python/pull.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/shub/api.py b/libexec/python/shub/api.py
+index 850d167e7..3c8313ad5 100644
+--- a/libexec/python/shub/api.py
++++ b/libexec/python/shub/api.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
+diff --git a/libexec/python/size.py b/libexec/python/size.py
+index 34331fd27..99581ce52 100644
+--- a/libexec/python/size.py
++++ b/libexec/python/size.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ '''
+
diff --git a/recipes-containers/singularity/singularity/0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch b/recipes-containers/singularity/singularity/0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch
new file mode 100644
index 00000000..55ee83e4
--- /dev/null
+++ b/recipes-containers/singularity/singularity/0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch
@@ -0,0 +1,36 @@
+From 13ee3e016490e74868b64e3a07dcccf9feafebdf Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 30 Nov 2021 05:59:06 -0800
+Subject: [PATCH] configure.ac: drop 2nd AM_INIT_AUTOMAKE
+
+* automake-1.16.5 introduced in oe-core:
+ https://git.openembedded.org/openembedded-core/commit/?id=851167b3a41b1728407d331c1666827fb730daa1
+ doesn't like this after:
+ http://git.savannah.gnu.org/cgit/automake.git/commit/?id=f4a3a70f69e1dbccb6578f39ef47835098a04624
+
+ and do_configure fails with:
+ configure.ac:38: error: AM_INIT_AUTOMAKE expanded multiple times
+
+ There is no point in upstreaming this, because singularity-2.3.1 is very old and
+ whole autotools support is removed in version 3 (currently 3.8.5) with:
+ https://github.com/hpcng/singularity/commit/a06e3d13a822080d7a9bc55085ee1bb32026a96e
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ configure.ac | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 8ffa5ab32..a5a35c43a 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -35,7 +35,6 @@ AC_GNU_SOURCE
+ AC_PROG_INSTALL
+ AC_PROG_LIBTOOL
+ AC_PROG_CC
+-AM_INIT_AUTOMAKE
+ AM_PROG_CC_C_O
+ AC_ENABLE_SHARED
+ AC_PROG_LIBTOOL(libtool)
diff --git a/recipes-containers/singularity/singularity_git.bb b/recipes-containers/singularity/singularity_git.bb
index e50052c2..72171b39 100644
--- a/recipes-containers/singularity/singularity_git.bb
+++ b/recipes-containers/singularity/singularity_git.bb
@@ -1,33 +1,28 @@
# Skip QA check for library symbolic links (core issue is a packaging problem within
# Singularity build / config: read up on the dev-so test for more info)
-INSANE_SKIP_${PN} += "dev-so"
+INSANE_SKIP:${PN} += "dev-so"
-RDEPENDS_${PN} += "glibc python3 ca-certificates openssl bash e2fsprogs-mke2fs"
-# Singularity expects to find python3 under the name python, therefore both
-# cannot be installed at the same time.
-RCONFLICTS_${PN} = "python"
+RDEPENDS:${PN} += "python3 ca-certificates openssl bash e2fsprogs-mke2fs"
-LICENSE = "BSD"
+LICENSE = "BSD-3-Clause | Apache-2.0"
LIC_FILES_CHKSUM = "file://COPYRIGHT.md;md5=be78c34e483dd7d8439358b1e024b294 \
file://LICENSE-LBNL.md;md5=45a007b527e1a9507aa7fa869f8d7ede \
file://LICENSE.md;md5=df4326b473db6424033f1d98a5645e30 \
file://debian/copyright;md5=ed267cf386d9b75ab1f27f407e935b10"
-SRC_URI = "git://github.com/singularityware/singularity.git;protocol=https"
-PV = "2.3.1+git${SRCPV}"
+SRC_URI = "git://github.com/singularityware/singularity.git;protocol=https;branch=master \
+ file://0001-Use-python3.patch \
+ file://0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch \
+"
+PV = "2.3.1+git"
SRCREV = "e214d4ebf0a1274b1c63b095fd55ae61c7e92947"
S = "${WORKDIR}/git"
-inherit pythonnative autotools-brokensep
+inherit python3native autotools-brokensep
EXTRA_OECONF = "--prefix=/usr/local"
-pkg_postinst_${PN}() {
- # Singularity requires "python" to resolve to "python3" within the commandline.
- # This creates a symbolic link from python3 to python. A side-effect of this is
- # that scripts which expect Python 2 may fail to run correctly.
- ln -sr $D${bindir}/python3 $D${bindir}/python
-
+pkg_postinst:${PN}() {
# python3 expects CA certificates to be installed in a different place to where
# they are actually installed. These lines link the two locations.
rm -r $D${libdir}/ssl/certs
diff --git a/recipes-containers/skopeo/files/0001-makefile-add-GOBUILDFLAGS-to-go-build-call.patch b/recipes-containers/skopeo/files/0001-makefile-add-GOBUILDFLAGS-to-go-build-call.patch
new file mode 100644
index 00000000..5d313e73
--- /dev/null
+++ b/recipes-containers/skopeo/files/0001-makefile-add-GOBUILDFLAGS-to-go-build-call.patch
@@ -0,0 +1,28 @@
+From 7037cb27718fe23541885684fdacec9c52ee0e30 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 13 Sep 2022 11:55:45 -0400
+Subject: [PATCH] makefile: add GOBUILDFLAGS to go build call
+
+We may need to specify things like -trimpath, so add $(GOBUILDFLAGS)
+to allow them to be passed from the recipe to the Makefile.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ src/import/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: git/src/import/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -126,7 +126,7 @@
+ # Build w/o using containers
+ .PHONY: bin/skopeo
+ bin/skopeo:
+- $(GO) build ${GO_DYN_FLAGS} ${SKOPEO_LDFLAGS} -gcflags "$(GOGCFLAGS)" -tags "$(BUILDTAGS)" -o $@ ./cmd/skopeo
++ $(GO) build $(GOBUILDFLAGS) ${GO_DYN_FLAGS} ${SKOPEO_LDFLAGS} -gcflags "$(GOGCFLAGS)" -tags "$(BUILDTAGS)" -o $@ ./cmd/skopeo
+ bin/skopeo.%:
+ GOOS=$(word 2,$(subst ., ,$@)) GOARCH=$(word 3,$(subst ., ,$@)) $(GO) build ${SKOPEO_LDFLAGS} -tags "containers_image_openpgp $(BUILDTAGS)" -o $@ ./cmd/skopeo
+ local-cross: bin/skopeo.darwin.amd64 bin/skopeo.linux.arm bin/skopeo.linux.arm64 bin/skopeo.windows.386.exe bin/skopeo.windows.amd64.exe
diff --git a/recipes-containers/skopeo/files/storage.conf b/recipes-containers/skopeo/files/storage.conf
deleted file mode 100644
index 818cfe8f..00000000
--- a/recipes-containers/skopeo/files/storage.conf
+++ /dev/null
@@ -1,133 +0,0 @@
-# This file is is the configuration file for all tools
-# that use the containers/storage library.
-# See man 5 containers-storage.conf for more information
-# The "container storage" table contains all of the server options.
-[storage]
-
-# Default Storage Driver
-driver = "overlay"
-
-# Temporary storage location
-runroot = "/var/run/containers/storage"
-
-# Primary Read/Write location of container storage
-graphroot = "/var/lib/containers/storage"
-
-[storage.options]
-# Storage options to be passed to underlying storage drivers
-
-# AdditionalImageStores is used to pass paths to additional Read/Only image stores
-# Must be comma separated list.
-additionalimagestores = [
-]
-
-# Size is used to set a maximum size of the container image. Only supported by
-# certain container storage drivers.
-size = ""
-
-# Path to an helper program to use for mounting the file system instead of mounting it
-# directly.
-#mount_program = "/usr/bin/fuse-overlayfs"
-
-# OverrideKernelCheck tells the driver to ignore kernel checks based on kernel version
-override_kernel_check = "true"
-
-# mountopt specifies comma separated list of extra mount options
-mountopt = "nodev"
-
-# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
-# a container, to UIDs/GIDs as they should appear outside of the container, and
-# the length of the range of UIDs/GIDs. Additional mapped sets can be listed
-# and will be heeded by libraries, but there are limits to the number of
-# mappings which the kernel will allow when you later attempt to run a
-# container.
-#
-# remap-uids = 0:1668442479:65536
-# remap-gids = 0:1668442479:65536
-
-# Remap-User/Group is a name which can be used to look up one or more UID/GID
-# ranges in the /etc/subuid or /etc/subgid file. Mappings are set up starting
-# with an in-container ID of 0 and the a host-level ID taken from the lowest
-# range that matches the specified name, and using the length of that range.
-# Additional ranges are then assigned, using the ranges which specify the
-# lowest host-level IDs first, to the lowest not-yet-mapped container-level ID,
-# until all of the entries have been used for maps.
-#
-# remap-user = "storage"
-# remap-group = "storage"
-
-[storage.options.thinpool]
-# Storage Options for thinpool
-
-# autoextend_percent determines the amount by which pool needs to be
-# grown. This is specified in terms of % of pool size. So a value of 20 means
-# that when threshold is hit, pool will be grown by 20% of existing
-# pool size.
-# autoextend_percent = "20"
-
-# autoextend_threshold determines the pool extension threshold in terms
-# of percentage of pool size. For example, if threshold is 60, that means when
-# pool is 60% full, threshold has been hit.
-# autoextend_threshold = "80"
-
-# basesize specifies the size to use when creating the base device, which
-# limits the size of images and containers.
-# basesize = "10G"
-
-# blocksize specifies a custom blocksize to use for the thin pool.
-# blocksize="64k"
-
-# directlvm_device specifies a custom block storage device to use for the
-# thin pool. Required if you setup devicemapper.
-# directlvm_device = ""
-
-# directlvm_device_force wipes device even if device already has a filesystem.
-# directlvm_device_force = "True"
-
-# fs specifies the filesystem type to use for the base device.
-# fs="xfs"
-
-# log_level sets the log level of devicemapper.
-# 0: LogLevelSuppress 0 (Default)
-# 2: LogLevelFatal
-# 3: LogLevelErr
-# 4: LogLevelWarn
-# 5: LogLevelNotice
-# 6: LogLevelInfo
-# 7: LogLevelDebug
-# log_level = "7"
-
-# min_free_space specifies the min free space percent in a thin pool require for
-# new device creation to succeed. Valid values are from 0% - 99%.
-# Value 0% disables
-# min_free_space = "10%"
-
-# mkfsarg specifies extra mkfs arguments to be used when creating the base.
-# device.
-# mkfsarg = ""
-
-# use_deferred_removal marks devicemapper block device for deferred removal.
-# If the thinpool is in use when the driver attempts to remove it, the driver
-# tells the kernel to remove it as soon as possible. Note this does not free
-# up the disk space, use deferred deletion to fully remove the thinpool.
-# use_deferred_removal = "True"
-
-# use_deferred_deletion marks thinpool device for deferred deletion.
-# If the device is busy when the driver attempts to delete it, the driver
-# will attempt to delete device every 30 seconds until successful.
-# If the program using the driver exits, the driver will continue attempting
-# to cleanup the next time the driver is used. Deferred deletion permanently
-# deletes the device and all data stored in device will be lost.
-# use_deferred_deletion = "True"
-
-# xfs_nospace_max_retries specifies the maximum number of retries XFS should
-# attempt to complete IO when ENOSPC (no space) error is returned by
-# underlying storage device.
-# xfs_nospace_max_retries = "0"
-
-# If specified, use OSTree to deduplicate files with the overlay backend
-ostree_repo = ""
-
-# Set to skip a PRIVATE bind mount on the storage home directory. Only supported by
-# certain container storage drivers
-skip_mount_home = "false"
diff --git a/recipes-containers/skopeo/skopeo_git.bb b/recipes-containers/skopeo/skopeo_git.bb
index f5a62313..5083b658 100644
--- a/recipes-containers/skopeo/skopeo_git.bb
+++ b/recipes-containers/skopeo/skopeo_git.bb
@@ -1,39 +1,46 @@
HOMEPAGE = "https://github.com/containers/skopeo"
SUMMARY = "Work with remote images registries - retrieving information, images, signing content"
LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=7e611105d3e369954840a6668c438584"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=7e611105d3e369954840a6668c438584"
DEPENDS = " \
gpgme \
- multipath-tools \
+ libdevmapper \
+ lvm2 \
btrfs-tools \
glib-2.0 \
- ostree \
"
inherit go
-RDEPENDS_${PN} = " \
+COMPATIBLE_HOST = "^(?!mips).*"
+
+RDEPENDS:${PN} = " \
gpgme \
libgpg-error \
libassuan \
"
SRC_URI = " \
- git://github.com/containers/skopeo \
- file://storage.conf \
- file://registries.conf \
+ git://github.com/containers/skopeo;branch=release-1.14;protocol=https;destsuffix=git/src/github.com/containers/skopeo \
+ file://0001-makefile-add-GOBUILDFLAGS-to-go-build-call.patch \
"
-SRCREV = "1cf1e06582142c522543560f2bc6d6756696e8ad"
-PV = "v0.1.39-dev+git${SRCPV}"
+SRCREV = "1c2ab995059dd011aad74e2c37305d636ebd2675"
+PV = "v1.14.2+git"
GO_IMPORT = "import"
-S = "${WORKDIR}/git"
+S = "${WORKDIR}/git/src/github.com/containers/skopeo"
inherit goarch
inherit pkgconfig
+inherit container-host
+
+# https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-10214
+# https://github.com/containers/image/issues/654
+CVE_STATUS[CVE-2019-10214] = "fixed-version: This CVE was fixed in the container image go library skopeo is using."
+
# This disables seccomp and apparmor, which are on by default in the
# go package.
EXTRA_OEMAKE="BUILDTAGS=''"
@@ -41,40 +48,44 @@ EXTRA_OEMAKE="BUILDTAGS=''"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
- # Setup vendor directory so that it can be used in GOPATH.
- #
- # Go looks in a src directory under any directory in GOPATH but riddler
- # uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
- #
- # We also need to link in the ipallocator directory as that is not under
- # a src directory.
- ln -sfn . "${S}/src/import/vendor/src"
- mkdir -p "${S}/src/import/vendor/src/github.com/projectatomic/skopeo"
- ln -sfn "${S}/src/import/skopeo" "${S}/src/import/vendor/src/github.com/projectatomic/skopeo"
- ln -sfn "${S}/src/import/version" "${S}/src/import/vendor/src/github.com/projectatomic/skopeo/version"
- export GOPATH="${S}/src/import/vendor"
+ export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go:${WORKDIR}/git/"
+ cd ${S}
# Pass the needed cflags/ldflags so that cgo
# can find the needed headers files and libraries
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- cd ${S}/src/import
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
- oe_runmake binary-local
+ export GO111MODULE=off
+ export GOBUILDFLAGS="-trimpath"
+ export EXTRA_LDFLAGS="-s -w"
+
+ oe_runmake bin/skopeo
}
do_install() {
install -d ${D}/${sbindir}
install -d ${D}/${sysconfdir}/containers
- install ${S}/src/import/skopeo ${D}/${sbindir}/
- install ${S}/src/import/default-policy.json ${D}/${sysconfdir}/containers/policy.json
+ install ${S}/bin/skopeo ${D}/${sbindir}/
+}
- install ${WORKDIR}/storage.conf ${D}/${sysconfdir}/containers/storage.conf
- install ${WORKDIR}/registries.conf ${D}/${sysconfdir}/containers/registries.conf
+do_install:append:class-native() {
+ create_cmdline_wrapper ${D}/${sbindir}/skopeo \
+ --policy ${sysconfdir}/containers/policy.json
+
+ create_wrapper ${D}/${sbindir}/skopeo.real \
+ LD_LIBRARY_PATH=${STAGING_LIBDIR_NATIVE}
+}
+
+do_install:append:class-nativesdk() {
+ create_cmdline_wrapper ${D}/${sbindir}/skopeo \
+ --policy ${sysconfdir}/containers/policy.json
}
-INSANE_SKIP_${PN} += "ldflags"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-containers/sloci-image/sloci-image-native_git.bb b/recipes-containers/sloci-image/sloci-image-native_git.bb
deleted file mode 100644
index 56e8e0f1..00000000
--- a/recipes-containers/sloci-image/sloci-image-native_git.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "A simple CLI tool for packing rootfs into a single-layer OCI image"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://git/LICENSE;md5=948cd8e59069fad992b0469af9ad7966"
-SRC_URI = "git://github.com/jirutka/sloci-image.git"
-
-DEPENDS = ""
-
-SRCREV = "4015e49763e5a738026a5bbfcf32b38b5a4fa650"
-PV = "v0.1.0+git${SRCPV}"
-
-inherit native
-
-S = "${WORKDIR}"
-
-do_compile() {
- :
-}
-
-do_install() {
- cd ${S}/git
- make PREFIX="${exec_prefix}" DESTDIR=${D} install
-}
diff --git a/recipes-containers/sloci-image/sloci-image/0001-sloci-image-fix-variant-quoting.patch b/recipes-containers/sloci-image/sloci-image/0001-sloci-image-fix-variant-quoting.patch
new file mode 100644
index 00000000..85aa6205
--- /dev/null
+++ b/recipes-containers/sloci-image/sloci-image/0001-sloci-image-fix-variant-quoting.patch
@@ -0,0 +1,44 @@
+From 55aebd87ee81f851d088beea8688e3e599c2bced Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 17 Jul 2020 14:40:12 -0400
+Subject: [PATCH] sloci-image: fix variant quoting
+
+Bash doesn't deal very well with the quoted "variant" in the
+output of the oci-image-index. We can calculate the string at
+the top of the function, and just use it as a whole to avoid
+needing to figure out the quote escaping.
+
+No changes in the output, except a properly quoted "variant"
+when a variant is defined.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ sloci-image | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/sloci-image b/sloci-image
+index be8e79a..e0dc469 100755
+--- a/sloci-image
++++ b/sloci-image
+@@ -298,6 +298,7 @@ oci_image_config() {
+ # $1: digest of the image manifest json (must be in blobs directory)
+ oci_image_index() {
+ local manifest_digest="$1"
++ local variant_string=" \"variant\": $(json_string "$CFG_ARCH_VARIANT"),"
+
+ cat <<-EOF
+ {
+@@ -309,7 +310,7 @@ oci_image_index() {
+ "digest": "$manifest_digest",
+ "platform": {
+ "architecture": "$(oci_arch $CFG_ARCH)",
+- ${CFG_ARCH_VARIANT:+"\"variant\": $(json_string "$CFG_ARCH_VARIANT"),"}
++ ${CFG_ARCH_VARIANT:+$variant_string}
+ "os": "$CFG_OS"
+ },
+ "annotations": {
+--
+2.19.1
+
diff --git a/recipes-containers/sloci-image/sloci-image_git.bb b/recipes-containers/sloci-image/sloci-image_git.bb
new file mode 100644
index 00000000..4bbf06e2
--- /dev/null
+++ b/recipes-containers/sloci-image/sloci-image_git.bb
@@ -0,0 +1,27 @@
+SUMMARY = "A simple CLI tool for packing rootfs into a single-layer OCI image"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=948cd8e59069fad992b0469af9ad7966"
+SRC_URI = "git://github.com/jirutka/sloci-image.git;branch=master;protocol=https \
+ file://0001-sloci-image-fix-variant-quoting.patch \
+ "
+
+
+DEPENDS = ""
+
+SRCREV = "4015e49763e5a738026a5bbfcf32b38b5a4fa650"
+PV = "v0.1.0+git"
+
+S = "${WORKDIR}/git"
+
+do_compile() {
+ :
+}
+
+do_install() {
+ cd ${S}
+ make PREFIX="${exec_prefix}" DESTDIR=${D} install
+}
+
+CLEANBROKEN = "1"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-containers/tini/tini/0001-tini.c-a-function-declaration-without-a-prototype-is.patch b/recipes-containers/tini/tini/0001-tini.c-a-function-declaration-without-a-prototype-is.patch
new file mode 100644
index 00000000..8834f175
--- /dev/null
+++ b/recipes-containers/tini/tini/0001-tini.c-a-function-declaration-without-a-prototype-is.patch
@@ -0,0 +1,74 @@
+From 66d0b5fd94fafe1e15bf21a1b73618ca23de078f Mon Sep 17 00:00:00 2001
+From: Jose Quaresma <jose.quaresma@foundries.io>
+Date: Fri, 23 Sep 2022 16:31:33 +0000
+Subject: [PATCH] tini.c: a function declaration without a prototype is
+ deprecated in all versions of C
+
+| /srv/oe/build/tmp-lmp/work/corei7-64-lmp-linux/tini/0.19.0-r0/git/src/tini.c:150:18: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
+| int isolate_child() {
+| ^
+| void
+| /srv/oe/build/tmp-lmp/work/corei7-64-lmp-linux/tini/0.19.0-r0/git/src/tini.c:395:14: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
+| int parse_env() {
+| ^
+| void
+| /srv/oe/build/tmp-lmp/work/corei7-64-lmp-linux/tini/0.19.0-r0/git/src/tini.c:416:24: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
+| int register_subreaper () {
+| ^
+| void
+| /srv/oe/build/tmp-lmp/work/corei7-64-lmp-linux/tini/0.19.0-r0/git/src/tini.c:434:19: error: a function declaration without a prototype is deprecated in all versions of C [-Werror,-Wstrict-prototypes]
+| void reaper_check () {
+| ^
+| void
+| 4 errors generated.
+
+Upstream-Status: Submitted [https://github.com/krallin/tini/pull/198]
+
+Signed-off-by: Jose Quaresma <jose.quaresma@foundries.io>
+---
+ src/tini.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/tini.c b/src/tini.c
+index 2c873f9..7914d3a 100644
+--- a/src/tini.c
++++ b/src/tini.c
+@@ -147,7 +147,7 @@ int restore_signals(const signal_configuration_t* const sigconf_ptr) {
+ return 0;
+ }
+
+-int isolate_child() {
++int isolate_child(void) {
+ // Put the child into a new process group.
+ if (setpgid(0, 0) < 0) {
+ PRINT_FATAL("setpgid failed: %s", strerror(errno));
+@@ -392,7 +392,7 @@ int parse_args(const int argc, char* const argv[], char* (**child_args_ptr_ptr)[
+ return 0;
+ }
+
+-int parse_env() {
++int parse_env(void) {
+ #if HAS_SUBREAPER
+ if (getenv(SUBREAPER_ENV_VAR) != NULL) {
+ subreaper++;
+@@ -413,7 +413,7 @@ int parse_env() {
+
+
+ #if HAS_SUBREAPER
+-int register_subreaper () {
++int register_subreaper (void) {
+ if (subreaper > 0) {
+ if (prctl(PR_SET_CHILD_SUBREAPER, 1)) {
+ if (errno == EINVAL) {
+@@ -431,7 +431,7 @@ int register_subreaper () {
+ #endif
+
+
+-void reaper_check () {
++void reaper_check (void) {
+ /* Check that we can properly reap zombies */
+ #if HAS_SUBREAPER
+ int bit = 0;
+--
+2.34.1
+
diff --git a/recipes-containers/tini/tini_0.18.0.bb b/recipes-containers/tini/tini_0.19.0.bb
index 373d886a..fd90f620 100644
--- a/recipes-containers/tini/tini_0.18.0.bb
+++ b/recipes-containers/tini/tini_0.19.0.bb
@@ -4,10 +4,11 @@ DESCRIPTION = "Tini is the simplest init you could think of. All Tini does is \
spawn a single child (Tini is meant to be run in a container), and wait for \
it to exit all the while reaping zombies and performing signal forwarding. "
-SRCREV = "fec3683b971d9c3ef73f284f176672c44b448662"
+SRCREV = "b9f42a0e7bb46efea0c9e3d8610c96ab53b467f8"
SRC_URI = " \
- git://github.com/krallin/tini.git \
+ git://github.com/krallin/tini.git;branch=master;protocol=https \
file://0001-Do-not-strip-the-output-binary-allow-yocto-to-do-thi.patch \
+ file://0001-tini.c-a-function-declaration-without-a-prototype-is.patch \
"
LICENSE = "MIT"
@@ -18,7 +19,7 @@ S = "${WORKDIR}/git"
BBCLASSEXTEND = "native"
# tini links with -static, so no PIE for us
-SECURITY_CFLAGS_pn-${PN} = "${SECURITY_NO_PIE_CFLAGS}"
+SECURITY_CFLAGS:pn-${PN} = "${SECURITY_NO_PIE_CFLAGS}"
inherit cmake
@@ -29,4 +30,4 @@ do_install() {
# Tini is the currently the provider for docker-init
PROVIDES += "docker-init"
-RPROVIDES_${PN} = "docker-init"
+RPROVIDES:${PN} = "docker-init"
diff --git a/recipes-containers/umoci/umoci_git.bb b/recipes-containers/umoci/umoci_git.bb
new file mode 100644
index 00000000..2ed0af7d
--- /dev/null
+++ b/recipes-containers/umoci/umoci_git.bb
@@ -0,0 +1,85 @@
+HOMEPAGE = "https://github.com/openSUSE/umoci"
+SUMMARY = "umoci modifies Open Container images"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+RDEPENDS:${PN} = "skopeo"
+RDEPENDS:${PN}:class-native = ""
+
+SRCREV_umoci = "33ec00665c66321f1b1f34ca7e6f370ac35c1233"
+SRC_URI = "git://github.com/opencontainers/umoci.git;branch=main;name=umoci;destsuffix=github.com/opencontainers/umoci;protocol=https \
+ "
+
+PV = "v0.4.7+git"
+S = "${WORKDIR}/github.com/opencontainers/umoci"
+GO_IMPORT = "github.com/opencontainers/umoci"
+
+inherit goarch
+inherit go
+
+COMPATIBLE_HOST = "^(?!mips).*"
+
+# This disables seccomp and apparmor, which are on by default in the
+# go package.
+EXTRA_OEMAKE="BUILDTAGS=''"
+
+
+do_compile:class-native () {
+ export GOARCH="${BUILD_GOARCH}"
+
+ # Pass the needed cflags/ldflags so that cgo can find the needed headers files and libraries
+ export CGO_ENABLED="1"
+ export CFLAGS="${BUILD_CFLAGS}"
+ export LDFLAGS="${BUILD_LDFLAGS}"
+ export CGO_CFLAGS="${BUILD_CFLAGS}"
+
+ # as of go 1.15.5, there are some flags the CGO doesn't like. Rather than
+ # clearing them all, we sed away the ones we don't want.
+ # export CGO_LDFLAGS="$(echo ${BUILD_LDFLAGS} | sed 's/-Wl,-O1//g' | sed 's/-Wl,--dynamic-linker.*?( \|$\)//g')"
+ export CC="${BUILD_CC}"
+ export LD="${BUILD_LD}"
+
+ export GOPATH="${WORKDIR}/git/"
+ export GO111MODULE=off
+
+ export STATIC_BUILD_FLAGS="-trimpath"
+
+ cd ${S}
+
+ # why static ? patchelf will be run on dynamic binaries and it breaks
+ # the executable (coredump)
+ # https://forum.snapcraft.io/t/patchelf-broke-my-binary/4928
+ # https://github.com/NixOS/patchelf/issues/146
+ oe_runmake umoci.static
+
+ # so the common install can find our binary
+ cp umoci.static umoci
+}
+
+do_compile() {
+ export GOARCH="${TARGET_GOARCH}"
+ export GOPATH="${WORKDIR}/git/"
+
+ # Pass the needed cflags/ldflags so that cgo
+ # can find the needed headers files and libraries
+ export CGO_ENABLED="1"
+ export CFLAGS=""
+ export LDFLAGS=""
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+
+ export GO111MODULE=off
+
+ export BUILD_FLAGS="-trimpath"
+ cd ${S}
+
+ oe_runmake umoci
+}
+
+do_install() {
+ install -d ${D}/${sbindir}
+ install ${S}/umoci ${D}/${sbindir}
+}
+
+INSANE_SKIP:${PN} += "ldflags already-stripped"
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-core/bind/bind_virtualization.inc b/recipes-core/bind/bind_virtualization.inc
index b8f0b3ff..a6e39049 100644
--- a/recipes-core/bind/bind_virtualization.inc
+++ b/recipes-core/bind/bind_virtualization.inc
@@ -1,4 +1,4 @@
-# Tell named not to bother listening on the IP address that lxc handles itself.
-do_install_append() {
- sed -i -e 's,^\( *options *{\)$,\1\n\t// lxc would take care of this address itself\n\tlisten-on { ! 10.0.3.1; any;};\n,' ${D}${sysconfdir}/bind/named.conf.options
+# Tell named not to bother listening on the IP address that lxc and libvirtd handles itself.
+do_install:append() {
+ sed -i -e 's,^\( *options *{\)$,\1\n\t// lxc and libvirtd would take care of this address itself\n\tlisten-on { ! 10.0.3.1; ! 192.168.122.1; any;};\n,' ${D}${sysconfdir}/bind/named.conf.options
}
diff --git a/recipes-core/busybox/busybox-initrd.bb b/recipes-core/busybox/busybox-initrd.bb
new file mode 100644
index 00000000..513ed135
--- /dev/null
+++ b/recipes-core/busybox/busybox-initrd.bb
@@ -0,0 +1,35 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/busybox-initrd:${COREBASE}/meta/recipes-core/busybox/busybox:${COREBASE}/meta/recipes-core/busybox/files:"
+
+def get_busybox_pv(d):
+ import re
+ corebase = d.getVar('COREBASE')
+ bb_dir = os.path.join(corebase, 'meta', 'recipes-core', 'busybox')
+ if os.path.isdir(bb_dir):
+ re_bb_name = re.compile(r"busybox_([0-9.]*)\.bb")
+ for bb_file in os.listdir(bb_dir):
+ result = re_bb_name.match(bb_file)
+ if result:
+ return result.group(1)
+ bb.fatal("Cannot find busybox recipe in %s" % bb_dir)
+
+PV := "${@get_busybox_pv(d)}"
+
+require recipes-core/busybox/busybox_${PV}.bb
+
+SRC_URI += "file://init.cfg \
+ file://mdev.cfg \
+ file://runx.cfg \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', 'file://static.cfg', '', d)} \
+ file://initrd.cfg"
+
+S = "${WORKDIR}/busybox-${PV}"
+
+# override security-flags settings, we have some warnings to ignore
+SECURITY_STRINGFORMAT = ""
+
+# we do this to get the target binary available to recipes that
+# depend on busybox
+SYSROOT_DIRS += "/bin"
+BUSYBOX_SPLIT_SUID = "0"
+
+FILES:${PN} += "${sysconfdir}/init.d/*"
diff --git a/recipes-core/busybox/busybox-initrd/initrd.cfg b/recipes-core/busybox/busybox-initrd/initrd.cfg
new file mode 100644
index 00000000..04896713
--- /dev/null
+++ b/recipes-core/busybox/busybox-initrd/initrd.cfg
@@ -0,0 +1,12 @@
+CONFIG_INIT=y
+CNOFIG_FEATURE_UTMP=y
+CONFIG_RUNLEVEL=y
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_HALT=y
+CONFIG_POWEROFF=y
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT_TERMINAL_TYPE=""
+
+# CONFIG_FEATURE_SHADOWPASSWDS is not set
+CONFIG_USE_BB_PWD_GRP=y
diff --git a/recipes-core/busybox/busybox-initrd/runx.cfg b/recipes-core/busybox/busybox-initrd/runx.cfg
new file mode 100644
index 00000000..1f1ac6af
--- /dev/null
+++ b/recipes-core/busybox/busybox-initrd/runx.cfg
@@ -0,0 +1 @@
+CONFIG_FEATURE_INSTALLER=y
diff --git a/recipes-core/busybox/busybox-initrd/static.cfg b/recipes-core/busybox/busybox-initrd/static.cfg
new file mode 100644
index 00000000..25902bb7
--- /dev/null
+++ b/recipes-core/busybox/busybox-initrd/static.cfg
@@ -0,0 +1 @@
+CONFIG_STATIC=y
diff --git a/recipes-core/busybox/busybox/nsenter.cfg b/recipes-core/busybox/busybox/nsenter.cfg
new file mode 100644
index 00000000..0a58df5b
--- /dev/null
+++ b/recipes-core/busybox/busybox/nsenter.cfg
@@ -0,0 +1 @@
+CONFIG_NSENTER=y
diff --git a/recipes-core/busybox/busybox/static.cfg b/recipes-core/busybox/busybox/static.cfg
new file mode 100644
index 00000000..72079a1c
--- /dev/null
+++ b/recipes-core/busybox/busybox/static.cfg
@@ -0,0 +1,4 @@
+CONFIG_STATIC=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALLER=y
+
diff --git a/recipes-core/busybox/busybox_%.bbappend b/recipes-core/busybox/busybox_%.bbappend
index 617caccb..3d39bba3 100644
--- a/recipes-core/busybox/busybox_%.bbappend
+++ b/recipes-core/busybox/busybox_%.bbappend
@@ -1 +1,3 @@
require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
+require ${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', '${BPN}_vmsep.inc', '', d)}
+
diff --git a/recipes-core/busybox/busybox_virtualization.inc b/recipes-core/busybox/busybox_virtualization.inc
index d9c4e677..652f389d 100644
--- a/recipes-core/busybox/busybox_virtualization.inc
+++ b/recipes-core/busybox/busybox_virtualization.inc
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/busybox:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/busybox:"
SRC_URI += " \
file://lspci.cfg \
@@ -7,4 +7,5 @@ SRC_URI += " \
file://mount-cifs.cfg \
file://ps-extras.cfg \
file://getopt.cfg \
+ file://nsenter.cfg \
"
diff --git a/recipes-core/busybox/busybox_vmsep.inc b/recipes-core/busybox/busybox_vmsep.inc
new file mode 100644
index 00000000..566cd6d5
--- /dev/null
+++ b/recipes-core/busybox/busybox_vmsep.inc
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/busybox:"
+SRC_URI += " \
+ file://static.cfg \
+ "
+
+# we do this to get the target binary available to recipes that
+# depend on busybox
+SYSROOT_DIRS += "/bin"
+BUSYBOX_SPLIT_SUID = "0"
diff --git a/recipes-core/initscripts/initscripts_1.%.bbappend b/recipes-core/initscripts/initscripts_1.%.bbappend
index 0600ab2a..96b4ac57 100644
--- a/recipes-core/initscripts/initscripts_1.%.bbappend
+++ b/recipes-core/initscripts/initscripts_1.%.bbappend
@@ -1,16 +1,2 @@
-do_install_append() {
+require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
- echo >> ${D}${sysconfdir}/init.d/functions
- echo success \(\) \{ >> ${D}${sysconfdir}/init.d/functions
- echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
- echo \} >> ${D}${sysconfdir}/init.d/functions
- echo failure \(\) \{ >> ${D}${sysconfdir}/init.d/functions
- echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
- echo \} >> ${D}${sysconfdir}/init.d/functions
- echo warning \(\) \{ >> ${D}${sysconfdir}/init.d/functions
- echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
- echo \} >> ${D}${sysconfdir}/init.d/functions
- echo begin \(\) \{ >> ${D}${sysconfdir}/init.d/functions
- echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
- echo \} >> ${D}${sysconfdir}/init.d/functions
-}
diff --git a/recipes-core/initscripts/initscripts_virtualization.inc b/recipes-core/initscripts/initscripts_virtualization.inc
new file mode 100644
index 00000000..db9c5535
--- /dev/null
+++ b/recipes-core/initscripts/initscripts_virtualization.inc
@@ -0,0 +1,16 @@
+do_install:append() {
+
+ echo >> ${D}${sysconfdir}/init.d/functions
+ echo success \(\) \{ >> ${D}${sysconfdir}/init.d/functions
+ echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
+ echo \} >> ${D}${sysconfdir}/init.d/functions
+ echo failure \(\) \{ >> ${D}${sysconfdir}/init.d/functions
+ echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
+ echo \} >> ${D}${sysconfdir}/init.d/functions
+ echo warning \(\) \{ >> ${D}${sysconfdir}/init.d/functions
+ echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
+ echo \} >> ${D}${sysconfdir}/init.d/functions
+ echo begin \(\) \{ >> ${D}${sysconfdir}/init.d/functions
+ echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
+ echo \} >> ${D}${sysconfdir}/init.d/functions
+}
diff --git a/recipes-core/kata-containers/kata-agent_git.bb b/recipes-core/kata-containers/kata-agent_git.bb
index 3632ee52..de28235c 100644
--- a/recipes-core/kata-containers/kata-agent_git.bb
+++ b/recipes-core/kata-containers/kata-agent_git.bb
@@ -5,10 +5,12 @@ LIC_FILES_CHKSUM = "file://src/github.com/kata-containers/agent/LICENSE;md5=86d3
GO_IMPORT = "github.com/kata-containers/agent"
SRCREV = "e03f7d7453fabffb17e1540f28666c26178d3cbf"
-SRC_URI = "git://${GO_IMPORT}.git \
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
"
-RDEPENDS_${PN}-dev_append = "bash"
+RDEPENDS:${PN}-dev:append = "bash"
+
+SKIP_RECIPE[kata-agent] ?= "kata containers are currently broken, patches accepted"
S = "${WORKDIR}/git"
@@ -36,4 +38,4 @@ do_install() {
deltask compile_ptest_base
-FILES_${PN} += "${systemd_unitdir}/*" \ No newline at end of file
+FILES:${PN} += "${systemd_unitdir}/*"
diff --git a/recipes-core/kata-containers/kata-proxy_git.bb b/recipes-core/kata-containers/kata-proxy_git.bb
index 8de0bfcf..d835e4d2 100644
--- a/recipes-core/kata-containers/kata-proxy_git.bb
+++ b/recipes-core/kata-containers/kata-proxy_git.bb
@@ -5,10 +5,13 @@ LIC_FILES_CHKSUM = "file://src/github.com/kata-containers/proxy/LICENSE;md5=86d3
GO_IMPORT = "github.com/kata-containers/proxy"
SRCREV = "1148847739f9a9f47b92e34e4f309dc109d4dba9"
-SRC_URI = "git://${GO_IMPORT}.git \
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
"
-RDEPENDS_${PN}-dev_append = "bash"
+
+SKIP_RECIPE[kata-proxy] ?= "kata containers are currently broken, patches accepted"
+
+RDEPENDS:${PN}-dev:append = "bash"
S = "${WORKDIR}/git"
diff --git a/recipes-core/kata-containers/kata-runtime/0001-makefile-allow-SKIP_GO_VERSION_CHECK-to-be-overriden.patch b/recipes-core/kata-containers/kata-runtime/0001-makefile-allow-SKIP_GO_VERSION_CHECK-to-be-overriden.patch
new file mode 100644
index 00000000..dde63478
--- /dev/null
+++ b/recipes-core/kata-containers/kata-runtime/0001-makefile-allow-SKIP_GO_VERSION_CHECK-to-be-overriden.patch
@@ -0,0 +1,28 @@
+From 224fedda76bb1b741d09a129a5b43a85cb9ce182 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Wed, 7 Oct 2020 23:29:52 -0400
+Subject: [PATCH] makefile: allow SKIP_GO_VERSION_CHECK to be overriden
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 669c1bd1..4c40278a 100644
+--- a/src/github.com/kata-containers/runtime/Makefile
++++ b/src/github.com/kata-containers/runtime/Makefile
+@@ -12,7 +12,7 @@ for file in /etc/os-release /usr/lib/os-release; do \
+ fi \
+ done)
+
+-SKIP_GO_VERSION_CHECK=
++#SKIP_GO_VERSION_CHECK=
+ include golang.mk
+
+ #Get ARCH.
+--
+2.19.1
+
diff --git a/recipes-core/kata-containers/kata-runtime_git.bb b/recipes-core/kata-containers/kata-runtime_git.bb
index 4f250f19..c0d7c4cb 100644
--- a/recipes-core/kata-containers/kata-runtime_git.bb
+++ b/recipes-core/kata-containers/kata-runtime_git.bb
@@ -4,16 +4,22 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://src/github.com/kata-containers/runtime/LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
GO_IMPORT = "github.com/kata-containers/runtime"
-SRCREV = "f4cf2137be58c3778d87a8ee8e258e68d1ede888"
-SRC_URI = "git://${GO_IMPORT}.git \
+SRCREV = "04c77eb20e9bd603cab5c711bcbe7c69db58b040"
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
+ file://0001-makefile-allow-SKIP_GO_VERSION_CHECK-to-be-overriden.patch \
"
-RDEPENDS_${PN}-dev_append = "bash"
-RDEPENDS_${PN} = " \
+RDEPENDS:${PN}-dev:append = "bash"
+
+CONTAINER_KERNEL ?= ""
+CONTAINER_INITRD ?= ""
+RDEPENDS:${PN} = " \
qemu \
- hyperstart \
+ ${CONTAINER_KERNEL} \
+ ${CONTAINER_INITRD} \
"
+DEPENDS += "yq-native"
-# grpc
+SKIP_RECIPE[kata-runtime] ?= "kata containers are currently broken, patches accepted"
S = "${WORKDIR}/git"
@@ -28,6 +34,8 @@ do_compile() {
export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
cd ${S}/src/${GO_IMPORT}
+
+ export SKIP_GO_VERSION_CHECK="1"
oe_runmake runtime
}
@@ -36,7 +44,7 @@ do_install() {
cp ${WORKDIR}/git/src/${GO_IMPORT}/kata-runtime ${D}/${bindir}
mkdir -p ${D}/${datadir}/defaults/kata-containers/
- cp ${WORKDIR}/git/src/${GO_IMPORT}/cli/config/configuration.toml ${D}/${datadir}/defaults/kata-containers/
+ cp ${WORKDIR}/git/src/${GO_IMPORT}/cli/config/configuration-qemu.toml ${D}/${datadir}/defaults/kata-containers/configuration.toml
sed -e 's|/usr/bin/qemu-lite-system-x86_64|/usr/bin/qemu-system-x86_64|' -i ${D}/${datadir}/defaults/kata-containers/configuration.toml
sed -e 's|/usr/share/kata-containers/vmlinuz.container|/var/lib/hyper/kernel|' -i ${D}/${datadir}/defaults/kata-containers/configuration.toml
@@ -47,13 +55,8 @@ do_install() {
# /usr/share/defaults/kata-containers/configuration.toml: file /usr/libexec/kata-containers/kata-shim does not exist
# fork/exec /usr/libexec/kata-containers/kata-proxy: no such file or directory
-
- #64 mknod /dev/kvm c 10 232
- #68 kata-runtime --log=/dev/stdout run --bundle /opt/container/cube-server foo
-
-
}
-FILES_${PN} += "${datadir}/defaults/kata-containers/*"
+FILES:${PN} += "${datadir}/defaults/kata-containers/*"
deltask compile_ptest_base
diff --git a/recipes-core/kata-containers/kata-shim_git.bb b/recipes-core/kata-containers/kata-shim_git.bb
index fb55a8e7..8a7cb78a 100644
--- a/recipes-core/kata-containers/kata-shim_git.bb
+++ b/recipes-core/kata-containers/kata-shim_git.bb
@@ -5,10 +5,12 @@ LIC_FILES_CHKSUM = "file://src/github.com/kata-containers/shim/LICENSE;md5=86d3f
GO_IMPORT = "github.com/kata-containers/shim"
SRCREV = "bcc35aeca3ef6fa0976005c9e93525906aefed2f"
-SRC_URI = "git://${GO_IMPORT}.git \
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https \
"
-RDEPENDS_${PN}-dev_append = "bash"
+SKIP_RECIPE[kata-shim] ?= "kata containers are currently broken, patches accepted"
+
+RDEPENDS:${PN}-dev:append = "bash"
S = "${WORKDIR}/git"
diff --git a/recipes-core/libxcrypt/libxcrypt_%.bbappend b/recipes-core/libxcrypt/libxcrypt_%.bbappend
new file mode 100644
index 00000000..55e453d9
--- /dev/null
+++ b/recipes-core/libxcrypt/libxcrypt_%.bbappend
@@ -0,0 +1,4 @@
+# if vmsep is in distro features, we need a static libxycryp, so we can build
+# a static busybox. The end result of this is:
+# EXTRA_OECONF:remove = "--disable-static"
+EXTRA_OECONF:remove = "${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', '--disable-static', '', d)}"
diff --git a/recipes-core/meta/container-dummy-provides.bb b/recipes-core/meta/container-dummy-provides.bb
new file mode 100644
index 00000000..2ab42be3
--- /dev/null
+++ b/recipes-core/meta/container-dummy-provides.bb
@@ -0,0 +1,6 @@
+DUMMYARCH = "container-dummy-provides"
+DUMMYPROVIDES = "\
+ /bin/sh \
+ /usr/bin/env \
+"
+require recipes-core/meta/dummy-sdk-package.inc
diff --git a/recipes-core/packagegroups/packagegroup-container.bb b/recipes-core/packagegroups/packagegroup-container.bb
new file mode 100644
index 00000000..4b1ad009
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-container.bb
@@ -0,0 +1,49 @@
+SUMMARY = "All packages for container host"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit packagegroup
+
+COMPATIBLE_HOST = "^(?!(mips|riscv)).*"
+
+PACKAGES = "\
+ packagegroup-container \
+ packagegroup-lxc \
+ packagegroup-docker \
+ packagegroup-oci \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'seccomp ipv6', \
+ 'packagegroup-podman', '', d)} \
+ packagegroup-containerd \
+ "
+
+# everything and the kitchen sink, used for building/installing
+# many things at once.
+RDEPENDS:${PN} = " \
+ packagegroup-lxc \
+ packagegroup-docker \
+ packagegroup-oci \
+"
+
+RDEPENDS:packagegroup-lxc = " \
+ lxc \
+"
+
+RDEPENDS:packagegroup-docker = " \
+ docker \
+"
+
+RDEPENDS:packagegroup-podman = " \
+ podman \
+"
+
+RDEPENDS:packagegroup-oci = " \
+ virtual-runc \
+ oci-systemd-hook \
+ oci-runtime-tools \
+ oci-image-tools \
+"
+
+RDEPENDS:packagegroup-containerd = " \
+ virtual-containerd \
+"
+
diff --git a/recipes-core/packagegroups/packagegroup-kubernetes.bb b/recipes-core/packagegroups/packagegroup-kubernetes.bb
new file mode 100644
index 00000000..d518fc15
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-kubernetes.bb
@@ -0,0 +1,49 @@
+SUMMARY = "packagegroups for various kubernets (and variants) roles"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+inherit packagegroup
+
+COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
+
+# k3s has this restriction
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+PACKAGES = "\
+ packagegroup-kubernetes-base \
+ packagegroup-k8s-host \
+ packagegroup-k8s-node \
+ packagegroup-k3s-host \
+ packagegroup-k3s-node \
+ "
+
+KUBERNETES_CRI ?= "containerd"
+
+RDEPENDS:packagegroup-kubernetes-base = " \
+ packagegroup-${KUBERNETES_CRI} \
+ packagegroup-oci \
+"
+
+RDEPENDS:packagegroup-k8s-host = " \
+ packagegroup-kubernetes-base \
+ kubernetes \
+"
+
+RDEPENDS:packagegroup-k8s-node = " \
+ packagegroup-kubernetes-base \
+ kubeadm \
+ kubernetes-misc \
+"
+
+RDEPENDS:packagegroup-k3s-host = " \
+ packagegroup-kubernetes-base \
+ k3s-server \
+ k3s-cni \
+"
+
+RDEPENDS:packagegroup-k3s-node = " \
+ packagegroup-kubernetes-base \
+ k3s-agent \
+ k3s-cni \
+"
diff --git a/recipes-core/runv/runv_git.bb b/recipes-core/runv/runv_git.bb
index ef94f096..73cd81a6 100644
--- a/recipes-core/runv/runv_git.bb
+++ b/recipes-core/runv/runv_git.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Hypervisor-based Runtime for OCI"
SRCREV_runv = "b360a686abc6c6e896382990ef1b93ef07c7a677"
SRC_URI = "\
- git://github.com/hyperhq/runv.git;nobranch=1;name=runv \
+ git://github.com/hyperhq/runv.git;nobranch=1;name=runv;protocol=https \
"
LICENSE = "Apache-2.0"
@@ -19,10 +19,16 @@ inherit goarch
inherit pkgconfig
inherit autotools-brokensep
+# accord with qemu
+COMPATIBLE_HOST:mipsarchn32 = "null"
+COMPATIBLE_HOST:mipsarchn64 = "null"
+COMPATIBLE_HOST:riscv32 = "null"
+COMPATIBLE_HOST:powerpc = "null"
+
PACKAGECONFIG[xen] = "--with-xen,--without-xen,"
AUTOTOOLS_SCRIPT_PATH = "${S}/src/import/"
-RDEPENDS_${PN} += " qemu hyperstart"
+RDEPENDS:${PN} += " qemu hyperstart"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
@@ -76,6 +82,6 @@ do_install() {
deltask compile_ptest_base
-FILES_${PN} += "/usr/local/bin/*"
+FILES:${PN} += "/usr/local/bin/*"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
diff --git a/recipes-core/runx/runx/0001-make-initrd-allow-externally-provided-busybox.patch b/recipes-core/runx/runx/0001-make-initrd-allow-externally-provided-busybox.patch
new file mode 100644
index 00000000..3eaa4bf4
--- /dev/null
+++ b/recipes-core/runx/runx/0001-make-initrd-allow-externally-provided-busybox.patch
@@ -0,0 +1,57 @@
+From 4a128a3d1bc3b069ac12d3d61f79bc001340a8b7 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 26 Mar 2021 10:55:49 -0400
+Subject: [PATCH] make-initrd: allow externally provided busybox
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ initrd/make-initrd | 24 ++++++++++++++++++++----
+ 1 file changed, 20 insertions(+), 4 deletions(-)
+
+diff --git a/initrd/make-initrd b/initrd/make-initrd
+index 21170e8..939f71d 100755
+--- a/initrd/make-initrd
++++ b/initrd/make-initrd
+@@ -35,6 +35,8 @@ then
+ cp $busybox_src_config .config
+ make -j "$(getconf _NPROCESSORS_ONLN)"
+ export busybox="$busybox_image"
++else
++ echo "busybox: using externally provided binary"
+ fi
+
+
+@@ -48,10 +50,24 @@ mkdir -p $tmpdir/lib
+ mkdir -p $tmpdir/var
+ mkdir -p $tmpdir/mnt
+ cp "$busybox" $tmpdir/bin/busybox
+-for i in `cat "$base"/applet-list`
+-do
+- ln -s /bin/busybox $tmpdir/bin/$i
+-done
++
++if [ -n "$CROSS_COMPILE" ]; then
++ echo "cross compiling, busybox --install emulation"
++ if [ -n "$QEMU_USER" ]; then
++ $QEMU_USER $tmpdir/bin/busybox --install $tmpdir/bin
++ else
++ echo "QEMU_USER is not defined, default binary symlinks will be available"
++ for i in `cat "$base"/applet-list`
++ do
++ ln -s /bin/busybox $tmpdir/bin/$i
++ done
++ fi
++else
++ for i in `cat "$base"/applet-list`
++ do
++ ln -s /bin/busybox $tmpdir/bin/$i
++ done
++fi
+
+ mkdir -p $tmpdir/etc/init.d
+ cp $init $tmpdir/etc/init.d/rcS
+--
+2.19.1
+
diff --git a/recipes-core/runx/runx/0001-make-kernel-bump-to-v5.4.104-for-gcc10-fixes.patch b/recipes-core/runx/runx/0001-make-kernel-bump-to-v5.4.104-for-gcc10-fixes.patch
new file mode 100644
index 00000000..c6f4443e
--- /dev/null
+++ b/recipes-core/runx/runx/0001-make-kernel-bump-to-v5.4.104-for-gcc10-fixes.patch
@@ -0,0 +1,28 @@
+From 9d9bb1883e3be291df737e159c93ffcab9e55b3a Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 26 Mar 2021 10:15:24 -0400
+Subject: [PATCH] make-kernel: bump to v5.4.104 for gcc10+ fixes
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ kernel/make-kernel | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kernel/make-kernel b/kernel/make-kernel
+index 4e80b3c..a679096 100755
+--- a/kernel/make-kernel
++++ b/kernel/make-kernel
+@@ -17,7 +17,7 @@ kernel_srcdir=$kernel_stuffdir/src
+ kernel_builddir=$kernel_stuffdir/build
+ kernel_out=$kernel_outpath/kernel
+
+-kernel_version=5.4
++kernel_version=5.4.104
+ kernel_name=linux-$kernel_version
+ kernel_tarball="$kernel_name".tar.xz
+ kernel_url=https://www.kernel.org/pub/linux/kernel/v5.x/"$kernel_tarball"
+--
+2.19.1
+
diff --git a/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch b/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch
new file mode 100644
index 00000000..798f616a
--- /dev/null
+++ b/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch
@@ -0,0 +1,85 @@
+From 7e3498ab7c375bd545de501920acffa77eb24120 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@xilinx.com>
+Date: Mon, 16 Dec 2019 20:42:04 -0800
+Subject: [PATCH] make-kernel: cross-compilation tweaks
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com>
+---
+ kernel/make-kernel | 41 +++++++++++++++++++++++++++++++++--------
+ 1 file changed, 33 insertions(+), 8 deletions(-)
+
+Index: git/kernel/make-kernel
+===================================================================
+--- git.orig/kernel/make-kernel
++++ git/kernel/make-kernel
+@@ -13,6 +13,7 @@
+
+ kernel_stuffdir=`readlink -f kernel`
+ kernel_outpath=$kernel_stuffdir/out
++kernel_srcdir=$kernel_stuffdir/src
+ kernel_builddir=$kernel_stuffdir/build
+ kernel_out=$kernel_outpath/kernel
+
+@@ -22,28 +23,52 @@
+ kernel_url=https://www.kernel.org/pub/linux/kernel/v5.x/"$kernel_tarball"
+ kernel_src_config="$kernel_stuffdir"/cutdown-config."$ARCH"
+ kernel_patchesdir="$kernel_stuffdir"/patches
+-kernel_image="$kernel_builddir"/"$kernel_name"/arch/"$ARCH"/boot/"$image"
++kernel_image="$kernel_builddir"/arch/"$ARCH"/boot/"$image"
+
++echo "#########################"
++echo "kernel build summary:"
++echo " version: $kernel_version"
++echo " url: $kernel_url"
++echo " src dir: $kernel_srcdir"
++echo " out dir: $kernel_builddir"
++echo " artifacts: $kernel_out"
++echo " image: $image"
++echo " build vars: $build_vars"
++echo "#########################"
+
+-rm -rf $kernel_outpath
++if [ ! -e "$kernel_builddir/.config" ];
++then
++ rm -rf $kernel_buildir
++fi
+ mkdir -p $kernel_outpath
+ mkdir -p $kernel_builddir
++mkdir -p $kernel_srcdir
+
+ if [[ ! -f $kernel_builddir/$kernel_tarball ]]
+ then
++ echo "fetching the kernel .."
+ wget -O $kernel_builddir/$kernel_tarball --tries=20 $kernel_url
+ fi
+-if [[ ! -d $kernel_builddir/$kernel_name ]]
++
++if [[ ! -d $kernel_srcdir/$kernel_name ]]
+ then
+- tar --extract --xz --touch --file="$kernel_builddir/$kernel_tarball" --directory="$kernel_builddir"
+- cd $kernel_builddir/$kernel_name
++ echo "extracting the kernel ..."
++ echo " tar --extract --xz --touch --file=\"$kernel_builddir/$kernel_tarball\" --directory=\"$kernel_srcdir\""
++ tar --extract --xz --touch --file="$kernel_builddir/$kernel_tarball" --directory="$kernel_srcdir"
++ cd $kernel_srcdir/$kernel_name
+ for i in $kernel_patchesdir/*
+ do
+ patch -p1 < $i
+ done
+ fi
+-cd $kernel_builddir/$kernel_name
+-cp $kernel_src_config .config
+-make -j "$(getconf _NPROCESSORS_ONLN)" $image
++if [[ ! -f $kernel_builddir/.config ]]
++then
++ cp $kernel_src_config $kernel_builddir/.config
++fi
++cd $kernel_srcdir/$kernel_name
++
++echo "building the kernel ..."
++eval make O=$kernel_builddir $build_vars oldconfig
++eval make -j "$(getconf _NPROCESSORS_ONLN)" O=$kernel_builddir $build_vars $image
+
+ cp $kernel_image $kernel_out
diff --git a/recipes-core/runx/runx_git.bb b/recipes-core/runx/runx_git.bb
new file mode 100644
index 00000000..831360ba
--- /dev/null
+++ b/recipes-core/runx/runx_git.bb
@@ -0,0 +1,126 @@
+HOMEPAGE = "https://github.com/lf-edge/runx"
+SUMMARY = "runx stuff"
+DESCRIPTION = "Xen Runtime for OCI"
+
+SRCREV_runx = "edc9350a79ede0365066c9743080e3dc6430d602"
+
+KERNEL_SRC_VER="linux-5.4"
+KERNEL_URL_VER="v5.x"
+
+SRC_URI = "\
+ git://github.com/lf-edge/runx;nobranch=1;name=runx;protocol=https \
+ https://www.kernel.org/pub/linux/kernel/${KERNEL_URL_VER}/${KERNEL_SRC_VER}.tar.xz;destsuffix=git/kernel/build \
+ file://0001-make-kernel-cross-compilation-tweaks.patch \
+ file://0001-make-kernel-bump-to-v5.4.104-for-gcc10-fixes.patch \
+ file://0001-make-initrd-allow-externally-provided-busybox.patch \
+ "
+
+SRC_URI[md5sum] = "ce9b2d974d27408a61c53a30d3f98fb9"
+SRC_URI[sha256sum] = "bf338980b1670bca287f9994b7441c2361907635879169c64ae78364efc5f491"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=945fc9aa694796a6337395cc291ddd8c"
+
+S = "${WORKDIR}/git"
+PV = "v1.0-git${SRCREV_runx}"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "vmsep"
+
+inherit pkgconfig
+# for the kernel build
+inherit kernel-arch
+
+# we have a busybox bbappend that makes /bin available to the
+# sysroot, and hence gets us the target binary that we need
+DEPENDS = "busybox-initrd go-build"
+DEPENDS += "resolvconf"
+
+# for the kernel build phase
+DEPENDS += "openssl-native coreutils-native util-linux-native xz-native bc-native"
+DEPENDS += "elfutils-native"
+DEPENDS += "qemu-native bison-native"
+
+RDEPENDS:${PN} += " jq bash"
+RDEPENDS:${PN} += " xen-tools-xl go-build socat daemonize"
+RDEPENDS:${PN} += " qemu-system-i386 ca-certificates qemu qemu-keymaps"
+
+RUNX_USE_INTERNAL_BUSYBOX ?= ""
+
+do_compile() {
+ # we'll need this for the initrd later, so lets error if it isn't what
+ # we expect (statically linked)
+ file ${STAGING_DIR_HOST}/bin/busybox.nosuid
+
+ # prep steps to short circuit some of make-kernel's fetching and
+ # building.
+ mkdir -p ${S}/kernel/build
+ mkdir -p ${S}/kernel/src
+ cp ${DL_DIR}/${KERNEL_SRC_VER}.tar.xz ${S}/kernel/build/
+
+ # In the future, we might want to link the extracted kernel source (if
+ # we move patches to recipe space, but for now, we need make-kernel to
+ # extract a copy and possibly patch it.
+ # ln -sf ${WORKDIR}/${KERNEL_SRC_VER} ${S}/kernel/src/
+
+ # build the kernel
+ echo "[INFO]: runx: building the kernel"
+
+ export KERNEL_CC="${KERNEL_CC}"
+ export KERNEL_LD="${KERNEL_LD}"
+ export ARCH="${ARCH}"
+ export HOSTCC="${BUILD_CC} ${BUILD_CFLAGS} ${BUILD_LDFLAGS}"
+ export HOSTCPP="${BUILD_CPP}"
+ export CROSS_COMPILE="${CROSS_COMPILE}"
+ export build_vars="HOSTCC='$HOSTCC' STRIP='$STRIP' OBJCOPY='$OBJCOPY' ARCH=$ARCH CC='$KERNEL_CC' LD='$KERNEL_LD'"
+
+ unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE
+
+ # We want make-kernel, to have the following build lines:
+ # make O=$kernel_builddir HOSTCC="${HOSTCC}" ARCH=$ARCH oldconfig
+ # make -j4 O=$kernel_builddir HOSTCC="${HOSTCC}" STRIP="$STRIP" OBJCOPY="$OBJCOPY" ARCH=$ARCH CC="$KERNEL_CC" LD="$KERNEL_LD" $image
+ ${S}/kernel/make-kernel
+
+ # construct the initrd
+ bbnote "runx: constructing the initrd"
+ if [ -z "${RUNX_USE_INTERNAL_BUSYBOX}" ]; then
+ bbnote "runx: using external busybox"
+ cp ${STAGING_DIR_HOST}/bin/busybox.nosuid ${WORKDIR}/busybox
+ export QEMU_USER="`which qemu-${HOST_ARCH}` -L ${STAGING_BASELIBDIR}/.."
+ export BUSYBOX="${WORKDIR}/busybox"
+ export busybox="${WORKDIR}/busybox"
+ export CROSS_COMPILE="${TARGET_PREFIX}"
+ else
+ bbnote "runx: using internal busybox"
+ export CC="${CC}"
+ export LD="${LD}"
+ export CFLAGS="${HOST_CC_ARCH}${TOOLCHAIN_OPTIONS} ${CFLAGS}"
+ export LDFLAGS="${TOOLCHAIN_OPTIONS} ${HOST_LD_ARCH} ${LDFLAGS}"
+ export HOSTCFLAGS="${BUILD_CFLAGS} ${BUILD_LDFLAGS}"
+ export CROSS_COMPILE="${TARGET_PREFIX}"
+ fi
+ ${S}/initrd/make-initrd
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 ${S}/runX ${D}${bindir}
+
+ install -d ${D}${datadir}/runX
+ install -m 755 ${S}/kernel/out/kernel ${D}/${datadir}/runX
+ install -m 755 ${S}/initrd/out/initrd ${D}/${datadir}/runX
+ install -m 755 ${S}/files/start ${D}/${datadir}/runX
+ install -m 755 ${S}/files/create ${D}/${datadir}/runX
+ install -m 755 ${S}/files/state ${D}/${datadir}/runX
+ install -m 755 ${S}/files/delete ${D}/${datadir}/runX
+ install -m 755 ${S}/files/serial_start ${D}/${datadir}/runX
+
+
+}
+
+deltask compile_ptest_base
+
+FILES:${PN} += "${bindir}/* ${datadir}/runX/*"
+
+INHIBIT_PACKAGE_STRIP = "1"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
diff --git a/recipes-core/sysvinit/files/getty-wrapper b/recipes-core/sysvinit/files/getty-wrapper
new file mode 100644
index 00000000..236e29e7
--- /dev/null
+++ b/recipes-core/sysvinit/files/getty-wrapper
@@ -0,0 +1,8 @@
+#!/bin/sh
+if test -c /dev/"$2"
+then
+ exec /sbin/getty $*
+else
+ exec sleep 3600d
+fi
+
diff --git a/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend b/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
index 8c088325..1705cbc4 100644
--- a/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
+++ b/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
@@ -1 +1,2 @@
require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'sysvinit-inittab_xen.inc', '', d)}
+require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'sysvinit-inittab_virtualization.inc', '', d)}
diff --git a/recipes-core/sysvinit/sysvinit-inittab_virtualization.inc b/recipes-core/sysvinit/sysvinit-inittab_virtualization.inc
new file mode 100644
index 00000000..bf52da0e
--- /dev/null
+++ b/recipes-core/sysvinit/sysvinit-inittab_virtualization.inc
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
+
+SRC_URI += "file://getty-wrapper"
+
+do_install:append() {
+ install -d ${D}${base_sbindir}
+ install -m 0755 ${WORKDIR}/getty-wrapper ${D}${base_sbindir}/getty-wrapper
+}
+FILES:${PN} += "${base_sbindir}/getty-wrapper"
diff --git a/recipes-core/sysvinit/sysvinit-inittab_xen.inc b/recipes-core/sysvinit/sysvinit-inittab_xen.inc
index 9d0589ce..724f47dc 100644
--- a/recipes-core/sysvinit/sysvinit-inittab_xen.inc
+++ b/recipes-core/sysvinit/sysvinit-inittab_xen.inc
@@ -1,4 +1,10 @@
-do_install_append() {
- echo "" >> ${D}${sysconfdir}/inittab
- echo "X0:12345:respawn:/sbin/getty 115200 hvc0" >> ${D}${sysconfdir}/inittab
+
+
+do_install:append() {
+ # if SERIAL_CONSOLES contains hvc0, it is already added in inittab so do
+ # not add it twice
+ if echo "${SERIAL_CONSOLES}" | grep -vq "hvc0"; then
+ echo "" >> ${D}${sysconfdir}/inittab
+ echo "X0:12345:respawn:${base_sbindir}/getty-wrapper 115200 hvc0" >> ${D}${sysconfdir}/inittab
+ fi
}
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app b/recipes-demo/helloworld-flask/helloworld-flask/flask-app
new file mode 100755
index 00000000..15ecde93
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app
@@ -0,0 +1,21 @@
+#!/usr/bin/python3
+
+# Example flask application for containerization
+#
+# Copyright (C) 2021 Bruce Ashfield <bruce.ashfield@gmail.com>
+# License: MIT (see COPYING.MIT at the root of the repository for terms)
+
+from flask import Flask
+
+app = Flask(__name__)
+
+@app.route('/yocto/', methods=['GET', 'POST'])
+def welcome():
+ return "Hello from Yocto!"
+
+@app.route('/oe/', methods=['GET', 'POST'])
+def welcometooe():
+ return "Hello from OpenEmbedded!"
+
+if __name__ == '__main__':
+ app.run(host='0.0.0.0', port=9000)
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml
new file mode 100644
index 00000000..f2c8bbe2
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app-service.yaml
@@ -0,0 +1,32 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: @NAME@
+spec:
+ selector:
+ matchLabels:
+ app: @APPNAME@
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: @APPNAME@
+ spec:
+ containers:
+ - name: @CONTAINERNAME@
+ image: @CONTAINERIMAGE@
+ ports:
+ - containerPort: @CONTAINERPORT@
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: yocto-flask-service
+spec:
+ ports:
+ - port: @EXTERNALPORT@
+ targetPort: @CONTAINERPORT@
+ name: http
+ selector:
+ app: @APPNAME@
+
diff --git a/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml
new file mode 100644
index 00000000..85c0362e
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask/flask-app.yaml
@@ -0,0 +1,12 @@
+apiVersion: v1
+kind: Pod
+metadata:
+ name: @NAME@
+spec:
+ containers:
+ - name: @CONTAINERNAME@
+ image: @CONTAINERIMAGE@
+ ports:
+ - containerPort: @CONTAINERPORT@
+
+
diff --git a/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb
new file mode 100644
index 00000000..896e45fd
--- /dev/null
+++ b/recipes-demo/helloworld-flask/helloworld-flask_0.1.bb
@@ -0,0 +1,44 @@
+DESCRIPTION = "Demo flask application"
+HOMEPAGE = "https://yoctoproject.org"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+SRC_URI = "file://flask-app \
+ file://flask-app.yaml \
+ file://flask-app-service.yaml"
+
+DEPLOY_TYPE ?= "pod"
+
+NAME ?= "demo"
+APPNAME ?= "yocto-app"
+CONTAINERNAME ?= "yocto-container"
+CONTAINERIMAGE ?= "zeddii/app-container:latest"
+CONTAINERPORT ?= "9000"
+EXTERNALPORT ?= "10000"
+
+do_install() {
+
+ for tgt in flask-app.yaml flask-app-service.yaml; do
+ sed -i 's%\@NAME\@%${NAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@APPNAME\@%${APPNAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERNAME\@%${CONTAINERNAME}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERIMAGE\@%${CONTAINERIMAGE}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@CONTAINERPORT\@%${CONTAINERPORT}%g' ${WORKDIR}/$tgt
+ sed -i 's%\@EXTERNALPORT\@%${EXTERNALPORT}%g' ${WORKDIR}/$tgt
+ done
+
+ install -d ${D}${bindir}/
+ install -m 755 ${WORKDIR}/flask-app ${D}${bindir}/
+
+ install -d ${D}${sysconfdir}/deploy
+ install -m 644 ${WORKDIR}/flask-app.yaml ${D}${sysconfdir}/
+ install -m 644 ${WORKDIR}/flask-app-service.yaml ${D}${sysconfdir}/
+}
+
+RDEPENDS:${PN} += "python3-core python3-flask"
+
+PACKAGES:prepend = "${PN}-deploy "
+FILES:${PN}-deploy = "${sysconfdir}/*"
+
+# this rdepends should be conditional on a debug PACKAGECONFIG
+# RDEPENDS:${PN} += "busybox"
diff --git a/recipes-demo/images/app-container-curl.bb b/recipes-demo/images/app-container-curl.bb
new file mode 100644
index 00000000..51451300
--- /dev/null
+++ b/recipes-demo/images/app-container-curl.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Curl Application container image"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+IMAGE_FSTYPES = "container oci"
+inherit image
+inherit image-oci
+
+IMAGE_FEATURES = ""
+IMAGE_LINGUAS = ""
+NO_RECOMMENDATIONS = "1"
+
+IMAGE_INSTALL = " \
+ base-files \
+ base-passwd \
+ netbase \
+ ${CONTAINER_SHELL} \
+"
+
+# If the following is configured in local.conf (or the distro):
+# PACKAGE_EXTRA_ARCHS:append = " container-dummy-provides"
+#
+# it has been explicitly # indicated that we don't want or need a shell, so we'll
+# add the dummy provides.
+#
+# This is required, since there are postinstall scripts in base-files and base-passwd
+# that reference /bin/sh and we'll get a rootfs error if there's no shell or no dummy
+# provider.
+CONTAINER_SHELL ?= "${@bb.utils.contains('PACKAGE_EXTRA_ARCHS', 'container-dummy-provides', 'container-dummy-provides', 'busybox', d)}"
+
+# Allow build with or without a specific kernel
+IMAGE_CONTAINER_NO_DUMMY = "1"
+
+# Workaround /var/volatile for now
+ROOTFS_POSTPROCESS_COMMAND += "rootfs_fixup_var_volatile ; "
+rootfs_fixup_var_volatile () {
+ install -m 1777 -d ${IMAGE_ROOTFS}/${localstatedir}/volatile/tmp
+ install -m 755 -d ${IMAGE_ROOTFS}/${localstatedir}/volatile/log
+}
+
+OCI_IMAGE_ENTRYPOINT = "curl"
+OCI_IMAGE_TAG = "easy"
+OCI_IMAGE_ENTRYPOINT_ARGS = "http://localhost:80"
+CONTAINER_SHELL = "busybox"
+
+IMAGE_INSTALL:append = "curl"
diff --git a/recipes-demo/images/app-container.bb b/recipes-demo/images/app-container.bb
new file mode 100644
index 00000000..22d2ab9f
--- /dev/null
+++ b/recipes-demo/images/app-container.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Basic Application container image"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+#include container-base.bb
+
+OCI_IMAGE_ENTRYPOINT = "/usr/bin/flask-app"
+CONTAINER_SHELL = "busybox"
+
+IMAGE_INSTALL:append = "helloworld-flask"
+
+IMAGE_FSTYPES = "container oci"
+inherit image
+inherit image-oci
+
+IMAGE_FEATURES = ""
+IMAGE_LINGUAS = ""
+NO_RECOMMENDATIONS = "1"
+
+IMAGE_INSTALL = " \
+ base-files \
+ base-passwd \
+ netbase \
+ ${CONTAINER_SHELL} \
+"
+
+# If the following is configured in local.conf (or the distro):
+# PACKAGE_EXTRA_ARCHS:append = " container-dummy-provides"
+#
+# it has been explicitly # indicated that we don't want or need a shell, so we'll
+# add the dummy provides.
+#
+# This is required, since there are postinstall scripts in base-files and base-passwd
+# that reference /bin/sh and we'll get a rootfs error if there's no shell or no dummy
+# provider.
+CONTAINER_SHELL ?= "${@bb.utils.contains('PACKAGE_EXTRA_ARCHS', 'container-dummy-provides', 'container-dummy-provides', 'busybox', d)}"
+
+# Allow build with or without a specific kernel
+IMAGE_CONTAINER_NO_DUMMY = "1"
+
+# Workaround /var/volatile for now
+ROOTFS_POSTPROCESS_COMMAND += "rootfs_fixup_var_volatile ; "
+rootfs_fixup_var_volatile () {
+ install -m 1777 -d ${IMAGE_ROOTFS}/${localstatedir}/volatile/tmp
+ install -m 755 -d ${IMAGE_ROOTFS}/${localstatedir}/volatile/log
+}
diff --git a/recipes-devtools/go/compose-file_git.bb b/recipes-devtools/go/compose-file_git.bb
index bcf8c3d2..7fedc407 100644
--- a/recipes-devtools/go/compose-file_git.bb
+++ b/recipes-devtools/go/compose-file_git.bb
@@ -7,10 +7,10 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=9cd86830b557232ce55e2a6b4
SRCNAME = "compose-file"
PKG_NAME = "github.com/aanand/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
SRCREV = "a3e58764f50597b6217fec07e9bff7225c4a1719"
-PV = "3.0+git${SRCPV}"
+PV = "3.0+git"
S = "${WORKDIR}/git"
@@ -36,6 +36,6 @@ go_compose_file_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-CLEANBROKEN = "1" \ No newline at end of file
+CLEANBROKEN = "1"
diff --git a/recipes-devtools/go/go-build/0001-build-use-instead-of-go.patch b/recipes-devtools/go/go-build/0001-build-use-instead-of-go.patch
new file mode 100644
index 00000000..eb634f3d
--- /dev/null
+++ b/recipes-devtools/go/go-build/0001-build-use-instead-of-go.patch
@@ -0,0 +1,32 @@
+From 4db28c98481056c41097f808335c37e8517fe485 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Fri, 7 Aug 2020 23:39:18 -0400
+Subject: [PATCH] build: use ${GO} instead of 'go'
+
+While we can get away with 'go' if the host/target arch match, the
+new go-binary toolchain blows up in a cross compile situation.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ gobuild/Makefile | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+Index: git/src/import/gobuild/Makefile
+===================================================================
+--- git.orig/src/import/gobuild/Makefile
++++ git/src/import/gobuild/Makefile
+@@ -19,10 +19,10 @@
+
+ ${GODEPPATHS}:
+ mkdir -p ${GOSRC}
+- GOPATH=${GOPATH} go get -d $(subst ${GOSRC}/,,$@)
++ GOPATH=${GOPATH} ${GO} get -d $(subst ${GOSRC}/,,$@)
+
+ ${BIN}: ${GODEPPATHS} $(filter %/$@.go, ${MAIN})
+- GOPATH=${GOPATH} ${ARCH} go build $(filter %/$@.go, ${MAIN})
++ GOPATH=${GOPATH} ${ARCH} ${GO} build -trimpath $(filter %/$@.go, ${MAIN})
+
+ clean:
+ rm -f ${BIN}
diff --git a/recipes-devtools/go/go-build_git.bb b/recipes-devtools/go/go-build_git.bb
new file mode 100644
index 00000000..75ea40a8
--- /dev/null
+++ b/recipes-devtools/go/go-build_git.bb
@@ -0,0 +1,61 @@
+HOMEPAGE = "https://github.com/lf-edge/runx"
+SUMMARY = "console for runx"
+DESCRIPTION = "Xen Runtime for OCI"
+
+SRCREV_runx = "f24efd33fb18469e9cfe4d1bfe8e2c90ec8c4e93"
+SRCREV_runc = "1e7bb5b773162b57333d57f612fd72e3f8612d94"
+
+SRCREV_FORMAT = "runx_runc"
+SRC_URI = "\
+ git://github.com/lf-edge/runx;nobranch=1;name=runx;protocol=https \
+ git://github.com/opencontainers/runc;branch=release-1.1;name=runc;protocol=https;destsuffix=git/src/import/gobuild/go/src/github.com/opencontainers/runc \
+ file://0001-build-use-instead-of-go.patch \
+ "
+SRC_URI[md5sum] = "0d701ac1e2a67d47ce7127432df2c32b"
+SRC_URI[sha256sum] = "5a26478906d5005f4f809402e981518d2b8844949199f60c4b6e1f986ca2a769"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=945fc9aa694796a6337395cc291ddd8c"
+
+S = "${WORKDIR}/git"
+PV = "0.1-git${SRCREV_runx}"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "vmsep"
+GO_PARALLEL_BUILD ?= "${@oe.utils.parallel_make_argument(d, '-p %d')}"
+
+inherit pkgconfig
+
+GO_IMPORT = "import"
+inherit go
+
+RDEPENDS:${PN}-dev = "bash"
+
+do_compile() {
+
+ export GOARCH="${TARGET_GOARCH}"
+ cd ${S}/src/import/gobuild
+
+ # Build the target binaries
+ export GOARCH="${TARGET_GOARCH}"
+ # Pass the needed cflags/ldflags so that cgo can find the needed headers files and libraries
+ export CGO_ENABLED="1"
+ export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CFLAGS=""
+ export LDFLAGS=""
+ export CC="${CC}"
+ export LD="${LD}"
+ export GOBIN=""
+ export GO111MODULE=off
+
+ oe_runmake GO=${GO}
+}
+
+do_install() {
+
+ install -d ${D}${datadir}/runX
+ install -m 755 ${B}/src/import/gobuild/serial_fd_handler ${D}${datadir}/runX/
+}
+
+FILES:${PN} += "${datadir}/runX/*"
diff --git a/recipes-devtools/go/go-capability_git.bb b/recipes-devtools/go/go-capability_git.bb
index 8524af62..c2562474 100644
--- a/recipes-devtools/go/go-capability_git.bb
+++ b/recipes-devtools/go/go-capability_git.bb
@@ -7,10 +7,12 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=a7304f5073e7be4ba7bffabbf9f2bbca"
SRCNAME = "gocapability"
PKG_NAME = "github.com/syndtr/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "2c00daeb6c3b45114c80ac44119e7b8801fdd852"
-PV = "0.0+git${SRCPV}"
+PV = "0.0+git"
+
+inherit meta-virt-depreciated-warning
S = "${WORKDIR}/git"
@@ -26,4 +28,4 @@ go_capability_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-cli_git.bb b/recipes-devtools/go/go-cli_git.bb
index 434594c9..8a4992bd 100644
--- a/recipes-devtools/go/go-cli_git.bb
+++ b/recipes-devtools/go/go-cli_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=ed9b539ed65d73926f30ff1f1587dc44"
SRCNAME = "cli"
PKG_NAME = "github.com/codegangsta/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "27ecc97192df1bf053a22b04463f2b51b8b8373e"
-PV = "1.1.0+git${SRCPV}"
+PV = "1.1.0+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_cli_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-connections_git.bb b/recipes-devtools/go/go-connections_git.bb
index 5d071b0a..33bb83bf 100644
--- a/recipes-devtools/go/go-connections_git.bb
+++ b/recipes-devtools/go/go-connections_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=04424bc6f5a5be60691b9824d
SRCNAME = "go-connections"
PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
SRCREV = "4ccf312bf1d35e5dbda654e57a9be4c3f3cd0366"
-PV = "0.2.1+git${SRCPV}"
+PV = "0.2.1+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
# NO-OP the do compile rule because this recipe is source only.
do_compile() {
}
@@ -36,4 +38,4 @@ go_connections_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-context_git.bb b/recipes-devtools/go/go-context_git.bb
index 15f6a8dd..02f57875 100644
--- a/recipes-devtools/go/go-context_git.bb
+++ b/recipes-devtools/go/go-context_git.bb
@@ -2,17 +2,23 @@ DESCRIPTION = "A golang registry for global request variables."
HOMEPAGE = "https://github.com/gorilla/context"
SECTION = "devel/go"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c30eee78985cf2584cded5f89ba3d787"
SRCNAME = "context"
PKG_NAME = "github.com/gorilla/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=main;protocol=https"
-SRCREV = "14f550f51af52180c2eefed15e5fd18d63c0a64a"
+SRCREV = "1cbd4c16de64273a6e63fc710b0d89bfad72cd32"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
+do_compile() {
+ true
+}
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -25,4 +31,6 @@ go_context_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+
+CLEANBROKEN = "1"
diff --git a/recipes-devtools/go/go-dbus_git.bb b/recipes-devtools/go/go-dbus_git.bb
index 23908619..bc8691c4 100644
--- a/recipes-devtools/go/go-dbus_git.bb
+++ b/recipes-devtools/go/go-dbus_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=09042bd5c6c96a2b9e45ddf1bc517eed"
SRCNAME = "dbus"
PKG_NAME = "github.com/godbus/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "5f6efc7ef2759c81b7ba876593971bfce311eab3"
-PV = "4.0.0+git${SRCPV}"
+PV = "4.0.0+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_dbus_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-distribution_git.bb b/recipes-devtools/go/go-distribution_git.bb
index 9e3f2093..598df964 100644
--- a/recipes-devtools/go/go-distribution_git.bb
+++ b/recipes-devtools/go/go-distribution_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=d2794c0df5b907fdace235a61
SRCNAME = "distribution"
PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;branch=docker/1.13;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME}.git;branch=docker/1.13;destsuffix=git/src/${PKG_NAME};protocol=https"
SRCREV = "28602af35aceda2f8d571bad7ca37a54cf0250bc"
-PV = "2.6.0+git${SRCPV}"
+PV = "2.6.0+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
# NO-OP the do compile rule because this recipe is source only.
do_compile() {
}
@@ -36,4 +38,4 @@ go_distribution_digeset_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-fsnotify_git.bb b/recipes-devtools/go/go-fsnotify_git.bb
index 0826aa7f..b934ae9a 100644
--- a/recipes-devtools/go/go-fsnotify_git.bb
+++ b/recipes-devtools/go/go-fsnotify_git.bb
@@ -2,18 +2,20 @@ DESCRIPTION = "A golang registry for global request variables."
HOMEPAGE = "https://github.com/go-fsnotify/fsnotify"
SECTION = "devel/go"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c38914c9a7ab03bb2b96d4baaee10769"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=68f2948d3c4943313d07e084a362486c"
SRCNAME = "fsnotify"
PKG_NAME = "github.com/fsnotify/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=main;protocol=https"
-SRCREV = "836bfd95fecc0f1511dd66bdbf2b5b61ab8b00b6"
-PV = "1.2.11+git${SRCPV}"
+SRCREV = "af855d7e6014ec848882bb2ed7d40d536872d275"
+PV = "v1.5.1+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_fsnotify_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-libtrust_git.bb b/recipes-devtools/go/go-libtrust_git.bb
index 55659464..17199856 100644
--- a/recipes-devtools/go/go-libtrust_git.bb
+++ b/recipes-devtools/go/go-libtrust_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
SRCNAME = "libtrust"
PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "9cbd2a1374f46905c68a4eb3694a130610adc62a"
-PV = "0.0+git${SRCPV}"
+PV = "0.0+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_libtrust_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-logrus_git.bb b/recipes-devtools/go/go-logrus_git.bb
index aa89033e..1826b893 100644
--- a/recipes-devtools/go/go-logrus_git.bb
+++ b/recipes-devtools/go/go-logrus_git.bb
@@ -6,14 +6,16 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=8dadfef729c08ec4e631c4f6fc5d43a0"
SRCNAME = "logrus"
-PKG_NAME = "github.com/Sirupsen/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+PKG_NAME = "github.com/sirupsen/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME};branch=master;protocol=https"
SRCREV = "d26492970760ca5d33129d2d799e34be5c4782eb"
-PV = "0.11.0+git${SRCPV}"
+PV = "0.11.0+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_logrus_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-md2man_git.bb b/recipes-devtools/go/go-md2man_git.bb
index cc8dd5c3..1d96bb1b 100644
--- a/recipes-devtools/go/go-md2man_git.bb
+++ b/recipes-devtools/go/go-md2man_git.bb
@@ -9,12 +9,15 @@ BBCLASSEXTEND = "native"
GO_IMPORT = "github.com/cpuguy83/go-md2man"
#GO_INSTALL = "${GO_IMPORT}/bin/go-md2man"
-SRC_URI = "git://${GO_IMPORT}.git"
+SRC_URI = "git://${GO_IMPORT}.git;branch=master;protocol=https"
SRCREV = "f79a8a8ca69da163eee19ab442bedad7a35bba5a"
-PV = "1.0.10+git${SRCPV}"
+PV = "1.0.10+git"
S = "${WORKDIR}/git"
inherit go
+do_compile:prepend() {
+ export GO111MODULE=off
+}
diff --git a/recipes-devtools/go/go-metalinter_git.bb b/recipes-devtools/go/go-metalinter_git.bb
index 668b431a..def3d063 100644
--- a/recipes-devtools/go/go-metalinter_git.bb
+++ b/recipes-devtools/go/go-metalinter_git.bb
@@ -9,10 +9,10 @@ BBCLASSEXTEND = "native"
SRCNAME = "gometalinter"
PKG_NAME = "github.com/alecthomas/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "e8d801238da6f0dfd14078d68f9b53fa50a7eeb5"
-PV = "0.0+git${SRCPV}"
+PV = "0.0+git"
S = "${WORKDIR}/git"
@@ -21,4 +21,4 @@ do_install() {
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-mux_git.bb b/recipes-devtools/go/go-mux_git.bb
index 7a2025a0..0958617a 100644
--- a/recipes-devtools/go/go-mux_git.bb
+++ b/recipes-devtools/go/go-mux_git.bb
@@ -2,17 +2,22 @@ DESCRIPTION = "A powerful URL router and dispatcher for golang."
HOMEPAGE = "https://github.com/gorilla/mux"
SECTION = "devel/go"
LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c30eee78985cf2584cded5f89ba3d787"
SRCNAME = "mux"
PKG_NAME = "github.com/gorilla/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=main;protocol=https"
-SRCREV = "136d54f81f00414c45c3c68dd47e98cc97519c5e"
+SRCREV = "85123bf20e069b156415b871dea10517f6a8938a"
+
+inherit meta-virt-depreciated-warning
S = "${WORKDIR}/git"
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -25,4 +30,4 @@ go_mux_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-patricia_git.bb b/recipes-devtools/go/go-patricia_git.bb
index 8c1e10d9..c05da591 100644
--- a/recipes-devtools/go/go-patricia_git.bb
+++ b/recipes-devtools/go/go-patricia_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=9949b99212edd6b1e24ce702376c3baf"
SRCNAME = "go-patricia"
PKG_NAME = "github.com/tchap/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "666120de432aea38ab06bd5c818f04f4129882c9"
-PV = "2.2.6+git${SRCPV}"
+PV = "2.2.6+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -26,4 +28,4 @@ go_patricia_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-pty_git.bb b/recipes-devtools/go/go-pty_git.bb
index bc94b317..d6aa95f6 100644
--- a/recipes-devtools/go/go-pty_git.bb
+++ b/recipes-devtools/go/go-pty_git.bb
@@ -1,18 +1,20 @@
DESCRIPTION = "PTY interface for Go"
-HOMEPAGE = "https://github.com/kr/pty"
+HOMEPAGE = "https://github.com/creack/pty"
SECTION = "devel/go"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://License;md5=93958070863d769117fa33b129020050"
SRCNAME = "pty"
-PKG_NAME = "github.com/kr/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+PKG_NAME = "github.com/creack/${SRCNAME}"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "05017fcccf23c823bfdea560dcc958a136e54fb7"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -25,4 +27,4 @@ go_pty_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/go-systemd_git.bb b/recipes-devtools/go/go-systemd_git.bb
index 0f89c0f8..e7e97b9e 100644
--- a/recipes-devtools/go/go-systemd_git.bb
+++ b/recipes-devtools/go/go-systemd_git.bb
@@ -7,15 +7,17 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=19cbd64715b51267a47bf3750cc6a8a5"
SRCNAME = "systemd"
PKG_NAME = "github.com/coreos/go-${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=main;protocol=https"
SRCREV = "b4a58d95188dd092ae20072bac14cece0e67c388"
-PV = "4+git${SRCPV}"
+PV = "4+git"
-RDEPENDS_${PN} += "bash"
+RDEPENDS:${PN} += "bash"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
do_install() {
install -d ${D}${prefix}/local/go/src/${PKG_NAME}
cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
@@ -28,4 +30,4 @@ go_systemd_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/go/grpc-go_git.bb b/recipes-devtools/go/grpc-go_git.bb
index 48c42499..7989c02f 100644
--- a/recipes-devtools/go/grpc-go_git.bb
+++ b/recipes-devtools/go/grpc-go_git.bb
@@ -1,16 +1,16 @@
DESCRIPTION = "The Go language implementation of gRPC. HTTP/2 based RPC"
HOMEPAGE = "https://github.com/grpc/grpc-go"
SECTION = "devel/go"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=a4bad33881612090c6035d8393175996"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCNAME = "grpc-go"
PKG_NAME = "google.golang.org/grpc"
-SRC_URI = "git://github.com/grpc/${SRCNAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://github.com/grpc/${SRCNAME}.git;destsuffix=git/src/${PKG_NAME};branch=v1.59.x;protocol=https"
-SRCREV = "777daa17ff9b5daef1cfdf915088a2ada3332bf0"
-PV = "1.4.0+git${SRCPV}"
+SRCREV = "7765221f4bf6104973db7946d56936cf838cad46"
+PV = "1.59.0+git"
S = "${WORKDIR}/git"
@@ -36,6 +36,10 @@ go_grpc_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += " \
+FILES:${PN} += " \
${prefix}/local/go/src/${PKG_NAME}/* \
"
+
+# some CVEs are reported with "cpe:2.3:a:grpc:grpc:*:*:*:*:*:go:*:*"
+# it's better to have false positives than false negatives
+CVE_PRODUCT += "grpc"
diff --git a/recipes-devtools/go/notary_git.bb b/recipes-devtools/go/notary_git.bb
index 9cfb46ea..ace7174d 100644
--- a/recipes-devtools/go/notary_git.bb
+++ b/recipes-devtools/go/notary_git.bb
@@ -7,13 +7,15 @@ LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=3596b980bb036e0875174ed15
SRCNAME = "notary"
PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
+SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME};branch=master;protocol=https"
SRCREV = "d6e1431feb32348e0650bf7551ac5cffd01d857b"
-PV = "0.6.1+git${SRCPV}"
+PV = "0.6.1+git"
S = "${WORKDIR}/git"
+inherit meta-virt-depreciated-warning
+
# NO-OP the do compile rule because this recipe is source only.
do_compile() {
}
@@ -36,4 +38,4 @@ go_notary_sysroot_preprocess () {
cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
}
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
+FILES:${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/recipes-devtools/python/gunicorn_19.1.1.bb b/recipes-devtools/python/gunicorn_20.0.4.bb
index 5c8ea484..41c909c5 100644
--- a/recipes-devtools/python/gunicorn_19.1.1.bb
+++ b/recipes-devtools/python/gunicorn_20.0.4.bb
@@ -6,10 +6,11 @@ DESCRIPTION = "\
simply implemented, light on server resource usage, and fairly speedy. \
"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=19a2e253a273e390cd1b91d19b6ee236"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=f75f3fb94cdeab1d607e2adaa6077752"
SRC_URI = "https://pypi.python.org/packages/source/g/gunicorn/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "eaa72bff5341c05169b76ce3dcbb8140"
-SRC_URI[sha256sum] = "82715511fb6246fad4ba66d812eb93416ae8371b464fa88bf3867c9c177daa14"
-inherit setuptools
+SRC_URI[md5sum] = "543669fcbb5739ee2af77184c5e571a1"
+SRC_URI[sha256sum] = "1904bb2b8a43658807108d59c3f3d56c2b6121a701161de0ddf9ad140073c626"
+
+inherit setuptools3
diff --git a/recipes-devtools/python/python-backports-lzma/fix_paths.patch b/recipes-devtools/python/python-backports-lzma/fix_paths.patch
deleted file mode 100644
index c2b374f6..00000000
--- a/recipes-devtools/python/python-backports-lzma/fix_paths.patch
+++ /dev/null
@@ -1,17 +0,0 @@
----
- setup.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/setup.py
-+++ b/setup.py
-@@ -32,8 +32,8 @@
- extens = [Extension('backports/lzma/_lzma',
- ['backports/lzma/_lzmamodule.c'],
- libraries = ['lzma'],
-- include_dirs = [os.path.join(home, 'include'), '/opt/local/include', '/usr/local/include'],
-- library_dirs = [os.path.join(home, 'lib'), '/opt/local/lib', '/usr/local/lib']
-+ include_dirs = [],
-+ library_dirs = []
- )]
-
- descr = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
diff --git a/recipes-devtools/python/python-backports-lzma_0.0.3.bb b/recipes-devtools/python/python-backports-lzma_0.0.3.bb
deleted file mode 100644
index a3586c04..00000000
--- a/recipes-devtools/python/python-backports-lzma_0.0.3.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-HOMEPAGE = "https://github.com/peterjc/backports.lzma"
-SUMMARY = "\
- Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
-DESCRIPTION = "\
- This is a backport of the 'lzma' module included in Python 3.3 or later \
- by Nadeem Vawda and Per Oyvind Karlsen, which provides a Python wrapper \
- for XZ Utils (aka LZMA Utils v2) by Igor Pavlov. \
- . \
- In order to compile this, you will need to install XZ Utils from \
- http://tukaani.org/xz/ \
- "
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=db4345b3b9524aabc8fe8c65f235c6b2"
-
-SRC_URI[md5sum] = "c3d109746aefa86268e500c07d7e8e0f"
-SRC_URI[sha256sum] = "bac58aec8d39ac3d22250840fb24830d0e4a0ef05ad8f3f09172dc0cc80cdbca"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-DEPENDS += "xz"
-
-SRCNAME = "backports.lzma"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI = "\
- https://pypi.python.org/packages/source/b/backports.lzma/${SRCNAME}-${PV}.tar.gz \
- file://fix_paths.patch \
- "
diff --git a/recipes-devtools/python/python-blinker_1.3.bb b/recipes-devtools/python/python-blinker_1.3.bb
deleted file mode 100644
index 8abb9c07..00000000
--- a/recipes-devtools/python/python-blinker_1.3.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/blinker"
-SUMMARY = "Fast, simple object-to-object and broadcast signaling"
-DESCRIPTION = " \
- Blinker provides a fast dispatching system that allows any number of \
- interested parties to subscribe to events, or “signals”. \
- . \
- Signal receivers can subscribe to specific senders or receive signals \
- sent by any sender. \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8baf1d53a00de619f60052e4752a89af"
-
-SRCNAME = "blinker"
-SRC_URI = "https://pypi.python.org/packages/source/b/blinker/${SRCNAME}-${PV}.tar.gz"
-SRC_URI[md5sum] = "66e9688f2d287593a0e698cd8a5fbc57"
-SRC_URI[sha256sum] = "6811010809262261e41ab7b92f3f6d23f35cf816fbec2bc05077992eebec6e2f"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
diff --git a/recipes-devtools/python/python-boto_2.34.0.bb b/recipes-devtools/python/python-boto_2.34.0.bb
deleted file mode 100644
index f94f3244..00000000
--- a/recipes-devtools/python/python-boto_2.34.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-HOMEPAGE = "https://github.com/boto/boto"
-SUMMARY = "Amazon Web Services API"
-DESCRIPTION = "\
- Boto is a Python package that provides interfaces to Amazon Web Services. \
- Currently, all features work with Python 2.6 and 2.7. Work is under way to \
- support Python 3.3+ in the same codebase. Modules are being ported one at \
- a time with the help of the open source community, so please check below \
- for compatibility with Python 3.3+. \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://setup.py;md5=182ef81236d3fac2c6ed8e8d3c988ec8"
-
-PR = "r0"
-SRCNAME = "boto"
-
-SRC_URI = "https://pypi.python.org/packages/source/b/boto/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "5556223d2d0cc4d06dd4829e671dcecd"
-SRC_URI[sha256sum] = "33baab022ecb803414ad0d6cf4041d010cfc2755ff8acc3bea7b32e77ba98be0"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
diff --git a/recipes-devtools/python/python-bugsnag_2.0.2.bb b/recipes-devtools/python/python-bugsnag_2.0.2.bb
deleted file mode 100644
index edf880fb..00000000
--- a/recipes-devtools/python/python-bugsnag_2.0.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-HOMEPAGE = "https://bugsnag.com/"
-SUMMARY = "Automatic error monitoring for django, flask, etc."
-DESCRIPTION = "\
- The official Python notifier for `Bugsnag <https://bugsnag.com/>`_. \
- Provides support for automatically capturing and sending exceptions \
- in your Django and other Python apps to Bugsnag, to help you find \
- and solve your bugs as fast as possible. \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=f6df6ab9f1b615a140ebb2a48f61bddc"
-
-PR = "r0"
-SRCNAME = "bugsnag"
-
-SRC_URI = "https://pypi.python.org/packages/source/b/bugsnag/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "e16360d86979890892cd388635f213e7"
-SRC_URI[sha256sum] = "093934b3cd1d36ba2b89cfe1673b14ba59043417fe500a02dbf6de0df43ea962"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-DEPENDS += "python-webob python-flask python-blinker"
-
diff --git a/recipes-devtools/python/python-docker-pycreds.inc b/recipes-devtools/python/python-docker-pycreds.inc
index ca0995f5..4bfa05fc 100644
--- a/recipes-devtools/python/python-docker-pycreds.inc
+++ b/recipes-devtools/python/python-docker-pycreds.inc
@@ -3,5 +3,5 @@ HOMEPAGE = "https://github.com/shin-/dockerpy-creds"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-SRC_URI[md5sum] = "2370ea3b62198b788a26231ab58844af"
-SRC_URI[sha256sum] = "8b0e956c8d206f832b06aa93a710ba2c3bcbacb5a314449c040b0b814355bbff"
+SRC_URI[md5sum] = "322f570cea6b4661c6ac335683988e18"
+SRC_URI[sha256sum] = "6ce3270bcaf404cc4c3e27e4b6c70d3521deae82fb508767870fdbf772d584d4"
diff --git a/recipes-devtools/python/python-docker-pycreds_0.3.0.bb b/recipes-devtools/python/python-docker-pycreds_0.3.0.bb
deleted file mode 100644
index 6dc45219..00000000
--- a/recipes-devtools/python/python-docker-pycreds_0.3.0.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit pypi setuptools
-require python-docker-pycreds.inc
-
diff --git a/recipes-devtools/python/python-docker-registry-core_2.0.3.bb b/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
deleted file mode 100644
index 7aa6825e..00000000
--- a/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/docker-registry-core"
-SUMMARY = "Docker registry core package"
-DESCRIPTION = "core package for docker-registry (drivers) developers"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRCNAME = "docker-registry-core"
-
-SRC_URI = "https://pypi.python.org/packages/source/d/docker-registry-core/${SRCNAME}-${PV}.tar.gz"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-SRC_URI[md5sum] = "610ef9395f2e9a2f91c68d13325fce7b"
-SRC_URI[sha256sum] = "347e804f1f35b28dbe27bf8d7a0b630fca29d684032139bf26e3940572360360"
-
-inherit setuptools
-
-DEPENDS += "\
- python-distribute \
- python-boto (= 2.34.0) \
- python-redis (= 2.10.3) \
- python-simplejson (= 3.6.2) \
- "
-
-# boto 2.34.0
-# redis 2.10.3
-# simplejson 3.6.2
-# setuptools 5.8
diff --git a/recipes-devtools/python/python-docker.inc b/recipes-devtools/python/python-docker.inc
deleted file mode 100644
index a0ba60b7..00000000
--- a/recipes-devtools/python/python-docker.inc
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "A Python library for the Docker Engine API."
-HOMEPAGE = "https://github.com/docker/docker-py"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=34f3846f940453127309b920eeb89660"
-
-SRC_URI[md5sum] = "02491d168c048cdb99cc20d0b352ea0f"
-SRC_URI[sha256sum] = "e9cc39e24905e67ba9e2df14c94488f5cf030fb72ae1c60de505ce5ea90503f7"
-
-RDEPENDS_${PN} += " \
- ${PYTHON_PN}-misc \
- ${PYTHON_PN}-six \
- ${PYTHON_PN}-docker-pycreds \
- ${PYTHON_PN}-requests \
- ${PYTHON_PN}-websocket-client \
-"
diff --git a/recipes-devtools/python/python-docker_3.4.0.bb b/recipes-devtools/python/python-docker_3.4.0.bb
deleted file mode 100644
index a9642543..00000000
--- a/recipes-devtools/python/python-docker_3.4.0.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-inherit pypi setuptools
-require python-docker.inc
-
-RDEPENDS_${PN} += " \
- python-backports-ssl \
- "
diff --git a/recipes-devtools/python/python-flask-cors_1.10.3.bb b/recipes-devtools/python/python-flask-cors_1.10.3.bb
deleted file mode 100644
index c39e9b26..00000000
--- a/recipes-devtools/python/python-flask-cors_1.10.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/Flask-Cors/1.10.3"
-SUMMARY = "A Flask extension adding a decorator for CORS support"
-DESCRIPTION = "\
- A Flask extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4784781a5ee9fed9c50272e733e07685"
-
-DEPENDS += "python-six python-flask"
-
-PR = "r0"
-SRCNAME = "Flask-Cors"
-
-SRC_URI = "https://pypi.python.org/packages/source/F/Flask-Cors/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4f3c75ace0f724d1de167bd73745c965"
-SRC_URI[sha256sum] = "9e6927aa0a46f314bca0ec63eb871cee898a162adfdd5b65224db7a008287423"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
diff --git a/recipes-devtools/python/python-flask_0.10.1.bb b/recipes-devtools/python/python-flask_0.10.1.bb
deleted file mode 100644
index 263e53d0..00000000
--- a/recipes-devtools/python/python-flask_0.10.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "A microframework based on Werkzeug, Jinja2 and good intentions"
-HOMEPAGE = "https://pypi.python.org/pypi/Flask/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=79aa8b7bc4f781210d6b5c06d6424cb0"
-
-PR = "r0"
-SRCNAME = "Flask"
-
-SRC_URI = "https://pypi.python.org/packages/source/F/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "378670fe456957eb3c27ddaef60b2b24"
-SRC_URI[sha256sum] = "4c83829ff83d408b5e1d4995472265411d2c414112298f2eb4b359d9e4563373"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-CLEANBROKEN = "1"
-
diff --git a/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch b/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
deleted file mode 100644
index 623d04f0..00000000
--- a/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From c2dc97478fcc3757e09d5d2997391960a8351d53 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Sun, 29 Mar 2015 22:34:28 -0400
-Subject: [PATCH] gevent: allow ssl v2 or v3 certificates
-
-Work around an issue with python 2.7 not always having SSLv3 available
-by allowing v2 or v3 certificates.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- gevent/ssl.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gevent/ssl.py b/gevent/ssl.py
-index ce6434718d1b..93c0d642da5f 100644
---- a/gevent/ssl.py
-+++ b/gevent/ssl.py
-@@ -383,7 +383,7 @@ def wrap_socket(sock, keyfile=None, certfile=None,
- ciphers=ciphers)
-
-
--def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
-+def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None):
- """Retrieve the certificate from the server at the specified address,
- and return it as a PEM-encoded string.
- If 'ca_certs' is specified, validate the server cert against it.
---
-1.9.1
-
diff --git a/recipes-devtools/python/python-gevent/libev-conf.patch b/recipes-devtools/python/python-gevent/libev-conf.patch
deleted file mode 100644
index 283705f8..00000000
--- a/recipes-devtools/python/python-gevent/libev-conf.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Due to differences in library locations, the cross compile test can fail because it can't run
-the conftest binary (dynamically linked). Building it statically instead.
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
----
- libev/configure | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/libev/configure
-+++ b/libev/configure
-@@ -2730,7 +2730,7 @@
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
--ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-+ac_link='$CC -static -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
diff --git a/recipes-devtools/python/python-gevent_1.0.1.bb b/recipes-devtools/python/python-gevent_1.0.1.bb
deleted file mode 100644
index 8cd1388a..00000000
--- a/recipes-devtools/python/python-gevent_1.0.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-HOMEPAGE = "http://www.gevent.org"
-SUMMARY = "A coroutine-based Python networking library"
-DESCRIPTION = "\
- gevent is a coroutine-based Python networking library that uses greenlet \
- to provide a high-level synchronous API on top of the libevent event \
- loop. \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2dbb33d00e1fd31c7041460a81ac0bd2"
-DEPENDS += "python-greenlet libevent"
-RDEPENDS_${PN} += "python-greenlet python-mime python-pprint python-re"
-
-SRC_URI[md5sum] = "7b952591d1a0174d6eb6ac47bd975ab6"
-SRC_URI[sha256sum] = "4627e215d058f71d95e6b26d9e7be4c263788a4756bd2858a93775f6c072df43"
-
-inherit setuptools pypi
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI += "file://libev-conf.patch"
-SRC_URI += "file://gevent-allow-ssl-v2-or-v3-certificates.patch"
-
-# The python-gevent has no autoreconf ability
-# and the logic for detecting a cross compile is flawed
-# so always force a cross compile
-do_configure_append() {
- sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/libev/configure
-}
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch b/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
deleted file mode 100644
index c4085952..00000000
--- a/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 8430e7202407fb1a0a104b0decdcc9da9e41a52b Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Mon, 4 Apr 2016 23:28:15 -0400
-Subject: [PATCH] Fix build with SWIG 3.0.5
-
-See analysis and previous patches in
-https://github.com/martinpaljak/M2Crypto/issues/60 and
-https://github.com/swig/swig/issues/344, in particular this adds the
-build machinery to patch
-https://github.com/martinpaljak/M2Crypto/issues/60#issuecomment-75735489
-
-Fixes #47
-
-Author: Miloslav Trmac <mitr@redhat.com>
-
-Upstream-Status: Backport
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- M2Crypto/__init__.py | 4 ++--
- M2Crypto/m2.py | 2 +-
- SWIG/_lib.i | 4 ++++
- SWIG/_pkcs7.i | 1 +
- setup.py | 24 ++++++++++++++++++++++++
- 5 files changed, 32 insertions(+), 3 deletions(-)
-
-diff --git a/M2Crypto/__init__.py b/M2Crypto/__init__.py
-index 647e057..280af94 100644
---- a/M2Crypto/__init__.py
-+++ b/M2Crypto/__init__.py
-@@ -19,7 +19,7 @@ Copyright 2008-2011 Heikki Toivonen. All rights reserved.
- version_info = (0, 22)
- version = '.'.join([str(_v) for _v in version_info])
-
--import __m2crypto
-+import _m2crypto
- import m2
- import ASN1
- import AuthCookie
-@@ -47,4 +47,4 @@ import m2xmlrpclib
- import threading
- import util
-
--__m2crypto.lib_init()
-+_m2crypto.lib_init()
-diff --git a/M2Crypto/m2.py b/M2Crypto/m2.py
-index e4bb695..822143f 100644
---- a/M2Crypto/m2.py
-+++ b/M2Crypto/m2.py
-@@ -25,7 +25,7 @@ Portions created by Open Source Applications Foundation (OSAF) are
- Copyright (C) 2004 OSAF. All Rights Reserved.
- """
-
--from __m2crypto import *
-+from _m2crypto import *
- lib_init()
-
-
-diff --git a/SWIG/_lib.i b/SWIG/_lib.i
-index 0d40698..6cc1a44 100644
---- a/SWIG/_lib.i
-+++ b/SWIG/_lib.i
-@@ -66,6 +66,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
- int cret;
- int new_style_callback = 0, warning_raised_exception=0;
- PyGILState_STATE gilstate;
-+ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
-
- ssl = (SSL *)X509_STORE_CTX_get_app_data(ctx);
-
-@@ -151,6 +152,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
- void ssl_info_callback(const SSL *s, int where, int ret) {
- PyObject *argv, *retval, *_SSL;
- PyGILState_STATE gilstate;
-+ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
-
- gilstate = PyGILState_Ensure();
-
-@@ -170,6 +172,7 @@ DH *ssl_set_tmp_dh_callback(SSL *ssl, int is_export, int keylength) {
- PyObject *argv, *ret, *_ssl;
- DH *dh;
- PyGILState_STATE gilstate;
-+ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
-
- gilstate = PyGILState_Ensure();
-
-@@ -193,6 +196,7 @@ RSA *ssl_set_tmp_rsa_callback(SSL *ssl, int is_export, int keylength) {
- PyObject *argv, *ret, *_ssl;
- RSA *rsa;
- PyGILState_STATE gilstate;
-+ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
-
- gilstate = PyGILState_Ensure();
-
-diff --git a/SWIG/_pkcs7.i b/SWIG/_pkcs7.i
-index 22d791a..20dfbaf 100644
---- a/SWIG/_pkcs7.i
-+++ b/SWIG/_pkcs7.i
-@@ -157,6 +157,7 @@ PyObject *smime_read_pkcs7(BIO *bio) {
- BIO *bcont = NULL;
- PKCS7 *p7;
- PyObject *tuple, *_p7, *_BIO;
-+ PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
-
- if (BIO_method_type(bio) == BIO_TYPE_MEM) {
- /* OpenSSL FAQ explains that this is needed for mem BIO to return EOF,
-diff --git a/setup.py b/setup.py
-index bac6f9f..f59dc18 100644
---- a/setup.py
-+++ b/setup.py
-@@ -19,6 +19,7 @@ from setuptools.command import build_ext
-
- from distutils.core import Extension
- from distutils.spawn import find_executable
-+from distutils.file_util import copy_file
-
-
- class _M2CryptoBuildExt(build_ext.build_ext):
-@@ -77,6 +78,15 @@ class _M2CryptoBuildExt(build_ext.build_ext):
- [opensslIncludeDir, os.path.join(opensslIncludeDir, "openssl")]]
- self.swig_opts.append('-includeall')
- self.swig_opts.append('-modern')
-+ self.swig_opts.append('-builtin')
-+
-+ # These two lines are a workaround for
-+ # http://bugs.python.org/issue2624 , hard-coding that we are only
-+ # building a single extension with a known path; a proper patch to
-+ # distutils would be in the run phase, when extension name and path are
-+ # known.
-+ self.swig_opts.append('-outdir')
-+ self.swig_opts.append(os.path.join(self.build_lib, 'M2Crypto'))
-
- # Fedora does hat tricks.
- if platform.linux_distribution()[0] in ['Fedora', 'CentOS']:
-@@ -98,6 +108,20 @@ class _M2CryptoBuildExt(build_ext.build_ext):
-
- self.library_dirs += [os.path.join(self.openssl, opensslLibraryDir)]
-
-+ def run(self):
-+ '''Overloaded build_ext implementation to allow inplace=1 to work,
-+ which is needed for (python setup.py test).'''
-+ # This is another workaround for http://bugs.python.org/issue2624 + the
-+ # corresponding lack of support in setuptools' test command. Note that
-+ # just using self.inplace in finalize_options() above does not work
-+ # because swig is not rerun if the __m2crypto.so extension exists.
-+ # Again, hard-coding our extension name and location.
-+ build_ext.build_ext.run(self)
-+ if self.inplace:
-+ copy_file(os.path.join(self.build_lib, 'M2Crypto', '_m2crypto.py'),
-+ os.path.join('M2Crypto', '_m2crypto.py'),
-+ verbose=self.verbose, dry_run=self.dry_run)
-+
- if sys.platform == 'darwin':
- my_extra_compile_args = ["-Wno-deprecated-declarations"]
- else:
---
-1.9.1
-
diff --git a/recipes-devtools/python/python-m2crypto_0.22.3.bb b/recipes-devtools/python/python-m2crypto_0.22.3.bb
deleted file mode 100644
index e151dcc4..00000000
--- a/recipes-devtools/python/python-m2crypto_0.22.3.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
-SUMMARY = "A Python crypto and SSL toolkit"
-DESCRIPTION = "\
- M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA, \
- DSA, DH, EC, HMACs, message digests, symmetric ciphers (including \
- AES); SSL functionality to implement clients and servers; HTTPS \
- extensions to Python's httplib, urllib, and xmlrpclib; unforgeable \
- HMAC'ing AuthCookies for web session management; FTP/TLS client and \
- server; S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An \
- S/MIME messenger for Zope. M2Crypto can also be used to provide SSL \
- for Twisted. \
- "
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=0ccca7097c1d29fa42e75e9c15c6ff2e"
-
-PYPI_PACKAGE = "M2Crypto"
-
-SRC_URI += " \
- file://m2crypto-Fix-build-with-SWIG-3.0.5.patch \
-"
-
-SRC_URI[md5sum] = "573f21aaac7d5c9549798e72ffcefedd"
-SRC_URI[sha256sum] = "6071bfc817d94723e9b458a010d565365104f84aa73f7fe11919871f7562ff72"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools pypi
-
-DEPENDS += "openssl swig-native"
-
-DISTUTILS_BUILD_ARGS += "build_ext -I${STAGING_INCDIR}"
-
-inherit setuptools pypi
-
-SWIG_FEATURES_x86-64 = "-D__x86_64__"
-SWIG_FEATURES ?= ""
-export SWIG_FEATURES
-
-# Get around a problem with swig, but only if the
-# multilib header file exists.
-#
-do_compile_prepend() {
- sed -i -e 's/self.add_multiarch_paths.*$/# &/;' ${S}/setup.py
- sed -i -e 's/opensslIncludeDir = .*$/opensslIncludeDir = os.getenv("STAGING_INCDIR")/;' ${S}/setup.py
- sed -i -e 's/opensslLibraryDir = .*$/opensslLibraryDir = os.getenv("STAGING_LIBDIR")/;' ${S}/setup.py
-
- if [ "${SITEINFO_BITS}" = "64" ];then
- bit="64"
- else
- bit="32"
- fi
-
- if [ -e ${STAGING_INCDIR}/openssl/opensslconf-${bit}.h ]; then
- for i in SWIG/_ec.i SWIG/_evp.i; do
- sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "$i"
- done
- elif [ -e ${STAGING_INCDIR}/openssl/opensslconf-n${bit}.h ] ;then
- for i in SWIG/_ec.i SWIG/_evp.i; do
- sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "$i"
- done
- fi
-}
-
diff --git a/recipes-devtools/python/python-pyyaml_5.1.2.bb b/recipes-devtools/python/python-pyyaml_5.1.2.bb
deleted file mode 100644
index 711675b0..00000000
--- a/recipes-devtools/python/python-pyyaml_5.1.2.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-HOMEPAGE = "http://www.pyyaml.org"
-SUMMARY = "Python support for YAML"
-DESCRIPTION = "\
- YAML is a data serialization format designed for human readability \
- and interaction with scripting languages. PyYAML is a YAML parser \
- and emitter for Python. \
- . \
- PyYAML features a complete YAML 1.1 parser, Unicode support, pickle \
- support, capable extension API, and sensible error messages. PyYAML \
- supports standard YAML tags and provides Python-specific tags that \
- allow to represent an arbitrary Python object. \
- . \
- PyYAML is applicable for a broad range of tasks from complex \
- configuration files to object serialization and persistance. \
- "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a76b4c69bfcf82313bbdc0393b04438a"
-
-SRCNAME = "PyYAML"
-SRC_URI = "http://pyyaml.org/download/pyyaml/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "20f87ab421b0271dbf371dc5c1cddb5c"
-SRC_URI[sha256sum] = "01adf0b6c6f61bd11af6e10ca52b7d4057dd0be0343eb9283c878cf3af56aee4"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-DEPENDS += "libyaml python-cython-native"
diff --git a/recipes-devtools/python/python-redis_2.10.3.bb b/recipes-devtools/python/python-redis_2.10.3.bb
deleted file mode 100644
index 2ef2b6b7..00000000
--- a/recipes-devtools/python/python-redis_2.10.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/redis/"
-SUMMARY = "Python client for Redis key-value store"
-DESCRIPTION = "The Python interface to the Redis key-value store."
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
-
-PR = "r0"
-SRCNAME = "redis"
-
-SRC_URI = "https://pypi.python.org/packages/source/r/redis/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "7619221ad0cbd124a5687458ea3f5289"
-SRC_URI[sha256sum] = "a4fb37b02860f6b1617f6469487471fd086dd2d38bbce640c2055862b9c4019c"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-RDEPENDS_${PN} = "redis"
diff --git a/recipes-devtools/python/python-sphinx_1.7.8.bb b/recipes-devtools/python/python-sphinx_1.7.8.bb
deleted file mode 100644
index 23fa3fe4..00000000
--- a/recipes-devtools/python/python-sphinx_1.7.8.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Python documentation generator"
-HOMEPAGE = "http://sphinx-doc.org/"
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=89cbefcd0a80481e8b26a9a7d25be749"
-
-PYPI_PACKAGE = "Sphinx"
-
-SRC_URI[md5sum] = "7dfb075d8bd6a53b652bce1e4394c6a1"
-SRC_URI[sha256sum] = "a07050845cc9a2f4026a6035cc8ed795a5ce7be6528bbc82032385c10807dfe7"
-
-inherit setuptools pypi
diff --git a/recipes-devtools/python/python-sqlalchemy_1.0.16.bb b/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
deleted file mode 100644
index 5eb60b5b..00000000
--- a/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
-application developers the full power and flexibility of SQL"
-HOMEPAGE = "http://www.sqlalchemy.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d7dba1721bc8ce05d421f7279cb87971"
-RDEPENDS_${PN} += "python-numbers"
-
-SRCNAME = "SQLAlchemy"
-SRC_URI = "https://pypi.io/packages/source/S/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "42c81726e7e145c206dac46964b4a167"
-SRC_URI[sha256sum] = "e2dfdaa0983931ac1b0522dd637f08a52cf3081746513ac79c50843277ebe463"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
diff --git a/recipes-devtools/python/python-sqlalchemy_1.1.5.bb b/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
deleted file mode 100644
index f22d2728..00000000
--- a/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
-application developers the full power and flexibility of SQL"
-HOMEPAGE = "http://www.sqlalchemy.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=452f4b8adb0feba42e5be5f1fbfbf538"
-RDEPENDS_${PN} += "python-numbers"
-
-SRCNAME = "SQLAlchemy"
-SRC_URI = "https://pypi.python.org/packages/da/04/8048a5075d6e29235bbd6f1ea092a38dbe2630c670e73d4aa923a4e5521c/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "50685d97dca4b91945ae6309d03ab8c9"
-SRC_URI[sha256sum] = "68fb40049690e567ebda7b270176f5abf0d53d9fbd515fec4e43326f601119b6"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
diff --git a/recipes-devtools/python/python-websocket-client.inc b/recipes-devtools/python/python-websocket-client.inc
deleted file mode 100644
index 31778c68..00000000
--- a/recipes-devtools/python/python-websocket-client.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "WebSocket client for python. hybi13 is supported."
-HOMEPAGE = "https://github.com/websocket-client/websocket-client.git"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=18b09a20dd186af4fd60f1a08311628c"
-
-inherit pypi
-
-PYPI_PACKAGE = "websocket_client"
-
-SRC_URI[md5sum] = "73d87aa16a2212da448b30aca9c5bf3b"
-SRC_URI[sha256sum] = "15f585566e2ea7459136a632b9785aa081093064391878a448c382415e948d72"
diff --git a/recipes-devtools/python/python-websocket-client_0.44.0.bb b/recipes-devtools/python/python-websocket-client_0.44.0.bb
deleted file mode 100644
index 11eeb04a..00000000
--- a/recipes-devtools/python/python-websocket-client_0.44.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require python-websocket-client.inc
-inherit setuptools \ No newline at end of file
diff --git a/recipes-devtools/python/python-werkzeug_0.10.4.bb b/recipes-devtools/python/python-werkzeug_0.10.4.bb
deleted file mode 100644
index 5f3e01fd..00000000
--- a/recipes-devtools/python/python-werkzeug_0.10.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "The Swiss Army knife of Python web development"
-HOMEPAGE = "https://pypi.python.org/pypi/Werkzeug/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a68f5361a2b2ca9fdf26b38aaecb6faa"
-
-PR = "r0"
-SRCNAME = "Werkzeug"
-
-SRC_URI = "https://pypi.python.org/packages/source/W/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "66a488e0ac50a9ec326fe020b3083450"
-SRC_URI[sha256sum] = "9d2771e4c89be127bc4bac056ab7ceaf0e0064c723d6b6e195739c3af4fd5c1d"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-RDEPENDS_${PN} += "python-io \
- python-datetime \
- python-email \
- python-zlib \
- python-pkgutil \
- python-html \
- python-shell \
- python-pprint \
- python-subprocess \
- python-netserver"
-
-CLEANBROKEN = "1"
-
diff --git a/recipes-devtools/python/python3-boto3_1.17.51.bb b/recipes-devtools/python/python3-boto3_1.17.51.bb
new file mode 100644
index 00000000..9c94a34d
--- /dev/null
+++ b/recipes-devtools/python/python3-boto3_1.17.51.bb
@@ -0,0 +1,16 @@
+HOMEPAGE = "https://github.com/boto/boto"
+SUMMARY = "Amazon Web Services API"
+DESCRIPTION = "\
+ Boto3 is the Amazon Web Services (AWS) Software Development Kit (SDK) for Python, \
+ which allows Python developers to write software that makes use of services like \
+ Amazon S3 and Amazon EC2. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[sha256sum] = "c45e7d3aef8965ae1b42c9855c31ded19fbb38cfad0a34cc37dc880ded3672c2"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-botocore python3-urllib3 python3-unixadmin"
diff --git a/recipes-devtools/python/python3-botocore/0001-Fix-rejecting-URLs-with-unsafe-characters-in-is_vali.patch b/recipes-devtools/python/python3-botocore/0001-Fix-rejecting-URLs-with-unsafe-characters-in-is_vali.patch
new file mode 100644
index 00000000..95b30a08
--- /dev/null
+++ b/recipes-devtools/python/python3-botocore/0001-Fix-rejecting-URLs-with-unsafe-characters-in-is_vali.patch
@@ -0,0 +1,61 @@
+From 370cdf7d708c92bf21a42f15392f7be330cf8f80 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Fri, 7 May 2021 19:54:16 +0200
+Subject: [PATCH] Fix rejecting URLs with unsafe characters in
+ is_valid_endpoint_url() (#2381)
+
+Detect unsafe characters in is_valid_endpoint_url()
+and is_valid_ipv6_endpoint_url() early, in order to fix rejecting
+invalid URLs with Python 3.9.5+ and other versions carrying bpo-43882
+fix. In these versions, urlsplit() silently strips LF, CR and HT
+characters while splitting the URL, effectively disarming the validator
+in botocore.
+
+The solution is based on a similar fix in Django.
+
+Fixes #2377
+
+Upstream-Status: Backport
+
+---
+ botocore/utils.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/botocore/utils.py b/botocore/utils.py
+index 378972248..d35dd64bb 100644
+--- a/botocore/utils.py
++++ b/botocore/utils.py
+@@ -173,6 +173,10 @@ ZONE_ID_PAT = "(?:%25|%)(?:[" + UNRESERVED_PAT + "]|%[a-fA-F0-9]{2})+"
+ IPV6_ADDRZ_PAT = r"\[" + IPV6_PAT + r"(?:" + ZONE_ID_PAT + r")?\]"
+ IPV6_ADDRZ_RE = re.compile("^" + IPV6_ADDRZ_PAT + "$")
+
++# These are the characters that are stripped by post-bpo-43882 urlparse().
++UNSAFE_URL_CHARS = frozenset('\t\r\n')
++
++
+ def ensure_boolean(val):
+ """Ensures a boolean value if a string or boolean is provided
+
+@@ -977,6 +981,8 @@ class ArgumentGenerator(object):
+
+
+ def is_valid_ipv6_endpoint_url(endpoint_url):
++ if UNSAFE_URL_CHARS.intersection(endpoint_url):
++ return False
+ netloc = urlparse(endpoint_url).netloc
+ return IPV6_ADDRZ_RE.match(netloc) is not None
+
+@@ -990,6 +996,10 @@ def is_valid_endpoint_url(endpoint_url):
+ :return: True if the endpoint url is valid. False otherwise.
+
+ """
++ # post-bpo-43882 urlsplit() strips unsafe characters from URL, causing
++ # it to pass hostname validation below. Detect them early to fix that.
++ if UNSAFE_URL_CHARS.intersection(endpoint_url):
++ return False
+ parts = urlsplit(endpoint_url)
+ hostname = parts.hostname
+ if hostname is None:
+--
+2.25.1
+
diff --git a/recipes-devtools/python/python3-botocore_1.20.51.bb b/recipes-devtools/python/python3-botocore_1.20.51.bb
new file mode 100644
index 00000000..f71db1fc
--- /dev/null
+++ b/recipes-devtools/python/python3-botocore_1.20.51.bb
@@ -0,0 +1,12 @@
+SUMMARY = "The low-level, core functionality of boto 3."
+HOMEPAGE = "https://github.com/boto/botocore"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
+
+SRC_URI[sha256sum] = "c853d6c2321e2f2328282c7d49d7b1a06201826ba0e7049c6975ab5f22927ea8"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-jmespath python3-dateutil python3-logging"
+
+SRC_URI += "file://0001-Fix-rejecting-URLs-with-unsafe-characters-in-is_vali.patch"
diff --git a/recipes-devtools/python/python3-bugsnag_4.1.0.bb b/recipes-devtools/python/python3-bugsnag_4.1.0.bb
new file mode 100644
index 00000000..595cc8c7
--- /dev/null
+++ b/recipes-devtools/python/python3-bugsnag_4.1.0.bb
@@ -0,0 +1,18 @@
+HOMEPAGE = "https://bugsnag.com/"
+SUMMARY = "Automatic error monitoring for django, flask, etc."
+DESCRIPTION = "\
+ The official Python notifier for `Bugsnag <https://bugsnag.com/>`_. \
+ Provides support for automatically capturing and sending exceptions \
+ in your Django and other Python apps to Bugsnag, to help you find \
+ and solve your bugs as fast as possible. \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
+
+SRC_URI[sha256sum] = "dcbd59cd9edea26cc92efb6518aed83a2f356f81bfd5acc730bfe202fb27c1c1"
+
+inherit pypi setuptools3
+
+DEPENDS += "python3-webob python3-flask python3-blinker"
+
diff --git a/recipes-devtools/python/python3-cached-property_1.3.0.bb b/recipes-devtools/python/python3-cached-property_1.3.0.bb
deleted file mode 100644
index f01aabd0..00000000
--- a/recipes-devtools/python/python3-cached-property_1.3.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A decorator for caching properties in classes."
-HOMEPAGE = "https://github.com/pydanny/cached-property"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=db7ff60c4e14f58534201242803d8abc"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "4a6039f7418007275505e355359396a8"
-SRC_URI[sha256sum] = "458e78b1c7286ece887d92c9bee829da85717994c5e3ddd253a40467f488bc81"
diff --git a/recipes-devtools/python/python3-cached-property_1.5.2.bb b/recipes-devtools/python/python3-cached-property_1.5.2.bb
new file mode 100644
index 00000000..1f99115b
--- /dev/null
+++ b/recipes-devtools/python/python3-cached-property_1.5.2.bb
@@ -0,0 +1,10 @@
+SUMMARY = "A decorator for caching properties in classes."
+DESCRIPTION = "Makes caching of time or computational expensive properties quick and easy."
+HOMEPAGE = "https://pypi.org/project/cached-property/"
+SECTION = "devel/python"
+LICENSE = "BSD-3-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=db7ff60c4e14f58534201242803d8abc"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "9fa5755838eecbb2d234c3aa390bd80fbd3ac6b6869109bfc1b499f7bd89a130"
diff --git a/recipes-devtools/python/python3-colorama_0.3.9.bb b/recipes-devtools/python/python3-colorama_0.3.9.bb
deleted file mode 100644
index 458b0dbd..00000000
--- a/recipes-devtools/python/python3-colorama_0.3.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Cross-platform colored terminal text."
-HOMEPAGE = "https://github.com/tartley/colorama"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=14d0b64047ed8f510b51ce0495995358"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "3a0e415259690f4dd7455c2683ee5850"
-SRC_URI[sha256sum] = "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
diff --git a/recipes-devtools/python/python3-colorama_0.4.6.bb b/recipes-devtools/python/python3-colorama_0.4.6.bb
new file mode 100644
index 00000000..0f364c42
--- /dev/null
+++ b/recipes-devtools/python/python3-colorama_0.4.6.bb
@@ -0,0 +1,14 @@
+SUMMARY = "Cross-platform colored terminal text."
+HOMEPAGE = "https://github.com/tartley/colorama"
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=b4936429a56a652b84c5c01280dcaa26"
+
+inherit pypi python_setuptools_build_meta
+
+SRC_URI[sha256sum] = "08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"
+
+DEPENDS += " \
+ python3-hatchling-native \
+"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb b/recipes-devtools/python/python3-docker-pycreds_0.4.0.bb
index 75a83e06..75a83e06 100644
--- a/recipes-devtools/python/python3-docker-pycreds_0.3.0.bb
+++ b/recipes-devtools/python/python3-docker-pycreds_0.4.0.bb
diff --git a/recipes-devtools/python/python3-docker_3.4.0.bb b/recipes-devtools/python/python3-docker_3.4.0.bb
deleted file mode 100644
index 052cbe8a..00000000
--- a/recipes-devtools/python/python3-docker_3.4.0.bb
+++ /dev/null
@@ -1,3 +0,0 @@
-inherit pypi setuptools3
-DEPENDS += "${PYTHON_PN}-pip-native"
-require python-docker.inc
diff --git a/recipes-devtools/python/python3-docker_7.0.0.bb b/recipes-devtools/python/python3-docker_7.0.0.bb
new file mode 100644
index 00000000..39567c04
--- /dev/null
+++ b/recipes-devtools/python/python3-docker_7.0.0.bb
@@ -0,0 +1,20 @@
+SUMMARY = "A Python library for the Docker Engine API."
+HOMEPAGE = "https://github.com/docker/docker-py"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=34f3846f940453127309b920eeb89660"
+
+SRC_URI[md5sum] = "b08eeccf6a5efd11c316c08207edfeef"
+SRC_URI[sha256sum] = "323736fb92cd9418fc5e7133bc953e11a9da04f4483f828b527db553f1e7e5a3"
+
+DEPENDS += "python3-pip-native"
+DEPENDS += "python3-setuptools-scm-native"
+
+RDEPENDS:${PN} += " \
+ python3-misc \
+ python3-six \
+ python3-docker-pycreds \
+ python3-requests \
+ python3-websocket-client \
+ python3-packaging \
+"
+inherit pypi python_setuptools_build_meta
diff --git a/recipes-devtools/python/python3-dockerpty_0.4.1.bb b/recipes-devtools/python/python3-dockerpty_0.4.1.bb
index 31a864a5..e4aa0321 100644
--- a/recipes-devtools/python/python3-dockerpty_0.4.1.bb
+++ b/recipes-devtools/python/python3-dockerpty_0.4.1.bb
@@ -7,3 +7,10 @@ inherit pypi setuptools3
SRC_URI[md5sum] = "028bacb34536f3ee6a2ccd668c27e8e4"
SRC_URI[sha256sum] = "69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce"
+
+RDEPENDS:${PN} += "\
+ python3-fcntl \
+ python3-io \
+ python3-six \
+ python3-terminal \
+"
diff --git a/recipes-devtools/python/python3-dotenv_0.17.0.bb b/recipes-devtools/python/python3-dotenv_0.17.0.bb
new file mode 100644
index 00000000..1fd13b70
--- /dev/null
+++ b/recipes-devtools/python/python3-dotenv_0.17.0.bb
@@ -0,0 +1,12 @@
+HOMEPAGE = "https://github.com/pedroburon/dotenv"
+SUMMARY = "Python Dot Env Handler"
+DESCRIPTION = "Shell Command and Library to write and read .env like files."
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=55ee2c3471d386636a719c8ccac40b31"
+
+PYPI_PACKAGE = "python-dotenv"
+
+SRC_URI[sha256sum] = "471b782da0af10da1a80341e8438fca5fadeba2881c54360d5fd8d03d03a4f4a"
+
+inherit pypi setuptools3
diff --git a/recipes-devtools/python/python3-fastentrypoints_0.12.bb b/recipes-devtools/python/python3-fastentrypoints_0.12.bb
new file mode 100644
index 00000000..390a5080
--- /dev/null
+++ b/recipes-devtools/python/python3-fastentrypoints_0.12.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Make entry_points specified in setup.py load more quickly"
+DESCRIPTION = "Using entry_points in your setup.py makes scripts that start \
+really slowly because it imports pkg_resources, which is a horrible \
+thing to do if you want your trivial script to execute more or less \
+instantly. fastentrypoints aims to fix that bypassing pkg_resources, \
+making scripts load a lot faster."
+HOMEPAGE = "https://github.com/ninjaaron/fast-entry_points"
+SECTION = "devel/python"
+
+LICENSE = "BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://README.rst;md5=f212a0cb34eb678477972d2011fb365a"
+
+inherit pypi setuptools3
+
+RDEPENDS:${PN} += "python3-setuptools python3-pickle"
+
+SRC_URI[md5sum] = "390ad9a9229164a06156a5b1f0ef1b22"
+SRC_URI[sha256sum] = "ff284f1469bd65400599807d2c6284d5b251398e6e28811f5f77fd262292410b"
+
+BBCLASSEXTEND = "native nativesdk"
diff --git a/recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb b/recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb
new file mode 100644
index 00000000..2b2e2ce6
--- /dev/null
+++ b/recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb
@@ -0,0 +1,16 @@
+HOMEPAGE = "https://pypi.python.org/pypi/Flask-Cors/"
+SUMMARY = "A Flask extension adding a decorator for CORS support"
+DESCRIPTION = "\
+ A Flask extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible \
+ "
+SECTION = "devel/python"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=118fecaa576ab51c1520f95e98db61ce"
+
+DEPENDS += "python3-six python3-flask"
+
+PYPI_PACKAGE = "Flask-Cors"
+
+SRC_URI[sha256sum] = "b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"
+
+inherit pypi setuptools3
diff --git a/recipes-devtools/python/python3-newrelic/0001-setup.py-tweak-setuptools_scm-version-dependency.patch b/recipes-devtools/python/python3-newrelic/0001-setup.py-tweak-setuptools_scm-version-dependency.patch
new file mode 100644
index 00000000..75fb6558
--- /dev/null
+++ b/recipes-devtools/python/python3-newrelic/0001-setup.py-tweak-setuptools_scm-version-dependency.patch
@@ -0,0 +1,34 @@
+From a61cea5053730f8180eb1fc8b4cb0f94ff4fc176 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Tue, 9 Feb 2021 21:31:19 -0500
+Subject: [PATCH] setup.py: tweak setuptools_scm version dependency
+
+The version dependency of <4 isn't showing any issues in builds.
+The oe-core version is 5+, and carrying a secondary version is
+not trivial or something we want to do.
+
+So we tweak the version to accept what we have in oe-core.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/setup.py b/setup.py
+index ade43a9..889a74f 100644
+--- a/setup.py
++++ b/setup.py
+@@ -132,7 +132,7 @@ kwargs = dict(
+ "git_describe_command": "git describe --dirty --tags --long --match *.*.*.*",
+ "write_to": "newrelic/version.txt",
+ },
+- setup_requires=["setuptools_scm>=3.2,<4"],
++ setup_requires=["setuptools_scm>=3.2"],
+ description = "New Relic Python Agent",
+ long_description = open(readme_file).read(),
+ url = "https://newrelic.com/docs/python/new-relic-for-python",
+--
+2.19.1
+
diff --git a/recipes-devtools/python/python-newrelic_2.22.0.19.bb b/recipes-devtools/python/python3-newrelic_6.2.0.156.bb
index 38918249..62371f60 100644
--- a/recipes-devtools/python/python-newrelic_2.22.0.19.bb
+++ b/recipes-devtools/python/python3-newrelic_6.2.0.156.bb
@@ -6,21 +6,17 @@ DESCRIPTION = "\
"
SECTION = "devel/python"
LICENSE = "BSD-3-Clause & MIT & Python-2.0 & BSD-2-Clause & NewRelic"
-LIC_FILES_CHKSUM = "file://newrelic/LICENSE;md5=0f6cc160a8ed6759faa408a30b6ac978"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2b42edef8fa55315f34f2370b4715ca9"
-PR = "r0"
-SRCNAME = "newrelic"
+SRC_URI[sha256sum] = "3dec4647de67609570c4e305f2b6432a00e0a0940a7ac69660ee92268b49d6e7"
-SRC_URI = "https://pypi.python.org/packages/source/n/newrelic/${SRCNAME}-${PV}.tar.gz"
+inherit pypi setuptools3
-SRC_URI[md5sum] = "f8c9bf996d040a11847d14682b290eff"
-SRC_URI[sha256sum] = "aa8869413c21aff441a77582df1e0fdc0f67342760eb7560d33ed3bbed7edf7b"
+DEPENDS += "python3-setuptools-scm-native"
-S = "${WORKDIR}/${SRCNAME}-${PV}"
+SRC_URI += "file://0001-setup.py-tweak-setuptools_scm-version-dependency.patch"
-inherit setuptools
-
-FILES_${PN}-dbg += "\
+FILES:${PN}-dbg += "\
${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/*/.debug \
${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/packages/*/.debug/ \
"
diff --git a/recipes-devtools/python/python3-sphinx-420.bb b/recipes-devtools/python/python3-sphinx-420.bb
new file mode 100644
index 00000000..67ecf416
--- /dev/null
+++ b/recipes-devtools/python/python3-sphinx-420.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Python documentation generator"
+HOMEPAGE = "http://sphinx-doc.org/"
+SECTION = "devel/python"
+LICENSE = "BSD-2-Clause & BSD-3-Clause & MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=82cc7d23060a75a07b820eaaf75abecf"
+
+PYPI_PACKAGE = "Sphinx"
+
+PV = "4.2.0"
+
+RCONFLICTS:${PN} = "python3-sphinx"
+
+SRC_URI[sha256sum] = "94078db9184491e15bce0a56d9186e0aec95f16ac20b12d00e06d4e36f1058a6"
+
+inherit setuptools3 pypi
diff --git a/recipes-devtools/python/python3-sphinx_2.2.0.bb b/recipes-devtools/python/python3-sphinx_2.2.0.bb
deleted file mode 100644
index 5ea408fa..00000000
--- a/recipes-devtools/python/python3-sphinx_2.2.0.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Python documentation generator"
-HOMEPAGE = "http://sphinx-doc.org/"
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=cc3ed00294f08c93200bc064c73c9d40"
-
-PYPI_PACKAGE = "Sphinx"
-
-SRC_URI[md5sum] = "ca64efdbb4d3a0a78398dbcf9f78971d"
-SRC_URI[sha256sum] = "0d586b0f8c2fc3cc6559c5e8fd6124628110514fda0e5d7c82e682d749d2e845"
-inherit setuptools3 pypi
diff --git a/recipes-devtools/python/python3-texttable_0.9.1.bb b/recipes-devtools/python/python3-texttable_0.9.1.bb
deleted file mode 100644
index 25e402f1..00000000
--- a/recipes-devtools/python/python3-texttable_0.9.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "module for creating simple ASCII tables"
-HOMEPAGE = "https://github.com/foutaise/texttable/"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "a712b5a5464d51c5fc43c64d9d2cd0de"
-SRC_URI[sha256sum] = "119041773ff03596b56392532f9315cb3a3116e404fd6f36e76a7dc088d95c79"
diff --git a/recipes-devtools/python/python3-udica_git.bb b/recipes-devtools/python/python3-udica_git.bb
new file mode 100644
index 00000000..1d239cba
--- /dev/null
+++ b/recipes-devtools/python/python3-udica_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "A tool for generating SELinux security policies for containers"
+HOMEPAGE = "https://github.com/containers/udica"
+LICENSE = "GPL-3.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=1ebbd3e34237af26da5dc08a4e440464"
+
+SRC_URI = "git://github.com/containers/udica;protocol=https;branch=main"
+
+SRCREV = "4a64ff7c1b8116a1894e72eee2a19706e970001f"
+PV = "0.2.7+git"
+
+S = "${WORKDIR}/git"
+
+SRC_URI[md5sum] = "9cc5156a2ff6458a8f52114b9bbc0d7e"
+SRC_URI[sha256sum] = "3e8bc47534e0ca9331d72c32f2881bb13b93ded0bcdeab3c833fb7cf61c0a9a5"
+
+SKIP_RECIPE[python3-udica] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'selinux', '', 'Depends on libselinux from meta-selinux which is not included', d)}"
+
+RDEPENDS:${PN} += " \
+ selinux-python \
+ "
+
+inherit setuptools3
diff --git a/recipes-devtools/python/python-webob_1.8.5.bb b/recipes-devtools/python/python3-webob_1.8.7.bb
index b9f8a9fd..d23ddfd2 100644
--- a/recipes-devtools/python/python-webob_1.8.5.bb
+++ b/recipes-devtools/python/python3-webob_1.8.7.bb
@@ -6,12 +6,11 @@ LIC_FILES_CHKSUM = "file://docs/license.txt;md5=8ed3584bcc78c16da363747ccabc5af5
PYPI_PACKAGE = "WebOb"
-SRC_URI[md5sum] = "1761f416e8cf53f6fb674149cc223bd1"
-SRC_URI[sha256sum] = "05aaab7975e0ee8af2026325d656e5ce14a71f1883c52276181821d6d5bf7086"
+SRC_URI[sha256sum] = "b64ef5141be559cfade448f044fa45c2260351edcb6a8ef6b7e00c7dcef0c323"
-inherit setuptools pypi
+inherit setuptools3 pypi
-RDEPENDS_${PN} += " \
- python-sphinx \
+RDEPENDS:${PN} += " \
+ python3-sphinx \
"
diff --git a/recipes-devtools/python/python3-websocket-client_0.44.0.bb b/recipes-devtools/python/python3-websocket-client_0.44.0.bb
deleted file mode 100644
index 473e31ff..00000000
--- a/recipes-devtools/python/python3-websocket-client_0.44.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require python-websocket-client.inc
-inherit setuptools3 \ No newline at end of file
diff --git a/recipes-devtools/python/python_2.%.bbappend b/recipes-devtools/python/python_2.%.bbappend
deleted file mode 100644
index 55301c7e..00000000
--- a/recipes-devtools/python/python_2.%.bbappend
+++ /dev/null
@@ -1,8 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-DEPENDS += " ncurses"
-
-do_compile_prepend() {
- export LIBRARY_PATH=${STAGING_DIR_TARGET}/lib
-}
-
diff --git a/recipes-devtools/qemu/qemu-package-split.inc b/recipes-devtools/qemu/qemu-package-split.inc
new file mode 100644
index 00000000..7671d84e
--- /dev/null
+++ b/recipes-devtools/qemu/qemu-package-split.inc
@@ -0,0 +1,71 @@
+# we have our own package splitting for qemu, inhbit the oe-core
+# split by overriding the split function
+python split_qemu_packages () {
+ print( "meta-virtualization: vmsplit: inhibiting core qemu package split" )
+}
+
+PACKAGES:prepend:class-target = "${PN}-x86_64 \
+ ${PN}-aarch64 \
+ ${PN}-arm \
+ ${PN}-i386 \
+ ${PN}-system-i386 \
+ ${PN}-microblaze \
+ ${PN}-support \
+ ${PN}-keymaps \
+ ${PN}-firmware \
+ "
+
+FILES:${PN}-x86_64:class-target = "${bindir}/qemu-system-x86_64 ${bindir}/qemu-x86_64"
+RDEPENDS:${PN}-x86_64:append:class-target = " ${PN}"
+RPROVIDES:${PN}-x86_64:append:class-target = " ${PN}-system-x86_64"
+RPROVIDES:${PN}-x86_64:append:class-target = " ${PN}-user-x86_64"
+RDEPENDS:${PN}-system-all:append:class-target = " ${PN}-x86_64"
+RDEPENDS:${PN}-user-all:append:class-target = " ${PN}-x86_64"
+INSANE_SKIP:${PN}-x86_64:class-target = "file-rdeps"
+
+FILES:${PN}-i386:class-target = "${bindir}/qemu-i386"
+RDEPENDS:${PN}-i386:append:class-target = " ${PN}"
+RPROVIDES:${PN}-i386:append:class-target = " ${PN}-user-i386"
+RDEPENDS:${PN}-user-all:append:class-target = " ${PN}-i386"
+INSANE_SKIP:${PN}-i386:class-target = "file-rdeps"
+
+FILES:${PN}-system-i386:class-target = "${bindir}/qemu-system-i386"
+RDEPENDS:${PN}-system-i386:append:class-target = " ${PN}"
+RDEPENDS:${PN}-system-all:append:class-target = " ${PN}-system-i386"
+INSANE_SKIP:${PN}-system-i386:class-target = "file-rdeps"
+
+FILES:${PN}-aarch64:class-target = "${bindir}/qemu-system-aarch64 ${bindir}/qemu-aarch64"
+RDEPENDS:${PN}-aarch64:append:class-target = " ${PN}"
+RPROVIDES:${PN}-aarch64:append:class-target = " ${PN}-system-aarch64"
+RPROVIDES:${PN}-aarch64:append:class-target = " ${PN}-user-aarch64"
+RDEPENDS:${PN}-system-all:append:class-target = " ${PN}-aarch64"
+RDEPENDS:${PN}-user-all:append:class-target = " ${PN}-aarch64"
+INSANE_SKIP:${PN}-aarch64:class-target = "file-rdeps"
+
+FILES:${PN}-arm:class-target = "${bindir}/qemu-system-arm ${bindir}/qemu-arm"
+RDEPENDS:${PN}-arm:append:class-target = " ${PN}"
+RPROVIDES:${PN}-arm:append:class-target = " ${PN}-system-arm"
+RPROVIDES:${PN}-arm:append:class-target = " ${PN}-user-arm"
+RDEPENDS:${PN}-system-all:append:class-target = " ${PN}-arm"
+RDEPENDS:${PN}-user-all:append:class-target = " ${PN}-arm"
+INSANE_SKIP:${PN}-arm:class-target = "file-rdeps"
+
+FILES:${PN}-microblaze:class-target = "${bindir}/qemu-system-microblaze* ${bindir}/qemu-microblaze*"
+RDEPENDS:${PN}-microblaze:append:class-target = " ${PN}"
+RPROVIDES:${PN}-microblaze:append:class-target = " ${PN}-system-microblaze"
+RPROVIDES:${PN}-microblaze:append:class-target = " ${PN}-user-microblaze"
+RDEPENDS:${PN}-system-all:append:class-target = " ${PN}-microblaze"
+RDEPENDS:${PN}-user-all:append:class-target = " ${PN}-microblaze"
+INSANE_SKIP:${PN}-arm:class-target = "file-rdeps"
+
+FILES:${PN}-support:class-target = "${bindir}/* ${libexecdir}/*"
+RDEPENDS:${PN}-support:class-target = "${PN} bash"
+
+FILES:${PN}-firmware:class-target = "${datadir}/${PN}/*.bin ${datadir}/${PN}/*.rom ${datadir}/${PN}/*.img ${datadir}/${PN}/openbios* ${datadir}/${PN}/*.dtb ${datadir}/${PN}/u-boot*"
+RDEPENDS:${PN}-firmware:class-target = "${PN}"
+INSANE_SKIP:${PN}-firmware:class-target = "arch"
+
+FILES:${PN}-keymaps:class-target = "${datadir}/${PN}/keymaps/*"
+RDEPENDS:${PN}-keymaps:class-target = "${PN}"
+
+PACKAGECONFIG:append = " virtfs"
diff --git a/recipes-devtools/qemu/qemu_%.bbappend b/recipes-devtools/qemu/qemu_%.bbappend
new file mode 100644
index 00000000..5cca9e1f
--- /dev/null
+++ b/recipes-devtools/qemu/qemu_%.bbappend
@@ -0,0 +1 @@
+require ${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', '${BPN}-package-split.inc', '', d)}
diff --git a/recipes-devtools/yq/files/run-ptest b/recipes-devtools/yq/files/run-ptest
new file mode 100755
index 00000000..3a6876b3
--- /dev/null
+++ b/recipes-devtools/yq/files/run-ptest
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+cd tests
+for i in `ls *.sh`; do
+ if [ ./$i ] ; then
+ echo "PASS: $i"
+ else
+ echo "FAIL: $i"
+ fi
+done
diff --git a/recipes-devtools/yq/yq_git.bb b/recipes-devtools/yq/yq_git.bb
new file mode 100644
index 00000000..45f2f970
--- /dev/null
+++ b/recipes-devtools/yq/yq_git.bb
@@ -0,0 +1,84 @@
+SUMMARY = "a lightweight and portable command-line YAML processor "
+HOMEPAGE = "https://github.com/mikefarah/yq"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=e40a0dcd62f8269b9bff37fe9aa7dcc2"
+
+SRCREV_yq = "dd6cf3df146f3e2c0f8c765a6ef9e35780ad8cc1"
+SRCREV_color = "daf2830f2741ebb735b21709a520c5f37d642d85"
+SRCREV_lexer = "6cdefc42e112ac71cbe316e1eed264ea62f58e25"
+SRCREV_cobra = "b43be995ebb4bee335a787bd44498b91aef7619c"
+SRCREV_pflag = "2e9d26c8c37aae03e3f9d4e90b7116f5accb7cab"
+SRCREV_logging = "b2cb9fa56473e98db8caba80237377e83fe44db5"
+SRCREV_yaml = "f6f7691b1fdeb513f56608cd2c32c51f8194bf51"
+SRCREV_xerrors="65e65417b02f28de84b55f16b46a1e789149973a"
+SRCREV_envsubst = "16035fe3571ad42c7796bf554f978bb2df64231b"
+SRCREV_participle = "49f4822ed012d9818c80ca4fcdeb7e2d55c04806"
+SRCREV_utfbom = "6ae8f945ca96f30defc7e8ab12ec5d10cf86ded4"
+SRCREV_orderedmap = "1e43e194ff533a346bab5f9b66b738256f199c8a"
+SRCREV_go-json = "5efc7d07eeeba186df630d9ab4ac78c761938c27"
+SRCREV_copier = "d132b069fe1a77d09e4c260852b389a730bbe9ba"
+SRCREV_properties = "c9a06e8f8f0164e4e16c0d5c4793cbed4ac90264"
+SRCREV_net = "f3363e06e74cdc304618bf31d898b78590103527"
+SRCREV_text = "434eadcdbc3b0256971992e8c70027278364c72c"
+SRCREV_diff = "20ebb0f2a09e612109b224b32f79370409108bcc"
+
+SRCREV_FORMAT = "yq_color"
+SRC_URI = "git://${GO_IMPORT};name=yq;branch=master;protocol=https \
+ git://github.com/fatih/color;name=color;destsuffix=build/vendor/src/github.com/fatih/color;branch=main;protocol=https \
+ git://github.com/goccy/go-yaml;name=lexer;destsuffix=build/vendor/src/github.com/goccy/go-yaml/;branch=master;protocol=https \
+ git://github.com/spf13/cobra;name=cobra;nobranch=1;destsuffix=build/vendor/src/github.com/spf13/cobra;branch=main;protocol=https \
+ git://github.com/spf13/pflag;name=pflag;destsuffix=build/vendor/src/github.com/spf13/pflag;branch=master;protocol=https \
+ git://github.com/op/go-logging.git;name=logging;destsuffix=build/vendor/src/gopkg.in/op/go-logging.v1;branch=master;protocol=https \
+ git://github.com/go-yaml/yaml.git;name=yaml;branch=v3;destsuffix=build/vendor/src/gopkg.in/yaml.v3;protocol=https \
+ git://github.com/golang/xerrors;name=xerrors;protocol=https;nobranch=1;destsuffix=build/vendor/src/golang.org/x/xerrors \
+ git://github.com/a8m/envsubst;name=envsubst;destsuffix=build/vendor/src/github.com/a8m/envsubst;branch=master;protocol=https \
+ git://github.com/alecthomas/participle;name=participle;destsuffix=build/vendor/src/github.com/alecthomas/participle;branch=master;protocol=https \
+ git://github.com/dimchansky/utfbom;name=utfbom;destsuffix=build/vendor/src/github.com/dimchansky/utfbom;branch=master;protocol=https \
+ git://github.com/elliotchance/orderedmap;name=orderedmap;destsuffix=build/vendor/src/github.com/elliotchance/orderedmap;branch=master;protocol=https \
+ git://github.com/goccy/go-json;name=go-json;destsuffix=build/vendor/src/github.com/goccy/go-json;branch=master;protocol=https \
+ git://github.com/jinzhu/copier;name=copier;destsuffix=build/vendor/src/github.com/jinzhu/copier;branch=master;protocol=https \
+ git://github.com/magiconair/properties;name=properties;destsuffix=build/vendor/src/github.com/magiconair/properties;branch=main;protocol=https \
+ git://github.com/golang/net;name=net;destsuffix=build/vendor/src/golang.org/x/net;branch=master;protocol=https \
+ git://github.com/golang/text;name=text;destsuffix=build/vendor/src/golang.org/x/text;branch=master;protocol=https \
+ git://github.com/pkg/diff;name=diff;destsuffix=build/vendor/src/github.com/pkg/diff;branch=main;protocol=https \
+ file://run-ptest \
+ "
+
+PV = "4.30.8+git${SRCREV_yq}"
+GO_IMPORT = "github.com/mikefarah/yq"
+
+inherit go ptest
+
+do_compile:prepend() {
+ # arrange for some of the golang built ins to be found
+ (
+ cd ${WORKDIR}/build/src/
+ ln -sf ${STAGING_DIR_TARGET}/${prefix}/lib/go/src/cmd/vendor/golang.org .
+ )
+
+ # arrange for the fetched dependencies to be found
+ export GOPATH="${GOPATH}:${WORKDIR}/build/vendor/"
+ export GO111MODULE=off
+}
+
+do_install:append() {
+ # these bring in dependencies for the -dev package on bash, and we don't
+ # need them .. so we remove them to avoid needing that rdepends
+ rm -rf ${D}/${libdir}/go/src/${GO_IMPORT}/debian/rules
+ rm -rf ${D}/${libdir}/go/src/${GO_IMPORT}/scripts
+ rm -rf ${D}/${libdir}/go/src/${GO_IMPORT}/acceptance_tests
+}
+
+do_install_ptest() {
+ install -d ${D}${PTEST_PATH}/tests
+ cp -r ${S}/src/github.com/mikefarah/yq/scripts/* ${D}${PTEST_PATH}/tests
+ cp -r ${S}/src/github.com/mikefarah/yq/acceptance_tests/* ${D}${PTEST_PATH}/tests
+ cp -r ${S}/src/github.com/mikefarah/yq/examples ${D}${PTEST_PATH}/tests
+}
+
+RDEPENDS:${PN}-ptest += " \
+ bash \
+"
+
+BBCLASSEXTEND = "native"
diff --git a/recipes-extended/ceph/ceph/0001-avoid-to_string-error.patch b/recipes-extended/ceph/ceph/0001-avoid-to_string-error.patch
new file mode 100644
index 00000000..0b4fc984
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-avoid-to_string-error.patch
@@ -0,0 +1,73 @@
+From f807220d13adc0656c30d3207d11c70360b88d06 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 13 Mar 2024 03:14:55 -0700
+Subject: [PATCH] avoid to_string error
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/rgw/rgw_asio_client.cc | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc
+index a0ec0bf5c..17880eda5 100644
+--- a/src/rgw/rgw_asio_client.cc
++++ b/src/rgw/rgw_asio_client.cc
+@@ -3,6 +3,7 @@
+
+ #include <boost/algorithm/string/predicate.hpp>
+ #include <boost/asio/write.hpp>
++#include <string_view>
+
+ #include "rgw_asio_client.h"
+ #include "rgw_perf_counters.h"
+@@ -39,11 +40,11 @@ int ClientIO::init_env(CephContext *cct)
+ const auto& value = header->value();
+
+ if (field == beast::http::field::content_length) {
+- env.set("CONTENT_LENGTH", value.to_string());
++ env.set("CONTENT_LENGTH", std::string(value));
+ continue;
+ }
+ if (field == beast::http::field::content_type) {
+- env.set("CONTENT_TYPE", value.to_string());
++ env.set("CONTENT_TYPE", std::string(value));
+ continue;
+ }
+
+@@ -62,26 +63,26 @@ int ClientIO::init_env(CephContext *cct)
+ }
+ *dest = '\0';
+
+- env.set(buf, value.to_string());
++ env.set(buf, std::string(value));
+ }
+
+ int major = request.version() / 10;
+ int minor = request.version() % 10;
+ env.set("HTTP_VERSION", std::to_string(major) + '.' + std::to_string(minor));
+
+- env.set("REQUEST_METHOD", request.method_string().to_string());
++ env.set("REQUEST_METHOD", std::string(request.method_string()));
+
+ // split uri from query
+ auto uri = request.target();
+ auto pos = uri.find('?');
+ if (pos != uri.npos) {
+ auto query = uri.substr(pos + 1);
+- env.set("QUERY_STRING", query.to_string());
++ env.set("QUERY_STRING", std::string(query));
+ uri = uri.substr(0, pos);
+ }
+- env.set("SCRIPT_URI", uri.to_string());
++ env.set("SCRIPT_URI", std::string(uri));
+
+- env.set("REQUEST_URI", request.target().to_string());
++ env.set("REQUEST_URI", std::string(request.target()));
+
+ char port_buf[16];
+ snprintf(port_buf, sizeof(port_buf), "%d", local_endpoint.port());
+--
+2.42.0
+
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
deleted file mode 100644
index 4f009f0f..00000000
--- a/recipes-extended/ceph/ceph/0001-ceph-fix-build-errors-for-cross-compile.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-From 9b97824ad0da2c0d3dcc0cf41f4506aa7e458e9f Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-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
-
-Upstream-Status: Inappropriate [oe specific]
-
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
-
-Adjust context for v14.2.3
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- cmake/modules/Distutils.cmake | 25 +++++--------------------
- cmake/modules/FindRocksDB.cmake | 4 ++--
- src/compressor/zstd/CMakeLists.txt | 2 +-
- src/pybind/cephfs/setup.py | 8 --------
- src/pybind/rados/setup.py | 8 --------
- src/pybind/rbd/setup.py | 8 --------
- src/pybind/rgw/setup.py | 8 --------
- 7 files changed, 8 insertions(+), 55 deletions(-)
-
-diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
-index f70265f..b2f4223 100644
---- a/cmake/modules/Distutils.cmake
-+++ b/cmake/modules/Distutils.cmake
-@@ -16,17 +16,8 @@ function(distutils_install_module name)
- cmake_parse_arguments(DU "" INSTALL_SCRIPT "" ${ARGN})
- install(CODE "
- set(options --prefix=${CMAKE_INSTALL_PREFIX})
-- if(DEFINED ENV{DESTDIR})
-- if(EXISTS /etc/debian_version)
-- list(APPEND options --install-layout=deb)
-- endif()
-- list(APPEND options
-- --root=\$ENV{DESTDIR}
-- --single-version-externally-managed)
-- if(NOT \"${DU_INSTALL_SCRIPT}\" STREQUAL \"\")
-- list(APPEND options --install-script=${DU_INSTALL_SCRIPT})
-- endif()
-- endif()
-+ list(APPEND options --root=${CMAKE_DESTDIR})
-+ list(APPEND options --install-lib=${PYTHON_SITEPACKAGES_DIR})
- execute_process(
- COMMAND ${PYTHON${PYTHON_VERSION}_EXECUTABLE}
- setup.py install \${options}
-@@ -48,7 +39,7 @@ function(distutils_add_cython_module name src)
- # Note: no quotes, otherwise distutils will execute "/usr/bin/ccache gcc"
- # CMake's implicit conversion between strings and lists is wonderful, isn't it?
- string(REPLACE " " ";" cflags ${CMAKE_C_FLAGS})
-- list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w)
-+ list(APPEND cflags -iquote${CMAKE_SOURCE_DIR}/src/include -w --sysroot=${CMAKE_SYSROOT})
- # This little bit of magic wipes out __Pyx_check_single_interpreter()
- # Note: this is reproduced in distutils_install_cython_module
- list(APPEND cflags -D'void0=dead_function\(void\)')
-@@ -89,14 +80,8 @@ function(distutils_install_cython_module name)
- set(ENV{CEPH_LIBDIR} \"${CMAKE_LIBRARY_OUTPUT_DIRECTORY}\")
-
- set(options --prefix=${CMAKE_INSTALL_PREFIX})
-- if(DEFINED ENV{DESTDIR})
-- if(EXISTS /etc/debian_version)
-- list(APPEND options --install-layout=deb)
-- endif()
-- list(APPEND options --root=\$ENV{DESTDIR})
-- else()
-- list(APPEND options --root=/)
-- endif()
-+ list(APPEND options --root=${CMAKE_DESTDIR})
-+ list(APPEND options --install-lib=${PYTHON_SITEPACKAGES_DIR})
- execute_process(
- COMMAND
- ${PYTHON${PYTHON_VERSION}_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/setup.py
-diff --git a/cmake/modules/FindRocksDB.cmake b/cmake/modules/FindRocksDB.cmake
-index c5dd3df..be38597 100644
---- a/cmake/modules/FindRocksDB.cmake
-+++ b/cmake/modules/FindRocksDB.cmake
-@@ -9,9 +9,9 @@
- # ROCKSDB_VERSION_MINOR
- # ROCKSDB_VERSION_PATCH
-
--find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h)
-+find_path(ROCKSDB_INCLUDE_DIR rocksdb/db.h ${CMAKE_SYSROOT})
-
--find_library(ROCKSDB_LIBRARIES rocksdb)
-+find_library(ROCKSDB_LIBRARIES rocksdb ${CMAKE_SYSROOT})
-
- if(ROCKSDB_INCLUDE_DIR AND EXISTS "${ROCKSDB_INCLUDE_DIR}/rocksdb/version.h")
- foreach(ver "MAJOR" "MINOR" "PATCH")
-diff --git a/src/compressor/zstd/CMakeLists.txt b/src/compressor/zstd/CMakeLists.txt
-index 76709bb..95bba4a 100644
---- a/src/compressor/zstd/CMakeLists.txt
-+++ b/src/compressor/zstd/CMakeLists.txt
-@@ -9,7 +9,7 @@ ExternalProject_Add(zstd_ext
- CMAKE_ARGS -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
- -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
- -DCMAKE_C_FLAGS=${ZSTD_C_FLAGS}
-- -DCMAKE_AR=${CMAKE_AR}
-+ -DCMAKE_SYSROOT=${CMAKE_SYSROOT}
- -DCMAKE_POSITION_INDEPENDENT_CODE=${ENABLE_SHARED}
- BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/libzstd
- BUILD_COMMAND $(MAKE) libzstd_static
-diff --git a/src/pybind/cephfs/setup.py b/src/pybind/cephfs/setup.py
-index 1f95005..8a6d136 100755
---- a/src/pybind/cephfs/setup.py
-+++ b/src/pybind/cephfs/setup.py
-@@ -142,14 +142,6 @@ def check_sanity():
- finally:
- shutil.rmtree(tmp_dir)
-
--
--if 'BUILD_DOC' in os.environ.keys():
-- pass
--elif check_sanity():
-- pass
--else:
-- sys.exit(1)
--
- cmdclass = {}
- try:
- from Cython.Build import cythonize
-diff --git a/src/pybind/rados/setup.py b/src/pybind/rados/setup.py
-index 75081df..4d1591c 100755
---- a/src/pybind/rados/setup.py
-+++ b/src/pybind/rados/setup.py
-@@ -138,14 +138,6 @@ def check_sanity():
- finally:
- shutil.rmtree(tmp_dir)
-
--
--if 'BUILD_DOC' in os.environ.keys():
-- pass
--elif check_sanity():
-- pass
--else:
-- sys.exit(1)
--
- cmdclass = {}
- try:
- from Cython.Build import cythonize
-diff --git a/src/pybind/rbd/setup.py b/src/pybind/rbd/setup.py
-index 8dd5c12..b8f4d91 100755
---- a/src/pybind/rbd/setup.py
-+++ b/src/pybind/rbd/setup.py
-@@ -141,14 +141,6 @@ def check_sanity():
- finally:
- shutil.rmtree(tmp_dir)
-
--
--if 'BUILD_DOC' in os.environ.keys():
-- pass
--elif check_sanity():
-- pass
--else:
-- sys.exit(1)
--
- cmdclass = {}
- try:
- from Cython.Build import cythonize
-diff --git a/src/pybind/rgw/setup.py b/src/pybind/rgw/setup.py
-index 4ee4f49..91dc7d4 100755
---- a/src/pybind/rgw/setup.py
-+++ b/src/pybind/rgw/setup.py
-@@ -143,14 +143,6 @@ def check_sanity():
- finally:
- shutil.rmtree(tmp_dir)
-
--
--if 'BUILD_DOC' in os.environ.keys():
-- pass
--elif check_sanity():
-- pass
--else:
-- sys.exit(1)
--
- cmdclass = {}
- try:
- from Cython.Build import cythonize
---
-2.7.4
-
diff --git a/recipes-extended/ceph/ceph/0001-cephadm-build.py-avoid-using-python3-from-sysroot-wh.patch b/recipes-extended/ceph/ceph/0001-cephadm-build.py-avoid-using-python3-from-sysroot-wh.patch
new file mode 100644
index 00000000..a353a2f7
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-cephadm-build.py-avoid-using-python3-from-sysroot-wh.patch
@@ -0,0 +1,43 @@
+From b9867e6b744b77d97d22333eca3ab3d23d47e2e2 Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Thu, 14 Mar 2024 00:19:19 -0700
+Subject: [PATCH] cephadm/build.py: avoid using python3 from sysroot when
+ creating zipapp archive
+
+ceph has the assumption that the python used during build
+is the python used at target, but this is not true for
+cross compilation. We'll need to use the target python3 here,
+otherwise, the cephadm zipapp cannot be executed.
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/cephadm/build.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/cephadm/build.py b/src/cephadm/build.py
+index 4264b814f1e..a4483d6f79d 100755
+--- a/src/cephadm/build.py
++++ b/src/cephadm/build.py
+@@ -93,7 +93,7 @@ def _compile(dest, tempdir):
+ zipapp.create_archive(
+ source=tempdir,
+ target=dest,
+- interpreter=sys.executable,
++ interpreter='/usr/bin/python3',
+ compressed=True,
+ )
+ log.info("Zipapp created with compression")
+@@ -102,7 +102,7 @@ def _compile(dest, tempdir):
+ zipapp.create_archive(
+ source=tempdir,
+ target=dest,
+- interpreter=sys.executable,
++ interpreter='/usr/bin/python3',
+ )
+ log.info("Zipapp created without compression")
+
+--
+2.42.0
+
diff --git a/recipes-extended/ceph/ceph/0001-delete-install-layout-deb.patch b/recipes-extended/ceph/ceph/0001-delete-install-layout-deb.patch
new file mode 100644
index 00000000..91eacfa9
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-delete-install-layout-deb.patch
@@ -0,0 +1,37 @@
+From 903bb882a44eb5567f8b1fc7f7c4857c2f03579d Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Wed, 13 Mar 2024 03:41:47 -0700
+Subject: [PATCH] delete install-layout=deb
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ cmake/modules/Distutils.cmake | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/cmake/modules/Distutils.cmake b/cmake/modules/Distutils.cmake
+index daaae4ba6..e606e3890 100644
+--- a/cmake/modules/Distutils.cmake
++++ b/cmake/modules/Distutils.cmake
+@@ -30,9 +30,6 @@ function(distutils_install_module name)
+ install(CODE "
+ set(options --prefix=${CMAKE_INSTALL_PREFIX})
+ if(DEFINED ENV{DESTDIR})
+- if(EXISTS /etc/debian_version)
+- list(APPEND options --install-layout=deb)
+- endif()
+ list(APPEND options
+ --root=\$ENV{DESTDIR}
+ --single-version-externally-managed)
+@@ -136,9 +133,6 @@ function(distutils_install_cython_module name)
+
+ set(options --prefix=${CMAKE_INSTALL_PREFIX})
+ if(DEFINED ENV{DESTDIR})
+- if(EXISTS /etc/debian_version)
+- list(APPEND options --install-layout=deb)
+- endif()
+ list(APPEND options --root=\$ENV{DESTDIR})
+ else()
+ list(APPEND options --root=/)
+--
+2.42.0
+
diff --git a/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
new file mode 100644
index 00000000..24fd0409
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-fix-host-library-paths-were-used.patch
@@ -0,0 +1,93 @@
+From bbf1cba8feb0e43492a1f6a6b31d024117cad262 Mon Sep 17 00:00:00 2001
+From: Hongxu Jia <hongxu.jia@windriver.com>
+Date: Mon, 13 Apr 2020 23:35:41 -0700
+Subject: [PATCH] fix host library paths were used
+
+Test the existence of recipe-sysrooot, add it back if lost
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com>
+---
+ src/pybind/cephfs/setup.py | 6 +++++-
+ src/pybind/rados/setup.py | 6 +++++-
+ src/pybind/rbd/setup.py | 6 +++++-
+ src/pybind/rgw/setup.py | 6 +++++-
+ 4 files changed, 20 insertions(+), 4 deletions(-)
+
+Index: ceph-18.2.0/src/pybind/cephfs/setup.py
+===================================================================
+--- ceph-18.2.0.orig/src/pybind/cephfs/setup.py
++++ ceph-18.2.0/src/pybind/cephfs/setup.py
+@@ -63,9 +63,13 @@
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
+ compiler = new_compiler()
+ distutils.sysconfig.customize_compiler(compiler)
++ libpl = distutils.sysconfig.get_config_var('LIBPL')
++ sysroot = os.environ.get('STAGING_DIR_HOST')
++ if not libpl.startswith(sysroot):
++ libpl = sysroot + libpl
+ return dict(
+ include_dirs=[distutils.sysconfig.get_python_inc()],
+- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
++ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
+ libraries=libs + py_libs,
+ extra_compile_args=filter_unsupported_flags(
+ compiler.compiler[0],
+Index: ceph-18.2.0/src/pybind/rados/setup.py
+===================================================================
+--- ceph-18.2.0.orig/src/pybind/rados/setup.py
++++ ceph-18.2.0/src/pybind/rados/setup.py
+@@ -62,9 +62,13 @@
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
+ compiler = new_compiler()
+ distutils.sysconfig.customize_compiler(compiler)
++ libpl = distutils.sysconfig.get_config_var('LIBPL')
++ sysroot = os.environ.get('STAGING_DIR_HOST')
++ if not libpl.startswith(sysroot):
++ libpl = sysroot + libpl
+ return dict(
+ include_dirs=[distutils.sysconfig.get_python_inc()],
+- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
++ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
+ libraries=libs + py_libs,
+ extra_compile_args=filter_unsupported_flags(
+ compiler.compiler[0],
+Index: ceph-18.2.0/src/pybind/rbd/setup.py
+===================================================================
+--- ceph-18.2.0.orig/src/pybind/rbd/setup.py
++++ ceph-18.2.0/src/pybind/rbd/setup.py
+@@ -63,9 +63,13 @@
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
+ compiler = new_compiler()
+ distutils.sysconfig.customize_compiler(compiler)
++ libpl = distutils.sysconfig.get_config_var('LIBPL')
++ sysroot = os.environ.get('STAGING_DIR_HOST')
++ if not libpl.startswith(sysroot):
++ libpl = sysroot + libpl
+ return dict(
+ include_dirs=[distutils.sysconfig.get_python_inc()],
+- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
++ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
+ libraries=libs + py_libs,
+ extra_compile_args=filter_unsupported_flags(
+ compiler.compiler[0],
+Index: ceph-18.2.0/src/pybind/rgw/setup.py
+===================================================================
+--- ceph-18.2.0.orig/src/pybind/rgw/setup.py
++++ ceph-18.2.0/src/pybind/rgw/setup.py
+@@ -64,9 +64,13 @@
+ filter(lambda lib: lib.startswith('-l'), py_libs)]
+ compiler = new_compiler()
+ distutils.sysconfig.customize_compiler(compiler)
++ libpl = distutils.sysconfig.get_config_var('LIBPL')
++ sysroot = os.environ.get('STAGING_DIR_HOST')
++ if not libpl.startswith(sysroot):
++ libpl = sysroot + libpl
+ return dict(
+ include_dirs=[distutils.sysconfig.get_python_inc()],
+- library_dirs=distutils.sysconfig.get_config_vars('LIBDIR', 'LIBPL'),
++ library_dirs=[distutils.sysconfig.get_config_var('LIBDIR'), libpl],
+ libraries=libs + py_libs,
+ extra_compile_args=filter_unsupported_flags(
+ compiler.compiler[0],
diff --git a/recipes-extended/ceph/ceph/0001-rgw-add-executor-type-for-basic_waitable_timers.patch b/recipes-extended/ceph/ceph/0001-rgw-add-executor-type-for-basic_waitable_timers.patch
deleted file mode 100644
index b7a9dd96..00000000
--- a/recipes-extended/ceph/ceph/0001-rgw-add-executor-type-for-basic_waitable_timers.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From f1651b8c509d60787d10c4115e29fecfd2da237c Mon Sep 17 00:00:00 2001
-From: Casey Bodley <cbodley@redhat.com>
-Date: Tue, 23 Apr 2019 15:41:45 -0400
-Subject: [PATCH] rgw: add executor type for basic_waitable_timers
-
-as of boost 1.70, the timer no longer depends on io_context directly,
-so we have to specify its executor as a template parameter
-
-Signed-off-by: Casey Bodley <cbodley@redhat.com>
-
-Upstream-Status: Backport [f1651b8c509d60787d10c4115e29fecfd2da237c]
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- src/rgw/rgw_dmclock_async_scheduler.h | 5 +++++
- src/rgw/rgw_reshard.h | 9 ++++++++-
- 2 files changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/src/rgw/rgw_dmclock_async_scheduler.h b/src/rgw/rgw_dmclock_async_scheduler.h
-index 70487a5253..1d454acd2e 100644
---- a/src/rgw/rgw_dmclock_async_scheduler.h
-+++ b/src/rgw/rgw_dmclock_async_scheduler.h
-@@ -82,7 +82,12 @@ class AsyncScheduler : public md_config_obs_t, public Scheduler {
- using Completion = async::Completion<Signature, async::AsBase<Request>>;
-
- using Clock = ceph::coarse_real_clock;
-+#if BOOST_VERSION < 107000
- using Timer = boost::asio::basic_waitable_timer<Clock>;
-+#else
-+ using Timer = boost::asio::basic_waitable_timer<Clock,
-+ boost::asio::wait_traits<Clock>, executor_type>;
-+#endif
- Timer timer; //< timer for the next scheduled request
-
- CephContext *const cct;
-diff --git a/src/rgw/rgw_reshard.h b/src/rgw/rgw_reshard.h
-index d99a6ff68d..213fc238d2 100644
---- a/src/rgw/rgw_reshard.h
-+++ b/src/rgw/rgw_reshard.h
-@@ -183,7 +183,14 @@ class RGWReshardWait {
- ceph::condition_variable cond;
-
- struct Waiter : boost::intrusive::list_base_hook<> {
-- boost::asio::basic_waitable_timer<Clock> timer;
-+#if BOOST_VERSION < 107000
-+ using Timer = boost::asio::basic_waitable_timer<Clock>;
-+#else
-+ using Executor = boost::asio::io_context::executor_type;
-+ using Timer = boost::asio::basic_waitable_timer<Clock,
-+ boost::asio::wait_traits<Clock>, Executor>;
-+#endif
-+ Timer timer;
- explicit Waiter(boost::asio::io_context& ioc) : timer(ioc) {}
- };
- boost::intrusive::list<Waiter> waiters;
---
-2.21.0
-
diff --git a/recipes-extended/ceph/ceph/0001-rgw-beast-handle_connection-takes-io_context.patch b/recipes-extended/ceph/ceph/0001-rgw-beast-handle_connection-takes-io_context.patch
deleted file mode 100644
index 7a44338b..00000000
--- a/recipes-extended/ceph/ceph/0001-rgw-beast-handle_connection-takes-io_context.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 064f142746ae97f54865069cdacf5aae2b1b14f6 Mon Sep 17 00:00:00 2001
-From: Casey Bodley <cbodley@redhat.com>
-Date: Tue, 23 Apr 2019 15:40:01 -0400
-Subject: [PATCH] rgw: beast handle_connection() takes io_context
-
-as of boost 1.70, the socket no longer has a get_io_context(), so we
-have to pass it in as an argument
-
-Signed-off-by: Casey Bodley <cbodley@redhat.com>
-
-Upstream-Status: Backport [064f142746ae97f54865069cdacf5aae2b1b14f6]
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- src/rgw/rgw_asio_frontend.cc | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/src/rgw/rgw_asio_frontend.cc b/src/rgw/rgw_asio_frontend.cc
-index e4be074ec7..4af3695dc1 100644
---- a/src/rgw/rgw_asio_frontend.cc
-+++ b/src/rgw/rgw_asio_frontend.cc
-@@ -81,7 +81,8 @@ class StreamIO : public rgw::asio::ClientIO {
- using SharedMutex = ceph::async::SharedMutex<boost::asio::io_context::executor_type>;
-
- template <typename Stream>
--void handle_connection(RGWProcessEnv& env, Stream& stream,
-+void handle_connection(boost::asio::io_context& context,
-+ RGWProcessEnv& env, Stream& stream,
- boost::beast::flat_buffer& buffer, bool is_ssl,
- SharedMutex& pause_mutex,
- rgw::dmclock::Scheduler *scheduler,
-@@ -152,7 +153,7 @@ void handle_connection(RGWProcessEnv& env, Stream& stream,
- rgw::io::add_conlen_controlling(
- &real_client))));
- RGWRestfulIO client(cct, &real_client_io);
-- auto y = optional_yield{socket.get_io_context(), yield};
-+ auto y = optional_yield{context, yield};
- process_request(env.store, env.rest, &req, env.uri_prefix,
- *env.auth_registry, &client, env.olog, y, scheduler);
- }
-@@ -560,7 +561,7 @@ void AsioFrontend::accept(Listener& l, boost::system::error_code ec)
- return;
- }
- buffer.consume(bytes);
-- handle_connection(env, stream, buffer, true, pause_mutex,
-+ handle_connection(context, env, stream, buffer, true, pause_mutex,
- scheduler.get(), ec, yield);
- if (!ec) {
- // ssl shutdown (ignoring errors)
-@@ -578,7 +579,7 @@ void AsioFrontend::accept(Listener& l, boost::system::error_code ec)
- auto c = connections.add(conn);
- boost::beast::flat_buffer buffer;
- boost::system::error_code ec;
-- handle_connection(env, s, buffer, false, pause_mutex,
-+ handle_connection(context, env, s, buffer, false, pause_mutex,
- scheduler.get(), ec, yield);
- s.shutdown(tcp::socket::shutdown_both, ec);
- });
---
-2.21.0
-
diff --git a/recipes-extended/ceph/ceph/0006-rocksdb-build-with-rocksdb-7.y.z.patch b/recipes-extended/ceph/ceph/0006-rocksdb-build-with-rocksdb-7.y.z.patch
new file mode 100644
index 00000000..c7ca704f
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0006-rocksdb-build-with-rocksdb-7.y.z.patch
@@ -0,0 +1,109 @@
+From 06f23837c757ff7a8aa8db4e5965e25e9ca69f45 Mon Sep 17 00:00:00 2001
+From: "Kaleb S. KEITHLEY" <kkeithle@redhat.com>
+Date: Mon, 23 May 2022 07:41:26 -0400
+Subject: [PATCH 6/6] rocksdb: build with rocksdb-7.y.z
+
+RocksDB 7, specifically 7.2.2 has landed in Fedora 37/rawhide.
+
+https://tracker.ceph.com/issues/55730
+
+Signed-off-by: Kaleb S. KEITHLEY <kkeithle@redhat.com>
+(cherry picked from commit eea10281e6f4078f261b05b6bd9c9c9aec129201)
+
+Upstream-Status: Backport [be3ca10e60ade9dbe7d3e5cb018f32c7cc97e2ed]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/kv/RocksDBStore.cc | 7 ++-----
+ src/kv/rocksdb_cache/BinnedLRUCache.cc | 2 +-
+ src/kv/rocksdb_cache/BinnedLRUCache.h | 2 +-
+ src/kv/rocksdb_cache/ShardedCache.cc | 2 +-
+ src/kv/rocksdb_cache/ShardedCache.h | 4 ++--
+ 5 files changed, 7 insertions(+), 10 deletions(-)
+
+diff --git a/src/kv/RocksDBStore.cc b/src/kv/RocksDBStore.cc
+index 328277e5..115d28fc 100644
+--- a/src/kv/RocksDBStore.cc
++++ b/src/kv/RocksDBStore.cc
+@@ -728,19 +728,16 @@ int64_t RocksDBStore::estimate_prefix_size(const string& prefix,
+ {
+ auto cf = get_cf_handle(prefix);
+ uint64_t size = 0;
+- uint8_t flags =
+- //rocksdb::DB::INCLUDE_MEMTABLES | // do not include memtables...
+- rocksdb::DB::INCLUDE_FILES;
+ if (cf) {
+ string start = key_prefix + string(1, '\x00');
+ string limit = key_prefix + string("\xff\xff\xff\xff");
+ rocksdb::Range r(start, limit);
+- db->GetApproximateSizes(cf, &r, 1, &size, flags);
++ db->GetApproximateSizes(cf, &r, 1, &size);
+ } else {
+ string start = combine_strings(prefix , key_prefix);
+ string limit = combine_strings(prefix , key_prefix + "\xff\xff\xff\xff");
+ rocksdb::Range r(start, limit);
+- db->GetApproximateSizes(default_cf, &r, 1, &size, flags);
++ db->GetApproximateSizes(default_cf, &r, 1, &size);
+ }
+ return size;
+ }
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+index 1e6ba7af..c4918355 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+@@ -531,7 +531,7 @@ void BinnedLRUCache::DisownData() {
+ #endif // !__SANITIZE_ADDRESS__
+ }
+
+-#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++#if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22))
+ DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const
+ {
+ return reinterpret_cast<const BinnedLRUHandle*>(handle)->deleter;
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
+index ba0c2720..266667f0 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
+@@ -309,7 +309,7 @@ class BinnedLRUCache : public ShardedCache {
+ virtual size_t GetCharge(Handle* handle) const override;
+ virtual uint32_t GetHash(Handle* handle) const override;
+ virtual void DisownData() override;
+-#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++#if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22))
+ virtual DeleterFn GetDeleter(Handle* handle) const override;
+ #endif
+ // Retrieves number of elements in LRU, for unit test purpose only
+diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
+index 6cbd89ad..7d160f9c 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.cc
++++ b/src/kv/rocksdb_cache/ShardedCache.cc
+@@ -109,7 +109,7 @@ size_t ShardedCache::GetPinnedUsage() const {
+ return usage;
+ }
+
+-#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++#if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22))
+ DeleterFn ShardedCache::GetDeleter(Handle* handle) const
+ {
+ uint32_t hash = GetHash(handle);
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index f98421a0..855912d7 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -83,11 +83,11 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
+ virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
+ virtual size_t GetPinnedUsage() const override;
+ virtual size_t GetCharge(Handle* handle) const = 0;
+-#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++#if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22))
+ virtual DeleterFn GetDeleter(Handle* handle) const override;
+ #endif
+ virtual void DisownData() override = 0;
+-#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++#if (ROCKSDB_MAJOR >= 7 || (ROCKSDB_MAJOR == 6 && ROCKSDB_MINOR >= 22))
+ virtual void ApplyToAllEntries(
+ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
+ DeleterFn deleter)>& callback,
+--
+2.33.0
+
diff --git a/recipes-extended/ceph/ceph_14.2.3.bb b/recipes-extended/ceph/ceph_14.2.3.bb
deleted file mode 100644
index 25a8ea27..00000000
--- a/recipes-extended/ceph/ceph_14.2.3.bb
+++ /dev/null
@@ -1,132 +0,0 @@
-SUMMARY = "User space components of the Ceph file system"
-LICENSE = "LGPLv2.1 & GPLv2 & Apache-2.0 & MIT"
-LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \
- file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
- file://COPYING;md5=601c21a554d728c3038ca292b83b8af0 \
-"
-inherit cmake pythonnative python-dir 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.
-
-SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
- file://0001-ceph-fix-build-errors-for-cross-compile.patch \
- file://ceph.conf \
- file://0001-rgw-add-executor-type-for-basic_waitable_timers.patch \
- file://0001-rgw-beast-handle_connection-takes-io_context.patch \
-"
-SRC_URI[md5sum] = "e4a53270fba14bf34d0b4c2a2340042e"
-SRC_URI[sha256sum] = "63d0eddab80f7bcdd4e9ac86d2b36c6cc8c9e2d34f20e8e426ff1620d66748dd"
-
-DEPENDS = "boost bzip2 curl expat gperf-native \
- keyutils libaio libibverbs lz4 \
- nspr nss \
- oath openldap openssl \
- python python-cython-native rabbitmq-c rocksdb snappy udev \
- valgrind xfsprogs zlib \
-"
-SYSTEMD_SERVICE_${PN} = " \
- ceph-radosgw@.service \
- ceph-radosgw.target \
- ceph-mon@.service \
- ceph-mon.target \
- ceph-mds@.service \
- ceph-mds.target \
- ceph-osd@.service \
- ceph-osd.target \
- ceph.target \
- ceph-rbd-mirror@.service \
- ceph-rbd-mirror.target \
- ceph-volume@.service \
- ceph-mgr@.service \
- ceph-mgr.target \
- ceph-crash.service \
- rbdmap.service \
-"
-OECMAKE_GENERATOR = "Unix Makefiles"
-
-EXTRA_OECMAKE = "-DWITH_MANPAGE=OFF \
- -DWITH_FUSE=OFF \
- -DWITH_SPDK=OFF \
- -DWITH_LEVELDB=OFF \
- -DWITH_LTTNG=OFF \
- -DWITH_BABELTRACE=OFF \
- -DWITH_TESTS=OFF \
- -DWITH_MGR=OFF \
- -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
- -DWITH_SYSTEM_BOOST=ON \
- -DWITH_SYSTEM_ROCKSDB=ON \
- -DWITH_RDMA=OFF \
- -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
-"
-
-do_configure_prepend () {
- echo "set( CMAKE_SYSROOT \"${RECIPE_SYSROOT}\" )" >> ${WORKDIR}/toolchain.cmake
- echo "set( CMAKE_DESTDIR \"${D}\" )" >> ${WORKDIR}/toolchain.cmake
- echo "set( PYTHON_SITEPACKAGES_DIR \"${PYTHON_SITEPACKAGES_DIR}\" )" >> ${WORKDIR}/toolchain.cmake
-}
-
-do_install_append () {
- sed -i -e 's:${WORKDIR}.*python2:${bindir}/python:' ${D}${bindir}/ceph
- sed -i -e 's:${WORKDIR}.*python2:${bindir}/python:' ${D}${bindir}/ceph-crash
- sed -i -e 's:${WORKDIR}.*python2:${bindir}/python:' ${D}${bindir}/ceph-volume
- sed -i -e 's:${WORKDIR}.*python2:${bindir}/python:' ${D}${bindir}/ceph-volume-systemd
- find ${D} -name SOURCES.txt | xargs sed -i -e 's:${WORKDIR}::'
- install -d ${D}${sysconfdir}/ceph
- install -m 644 ${WORKDIR}/ceph.conf ${D}${sysconfdir}/ceph/
- install -d ${D}${systemd_unitdir}
- mv ${D}${libexecdir}/systemd/system ${D}${systemd_unitdir}
- mv ${D}${libexecdir}/ceph/ceph-osd-prestart.sh ${D}${libdir}/ceph
- 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
-}
-
-do_install_append_class-target () {
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- install -d ${D}${sysconfdir}/tmpfiles.d
- echo "d /var/lib/ceph/crash/posted 0755 root root - -" > ${D}${sysconfdir}/tmpfiles.d/ceph-placeholder.conf
- fi
-
- if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
- install -d ${D}${sysconfdir}/default/volatiles
- echo "d root root 0755 /var/lib/ceph/crash/posted none" > ${D}${sysconfdir}/default/volatiles/99_ceph-placeholder
- fi
-}
-
-pkg_postinst_${PN}() {
- if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then
- ${sysconfdir}/init.d/populate-volatile.sh update
- fi
-}
-
-FILES_${PN} += "\
- ${libdir}/rados-classes/*.so.* \
- ${libdir}/ceph/compressor/*.so \
- ${libdir}/rados-classes/*.so \
- ${libdir}/ceph/*.so \
-"
-
-FILES_${PN} += " \
- /etc/tmpfiles.d/ceph-placeholder.conf \
- /etc/default/volatiles/99_ceph-placeholder \
-"
-
-FILES_${PN}-python = "\
- ${PYTHON_SITEPACKAGES_DIR}/* \
-"
-RDEPENDS_${PN} += "\
- python \
- python-misc \
- python-modules \
- python-prettytable \
- ${PN}-python \
-"
-COMPATIBLE_HOST = "(x86_64).*"
-PACKAGES += " \
- ${PN}-python \
-"
-INSANE_SKIP_${PN}-python += "ldflags"
-INSANE_SKIP_${PN} += "dev-so"
-CCACHE_DISABLE = "1"
-
-CVE_PRODUCT = "ceph ceph_storage ceph_storage_mon ceph_storage_osd"
diff --git a/recipes-extended/ceph/ceph_18.2.2.bb b/recipes-extended/ceph/ceph_18.2.2.bb
new file mode 100644
index 00000000..e6c44188
--- /dev/null
+++ b/recipes-extended/ceph/ceph_18.2.2.bb
@@ -0,0 +1,177 @@
+SUMMARY = "User space components of the Ceph file system"
+LICENSE = "LGPL-2.1-only & GPL-2.0-only & Apache-2.0 & MIT"
+LIC_FILES_CHKSUM = "file://COPYING-LGPL2.1;md5=fbc093901857fcd118f065f900982c24 \
+ file://COPYING-GPL2;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING;md5=5351120989d78252e65dc1a2a92e3617 \
+"
+inherit cmake pkgconfig python3native python3-dir systemd useradd
+# Disable python pybind support for ceph temporary, when corss compiling pybind,
+# pybind mix cmake and python setup environment, would case a lot of errors.
+
+SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
+ file://0001-fix-host-library-paths-were-used.patch \
+ file://ceph.conf \
+ file://0001-avoid-to_string-error.patch \
+ file://0001-delete-install-layout-deb.patch \
+ file://0001-cephadm-build.py-avoid-using-python3-from-sysroot-wh.patch \
+"
+
+SRC_URI[sha256sum] = "e70bb5246b4a5d7aa78eb548677a05cc21d0d47945ba2937fddc7511134ffb57"
+
+DEPENDS = "boost bzip2 curl cryptsetup expat gperf-native \
+ keyutils libaio libibverbs lua lz4 \
+ nspr nss ninja-native \
+ oath openldap openssl \
+ python3 python3-native python3-cython-native python3-pyyaml-native \
+ rabbitmq-c rocksdb snappy thrift udev \
+ valgrind xfsprogs zlib libgcc zstd re2 \
+"
+
+
+OECMAKE_C_COMPILER = "${@oecmake_map_compiler('CC', d)[0]} --sysroot=${RECIPE_SYSROOT}"
+OECMAKE_CXX_COMPILER = "${@oecmake_map_compiler('CXX', d)[0]} --sysroot=${RECIPE_SYSROOT}"
+
+USERADD_PACKAGES = "${PN}"
+USERADD_PARAM:${PN} = "--system --user-group --home-dir /var/lib/ceph --shell /sbin/nologin ceph"
+
+SYSTEMD_SERVICE:${PN} = " \
+ ceph-radosgw@.service \
+ ceph-radosgw.target \
+ ceph-mon@.service \
+ ceph-mon.target \
+ ceph-mds@.service \
+ ceph-mds.target \
+ ceph-osd@.service \
+ ceph-osd.target \
+ cephfs-mirror@.service \
+ cephfs-mirror.target \
+ ceph.target \
+ ceph-rbd-mirror@.service \
+ ceph-rbd-mirror.target \
+ ceph-volume@.service \
+ ceph-mgr@.service \
+ ceph-mgr.target \
+ ceph-crash.service \
+ rbdmap.service \
+ ceph-immutable-object-cache@.service \
+ ceph-immutable-object-cache.target \
+"
+
+EXTRA_OECMAKE += "-DWITH_MANPAGE=OFF \
+ -DWITH_JAEGER=OFF \
+ -DWITH_SYSTEM_ZSTD=ON \
+ -DWITH_FUSE=OFF \
+ -DWITH_SPDK=OFF \
+ -DWITH_LEVELDB=OFF \
+ -DWITH_LTTNG=OFF \
+ -DWITH_BABELTRACE=OFF \
+ -DWITH_TESTS=OFF \
+ -DWITH_RADOSGW_SELECT_PARQUET=OFF \
+ -DWITH_RADOSGW_ARROW_FLIGHT=OFF \
+ -DWITH_MGR=OFF \
+ -DWITH_MGR_DASHBOARD_FRONTEND=OFF \
+ -DWITH_SYSTEM_BOOST=ON \
+ -DWITH_SYSTEM_ROCKSDB=ON \
+ -DWITH_RDMA=OFF \
+ -DWITH_RADOSGW_AMQP_ENDPOINT=OFF \
+ -DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \
+ -DWITH_REENTRANT_STRSIGNAL=ON \
+ -DWITH_PYTHON3=3.12 \
+ -DPYTHON_DESIRED=3 \
+ -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${WORKDIR}/toolchain.cmake \
+ "
+
+do_configure:prepend () {
+ echo "set( CMAKE_SYSROOT \"${RECIPE_SYSROOT}\" )" >> ${WORKDIR}/toolchain.cmake
+ echo "set( CMAKE_DESTDIR \"${D}\" )" >> ${WORKDIR}/toolchain.cmake
+ echo "set( PYTHON_SITEPACKAGES_DIR \"${PYTHON_SITEPACKAGES_DIR}\" )" >> ${WORKDIR}/toolchain.cmake
+ # echo "set( CMAKE_C_COMPILER_WORKS TRUE)" >> ${WORKDIR}/toolchain.cmake
+ # echo "set( CMAKE_CXX_COMPILER_FORCED TRUE)" >> ${WORKDIR}/toolchain.cmake
+ echo "set( CMAKE_C_COMPILER_FORCED TRUE )" >> ${WORKDIR}/toolchain.cmake
+}
+
+do_compile:prepend() {
+ export BUILD_DOC=1
+}
+
+do_install:prepend() {
+ export BUILD_DOC=1
+}
+
+do_install:append () {
+ sed -i -e 's:^#!/usr/bin/python$:&3:' \
+ -e 's:${WORKDIR}.*python3:${bindir}/python3:' \
+ ${D}${bindir}/ceph ${D}${bindir}/ceph-crash \
+ ${D}${bindir}/cephfs-top \
+ ${D}${sbindir}/ceph-volume ${D}${sbindir}/ceph-volume-systemd
+ find ${D} -name SOURCES.txt | xargs sed -i -e 's:${WORKDIR}::'
+ install -d ${D}${sysconfdir}/ceph
+ install -m 644 ${WORKDIR}/ceph.conf ${D}${sysconfdir}/ceph/
+ install -d ${D}${systemd_unitdir}
+ mv ${D}${libexecdir}/ceph/ceph-osd-prestart.sh ${D}${libdir}/ceph
+ 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
+}
+
+do_install:append:class-target () {
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ echo "d /var/lib/ceph/crash/posted 0755 root root - -" > ${D}${sysconfdir}/tmpfiles.d/ceph-placeholder.conf
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -d ${D}${sysconfdir}/default/volatiles
+ echo "d root root 0755 /var/lib/ceph/crash/posted none" > ${D}${sysconfdir}/default/volatiles/99_ceph-placeholder
+ fi
+}
+
+pkg_postinst:${PN}() {
+ if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then
+ ${sysconfdir}/init.d/populate-volatile.sh update
+ fi
+}
+
+FILES:${PN} += "\
+ ${libdir}/rados-classes/*.so.* \
+ ${libdir}/ceph/compressor/*.so \
+ ${libdir}/rados-classes/*.so \
+ ${libdir}/ceph/*.so \
+ ${libdir}/libcephsqlite.so \
+"
+
+FILES:${PN} += " \
+ /etc/tmpfiles.d/ceph-placeholder.conf \
+ /etc/default/volatiles/99_ceph-placeholder \
+"
+
+FILES:${PN}-dev = " \
+ ${includedir} \
+ ${libdir}/libcephfs.so \
+ ${libdir}/librados*.so \
+ ${libdir}/librbd.so \
+ ${libdir}/librgw.so \
+"
+
+FILES:${PN}-python = "\
+ ${PYTHON_SITEPACKAGES_DIR}/* \
+"
+RDEPENDS:${PN} += "\
+ python3-core \
+ python3-misc \
+ python3-modules \
+ python3-prettytable \
+ ${PN}-python \
+ gawk \
+ bash \
+"
+COMPATIBLE_HOST = "(x86_64).*"
+PACKAGES += " \
+ ${PN}-python \
+"
+INSANE_SKIP:${PN}-python += "ldflags buildpaths"
+INSANE_SKIP:${PN} += "dev-so"
+INSANE_SKIP:${PN}-dbg += "buildpaths"
+CCACHE_DISABLE = "1"
+
+CVE_PRODUCT = "ceph ceph_storage ceph_storage_mon ceph_storage_osd"
diff --git a/recipes-extended/cloud-init/cloud-init/0001-setup.py-check-for-install-anywhere-in-args.patch b/recipes-extended/cloud-init/cloud-init/0001-setup.py-check-for-install-anywhere-in-args.patch
new file mode 100644
index 00000000..e5b214fe
--- /dev/null
+++ b/recipes-extended/cloud-init/cloud-init/0001-setup.py-check-for-install-anywhere-in-args.patch
@@ -0,0 +1,33 @@
+From 5c96379a4727c07fb5222208525013ec8b878184 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Wed, 4 Nov 2020 21:15:50 -0500
+Subject: [PATCH] setup.py: check for 'install' anywhere in args
+
+The python3distutils bbclass calls setup.py in a different way then
+cloud-init expects .. the 'install' is not argument 1, but is in fact
+after a 'build' and some other options.
+
+So rather than checking for install to be argv[1], we check for it
+anywhere in the arguments are trigger the template replacement to
+happen.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: git/setup.py
+===================================================================
+--- git.orig/setup.py
++++ git/setup.py
+@@ -60,7 +60,7 @@
+ that files are different outside of the debian directory."""
+
+ # newer versions just use install.
+- if "install" not in sys.argv:
++ if not ('install' in sys.argv or sys.argv[1].startswith('bdist*')):
+ return template
+
+ tmpl_ext = ".tmpl"
diff --git a/recipes-extended/cloud-init/cloud-init/cloud-init-source-local-lsb-functions.patch b/recipes-extended/cloud-init/cloud-init/cloud-init-source-local-lsb-functions.patch
new file mode 100644
index 00000000..0b396781
--- /dev/null
+++ b/recipes-extended/cloud-init/cloud-init/cloud-init-source-local-lsb-functions.patch
@@ -0,0 +1,66 @@
+From 72dd3b4b38705442d821fe97a40061f23e748769 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Thu, 6 Mar 2014 01:55:09 -0500
+Subject: [PATCH] cloud-init: source local lsb functions
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ sysvinit/debian/cloud-config | 1 +
+ sysvinit/debian/cloud-final | 1 +
+ sysvinit/debian/cloud-init | 1 +
+ sysvinit/debian/cloud-init-local | 1 +
+ 4 files changed, 4 insertions(+)
+
+diff --git a/sysvinit/debian/cloud-config b/sysvinit/debian/cloud-config
+index 53322748ac65..7874dcfab9b0 100644
+--- a/sysvinit/debian/cloud-config
++++ b/sysvinit/debian/cloud-config
+@@ -30,6 +30,7 @@ SCRIPTNAME=/etc/init.d/$NAME
+ # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+ # and status_of_proc is working.
+ . /lib/lsb/init-functions
++. /etc/init.d/functions
+
+ if init_is_upstart; then
+ case "$1" in
+diff --git a/sysvinit/debian/cloud-final b/sysvinit/debian/cloud-final
+index 55afc8b0678a..661314f0b64c 100644
+--- a/sysvinit/debian/cloud-final
++++ b/sysvinit/debian/cloud-final
+@@ -32,6 +32,7 @@ SCRIPTNAME=/etc/init.d/$NAME
+ # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+ # and status_of_proc is working.
+ . /lib/lsb/init-functions
++. /etc/init.d/functions
+
+ if init_is_upstart; then
+ case "$1" in
+diff --git a/sysvinit/debian/cloud-init b/sysvinit/debian/cloud-init
+index 48fa04233f00..d3ccec99bacc 100755
+--- a/sysvinit/debian/cloud-init
++++ b/sysvinit/debian/cloud-init
+@@ -30,6 +30,7 @@ SCRIPTNAME=/etc/init.d/$NAME
+ # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+ # and status_of_proc is working.
+ . /lib/lsb/init-functions
++. /etc/init.d/functions
+
+ if init_is_upstart; then
+ case "$1" in
+diff --git a/sysvinit/debian/cloud-init-local b/sysvinit/debian/cloud-init-local
+index 802ee8e9f386..c309e8347324 100644
+--- a/sysvinit/debian/cloud-init-local
++++ b/sysvinit/debian/cloud-init-local
+@@ -29,6 +29,7 @@ SCRIPTNAME=/etc/init.d/$NAME
+ # Depend on lsb-base (>= 3.2-14) to ensure that this file is present
+ # and status_of_proc is working.
+ . /lib/lsb/init-functions
++. /etc/init.d/functions
+
+ if init_is_upstart; then
+ case "$1" in
+--
+1.7.10.4
+
diff --git a/recipes-extended/cloud-init/cloud-init_git.bb b/recipes-extended/cloud-init/cloud-init_git.bb
new file mode 100644
index 00000000..6cb3d3b5
--- /dev/null
+++ b/recipes-extended/cloud-init/cloud-init_git.bb
@@ -0,0 +1,73 @@
+DESCRIPTION = "Init scripts for use on cloud images"
+HOMEPAGE = "https://github.com/canonical/cloud-init"
+SECTION = "devel/python"
+LICENSE = "GPL-3.0-only | Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c6dd79b6ec2130a3364f6fa9d6380408 \
+ file://LICENSE-GPLv3;md5=d32239bcb673463ab874e80d47fae504 \
+ file://LICENSE-Apache2.0;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+"
+
+SRCREV = "e982c20875db3750c8dfc1915e7a4cee37376924"
+SRC_URI = "git://github.com/canonical/cloud-init;branch=24.1.x;protocol=https \
+ file://cloud-init-source-local-lsb-functions.patch \
+ file://0001-setup.py-check-for-install-anywhere-in-args.patch \
+"
+
+PV = "v23.4.1+git"
+
+S = "${WORKDIR}/git"
+
+DISTUTILS_INSTALL_ARGS:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '--init-system=sysvinit_deb', '', d)}"
+DISTUTILS_INSTALL_ARGS:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '--init-system=systemd', '', d)}"
+
+do_install:append() {
+ ln -s ${libdir}/${BPN}/uncloud-init ${D}${sysconfdir}/cloud/uncloud-init
+ ln -s ${libdir}/${BPN}/write-ssh-key-fingerprints ${D}${sysconfdir}/cloud/write-ssh-key-fingerprints
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
+ install -m 755 -d ${D}${sysconfdir}/init.d/
+ install -m 755 ${S}/sysvinit/debian/* ${D}${sysconfdir}/init.d/
+ fi
+
+}
+
+inherit pkgconfig
+inherit setuptools3_legacy
+inherit update-rc.d
+inherit systemd
+
+# setup.py calls "pkg-config systemd --variable=systemdsystemunitdir" and needs to find our dev manager
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'udev', '', d)}"
+
+inherit python3native
+
+PACKAGES += "${PN}-systemd"
+
+FILES:${PN} += "${sysconfdir}/* \
+ ${datadir}/* \
+ ${nonarch_libdir}/${BPN}/*"
+
+FILES:${PN}-systemd += "${systemd_unitdir}/*"
+RDEPENDS:${PN}-systemd += " ${PN}"
+
+INITSCRIPT_PACKAGES = "${PN}"
+INITSCRIPT_NAME:${BPN} = "cloud-init"
+
+DEPENDS += "python3-pyyaml-native \
+ python3-requests-native \
+ python3-jinja2-native \
+ "
+
+RDEPENDS:${PN} = "python3 \
+ python3-jinja2 \
+ python3-configobj \
+ python3-requests \
+ python3-jsonpatch \
+ python3-jsonschema \
+ python3-pyyaml \
+ python3-oauthlib \
+ python3-netifaces \
+ python3-charset-normalizer \
+ bash \
+ "
+
diff --git a/recipes-extended/dev86/dev86/0001-cpp-Makefile-respect-LDFLAGS-when-building-bcc-cpp.patch b/recipes-extended/dev86/dev86/0001-cpp-Makefile-respect-LDFLAGS-when-building-bcc-cpp.patch
new file mode 100644
index 00000000..85f3aef8
--- /dev/null
+++ b/recipes-extended/dev86/dev86/0001-cpp-Makefile-respect-LDFLAGS-when-building-bcc-cpp.patch
@@ -0,0 +1,25 @@
+From 12f3a54801e15f3bdd5222ca1487f2fe36141c5d Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 14 May 2021 06:30:18 -0700
+Subject: [PATCH] cpp/Makefile: respect LDFLAGS when building bcc-cpp
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ cpp/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cpp/Makefile b/cpp/Makefile
+index 0ea43cc..303b43c 100644
+--- a/cpp/Makefile
++++ b/cpp/Makefile
+@@ -3,7 +3,7 @@ CFLAGS=-Wall -Wstrict-prototypes
+ all: bcc-cpp
+
+ bcc-cpp: main.o cpp.o hash.o token1.o token2.o
+- $(CC) $(CFLAGS) -o bcc-cpp main.o cpp.o hash.o token1.o token2.o
++ $(CC) $(CFLAGS) $(LDFLAGS) -o bcc-cpp main.o cpp.o hash.o token1.o token2.o
+
+ clean realclean:
+ rm -f bcc-cpp main.o cpp.o hash.o token1.o token2.o tmp.h
diff --git a/recipes-extended/dev86/dev86/0001-cpp-fix-race-writing-token.h-files.patch b/recipes-extended/dev86/dev86/0001-cpp-fix-race-writing-token.h-files.patch
new file mode 100644
index 00000000..e009e01a
--- /dev/null
+++ b/recipes-extended/dev86/dev86/0001-cpp-fix-race-writing-token.h-files.patch
@@ -0,0 +1,45 @@
+Upstream-Status: Submitted [https://github.com/jbruchon/dev86/pull/23]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+From f507ee398ae20e4e97f01dfbd9a8709a90bc760f Mon Sep 17 00:00:00 2001
+From: Ross Burton <ross.burton@arm.com>
+Date: Fri, 29 Apr 2022 16:44:08 +0100
+Subject: [PATCH] cpp: fix race writing token.h files
+
+The rules for token1.h and token2.h both write to a temporary file tmp.h
+before renaming to token1.h or token2.h. However, in a parallel build
+these will execute at the same time and race.
+
+ gperf -aptTc -N is_ctok -H hash1 token1.tok > tmp.h
+ gperf -aptTc -k1,3 -N is_ckey -H hash2 token2.tok > tmp.h
+ mv tmp.h token1.h
+ mv tmp.h token2.h
+ mv: cannot stat 'tmp.h': No such file or directory
+
+By using gperf --output-file, the race is avoided entirely.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+---
+ cpp/Makefile | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/cpp/Makefile b/cpp/Makefile
+index 0ea43cc..743694f 100644
+--- a/cpp/Makefile
++++ b/cpp/Makefile
+@@ -20,9 +20,7 @@ token1.o: token1.h
+ token2.o: token2.h
+
+ token1.h: token1.tok
+- gperf -aptTc -N is_ctok -H hash1 token1.tok > tmp.h
+- mv tmp.h token1.h
++ gperf -aptTc -N is_ctok -H hash1 --output-file $@ $<
+
+ token2.h: token2.tok
+- gperf -aptTc -k1,3 -N is_ckey -H hash2 token2.tok > tmp.h
+- mv tmp.h token2.h
++ gperf -aptTc -k1,3 -N is_ckey -H hash2 --output-file $@ $<
+--
+2.25.1
+
diff --git a/recipes-extended/dev86/dev86/0003-cpp-update-token1.tok-to-make-new-gperf-happy-regen..patch b/recipes-extended/dev86/dev86/0003-cpp-update-token1.tok-to-make-new-gperf-happy-regen..patch
new file mode 100644
index 00000000..47c283b2
--- /dev/null
+++ b/recipes-extended/dev86/dev86/0003-cpp-update-token1.tok-to-make-new-gperf-happy-regen..patch
@@ -0,0 +1,30 @@
+From e908a3ad04bb40e425542b85fbb3a1eb5a38e194 Mon Sep 17 00:00:00 2001
+From: Tee-Kiah Chia <tkchia@users.noreply.github.com>
+Date: Thu, 27 Feb 2020 00:52:05 +0800
+Subject: [PATCH] [cpp] update token1.tok to make new gperf happy; regen.
+ token1.h
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Pending [it was submitted in https://github.com/jbruchon/dev86/pull/19
+but then closed by author]
+
+Remove regenerated token1.h as we'll force it to regenerate in do_compile.
+
+---
+ cpp/token1.h | 170 +++++++++++++++++++++++++++++++++----------------
+ cpp/token1.tok | 2 +-
+ 2 files changed, 115 insertions(+), 57 deletions(-)
+
+diff --git a/cpp/token1.tok b/cpp/token1.tok
+index cd668ce..a98926f 100644
+--- a/cpp/token1.tok
++++ b/cpp/token1.tok
+@@ -7,7 +7,7 @@ struct token_trans { char * name; int token; };
+ -=, TK_SUB_ASSIGN
+ *=, TK_MUL_ASSIGN
+ /=, TK_DIV_ASSIGN
+-%=, TK_MOD_ASSIGN
++"%=", TK_MOD_ASSIGN
+ &=, TK_AND_ASSIGN
+ ^=, TK_XOR_ASSIGN
+ |=, TK_OR_ASSIGN
diff --git a/recipes-extended/dev86/dev86/0004-regen-token2.h-token1.h-with-gperf-3.1.patch b/recipes-extended/dev86/dev86/0004-regen-token2.h-token1.h-with-gperf-3.1.patch
new file mode 100644
index 00000000..4a5bb25e
--- /dev/null
+++ b/recipes-extended/dev86/dev86/0004-regen-token2.h-token1.h-with-gperf-3.1.patch
@@ -0,0 +1,59 @@
+From ce2b9747d51df2a4c358a037950f0464f3f53fe8 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Fri, 14 May 2021 14:31:50 +0000
+Subject: [PATCH] regen token2.h, token1.h with gperf-3.1
+
+* update cc.h, token1.c, token2.c to be compatible with
+ gperf-3.1 output
+
+Upstream-Status: Pending
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+
+Remove regenerated token2.h as we'll force it to regenerate in do_compile.
+---
+ cpp/cc.h | 4 +-
+ cpp/token1.c | 2 +-
+ cpp/token1.h | 22 ++----
+ cpp/token2.c | 2 +-
+ cpp/token2.h | 211 +++++++++++++++++++++++++++++++--------------------
+ 5 files changed, 140 insertions(+), 101 deletions(-)
+
+diff --git a/cpp/cc.h b/cpp/cc.h
+index 9c298e7..3724543 100644
+--- a/cpp/cc.h
++++ b/cpp/cc.h
+@@ -25,8 +25,8 @@ extern int dialect;
+ extern int gettok P((void));
+
+ struct token_trans { char * name; int token; };
+-struct token_trans * is_ctok P((const char *str, unsigned int len));
+-struct token_trans * is_ckey P((const char *str, unsigned int len));
++struct token_trans * is_ctok P((register const char *str, register size_t len));
++struct token_trans * is_ckey P((register const char *str, register size_t len));
+
+ #define WORDSIZE 128
+ #define TK_WSPACE 256
+diff --git a/cpp/token1.c b/cpp/token1.c
+index f3aa420..cc47f3e 100644
+--- a/cpp/token1.c
++++ b/cpp/token1.c
+@@ -6,6 +6,6 @@
+ #ifdef __GNUC__
+ __inline
+ #endif
+-static unsigned int hash1 P((register const char *, register unsigned int));
++static unsigned int hash1 P((register const char *, register size_t));
+
+ #include "token1.h"
+diff --git a/cpp/token2.c b/cpp/token2.c
+index b4d22b1..fbc790d 100644
+--- a/cpp/token2.c
++++ b/cpp/token2.c
+@@ -6,6 +6,6 @@
+ #ifdef __GNUC__
+ __inline
+ #endif
+-static unsigned int hash2 P((register const char *, register unsigned int));
++static unsigned int hash2 P((register const char *, register size_t));
+
+ #include "token2.h"
diff --git a/recipes-extended/dev86/dev86/cross.patch b/recipes-extended/dev86/dev86/cross.patch
new file mode 100644
index 00000000..fd62c5dd
--- /dev/null
+++ b/recipes-extended/dev86/dev86/cross.patch
@@ -0,0 +1,29 @@
+Build ifdef using BUILD_CC, not CC.
+
+Upstream-Status: Submitted [https://github.com/jbruchon/dev86/pull/22]
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+diff --git a/Makefile b/Makefile
+index 8a61b65..99f41de 100644
+--- a/Makefile
++++ b/Makefile
+@@ -22,6 +22,10 @@ CFLAGS= -O
+ IFDEFNAME= ifdef
+ WD=$(shell pwd)
+
++BUILD_CC ?= $(CC)
++BUILD_CFLAGS ?= $(CFLAGS)
++BUILD_LDFLAGS ?= $(LDFLAGS)
++
+ # Some makes take the last of a list as the default ...
+ all: make.fil
+ PATH="`pwd`/bin:$$PATH" $(MAKE) -f make.fil VERSION=$(VERSION) TOPDIR=`pwd` $@
+@@ -65,7 +69,7 @@ make.fil: $(IFDEFNAME) makefile.in
+ @rm -f tmp.mak tmp.sed
+
+ $(IFDEFNAME): ifdef.c
+- $(CC) $(IFDEFARCH) $(CFLAGS) $(IFDEFFLAGS) $(LDFLAGS) -o $(IFDEFNAME) ifdef.c
++ $(BUILD_CC) $(IFDEFARCH) $(BUILD_CFLAGS) $(IFDEFFLAGS) $(BUILD_LDFLAGS) -o $(IFDEFNAME) ifdef.c
+
+ uninstall:
+ @echo 'Sorry, no go; it was just wrong.'
diff --git a/recipes-extended/dev86/dev86_0.16.20.bb b/recipes-extended/dev86/dev86_0.16.20.bb
deleted file mode 100644
index 38dbf8d4..00000000
--- a/recipes-extended/dev86/dev86_0.16.20.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-DESCRIPTION = "This is a cross development C compiler, assembler and linker environment for the production of 8086 executables (Optionally MSDOS COM)"
-HOMEPAGE = "http://www.debath.co.uk/dev86/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-SECTION = "console/tools"
-PR="r0"
-
-SRC_URI="http://v3.sk/~lkundrak/dev86/archive/Dev86src-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "567cf460d132f9d8775dd95f9208e49a"
-SRC_URI[sha256sum] = "61817a378c8c8ba65f36c6792d457a305dc4eedae8cdc8b6233bf2bb28e5fe8d"
-
-S = "${WORKDIR}/dev86-${PV}"
-
-BBCLASSEXTEND = "native"
-EXTRA_OEMAKE = "VERSION=${PV} PREFIX=${prefix} DIST=${D}"
-
-do_compile() {
-
- oe_runmake make.fil
- oe_runmake -f make.fil bcc86 as86 ld86
-
-}
-
-do_install() {
-
- if [ "${prefix}"=="" ] ; then
- export prefix=/usr
- fi
-
- oe_runmake install-bcc
- ln -s ../lib/bcc/bcc-cpp ${D}${prefix}/bin/bcc-cpp
- ln -s ../lib/bcc/bcc-cc1 ${D}${prefix}/bin/bcc-cc1
-
-}
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
-FILES_${PN} += "${libdir}/bcc"
-INSANE_SKIP_${PN} = "already-stripped"
diff --git a/recipes-extended/dev86/dev86_git.bb b/recipes-extended/dev86/dev86_git.bb
new file mode 100644
index 00000000..a3d0fded
--- /dev/null
+++ b/recipes-extended/dev86/dev86_git.bb
@@ -0,0 +1,43 @@
+DESCRIPTION = "This is a cross development C compiler, assembler and linker environment for the production of 8086 executables (Optionally MSDOS COM)"
+HOMEPAGE = "http://www.debath.co.uk/dev86/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+SECTION = "console/tools"
+
+BASE_PV="0.16.21"
+PV = "${BASE_PV}+git"
+SRCREV = "e254e0b19651d3b8a20225b40281c9974a95dec4"
+SRC_URI = "git://github.com/jbruchon/${BPN}.git;protocol=https;branch=master \
+ file://0001-cpp-Makefile-respect-LDFLAGS-when-building-bcc-cpp.patch \
+ file://0003-cpp-update-token1.tok-to-make-new-gperf-happy-regen..patch \
+ file://0004-regen-token2.h-token1.h-with-gperf-3.1.patch \
+ file://cross.patch \
+ file://0001-cpp-fix-race-writing-token.h-files.patch \
+"
+
+S = "${WORKDIR}/git"
+
+DEPENDS = "gperf-native"
+
+BBCLASSEXTEND = "native nativesdk"
+EXTRA_OEMAKE = "VERSION=${BASE_PV} PREFIX=${prefix} DIST=${D} LDFLAGS='${LDFLAGS}' INEXE=''"
+
+do_compile() {
+ # always regenerate token1.h, token2.h for deterministic behavior
+ rm -f ${S}/cpp/token1.h ${S}/cpp/token2.h
+ oe_runmake make.fil
+ oe_runmake -f make.fil bcc86 as86 ld86
+}
+
+do_install() {
+
+ if [ "${prefix}"=="" ] ; then
+ export prefix=/usr
+ fi
+
+ oe_runmake install-bcc
+ ln -s ../lib/bcc/bcc-cpp ${D}${prefix}/bin/bcc-cpp
+ ln -s ../lib/bcc/bcc-cc1 ${D}${prefix}/bin/bcc-cc1
+}
+
+FILES:${PN} += "${libdir}/bcc"
diff --git a/recipes-extended/diod/diod_1.0.24.bb b/recipes-extended/diod/diod_1.0.24.bb
index a4a85284..5e191dc0 100644
--- a/recipes-extended/diod/diod_1.0.24.bb
+++ b/recipes-extended/diod/diod_1.0.24.bb
@@ -5,32 +5,29 @@ Although the kernel client supports several 9P variants, diod only supports \
9P2000.L, and only in its feature-complete form, as it appeared in 2.6.38."
SECTION = "console/network"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-PV = "1.0.24+git${SRCPV}"
-SRCREV = "0ea3fe3d829b5085307cd27a512708d99ef48199"
-SRC_URI = "git://github.com/chaos/diod.git;protocol=git \
+PV = "1.0.24+git"
+SRCREV = "b4b5e8e00ed11b21d7fcf05a080dc054a8eac2d6"
+SRC_URI = "git://github.com/chaos/diod.git;protocol=https;branch=master \
file://diod \
file://diod.conf \
- file://0001-build-allow-builds-to-work-with-separate-build-dir.patch \
- file://0002-auto.diod.in-remove-bashisms.patch \
- file://0001-diod-ops.c-add-header-file-for-makedev.patch \
- file://0001-drod-add-option-to-config-systemddir.patch \
- "
+ file://0001-build-Find-lua-with-pkg-config.patch \
+ "
DEPENDS = "libcap ncurses tcp-wrappers lua"
-EXTRA_OECONF = "--with-systemddir=${systemd_unitdir}/system"
+EXTRA_OEMAKE += "systemddir=${systemd_unitdir}/system"
S = "${WORKDIR}/git"
-inherit autotools systemd
+inherit autotools pkgconfig systemd
-do_install_append () {
+do_install:append () {
# install our init based on start-stop-daemon
install -D -m 0755 ${WORKDIR}/diod ${D}${sysconfdir}/init.d/diod
# install a real(not commented) configuration file for diod
install -m 0644 ${WORKDIR}/diod.conf ${D}${sysconfdir}/diod.conf
}
-FILES_${PN} += "${systemd_unitdir}"
+FILES:${PN} += "${systemd_unitdir}"
diff --git a/recipes-extended/diod/files/0001-build-Find-lua-with-pkg-config.patch b/recipes-extended/diod/files/0001-build-Find-lua-with-pkg-config.patch
new file mode 100644
index 00000000..9f61792a
--- /dev/null
+++ b/recipes-extended/diod/files/0001-build-Find-lua-with-pkg-config.patch
@@ -0,0 +1,50 @@
+From 8124eec4e59222f1c3f3dc4d7e6706e13c33755c Mon Sep 17 00:00:00 2001
+From: Ola x Nilsson <olani@axis.com>
+Date: Wed, 6 Mar 2024 18:40:16 +0100
+Subject: [PATCH] build: Find lua with pkg-config
+
+ax_lua.m4 does not support cross compilation.
+
+Upstream-Status: Inappropriate (Embedded specific)
+
+---
+ configure.ac | 26 +++++++++++++++++++++++++-
+ 1 file changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index e8fcdb2..f3ebdc5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -121,7 +121,31 @@ AC_ARG_ENABLE([config],
+ [AS_HELP_STRING([--disable-config], [disable lua config file support])])
+
+ AS_IF([test "x$enable_config" != "xno"], [
+- AX_PROG_LUA([5.1],[5.5])
++ dnl Use pkg_config to check for lua settings. This is not standard
++ dnl as lua typically does not distribute a pc file. The
++ dnl OpenEmbedded recipe adds one that can be used. Reuse/replicate
++ dnl as much of AX_PROG_LUA as possible so AX_LUA_HEADERS and
++ dnl AX_LUA_LIBS are still usable.
++ PKG_CHECK_EXISTS([lua], [
++ AS_IF([
++ $PKG_CONFIG --atleast-version=5.1 lua && $PKG_CONFIG --max-version=5.5 lua
++ ],[
++ AC_ARG_VAR([LUA], [The LUA interpreter, e.g. /usr/bin/lua5.1])
++ dnl should really check that the file exists ...
++ AC_SUBST([LUA], [${bindir}/lua])
++ AC_CACHE_CHECK([for $LUA version], [ax_cv_lua_version], [
++ ax_cv_lua_version=[`$PKG_CONFIG --modversion lua | $SED 's/^\([0-9]\+\.[0-9]\+\).*/\1/'`]
++ ])
++ AS_IF([test "x$ax_cv_lua_version" = 'x'],
++ [AC_MSG_ERROR([invalid Lua version number])])
++ AC_SUBST([LUA_VERSION], [$ax_cv_lua_version])
++ AC_SUBST([LUA_SHORT_VERSION], [`echo "$LUA_VERSION" | $SED 's|\.||'`])
++ ],[
++ AC_MSG_ERROR([Incorrect lua version])
++ ])
++ ],[
++ AX_PROG_LUA([5.1],[5.5])
++ ])
+ AX_LUA_HEADERS([],[
+ AC_MSG_ERROR([Install lua headers or configure with --disable-config])
+ ])
diff --git a/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch b/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
deleted file mode 100644
index f40e0eb5..00000000
--- a/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From 43403468298ef4167baa5d84de2ee2eaf7f4007a Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 9 Jan 2015 18:34:04 +0000
-Subject: [PATCH 1/2] build: allow builds to work with separate build dir
-
-Remove assumptions in include paths that assume the build
-is happening in the source directories.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- diod/Makefile.am | 2 +-
- libdiod/Makefile.am | 2 +-
- liblsd/Makefile.am | 2 +-
- libnpclient/Makefile.am | 2 +-
- scripts/Makefile.am | 6 +++---
- tests/kern/dbench/Makefile.am | 4 ++--
- utils/Makefile.am | 2 +-
- 7 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/diod/Makefile.am b/diod/Makefile.am
-index 7644be7..fdaf130 100644
---- a/diod/Makefile.am
-+++ b/diod/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
-
- AM_CPPFLAGS = \
-- -I../libnpfs -I../liblsd -I../libdiod
-+ -I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod
-
- sbin_PROGRAMS = diod
-
-diff --git a/libdiod/Makefile.am b/libdiod/Makefile.am
-index 4810e14..6905cdd 100644
---- a/libdiod/Makefile.am
-+++ b/libdiod/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
-
- AM_CPPFLAGS = \
-- -I../libnpfs -I../libnpclient -I../liblsd
-+ -I$(srcdir)/../libnpfs -I$(srcdir)/../libnpclient -I$(srcdir)/../liblsd
-
- noinst_LIBRARIES = libdiod.a
-
-diff --git a/liblsd/Makefile.am b/liblsd/Makefile.am
-index c3e5658..7e18bf8 100644
---- a/liblsd/Makefile.am
-+++ b/liblsd/Makefile.am
-@@ -1,6 +1,6 @@
- AM_CFLAGS = @GCCWARN@
-
--AM_CPPFLAGS = -I../libdiod
-+AM_CPPFLAGS = -I$(srcdir)/../libdiod
-
- noinst_LIBRARIES = liblsd.a
-
-diff --git a/libnpclient/Makefile.am b/libnpclient/Makefile.am
-index 5305df9..cbaf266 100644
---- a/libnpclient/Makefile.am
-+++ b/libnpclient/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
-
- AM_CPPFLAGS = \
-- -I../libnpfs
-+ -I$(srcdir)/../libnpfs
-
- noinst_LIBRARIES = libnpclient.a
-
-diff --git a/scripts/Makefile.am b/scripts/Makefile.am
-index 51c24a3..2aba728 100644
---- a/scripts/Makefile.am
-+++ b/scripts/Makefile.am
-@@ -1,9 +1,9 @@
--systemddir=$(sysconfdir)/systemd/system
-+systemddir=/lib/systemd/system
-
- install-data-local:
-- $(top_srcdir)/config/install-sh -m 755 $(srcdir)/auto.diod \
-+ $(top_srcdir)/config/install-sh -m 755 ./auto.diod \
- $(DESTDIR)$(sysconfdir)/auto.diod
-- $(top_srcdir)/config/install-sh -m 755 $(srcdir)/diod.service \
-+ $(top_srcdir)/config/install-sh -m 644 ./diod.service \
- $(DESTDIR)$(systemddir)/diod.service
-
- uninstall-local:
-diff --git a/tests/kern/dbench/Makefile.am b/tests/kern/dbench/Makefile.am
-index e0cdefa..1704f9f 100644
---- a/tests/kern/dbench/Makefile.am
-+++ b/tests/kern/dbench/Makefile.am
-@@ -2,7 +2,7 @@ AM_CFLAGS = -w
-
- # VERSION=4.00
-
--AM_CPPFLAGS = -DDATADIR=\"$(X_DATADIR)\"
-+AM_CPPFLAGS = -I. -DDATADIR=\"$(X_DATADIR)\"
-
- LDADD = $(LIBPOPT)
-
-@@ -25,6 +25,6 @@ BUILT_SOURCES = proto.h
- CLEANFILES = proto.h
-
- proto.h: $(dbench_SOURCES) mkproto.pl
-- perl mkproto.pl $(dbench_SOURCES) > proto.h
-+ $(srcdir)/mkproto.pl $(patsubst %,$(srcdir),$(dbench_SOURCES)) > proto.h
-
- EXTRA_DIST = mkproto.pl
-diff --git a/utils/Makefile.am b/utils/Makefile.am
-index 169b6c4..91d571d 100644
---- a/utils/Makefile.am
-+++ b/utils/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
-
- AM_CPPFLAGS = \
-- -I../libnpfs -I../liblsd -I../libdiod -I../libnpclient
-+ -I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod -I$(srcdir)/../libnpclient
-
- sbin_PROGRAMS = diodmount diodcat dtop diodload diodls diodshowmount dioddate
-
---
-2.11.0
-
diff --git a/recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch b/recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch
deleted file mode 100644
index e6f7ece2..00000000
--- a/recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From f75836731d6051d85e6317eb4c12465bafb4973e Mon Sep 17 00:00:00 2001
-From: "Hongzhi.Song" <hongzhi.song@windriver.com>
-Date: Fri, 31 Aug 2018 05:47:02 -0400
-Subject: [PATCH] diod/ops.c: add header file for makedev
-
-Error:
-diod/ops.c:845: undefined reference to `makedev'
-
-Fixed:
-Glibc removes sys/sysmacros.h which defines makedev from sys/types.h
-since v2.28. [Commit ID: e16deca62e16f]
-
-And then glibc suggestions us to include <sys/sysmacros.h> directly if
-code needs it.
-
-Upstream-Status: Submitted
-[diod:
-mail: v9fs-developer@lists.sourceforge.net
-author: hongzhi.song@windriver.com]
-
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
----
- diod/ops.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/diod/ops.c b/diod/ops.c
-index c6c8291..469a502 100644
---- a/diod/ops.c
-+++ b/diod/ops.c
-@@ -74,6 +74,7 @@
- #include <pthread.h>
- #include <errno.h>
- #include <sys/types.h>
-+#include <sys/sysmacros.h>
-
- #ifdef __FreeBSD__
- #if !__BSD_VISIBLE
---
-2.8.1
-
diff --git a/recipes-extended/diod/files/0001-drod-add-option-to-config-systemddir.patch b/recipes-extended/diod/files/0001-drod-add-option-to-config-systemddir.patch
deleted file mode 100644
index 8b70d8fa..00000000
--- a/recipes-extended/diod/files/0001-drod-add-option-to-config-systemddir.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 365159534b1981dfe291ecc05d2455f32652a166 Mon Sep 17 00:00:00 2001
-From: Changqing Li <changqing.li@windriver.com>
-Date: Mon, 26 Aug 2019 18:00:39 +0800
-Subject: [PATCH] drod: add option to config systemddir
-
-Upstream-Status: Pending
-
-Not need to send upstream, since upstream have refactor
-related code, but not released. and this version release
-4 years ago, not proper to just backport one or more
-commits, this patch maybe could be dropped after upgrade.
-
-Signed-off-by: Changqing Li <changqing.li@windriver.com>
----
- configure.ac | 9 +++++++++
- scripts/Makefile.am | 2 +-
- 2 files changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 1cb8579..3e4a5ec 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -25,6 +25,15 @@ AC_DEFINE([_GNU_SOURCE], 1,
- [Define _GNU_SOURCE so that we get all necessary prototypes])
-
- ##
-+#Add option to config systemddir
-+##
-+AC_ARG_WITH([systemddir],
-+ [AS_HELP_STRING([--with-systemddir=DIR], [systemd dir])],
-+ [systemddir=$withval],
-+ [systemddir="/lib/systemd/system"])
-+AC_SUBST([systemddir], [$systemddir])
-+
-+##
- # Checks for programs
- ##
- AC_PROG_CC
-diff --git a/scripts/Makefile.am b/scripts/Makefile.am
-index 2aba728..40822b7 100644
---- a/scripts/Makefile.am
-+++ b/scripts/Makefile.am
-@@ -1,4 +1,4 @@
--systemddir=/lib/systemd/system
-+systemddir=@systemddir@
-
- install-data-local:
- $(top_srcdir)/config/install-sh -m 755 ./auto.diod \
---
-2.7.4
-
diff --git a/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch b/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
deleted file mode 100644
index 65d6ff6b..00000000
--- a/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5a9e09dc5de833db11607530351cd87cecbfd17e Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Thu, 22 Jun 2017 06:32:30 +0000
-Subject: [PATCH 2/2] auto.diod.in: remove bashisms
-
-Upstream-Status: Pending
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- scripts/auto.diod.in | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/scripts/auto.diod.in b/scripts/auto.diod.in
-index f63e004..4d5fc3a 100755
---- a/scripts/auto.diod.in
-+++ b/scripts/auto.diod.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # auto.diod - executable automounter map for diod file systems
- #
-@@ -41,15 +41,15 @@ dcatopts="${DIOD_TIMEOUT:+-t $DIOD_TIMEOUT}"
- for server in $DIOD_SERVERS; do
- $DIOD_DIODCAT -s $server $dcatopts exports | awk '{print $1}' |\
- while read path; do
-- if [ "$path" == "/" ]; then
-- if [ "$key" == "ROOT" ]; then
-+ if [ "$path" = "/" ]; then
-+ if [ "$key" = "ROOT" ]; then
- echo "$prefix $server:$path"
- exit 0
- fi
-- elif [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
-- || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
-- || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
-- || [ "$key" == "$(basename $path)" ]; then
-+ elif [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
-+ || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
-+ || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
-+ || [ "$key" = "$(basename $path)" ]; then
- echo "$prefix $server:$path"
- exit 0
- fi
---
-2.11.0
-
diff --git a/recipes-extended/fuse-overlayfs/fuse-overlayfs/0001-utils-Add-missing-include-on-limits.h.patch b/recipes-extended/fuse-overlayfs/fuse-overlayfs/0001-utils-Add-missing-include-on-limits.h.patch
new file mode 100644
index 00000000..cd504ce5
--- /dev/null
+++ b/recipes-extended/fuse-overlayfs/fuse-overlayfs/0001-utils-Add-missing-include-on-limits.h.patch
@@ -0,0 +1,36 @@
+From b48e958aaecfdfc3bb48db082a548a09d6487181 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei.gherzan@huawei.com>
+Date: Wed, 13 Jul 2022 12:05:07 +0200
+Subject: [PATCH] utils: Add missing include on limits.h
+
+This happens to not be an issue with glibc because it gets indirectly
+included via dirent.h:
+
+.. /usr/include/dirent.h
+[...]
+..... /usr/include/linux/limits.h
+
+When using the musl libc implementation, that is not the case anymore
+and the build fails.
+
+Signed-off-by: Andrei Gherzan <andrei.gherzan@huawei.com>
+Upstream-Status: Submitted [https://github.com/containers/fuse-overlayfs/pull/362]
+---
+ utils.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/utils.h b/utils.h
+index 13a177e..6fbc328 100644
+--- a/utils.h
++++ b/utils.h
+@@ -32,6 +32,7 @@
+ # include <sys/types.h>
+ # include <fcntl.h>
+ # include "fuse-overlayfs.h"
++# include <limits.h>
+
+ # define XATTR_OVERRIDE_STAT "user.fuseoverlayfs.override_stat"
+ # define XATTR_PRIVILEGED_OVERRIDE_STAT "security.fuseoverlayfs.override_stat"
+--
+2.25.1
+
diff --git a/recipes-extended/fuse-overlayfs/fuse-overlayfs_0.6.4.bb b/recipes-extended/fuse-overlayfs/fuse-overlayfs_1.9.bb
index a8bbf0f5..31199928 100644
--- a/recipes-extended/fuse-overlayfs/fuse-overlayfs_0.6.4.bb
+++ b/recipes-extended/fuse-overlayfs/fuse-overlayfs_1.9.bb
@@ -2,11 +2,14 @@ SUMMARY = "FUSE implementation of overlayfs."
DESCRIPTION = "An implementation of overlay+shiftfs in FUSE for rootless \
containers."
-LICENSE = "GPLv3+"
+LICENSE = "GPL-3.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
-SRCREV = "098d9ad79fdbb8538adde08628408aa32a8b4b17"
-SRC_URI = "git://github.com/containers/fuse-overlayfs.git;nobranch=1"
+SRCREV = "51592ea406f48faeccab288f65dcba6c4a67cd90"
+SRC_URI = " \
+ git://github.com/containers/fuse-overlayfs.git;nobranch=1;protocol=https \
+ file://0001-utils-Add-missing-include-on-limits.h.patch \
+"
DEPENDS = "fuse3"
diff --git a/recipes-extended/hyperstart/hyperstart/0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch b/recipes-extended/hyperstart/hyperstart/0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch
index 4a01de5b..d48e2647 100644
--- a/recipes-extended/hyperstart/hyperstart/0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch
+++ b/recipes-extended/hyperstart/hyperstart/0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch
@@ -1,4 +1,4 @@
-From 11f5089300c1c368d896c95890827dc85a67f132 Mon Sep 17 00:00:00 2001
+From 085dd65bba063e391350487f2a5e4a7bf69ee6c8 Mon Sep 17 00:00:00 2001
From: Jason Wessel <jason.wessel@windriver.com>
Date: Fri, 15 Jun 2018 08:04:35 -0700
Subject: [PATCH] container.c: Fix compiler errors that gcc 8.1.0 reports
@@ -46,13 +46,16 @@ container.c:176:4: note: 'sprintf' output 9 or more bytes (assuming 520) into a
sprintf(volume, "/%s/_data/%s", path, filevolume);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+
---
src/container.c | 47 ++++++++++++++++++++++++++++-------------------
1 file changed, 28 insertions(+), 19 deletions(-)
diff --git a/src/container.c b/src/container.c
-index 0938d82..b1c52d4 100644
+index fee67ff..94d49d8 100644
--- a/src/container.c
+++ b/src/container.c
@@ -22,6 +22,8 @@
@@ -64,7 +67,7 @@ index 0938d82..b1c52d4 100644
static int container_populate_volume(char *src, char *dest)
{
struct stat st;
-@@ -99,12 +101,12 @@ static int container_setup_volume(struct hyper_pod *pod,
+@@ -116,12 +118,12 @@ static int container_setup_volume(struct hyper_pod *pod,
struct hyper_container *container)
{
int i;
@@ -79,8 +82,8 @@ index 0938d82..b1c52d4 100644
+ char mountpoint[MAX_PBUF];
char *options = NULL;
const char *filevolume = NULL;
- vol = &container->vols[i];
-@@ -128,7 +130,8 @@ static int container_setup_volume(struct hyper_pod *pod,
+ bool newvolume = false;
+@@ -146,7 +148,8 @@ static int container_setup_volume(struct hyper_pod *pod,
if (hyper_mount_nfs(vol->device, path) < 0)
return -1;
/* nfs export has implicitly included _data part of the volume */
@@ -90,7 +93,7 @@ index 0938d82..b1c52d4 100644
} else {
fprintf(stdout, "mount %s to %s, tmp path %s\n",
dev, vol->mountpoint, path);
-@@ -137,7 +140,7 @@ static int container_setup_volume(struct hyper_pod *pod,
+@@ -155,7 +158,7 @@ static int container_setup_volume(struct hyper_pod *pod,
options = "nouuid";
if (access(dev, R_OK) < 0) {
@@ -99,7 +102,7 @@ index 0938d82..b1c52d4 100644
sprintf(device, "/block/%s", vol->device);
hyper_netlink_wait_dev(pod->ueventfd, device);
}
-@@ -146,7 +149,8 @@ static int container_setup_volume(struct hyper_pod *pod,
+@@ -164,7 +167,8 @@ static int container_setup_volume(struct hyper_pod *pod,
perror("mount volume device failed");
return -1;
}
@@ -108,8 +111,8 @@ index 0938d82..b1c52d4 100644
+ return -1;
}
- if (container_check_file_volume(volume, &filevolume) < 0)
-@@ -173,7 +177,8 @@ static int container_setup_volume(struct hyper_pod *pod,
+ if (container_check_volume(volume, &filevolume, &newvolume) < 0)
+@@ -193,7 +197,8 @@ static int container_setup_volume(struct hyper_pod *pod,
perror("create volume file failed");
return -1;
}
@@ -119,7 +122,7 @@ index 0938d82..b1c52d4 100644
/* 0777 so that any user can read/write the new file volume */
if (chmod(volume, 0777) < 0) {
fprintf(stderr, "fail to chmod directory %s\n", volume);
-@@ -197,9 +202,9 @@ static int container_setup_volume(struct hyper_pod *pod,
+@@ -217,9 +222,9 @@ static int container_setup_volume(struct hyper_pod *pod,
for (i = 0; i < container->maps_num; i++) {
struct stat st;
@@ -131,7 +134,7 @@ index 0938d82..b1c52d4 100644
sprintf(path, "%s/%s", SHARED_DIR, map->source);
sprintf(mountpoint, "./%s", map->path);
-@@ -215,7 +220,8 @@ static int container_setup_volume(struct hyper_pod *pod,
+@@ -235,7 +240,8 @@ static int container_setup_volume(struct hyper_pod *pod,
}
if (map->docker) {
/* converted from volume */
@@ -141,7 +144,7 @@ index 0938d82..b1c52d4 100644
src = volume;
if (container->initialize &&
(container_populate_volume(mountpoint, volume) < 0)) {
-@@ -251,7 +257,7 @@ static int container_setup_modules(struct hyper_container *container)
+@@ -271,7 +277,7 @@ static int container_setup_modules(struct hyper_container *container)
{
struct stat st;
struct utsname uts;
@@ -150,7 +153,7 @@ index 0938d82..b1c52d4 100644
if (uname(&uts) < 0) {
perror("fail to call uname");
-@@ -259,7 +265,8 @@ static int container_setup_modules(struct hyper_container *container)
+@@ -279,7 +285,8 @@ static int container_setup_modules(struct hyper_container *container)
}
sprintf(src, "/lib/modules/%s", uts.release);
@@ -160,7 +163,7 @@ index 0938d82..b1c52d4 100644
if (stat(dst, &st) == 0) {
struct dirent **list;
-@@ -291,7 +298,7 @@ static int container_setup_modules(struct hyper_container *container)
+@@ -318,7 +325,7 @@ static int container_setup_modules(struct hyper_container *container)
static int container_setup_mount(struct hyper_container *container)
{
@@ -169,7 +172,7 @@ index 0938d82..b1c52d4 100644
// current dir is container rootfs, the operations on "./PATH" are the operations on container's "/PATH"
if (!container->readonly) {
-@@ -546,7 +553,7 @@ static int hyper_setup_container_rootfs(void *data)
+@@ -576,7 +583,7 @@ static int hyper_setup_container_rootfs(void *data)
{
struct hyper_container_arg *arg = data;
struct hyper_container *container = arg->c;
@@ -178,7 +181,7 @@ index 0938d82..b1c52d4 100644
int setup_dns;
/* wait for ns-opened ready message */
-@@ -609,7 +616,7 @@ static int hyper_setup_container_rootfs(void *data)
+@@ -639,7 +646,7 @@ static int hyper_setup_container_rootfs(void *data)
goto fail;
}
} else {
@@ -187,7 +190,7 @@ index 0938d82..b1c52d4 100644
sprintf(path, "%s/%s/", SHARED_DIR, container->image);
fprintf(stdout, "src directory %s\n", path);
-@@ -627,7 +634,9 @@ static int hyper_setup_container_rootfs(void *data)
+@@ -657,7 +664,9 @@ static int hyper_setup_container_rootfs(void *data)
fprintf(stdout, "root directory for container is %s/%s, init task %s\n",
root, container->rootfs, container->exec.argv[0]);
@@ -198,7 +201,7 @@ index 0938d82..b1c52d4 100644
if (mount(rootfs, rootfs, NULL, MS_BIND|MS_REC, NULL) < 0) {
perror("failed to bind rootfs");
goto fail;
-@@ -710,7 +719,7 @@ fail:
+@@ -740,7 +749,7 @@ fail:
static int hyper_setup_pty(struct hyper_container *c)
{
@@ -207,7 +210,7 @@ index 0938d82..b1c52d4 100644
sprintf(root, "/tmp/hyper/%s/devpts/", c->id);
-@@ -730,7 +739,7 @@ static int hyper_setup_pty(struct hyper_container *c)
+@@ -760,7 +769,7 @@ static int hyper_setup_pty(struct hyper_container *c)
static void hyper_cleanup_pty(struct hyper_container *c)
{
@@ -216,7 +219,7 @@ index 0938d82..b1c52d4 100644
sprintf(path, "/tmp/hyper/%s/devpts/", c->id);
if (umount(path) < 0)
-@@ -739,7 +748,7 @@ static void hyper_cleanup_pty(struct hyper_container *c)
+@@ -769,7 +778,7 @@ static void hyper_cleanup_pty(struct hyper_container *c)
int container_prepare_rootfs_dev(struct hyper_container *container, struct hyper_pod *pod)
{
@@ -225,6 +228,3 @@ index 0938d82..b1c52d4 100644
if (container->fstype == NULL)
return 0;
---
-2.17.1
-
diff --git a/recipes-extended/hyperstart/hyperstart_git.bb b/recipes-extended/hyperstart/hyperstart_git.bb
index 9f984191..e156cdae 100644
--- a/recipes-extended/hyperstart/hyperstart_git.bb
+++ b/recipes-extended/hyperstart/hyperstart_git.bb
@@ -1,16 +1,16 @@
SUMMARY = "The tiny Init service for HyperContainer"
DESCRIPTION = "The init Task for HyperContainer"
-LICENSE = "Apache-2"
+LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
inherit autotools-brokensep
-SRC_URI = "git://github.com/hyperhq/hyperstart.git"
+SRC_URI = "git://github.com/hyperhq/hyperstart.git;branch=master;protocol=https"
SRC_URI += "file://0001-container.c-Fix-compiler-errors-that-gcc-8.1.0-repor.patch"
-SRCREV = "15bb718ad34045aa1962a8204f602c6afe9a76ab"
-PV = "v0.2+git${SRCPV}"
+SRCREV = "c0c07d218b482dd07f9068b52a6e7468ae4172ac"
+PV = "v0.2+git"
S = "${WORKDIR}/git"
@@ -23,4 +23,4 @@ do_install() {
install -m644 ${S}/build/arch/x86_64/kernel ${D}/var/lib/hyper/
}
-FILES_${PN} += "/var/lib/hyper"
+FILES:${PN} += "/var/lib/hyper"
diff --git a/recipes-extended/images/container-base.bb b/recipes-extended/images/container-base.bb
index 434239a8..c9dd32d1 100644
--- a/recipes-extended/images/container-base.bb
+++ b/recipes-extended/images/container-base.bb
@@ -18,8 +18,20 @@ IMAGE_INSTALL = " \
base-files \
base-passwd \
netbase \
+ ${CONTAINER_SHELL} \
"
+# If the following is configured in local.conf (or the distro):
+# PACKAGE_EXTRA_ARCHS:append = " container-dummy-provides"
+#
+# it has been explicitly # indicated that we don't want or need a shell, so we'll
+# add the dummy provides.
+#
+# This is required, since there are postinstall scripts in base-files and base-passwd
+# that reference /bin/sh and we'll get a rootfs error if there's no shell or no dummy
+# provider.
+CONTAINER_SHELL ?= "${@bb.utils.contains('PACKAGE_EXTRA_ARCHS', 'container-dummy-provides', 'container-dummy-provides', 'busybox', d)}"
+
# Allow build with or without a specific kernel
IMAGE_CONTAINER_NO_DUMMY = "1"
diff --git a/recipes-extended/images/kvm-image-minimal.bb b/recipes-extended/images/kvm-image-minimal.bb
index b28cc309..c6358e17 100644
--- a/recipes-extended/images/kvm-image-minimal.bb
+++ b/recipes-extended/images/kvm-image-minimal.bb
@@ -11,6 +11,9 @@ IMAGE_INSTALL = " \
kernel-module-kvm-amd \
"
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "kvm"
+
IMAGE_FEATURES += "ssh-server-openssh"
IMAGE_LINGUAS = " "
diff --git a/recipes-extended/images/uxen-guest-image-minimal.bb b/recipes-extended/images/uxen-guest-image-minimal.bb
new file mode 100644
index 00000000..d37a95b7
--- /dev/null
+++ b/recipes-extended/images/uxen-guest-image-minimal.bb
@@ -0,0 +1,9 @@
+DESCRIPTION = "A Linux guest image for the uXen type-2 hypervisor."
+LICENSE = "MIT"
+
+inherit core-image
+
+IMAGE_INSTALL += " \
+ packagegroup-core-boot \
+ uxen-guest-tools \
+ "
diff --git a/recipes-extended/images/xen-guest-image-minimal.bb b/recipes-extended/images/xen-guest-image-minimal.bb
index d311eaef..fced7639 100644
--- a/recipes-extended/images/xen-guest-image-minimal.bb
+++ b/recipes-extended/images/xen-guest-image-minimal.bb
@@ -1,17 +1,21 @@
DESCRIPTION = "A Xen guest image."
-inherit core-image distro_features_check
+inherit core-image features_check
IMAGE_INSTALL += " \
packagegroup-core-boot \
- ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'kernel-module-xen-acpi-processor', '', d)} \
+ ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', '${XEN_ACPI_PROCESSOR_MODULE}', '', d)} \
"
+XEN_ACPI_PROCESSOR_MODULE = ""
+XEN_ACPI_PROCESSOR_MODULE:x86 = "kernel-module-xen-acpi-processor"
+XEN_ACPI_PROCESSOR_MODULE:x86-64 = "kernel-module-xen-acpi-processor"
+
IMAGE_INSTALL += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-fbdev', '', d)}"
# Install xf86-video-vesa on x86 platforms.
-IMAGE_INSTALL_append_x86-64 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
-IMAGE_INSTALL_append_x86 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
+IMAGE_INSTALL:append:x86-64 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
+IMAGE_INSTALL:append:x86 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' x11', '', d)} xen"
diff --git a/recipes-extended/images/xen-image-minimal.bb b/recipes-extended/images/xen-image-minimal.bb
index c39d3782..fe79a485 100644
--- a/recipes-extended/images/xen-image-minimal.bb
+++ b/recipes-extended/images/xen-image-minimal.bb
@@ -2,28 +2,47 @@ DESCRIPTION = "A minimal xen image"
INITRD_IMAGE = "core-image-minimal-initramfs"
+XEN_KERNEL_MODULES ?= "kernel-module-xen-blkback kernel-module-xen-gntalloc \
+ kernel-module-xen-gntdev kernel-module-xen-netback kernel-module-xen-wdt \
+ ${@bb.utils.contains('MACHINE_FEATURES', 'pci', "${XEN_PCIBACK_MODULE}", '', d)} \
+ ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', '${XEN_ACPI_PROCESSOR_MODULE}', '', d)} \
+ "
+
IMAGE_INSTALL += " \
packagegroup-core-boot \
packagegroup-core-ssh-openssh \
- ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'kernel-module-xen-acpi-processor', '', d)} \
- kernel-module-xen-blkback \
- kernel-module-xen-gntalloc \
- kernel-module-xen-gntdev \
- kernel-module-xen-netback \
- ${@bb.utils.contains('MACHINE_FEATURES', 'pci', "${XEN_PCIBACK_MODULE}", '', d)} \
- kernel-module-xen-wdt \
- xen-base \
+ ${XEN_KERNEL_MODULES} \
+ xen-tools \
qemu \
+ kernel-image \
+ kernel-vmlinux \
"
+# The hypervisor may not be within the dom0 filesystem image but at least
+# ensure that it is deployable:
+do_build[depends] += "xen:do_deploy"
+
+# Networking for HVM-mode guests (x86/64 only) requires the tun kernel module
+IMAGE_INSTALL:append:x86 = " kernel-module-tun"
+IMAGE_INSTALL:append:x86-64 = " kernel-module-tun"
+
# Linux kernel option CONFIG_XEN_PCIDEV_BACKEND depends on X86
XEN_PCIBACK_MODULE = ""
-XEN_PCIBACK_MODULE_x86 = "kernel-module-xen-pciback"
-XEN_PCIBACK_MODULE_x86-64 = "kernel-module-xen-pciback"
+XEN_PCIBACK_MODULE:x86 = "kernel-module-xen-pciback"
+XEN_PCIBACK_MODULE:x86-64 = "kernel-module-xen-pciback"
+XEN_ACPI_PROCESSOR_MODULE = ""
+XEN_ACPI_PROCESSOR_MODULE:x86 = "kernel-module-xen-acpi-processor"
+XEN_ACPI_PROCESSOR_MODULE:x86-64 = "kernel-module-xen-acpi-processor"
LICENSE = "MIT"
+QB_NETWORK_XEN_BRIDGE = "1"
+
inherit core-image
+# Only inherit the qemuboot classes when building for a qemu machine
+QB_QEMU_CLASSES = ""
+QB_QEMU_CLASSES:qemuall = "qemuboot-xen-defaults qemuboot-xen-dtb qemuboot-testimage-network"
+inherit ${QB_QEMU_CLASSES}
do_check_xen_state() {
if [ "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' yes', 'no', d)}" = "no" ]; then
@@ -33,27 +52,32 @@ do_check_xen_state() {
addtask check_xen_state before do_rootfs
-syslinux_iso_populate_append() {
+# note: this may be unused, see the wic plugin
+syslinux_iso_populate:append() {
install -m 0444 ${STAGING_DATADIR}/syslinux/libcom32.c32 ${ISODIR}${ISOLINUXDIR}
install -m 0444 ${STAGING_DATADIR}/syslinux/mboot.c32 ${ISODIR}${ISOLINUXDIR}
}
-syslinux_hddimg_populate_append() {
+# note: this may be unused, see the wic plugin
+syslinux_hddimg_populate:append() {
install -m 0444 ${STAGING_DATADIR}/syslinux/libcom32.c32 ${HDDDIR}${SYSLINUXDIR}
install -m 0444 ${STAGING_DATADIR}/syslinux/mboot.c32 ${HDDDIR}${SYSLINUXDIR}
}
-grubefi_populate_append() {
+# note: this may be unused, see the wic plugin
+grubefi_populate:append() {
install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}${EFIDIR}/xen.gz
}
-syslinux_populate_append() {
+# note: this may be unused, see the wic plugin
+syslinux_populate:append() {
install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}/xen.gz
}
SYSLINUX_XEN_ARGS ?= "loglvl=all guest_loglvl=all console=com1,vga com1=115200,8n1"
SYSLINUX_KERNEL_ARGS ?= "ramdisk_size=32768 root=/dev/ram0 rw console=hvc0 earlyprintk=xen console=tty0 panic=10 LABEL=boot debugshell=5"
+# note: this may be unused, see the wic plugin
build_syslinux_cfg () {
echo "ALLOWOPTIONS 1" > ${SYSLINUX_CFG}
echo "DEFAULT boot" >> ${SYSLINUX_CFG}
@@ -64,3 +88,21 @@ build_syslinux_cfg () {
echo " APPEND /xen.gz ${SYSLINUX_XEN_ARGS} --- /vmlinuz ${SYSLINUX_KERNEL_ARGS} --- /initrd" >> ${SYSLINUX_CFG}
}
+# Enable runqemu. eg: runqemu xen-image-minimal nographic slirp
+WKS_FILE:x86-64 = "directdisk-xen.wks"
+WKS_FILE_DEPENDS_DEFAULT:x86-64 = "syslinux-native"
+WKS_FILE:qemux86-64 = "qemuboot-xen-x86-64.wks"
+WKS_FILE_DEPENDS_DEFAULT:qemux86-64 = "syslinux-native"
+QB_MEM ?= "-m 400"
+QB_DEFAULT_KERNEL ?= "none"
+QB_DEFAULT_FSTYPE ?= "wic"
+QB_DEFAULT_FSTYPE:qemux86-64 = "wic"
+QB_FSINFO ?= "wic:kernel-in-fs"
+QB_SERIAL_OPT = "-serial mon:stdio"
+# qemux86-64 machine does not include 'wic' in IMAGE_FSTYPES, which is needed
+# to boot this image, so add it here:
+IMAGE_FSTYPES:qemux86-64 += "wic"
+# Networking: the qemuboot.bbclass default virtio network device works ok
+# and so does the emulated e1000 -- choose according to the network device
+# drivers that are present in your dom0 Linux kernel. To switch to e1000:
+# QB_NETWORK_DEVICE = "-device e1000,netdev=net0,mac=@MAC@"
diff --git a/recipes-extended/images/xtf-image.bb b/recipes-extended/images/xtf-image.bb
new file mode 100644
index 00000000..f9ecea91
--- /dev/null
+++ b/recipes-extended/images/xtf-image.bb
@@ -0,0 +1,34 @@
+require recipes-extended/images/xen-image-minimal.bb
+DESCRIPTION = "A minimal Xen Test Framework (XTF) image for testing the Xen hypervisor"
+
+# To run XTF tests with an image built for the qemux86-64 MACHINE:
+#
+# runqemu xtf-image nographic slirp
+# (login as root)
+# # xtf-runner expects to be run from the top of the tests directory:
+# cd /usr/libexec/xtf
+# # list the tests available for PV guest types:
+# ./xtf-runner --list pv
+# # run an example test:
+# ./xtf-runner test-pv64-livepatch-priv-check
+#
+# This image also supports the OE QA framework, so XTF tests can be
+# run from bitbake by adding the following (or similar) to local.conf:
+#
+# INHERIT += "testimage"
+# QEMU_USE_SLIRP = "1"
+# TEST_SERVER_IP = "127.0.0.1"
+#
+# and the tests that are configured (see the xtf-oeqa-conf package)
+# can be run with: bitbake -c testimage xtf-image
+#
+# For testimage, see the qemu boot log: ${WORKDIR}/testimage/qemu_boot_log.*
+# and the test log: ${WORKDIR}/temp/log.do_testimage
+
+IMAGE_NAME="xtf"
+
+IMAGE_INSTALL:append = " xtf"
+
+DEFAULT_TEST_SUITES:append = " xtf_minimal"
+
+QB_DEFAULT_FSTYPE:x86-64 = "wic"
diff --git a/recipes-extended/images/xvisor-image-minimal.bb b/recipes-extended/images/xvisor-image-minimal.bb
new file mode 100644
index 00000000..7c23de5b
--- /dev/null
+++ b/recipes-extended/images/xvisor-image-minimal.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "A minimal Xvisor image"
+
+INITRD_IMAGE = "core-image-minimal-initramfs"
+
+IMAGE_INSTALL += " \
+ packagegroup-core-boot \
+ packagegroup-core-ssh-openssh \
+ "
+
+# The hypervisor may not be within the dom0 filesystem image but at least
+# ensure that it is deployable:
+do_build[depends] += "xvisor:do_deploy"
+
+LICENSE = "MIT"
+
+inherit core-image
+
+# Enable runqemu. eg: runqemu xvisor-image-minimal nographic slirp
+QB_DEFAULT_KERNEL = "vmm.bin"
+QB_OPT_APPEND:append:riscv64 = " -cpu rv64,x-h=true "
diff --git a/recipes-extended/iptables/iptables-meta-virtualization.inc b/recipes-extended/iptables/iptables-meta-virtualization.inc
index 8fd521c9..ac3c7843 100644
--- a/recipes-extended/iptables/iptables-meta-virtualization.inc
+++ b/recipes-extended/iptables/iptables-meta-virtualization.inc
@@ -1,4 +1,4 @@
-RRECOMMENDS_${PN} += "kernel-module-ip6-tables \
+RRECOMMENDS:${PN} += "kernel-module-ip6-tables \
kernel-module-ip-tables \
kernel-module-ip6table-filter \
kernel-module-iptable-filter \
@@ -16,4 +16,5 @@ RRECOMMENDS_${PN} += "kernel-module-ip6-tables \
kernel-module-xt-conntrack \
kernel-module-xt-state \
kernel-module-xt-tcpudp \
+ kernel-module-xt-nat \
"
diff --git a/recipes-extended/ipxe/files/build-be-explicit-about-fcommon-compiler-directive.patch b/recipes-extended/ipxe/files/build-be-explicit-about-fcommon-compiler-directive.patch
new file mode 100644
index 00000000..d4a2c732
--- /dev/null
+++ b/recipes-extended/ipxe/files/build-be-explicit-about-fcommon-compiler-directive.patch
@@ -0,0 +1,33 @@
+From f982a712979619dbae2c6e0d741757e2ce94be11 Mon Sep 17 00:00:00 2001
+Message-Id: <f982a712979619dbae2c6e0d741757e2ce94be11.1602165412.git.bertrand.marquis@arm.com>
+From: Bruce Rogers <brogers@suse.com>
+Date: Wed, 6 May 2020 15:03:02 -0600
+Subject: [PATCH] [build] Be explicit about -fcommon compiler directive
+
+gcc10 switched default behavior from -fcommon to -fno-common. Since
+"__shared" relies on the legacy behavior, explicitly specify it.
+
+Upstream-Status: Backport
+
+Signed-off-by: Bruce Rogers <brogers@suse.com>
+Modified-by: Michael Brown <mcb30@ipxe.org>
+Signed-off-by: Michael Brown <mcb30@ipxe.org>
+---
+ src/Makefile.housekeeping | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
+index 66d6dd44..b6c61c11 100644
+--- a/Makefile.housekeeping
++++ b/Makefile.housekeeping
+@@ -418,6 +418,7 @@ CFLAGS += -Os
+ CFLAGS += -g
+ ifeq ($(CCTYPE),gcc)
+ CFLAGS += -ffreestanding
++CFLAGS += -fcommon
+ CFLAGS += -Wall -W -Wformat-nonliteral
+ HOST_CFLAGS += -Wall -W -Wformat-nonliteral
+ endif
+--
+2.17.1
+
diff --git a/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch b/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch
index da154a6f..9db7b6a1 100644
--- a/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch
+++ b/recipes-extended/ipxe/files/ipxe-fix-hostcc-nopie-cflags.patch
@@ -1,34 +1,19 @@
-Fix detection of host compiler "no-pie"/"nopie" and link flags.
+Upstream-Status: Inappropriate [embedded specific]
-Detection of the "no-pie" vs "nopie" flag needs to be performed for both
-the host and target compilers; cannot assume that one works for the other.
-
-Use EXTRA_HOST_CFLAGS and EXTRA_HOST_LDFLAGS variables for passing
-host tool parameters if required. Removes previous hardcoded "-O2 -g".
-
-Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
-diff --git a/Makefile.housekeeping b/Makefile.housekeeping
-index f833492..5451c39 100644
+diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
+index 1dd1479..13f44dd 100644
--- a/Makefile.housekeeping
+++ b/Makefile.housekeeping
-@@ -133,6 +133,7 @@ eval :
- WORKAROUND_CFLAGS :=
- WORKAROUND_ASFLAGS :=
- WORKAROUND_LDFLAGS :=
-+WORKAROUND_HOST_CFLAGS :=
-
- # Make syntax does not allow use of comma or space in certain places.
- # This ugly workaround is suggested in the manual.
-@@ -445,7 +446,7 @@ endif
+@@ -454,7 +454,7 @@ endif
CFLAGS += $(WORKAROUND_CFLAGS) $(EXTRA_CFLAGS)
ASFLAGS += $(WORKAROUND_ASFLAGS) $(EXTRA_ASFLAGS)
LDFLAGS += $(WORKAROUND_LDFLAGS) $(EXTRA_LDFLAGS)
--HOST_CFLAGS += $(WORKAROUND_CFLAGS) -O2 -g
-+HOST_CFLAGS += $(WORKAROUND_HOST_CFLAGS) $(EXTRA_HOST_CFLAGS)
+-HOST_CFLAGS += -O2 -g
++HOST_CFLAGS += -O2 -g $(EXTRA_HOST_CFLAGS)
# Inhibit -Werror if NO_WERROR is specified on make command line
#
-@@ -1375,7 +1376,7 @@ endif # defined(BIN)
+@@ -1379,7 +1379,7 @@ endif # defined(BIN)
# The compression utilities
#
@@ -37,32 +22,3 @@ index f833492..5451c39 100644
$(ZBIN) : util/zbin.c $(MAKEDEPS)
$(QM)$(ECHO) " [HOSTCC] $@"
-diff --git a/arch/i386/Makefile b/arch/i386/Makefile
-index b7c2792..4a637ad 100644
---- a/arch/i386/Makefile
-+++ b/arch/i386/Makefile
-@@ -78,11 +78,20 @@ CFLAGS += -Ui386
- # -nopie. We therefore test for both.
- #
- ifeq ($(CCTYPE),gcc)
--PIE_TEST = [ -z "`$(CC) -fno-PIE -no-pie -x c -c /dev/null -o /dev/null 2>&1`" ]
--PIE_FLAGS := $(shell $(PIE_TEST) && $(ECHO) '-fno-PIE -no-pie')
--PIE_TEST2 = [ -z "`$(CC) -fno-PIE -nopie -x c -c /dev/null -o /dev/null 2>&1`" ]
-+PIE_TEST1_FLAGS = "-fno-PIE -no-pie -x c -c /dev/null -o /dev/null 2>&1"
-+PIE_TEST2_FLAGS = "-fno-PIE -nopie -x c -c /dev/null -o /dev/null 2>&1"
-+
-+PIE_TEST1 = [ -z "`$(CC) "$(PIE_TEST1_FLAGS)"`" ]
-+PIE_TEST2 = [ -z "`$(CC) "$(PIE_TEST2_FLAGS)"`" ]
-+PIE_FLAGS1 := $(shell $(PIE_TEST1) && $(ECHO) '-fno-PIE -no-pie')
- PIE_FLAGS2 := $(shell $(PIE_TEST2) && $(ECHO) '-fno-PIE -nopie')
--WORKAROUND_CFLAGS += $(PIE_FLAGS) $(PIE_FLAGS2)
-+WORKAROUND_CFLAGS += $(PIE_FLAGS1) $(PIE_FLAGS2)
-+
-+HOST_PIE_TEST1 = [ -z "`$(HOSTCC) "$(PIE_TEST1_FLAGS)"`" ]
-+HOST_PIE_TEST2 = [ -z "`$(HOSTCC) "$(PIE_TEST2_FLAGS)"`" ]
-+HOST_PIE_FLAGS1 := $(shell $(HOST_PIE_TEST1) && $(ECHO) '-fno-PIE -no-pie')
-+HOST_PIE_FLAGS2 := $(shell $(HOST_PIE_TEST2) && $(ECHO) '-fno-PIE -nopie')
-+WORKAROUND_HOST_CFLAGS += $(HOST_PIE_FLAGS1) $(HOST_PIE_FLAGS2)
- endif
-
- # i386-specific directories containing source files
diff --git a/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch b/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
new file mode 100644
index 00000000..8a78e7af
--- /dev/null
+++ b/recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch
@@ -0,0 +1,45 @@
+From 8a1d66c7aec020f3e90254ed2fa55ecd9494fcc3 Mon Sep 17 00:00:00 2001
+From: Michael Brown <mcb30@ipxe.org>
+Date: Sat, 27 Jun 2020 20:43:32 +0100
+Subject: [PATCH] [golan] Add explicit type casts for nodnic_queue_pair_type
+
+GCC 10 emits warnings for implicit conversions of enumerated types.
+
+The flexboot_nodnic code defines nodnic_queue_pair_type with values
+identical to those of ib_queue_pair_type, and implicitly casts between
+them. Add an explicit cast to fix the warning.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Michael Brown <mcb30@ipxe.org>
+---
+ src/drivers/infiniband/flexboot_nodnic.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/drivers/infiniband/flexboot_nodnic.c b/src/drivers/infiniband/flexboot_nodnic.c
+index 93bb0544..7d039fff 100644
+--- a/drivers/infiniband/flexboot_nodnic.c
++++ b/drivers/infiniband/flexboot_nodnic.c
+@@ -365,7 +365,8 @@ static int flexboot_nodnic_create_qp ( struct ib_device *ibdev,
+ goto qp_alloc_err;
+ }
+
+- status = nodnic_port_create_qp(&port->port_priv, qp->type,
++ status = nodnic_port_create_qp(&port->port_priv,
++ (nodnic_queue_pair_type) qp->type,
+ qp->send.num_wqes * sizeof(struct nodnic_send_wqbb),
+ qp->send.num_wqes,
+ qp->recv.num_wqes * sizeof(struct nodnic_recv_wqe),
+@@ -406,7 +407,8 @@ static void flexboot_nodnic_destroy_qp ( struct ib_device *ibdev,
+ struct flexboot_nodnic_port *port = &flexboot_nodnic->port[ibdev->port - 1];
+ struct flexboot_nodnic_queue_pair *flexboot_nodnic_qp = ib_qp_get_drvdata ( qp );
+
+- nodnic_port_destroy_qp(&port->port_priv, qp->type,
++ nodnic_port_destroy_qp(&port->port_priv,
++ (nodnic_queue_pair_type) qp->type,
+ flexboot_nodnic_qp->nodnic_queue_pair);
+
+ free(flexboot_nodnic_qp);
+--
+2.17.1
+
diff --git a/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch b/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch
new file mode 100644
index 00000000..c76fe1ce
--- /dev/null
+++ b/recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch
@@ -0,0 +1,91 @@
+From 28cf9806d1632d378485005babec295da0c77fcf Mon Sep 17 00:00:00 2001
+From: Michael Brown <mcb30@ipxe.org>
+Date: Sat, 27 Jun 2020 20:21:11 +0100
+Subject: [PATCH] [intel] Avoid spurious compiler warning on GCC 10
+
+GCC 10 produces a spurious warning about an out-of-bounds array access
+for the unsized raw dword array in union intelvf_msg.
+
+Avoid the warning by embedding the zero-length array within a struct.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Michael Brown <mcb30@ipxe.org>
+---
+ src/drivers/net/intelvf.c | 18 ++++++++++--------
+ src/drivers/net/intelvf.h | 8 +++++++-
+ 2 files changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/drivers/net/intelvf.c b/src/drivers/net/intelvf.c
+index ac6fea74..0d48b417 100644
+--- a/drivers/net/intelvf.c
++++ b/drivers/net/intelvf.c
+@@ -52,14 +52,15 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+ */
+ static void intelvf_mbox_write ( struct intel_nic *intel,
+ const union intelvf_msg *msg ) {
++ const struct intelvf_msg_raw *raw = &msg->raw;
+ unsigned int i;
+
+ /* Write message */
+ DBGC2 ( intel, "INTEL %p sending message", intel );
+- for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
+- DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
+- writel ( msg->dword[i], ( intel->regs + intel->mbox.mem +
+- ( i * sizeof ( msg->dword[0] ) ) ) );
++ for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
++ DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
++ writel ( raw->dword[i], ( intel->regs + intel->mbox.mem +
++ ( i * sizeof ( raw->dword[0] ) ) ) );
+ }
+ DBGC2 ( intel, "\n" );
+ }
+@@ -72,14 +73,15 @@ static void intelvf_mbox_write ( struct intel_nic *intel,
+ */
+ static void intelvf_mbox_read ( struct intel_nic *intel,
+ union intelvf_msg *msg ) {
++ struct intelvf_msg_raw *raw = &msg->raw;
+ unsigned int i;
+
+ /* Read message */
+ DBGC2 ( intel, "INTEL %p received message", intel );
+- for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( msg->dword[0] ) ) ; i++){
+- msg->dword[i] = readl ( intel->regs + intel->mbox.mem +
+- ( i * sizeof ( msg->dword[0] ) ) );
+- DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), msg->dword[i] );
++ for ( i = 0 ; i < ( sizeof ( *msg ) / sizeof ( raw->dword[0] ) ) ; i++){
++ raw->dword[i] = readl ( intel->regs + intel->mbox.mem +
++ ( i * sizeof ( raw->dword[0] ) ) );
++ DBGC2 ( intel, "%c%08x", ( i ? ':' : ' ' ), raw->dword[i] );
+ }
+ DBGC2 ( intel, "\n" );
+ }
+diff --git a/src/drivers/net/intelvf.h b/src/drivers/net/intelvf.h
+index ab404698..ffb18e04 100644
+--- a/drivers/net/intelvf.h
++++ b/drivers/net/intelvf.h
+@@ -119,6 +119,12 @@ struct intelvf_msg_queues {
+ uint32_t dflt;
+ } __attribute__ (( packed ));
+
++/** Raw mailbox message */
++struct intelvf_msg_raw {
++ /** Raw dwords */
++ uint32_t dword[0];
++} __attribute__ (( packed ));
++
+ /** Mailbox message */
+ union intelvf_msg {
+ /** Message header */
+@@ -132,7 +138,7 @@ union intelvf_msg {
+ /** Queue configuration message */
+ struct intelvf_msg_queues queues;
+ /** Raw dwords */
+- uint32_t dword[0];
++ struct intelvf_msg_raw raw;
+ };
+
+ /** Maximum time to wait for mailbox message
+--
+2.17.1
+
diff --git a/recipes-extended/ipxe/ipxe_git.bb b/recipes-extended/ipxe/ipxe_git.bb
index 1de0f21e..08ed519a 100644
--- a/recipes-extended/ipxe/ipxe_git.bb
+++ b/recipes-extended/ipxe/ipxe_git.bb
@@ -1,35 +1,48 @@
DESCRIPTION = "Open source network boot firmware"
HOMEPAGE = "http://ipxe.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
DEPENDS = "binutils-native perl-native syslinux mtools-native cdrtools-native xz"
LIC_FILES_CHKSUM = "file://../COPYING.GPLv2;md5=b234ee4d69f5fce4486a80fdaf4a4263"
-SRCREV = "64b4452bca04af433f1c98ab782c0e93cd5c88c0"
-PV = "gitr${SRCPV}"
+# syslinux has this restriction
+COMPATIBLE_HOST:class-target = '(x86_64|i.86).*-(linux|freebsd.*)'
+
+SRCREV = "18dc73d27edb55ebe9cb13c58d59af3da3bd374b"
+PV = "1.20.1+git"
PR = "r0"
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI = " \
- git://git.ipxe.org/ipxe.git;protocol=https \
+ git://github.com/ipxe/ipxe.git;protocol=https;branch=master \
file://ipxe-fix-hostcc-nopie-cflags.patch \
+ file://ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch \
+ file://ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch \
+ file://build-be-explicit-about-fcommon-compiler-directive.patch \
"
-FILES_${PN} = "/usr/share/firmware/*.rom"
+FILES:${PN} = "/usr/share/firmware/*.rom"
-EXTRA_OEMAKE = " \
+EXTRA_OEMAKE = ' \
ISOLINUX_BIN="${STAGING_DIR_TARGET}/usr/share/syslinux/isolinux.bin" \
CROSS_COMPILE="${TARGET_PREFIX}" \
EXTRA_HOST_CFLAGS="${BUILD_CFLAGS}" \
- EXTRA_HOST_LDFLAGS="${BUILD_LDFLAGS}""
+ EXTRA_HOST_LDFLAGS="${BUILD_LDFLAGS}" \
+ NO_WERROR="1" \
+'
S = "${WORKDIR}/git/src"
do_compile() {
- oe_runmake
+ # Makefile.housekeeping:111: GNU gold is unsuitable for building iPXE
+ # Makefile.housekeeping:112: Use GNU ld instead
+ sed -i 's#\(^LD.*$(CROSS_COMPILE)ld\)$#\1.bfd#g' -i ${S}/Makefile
+ oe_runmake
}
do_install() {
install -d ${D}/usr/share/firmware
install ${S}/bin/*.rom ${D}/usr/share/firmware/
}
+
+TOOLCHAIN = "gcc"
diff --git a/recipes-extended/irqbalance/irqbalance.inc b/recipes-extended/irqbalance/irqbalance.inc
index 53275d12..038cbae3 100644
--- a/recipes-extended/irqbalance/irqbalance.inc
+++ b/recipes-extended/irqbalance/irqbalance.inc
@@ -8,7 +8,7 @@ which can lead to better performance and IO balance on SMP systems."
HOMEPAGE = "http://code.google.com/p/irqbalance/"
BUGTRACKER = "http://code.google.com/p/irqbalance/issues/list"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
file://irqbalance.c;beginline=6;endline=8;md5=b94e153694672307b503b1bc87dc9e24 \
"
@@ -21,7 +21,7 @@ INITSCRIPT_PARAMS = "defaults"
inherit autotools update-rc.d pkgconfig systemd
SYSTEMD_PACKAGES = "irqbalance"
-SYSTEMD_SERVICE_irqbalance = "irqbalanced.service"
+SYSTEMD_SERVICE:irqbalance = "irqbalanced.service"
EXTRA_OECONF = "--program-transform-name= \
"
@@ -42,6 +42,5 @@ do_install () {
chmod 755 ${D}${sysconfdir}/init.d/irqbalanced
install -d ${D}${systemd_unitdir}/system
- install -m 0644 ${WORKDIR}/irqbalanced.service ${D}${systemd_unitdir}/system
- sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/irqbalanced.service
+ install -m 0644 ${S}/misc/irqbalance.service ${D}${systemd_unitdir}/system/irqbalanced.service
}
diff --git a/recipes-extended/irqbalance/irqbalance/add-initscript.patch b/recipes-extended/irqbalance/irqbalance/add-initscript.patch
index b0e608e6..91a79d7e 100644
--- a/recipes-extended/irqbalance/irqbalance/add-initscript.patch
+++ b/recipes-extended/irqbalance/irqbalance/add-initscript.patch
@@ -6,6 +6,8 @@ Subject: [PATCH] irqbalance: add basic init script
The upstream irqbalance release package does not contain an
init script so we create a basic one here.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
diff --git a/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch b/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch
index ec01448f..8591f34c 100644
--- a/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch
+++ b/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch
@@ -5,6 +5,8 @@ Subject: [PATCH] irqbalance: Add status and reload commands
Add status and reload commands for irqbalanced init script
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Yang Shi <yang.shi@windriver.com>
---
diff --git a/recipes-extended/irqbalance/irqbalance/irqbalanced.service b/recipes-extended/irqbalance/irqbalance/irqbalanced.service
deleted file mode 100644
index 5b284faa..00000000
--- a/recipes-extended/irqbalance/irqbalance/irqbalanced.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=irqbalance daemon
-After=syslog.target
-
-[Service]
-ExecStart=@SBINDIR@/irqbalance --foreground
-
-[Install]
-WantedBy=multi-user.target
diff --git a/recipes-extended/irqbalance/irqbalance_git.bb b/recipes-extended/irqbalance/irqbalance_git.bb
index 7755e8ea..aa7f0de9 100644
--- a/recipes-extended/irqbalance/irqbalance_git.bb
+++ b/recipes-extended/irqbalance/irqbalance_git.bb
@@ -4,15 +4,14 @@
require irqbalance.inc
-# commit tagged as version 1.6.0
-#
-SRCREV = "b47eea84cbb93f533b0cba2f1aaf9ca4da8706b9"
-PV = "1.6.0"
+SRCREV = "b3adb5fd1496833e4e2cebc958d3919178cd5e3d"
+PV = "1.8.0+git"
-SRC_URI = "git://github.com/Irqbalance/irqbalance \
+SRC_URI = "git://github.com/Irqbalance/irqbalance;branch=master;protocol=https \
file://add-initscript.patch \
file://irqbalance-Add-status-and-reload-commands.patch \
- file://irqbalanced.service \
"
S = "${WORKDIR}/git"
+
+CFLAGS += "-Wno-error=format-security"
diff --git a/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch b/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch
deleted file mode 100644
index 863e86a8..00000000
--- a/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 2e22df7c24dadf5e16004cd832cabca76a699d4d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 21 Mar 2017 23:32:39 -0700
-Subject: [PATCH] Avoid pointers for address of packed members
-
-Fixes Clang warning due to -Waddress-of-packed-member
-
-virtio/blk.c:161:37: error: taking address of packed member 'geometry' of class or structure 'virtio_blk_config' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
- struct virtio_blk_geometry *geo = &conf->geometry;
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- virtio/blk.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/virtio/blk.c b/virtio/blk.c
-index c485e4f..1f7365d 100644
---- a/virtio/blk.c
-+++ b/virtio/blk.c
-@@ -158,7 +158,6 @@ static void set_guest_features(struct kvm *kvm, void *dev, u32 features)
- {
- struct blk_dev *bdev = dev;
- struct virtio_blk_config *conf = &bdev->blk_config;
-- struct virtio_blk_geometry *geo = &conf->geometry;
-
- bdev->features = features;
-
-@@ -167,7 +166,7 @@ static void set_guest_features(struct kvm *kvm, void *dev, u32 features)
- conf->seg_max = virtio_host_to_guest_u32(&bdev->vdev, conf->seg_max);
-
- /* Geometry */
-- geo->cylinders = virtio_host_to_guest_u16(&bdev->vdev, geo->cylinders);
-+ conf->geometry.cylinders = virtio_host_to_guest_u16(&bdev->vdev, conf->geometry.cylinders);
-
- conf->blk_size = virtio_host_to_guest_u32(&bdev->vdev, conf->blk_size);
- conf->min_io_size = virtio_host_to_guest_u16(&bdev->vdev, conf->min_io_size);
---
-2.12.0
-
diff --git a/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch b/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
index 63911fc2..36cde0d4 100644
--- a/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
+++ b/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
@@ -1,20 +1,23 @@
-From bcd954ffdb9383030e02d356b51e09e4e2a7105a Mon Sep 17 00:00:00 2001
+From e04b44c12402494ef5619205bfff03dab3e3d9cb Mon Sep 17 00:00:00 2001
From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
Date: Sun, 5 Nov 2017 12:39:52 +0100
-Subject: [PATCH 1/2] kvmtool: 9p: fixed compilation error
+Subject: [PATCH] kvmtool: 9p: fixed compilation error
makedev is defined in sys/sysmacros.h
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+
---
virtio/9p.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/virtio/9p.c b/virtio/9p.c
-index 6acbfdd..1dee2c2 100644
+index b78f2b3..838c5c4 100644
--- a/virtio/9p.c
+++ b/virtio/9p.c
-@@ -15,6 +15,7 @@
+@@ -16,6 +16,7 @@
#include <string.h>
#include <errno.h>
#include <sys/vfs.h>
@@ -22,6 +25,3 @@ index 6acbfdd..1dee2c2 100644
#include <linux/virtio_ring.h>
#include <linux/virtio_9p.h>
---
-2.15.0
-
diff --git a/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch b/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
index 262531ca..248d6cc0 100644
--- a/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
+++ b/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
@@ -1,20 +1,23 @@
-From 977a4d41012d1814f5a5330cacc2e4944de387cc Mon Sep 17 00:00:00 2001
+From a1c255983169e094c18d82131939b2b66e581000 Mon Sep 17 00:00:00 2001
From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
Date: Sun, 5 Nov 2017 12:39:21 +0100
-Subject: [PATCH 2/2] kvmtool: add EXTRA_CFLAGS variable
+Subject: [PATCH] kvmtool: add EXTRA_CFLAGS variable
to avoid CFLAGS overriding introduce new EXTRA_CFLAGS variable
for setting via command argument
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
+
---
Makefile | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/Makefile b/Makefile
-index 64a0a16..bca1b26 100644
---- a/Makefile
-+++ b/Makefile
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
@@ -2,6 +2,8 @@
# Define WERROR=0 to disable -Werror.
#
@@ -22,8 +25,5 @@ index 64a0a16..bca1b26 100644
+CFLAGS += $(EXTRA_CFLAGS)
+
ifeq ($(strip $(V)),)
- E = @echo
- Q = @
---
-2.15.0
-
+ ifeq ($(findstring s,$(filter-out --%,$(firstword $(MAKEFLAGS)))),)
+ E = @echo
diff --git a/recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch b/recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch
index 4d2f2555..fbde7cd4 100644
--- a/recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch
+++ b/recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch
@@ -1,24 +1,25 @@
-From 377a09c16003eaa40f7f337127b10728ee0ade35 Mon Sep 17 00:00:00 2001
+From 459ebaebf368869ae26eb8031ff44a789e238988 Mon Sep 17 00:00:00 2001
From: Cevat Bostancioglu <bostancioglucevat@gmail.com>
Date: Wed, 19 Jun 2019 20:36:56 +0300
Subject: [PATCH] WERROR override disabled.
WERROR override causes gcc sizeof-pointer-memaccess, format-truncation errors.
+
+Upstream-Status: Inappropriate [embedded specific]
+
---
Makefile | 1 +
1 file changed, 1 insertion(+)
-diff --git a/Makefile b/Makefile
-index 030ff4e..fc5e177 100644
---- a/Makefile
-+++ b/Makefile
-@@ -2,6 +2,7 @@
- # Define WERROR=0 to disable -Werror.
- #
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -4,6 +4,7 @@
+
+ CFLAGS += $(EXTRA_CFLAGS)
+WERROR = 0
ifeq ($(strip $(V)),)
- E = @echo
- Q = @
---
-2.7.4
+ ifeq ($(findstring s,$(filter-out --%,$(firstword $(MAKEFLAGS)))),)
+ E = @echo
diff --git a/recipes-extended/kvmtool/files/external-crosscompiler.patch b/recipes-extended/kvmtool/files/external-crosscompiler.patch
index 75cef3b1..e27ee34b 100644
--- a/recipes-extended/kvmtool/files/external-crosscompiler.patch
+++ b/recipes-extended/kvmtool/files/external-crosscompiler.patch
@@ -1,31 +1,41 @@
+From 91b7123682c67ec8b0c50147c9ebd59efa563f26 Mon Sep 17 00:00:00 2001
+From: Stefan Agner <stefan@agner.ch>
+Date: Tue, 6 Sep 2016 11:51:40 -0700
+Subject: [PATCH] kvmtool: add lightweight hypervisor native Linux KVM tool
+
Upstream-Status: Inappropriate [embedded specific]
This allows OpenEmbedded to pass in cross compiler configuration using
the default envirnment variables. It is required so that kvmtool can
be linked against the cross-compiled libfdt library.
-diff --git a/Makefile b/Makefile
-index 1f0196f..8bfb068 100644
---- a/Makefile
-+++ b/Makefile
-@@ -14,11 +14,6 @@ export E Q
- include config/utilities.mak
+---
+ Makefile | 8 +-------
+ 1 file changed, 1 insertion(+), 7 deletions(-)
+
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -19,12 +19,6 @@
include config/feature-tests.mak
+ -include $(OUTPUT)KVMTOOLS-VERSION-FILE
-CC := $(CROSS_COMPILE)gcc
-CFLAGS :=
-LD := $(CROSS_COMPILE)ld
-LDFLAGS :=
+-OBJCOPY := $(CROSS_COMPILE)objcopy
-
FIND := find
CSCOPE := cscope
TAGS := ctags
-@@ -297,7 +292,7 @@ $(warning No static libc found. Skipping guest init)
- endif
-
- ifeq (y,$(ARCH_WANT_LIBFDT))
-- ifneq ($(call try-build,$(SOURCE_LIBFDT),$(CFLAGS),-lfdt),y)
-+ ifneq ($(call try-build,$(SOURCE_LIBFDT),$(CPPFLAGS) $(CFLAGS),-lfdt),y)
- $(error No libfdt found. Please install libfdt-dev package)
- else
+@@ -367,7 +361,7 @@
+ CFLAGS_DYNOPT += -DCONFIG_HAS_LIBFDT
+ CFLAGS_STATOPT += -DCONFIG_HAS_LIBFDT
+ CFLAGS += -I $(LIBFDT_DIR)
+- else ifeq ($(call try-build,$(SOURCE_LIBFDT),$(CFLAGS),-lfdt),y)
++ else ifeq ($(call try-build,$(SOURCE_LIBFDT),$(CPPFLAGS) $(CFLAGS),-lfdt),y)
+ LIBFDT_STATIC :=
CFLAGS_DYNOPT += -DCONFIG_HAS_LIBFDT
+ CFLAGS_STATOPT += -DCONFIG_HAS_LIBFDT
diff --git a/recipes-extended/kvmtool/kvmtool.bb b/recipes-extended/kvmtool/kvmtool_git.bb
index 90ad8a1f..141fb02d 100644
--- a/recipes-extended/kvmtool/kvmtool.bb
+++ b/recipes-extended/kvmtool/kvmtool_git.bb
@@ -1,7 +1,7 @@
SUMMARY = "Native Linux KVM tool"
DESCRIPTION = "kvmtool is a lightweight tool for hosting KVM guests."
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
DEPENDS = "dtc libaio zlib"
@@ -9,16 +9,15 @@ do_configure[depends] += "virtual/kernel:do_shared_workdir"
inherit kernel-arch
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git \
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git;branch=master \
file://external-crosscompiler.patch \
- file://0001-Avoid-pointers-for-address-of-packed-members.patch \
file://0001-kvmtool-9p-fixed-compilation-error.patch \
file://0002-kvmtool-add-EXTRA_CFLAGS-variable.patch \
file://0003-kvmtool-Werror-disabled.patch \
"
-SRCREV = "0e1882a49f81cb15d328ef83a78849c0ea26eecc"
-PV = "4.14.0+git${SRCPV}"
+SRCREV = "4d2c017f41533b0e51e00f689050c26190a15318"
+PV = "5.10.0+git"
S = "${WORKDIR}/git"
diff --git a/recipes-extended/libibverbs/libibverbs_1.2.1.bb b/recipes-extended/libibverbs/libibverbs_1.2.1.bb
new file mode 100644
index 00000000..048b6b65
--- /dev/null
+++ b/recipes-extended/libibverbs/libibverbs_1.2.1.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Support InfiniBand verbs"
+DESCRIPTION = "Libibverbs is a library that allows userspace processes to use InfiniBand/RDMA 'verbs' directly."
+HOMEPAGE = "http://www.openfabrics.org/downloads/verbs/"
+SECTION = "libs/devel"
+
+LICENSE = "GPL-2.0-only | BSD-2-Clause"
+LIC_FILES_CHKSUM = "file://COPYING;md5=7c557f27dd795ba77cc419dddc656b51"
+
+# Official repo is at git://git.kernel.org/pub/scm/libs/infiniband/libibverbs.git
+SRC_URI = "https://www.openfabrics.org/downloads/verbs/${BPN}-${PV}.tar.gz"
+
+SRC_URI[md5sum] = "1544ebb89d861ce84057ab43dfcd22a0"
+SRC_URI[sha256sum] = "c352a7f24e9a9d30ea74faa35d1b721d78d770506a0c03732e3132b7c85ac330"
+
+inherit autotools
+
+DEPENDS = "libnl pkgconfig-native"
+PACKAGES += "${PN}-utils"
+FILES:${PN} = "${sysconfdir} ${libdir}/*.so.*"
+FILES:${PN}-utils = "${bindir}"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind,"
+
+do_install:append() {
+ mkdir -p ${D}${sysconfdir}/libibverbs.d
+ rm -f ${D}${libdir}/libibverbs.la
+}
+
+PROVIDES = "virtual/libibverbs"
+RPROVIDES:${PN} = "virtual-libibverbs"
+
+COMPATIBLE_HOST:mipsarch = "none"
+COMPATIBLE_HOST:arm = "none"
diff --git a/recipes-extended/libvirt/libvirt-dbus_1.4.1.bb b/recipes-extended/libvirt/libvirt-dbus_1.4.1.bb
new file mode 100644
index 00000000..3f6da334
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt-dbus_1.4.1.bb
@@ -0,0 +1,23 @@
+SUMMARY = "dBus wrapper for libvirt"
+DESCRIPTION = "libvirt-dbus wraps libvirt API to provide a high-level object-oriented API better suited for dbus-based applications."
+AUTHOR = "Lars Karlitski <lars@karlitski.net> Pavel Hrdina <phrdina@redhat.com> Katerina Koukiou <kkoukiou@redhat.com>"
+HOMEPAGE = "https://www.libvirt.org/dbus.html"
+BUGTRACKER = "https://gitlab.com/libvirt/libvirt-dbus/-/issues"
+SECTION = "libs"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+CVE_PRODUCT = "libvirt-dbus"
+
+DEPENDS += "glib-2.0 libvirt libvirt-glib python3-docutils-native"
+
+SRC_URI = "git://gitlab.com/libvirt/libvirt-dbus.git;nobranch=1;protocol=https"
+
+SRCREV = "0c355bb8921d7cbccf93f41a8615fcd973e64f70"
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig
+
+FILES:${PN} += "\
+ ${datadir}/dbus-1/* \
+ ${datadir}/polkit-1/* \
+"
diff --git a/recipes-extended/libvirt/libvirt-glib/0001-meson.build-allow-crosscompiling-gir-and-doc.patch b/recipes-extended/libvirt/libvirt-glib/0001-meson.build-allow-crosscompiling-gir-and-doc.patch
new file mode 100644
index 00000000..cd17bbbf
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt-glib/0001-meson.build-allow-crosscompiling-gir-and-doc.patch
@@ -0,0 +1,37 @@
+From 019d727990d41b5d7911895b75bcb021e4cca3c6 Mon Sep 17 00:00:00 2001
+From: Markus Volk <f_l_k@t-online.de>
+Date: Mon, 21 Aug 2023 10:23:08 +0200
+Subject: [PATCH] meson.build: allow crosscompiling gir and doc
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Markus Volk <f_l_k@t-online.de>
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index 134feb6..a089f42 100644
+--- a/meson.build
++++ b/meson.build
+@@ -58,7 +58,7 @@ includedir = join_paths(prefix, get_option('includedir'))
+
+ # gobject introspection
+ gir = find_program('g-ir-scanner', required: get_option('introspection'))
+-enable_introspection = gir.found() and not meson.is_cross_build()
++enable_introspection = gir.found()
+
+ # vala
+ vapi_opt = get_option('vapi')
+@@ -73,7 +73,7 @@ endif
+ # gtk-doc
+ if not get_option('docs').disabled()
+ gtk_doc = find_program('gtkdoc-scan', required: get_option('docs'))
+- enable_doc = gtk_doc.found() and not meson.is_cross_build()
++ enable_doc = gtk_doc.found()
+ else
+ enable_doc = false
+ endif
+--
+2.41.0
+
diff --git a/recipes-extended/libvirt/libvirt-glib_5.0.0.bb b/recipes-extended/libvirt/libvirt-glib_5.0.0.bb
new file mode 100644
index 00000000..4435ca0b
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt-glib_5.0.0.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
+HOMEPAGE = "http://libvirt.org"
+LICENSE = "LGPL-2.1-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
+
+DEPENDS = "glib-2.0 libvirt libxml2 libxslt"
+
+SRC_URI = " \
+ git://gitlab.com/libvirt/libvirt-glib;protocol=https;branch=master \
+ file://0001-meson.build-allow-crosscompiling-gir-and-doc.patch \
+"
+
+SRCREV = "9b26bec8828a38fcb3bc0e5f6f33b03fa99c4b68"
+S = "${WORKDIR}/git"
+
+inherit meson pkgconfig gobject-introspection gettext vala gtk-doc
+
+GIR_MESON_ENABLE_FLAG = 'enabled'
+GIR_MESON_DISABLE_FLAG = 'disabled'
+GTKDOC_MESON_ENABLE_FLAG = 'enabled'
+GTKDOC_MESON_DISABLE_FLAG = 'disabled'
diff --git a/recipes-extended/libvirt/libvirt-python.inc b/recipes-extended/libvirt/libvirt-python.inc
index 796d6dd8..6fb2b68c 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -1,25 +1,26 @@
-inherit pythonnative python-dir
+inherit python3native python3-dir python3targetconfig
export STAGING_INCDIR
export STAGING_LIBDIR
export BUILD_SYS
export HOST_SYS
-RDEPENDS_${PN}-python += "python"
+RDEPENDS:${PN}-python += "python3"
PACKAGECONFIG_${PN}-python[xen] = ",,,xen-python"
PACKAGES += "${PN}-python-staticdev ${PN}-python-dev ${PN}-python-dbg ${PN}-python"
-FILES_${PN}-python-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-python-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
-FILES_${PN}-python-dbg += "${PYTHON_SITEPACKAGES_DIR}/.debug/"
-FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+FILES:${PN}-python-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
+FILES:${PN}-python-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
+FILES:${PN}-python-dbg += "${PYTHON_SITEPACKAGES_DIR}/.debug/"
+FILES:${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
+
+# Currently the libvirt-python debug libraries contain buildpaths
+INSANE_SKIP:${PN}-dbg += "buildpaths"
SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"
-SRC_URI += "file://libvirt_api_xml_path.patch;patchdir=../libvirt-python-${PV}"
-SRC_URI[libvirt_python.md5sum] = "4c8c38c409f967b8b47e0d7c6df050a4"
-SRC_URI[libvirt_python.sha256sum] = "561cafedb83e41880405905f6309f4a86981cfe05edbbc83c839f7c47d8ba603"
+SRC_URI[libvirt_python.sha256sum] = "a82588f0e7db53eda7b7dbcbc448b0ec43e00a8c77cac69644495299b410c20d"
export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
@@ -39,17 +40,25 @@ python __anonymous () {
d.setVar('LIBVIRT_PYTHON_ENABLE', '0')
}
-do_compile_append() {
+do_compile:append() {
if [ "${LIBVIRT_PYTHON_ENABLE}" = "1" ]; then
+ # we need the python bindings to look into our source dir, not
+ # the syroot staged pkgconfig entries. So we clear the sysroot
+ # for just this portion.
+ export PKG_CONFIG_SYSROOT_DIR=
cd ${WORKDIR}/${BPN}-python-${PV} && \
- ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build
+ ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py build
fi
}
-do_install_append() {
+do_install:append() {
if [ "${LIBVIRT_PYTHON_ENABLE}" = "1" ]; then
+ # we need the python bindings to look into our source dir, not
+ # the syroot staged pkgconfig entries. So we clear the sysroot
+ # for just this portion.
+ export PKG_CONFIG_SYSROOT_DIR=
cd ${WORKDIR}/${BPN}-python-${PV} && \
- ${STAGING_BINDIR_NATIVE}/python-native/python setup.py install \
+ ${STAGING_BINDIR_NATIVE}/python3-native/python3 setup.py install \
--install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${LIBVIRT_INSTALL_ARGS}
fi
}
diff --git a/recipes-extended/libvirt/libvirt/0001-messon.build-remove-build-path-information-to-avoid-.patch b/recipes-extended/libvirt/libvirt/0001-messon.build-remove-build-path-information-to-avoid-.patch
new file mode 100644
index 00000000..d9bcef0b
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt/0001-messon.build-remove-build-path-information-to-avoid-.patch
@@ -0,0 +1,55 @@
+From 9660b76325c841a5f5c7d5b2fb439a1fd64105c9 Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Thu, 19 Jan 2023 17:07:37 +0800
+Subject: [PATCH] messon.build: remove build path information to avoid yocto QA
+ buildpath check warnings
+
+libvirt debug trace contains source path, and some utils was located to
+yocto sysroot folder, those full source path cause yocto QA buildpath check failed and report warnings as below:
+
+WARNING: libvirt-8.1.0-r0 do_package_qa: QA Issue: File /usr/libexec/libvirt_lxc in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt.so.0.8001.0 in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/lock-driver/lockd.so in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/connection-driver/libvirt_driver_lxc.so in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/connection-driver/libvirt_driver_storage.so in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/connection-driver/libvirt_driver_network.so in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_fs.so in package libvirt contains reference to TMPDIR
+File /usr/lib64/libvirt/storage-backend/libvirt_storage_backend_disk.so in package libvirt contains reference to TMPDIR
+File /usr/bin/virt-ssh-helper in package libvirt contains reference to TMPDIR [buildpaths]
+
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ meson.build | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+Index: libvirt-9.2.0/meson.build
+===================================================================
+--- libvirt-9.2.0.orig/meson.build
++++ libvirt-9.2.0/meson.build
+@@ -26,8 +26,8 @@
+ conf = configuration_data()
+
+ conf.set('_GNU_SOURCE', 1)
+-conf.set_quoted('abs_top_builddir', meson.project_build_root())
+-conf.set_quoted('abs_top_srcdir', meson.project_source_root())
++conf.set_quoted('abs_top_builddir', ' ')
++conf.set_quoted('abs_top_srcdir', ' ')
+ conf.set_quoted('PACKAGE', meson.project_name())
+ conf.set_quoted('PACKAGE_NAME', meson.project_name())
+ conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+@@ -1770,9 +1770,9 @@
+ use_storage = true
+
+ conf.set('WITH_STORAGE_FS', 1)
+- conf.set_quoted('MOUNT', mount_prog.full_path())
+- conf.set_quoted('UMOUNT', umount_prog.full_path())
+- conf.set_quoted('MKFS', mkfs_prog.full_path())
++ conf.set_quoted('MOUNT', '/usr/bin/mount')
++ conf.set_quoted('UMOUNT', '/usr/bin/umount')
++ conf.set_quoted('MKFS', '/usr/sbin/mkfs')
+
+ showmount_prog = find_program('showmount', required: false, dirs: libvirt_sbin_path)
+ showmount_path = ''
diff --git a/recipes-extended/libvirt/libvirt/0001-prevent-gendispatch.pl-generating-build-path-in-code.patch b/recipes-extended/libvirt/libvirt/0001-prevent-gendispatch.pl-generating-build-path-in-code.patch
new file mode 100644
index 00000000..defbd7ee
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt/0001-prevent-gendispatch.pl-generating-build-path-in-code.patch
@@ -0,0 +1,43 @@
+From ba915b13b92f3a625633ede43789c1ba780371af Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Wed, 18 Jan 2023 03:19:07 +0000
+Subject: [PATCH] prevent gendispatch.pl generating build path in code comments
+
+gendispatch.pl will add build dir in code comments which was generated
+by itself. those build dir information would cause yocto qa report
+warnings like:
+
+WARNING: libvirt-8.1.0-r0 do_package_qa:
+QA Issue: File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapicheckqemu.h in package libvirt-src contains reference to TMPDIR
+File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapichecklxc.h in package libvirt-src contains reference to TMPDIR
+File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapicheckqemu.c in package libvirt-src contains reference to TMPDIR
+File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapichecklxc.c in package libvirt-src contains reference to TMPDIR
+File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapicheck.h in package libvirt-src contains reference to TMPDIR
+File /usr/src/debug/libvirt/8.1.0-r0/src/access/viraccessapicheck.c in package libvirt-src contains reference to TMPDIR [buildpaths]
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ src/rpc/gendispatch.pl | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+Index: libvirt-9.2.0/src/rpc/gendispatch.pl
+===================================================================
+--- libvirt-9.2.0.orig/src/rpc/gendispatch.pl
++++ libvirt-9.2.0/src/rpc/gendispatch.pl
+@@ -449,12 +449,12 @@
+
+ if ($mode eq "aclsym") {
+ print <<__EOF__;
+-# Automatically generated from $protocol by gendispatch.pl.
++# Automatically generated by gendispatch.pl.
+ # Do not edit this file. Any changes you make will be lost.
+ __EOF__
+ } else {
+ print <<__EOF__;
+-/* Automatically generated from $protocol by gendispatch.pl.
++/* Automatically generated by gendispatch.pl.
+ * Do not edit this file. Any changes you make will be lost.
+ */
+ __EOF__
diff --git a/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch b/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch
index 217bdbc5..cabc4cb6 100644
--- a/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch
+++ b/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch
@@ -1,4 +1,4 @@
-From ffc71da15c3da068f85d16617b6e0c0175fc0110 Mon Sep 17 00:00:00 2001
+From 7b265b06ca432c8d90df1af8e89f4b919b748ac2 Mon Sep 17 00:00:00 2001
From: He Zhe <zhe.he@windriver.com>
Date: Tue, 23 Aug 2016 02:28:47 -0400
Subject: [PATCH] ptest: Remove Windows-1252 check from esxutilstest
@@ -6,16 +6,19 @@ Subject: [PATCH] ptest: Remove Windows-1252 check from esxutilstest
Currently we use iconv from glibc-locale and it does not support
Windows-1252 and we don't need support windows character encoding.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: He Zhe <zhe.he@windriver.com>
+
---
tests/esxutilstest.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/tests/esxutilstest.c b/tests/esxutilstest.c
-index 44bdc84..3223de3 100644
+index 2e20200..6c57889 100644
--- a/tests/esxutilstest.c
+++ b/tests/esxutilstest.c
-@@ -258,7 +258,6 @@ mymain(void)
+@@ -256,7 +256,6 @@ mymain(void)
DO_TEST(ParseDatastorePath);
DO_TEST(ConvertDateTimeToCalendarTime);
DO_TEST(EscapeDatastoreItem);
@@ -23,6 +26,3 @@ index 44bdc84..3223de3 100644
return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
---
-2.8.1
-
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 c920139e..00000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 8353dc1e642011199c3b3ba057d51d8768e4cd54 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-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@cn.fujitsu.com>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- docs/Makefile.am | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index 9620587..060a82b 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -183,7 +183,7 @@ EXTRA_DIST= \
- hvsupport.pl \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- $(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(srcdir)/genaclperms.pl Makefile.am
-@@ -247,8 +247,7 @@ MAINTAINERCLEANFILES += \
- %.png: %.fig
- convert -rotate 90 $< $@
-
--%.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//'`; \
- dir=`dirname $@` ; \
- if test "$$dir" = "."; \
---
-1.9.1
-
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 0a9d5f48..00000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From f10477f0fe5e4b7487a4a41faa216d10cd2bc7c3 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-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@windriver.com>
----
- 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 5a6408c..6c19f6d 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -33,10 +33,10 @@ if test x"$with_remote" = x"yes" || test x"$with_libvirtd" = x"yes"; then
- dnl check for cygwin's variation in xdr function names
- AC_CHECK_FUNCS([xdr_u_int64_t],[],[],[#include <rpc/xdr.h>])
-
-- dnl Cygwin/recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Cygwin/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
---
-2.7.4
-
diff --git a/recipes-extended/libvirt/libvirt/hook_support.py b/recipes-extended/libvirt/libvirt/hook_support.py
index c3eb8b3a..7c5e2a94 100755
--- a/recipes-extended/libvirt/libvirt/hook_support.py
+++ b/recipes-extended/libvirt/libvirt/hook_support.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (C) 2014 Wind River Systems, Inc.
#
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 94c72998..00000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 4aea9dbeb7f7990ac5a2227d80251570b4a5bca1 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-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@windriver.com>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 7d0387e..68c3561 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -168,6 +168,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -303,6 +304,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1539,7 +1541,7 @@ endif ! WITH_CIL
-
- 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'
---
-2.7.4
-
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@freescale.com>
-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@freescale.com>
----
- 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 635d1e81..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 3e271f6db12ffe34843428ec2f0bca7a8fe3aa65 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-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@windriver.com>
-[MA: Update to apply agains v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- 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 8fa4889..08b2f53 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.0.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 )
---
-2.1.0
-
diff --git a/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch b/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch
deleted file mode 100644
index 30c30e88..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-Adding support for LIBVIRT_CFLAGS and LIBVIRT_LIBS
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
-
-
-Adding a support for LIBVIRT_API_PATH evironment variable, which can
-control where the script should look for the 'libvirt-api.xml' file.
-This allows building libvirt-python against different libvirt than the
-one installed in the system. This may be used for example in autotest
-or by packagers without the need to install libvirt into the system.
-
-Signed-off-by: Martin Kletzander <mkletzan redhat com>
-[ywei: rebased to 1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
----
- setup.py | 35 ++++++++++++++++++++++++-----------
- 1 file changed, 24 insertions(+), 11 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index eff9d54..48ec4fe 100755
---- a/setup.py
-+++ b/setup.py
-@@ -43,13 +43,7 @@ def check_minimum_libvirt_version():
- "libvirt"])
-
- def have_libvirt_lxc():
-- try:
-- spawn([get_pkgcfg(),
-- "--atleast-version=%s" % MIN_LIBVIRT_LXC,
-- "libvirt"])
-- return True
-- except DistutilsExecError:
-- return False
-+ return True
-
- def have_libvirtaio():
- # This depends on asyncio, which in turn depends on "yield from" syntax.
-@@ -77,7 +71,17 @@ def get_api_xml_files():
- """Check with pkg-config that libvirt is present and extract
- the API XML file paths we need from it"""
-
-- libvirt_api = get_pkgconfig_data(["--variable", "libvirt_api"], "libvirt")
-+ libvirt_api = os.getenv("LIBVIRT_API_PATH")
-+
-+ if libvirt_api:
-+ if not libvirt_api.endswith("-api.xml"):
-+ raise ValueError("Invalid path '%s' for API XML" % libvirt_api)
-+ if not os.path.exists(libvirt_api):
-+ raise ValueError("API XML '%s' does not exist, "
-+ "have you built libvirt?" % libvirt_api)
-+ else:
-+ libvirt_api = get_pkgconfig_data(["--variable", "libvirt_api"],
-+ "libvirt")
-
- offset = libvirt_api.index("-api.xml")
- libvirt_qemu_api = libvirt_api[0:offset] + "-qemu-api.xml"
-@@ -97,8 +101,17 @@ def get_module_lists():
-
- c_modules = []
- py_modules = []
-- ldflags = get_pkgconfig_data(["--libs-only-L"], "libvirt", False).split()
-- cflags = get_pkgconfig_data(["--cflags"], "libvirt", False).split()
-+ libvirt_cflags = os.getenv("LIBVIRT_CFLAGS")
-+ if libvirt_cflags:
-+ cflags = libvirt_cflags.split()
-+ else:
-+ cflags = get_pkgconfig_data(["--cflags"], "libvirt", False).split()
-+
-+ libvirt_libs = os.getenv("LIBVIRT_LIBS")
-+ if libvirt_libs:
-+ ldflags = libvirt_libs.split()
-+ else:
-+ ldflags = get_pkgconfig_data(["--libs-only-L"], "libvirt", False).split()
-
- module = Extension('libvirtmod',
- sources = ['libvirt-override.c', 'build/libvirt.c', 'typewrappers.c', 'libvirt-utils.c'],
-@@ -144,7 +157,7 @@ def get_module_lists():
- class my_build(build):
-
- def run(self):
-- check_minimum_libvirt_version()
-+# check_minimum_libvirt_version()
- apis = get_api_xml_files()
-
- self.spawn([sys.executable, "generator.py", "libvirt", apis[0]])
---
-2.17.0
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@redhat.com>
-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 bc97ba61..00000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 52fc46b4f8cfd36476f59c0796f4f39686b53953 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-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@enea.com>
-[KK: Update context for 1.3.5.]
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
-[MA: Allow separate source and build dirs]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-[ZH: add missing test_helper files]
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-[MA: Update context for v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-[DDU: Update context for v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- tests/Makefile.am | 68 ++++++++++++++++++++++++++++++++++++++++++++++++-------
- 1 file changed, 60 insertions(+), 8 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 46d94d2..7d0387e 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -29,11 +29,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) \
- $(LIBNL_CFLAGS) \
- $(GNUTLS_CFLAGS) \
-@@ -465,10 +467,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" \
- SHELL="$(SHELL)" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
-@@ -1535,5 +1537,55 @@ else ! WITH_CIL
- EXTRA_DIST += objectlocking.ml
- endif ! WITH_CIL
-
-+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)/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 *.cmi *.cmx \
- objectlocking-files.txt
---
-2.7.4
-
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 53e93258..00000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From ae4b40a1b3cb63a322716b6ad1762d53ada249e1 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@windriver.com>
-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@windriver.com>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
-[MA: rebase to v4.3.0]
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-[ddu: rebase to v5.3.0]
-Signed-off-by: Dengke Du <dengke.du@windriver.com>
----
- examples/Makefile.am | 19 +++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 31 insertions(+)
-
-Index: libvirt-5.5.0/examples/Makefile.am
-===================================================================
---- libvirt-5.5.0.orig/examples/Makefile.am
-+++ libvirt-5.5.0/examples/Makefile.am
-@@ -77,6 +77,10 @@
- $(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,21 @@
- c_misc_hellolibvirt_SOURCES = c/misc/hellolibvirt.c
- c_misc_openauth_SOURCES = c/misc/openauth.c
-
-+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
-+
- if WITH_NWFILTER
-
- nwfilterdir = $(sysconfdir)/libvirt/nwfilter
-Index: libvirt-5.5.0/tools/Makefile.am
-===================================================================
---- libvirt-5.5.0.orig/tools/Makefile.am
-+++ libvirt-5.5.0/tools/Makefile.am
-@@ -188,6 +188,12 @@
- ../gnulib/lib/libgnu.la \
- $(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)
-@@ -265,6 +271,12 @@
- $(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_10.0.0.bb b/recipes-extended/libvirt/libvirt_10.0.0.bb
new file mode 100644
index 00000000..6b19b700
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt_10.0.0.bb
@@ -0,0 +1,334 @@
+DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux."
+HOMEPAGE = "http://libvirt.org"
+LICENSE = "LGPL-2.1-or-later & GPL-2.0-or-later"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
+ file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
+SECTION = "console/tools"
+
+DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux e2fsprogs pm-utils \
+ iptables dnsmasq readline libtasn1 libxslt-native acl libdevmapper libtirpc \
+ python3-docutils-native \
+ ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'shadow-native', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gnutls', 'gnutls-native', '', d)}"
+
+# libvirt-guests.sh needs gettext.sh
+#
+RDEPENDS:${PN} = "gettext-runtime"
+
+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"
+RDEPENDS:libvirt-libvirtd:append:arm = " dmidecode"
+RDEPENDS:libvirt-libvirtd:append:aarch64 = " dmidecode"
+
+#connman blocks the 53 port and libvirtd can't start its DNS service
+RCONFLICTS:${PN}_libvirtd = "connman"
+
+SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.xz;name=libvirt \
+ file://libvirtd.sh \
+ file://libvirtd.conf \
+ file://dnsmasq.conf \
+ file://hook_support.py \
+ file://gnutls-helper.py \
+ file://0001-prevent-gendispatch.pl-generating-build-path-in-code.patch \
+ file://0001-messon.build-remove-build-path-information-to-avoid-.patch \
+ "
+
+SRC_URI[libvirt.sha256sum] = "8ba2e72ec8bdd2418554a1474c42c35704c30174b7611eaf9a16544b71bcf00a"
+
+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"
+
+
+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"
+INSANE_SKIP:${PN} += "empty-dirs"
+
+PACKAGES =+ "${PN}-libvirtd ${PN}-virsh"
+
+ALLOW_EMPTY:${PN}-libvirtd = "1"
+
+FILES:${PN}-libvirtd = " \
+ ${sysconfdir}/init.d \
+ ${sysconfdir}/sysctl.d \
+ ${sysconfdir}/logrotate.d \
+ ${sysconfdir}/libvirt/libvirtd.conf \
+ /usr/lib/sysctl.d/60-libvirtd.conf \
+ /usr/lib/sysctl.d/60-qemu-postcopy-migration.conf \
+ ${sbindir}/libvirtd \
+ ${systemd_system_unitdir} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', '${libexecdir}/libvirt-guests.sh', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'gnutls', '${sysconfdir}/pki/libvirt/* ${sysconfdir}/pki/CA/*', '', d)} \
+ "
+
+FILES:${PN}-virsh = " \
+ ${bindir}/virsh \
+ ${datadir}/bash-completion/completions/virsh \
+"
+
+FILES:${PN} += "${libdir}/libvirt/connection-driver \
+ ${datadir}/augeas \
+ ${@bb.utils.contains('PACKAGECONFIG', 'polkit', '${datadir}/polkit-1', '', d)} \
+ ${datadir}/bash-completion/completions/vsh \
+ ${datadir}/bash-completion/completions/virt-admin \
+ /usr/lib/firewalld/ \
+ "
+
+FILES:${PN}-dbg += "${libdir}/libvirt/connection-driver/.debug ${libdir}/libvirt/lock-driver/.debug"
+FILES:${PN}-staticdev += "${libdir}/*.a ${libdir}/libvirt/connection-driver/*.a ${libdir}/libvirt/lock-driver/*.a"
+
+CONFFILES:${PN} += "${sysconfdir}/libvirt/libvirt.conf \
+ ${sysconfdir}/libvirt/lxc.conf \
+ ${sysconfdir}/libvirt/qemu-lockd.conf \
+ ${sysconfdir}/libvirt/qemu.conf \
+ ${sysconfdir}/libvirt/virt-login-shell.conf \
+ ${sysconfdir}/libvirt/virtlockd.conf"
+
+CONFFILES:${PN}-libvirtd = "${sysconfdir}/logrotate.d/libvirt ${sysconfdir}/logrotate.d/libvirt.lxc \
+ ${sysconfdir}/logrotate.d/libvirt.qemu ${sysconfdir}/logrotate.d/libvirt.uml \
+ ${sysconfdir}/libvirt/libvirtd.conf \
+ /usr/lib/sysctl.d/libvirtd.conf"
+
+INITSCRIPT_PACKAGES = "${PN}-libvirtd"
+INITSCRIPT_NAME:${PN}-libvirtd = "libvirtd"
+INITSCRIPT_PARAMS:${PN}-libvirtd = "defaults 72"
+
+SYSTEMD_PACKAGES = "${PN}-libvirtd"
+SYSTEMD_SERVICE:${PN}-libvirtd = " \
+ libvirtd.service \
+ virtlockd.service \
+ libvirt-guests.service \
+ virtlockd.socket \
+ "
+
+# xen-minimal config
+#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"
+
+# full config
+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)} \
+ "
+
+# qemu is NOT compatible with mips64, powerpc and riscv32
+PACKAGECONFIG:remove:mipsarchn32 = "qemu"
+PACKAGECONFIG:remove:mipsarchn64 = "qemu"
+PACKAGECONFIG:remove:powerpc = "qemu"
+PACKAGECONFIG:remove:riscv32 = "qemu"
+
+# numactl is NOT compatible with arm
+PACKAGECONFIG:remove:arm = "numactl"
+PACKAGECONFIG:remove:armeb = "numactl"
+
+# enable,disable,depends,rdepends
+#
+PACKAGECONFIG[gnutls] = ",,,gnutls-bin"
+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] = "-Dsasl=enabled,-Dsasl=disabled,cyrus-sasl,cyrus-sasl"
+PACKAGECONFIG[numactl] = "-Dnumactl=enabled,-Dnumactl=disabled,numactl,"
+PACKAGECONFIG[fuse] = "-Dfuse=enabled,-Dfuse=disabled,fuse3,"
+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=enabled, -Dapparmor_profiles=disabled,"
+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
+
+do_compile() {
+ cd ${B}/src
+ # There may be race condition, but without creating these directories
+ # in the source tree, generation of files fails.
+ for i in access admin logging esx locking rpc hyperv lxc \
+ remote network storage interface nwfilter node_device \
+ secret vbox qemu; do
+ mkdir -p $i;
+ done
+
+ cd ${B}
+ export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
+ ninja all
+}
+
+do_install:prepend() {
+ # so the install routines can find the libvirt.pc in the source dir
+ export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${B}/src:"
+}
+
+do_install:append() {
+ install -d ${D}/etc/init.d
+ install -d ${D}/etc/libvirt
+ install -d ${D}/etc/dnsmasq.d
+
+ install -m 0755 ${WORKDIR}/libvirtd.sh ${D}/etc/init.d/libvirtd
+ install -m 0644 ${WORKDIR}/libvirtd.conf ${D}/etc/libvirt/libvirtd.conf
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
+ # This will wind up in the libvirtd package, but will NOT be invoked by default.
+ #
+ mv ${D}/${libexecdir}/libvirt-guests.sh ${D}/${sysconfdir}/init.d
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ if [ "${systemd_system_unitdir}" != "${prefix}/lib/systemd/system" ] ; then
+ # ./src/meson.build: systemd_unit_dir = prefix / 'lib' / 'systemd' / 'system'
+ # ./tools/meson.build: install_dir: prefix / 'lib' / 'systemd' / 'system',
+ mkdir -p ${D}${systemd_system_unitdir}
+ mv ${D}${prefix}/lib/systemd/system/* ${D}${systemd_system_unitdir}
+ rmdir ${D}${prefix}/lib/systemd/system ${D}${prefix}/lib/systemd
+ fi
+
+ # We can't use 'notify' when we don't support 'sd_notify' dbus capabilities.
+ # Change default LIBVIRTD_ARGS to start libvirtd in the right mode.
+ sed -i -e 's/Type=notify/Type=forking/' \
+ -e '/Type=forking/a PIDFile=/run/libvirtd.pid' \
+ -e 's/\(Environment=LIBVIRTD_ARGS="--timeout 120"\)/#\1\nEnvironment=LIBVIRTD_ARGS="--listen --daemon"/' \
+ ${D}/${systemd_system_unitdir}/libvirtd.service
+ fi
+
+ # The /run/libvirt directories created by the Makefile are
+ # wiped out in volatile, we need to create these at boot.
+ rm -rf ${D}/run
+ install -d ${D}${sysconfdir}/default/volatiles
+ echo "d root root 0755 /run/libvirt none" \
+ > ${D}${sysconfdir}/default/volatiles/99_libvirt
+ echo "d root root 0755 /run/libvirt/lockd none" \
+ >> ${D}${sysconfdir}/default/volatiles/99_libvirt
+ echo "d root root 0755 /run/libvirt/lxc none" \
+ >> ${D}${sysconfdir}/default/volatiles/99_libvirt
+ echo "d root root 0755 /run/libvirt/network none" \
+ >> ${D}${sysconfdir}/default/volatiles/99_libvirt
+ echo "d root root 0755 /run/libvirt/qemu none" \
+ >> ${D}${sysconfdir}/default/volatiles/99_libvirt
+
+ # Manually set permissions and ownership to match polkit recipe
+ if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
+ install -d -m 0700 ${D}/${datadir}/polkit-1/rules.d
+ chown polkitd ${D}/${datadir}/polkit-1/rules.d
+ chgrp root ${D}/${datadir}/polkit-1/rules.d
+ else
+ rm -rf ${D}/${datadir}/polkit-1
+ fi
+
+ # disable seccomp_sandbox
+ if [ -e ${D}${sysconfdir}/libvirt/qemu.conf ] ; then
+ sed -i '/^#seccomp_sandbox = 1/aseccomp_sandbox = 0' \
+ ${D}${sysconfdir}/libvirt/qemu.conf
+ fi
+
+ # Add hook support for libvirt
+ mkdir -p ${D}/etc/libvirt/hooks
+ for hook in "daemon" "lxc" "network" "qemu"
+ do
+ install -m 0755 ${WORKDIR}/hook_support.py ${D}/etc/libvirt/hooks/${hook}
+ done
+
+ # Force the main dnsmasq instance to bind only to specified interfaces and
+ # to not bind to virbr0. Libvirt will run its own instance on this interface.
+ install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/libvirt-daemon
+
+ # remove .la references to our working diretory
+ for i in `find ${D}${libdir} -type f -name *.la`; do
+ sed -i -e 's#-L${B}/src/.libs##g' $i
+ done
+
+ sed -i -e 's/^\(unix_sock_group\ =\ \).*/\1"kvm"/' ${D}/etc/libvirt/libvirtd.conf
+ sed -i -e 's/^\(unix_sock_rw_perms\ =\ \).*/\1"0776"/' ${D}/etc/libvirt/libvirtd.conf
+
+ case ${MACHINE_ARCH} in
+ *mips*)
+ break
+ ;;
+ *)
+ if ${@bb.utils.contains('PACKAGECONFIG', 'qemu', 'true', 'false', d)}; then
+ chown -R qemu:qemu ${D}/${localstatedir}/lib/libvirt/qemu
+ echo "d qemu qemu 0755 ${localstatedir}/cache/libvirt/qemu none" \
+ >> ${D}${sysconfdir}/default/volatiles/99_libvirt
+ break
+ fi
+ ;;
+ esac
+
+ if ${@bb.utils.contains('PACKAGECONFIG','gnutls','true','false',d)}; then
+ # Generate sample keys and certificates.
+ cd ${WORKDIR}
+ ${WORKDIR}/gnutls-helper.py -y
+
+ # Deploy all sample keys and certificates of CA, server and client
+ # to target so that libvirtd is able to boot successfully and local
+ # 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 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
+ install -m 0644 ${WORKDIR}/servercert.pem ${D}/${sysconfdir}/pki/libvirt/servercert.pem
+ install -m 0644 ${WORKDIR}/clientkey.pem ${D}/${sysconfdir}/pki/libvirt/private/clientkey.pem
+ install -m 0644 ${WORKDIR}/clientcert.pem ${D}/${sysconfdir}/pki/libvirt/clientcert.pem
+
+ # Force the connection to be tls.
+ sed -i -e 's/^\(listen_tls\ =\ .*\)/#\1/' -e 's/^\(listen_tcp\ =\ .*\)/#\1/' ${D}/etc/libvirt/libvirtd.conf
+ fi
+
+ # virt-login-shell needs to run with setuid permission
+ chmod 4755 ${D}${bindir}/virt-login-shell
+}
+
+EXTRA_OEMESON += " \
+ -Dinit_script=${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','none', d)} \
+ -Drunstatedir=/run \
+ -Dtests=enabled \
+ "
+
+# gcc9 end up mis-compiling qemuxml2argvtest.o with Og which then
+# crashes on target, so remove -Og and use -O2 as workaround
+SELECTED_OPTIMIZATION:remove:virtclass-multilib-lib32:mipsarch = "-Og"
+SELECTED_OPTIMIZATION:append:virtclass-multilib-lib32:mipsarch = " -O2"
+
+pkg_postinst:${PN}() {
+ if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
+ /etc/init.d/populate-volatile.sh update
+ fi
+ mkdir -m 711 -p $D/data/images
+}
+
+python () {
+ if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
+ d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
+}
diff --git a/recipes-extended/libvirt/libvirt_5.5.0.bb b/recipes-extended/libvirt/libvirt_5.5.0.bb
deleted file mode 100644
index 53f4b3e3..00000000
--- a/recipes-extended/libvirt/libvirt_5.5.0.bb
+++ /dev/null
@@ -1,387 +0,0 @@
-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"
-
-DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux e2fsprogs pm-utils \
- iptables dnsmasq readline libtasn1 libxslt-native acl libdevmapper libtirpc \
- ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'shadow-native', '', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'gnutls', 'gnutls-native', '', d)}"
-
-# libvirt-guests.sh needs gettext.sh
-#
-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_append_x86-64 = " dmidecode"
-RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
-
-#connman blocks the 53 port and libvirtd can't start its DNS service
-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://hook_support.py \
- file://gnutls-helper.py \
- "
-
-SRC_URI[libvirt.md5sum] = "27c5fb6c8d2d46eb9e8165aeb3b499b0"
-SRC_URI[libvirt.sha256sum] = "2306ef0947a594f91ec9da4b8b0307bdb54b897f17de19f48e8ecdca08ff35e8"
-
-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd
-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_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=
-
-ALLOW_EMPTY_${PN} = "1"
-
-PACKAGES =+ "${PN}-libvirtd ${PN}-virsh"
-
-ALLOW_EMPTY_${PN}-libvirtd = "1"
-
-FILES_${PN}-libvirtd = " \
- ${sysconfdir}/init.d \
- ${sysconfdir}/sysctl.d \
- ${sysconfdir}/logrotate.d \
- ${sysconfdir}/libvirt/libvirtd.conf \
- /usr/lib/sysctl.d/60-libvirtd.conf \
- ${sbindir}/libvirtd \
- ${systemd_unitdir}/system/* \
- ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', '${libexecdir}/libvirt-guests.sh', d)} \
- ${@bb.utils.contains('PACKAGECONFIG', 'gnutls', '${sysconfdir}/pki/libvirt/* ${sysconfdir}/pki/CA/*', '', d)} \
- "
-
-FILES_${PN}-virsh = " \
- ${bindir}/virsh \
- ${datadir}/bash-completion/completions/virsh \
-"
-
-FILES_${PN} += "${libdir}/libvirt/connection-driver \
- ${datadir}/augeas \
- ${@bb.utils.contains('PACKAGECONFIG', 'polkit', '${datadir}/polkit-1', '', d)} \
- ${datadir}/bash-completion/completions/vsh \
- ${datadir}/bash-completion/completions/virt-admin \
- /usr/lib/firewalld/zones/libvirt.xml \
- "
-
-FILES_${PN}-dbg += "${libdir}/libvirt/connection-driver/.debug ${libdir}/libvirt/lock-driver/.debug"
-FILES_${PN}-staticdev += "${libdir}/*.a ${libdir}/libvirt/connection-driver/*.a ${libdir}/libvirt/lock-driver/*.a"
-
-CONFFILES_${PN} += "${sysconfdir}/libvirt/libvirt.conf \
- ${sysconfdir}/libvirt/lxc.conf \
- ${sysconfdir}/libvirt/qemu-lockd.conf \
- ${sysconfdir}/libvirt/qemu.conf \
- ${sysconfdir}/libvirt/virt-login-shell.conf \
- ${sysconfdir}/libvirt/virtlockd.conf"
-
-CONFFILES_${PN}-libvirtd = "${sysconfdir}/logrotate.d/libvirt ${sysconfdir}/logrotate.d/libvirt.lxc \
- ${sysconfdir}/logrotate.d/libvirt.qemu ${sysconfdir}/logrotate.d/libvirt.uml \
- ${sysconfdir}/libvirt/libvirtd.conf \
- /usr/lib/sysctl.d/libvirtd.conf"
-
-INITSCRIPT_PACKAGES = "${PN}-libvirtd"
-INITSCRIPT_NAME_${PN}-libvirtd = "libvirtd"
-INITSCRIPT_PARAMS_${PN}-libvirtd = "defaults 72"
-
-SYSTEMD_PACKAGES = "${PN}-libvirtd"
-SYSTEMD_SERVICE_${PN}-libvirtd = " \
- libvirtd.service \
- virtlockd.service \
- 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 ??= "qemu yajl openvz vmware vbox esx iproute2 lxc test \
- remote macvtap libvirtd netcf udev python ebtables \
- fuse iproute2 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)} \
- "
-
-# qemu is NOT compatible with mips64
-PACKAGECONFIG_remove_mipsarchn32 = "qemu"
-PACKAGECONFIG_remove_mipsarchn64 = "qemu"
-
-# numactl is NOT compatible with arm
-PACKAGECONFIG_remove_arm = "numactl"
-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[xenapi] = "--with-xenapi,--without-xenapi,,"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[phyp] = "--with-phyp,--without-phyp,,"
-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[python] = ",,python,"
-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,"
-
-# Enable the Python tool support
-require libvirt-python.inc
-
-do_install_append() {
- install -d ${D}/etc/init.d
- install -d ${D}/etc/libvirt
- install -d ${D}/etc/dnsmasq.d
-
- install -m 0755 ${WORKDIR}/libvirtd.sh ${D}/etc/init.d/libvirtd
- install -m 0644 ${WORKDIR}/libvirtd.conf ${D}/etc/libvirt/libvirtd.conf
-
- if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
- # This will wind up in the libvirtd package, but will NOT be invoked by default.
- #
- mv ${D}/${libexecdir}/libvirt-guests.sh ${D}/${sysconfdir}/init.d
- fi
-
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- # 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
-
- # We can't use 'notify' when we don't support 'sd_notify' dbus capabilities.
- sed -i -e 's/Type=notify/Type=forking/' \
- -e '/Type=forking/a PIDFile=${localstatedir}/run/libvirtd.pid' \
- ${D}/${systemd_unitdir}/system/libvirtd.service
- fi
-
- # The /var/run/libvirt directories created by the Makefile
- # are wiped out in volatile, we need to create these at boot.
- rm -rf ${D}${localstatedir}/run
- install -d ${D}${sysconfdir}/default/volatiles
- echo "d root root 0755 ${localstatedir}/run/libvirt none" \
- > ${D}${sysconfdir}/default/volatiles/99_libvirt
- echo "d root root 0755 ${localstatedir}/run/libvirt/lockd none" \
- >> ${D}${sysconfdir}/default/volatiles/99_libvirt
- echo "d root root 0755 ${localstatedir}/run/libvirt/lxc none" \
- >> ${D}${sysconfdir}/default/volatiles/99_libvirt
- echo "d root root 0755 ${localstatedir}/run/libvirt/network none" \
- >> ${D}${sysconfdir}/default/volatiles/99_libvirt
- echo "d root root 0755 ${localstatedir}/run/libvirt/qemu none" \
- >> ${D}${sysconfdir}/default/volatiles/99_libvirt
-
- # Manually set permissions and ownership to match polkit recipe
- if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
- install -d -m 0700 ${D}/${datadir}/polkit-1/rules.d
- chown polkitd ${D}/${datadir}/polkit-1/rules.d
- chgrp root ${D}/${datadir}/polkit-1/rules.d
- else
- rm -rf ${D}/${datadir}/polkit-1
- fi
-
- # disable seccomp_sandbox
- if [ -e ${D}${sysconfdir}/libvirt/qemu.conf ] ; then
- sed -i '/^#seccomp_sandbox = 1/aseccomp_sandbox = 0' \
- ${D}${sysconfdir}/libvirt/qemu.conf
- fi
-
- # Add hook support for libvirt
- mkdir -p ${D}/etc/libvirt/hooks
- for hook in "daemon" "lxc" "network" "qemu"
- do
- install -m 0755 ${WORKDIR}/hook_support.py ${D}/etc/libvirt/hooks/${hook}
- done
-
- # Force the main dnsmasq instance to bind only to specified interfaces and
- # to not bind to virbr0. Libvirt will run its own instance on this interface.
- install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/libvirt-daemon
-
- # remove .la references to our working diretory
- for i in `find ${D}${libdir} -type f -name *.la`; do
- sed -i -e 's#-L${B}/src/.libs##g' $i
- done
-
- sed -i -e 's/^\(unix_sock_group\ =\ \).*/\1"kvm"/' ${D}/etc/libvirt/libvirtd.conf
- sed -i -e 's/^\(unix_sock_rw_perms\ =\ \).*/\1"0776"/' ${D}/etc/libvirt/libvirtd.conf
-
- case ${MACHINE_ARCH} in
- *mips*)
- break
- ;;
- *)
- chown -R qemu:qemu ${D}/${localstatedir}/lib/libvirt/qemu
- echo "d qemu qemu 0755 ${localstatedir}/cache/libvirt/qemu none" \
- >> ${D}${sysconfdir}/default/volatiles/99_libvirt
- break
- ;;
- esac
-
- if ${@bb.utils.contains('PACKAGECONFIG','gnutls','true','false',d)}; then
- # Generate sample keys and certificates.
- cd ${WORKDIR}
- ${WORKDIR}/gnutls-helper.py -y
-
- # Deploy all sample keys and certificates of CA, server and client
- # to target so that libvirtd is able to boot successfully and local
- # 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 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
- install -m 0644 ${WORKDIR}/servercert.pem ${D}/${sysconfdir}/pki/libvirt/servercert.pem
- install -m 0644 ${WORKDIR}/clientkey.pem ${D}/${sysconfdir}/pki/libvirt/private/clientkey.pem
- install -m 0644 ${WORKDIR}/clientcert.pem ${D}/${sysconfdir}/pki/libvirt/clientcert.pem
-
- # Force the connection to be tls.
- sed -i -e 's/^\(listen_tls\ =\ .*\)/#\1/' -e 's/^\(listen_tcp\ =\ .*\)/#\1/' ${D}/etc/libvirt/libvirtd.conf
- fi
-}
-
-EXTRA_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- "
-
-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
- fi
- mkdir -m 711 -p $D/data/images
-}
-
-python () {
- if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
- d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
diff --git a/recipes-extended/libvmi/files/0001-Build-vbd-only-when-xen-is-enabled.patch b/recipes-extended/libvmi/files/0001-Build-vbd-only-when-xen-is-enabled.patch
new file mode 100644
index 00000000..bf6e9f0e
--- /dev/null
+++ b/recipes-extended/libvmi/files/0001-Build-vbd-only-when-xen-is-enabled.patch
@@ -0,0 +1,76 @@
+From fb7a1493c7d4a30ae930d8cb7dcb84c83c0cacce Mon Sep 17 00:00:00 2001
+From: He Zhe <zhe.he@windriver.com>
+Date: Wed, 13 Apr 2022 09:26:01 +0000
+Subject: [PATCH] Build vbd only when xen is enabled
+
+vbd was added for xen based VMs since
+bdee00fac9b4 ("Disk reading interface for Xen based VMs and example")
+and should be built only when xen is enabled, otherwise there would not be
+necessary xen headers and cause the following failure.
+
+xen_private.h:38:10: fatal error: xenctrl.h: No such file or directory
+
+Upstream-Status: Pending
+
+Signed-off-by: He Zhe <zhe.he@windriver.com>
+---
+ Makefile.am | 8 ++++----
+ libvmi/CMakeLists.txt | 2 +-
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 097c23c..c560a1d 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -17,8 +17,7 @@ h_private = \
+ libvmi/os/os_interface.h \
+ libvmi/driver/driver_interface.h \
+ libvmi/driver/driver_wrapper.h \
+- libvmi/driver/memory_cache.h \
+- libvmi/disk/vbd_private.h
++ libvmi/driver/memory_cache.h
+
+ c_sources = \
+ libvmi/accessors.c \
+@@ -39,8 +38,7 @@ c_sources = \
+ libvmi/arch/ept.c \
+ libvmi/driver/driver_interface.c \
+ libvmi/driver/memory_cache.c \
+- libvmi/os/os_interface.c \
+- libvmi/disk/vbd.c
++ libvmi/os/os_interface.c
+
+ if ENABLE_ADDRESS_CACHE
+ c_sources += libvmi/cache.c
+@@ -104,6 +102,8 @@ if WITH_XEN
+ libvmi/driver/xen/libxc_wrapper.h \
+ libvmi/driver/xen/libxs_wrapper.c \
+ libvmi/driver/xen/libxs_wrapper.h
++ h_private += libvmi/disk/vbd_private.h
++ c_sources += libvmi/disk/vbd.c
+ endif
+
+ if WITH_BAREFLANK
+diff --git a/libvmi/CMakeLists.txt b/libvmi/CMakeLists.txt
+index ac57d79..7e87751 100644
+--- a/libvmi/CMakeLists.txt
++++ b/libvmi/CMakeLists.txt
+@@ -18,7 +18,6 @@ set(libvmi_src
+ driver/driver_interface.c
+ driver/memory_cache.c
+ os/os_interface.c
+- disk/vbd.c
+ )
+
+ add_library(vmi OBJECT ${libvmi_src})
+@@ -169,6 +168,7 @@ add_subdirectory(os)
+
+
+ if (ENABLE_XEN)
++ list(APPEND libvmi_src disk/vbd.c)
+ find_package(Xen REQUIRED)
+ list(APPEND VMI_PUBLIC_HEADERS events.h)
+ # CMAKE_DL_LIBS -> dlopen* lib
+--
+2.32.0
+
diff --git a/recipes-extended/libvmi/libvmi_git.bb b/recipes-extended/libvmi/libvmi_git.bb
index 88fa5d30..c812cf17 100644
--- a/recipes-extended/libvmi/libvmi_git.bb
+++ b/recipes-extended/libvmi/libvmi_git.bb
@@ -1,17 +1,18 @@
DESCRIPTION = "An introspection library, written in C, focused on reading \
and writing memory from virtual machines (VM's)."
HOMEPAGE = "https://github.com/libvmi/libvmi"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=e6a600fd5e1d9cbde2d983680233ad02"
SECTION = "console/tools"
-PV = "0.12.0"
+PV = "0.14.0+git"
-DEPENDS = "libvirt libcheck bison fuse byacc-native"
+DEPENDS = "libvirt libcheck bison fuse bison-native flex-native autoconf-archive-native"
-SRC_URI = "git://github.com/libvmi/libvmi.git \
+SRC_URI = "git://github.com/libvmi/libvmi.git;branch=master;protocol=https \
+ file://0001-Build-vbd-only-when-xen-is-enabled.patch \
"
-SRCREV = "6934e8a4758018983ec53ec791dd14a7d6ac31a9"
+SRCREV = "df8547ff075d4352db2eb802775b7fa7a92756db"
S = "${WORKDIR}/git"
@@ -21,18 +22,19 @@ inherit autotools-brokensep pkgconfig
# bitbake should be able to properly populate the -dev package and the main
# packages. Since libvmi uses the form libXX.1.0.0.so it breaks this automatic
# packaging so we need to be more explicit about what goes where.
-FILES_${PN} += "${libdir}/libvmi-0.9.so"
-FILES_${PN}-dev = "${includedir} ${libdir}/${BPN}.so ${libdir}/*.la \
+FILES:${PN} += "${libdir}/libvmi-0.9.so"
+FILES:${PN}-dev = "${includedir} ${libdir}/${BPN}.so ${libdir}/*.la \
${libdir}/*.o ${libdir}/pkgconfig ${datadir}/pkgconfig \
${datadir}/aclocal ${base_libdir}/*.o \
${libdir}/${BPN}/*.la ${base_libdir}/*.la"
PACKAGECONFIG ??= "json-c"
PACKAGECONFIG[xen] = "--enable-xen,--disable-xen,xen,"
+PACKAGECONFIG[kvm] = "--disable-kvm-legacy,--enable-kvm-legacy,kvm,"
PACKAGECONFIG[json-c] = ",,json-c,"
# We include a sample conf file to which we have added
-do_install_append () {
+do_install:append () {
mkdir ${D}${sysconfdir}
cp etc/*.conf ${D}${sysconfdir}
}
diff --git a/recipes-extended/nagios/nagios-common.inc b/recipes-extended/nagios/nagios-common.inc
index c173041c..bfbe188b 100644
--- a/recipes-extended/nagios/nagios-common.inc
+++ b/recipes-extended/nagios/nagios-common.inc
@@ -11,16 +11,16 @@ EXTRA_OECONF += "--sysconfdir=${NAGIOS_CONF_DIR} \
--localstatedir=${NAGIOS_STATE_DIR} \
"
-FILES_${PN}-dbg += "${NAGIOS_PLUGIN_DIR}/.debug"
+FILES:${PN}-dbg += "${NAGIOS_PLUGIN_DIR}/.debug"
DEPENDS = "nagios-core"
-COMPATIBLE_HOST_aarch64 = "null"
+COMPATIBLE_HOST:aarch64 = "null"
inherit useradd
USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r ${NAGIOS_GROUP}; -r nagcmd"
-USERADD_PARAM_${PN} = "-r -M -g ${NAGIOS_GROUP} ${NAGIOS_USER}"
+GROUPADD_PARAM:${PN} = "-r ${NAGIOS_GROUP}; -r nagcmd"
+USERADD_PARAM:${PN} = "-r -M -g ${NAGIOS_GROUP} ${NAGIOS_USER}"
-FILESYSTEM_PERMS_TABLES_append = " files/fs-perms-nagios.txt"
+FILESYSTEM_PERMS_TABLES:append = " files/fs-perms-nagios.txt"
diff --git a/recipes-extended/nagios/nagios-core/eventhandlers_nagioscmd_path.patch b/recipes-extended/nagios/nagios-core/eventhandlers_nagioscmd_path.patch
index c767162c..5c1f3303 100644
--- a/recipes-extended/nagios/nagios-core/eventhandlers_nagioscmd_path.patch
+++ b/recipes-extended/nagios/nagios-core/eventhandlers_nagioscmd_path.patch
@@ -3,6 +3,8 @@ change eventhandlers nagioscmd path
Modify nagios.cmd path to the right location
at "/var/nagios/rw/nagios.cmd"
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Rickard Engberg <rickard.engberg@windriver.com>
Signed-off-by: Vu Tran <vu.tran@windriver.com>
diff --git a/recipes-extended/nagios/nagios-core/nagios-core.service b/recipes-extended/nagios/nagios-core/nagios-core.service
index 61fda3f7..0fdbfc9c 100644
--- a/recipes-extended/nagios/nagios-core/nagios-core.service
+++ b/recipes-extended/nagios/nagios-core/nagios-core.service
@@ -6,7 +6,7 @@ After=network.target local-fs.target
Type=forking
User=nagios
Group=nagios
-PIDFile=/var/run/nagios/nagios.pid
+PIDFile=/run/nagios/nagios.pid
# Verify Nagios config before start as upstream suggested
ExecStartPre=/usr/bin/nagios -v /etc/nagios/nagios.cfg
ExecStart=/usr/bin/nagios -d /etc/nagios/nagios.cfg
diff --git a/recipes-extended/nagios/nagios-core_4.4.3.bb b/recipes-extended/nagios/nagios-core_4.4.6.bb
index 7a86653b..59b70895 100644
--- a/recipes-extended/nagios/nagios-core_4.4.3.bb
+++ b/recipes-extended/nagios/nagios-core_4.4.6.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "A host/service/network monitoring and management system core file
HOMEPAGE = "http://www.nagios.org"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://LICENSE;md5=4c4203caac58013115c9ca4b85f296ae"
@@ -20,8 +20,8 @@ SRC_URI = "http://prdownloads.sourceforge.net/sourceforge/${SRCNAME}/${SRCNAME}-
file://nagios-core-systemd-volatile.conf \
"
-SRC_URI[md5sum] = "8beb253b1236ee1407f698b5d2a2d894"
-SRC_URI[sha256sum] = "bba8f0e8dc8cf72f7a7ae4e8ce9c60f5bd315629421b9ec34818a28b8da49f67"
+SRC_URI[md5sum] = "ba849e9487e13859381eb117127bfee2"
+SRC_URI[sha256sum] = "ab0d5a52caf01e6f4dcd84252c4eb5df5a24f90bb7f951f03875eef54f5ab0f4"
S = "${WORKDIR}/${SRCNAME}-${PV}"
@@ -29,15 +29,17 @@ inherit autotools-brokensep update-rc.d systemd update-alternatives
DEPENDS = "gd unzip-native"
-RDEPENDS_${PN} += "\
+RDEPENDS:${PN} += "\
gd \
libpng \
fontconfig \
apache2 \
- php \
+ php-cli \
nagios-base \
"
+SKIP_RECIPE[nagios-core] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'webserver', '', 'Depends on apache2 from meta-webserver which is not included', d)}"
+
acpaths = "-I ${S}/autoconf-macros"
# Set default password for the hardcoded Nagios admin user "nagiosadmin".
@@ -62,10 +64,13 @@ EXTRA_OECONF += "ac_cv_header_ltdl_h=no"
# Prevent nagios from suffering host contamination if host has /bin/perl
EXTRA_OECONF += "ac_cv_path_PERL=${bindir}/perl"
+# Fix build failure for gcc-10
+CFLAGS:append = " -fcommon"
+
# Set to "1" to allow nagios-core post-init to modify Apache configuration
NAGIOS_MODIFY_APACHE ??= "1"
-do_configure_prepend() {
+do_configure:prepend() {
# rename these macros to have .m4 suffix so that autoreconf could recognize them
for macro in `ls ${S}/autoconf-macros/ax_nagios_get_*`; do
mv $macro $macro.m4
@@ -77,7 +82,7 @@ do_compile() {
}
do_install() {
- oe_runmake 'DESTDIR=${D}' install
+ oe_runmake 'DESTDIR=${D}' install-unstripped
oe_runmake 'DESTDIR=${D}' install-init
oe_runmake 'DESTDIR=${D}' install-config
oe_runmake 'DESTDIR=${D}' install-commandmode
@@ -112,7 +117,7 @@ do_install() {
fi
}
-pkg_postinst_ontarget_${PN}-setup () {
+pkg_postinst_ontarget:${PN}-setup () {
# Set password for nagiosadmin user
if [ -z "${NAGIOS_DEFAULT_ADMINUSER_PASSWORD}" ]; then
htpasswd -c ${NAGIOS_CONF_DIR}/htpasswd.users nagiosadmin
@@ -129,23 +134,23 @@ pkg_postinst_ontarget_${PN}-setup () {
PACKAGES += "${SRCNAME}-base ${PN}-setup"
-FILES_${PN} += "${datadir} \
+FILES:${PN} += "${datadir} \
${NAGIOS_PLUGIN_DIR} \
${NAGIOS_CGIBIN_DIR} \
"
-FILES_${PN}-dbg += "${NAGIOS_CGIBIN_DIR}/.debug"
+FILES:${PN}-dbg += "${NAGIOS_CGIBIN_DIR}/.debug"
-ALLOW_EMPTY_${SRCNAME}-base = "1"
-ALLOW_EMPTY_${PN}-setup = "1"
+ALLOW_EMPTY:${SRCNAME}-base = "1"
+ALLOW_EMPTY:${PN}-setup = "1"
SYSTEMD_PACKAGES = "${PN}"
-SYSTEMD_SERVICE_${PN} = "nagios-core.service"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
+SYSTEMD_SERVICE:${PN} = "nagios-core.service"
+SYSTEMD_AUTO_ENABLE:${PN} = "enable"
USERADD_PACKAGES += "${SRCNAME}-base"
-GROUPADD_PARAM_${SRCNAME}-base = "-r ${NAGIOS_GROUP}"
-USERADD_PARAM_${SRCNAME}-base = "-r -M -g ${NAGIOS_GROUP} ${NAGIOS_USER}"
+GROUPADD_PARAM:${SRCNAME}-base = "-r ${NAGIOS_GROUP}"
+USERADD_PARAM:${SRCNAME}-base = "-r -M -g ${NAGIOS_GROUP} ${NAGIOS_USER}"
INITSCRIPT_NAME = "nagios"
INITSCRIPT_PARAMS = "defaults"
@@ -153,5 +158,5 @@ INITSCRIPT_PARAMS = "defaults"
CVE_PRODUCT = "nagios_core"
ALTERNATIVE_PRIORITY_${PN} = '20'
-ALTERNATIVE_${PN} = "nagios"
+ALTERNATIVE:${PN} = "nagios"
ALTERNATIVE_LINK_NAME[nagios] = "${localstatedir}/nagios"
diff --git a/recipes-extended/nagios/nagios-nrpe/0001-Should-fix-235-nasty_metachars-was-not-being-returne.patch b/recipes-extended/nagios/nagios-nrpe/0001-Should-fix-235-nasty_metachars-was-not-being-returne.patch
new file mode 100644
index 00000000..fb34c5c7
--- /dev/null
+++ b/recipes-extended/nagios/nagios-nrpe/0001-Should-fix-235-nasty_metachars-was-not-being-returne.patch
@@ -0,0 +1,30 @@
+From 4f7dd1199f1f3f72f9197e8565da339a4a2490b7 Mon Sep 17 00:00:00 2001
+From: madlohe <swolf@nagios.com>
+Date: Thu, 23 Apr 2020 15:33:18 -0500
+Subject: [PATCH] Should fix #235 (nasty_metachars was not being returned when
+ specified in cfg file
+
+CVE: CVE-2020-6581
+Upstream-Status: Backport [4f7dd1199f1f3f72f9197e8565da339a4a2490b7]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/nrpe.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/nrpe.c b/src/nrpe.c
+index 01fbd1d..bf64963 100644
+--- a/src/nrpe.c
++++ b/src/nrpe.c
+@@ -823,6 +823,8 @@ char* process_metachars(const char* input)
+ }
+ }
+ copy[j] = '\0';
++
++ return copy;
+ }
+
+ /* read in the configuration file */
+--
+2.20.1
+
diff --git a/recipes-extended/nagios/nagios-nrpe/fix-compile-without-openssl.patch b/recipes-extended/nagios/nagios-nrpe/fix-compile-without-openssl.patch
index ab913a8f..1e57d02a 100644
--- a/recipes-extended/nagios/nagios-nrpe/fix-compile-without-openssl.patch
+++ b/recipes-extended/nagios/nagios-nrpe/fix-compile-without-openssl.patch
@@ -6,6 +6,8 @@ this error:
error: unknown type name 'SSL'
void complete_SSL_shutdown( SSL *);
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Rickard Engberg <rickard.engberg@windriver.com>
Signed-off-by: Vu Tran <vu.tran@windriver.com>
diff --git a/recipes-extended/nagios/nagios-nrpe/fix-configure-uses-host-openssl.patch b/recipes-extended/nagios/nagios-nrpe/fix-configure-uses-host-openssl.patch
index 920aabfc..9342826b 100644
--- a/recipes-extended/nagios/nagios-nrpe/fix-configure-uses-host-openssl.patch
+++ b/recipes-extended/nagios/nagios-nrpe/fix-configure-uses-host-openssl.patch
@@ -6,6 +6,8 @@ openssl dhparam -C 512
just do not use openssl from host.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Rickard Engberg <rickard.engberg@windriver.com>
Signed-off-by: Vu Tran <vu.tran@windriver.com>
diff --git a/recipes-extended/nagios/nagios-nrpe_3.2.1.bb b/recipes-extended/nagios/nagios-nrpe_4.0.2.bb
index 04917f73..ac54469b 100644
--- a/recipes-extended/nagios/nagios-nrpe_3.2.1.bb
+++ b/recipes-extended/nagios/nagios-nrpe_4.0.2.bb
@@ -1,10 +1,10 @@
require nagios-common.inc
DESCRIPTION = "Nagios Remote Plugin Executor"
-HOMEPAGE = "http://exchange.nagios.org"
+HOMEPAGE = "http://www.nagios.com"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://src/nrpe.c;beginline=1;endline=35;md5=0dadd78599abbc737af81432702e9161"
@@ -13,15 +13,21 @@ SRCNAME = "nrpe"
SRC_URI = "https://github.com/NagiosEnterprises/nrpe/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.gz \
file://check_nrpe.cfg \
file://nagios-nrpe.service \
+ file://0001-Should-fix-235-nasty_metachars-was-not-being-returne.patch \
"
-SRC_URI[md5sum] = "8997e195fea93cdceb8c7ed8ac1d43bc"
-SRC_URI[sha256sum] = "8ad2d1846ab9011fdd2942b8fc0c99dfad9a97e57f4a3e6e394a4ead99c0f1f0"
+SRC_URI[md5sum] = "37b9e23b3e8d75308f8b31f3b61ee8a4"
+SRC_URI[sha256sum] = "c5d9d7023eaa49e6fe8cf95c6d101731f07972cf0f8818fa130c171bc9eabd55"
+SRC_URI[sha1sum] = "2150e274fc7f24905c63b8a996ed7218e2967478"
+SRC_URI[sha384sum] = "0ece79fb312c8d1ee0e6bde1be499f8090a5a86cf90b0b8dcbebb95c5f8f70b2cf9ac0a4064f726bee091c4147b61d82"
+SRC_URI[sha512sum] = "4d7cf6abc974bc79df54afc42644418e3f086a279c8c17d0fd104f19e3c21c0f3dae4fb4268dd134446ff9fe505159b0446372c5cac71cfe03a97479ed41c09b"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit autotools-brokensep update-rc.d systemd update-alternatives
+SKIP_RECIPE[nagios-nrpe] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'webserver', '', 'Depends on nagios-core which depends on apache2 from meta-webserver which is not included', d)}"
+
# IP address of server which proxy should connect to
MONITORING_PROXY_SERVER_IP ??= "192.168.7.2"
@@ -39,7 +45,7 @@ EXTRA_OECONF_SSL = "--with-ssl=${STAGING_DIR_HOST} \
--with-ssl-lib=${STAGING_DIR_HOST}${libdir} \
"
-PACKAGECONFIG[ssl] = "${EXTRA_OECONF_SSL},--disable-ssl,openssl,"
+PACKAGECONFIG[ssl] = "${EXTRA_OECONF_SSL},--disable-ssl,openssl-native openssl,"
PACKAGECONFIG[cmdargs] = "--enable-command-args,--disable-command-args,,"
PACKAGECONFIG[bashcomp] = "--enable-bash-command-substitution,--disable-bash-command-substitution,,"
@@ -53,7 +59,7 @@ do_compile() {
oe_runmake all
}
-do_install_append() {
+do_install:append() {
oe_runmake 'DESTDIR=${D}' install-daemon
oe_runmake 'DESTDIR=${D}' install-config
@@ -77,26 +83,26 @@ do_install_append() {
PACKAGES = "${PN}-dbg ${PN}-plugin ${PN}-daemon"
-FILES_${PN}-plugin = "${NAGIOS_PLUGIN_DIR} \
+FILES:${PN}-plugin = "${NAGIOS_PLUGIN_DIR} \
${NAGIOS_PLUGIN_CONF_DIR} \
"
-FILES_${PN}-daemon = "${sysconfdir} \
+FILES:${PN}-daemon = "${sysconfdir} \
${bindir} \
${nonarch_libdir}/tmpfiles.d/ \
${localstatedir} \
"
-RDEPENDS_${PN}-daemon = "nagios-base"
-RDEPENDS_${PN}-plugin = "nagios-base"
+RDEPENDS:${PN}-daemon = "nagios-base"
+RDEPENDS:${PN}-plugin = "nagios-base"
SYSTEMD_PACKAGES = "${PN}-daemon"
-SYSTEMD_SERVICE_${PN}-daemon = "nagios-nrpe.service"
-SYSTEMD_AUTO_ENABLE_${PN}-daemon = "enable"
+SYSTEMD_SERVICE:${PN}-daemon = "nagios-nrpe.service"
+SYSTEMD_AUTO_ENABLE:${PN}-daemon = "enable"
INITSCRIPT_PACKAGES = "${PN}-daemon"
-INITSCRIPT_NAME_${PN}-daemon = "nrpe"
-INITSCRIPT_PARAMS_${PN}-daemon = "defaults"
+INITSCRIPT_NAME:${PN}-daemon = "nrpe"
+INITSCRIPT_PARAMS:${PN}-daemon = "defaults"
-ALTERNATIVE_${PN}-daemon = "nagios"
+ALTERNATIVE:${PN}-daemon = "nagios"
ALTERNATIVE_LINK_NAME[nagios] = "${localstatedir}/nagios"
diff --git a/recipes-extended/nagios/nagios-nsca/nagios-nsca.service b/recipes-extended/nagios/nagios-nsca/nagios-nsca.service
index aa38b7f2..f6eb33ef 100644
--- a/recipes-extended/nagios/nagios-nsca/nagios-nsca.service
+++ b/recipes-extended/nagios/nagios-nsca/nagios-nsca.service
@@ -5,7 +5,7 @@ After=syslog.target network.target
[Service]
Type=forking
ExecStart=/usr/bin/nsca -s -c /etc/nagios/nsca.cfg
-PIDFile=/var/run/nsca.pid
+PIDFile=/run/nsca.pid
TimeoutSec=60
[Install]
diff --git a/recipes-extended/nagios/nagios-nsca_2.9.2.bb b/recipes-extended/nagios/nagios-nsca_2.9.2.bb
index d342810c..2db51238 100644
--- a/recipes-extended/nagios/nagios-nsca_2.9.2.bb
+++ b/recipes-extended/nagios/nagios-nsca_2.9.2.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Nagios Service Check Acceptor"
HOMEPAGE = "http://exchange.nagios.org"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://src/nsca.c;beginline=1;endline=16;md5=dd7a195cc7d8a3ebcfabd65360d0cab4"
@@ -22,6 +22,8 @@ S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit update-rc.d autotools-brokensep systemd dos2unix
+SKIP_RECIPE[nagios-nsca] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'webserver', '', 'Rdepends on nagios-base provided by nagios-core which depends on apache2 from meta-webserver which is not included', d)}"
+
DEPENDS = "libmcrypt"
EXTRA_OECONF += "--with-nsca-user=${NAGIOS_USER} \
@@ -59,26 +61,26 @@ do_install() {
PACKAGES = "${PN}-dbg ${PN}-daemon ${PN}-client"
-FILES_${PN}-daemon = "${sysconfdir}/init.d \
+FILES:${PN}-daemon = "${sysconfdir}/init.d \
${NAGIOS_CONF_DIR}/nsca.cfg \
${bindir}/nsca \
"
-FILES_${PN}-client = "${NAGIOS_CONF_DIR}/send_nsca.cfg \
+FILES:${PN}-client = "${NAGIOS_CONF_DIR}/send_nsca.cfg \
${bindir}/send_nsca \
"
-RDEPENDS_${PN}-daemon += "libmcrypt \
+RDEPENDS:${PN}-daemon += "libmcrypt \
nagios-base \
"
-RDEPENDS_${PN}-client += "libmcrypt \
+RDEPENDS:${PN}-client += "libmcrypt \
nagios-base \
"
SYSTEMD_PACKAGES = "${PN}-daemon"
-SYSTEMD_SERVICE_${PN}-daemon = "nagios-nsca.service"
-SYSTEMD_AUTO_ENABLE_${PN}-daemon = "enable"
+SYSTEMD_SERVICE:${PN}-daemon = "nagios-nsca.service"
+SYSTEMD_AUTO_ENABLE:${PN}-daemon = "enable"
INITSCRIPT_PACKAGES = "${PN}-daemon"
-INITSCRIPT_NAME_${PN}-daemon = "nsca"
-INITSCRIPT_PARAMS_${PN}-daemon = "defaults"
+INITSCRIPT_NAME:${PN}-daemon = "nsca"
+INITSCRIPT_PARAMS:${PN}-daemon = "defaults"
diff --git a/recipes-extended/nagios/nagios-plugins_2.2.1.bb b/recipes-extended/nagios/nagios-plugins_2.2.1.bb
index 07933654..471d4b42 100644
--- a/recipes-extended/nagios/nagios-plugins_2.2.1.bb
+++ b/recipes-extended/nagios/nagios-plugins_2.2.1.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "A host/service/network monitoring and management system plugins"
HOMEPAGE = "http://www.nagios-plugins.org"
SECTION = "console/network"
PRIORITY = "optional"
-LICENSE = "GPLv3"
+LICENSE = "GPL-3.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504"
@@ -18,6 +18,8 @@ S = "${WORKDIR}/${BPN}-${PV}"
inherit autotools gettext
+SKIP_RECIPE[nagios-plugins] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'webserver', '', 'Depends on nagios-core which depends on apache2 from meta-webserver which is not included', d)}"
+
EXTRA_OECONF += "--with-sysroot=${STAGING_DIR_HOST} \
--with-nagios-user=${NAGIOS_USER} \
--with-nagios-group=${NAGIOS_GROUP} \
@@ -57,17 +59,17 @@ do_configure() {
oe_runconf || die "make failed"
}
-do_install_append() {
+do_install:append() {
sed -i '1s,#! /usr/bin/perl -w.*,#! ${bindir}/env perl,' ${D}${libdir}/nagios/plugins/*
}
-RDEPENDS_${PN} += "\
+RDEPENDS:${PN} += "\
iputils \
nagios-base \
perl \
bash \
"
-FILES_${PN} += "${datadir} \
+FILES:${PN} += "${datadir} \
${NAGIOS_PLUGIN_DIR} \
"
diff --git a/recipes-extended/oath/oath/0001-oath-fix-macro-definition-error.patch b/recipes-extended/oath/oath/0001-oath-fix-macro-definition-error.patch
index 37f9d753..0d606ade 100644
--- a/recipes-extended/oath/oath/0001-oath-fix-macro-definition-error.patch
+++ b/recipes-extended/oath/oath/0001-oath-fix-macro-definition-error.patch
@@ -3,6 +3,8 @@ From: Dengke Du <dengke.du@windriver.com>
Date: Thu, 27 Sep 2018 09:37:08 +0800
Subject: [PATCH] oath: fix macro definition error
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Dengke Du <dengke.du@windriver.com>
---
oathtool/gl/intprops.h | 6 +++---
diff --git a/recipes-extended/oath/oath_2.6.2.bb b/recipes-extended/oath/oath_2.6.2.bb
index f4230449..84d42dff 100644
--- a/recipes-extended/oath/oath_2.6.2.bb
+++ b/recipes-extended/oath/oath_2.6.2.bb
@@ -1,4 +1,4 @@
-LICENSE = "GPLv3 & LGPLv2.1"
+LICENSE = "GPL-3.0-only & LGPL-2.1-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=62e1e33aebac5b1bc9fc48a866e2f61b \
file://oathtool/COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://liboath/COPYING;md5=4fbd65380cdd255951079008b364516c \
@@ -12,7 +12,7 @@ S = "${WORKDIR}/${BPN}-toolkit-${PV}"
SRC_URI[md5sum] = "4a05cd4768764843bd5493609a6bdb17"
SRC_URI[sha256sum] = "b03446fa4b549af5ebe4d35d7aba51163442d255660558cd861ebce536824aa0"
-inherit autotools
+inherit autotools pkgconfig
# Specify any options you want to pass to the configure script using EXTRA_OECONF:
EXTRA_OECONF = ""
diff --git a/recipes-extended/seabios/seabios/hostcc.patch b/recipes-extended/seabios/seabios/hostcc.patch
index f665e1a3..dcc0c0bb 100644
--- a/recipes-extended/seabios/seabios/hostcc.patch
+++ b/recipes-extended/seabios/seabios/hostcc.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Inappropriate [embedded specific]
+
diff -ur a/Makefile b/Makefile
--- a/Makefile 2015-02-02 22:02:58.651041951 -0500
+++ b/Makefile 2015-02-02 23:08:13.884514003 -0500
diff --git a/recipes-extended/seabios/seabios/python3.patch b/recipes-extended/seabios/seabios/python3.patch
new file mode 100644
index 00000000..f401d7b9
--- /dev/null
+++ b/recipes-extended/seabios/seabios/python3.patch
@@ -0,0 +1,15 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+diff --git a/Makefile b/Makefile
+index 516cb38..7f6acaa 100644
+--- a/Makefile
++++ b/Makefile
+@@ -22,7 +22,7 @@ LD=$(CROSS_PREFIX)ld
+ OBJCOPY=$(CROSS_PREFIX)objcopy
+ OBJDUMP=$(CROSS_PREFIX)objdump
+ STRIP=$(CROSS_PREFIX)strip
+-PYTHON=python
++PYTHON=python3
+ CPP=$(CROSS_PREFIX)cpp
+ IASL:=iasl
+ LD32BIT_FLAG:=-melf_i386
diff --git a/recipes-extended/seabios/seabios_1.11.2.bb b/recipes-extended/seabios/seabios_1.16.0.bb
index 81eaec96..ebab54bf 100644
--- a/recipes-extended/seabios/seabios_1.11.2.bb
+++ b/recipes-extended/seabios/seabios_1.16.0.bb
@@ -1,29 +1,33 @@
DESCRIPTION = "SeaBIOS"
HOMEPAGE = "http://www.coreboot.org/SeaBIOS"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
SECTION = "firmware"
+inherit python3native
+
SRC_URI = " \
- https://github.com/qemu/seabios/archive/rel-${PV}.tar.gz \
+ https://www.seabios.org/downloads/seabios-${PV}.tar.gz \
file://hostcc.patch \
+ file://python3.patch \
"
-S = "${WORKDIR}/${PN}-rel-${PV}"
+S = "${WORKDIR}/${PN}-${PV}"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6 \
"
+SRC_URI[sha256sum] = "d44d8e97ad56f3fd23ed3076077a770d37a5e7bae22daa59656ff41c3334fb34"
-SRC_URI[md5sum] = "3f78065837dbd8873513a1b7d5276e78"
-SRC_URI[sha256sum] = "73e73c8e406d97265782f6c942b3c1d178ed4f4afc9f381b22336c3968291693"
-
-FILES_${PN} = "/usr/share/firmware"
+FILES:${PN} = "/usr/share/firmware"
-DEPENDS = "util-linux-native file-native bison-native flex-native gettext-native acpica-native python-native"
+DEPENDS += "util-linux-native file-native bison-native flex-native gettext-native acpica-native"
TUNE_CCARGS = ""
EXTRA_OEMAKE += "HOSTCC='${BUILD_CC}'"
EXTRA_OEMAKE += "CROSS_PREFIX=${TARGET_PREFIX}"
+# Can not yet compile with clang e.g.
+TOOLCHAIN = "gcc"
+
COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
do_configure() {
diff --git a/recipes-extended/upx/libucl/0001-configure.ac-Fix-with-current-autoconf.patch b/recipes-extended/upx/libucl/0001-configure.ac-Fix-with-current-autoconf.patch
new file mode 100644
index 00000000..ba84cdd6
--- /dev/null
+++ b/recipes-extended/upx/libucl/0001-configure.ac-Fix-with-current-autoconf.patch
@@ -0,0 +1,30 @@
+From 76e95c0db3f30f0279c54f7c0041c59fa24bf7a6 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@resin.io>
+Date: Fri, 6 May 2016 01:00:14 +0200
+Subject: [PATCH 1/2] configure.ac: Fix with current autoconf
+
+Old versions of autoconf define _AC_SRCPATHS, new (2.60 and later) use _AC_SRCDIRS.
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrei Gherzan <andrei@resin.io>
+---
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 16adb1d..0bd1c91 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -48,7 +48,7 @@ AC_CANONICAL_TARGET
+ AM_MAINTAINER_MODE
+
+ if test -z "$ac_abs_top_srcdir"; then
+- _AC_SRCPATHS(.)
++ _AC_SRCDIRS(.)
+ fi
+ if test -r .Conf.settings1; then
+ . ./.Conf.settings1
+--
+2.1.4
+
diff --git a/recipes-extended/upx/libucl/0002-acinclude.m4-Provide-missing-macros.patch b/recipes-extended/upx/libucl/0002-acinclude.m4-Provide-missing-macros.patch
new file mode 100644
index 00000000..16cad534
--- /dev/null
+++ b/recipes-extended/upx/libucl/0002-acinclude.m4-Provide-missing-macros.patch
@@ -0,0 +1,383 @@
+From cab9f6b11793149a3f968552be7d351e59e62a92 Mon Sep 17 00:00:00 2001
+From: Andrei Gherzan <andrei@resin.io>
+Date: Fri, 6 May 2016 01:01:26 +0200
+Subject: [PATCH 2/2] acinclude.m4: Provide missing macros
+
+Upstream-Status: Pending
+
+Signed-off-by: Andrei Gherzan <andrei@resin.io>
+---
+ acinclude.m4 | 361 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 361 insertions(+)
+ create mode 100644 acinclude.m4
+
+diff --git a/acinclude.m4 b/acinclude.m4
+new file mode 100644
+index 0000000..f7d6d16
+--- /dev/null
++++ b/acinclude.m4
+@@ -0,0 +1,361 @@
++# /***********************************************************************
++# // standard ACC macros
++# ************************************************************************/
++
++AC_DEFUN([mfx_ACC_CHECK_ENDIAN], [
++AC_C_BIGENDIAN([AC_DEFINE(ACC_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(ACC_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
++])#
++
++AC_DEFUN([mfx_ACC_CHECK_HEADERS], [
++AC_HEADER_TIME
++AC_CHECK_HEADERS([assert.h ctype.h dirent.h errno.h fcntl.h float.h limits.h malloc.h memory.h setjmp.h signal.h stdarg.h stddef.h stdint.h stdio.h stdlib.h string.h strings.h time.h unistd.h utime.h sys/mman.h sys/resource.h sys/stat.h sys/time.h sys/types.h sys/wait.h])
++])#
++
++AC_DEFUN([mfx_ACC_CHECK_FUNCS], [
++AC_CHECK_FUNCS(access alloca atexit atoi atol chmod chown clock_getcpuclockid clock_getres clock_gettime ctime difftime fstat getenv getpagesize getrusage gettimeofday gmtime isatty localtime longjmp lstat memcmp memcpy memmove memset mkdir mktime mmap mprotect munmap qsort raise rmdir setjmp signal snprintf strcasecmp strchr strdup strerror strftime stricmp strncasecmp strnicmp strrchr strstr time umask utime vsnprintf)
++])#
++
++
++AC_DEFUN([mfx_ACC_CHECK_SIZEOF], [
++AC_CHECK_SIZEOF(short)
++AC_CHECK_SIZEOF(int)
++AC_CHECK_SIZEOF(long)
++
++AC_CHECK_SIZEOF(long long)
++AC_CHECK_SIZEOF(__int16)
++AC_CHECK_SIZEOF(__int32)
++AC_CHECK_SIZEOF(__int64)
++
++AC_CHECK_SIZEOF(void *)
++AC_CHECK_SIZEOF(char *)
++AC_CHECK_SIZEOF(size_t)
++AC_CHECK_SIZEOF(ptrdiff_t)
++])#
++
++
++# /***********************************************************************
++# // Check for ACC_conformance
++# ************************************************************************/
++
++AC_DEFUN([mfx_ACC_ACCCHK], [
++mfx_tmp=$1
++mfx_save_CPPFLAGS=$CPPFLAGS
++dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
++test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
++
++AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
++
++AC_LANG_CONFTEST([AC_LANG_PROGRAM(
++[[#define ACC_CONFIG_NO_HEADER 1
++#include "acc/acc.h"
++#include "acc/acc_incd.h"
++#undef ACCCHK_ASSERT
++#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
++#include "acc/acc_chk.ch"
++#undef ACCCHK_ASSERT
++static void test_acc_compile_time_assert(void) {
++#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
++#include "acc/acc_chk.ch"
++#undef ACCCHK_ASSERT
++}
++#undef NDEBUG
++#include <assert.h>
++static int test_acc_run_time_assert(int r) {
++#define ACCCHK_ASSERT(expr) assert(expr);
++#include "acc/acc_chk.ch"
++#undef ACCCHK_ASSERT
++return r;
++}
++]], [[
++test_acc_compile_time_assert();
++if (test_acc_run_time_assert(1) != 1) return 1;
++]]
++)])
++
++mfx_tmp=FAILED
++_AC_COMPILE_IFELSE([], [mfx_tmp=yes])
++rm -f conftest.$ac_ext conftest.$ac_objext
++
++CPPFLAGS=$mfx_save_CPPFLAGS
++
++AC_MSG_RESULT([$mfx_tmp])
++case x$mfx_tmp in
++ xpassed | xyes) ;;
++ *)
++ AC_MSG_NOTICE([])
++ AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
++ AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
++ AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
++ AC_MSG_NOTICE([Thanks for your support.])
++ AC_MSG_NOTICE([])
++ AC_MSG_ERROR([ACC conformance test failed. Stop.])
++dnl AS_EXIT
++ ;;
++esac
++])# mfx_ACC_ACCCHK
++
++
++# /***********************************************************************
++# // Check for ACC_conformance
++# ************************************************************************/
++
++AC_DEFUN([mfx_MINIACC_ACCCHK], [
++mfx_tmp=$1
++mfx_save_CPPFLAGS=$CPPFLAGS
++dnl in Makefile.in $(INCLUDES) will be before $(CPPFLAGS), so we mimic this here
++test "X$mfx_tmp" = "X" || CPPFLAGS="$mfx_tmp $CPPFLAGS"
++
++AC_MSG_CHECKING([whether your compiler passes the ACC conformance test])
++
++AC_LANG_CONFTEST([AC_LANG_PROGRAM(
++[[#define ACC_CONFIG_NO_HEADER 1
++#define ACC_WANT_ACC_INCD_H 1
++#include $2
++
++#define ACC_WANT_ACC_CHK_CH 1
++#undef ACCCHK_ASSERT
++#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT_HEADER(expr)
++#include $2
++
++#define ACC_WANT_ACC_CHK_CH 1
++#undef ACCCHK_ASSERT
++#define ACCCHK_ASSERT(expr) ACC_COMPILE_TIME_ASSERT(expr)
++static void test_acc_compile_time_assert(void) {
++#include $2
++}
++
++#undef NDEBUG
++#include <assert.h>
++#define ACC_WANT_ACC_CHK_CH 1
++#undef ACCCHK_ASSERT
++#define ACCCHK_ASSERT(expr) assert(expr);
++static int test_acc_run_time_assert(int r) {
++#include $2
++return r;
++}
++]], [[
++test_acc_compile_time_assert();
++if (test_acc_run_time_assert(1) != 1) return 1;
++]]
++)])
++
++mfx_tmp=FAILED
++_AC_COMPILE_IFELSE([], [mfx_tmp=yes])
++rm -f conftest.$ac_ext conftest.$ac_objext
++
++CPPFLAGS=$mfx_save_CPPFLAGS
++
++AC_MSG_RESULT([$mfx_tmp])
++case x$mfx_tmp in
++ xpassed | xyes) ;;
++ *)
++ AC_MSG_NOTICE([])
++ AC_MSG_NOTICE([Your compiler failed the ACC conformance test - for details see ])
++ AC_MSG_NOTICE([`config.log'. Please check that log file and consider sending])
++ AC_MSG_NOTICE([a patch or bug-report to <${PACKAGE_BUGREPORT}>.])
++ AC_MSG_NOTICE([Thanks for your support.])
++ AC_MSG_NOTICE([])
++ AC_MSG_ERROR([ACC conformance test failed. Stop.])
++dnl AS_EXIT
++ ;;
++esac
++])# mfx_MINIACC_ACCCHK
++
++
++
++# serial 1
++
++AC_DEFUN([mfx_PROG_CPPFLAGS], [
++AC_MSG_CHECKING([whether the C preprocessor needs special flags])
++
++AC_LANG_CONFTEST([AC_LANG_PROGRAM(
++[[#include <limits.h>
++#if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
++# include "your C preprocessor is broken 1"
++#elif (0xffffu == 0xfffffffful)
++# include "your C preprocessor is broken 2"
++#elif (32767 >= ULONG_MAX) || (65535u >= ULONG_MAX)
++# include "your C preprocessor is broken 3"
++#endif
++]], [[ ]]
++)])
++
++mfx_save_CPPFLAGS=$CPPFLAGS
++mfx_tmp=ERROR
++for mfx_arg in "" -no-cpp-precomp
++do
++ CPPFLAGS="$mfx_arg $mfx_save_CPPFLAGS"
++ _AC_COMPILE_IFELSE([],
++[mfx_tmp=$mfx_arg
++break])
++done
++CPPFLAGS=$mfx_save_CPPFLAGS
++rm -f conftest.$ac_ext conftest.$ac_objext
++case x$mfx_tmp in
++ x)
++ AC_MSG_RESULT([none needed]) ;;
++ xERROR)
++ AC_MSG_RESULT([ERROR])
++ AC_MSG_ERROR([your C preprocessor is broken - for details see config.log])
++ ;;
++ *)
++ AC_MSG_RESULT([$mfx_tmp])
++ CPPFLAGS="$mfx_tmp $CPPFLAGS"
++ ;;
++esac
++])# mfx_PROG_CPPFLAGS
++
++# serial 3
++
++AC_DEFUN([mfx_CHECK_HEADER_SANE_LIMITS_H], [
++AC_CACHE_CHECK([whether limits.h is sane],
++mfx_cv_header_sane_limits_h,
++[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <limits.h>
++#if (32767 >= 4294967295ul) || (65535u >= 4294967295ul)
++# if defined(__APPLE__) && defined(__GNUC__)
++# error "your preprocessor is broken - use compiler option -no-cpp-precomp"
++# else
++# include "your preprocessor is broken"
++# endif
++#endif
++#define MFX_0xffff 0xffff
++#define MFX_0xffffffffL 4294967295ul
++#if !defined(CHAR_BIT) || (CHAR_BIT != 8)
++# include "error CHAR_BIT"
++#endif
++#if !defined(UCHAR_MAX)
++# include "error UCHAR_MAX 1"
++#endif
++#if !defined(USHRT_MAX)
++# include "error USHRT_MAX 1"
++#endif
++#if !defined(UINT_MAX)
++# include "error UINT_MAX 1"
++#endif
++#if !defined(ULONG_MAX)
++# include "error ULONG_MAX 1"
++#endif
++#if !defined(SHRT_MAX)
++# include "error SHRT_MAX 1"
++#endif
++#if !defined(INT_MAX)
++# include "error INT_MAX 1"
++#endif
++#if !defined(LONG_MAX)
++# include "error LONG_MAX 1"
++#endif
++#if (UCHAR_MAX < 1)
++# include "error UCHAR_MAX 2"
++#endif
++#if (USHRT_MAX < 1)
++# include "error USHRT_MAX 2"
++#endif
++#if (UINT_MAX < 1)
++# include "error UINT_MAX 2"
++#endif
++#if (ULONG_MAX < 1)
++# include "error ULONG_MAX 2"
++#endif
++#if (UCHAR_MAX < 0xff)
++# include "error UCHAR_MAX 3"
++#endif
++#if (USHRT_MAX < MFX_0xffff)
++# include "error USHRT_MAX 3"
++#endif
++#if (UINT_MAX < MFX_0xffff)
++# include "error UINT_MAX 3"
++#endif
++#if (ULONG_MAX < MFX_0xffffffffL)
++# include "error ULONG_MAX 3"
++#endif
++#if (USHRT_MAX > UINT_MAX)
++# include "error USHRT_MAX vs UINT_MAX"
++#endif
++#if (UINT_MAX > ULONG_MAX)
++# include "error UINT_MAX vs ULONG_MAX"
++#endif
++]], [[
++#if (USHRT_MAX == MFX_0xffff)
++{ typedef char a_short2a[1 - 2 * !(sizeof(short) == 2)]; }
++#elif (USHRT_MAX >= MFX_0xffff)
++{ typedef char a_short2b[1 - 2 * !(sizeof(short) > 2)]; }
++#endif
++#if (UINT_MAX == MFX_0xffff)
++{ typedef char a_int2a[1 - 2 * !(sizeof(int) == 2)]; }
++#elif (UINT_MAX >= MFX_0xffff)
++{ typedef char a_int2b[1 - 2 * !(sizeof(int) > 2)]; }
++#endif
++#if (ULONG_MAX == MFX_0xffff)
++{ typedef char a_long2a[1 - 2 * !(sizeof(long) == 2)]; }
++#elif (ULONG_MAX >= MFX_0xffff)
++{ typedef char a_long2b[1 - 2 * !(sizeof(long) > 2)]; }
++#endif
++#if !defined(_CRAY1) /* CRAY PVP systems */
++#if (USHRT_MAX == MFX_0xffffffffL)
++{ typedef char a_short4a[1 - 2 * !(sizeof(short) == 4)]; }
++#elif (USHRT_MAX >= MFX_0xffffffffL)
++{ typedef char a_short4b[1 - 2 * !(sizeof(short) > 4)]; }
++#endif
++#endif /* _CRAY1 */
++#if (UINT_MAX == MFX_0xffffffffL)
++{ typedef char a_int4a[1 - 2 * !(sizeof(int) == 4)]; }
++#elif (UINT_MAX >= MFX_0xffffffffL)
++{ typedef char a_int4b[1 - 2 * !(sizeof(int) > 4)]; }
++#endif
++#if (ULONG_MAX == MFX_0xffffffffL)
++{ typedef char a_long4a[1 - 2 * !(sizeof(long) == 4)]; }
++#elif (ULONG_MAX >= MFX_0xffffffffL)
++{ typedef char a_long4b[1 - 2 * !(sizeof(long) > 4)]; }
++#endif
++]])],
++[mfx_cv_header_sane_limits_h=yes],
++[mfx_cv_header_sane_limits_h=no])])
++])
++
++# /***********************************************************************
++# // standard
++# ************************************************************************/
++
++AC_DEFUN([mfx_LZO_CHECK_ENDIAN], [
++AC_C_BIGENDIAN([AC_DEFINE(LZO_ABI_BIG_ENDIAN,1,[Define to 1 if your machine is big endian.])],[AC_DEFINE(LZO_ABI_LITTLE_ENDIAN,1,[Define to 1 if your machine is little endian.])])
++])#
++
++
++# /***********************************************************************
++# //
++# ************************************************************************/
++
++dnl more types which are not yet covered by ACC
++
++AC_DEFUN([mfx_CHECK_SIZEOF], [
++AC_CHECK_SIZEOF(__int32)
++AC_CHECK_SIZEOF(intmax_t)
++AC_CHECK_SIZEOF(uintmax_t)
++AC_CHECK_SIZEOF(intptr_t)
++AC_CHECK_SIZEOF(uintptr_t)
++
++AC_CHECK_SIZEOF(float)
++AC_CHECK_SIZEOF(double)
++AC_CHECK_SIZEOF(long double)
++
++AC_CHECK_SIZEOF(dev_t)
++AC_CHECK_SIZEOF(fpos_t)
++AC_CHECK_SIZEOF(mode_t)
++AC_CHECK_SIZEOF(off_t)
++AC_CHECK_SIZEOF(ssize_t)
++AC_CHECK_SIZEOF(time_t)
++])#
++
++
++
++AC_DEFUN([mfx_CHECK_LIB_WINMM], [
++if test "X$GCC" = Xyes; then
++case $host_os in
++cygwin* | mingw* | pw32*)
++ test "X$LIBS" != "X" && LIBS="$LIBS "
++ LIBS="${LIBS}-lwinmm" ;;
++*)
++ ;;
++esac
++fi
++])#
+--
+2.1.4
+
diff --git a/recipes-extended/upx/libucl/Reproducible-build.patch b/recipes-extended/upx/libucl/Reproducible-build.patch
new file mode 100644
index 00000000..23acf565
--- /dev/null
+++ b/recipes-extended/upx/libucl/Reproducible-build.patch
@@ -0,0 +1,30 @@
+From: Robert Luberda <robert@debian.org>
+Date: Sun, 31 May 2015 13:09:15 +0200
+Subject: 03 Reproducible build
+
+Introduced BUILD_DATETIME pre-processor variable to
+be used instead of __DATE__ __TIME__ to make build
+reproducible.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+---
+ src/ucl_util.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/ucl_util.c b/src/ucl_util.c
+index 7e49a2a..58aa0ea 100644
+--- a/src/ucl_util.c
++++ b/src/ucl_util.c
+@@ -55,7 +55,11 @@ static const char __ucl_copyright[] =
+ "<markus@oberhumer.com>\n"
+ "http://www.oberhumer.com $\n\n"
+ "$Id: UCL version: v" UCL_VERSION_STRING ", " UCL_VERSION_DATE " $\n"
++#if defined (BUILD_DATETIME)
++ "$Built: " BUILD_DATETIME " $\n"
++#else
+ "$Built: " __DATE__ " " __TIME__ " $\n"
++#endif
+ "$Info: " ACC_INFO_OS
+ #if defined(ACC_INFO_OS_POSIX)
+ "/" ACC_INFO_OS_POSIX
diff --git a/recipes-extended/upx/libucl/use-static-assert.patch b/recipes-extended/upx/libucl/use-static-assert.patch
new file mode 100644
index 00000000..50e9da5f
--- /dev/null
+++ b/recipes-extended/upx/libucl/use-static-assert.patch
@@ -0,0 +1,37 @@
+From: Robert Luberda <robert@debian.org>
+Date: Sat, 2 Jul 2016 22:23:20 +0200
+Subject: Switch to _Static_assert
+
+Use _Static_assert for compile-time assertion to fix
+build failures with gcc-6 (closes: #811707)
+
+Upstream-Status: Inappropriate [embedded specific]
+
+---
+ acc/acc_defs.h | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/acc/acc_defs.h b/acc/acc_defs.h
+index 866b7bd..5ee3761 100644
+--- a/acc/acc_defs.h
++++ b/acc/acc_defs.h
+@@ -87,6 +87,9 @@
+
+ /* This can be put into a header file but may get ignored by some compilers. */
+ #if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
++# define ACC_COMPILE_TIME_ASSERT_HEADER(e) _Static_assert(e, #e);
++#endif
++#if !defined(ACC_COMPILE_TIME_ASSERT_HEADER)
+ # if (ACC_CC_AZTECC || ACC_CC_ZORTECHC)
+ # define ACC_COMPILE_TIME_ASSERT_HEADER(e) extern int __acc_cta[1-!(e)];
+ # elif (ACC_CC_DMC || ACC_CC_SYMANTECC)
+@@ -100,6 +103,9 @@
+
+ /* This must appear within a function body. */
+ #if !defined(ACC_COMPILE_TIME_ASSERT)
++# define ACC_COMPILE_TIME_ASSERT(e) _Static_assert(e, #e);
++#endif
++#if !defined(ACC_COMPILE_TIME_ASSERT)
+ # if (ACC_CC_AZTECC)
+ # define ACC_COMPILE_TIME_ASSERT(e) {typedef int __acc_cta_t[1-!(e)];}
+ # elif (ACC_CC_DMC || ACC_CC_PACIFICC || ACC_CC_SYMANTECC || ACC_CC_ZORTECHC)
diff --git a/recipes-extended/upx/libucl_1.03.bb b/recipes-extended/upx/libucl_1.03.bb
new file mode 100644
index 00000000..57a5602e
--- /dev/null
+++ b/recipes-extended/upx/libucl_1.03.bb
@@ -0,0 +1,20 @@
+HOMEPAGE = "http://www.oberhumer.com/opensource/ucl/"
+SUMMARY = "Data compression library"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=dfeaf3dc4beef4f5a7bdbc35b197f39e"
+
+SRC_URI = "http://www.oberhumer.com/opensource/ucl/download/ucl-1.03.tar.gz \
+ file://0001-configure.ac-Fix-with-current-autoconf.patch \
+ file://0002-acinclude.m4-Provide-missing-macros.patch \
+ file://use-static-assert.patch \
+ file://Reproducible-build.patch"
+
+SRC_URI[md5sum] = "852bd691d8abc75b52053465846fba34"
+SRC_URI[sha256sum] = "b865299ffd45d73412293369c9754b07637680e5c826915f097577cd27350348"
+
+S = "${WORKDIR}/ucl-${PV}"
+
+inherit autotools lib_package
+
+BBCLASSEXTEND = "native"
+
diff --git a/recipes-extended/upx/upx_git.bb b/recipes-extended/upx/upx_git.bb
new file mode 100644
index 00000000..02e70ffe
--- /dev/null
+++ b/recipes-extended/upx/upx_git.bb
@@ -0,0 +1,16 @@
+SUMMARY = "Ultimate executable compressor."
+HOMEPAGE = "https://upx.github.io/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=353753597aa110e0ded3508408c6374a"
+SRCREV_upx = "099c3d829e80488af7395a4242b318877e980da4"
+PV = "4.2.2+git${SRCPV}"
+
+# Note: DO NOT use released tarball in favor of the git repository with submodules.
+# it makes maintenance easier for CVEs or other issues.
+SRC_URI = "gitsm://github.com/upx/upx;protocol=https;;name=upx;branch=devel"
+
+S = "${WORKDIR}/git"
+
+inherit pkgconfig cmake
+
+BBCLASSEXTEND = "native"
diff --git a/recipes-extended/uxen/README.md b/recipes-extended/uxen/README.md
new file mode 100644
index 00000000..09733833
--- /dev/null
+++ b/recipes-extended/uxen/README.md
@@ -0,0 +1,48 @@
+# uXen : Open Source type-2 hypervisor support
+
+For any issues with the uXen recipes please make sure you CC:
+
+ christopher.w.clark@gmail.com
+
+## uxen-guest-tools : software for within guest VMs, kernel modules
+
+* uxenhc : hypercall driver
+* uxenfb : framebuffer driver
+* uxenhid : Human Input Device driver
+* uxennet : virtual network device driver
+* uxenplatform : uXen platform device driver
+* uxenstor : virtual storage device driver
+* uxenv4vlib : v4v, Hypervisor-Mediated data eXchange
+* v4vvsock : v4v vsock virtual network device driver
+* v4vtest : basic v4v vsock test
+
+To produce a bootable VM disk image file:
+
+ wic create directdisk -e uxen-guest-image-minimal
+
+To test, copy the .direct file that wic produces to the host with uXen installed and write the following to a new file: `linux-vm.json`. Update the file path within it to point to your wic-generated disk image:
+
+ {
+ "name" : "Linux Virtual Machine",
+ "boot-order" : "c",
+ "block" :
+ { "id": "ich0", "proto" : "raw", "xsnapshot" : true,
+ "path" : "c:/Users/Yocto/directdisk-202001010100-sda.direct" },
+ "memory" : 768,
+ "net" : { "type" : "nic", "model" : "e1000" },
+ "hpet" : 1,
+ "vcpus" : 1,
+ "use-v4v-net" : 1,
+ "v4v-storage" : true,
+
+ "" : ""
+ }
+
+and then boot it:
+
+ uxendm -F linux-vm.json
+
+References:
+ https://www.bromium.com/opensource
+ https://github.com/uxen-virt
+ https://www.platformsecuritysummit.com/2018/speaker/pratt/
diff --git a/recipes-extended/uxen/uxen-guest-tools/0001-vm-support-fix-build-for-kernel-s-5.4.patch b/recipes-extended/uxen/uxen-guest-tools/0001-vm-support-fix-build-for-kernel-s-5.4.patch
new file mode 100644
index 00000000..be187e79
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools/0001-vm-support-fix-build-for-kernel-s-5.4.patch
@@ -0,0 +1,86 @@
+From 21bb6953a64390dd1c5a8b7520eb5e2c18ea3ff1 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Mon, 29 Nov 2021 21:01:03 -0500
+Subject: [PATCH] vm-support: fix build for kernel's > 5.4
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ a/uxenhc/hypercall.c | 10 +++++++++-
+ a/v4vvsock/v4v_vsock.c | 2 ++
+ a/vmdiagnostics/vm_diagnostics.c | 9 ++++++++-
+ 3 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/uxenhc/hypercall.c b/uxenhc/hypercall.c
+index 0b9ef3f..04957a8 100644
+--- a/uxenhc/hypercall.c
++++ b/uxenhc/hypercall.c
+@@ -10,6 +10,7 @@
+ #include <linux/mm.h>
+ #include <linux/spinlock.h>
+ #include <linux/compiler.h>
++#include <linux/version.h>
+
+ #include <xen/xen.h>
+ #include <xen/version.h>
+@@ -124,7 +125,11 @@ static int __init uxen_hypercall_init(void)
+ printk(KERN_INFO "using uxen hypervisor\n");
+
+ if (!uxen_hcbase) {
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,8,0))
+ uxen_hcbase = __vmalloc(PAGE_SIZE, GFP_KERNEL, PAGE_KERNEL_EXEC);
++#else
++ uxen_hcbase = __vmalloc(PAGE_SIZE, GFP_KERNEL);
++#endif
+ if (!uxen_hcbase) {
+ ret = -ENOMEM;
+ goto out;
+diff --git a/v4vvsock/v4v_vsock.c b/v4vvsock/v4v_vsock.c
+index 8d80d7d..cd7e8ce 100644
+--- a/v4vvsock/v4v_vsock.c
++++ b/v4vvsock/v4v_vsock.c
+@@ -578,8 +578,10 @@ static const struct proto_ops vsock_dgram_ops = {
+ .ioctl = sock_no_ioctl,
+ .listen = sock_no_listen,
+ .shutdown = sock_no_shutdown,
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,10,0))
+ .setsockopt = sock_no_setsockopt,
+ .getsockopt = sock_no_getsockopt,
++#endif
+ .sendmsg = vsock_sendmsg,
+ .recvmsg = vsock_recvmsg,
+ .mmap = sock_no_mmap,
+diff --git a/vmdiagnostics/vm_diagnostics.c b/vmdiagnostics/vm_diagnostics.c
+index 9ff94fb..db14e57 100644
+--- a/vmdiagnostics/vm_diagnostics.c
++++ b/vmdiagnostics/vm_diagnostics.c
+@@ -22,6 +22,7 @@
+ #include <linux/timekeeping.h>
+ #include <linux/types.h>
+ #include <linux/vmstat.h>
++#include <linux/version.h>
+
+ #include <uxen-v4vlib.h>
+
+@@ -403,10 +404,16 @@ static void vm_handle_request_stat_task(struct vm_diagnostics_context *context,
+
+ task_payload.state = task_state_to_char(task);
+ task_payload.num_threads = get_nr_threads(task);
++
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,5,0))
+ task_payload.start_time_nsec = task->real_start_time;
++#else
++ task_payload.start_time_nsec = task->start_boottime;
++#endif
++
+ task_payload.last_run_cpu_id = task_cpu(task);
+
+- thread_group_cputime_adjusted(task, &user_nsec, &system_nsec);
++ //thread_group_cputime_adjusted(task, &user_nsec, &system_nsec);
+ task_payload.user_nsec = user_nsec;
+ task_payload.system_nsec = system_nsec;
+
+--
+2.19.1
+
diff --git a/recipes-extended/uxen/uxen-guest-tools/0002-vm-support-fix-build-for-kernel-s-5.15.patch b/recipes-extended/uxen/uxen-guest-tools/0002-vm-support-fix-build-for-kernel-s-5.15.patch
new file mode 100644
index 00000000..22c5cd57
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools/0002-vm-support-fix-build-for-kernel-s-5.15.patch
@@ -0,0 +1,48 @@
+From f8a33a209498b32b0fc06d80baa071f0902b9a85 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 30 Nov 2021 06:45:34 -0800
+Subject: [PATCH] vm-support: fix build for kernel's > 5.15
+
+* remove callback was changed to return void instead of int in:
+ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fc7a6209d5710618eb4f72a77cd81b8d694ecf89
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ uxenplatform/platform.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/uxenplatform/platform.c b/uxenplatform/platform.c
+index 99fc76a..5225a00 100644
+--- a/uxenplatform/platform.c
++++ b/uxenplatform/platform.c
+@@ -4,6 +4,7 @@
+ #include <linux/random.h>
+ #include <linux/kthread.h>
+ #include <linux/delay.h>
++#include <linux/version.h>
+
+ #include <uxen-hypercall.h>
+ #include <uxen-platform.h>
+@@ -32,14 +33,20 @@ static int bus_probe(struct device *_dev)
+ return drv && drv->probe ? drv->probe(dev) : -ENODEV;
+ }
+
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0))
+ static int bus_remove(struct device *_dev)
++#else
++static void bus_remove(struct device *_dev)
++#endif
+ {
+ struct uxen_device *dev = dev_to_uxen(_dev);
+ struct uxen_driver *drv = drv_to_uxen(_dev->driver);
+
+ if (dev && drv && drv->remove)
+ drv->remove(dev);
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,15,0))
+ return 0;
++#endif
+ }
+
+ static int bus_suspend(struct device *_dev, pm_message_t state)
diff --git a/recipes-extended/uxen/uxen-guest-tools/0003-vm-support-fix-build-for-kernel-s-5.14.patch b/recipes-extended/uxen/uxen-guest-tools/0003-vm-support-fix-build-for-kernel-s-5.14.patch
new file mode 100644
index 00000000..f775b2e6
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools/0003-vm-support-fix-build-for-kernel-s-5.14.patch
@@ -0,0 +1,34 @@
+From 59986e91d807591f05dfbd57b459ba71670874f9 Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 30 Nov 2021 15:04:31 +0000
+Subject: [PATCH] vm-support: fix build for kernel's > 5.14
+
+* remove set_driver_byte call
+* not sure if it's still necessary here, but set_driver_byte as well as DRIVER_SENSE was killed in 5.14 with:
+ https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=464a00c9e0ad45e3f42ff6ea705491a356df818e
+
+ in some cases it was replaced with set_status_byte(sc, SAM_STAT_CHECK_CONDITION), but I didn't
+ read the implementation carefully enough to decide if this is still needed, I was only interested
+ in fixing the build failure (and I don't use this at all to test it in runtime)
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ uxenstor/stor.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/uxenstor/stor.c b/uxenstor/stor.c
+index e07b08e..6bf2184 100644
+--- a/uxenstor/stor.c
++++ b/uxenstor/stor.c
+@@ -109,7 +109,9 @@ static void uxenstor_softirq(unsigned long opaque)
+ sc->sense_buffer,
+ sizeof(hdr) + hdr.sense_size,
+ 0, sizeof(hdr));
++#if (LINUX_VERSION_CODE < KERNEL_VERSION(5,14,0))
+ set_driver_byte(sc, DRIVER_SENSE);
++#endif
+ }
+
+ set_host_byte(sc, DID_ERROR);
diff --git a/recipes-extended/uxen/uxen-guest-tools/0004-uxenhc-fix-DMODULE-not-working-on-module-build-comma.patch b/recipes-extended/uxen/uxen-guest-tools/0004-uxenhc-fix-DMODULE-not-working-on-module-build-comma.patch
new file mode 100644
index 00000000..627a12f0
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools/0004-uxenhc-fix-DMODULE-not-working-on-module-build-comma.patch
@@ -0,0 +1,58 @@
+From 732791cb353289e37448d84503a7d62ca156f29f Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Tue, 30 Nov 2021 16:33:14 +0000
+Subject: [PATCH] uxenhc: fix -DMODULE not working on module build command line
+
+* ATTOXEN_API_INC isn't defined anywhere in our OE builds, so the command line ends like this:
+
+ x86_64-oe-linux-gcc -fuse-ld=bfd -fmacro-prefix-map=/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0=/usr/src/debug/uxen-guest-tools/4.1.8-r0 -fdebug-prefix-map=/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0=/usr/src/debug/uxen-guest-tools/4.1.8-r0 -fdebug-prefix-map=/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/recipe-sysroot= -fdebug-prefix-map=/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/recipe-sysroot-native= -fdebug-prefix-map=/OE/work-shared/qemux86-64/kernel-source=/usr/src/kernel -Wp,-MMD,/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/uxenhc/.hypercall.o.d -I/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/include/ -I/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/include/uxen -I/OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/include/uxen/xen -I/OE/work-shared/qemux86-64/kernel-source/arch/x86/include -I./arch/x86/include/generated -I/OE/work-shared/qemux86-64/kernel-source/include -I./include -I/OE/work-shared/qemux86-64/kernel-source/arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I/OE/work-shared/qemux86-64/kernel-source/include/uapi -I./include/generated/uapi -include /OE/work-shared/qemux86-64/kernel-source/include/linux/compiler-version.h -include /OE/work-shared/qemux86-64/kernel-source/include/linux/kconfig.h -include /OE/work-shared/qemux86-64/kernel-source/include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=/OE/work-shared/qemux86-64/kernel-source/= -Wall -Wundef -Werror=strict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -fno-PIE -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Wno-format-security -std=gnu89 -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -march=core2 -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -fno-jump-tables -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-address-of-packed-member -O2 -fno-allow-store-data-races -Wframe-larger-than=2048 -fstack-protector-strong -Wimplicit-fallthrough=5 -Wno-main -Wno-unused-but-set-variable -Wno-unused-const-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-stack-clash-protection -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wvla -Wno-pointer-sign -Wno-stringop-truncation -Wno-zero-length-bounds -Wno-array-bounds -Wno-stringop-overflow -Wno-restrict -Wno-maybe-uninitialized -fno-strict-overflow -fno-stack-check -fconserve-stack -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wno-packed-not-aligned -DLX_TARGET_STANDARDVM -g -Wall -I -DMODULE -DKBUILD_BASENAME='"hypercall"' -DKBUILD_MODNAME='"uxenhc"' -D__KBUILD_MODNAME=kmod_uxenhc -c -o /OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/uxenhc/hypercall.o /OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/uxenhc/hypercall.c
+
+ the important part is "-I -DMODULE" which breaks include/linux/module.h behavior:
+
+ /*
+ * MODULE_FILE is used for generating modules.builtin
+ * So, make it no-op when this is being built as a module
+ */
+ #ifdef MODULE
+ #define MODULE_FILE
+ #else
+ #define MODULE_FILE MODULE_INFO(file, KBUILD_MODFILE);
+ #endif
+
+ resulting in:
+
+ In file included from /OE/work-shared/qemux86-64/kernel-source/include/linux/module.h:22,
+ from /OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/uxenhc/hypercall.c:3:
+ /OE/work-shared/qemux86-64/kernel-source/include/linux/module.h:183:43: error: expected ',' or ';' before 'KBUILD_MODFILE'
+ 183 | #define MODULE_FILE MODULE_INFO(file, KBUILD_MODFILE);
+ | ^~~~~~~~~~~~~~
+ /OE/work-shared/qemux86-64/kernel-source/include/linux/moduleparam.h:26:61: note: in definition of macro '__MODULE_INFO'
+ 26 | = __MODULE_INFO_PREFIX __stringify(tag) "=" info
+ | ^~~~
+ /OE/work-shared/qemux86-64/kernel-source/include/linux/module.h:183:25: note: in expansion of macro 'MODULE_INFO'
+ 183 | #define MODULE_FILE MODULE_INFO(file, KBUILD_MODFILE);
+ | ^~~~~~~~~~~
+ /OE/work-shared/qemux86-64/kernel-source/include/linux/module.h:230:34: note: in expansion of macro 'MODULE_FILE'
+ 230 | #define MODULE_LICENSE(_license) MODULE_FILE MODULE_INFO(license, _license)
+ | ^~~~~~~~~~~
+ /OE/work/qemux86_64-oe-linux/uxen-guest-tools/4.1.8-r0/uxen-4.1.8-72a4af9/vm-support/linux/uxenhc/hypercall.c:161:1: note: in expansion of macro 'MODULE_LICENSE'
+ 161 | MODULE_LICENSE("GPL");
+ | ^~~~~~~~~~~~~~
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+---
+ uxenhc/Kbuild | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/uxenhc/Kbuild b/uxenhc/Kbuild
+index e418096..ef1b145 100644
+--- a/uxenhc/Kbuild
++++ b/uxenhc/Kbuild
+@@ -1,4 +1,3 @@
+ obj-m += uxenhc.o
+
+ uxenhc-y := hypercall.o
+-CFLAGS_hypercall.o := -I$(ATTOXEN_API_INC)
+\ No newline at end of file
diff --git a/recipes-extended/uxen/uxen-guest-tools/fix-Makefile-for-OE-kernel-build.patch b/recipes-extended/uxen/uxen-guest-tools/fix-Makefile-for-OE-kernel-build.patch
new file mode 100644
index 00000000..09a43754
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools/fix-Makefile-for-OE-kernel-build.patch
@@ -0,0 +1,38 @@
+Upstream-Status: Inappropriate [embedded specific]
+
+# OpenEmbedded uses KERNEL_SRC instead of KDIR
+# and enable the modules_install target.
+# Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+diff --git a/Makefile b/Makefile
+index 3fd3075..80cf0fe 100644
+--- a/Makefile
++++ b/Makefile
+@@ -1,10 +1,13 @@
+ ifneq ($(KERNELRELEASE),)
+ # kbuild part of makefile
+-else
++include Kbuild
+
+-KVERSION ?= $(shell uname -r)
+-KDIR := /lib/modules/${KVERSION}/build
++else
++#normal makefile
++KERNEL_VERSION ?= $(shell uname -r)
++KERNEL_SRC ?= /lib/modules/${KERNEL_VERSION}/build
+ UXENDIR ?= $(shell pwd)/include/uxen
++INSTALL_HDR_PATH ?= /usr
+
+ LX_TARGET_FLAGS= -DLX_TARGET_STANDARDVM
+ LX_TARGET_ATTOVM=n
+@@ -19,7 +22,9 @@ EXTRA_CFLAGS=$(LX_TARGET_FLAGS) -g -Wall
+ NOSTDINC_FLAGS=-I$(shell pwd)/include/ -I$(UXENDIR) -I$(UXENDIR)/xen
+
+ all:
+- make -C $(KDIR) $(LX_TARGET) M=$(shell pwd) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)"
++ make -C $(KERNEL_SRC) $(LX_TARGET) M=$(shell pwd) EXTRA_CFLAGS="$(EXTRA_CFLAGS)" NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)"
+ clean:
+- make -C $(KDIR) $(LX_TARGET) M=$(shell pwd) clean
++ make -C $(KERNEL_SRC) $(LX_TARGET) M=$(shell pwd) clean
++modules_install:
++ make -C $(KERNEL_SRC) $(LX_TARGET) M=$(shell pwd) modules_install
+ endif
diff --git a/recipes-extended/uxen/uxen-guest-tools_4.1.8.bb b/recipes-extended/uxen/uxen-guest-tools_4.1.8.bb
new file mode 100644
index 00000000..c2f3464c
--- /dev/null
+++ b/recipes-extended/uxen/uxen-guest-tools_4.1.8.bb
@@ -0,0 +1,26 @@
+SUMMARY = "uXen type-2 Open Source hypervisor Linux guest tools"
+DESCRIPTION = "Linux guest virtual machine tools for the uXen hypervisor"
+HOMEPAGE = "https://www.bromium.com/opensource"
+LICENSE = "GPL-2.0-only"
+
+COMPATIBLE_HOST = '(x86_64.*).*-linux'
+
+SRC_URI = " \
+ https://www.bromium.com/wp-content/uploads/2019/11/uxen-${PV}.zip;name=uxen \
+ https://www.bromium.com/wp-content/uploads/2019/11/Bromium-4.1.8-Open-Source-Software.pdf;name=license \
+ file://fix-Makefile-for-OE-kernel-build.patch \
+ file://0001-vm-support-fix-build-for-kernel-s-5.4.patch \
+ file://0002-vm-support-fix-build-for-kernel-s-5.15.patch \
+ file://0003-vm-support-fix-build-for-kernel-s-5.14.patch \
+ file://0004-uxenhc-fix-DMODULE-not-working-on-module-build-comma.patch \
+"
+
+SRC_URI[uxen.sha384sum] = "be2233bc6506a23350d76c03ac28ea7ea381e1dc6ed5ce996e8ac71e6a3316fcaa2ed070c622618bd226f43a4d6db5d4"
+SRC_URI[license.sha384sum] = "92e48c614df3094cb52321d4c4e01f6df5526d46aee5c6fa36c43ee23d4c33f03baa1fc5f6f29efafff636b6d13bc92c"
+
+# The software license is GPLv2: please see page 199 of the pdf document
+LIC_FILES_CHKSUM = "file://${WORKDIR}/Bromium-4.1.8-Open-Source-Software.pdf;md5=cf120df6ffa417b36f870a9997650049"
+
+S = "${WORKDIR}/uxen-${PV}-72a4af9/vm-support/linux"
+
+inherit module dos2unix
diff --git a/recipes-extended/vgabios/biossums_0.7a.bb b/recipes-extended/vgabios/biossums_0.7a.bb
deleted file mode 100644
index e66bade7..00000000
--- a/recipes-extended/vgabios/biossums_0.7a.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "biossums tool for building Plex86/Bochs LGPL VGABios"
-HOMEPAGE = "http://www.nongnu.org/vgabios/"
-LICENSE = "LGPLv2.1"
-SECTION = "firmware"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
-
-SRC_URI = "http://savannah.gnu.org/download/vgabios/vgabios-${PV}.tgz"
-
-SRC_URI[md5sum] = "2c0fe5c0ca08082a9293e3a7b23dc900"
-SRC_URI[sha256sum] = "9d24c33d4bfb7831e2069cf3644936a53ef3de21d467872b54ce2ea30881b865"
-
-BBCLASSEXTEND = "native"
-
-FILES_${PN} = "${bindir}/biossums"
-
-S = "${WORKDIR}/vgabios-${PV}"
-
-do_configure() {
- # Don't override the compiler or its flags:
- sed 's,^CC,DISABLED_CC,' -i Makefile
- sed 's,^CFLAGS,DISABLED_CFLAGS,' -i Makefile
- sed 's,^LDFLAGS,DISABLED_LDFLAGS,' -i Makefile
- # Supply the C flags to the compiler:
- sed 's,-o biossums,$(CFLAGS) -o biossums,' -i Makefile
-}
-
-do_compile() {
- # clean removes binaries distributed with source
- oe_runmake clean
- oe_runmake biossums
-}
-
-do_install() {
- mkdir -p "${D}${bindir}"
- install -m 0755 biossums "${D}${bindir}"
-}
diff --git a/recipes-extended/vgabios/files/build-cc.patch b/recipes-extended/vgabios/files/build-cc.patch
new file mode 100644
index 00000000..01fd8b97
--- /dev/null
+++ b/recipes-extended/vgabios/files/build-cc.patch
@@ -0,0 +1,31 @@
+Use the host compiler to build the tools we need at runtime.
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Ross Burton <ross.burton@arm.com>
+
+Index: Makefile
+===================================================================
+--- a/Makefile (revision 298)
++++ b/Makefile (working copy)
+@@ -5,6 +5,7 @@
+ SHELL = /bin/sh
+
+ CC = gcc
++HOSTCC = gcc
+ CFLAGS = -g -O2 -Wall -Wstrict-prototypes
+ LDFLAGS =
+
+@@ -79,10 +80,10 @@
+ tar czvf ../$(RELEASE).tgz --exclude .svn -C .. $(RELEASE)/
+
+ biossums: biossums.c
+- $(CC) -o biossums biossums.c
++ $(HOSTCC) -o biossums biossums.c
+
+ vbetables-gen: vbetables-gen.c
+- $(CC) -o vbetables-gen vbetables-gen.c
++ $(HOSTCC) -o vbetables-gen vbetables-gen.c
+
+ vbetables.h: vbetables-gen
+ ./vbetables-gen > $@
diff --git a/recipes-extended/vgabios/vgabios_0.7a.bb b/recipes-extended/vgabios/vgabios_0.7a.bb
deleted file mode 100644
index 3394173c..00000000
--- a/recipes-extended/vgabios/vgabios_0.7a.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "Plex86/Bochs LGPL VGABios"
-HOMEPAGE = "http://www.nongnu.org/vgabios/"
-LICENSE = "LGPLv2.1"
-SECTION = "firmware"
-
-DEPENDS = "dev86-native biossums-native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
-
-SRC_URI = "http://savannah.gnu.org/download/vgabios/${BPN}-${PV}.tgz"
-
-SRC_URI[md5sum] = "2c0fe5c0ca08082a9293e3a7b23dc900"
-SRC_URI[sha256sum] = "9d24c33d4bfb7831e2069cf3644936a53ef3de21d467872b54ce2ea30881b865"
-
-PR = "r0"
-
-FILES_${PN} = "/usr/share/firmware/${PN}-${PV}*.bin"
-FILES_${PN}-dbg = "/usr/share/firmware/${PN}-${PV}*.debug.bin"
-
-S = "${WORKDIR}/${PN}-${PV}"
-
-do_configure() {
- # Override to use the native-built biossums tool:
- sed 's,./biossums,biossums,' -i Makefile
- sed 's,$(CC) -o biossums biossums.c,touch biossums,' -i Makefile
-}
-
-do_install() {
- install -d ${D}/usr/share/firmware
- install -m 0644 VGABIOS-lgpl-latest.bin ${D}/usr/share/firmware/${PN}-${PV}.bin
- install -m 0644 VGABIOS-lgpl-latest.cirrus.bin ${D}/usr/share/firmware/${PN}-${PV}.cirrus.bin
-}
-
diff --git a/recipes-extended/vgabios/vgabios_0.8a.bb b/recipes-extended/vgabios/vgabios_0.8a.bb
new file mode 100644
index 00000000..044bb4ec
--- /dev/null
+++ b/recipes-extended/vgabios/vgabios_0.8a.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "Plex86/Bochs LGPL VGABios"
+HOMEPAGE = "http://www.nongnu.org/vgabios/"
+LICENSE = "LGPL-2.1-only"
+SECTION = "firmware"
+
+DEPENDS = "dev86-native"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=fae731a3adbc92fd8bb1730d1f2455bc"
+
+SRC_URI = "http://savannah.gnu.org/download/vgabios/${BP}.tgz \
+ file://build-cc.patch"
+SRC_URI[sha256sum] = "481042240ef0f1c918780c92a6bb42ad4d3f5d989b29502fa7ee7faf13a041b9"
+
+EXTRA_OEMAKE = "HOSTCC="${BUILD_CC}""
+
+do_install() {
+ install -d ${D}${datadir}/firmware
+ for file in VGABIOS*.bin; do
+ target=$(echo $file | sed s/VGABIOS-lgpl-latest/${BP}/)
+ install -m0644 $file ${D}${datadir}/firmware/$target
+ done
+}
+
+FILES:${PN} = "${datadir}/firmware/${BP}*.bin"
+FILES:${PN}-dbg = "${datadir}/firmware/${BP}*.debug.bin"
diff --git a/recipes-extended/vhost-device/README.md b/recipes-extended/vhost-device/README.md
new file mode 100644
index 00000000..dd79b484
--- /dev/null
+++ b/recipes-extended/vhost-device/README.md
@@ -0,0 +1,14 @@
+# vhost-device: A collection of vhost-user devices
+
+[vhost-device](https://github.com/rust-vmm/vhost-device) provides a series of
+daemons that implement the
+[vhost-user protocol](https://qemu-project.gitlab.io/qemu/interop/vhost-user.html)
+for various virtio device types.
+
+## Updating the recipes
+
+1. Bump the version number to the newly published version listed on crates.io
+2. Regenerate the .inc file that list the dependencies:
+ `bitbake -c update_crates vhost-device-<type>`
+3. Review, build and test the changes
+
diff --git a/recipes-extended/vhost-device/vhost-device-gpio-crates.inc b/recipes-extended/vhost-device/vhost-device-gpio-crates.inc
new file mode 100644
index 00000000..4d73c1fd
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-gpio-crates.inc
@@ -0,0 +1,184 @@
+# Autogenerated with 'bitbake -c update_crates vhost-device-gpio'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.1 \
+ crate://crates.io/arc-swap/1.6.0 \
+ crate://crates.io/assert_matches/1.5.0 \
+ crate://crates.io/bindgen/0.63.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cexpr/0.6.0 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clang-sys/1.6.1 \
+ crate://crates.io/clap/4.3.19 \
+ crate://crates.io/clap_builder/4.3.19 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/either/1.8.1 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/errno/0.2.8 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/glob/0.3.1 \
+ crate://crates.io/heck/0.3.3 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/intmap/2.0.0 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/lazycell/1.3.0 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/libgpiod/0.1.0 \
+ crate://crates.io/libgpiod-sys/0.1.0 \
+ crate://crates.io/libloading/0.7.4 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/nom/7.1.3 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/peeking_take_while/0.1.2 \
+ crate://crates.io/pkg-config/0.3.27 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.2 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/rustc-hash/1.1.0 \
+ crate://crates.io/rustix/0.38.3 \
+ crate://crates.io/serde/1.0.168 \
+ crate://crates.io/shlex/1.1.0 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/strum/0.20.0 \
+ crate://crates.io/strum_macros/0.20.1 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/system-deps/2.0.3 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/toml/0.5.11 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/unicode-segmentation/1.10.1 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/version-compare/0.0.11 \
+ crate://crates.io/vhost/0.8.0 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/which/4.4.0 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+"
+
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.1.sha256sum] = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+SRC_URI[assert_matches-1.5.0.sha256sum] = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+SRC_URI[bindgen-0.63.0.sha256sum] = "36d860121800b2a9a94f9b5604b332d5cffb234ce17609ea479d723dbc9d3885"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cexpr-0.6.0.sha256sum] = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clang-sys-1.6.1.sha256sum] = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f"
+SRC_URI[clap-4.3.19.sha256sum] = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
+SRC_URI[clap_builder-4.3.19.sha256sum] = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[either-1.8.1.sha256sum] = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[errno-0.2.8.sha256sum] = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[glob-0.3.1.sha256sum] = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
+SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[intmap-2.0.0.sha256sum] = "ee87fd093563344074bacf24faa0bb0227fb6969fb223e922db798516de924d6"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[lazycell-1.3.0.sha256sum] = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[libgpiod-0.1.0.sha256sum] = "9e9fdf4b437063f5697151f9ead12bafa223958e243f2f736107ec68c2b88231"
+SRC_URI[libgpiod-sys-0.1.0.sha256sum] = "aa282e1da652deaeed776f6ef36d443689aeda19e5c0a3a2335c50b4611ce489"
+SRC_URI[libloading-0.7.4.sha256sum] = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[peeking_take_while-0.1.2.sha256sum] = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
+SRC_URI[pkg-config-0.3.27.sha256sum] = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.2.sha256sum] = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[rustc-hash-1.1.0.sha256sum] = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
+SRC_URI[rustix-0.38.3.sha256sum] = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+SRC_URI[serde-1.0.168.sha256sum] = "d614f89548720367ded108b3c843be93f3a341e22d5674ca0dd5cd57f34926af"
+SRC_URI[shlex-1.1.0.sha256sum] = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[strum-0.20.0.sha256sum] = "7318c509b5ba57f18533982607f24070a55d353e90d4cae30c467cdb2ad5ac5c"
+SRC_URI[strum_macros-0.20.1.sha256sum] = "ee8bc6b87a5112aeeab1f4a9f7ab634fe6cbefc4850006df31267f4cfb9e3149"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[system-deps-2.0.3.sha256sum] = "1b59b8aafd652f3c1469f16e6c223121e8a8dbe40c71475209c1401cff3a67ef"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[unicode-segmentation-1.10.1.sha256sum] = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[version-compare-0.0.11.sha256sum] = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b"
+SRC_URI[vhost-0.8.0.sha256sum] = "73832f4d8d636d63d9b145e8ef22a2c50b93f4d24eb7a99c9e6781b1b08549cf"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[which-4.4.0.sha256sum] = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
diff --git a/recipes-extended/vhost-device/vhost-device-gpio_0.1.0.bb b/recipes-extended/vhost-device/vhost-device-gpio_0.1.0.bb
new file mode 100644
index 00000000..79931163
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-gpio_0.1.0.bb
@@ -0,0 +1,22 @@
+SUMMARY = "vhost gpio backend device"
+DESCRIPTION = "A vhost-user backend that emulates a VirtIO GPIO device"
+HOMEPAGE = "https://github.com/rust-vmm/vhost-device"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = "\
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=2489db1359f496fff34bd393df63947e \
+"
+DEPENDS += "libgpiod"
+# libgpiod-sys generates bindings using bindgen, which depends on clang
+DEPENDS += "clang-native"
+
+SKIP_RECIPE[vhost-device-gpio] ?= "${@bb.utils.contains('BBFILE_COLLECTIONS', 'clang-layer', '', 'Depends on clang-native from meta-clang which is not included', d)}"
+
+SRC_URI += "crate://crates.io/vhost-device-gpio/0.1.0"
+SRC_URI[vhost-device-gpio-0.1.0.sha256sum] = "f4789dd127ce746d4f702d50256ff09e47b19fdb2bfee88a254b7e48efbf1100"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+inherit pkgconfig
+
+include vhost-device-gpio-crates.inc
diff --git a/recipes-extended/vhost-device/vhost-device-i2c-crates.inc b/recipes-extended/vhost-device/vhost-device-i2c-crates.inc
new file mode 100644
index 00000000..ba6a757d
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-i2c-crates.inc
@@ -0,0 +1,126 @@
+# Autogenerated with 'bitbake -c update_crates vhost-device-i2c'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.1 \
+ crate://crates.io/arc-swap/1.6.0 \
+ crate://crates.io/assert_matches/1.5.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/clap/4.3.19 \
+ crate://crates.io/clap_builder/4.3.19 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.2 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/rustix/0.38.3 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/vhost/0.8.0 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+"
+
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.1.sha256sum] = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+SRC_URI[assert_matches-1.5.0.sha256sum] = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[clap-4.3.19.sha256sum] = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
+SRC_URI[clap_builder-4.3.19.sha256sum] = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.2.sha256sum] = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[rustix-0.38.3.sha256sum] = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[vhost-0.8.0.sha256sum] = "73832f4d8d636d63d9b145e8ef22a2c50b93f4d24eb7a99c9e6781b1b08549cf"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
diff --git a/recipes-extended/vhost-device/vhost-device-i2c_0.1.0.bb b/recipes-extended/vhost-device/vhost-device-i2c_0.1.0.bb
new file mode 100644
index 00000000..c9179da3
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-i2c_0.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "vhost i2c backend device"
+DESCRIPTION = "A vhost-user backend that emulates a VirtIO I2C device"
+HOMEPAGE = "https://github.com/rust-vmm/vhost-device"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=2489db1359f496fff34bd393df63947e \
+"
+
+SRC_URI += "crate://crates.io/vhost-device-i2c/0.1.0"
+SRC_URI[vhost-device-i2c-0.1.0.sha256sum] = "a77923a4f161887ca2a19ead2d2f2271d62d1268e774265c42c277367f019a3f"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+
+include vhost-device-i2c-crates.inc
diff --git a/recipes-extended/vhost-device/vhost-device-rng-crates.inc b/recipes-extended/vhost-device/vhost-device-rng-crates.inc
new file mode 100644
index 00000000..5a50da3e
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-rng-crates.inc
@@ -0,0 +1,158 @@
+# Autogenerated with 'bitbake -c update_crates vhost-device-rng'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.1 \
+ crate://crates.io/arc-swap/1.6.0 \
+ crate://crates.io/assert_matches/1.5.0 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clap/4.3.19 \
+ crate://crates.io/clap_builder/4.3.19 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/epoll/4.3.3 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/getrandom/0.2.10 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/ppv-lite86/0.2.17 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/rand/0.8.5 \
+ crate://crates.io/rand_chacha/0.3.1 \
+ crate://crates.io/rand_core/0.6.4 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.2 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/rustix/0.37.23 \
+ crate://crates.io/rustix/0.38.3 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/tempfile/3.6.0 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/vhost/0.8.0 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+"
+
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.1.sha256sum] = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+SRC_URI[assert_matches-1.5.0.sha256sum] = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clap-4.3.19.sha256sum] = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
+SRC_URI[clap_builder-4.3.19.sha256sum] = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[epoll-4.3.3.sha256sum] = "74351c3392ea1ff6cd2628e0042d268ac2371cb613252ff383b6dfa50d22fa79"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[getrandom-0.2.10.sha256sum] = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[ppv-lite86-0.2.17.sha256sum] = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[rand-0.8.5.sha256sum] = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
+SRC_URI[rand_chacha-0.3.1.sha256sum] = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
+SRC_URI[rand_core-0.6.4.sha256sum] = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.2.sha256sum] = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[rustix-0.37.23.sha256sum] = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
+SRC_URI[rustix-0.38.3.sha256sum] = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[tempfile-3.6.0.sha256sum] = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[vhost-0.8.0.sha256sum] = "73832f4d8d636d63d9b145e8ef22a2c50b93f4d24eb7a99c9e6781b1b08549cf"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
diff --git a/recipes-extended/vhost-device/vhost-device-rng_0.1.0.bb b/recipes-extended/vhost-device/vhost-device-rng_0.1.0.bb
new file mode 100644
index 00000000..6e4cf824
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-rng_0.1.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "vhost rng backend device"
+DESCRIPTION = "A vhost-user backend that emulates a VirtIO random number \
+ generator device"
+HOMEPAGE = "https://github.com/rust-vmm/vhost-device"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=2489db1359f496fff34bd393df63947e \
+"
+
+SRC_URI += "crate://crates.io/vhost-device-rng/0.1.0"
+SRC_URI[vhost-device-rng-0.1.0.sha256sum] = "51e0af4acaaefc19a3d6c2e2cb00caf2130d728d857494c857662781da9f1329"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+
+include vhost-device-rng-crates.inc
diff --git a/recipes-extended/vhost-device/vhost-device-scsi-crates.inc b/recipes-extended/vhost-device/vhost-device-scsi-crates.inc
new file mode 100644
index 00000000..3f9a08b4
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-scsi-crates.inc
@@ -0,0 +1,166 @@
+# Autogenerated with 'bitbake -c update_crates vhost-device-scsi'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.1 \
+ crate://crates.io/arc-swap/1.6.0 \
+ crate://crates.io/assert_matches/1.5.0 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clap/4.3.19 \
+ crate://crates.io/clap_builder/4.3.19 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/epoll/4.3.3 \
+ crate://crates.io/equivalent/1.0.0 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/hashbrown/0.14.0 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/indexmap/2.0.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/num_enum/0.5.11 \
+ crate://crates.io/num_enum_derive/0.5.11 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/proc-macro-crate/1.3.1 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.2 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/rustix/0.37.23 \
+ crate://crates.io/rustix/0.38.3 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/1.0.109 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/tempfile/3.6.0 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/toml_datetime/0.6.3 \
+ crate://crates.io/toml_edit/0.19.12 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/vhost/0.8.0 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+ crate://crates.io/winnow/0.4.7 \
+"
+
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.1.sha256sum] = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+SRC_URI[assert_matches-1.5.0.sha256sum] = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clap-4.3.19.sha256sum] = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
+SRC_URI[clap_builder-4.3.19.sha256sum] = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[epoll-4.3.3.sha256sum] = "74351c3392ea1ff6cd2628e0042d268ac2371cb613252ff383b6dfa50d22fa79"
+SRC_URI[equivalent-1.0.0.sha256sum] = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[hashbrown-0.14.0.sha256sum] = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[indexmap-2.0.0.sha256sum] = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[num_enum-0.5.11.sha256sum] = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9"
+SRC_URI[num_enum_derive-0.5.11.sha256sum] = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[proc-macro-crate-1.3.1.sha256sum] = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.2.sha256sum] = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[rustix-0.37.23.sha256sum] = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
+SRC_URI[rustix-0.38.3.sha256sum] = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[tempfile-3.6.0.sha256sum] = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[toml_datetime-0.6.3.sha256sum] = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
+SRC_URI[toml_edit-0.19.12.sha256sum] = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[vhost-0.8.0.sha256sum] = "73832f4d8d636d63d9b145e8ef22a2c50b93f4d24eb7a99c9e6781b1b08549cf"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+SRC_URI[winnow-0.4.7.sha256sum] = "ca0ace3845f0d96209f0375e6d367e3eb87eb65d27d445bdc9f1843a26f39448"
diff --git a/recipes-extended/vhost-device/vhost-device-scsi_0.1.0.bb b/recipes-extended/vhost-device/vhost-device-scsi_0.1.0.bb
new file mode 100644
index 00000000..6c9b49fa
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-scsi_0.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "vhost scsi backend device"
+DESCRIPTION = "A vhost-user backend that emulates a VirtIO SCSI block device"
+HOMEPAGE = "https://github.com/rust-vmm/vhost-device"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=2489db1359f496fff34bd393df63947e \
+"
+
+SRC_URI += "crate://crates.io/vhost-device-scsi/0.1.0"
+SRC_URI[vhost-device-scsi-0.1.0.sha256sum] = "85e4abd5a07cb6abfe07b92e49c5cc81437058d7ec7beea441039e829cf82c22"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+
+include vhost-device-scsi-crates.inc
diff --git a/recipes-extended/vhost-device/vhost-device-vsock-crates.inc b/recipes-extended/vhost-device/vhost-device-vsock-crates.inc
new file mode 100644
index 00000000..4ea2baa0
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-vsock-crates.inc
@@ -0,0 +1,258 @@
+# Autogenerated with 'bitbake -c update_crates vhost-device-vsock'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/ahash/0.7.6 \
+ crate://crates.io/aho-corasick/1.0.2 \
+ crate://crates.io/anstream/0.3.2 \
+ crate://crates.io/anstyle/1.0.1 \
+ crate://crates.io/anstyle-parse/0.2.1 \
+ crate://crates.io/anstyle-query/1.0.0 \
+ crate://crates.io/anstyle-wincon/1.0.1 \
+ crate://crates.io/arc-swap/1.6.0 \
+ crate://crates.io/async-trait/0.1.71 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/base64/0.13.1 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/bitflags/2.3.3 \
+ crate://crates.io/block-buffer/0.10.4 \
+ crate://crates.io/byteorder/1.4.3 \
+ crate://crates.io/cc/1.0.79 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clap/4.3.19 \
+ crate://crates.io/clap_builder/4.3.19 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.0 \
+ crate://crates.io/colorchoice/1.0.0 \
+ crate://crates.io/config/0.13.3 \
+ crate://crates.io/cpufeatures/0.2.9 \
+ crate://crates.io/crypto-common/0.1.6 \
+ crate://crates.io/digest/0.10.7 \
+ crate://crates.io/dlv-list/0.3.0 \
+ crate://crates.io/env_logger/0.10.0 \
+ crate://crates.io/epoll/4.3.3 \
+ crate://crates.io/equivalent/1.0.0 \
+ crate://crates.io/errno/0.3.1 \
+ crate://crates.io/errno-dragonfly/0.1.2 \
+ crate://crates.io/fastrand/1.9.0 \
+ crate://crates.io/futures/0.3.28 \
+ crate://crates.io/futures-channel/0.3.28 \
+ crate://crates.io/futures-core/0.3.28 \
+ crate://crates.io/futures-executor/0.3.28 \
+ crate://crates.io/futures-io/0.3.28 \
+ crate://crates.io/futures-macro/0.3.28 \
+ crate://crates.io/futures-sink/0.3.28 \
+ crate://crates.io/futures-task/0.3.28 \
+ crate://crates.io/futures-util/0.3.28 \
+ crate://crates.io/generic-array/0.14.7 \
+ crate://crates.io/getrandom/0.2.10 \
+ crate://crates.io/hashbrown/0.12.3 \
+ crate://crates.io/hashbrown/0.14.0 \
+ crate://crates.io/heck/0.4.1 \
+ crate://crates.io/hermit-abi/0.3.2 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/indexmap/2.0.0 \
+ crate://crates.io/instant/0.1.12 \
+ crate://crates.io/io-lifetimes/1.0.11 \
+ crate://crates.io/is-terminal/0.4.9 \
+ crate://crates.io/itoa/1.0.8 \
+ crate://crates.io/json5/0.4.1 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/libc/0.2.147 \
+ crate://crates.io/linked-hash-map/0.5.6 \
+ crate://crates.io/linux-raw-sys/0.3.8 \
+ crate://crates.io/linux-raw-sys/0.4.3 \
+ crate://crates.io/log/0.4.19 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/minimal-lexical/0.2.1 \
+ crate://crates.io/nom/7.1.3 \
+ crate://crates.io/num_cpus/1.16.0 \
+ crate://crates.io/once_cell/1.18.0 \
+ crate://crates.io/ordered-multimap/0.4.3 \
+ crate://crates.io/pathdiff/0.2.1 \
+ crate://crates.io/pest/2.7.1 \
+ crate://crates.io/pest_derive/2.7.0 \
+ crate://crates.io/pest_generator/2.7.0 \
+ crate://crates.io/pest_meta/2.7.0 \
+ crate://crates.io/pin-project-lite/0.2.10 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/redox_syscall/0.3.5 \
+ crate://crates.io/regex/1.9.1 \
+ crate://crates.io/regex-automata/0.3.2 \
+ crate://crates.io/regex-syntax/0.7.4 \
+ crate://crates.io/ron/0.7.1 \
+ crate://crates.io/rust-ini/0.18.0 \
+ crate://crates.io/rustix/0.37.23 \
+ crate://crates.io/rustix/0.38.3 \
+ crate://crates.io/ryu/1.0.15 \
+ crate://crates.io/serde/1.0.168 \
+ crate://crates.io/serde_derive/1.0.168 \
+ crate://crates.io/serde_json/1.0.100 \
+ crate://crates.io/serde_yaml/0.9.22 \
+ crate://crates.io/sha2/0.10.7 \
+ crate://crates.io/slab/0.4.8 \
+ crate://crates.io/strsim/0.10.0 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/tempfile/3.6.0 \
+ crate://crates.io/termcolor/1.2.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/toml/0.5.11 \
+ crate://crates.io/typenum/1.16.0 \
+ crate://crates.io/ucd-trie/0.1.6 \
+ crate://crates.io/unicode-ident/1.0.11 \
+ crate://crates.io/unsafe-libyaml/0.2.8 \
+ crate://crates.io/utf8parse/0.2.1 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/vhost/0.8.0 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/virtio-vsock/0.3.1 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+ crate://crates.io/windows-sys/0.48.0 \
+ crate://crates.io/windows-targets/0.48.1 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.0 \
+ crate://crates.io/windows_aarch64_msvc/0.48.0 \
+ crate://crates.io/windows_i686_gnu/0.48.0 \
+ crate://crates.io/windows_i686_msvc/0.48.0 \
+ crate://crates.io/windows_x86_64_gnu/0.48.0 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.0 \
+ crate://crates.io/windows_x86_64_msvc/0.48.0 \
+ crate://crates.io/yaml-rust/0.4.5 \
+"
+
+SRC_URI[ahash-0.7.6.sha256sum] = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
+SRC_URI[aho-corasick-1.0.2.sha256sum] = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+SRC_URI[anstream-0.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+SRC_URI[anstyle-1.0.1.sha256sum] = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd"
+SRC_URI[anstyle-parse-0.2.1.sha256sum] = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333"
+SRC_URI[anstyle-query-1.0.0.sha256sum] = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b"
+SRC_URI[anstyle-wincon-1.0.1.sha256sum] = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188"
+SRC_URI[arc-swap-1.6.0.sha256sum] = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6"
+SRC_URI[async-trait-0.1.71.sha256sum] = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[base64-0.13.1.sha256sum] = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[bitflags-2.3.3.sha256sum] = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42"
+SRC_URI[block-buffer-0.10.4.sha256sum] = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
+SRC_URI[byteorder-1.4.3.sha256sum] = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
+SRC_URI[cc-1.0.79.sha256sum] = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clap-4.3.19.sha256sum] = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d"
+SRC_URI[clap_builder-4.3.19.sha256sum] = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.0.sha256sum] = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b"
+SRC_URI[colorchoice-1.0.0.sha256sum] = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
+SRC_URI[config-0.13.3.sha256sum] = "d379af7f68bfc21714c6c7dea883544201741d2ce8274bb12fa54f89507f52a7"
+SRC_URI[cpufeatures-0.2.9.sha256sum] = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
+SRC_URI[crypto-common-0.1.6.sha256sum] = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
+SRC_URI[digest-0.10.7.sha256sum] = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
+SRC_URI[dlv-list-0.3.0.sha256sum] = "0688c2a7f92e427f44895cd63841bff7b29f8d7a1648b9e7e07a4a365b2e1257"
+SRC_URI[env_logger-0.10.0.sha256sum] = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0"
+SRC_URI[epoll-4.3.3.sha256sum] = "74351c3392ea1ff6cd2628e0042d268ac2371cb613252ff383b6dfa50d22fa79"
+SRC_URI[equivalent-1.0.0.sha256sum] = "88bffebc5d80432c9b140ee17875ff173a8ab62faad5b257da912bd2f6c1c0a1"
+SRC_URI[errno-0.3.1.sha256sum] = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+SRC_URI[errno-dragonfly-0.1.2.sha256sum] = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf"
+SRC_URI[fastrand-1.9.0.sha256sum] = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
+SRC_URI[futures-0.3.28.sha256sum] = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40"
+SRC_URI[futures-channel-0.3.28.sha256sum] = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2"
+SRC_URI[futures-core-0.3.28.sha256sum] = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c"
+SRC_URI[futures-executor-0.3.28.sha256sum] = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0"
+SRC_URI[futures-io-0.3.28.sha256sum] = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964"
+SRC_URI[futures-macro-0.3.28.sha256sum] = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
+SRC_URI[futures-sink-0.3.28.sha256sum] = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e"
+SRC_URI[futures-task-0.3.28.sha256sum] = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65"
+SRC_URI[futures-util-0.3.28.sha256sum] = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533"
+SRC_URI[generic-array-0.14.7.sha256sum] = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
+SRC_URI[getrandom-0.2.10.sha256sum] = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
+SRC_URI[hashbrown-0.12.3.sha256sum] = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
+SRC_URI[hashbrown-0.14.0.sha256sum] = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a"
+SRC_URI[heck-0.4.1.sha256sum] = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"
+SRC_URI[hermit-abi-0.3.2.sha256sum] = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[indexmap-2.0.0.sha256sum] = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d"
+SRC_URI[instant-0.1.12.sha256sum] = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
+SRC_URI[io-lifetimes-1.0.11.sha256sum] = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
+SRC_URI[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+SRC_URI[itoa-1.0.8.sha256sum] = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
+SRC_URI[json5-0.4.1.sha256sum] = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.147.sha256sum] = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3"
+SRC_URI[linked-hash-map-0.5.6.sha256sum] = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
+SRC_URI[linux-raw-sys-0.3.8.sha256sum] = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
+SRC_URI[linux-raw-sys-0.4.3.sha256sum] = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+SRC_URI[log-0.4.19.sha256sum] = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[minimal-lexical-0.2.1.sha256sum] = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
+SRC_URI[nom-7.1.3.sha256sum] = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"
+SRC_URI[num_cpus-1.16.0.sha256sum] = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43"
+SRC_URI[once_cell-1.18.0.sha256sum] = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
+SRC_URI[ordered-multimap-0.4.3.sha256sum] = "ccd746e37177e1711c20dd619a1620f34f5c8b569c53590a72dedd5344d8924a"
+SRC_URI[pathdiff-0.2.1.sha256sum] = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd"
+SRC_URI[pest-2.7.1.sha256sum] = "0d2d1d55045829d65aad9d389139882ad623b33b904e7c9f1b10c5b8927298e5"
+SRC_URI[pest_derive-2.7.0.sha256sum] = "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b"
+SRC_URI[pest_generator-2.7.0.sha256sum] = "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190"
+SRC_URI[pest_meta-2.7.0.sha256sum] = "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0"
+SRC_URI[pin-project-lite-0.2.10.sha256sum] = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[redox_syscall-0.3.5.sha256sum] = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29"
+SRC_URI[regex-1.9.1.sha256sum] = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+SRC_URI[regex-automata-0.3.2.sha256sum] = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+SRC_URI[regex-syntax-0.7.4.sha256sum] = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2"
+SRC_URI[ron-0.7.1.sha256sum] = "88073939a61e5b7680558e6be56b419e208420c2adb92be54921fa6b72283f1a"
+SRC_URI[rust-ini-0.18.0.sha256sum] = "f6d5f2436026b4f6e79dc829837d467cc7e9a55ee40e750d716713540715a2df"
+SRC_URI[rustix-0.37.23.sha256sum] = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06"
+SRC_URI[rustix-0.38.3.sha256sum] = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+SRC_URI[ryu-1.0.15.sha256sum] = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
+SRC_URI[serde-1.0.168.sha256sum] = "d614f89548720367ded108b3c843be93f3a341e22d5674ca0dd5cd57f34926af"
+SRC_URI[serde_derive-1.0.168.sha256sum] = "d4fe589678c688e44177da4f27152ee2d190757271dc7f1d5b6b9f68d869d641"
+SRC_URI[serde_json-1.0.100.sha256sum] = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c"
+SRC_URI[serde_yaml-0.9.22.sha256sum] = "452e67b9c20c37fa79df53201dc03839651086ed9bbe92b3ca585ca9fdaa7d85"
+SRC_URI[sha2-0.10.7.sha256sum] = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
+SRC_URI[slab-0.4.8.sha256sum] = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
+SRC_URI[strsim-0.10.0.sha256sum] = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[tempfile-3.6.0.sha256sum] = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+SRC_URI[termcolor-1.2.0.sha256sum] = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[toml-0.5.11.sha256sum] = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
+SRC_URI[typenum-1.16.0.sha256sum] = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba"
+SRC_URI[ucd-trie-0.1.6.sha256sum] = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9"
+SRC_URI[unicode-ident-1.0.11.sha256sum] = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
+SRC_URI[unsafe-libyaml-0.2.8.sha256sum] = "1865806a559042e51ab5414598446a5871b561d21b6764f2eabb0dd481d880a6"
+SRC_URI[utf8parse-0.2.1.sha256sum] = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[vhost-0.8.0.sha256sum] = "73832f4d8d636d63d9b145e8ef22a2c50b93f4d24eb7a99c9e6781b1b08549cf"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[virtio-vsock-0.3.1.sha256sum] = "c92d1d0c0db339e03dc275e86e5de2654ed94b351f02d405a3a0260dfc1b839f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[wasi-0.11.0+wasi-snapshot-preview1.sha256sum] = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
+SRC_URI[windows-sys-0.48.0.sha256sum] = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9"
+SRC_URI[windows-targets-0.48.1.sha256sum] = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f"
+SRC_URI[windows_aarch64_gnullvm-0.48.0.sha256sum] = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc"
+SRC_URI[windows_aarch64_msvc-0.48.0.sha256sum] = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3"
+SRC_URI[windows_i686_gnu-0.48.0.sha256sum] = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241"
+SRC_URI[windows_i686_msvc-0.48.0.sha256sum] = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00"
+SRC_URI[windows_x86_64_gnu-0.48.0.sha256sum] = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1"
+SRC_URI[windows_x86_64_gnullvm-0.48.0.sha256sum] = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953"
+SRC_URI[windows_x86_64_msvc-0.48.0.sha256sum] = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
+SRC_URI[yaml-rust-0.4.5.sha256sum] = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
diff --git a/recipes-extended/vhost-device/vhost-device-vsock_0.1.0.bb b/recipes-extended/vhost-device/vhost-device-vsock_0.1.0.bb
new file mode 100644
index 00000000..12ef88f5
--- /dev/null
+++ b/recipes-extended/vhost-device/vhost-device-vsock_0.1.0.bb
@@ -0,0 +1,16 @@
+SUMMARY = "vhost vsock backend device"
+DESCRIPTION = "A vhost-user backend that emulates a VirtIO socket device"
+HOMEPAGE = "https://github.com/rust-vmm/vhost-device"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=2489db1359f496fff34bd393df63947e \
+"
+
+SRC_URI += "crate://crates.io/vhost-device-vsock/0.1.0"
+SRC_URI[vhost-device-vsock-0.1.0.sha256sum] = "b1b22596359e46c3986574707a0f616c6e200a6751adeaa353db8cfdbc0472f6"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+
+include vhost-device-vsock-crates.inc
diff --git a/recipes-extended/virt-manager/virt-manager/0001-setup.py-move-global-args-to-install-args.patch b/recipes-extended/virt-manager/virt-manager/0001-setup.py-move-global-args-to-install-args.patch
new file mode 100644
index 00000000..f0bbf73b
--- /dev/null
+++ b/recipes-extended/virt-manager/virt-manager/0001-setup.py-move-global-args-to-install-args.patch
@@ -0,0 +1,78 @@
+From bcdb3555b924573e85039b54d63d6173ad99b846 Mon Sep 17 00:00:00 2001
+From: Paul Le Guen de Kerneizon <paul.leguendekerneizon@savoirfairelinux.com>
+Date: Wed, 28 Feb 2024 10:24:00 +0100
+Subject: [PATCH] setup.py: move global args to install args
+
+Presently, during the installation process, global arguments such as
+`no-update-icon-cache` and `no-compile-schemas` are utilized to
+prevent the installation of specific graphical components. These
+arguments are essential, for instance, when installing virt-manager
+without any GUI dependencies on the target system. However, these
+global arguments must be set before the install command, yet they only
+take effect during the execution of the command.
+
+Since the Yocto `setuptools3_legacy` class parses arguments after the
+command, this commit aims to make these arguments applicable locally to
+the install command.
+
+Upstream-Status: Inappropriate [oe specific]
+
+Signed-off-by: Paul Le Guen de Kerneizon <paul.leguendekerneizon@savoirfairelinux.com>
+---
+ setup.py | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+diff --git a/setup.py b/setup.py
+index cd6cd83e..faca546a 100755
+--- a/setup.py
++++ b/setup.py
+@@ -242,6 +242,16 @@ class my_egg_info(setuptools.command.install_egg_info.install_egg_info):
+
+
+ class my_install(setuptools.command.install.install):
++ setuptools.command.install.install.user_options += [
++ ("no-update-icon-cache", None, "Don't run gtk-update-icon-cache"),
++ ("no-compile-schemas", None, "Don't compile gsettings schemas"),
++ ]
++
++ def initialize_options(self):
++ setuptools.command.install.install.initialize_options(self)
++ self.no_update_icon_cache = None
++ self.no_compile_schemas = None
++
+ """
+ Error if we weren't 'configure'd with the correct install prefix
+ """
+@@ -266,12 +276,12 @@ class my_install(setuptools.command.install.install):
+ def run(self):
+ setuptools.command.install.install.run(self)
+
+- if not self.distribution.no_update_icon_cache:
++ if not self.no_update_icon_cache:
+ print("running gtk-update-icon-cache")
+ icon_path = os.path.join(self.install_data, "share/icons/hicolor")
+ self.spawn(["gtk-update-icon-cache", "-q", "-t", icon_path])
+
+- if not self.distribution.no_compile_schemas:
++ if not self.no_compile_schemas:
+ print("compiling gsettings schemas")
+ gschema_install = os.path.join(self.install_data,
+ "share/glib-2.0/schemas")
+@@ -421,14 +431,8 @@ class CheckPylint(setuptools.Command):
+
+
+ class VMMDistribution(setuptools.dist.Distribution):
+- global_options = setuptools.dist.Distribution.global_options + [
+- ("no-update-icon-cache", None, "Don't run gtk-update-icon-cache"),
+- ("no-compile-schemas", None, "Don't compile gsettings schemas"),
+- ]
+
+ def __init__(self, *args, **kwargs):
+- self.no_update_icon_cache = False
+- self.no_compile_schemas = False
+ setuptools.dist.Distribution.__init__(self, *args, **kwargs)
+
+
+--
+2.34.1
+
diff --git a/recipes-extended/virt-manager/virt-manager_4.1.0.bb b/recipes-extended/virt-manager/virt-manager_4.1.0.bb
new file mode 100644
index 00000000..a2395012
--- /dev/null
+++ b/recipes-extended/virt-manager/virt-manager_4.1.0.bb
@@ -0,0 +1,54 @@
+DESCRIPTION = "virt-manager is a graphical tool for managing virtual machines via libvirt"
+HOMEPAGE = "https://virt-manager.org/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS += "python3-docutils-native"
+SRCREV = "6710ca6969b7d9c4e8344acd0fe3d50b24adc8ec"
+
+SRC_URI = " \
+ git://github.com/virt-manager/virt-manager;branch=main;protocol=https \
+ file://0001-setup.py-move-global-args-to-install-args.patch \
+"
+
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "gui"
+PACKAGECONFIG[gui] = ",--no-update-icon-cache --no-compile-schemas,python3-pygobject"
+
+inherit ${@bb.utils.contains('PACKAGECONFIG', 'gui', 'gtk-icon-cache', '', d)}
+inherit bash-completion gettext pkgconfig setuptools3_legacy
+
+PACKAGES += " \
+ ${PN}-common \
+ ${PN}-install \
+"
+
+RDEPENDS:${PN}-common += " \
+ libvirt-python \
+ libosinfo \
+"
+
+RDEPENDS:${PN} = "${PN}-common"
+RDEPENDS:${PN}-install = "${PN}-common"
+
+SETUPTOOLS_INSTALL_ARGS += "${PACKAGECONFIG_CONFARGS}"
+
+FILES:${PN} = " \
+ ${bindir}/virt-manager \
+ ${datadir}/icons/* \
+"
+
+FILES:${PN}-common = " \
+ ${libdir}/* \
+ ${libdir}/python3.10/* \
+ ${datadir}/applications \
+ ${datadir}/virt-manager \
+ ${datadir}/glib-2.0/* \
+ ${datadir}/metainfo/* \
+"
+
+FILES:${PN}-install = " \
+ ${bindir}/virt-clone \
+ ${bindir}/virt-install \
+ ${bindir}/virt-xml \
+"
diff --git a/recipes-extended/virt-viewer/virt-viewer_11.0.bb b/recipes-extended/virt-viewer/virt-viewer_11.0.bb
new file mode 100644
index 00000000..273e1fc5
--- /dev/null
+++ b/recipes-extended/virt-viewer/virt-viewer_11.0.bb
@@ -0,0 +1,38 @@
+SUMMARY = "Virtual Machine Viewer"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
+
+# for ovirt support librest-0.7 and libgovirt would be needed
+DEPENDS = " \
+ desktop-file-utils-native \
+ glib-2.0 \
+ gtk+3 \
+ libxml2 \
+"
+
+SRC_URI = "git://gitlab.com/virt-viewer/virt-viewer.git;protocol=https;branch=master"
+
+SRCREV = "de864c14146c120b46d435949b1d8d0b11e57b85"
+PV = "11.0+git"
+S = "${WORKDIR}/git"
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ?= "libvirt spice vte"
+
+PACKAGECONFIG[libvirt] = "-Dlibvirt=enabled,-Dlibvirt=disabled,libvirt libvirt-glib"
+PACKAGECONFIG[spice] = "-Dspice=enabled,-Dspice=disabled,spice-gtk spice-protocol"
+PACKAGECONFIG[vnc] = "-Dvnc=enabled,-Dvnc=disabled,gtk-vnc"
+PACKAGECONFIG[vte] = "-Dvte=enabled,-Dvte=disabled,vte"
+
+inherit meson pkgconfig gtk-icon-cache mime mime-xdg gobject-introspection features_check
+
+FILES:${PN} += "${datadir}"
+GIR_MESON_OPTION = ''
+
+do_compile:append() {
+ # glib-mkenums is embedding full paths into this file. There's no
+ # option to it to use a sysroot style variable. So to avoid QA
+ # errors, we sed WORKDIR out and make its includes relative
+ sed -i "s,${WORKDIR}/build/,," src/virt-viewer-enums.c
+}
diff --git a/recipes-extended/virt-what/virt-what_1.21.bb b/recipes-extended/virt-what/virt-what_1.21.bb
new file mode 100644
index 00000000..aa235b32
--- /dev/null
+++ b/recipes-extended/virt-what/virt-what_1.21.bb
@@ -0,0 +1,11 @@
+SUMMARY = "Detect if we are running in a virtual machine"
+HOMEPAGE = "https://people.redhat.com/~rjones/virt-what/"
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://people.redhat.com/~rjones/virt-what/files/${BP}.tar.gz"
+SRC_URI[sha256sum] = "12cb455334aa4cfd53ab78f27e2252e94d1f676dd093f48327ed94d8080d1f7b"
+
+DEPENDS = "perl-native"
+
+inherit autotools
diff --git a/recipes-extended/virtiofsd/README.md b/recipes-extended/virtiofsd/README.md
new file mode 100644
index 00000000..4bd96a0a
--- /dev/null
+++ b/recipes-extended/virtiofsd/README.md
@@ -0,0 +1,14 @@
+# virtiofsd: A virtio-fs vhost-user daemon
+
+[virtiofsd](https://gitlab.com/virtio-fs/virtiofsd) implements the
+[vhost-user protocol](https://qemu-project.gitlab.io/qemu/interop/vhost-user.html)
+and provides a virtio-fs virtio device that can share host directories with
+guests.
+
+## Updating the recipe
+
+1. Bump the version number to the newly published version listed on crates.io
+2. Regenerate the .inc file that lists the dependencies:
+ `bitbake -c update_crates virtiofsd`
+3. Review, build and test the changes
+
diff --git a/recipes-extended/virtiofsd/virtiofsd-crates.inc b/recipes-extended/virtiofsd/virtiofsd-crates.inc
new file mode 100644
index 00000000..c33e9a57
--- /dev/null
+++ b/recipes-extended/virtiofsd/virtiofsd-crates.inc
@@ -0,0 +1,142 @@
+# Autogenerated with 'bitbake -c update_crates virtiofsd'
+
+# from Cargo.lock
+SRC_URI += " \
+ crate://crates.io/aho-corasick/0.7.18 \
+ crate://crates.io/ansi_term/0.12.1 \
+ crate://crates.io/arc-swap/1.5.0 \
+ crate://crates.io/atty/0.2.14 \
+ crate://crates.io/autocfg/1.1.0 \
+ crate://crates.io/bitflags/1.3.2 \
+ crate://crates.io/capng/0.2.2 \
+ crate://crates.io/cfg-if/1.0.0 \
+ crate://crates.io/clap/2.34.0 \
+ crate://crates.io/env_logger/0.8.4 \
+ crate://crates.io/error-chain/0.12.4 \
+ crate://crates.io/futures/0.3.21 \
+ crate://crates.io/futures-channel/0.3.21 \
+ crate://crates.io/futures-core/0.3.21 \
+ crate://crates.io/futures-executor/0.3.21 \
+ crate://crates.io/futures-io/0.3.21 \
+ crate://crates.io/futures-macro/0.3.21 \
+ crate://crates.io/futures-sink/0.3.21 \
+ crate://crates.io/futures-task/0.3.21 \
+ crate://crates.io/futures-util/0.3.21 \
+ crate://crates.io/heck/0.3.3 \
+ crate://crates.io/hermit-abi/0.1.19 \
+ crate://crates.io/hostname/0.3.1 \
+ crate://crates.io/humantime/2.1.0 \
+ crate://crates.io/itoa/1.0.2 \
+ crate://crates.io/lazy_static/1.4.0 \
+ crate://crates.io/libc/0.2.139 \
+ crate://crates.io/libseccomp-sys/0.2.1 \
+ crate://crates.io/log/0.4.17 \
+ crate://crates.io/match_cfg/0.1.0 \
+ crate://crates.io/memchr/2.5.0 \
+ crate://crates.io/num_cpus/1.13.1 \
+ crate://crates.io/num_threads/0.1.6 \
+ crate://crates.io/pin-project-lite/0.2.9 \
+ crate://crates.io/pin-utils/0.1.0 \
+ crate://crates.io/proc-macro-error/1.0.4 \
+ crate://crates.io/proc-macro-error-attr/1.0.4 \
+ crate://crates.io/proc-macro2/1.0.63 \
+ crate://crates.io/quote/1.0.29 \
+ crate://crates.io/regex/1.6.0 \
+ crate://crates.io/regex-syntax/0.6.27 \
+ crate://crates.io/slab/0.4.7 \
+ crate://crates.io/strsim/0.8.0 \
+ crate://crates.io/structopt/0.3.26 \
+ crate://crates.io/structopt-derive/0.4.18 \
+ crate://crates.io/syn/1.0.98 \
+ crate://crates.io/syn/2.0.23 \
+ crate://crates.io/syslog/6.0.1 \
+ crate://crates.io/termcolor/1.1.3 \
+ crate://crates.io/textwrap/0.11.0 \
+ crate://crates.io/thiserror/1.0.41 \
+ crate://crates.io/thiserror-impl/1.0.41 \
+ crate://crates.io/time/0.3.11 \
+ crate://crates.io/unicode-ident/1.0.2 \
+ crate://crates.io/unicode-segmentation/1.9.0 \
+ crate://crates.io/unicode-width/0.1.9 \
+ crate://crates.io/vec_map/0.8.2 \
+ crate://crates.io/version_check/0.9.4 \
+ crate://crates.io/vhost/0.8.1 \
+ crate://crates.io/vhost-user-backend/0.10.0 \
+ crate://crates.io/virtio-bindings/0.2.1 \
+ crate://crates.io/virtio-queue/0.9.0 \
+ crate://crates.io/vm-memory/0.12.0 \
+ crate://crates.io/vmm-sys-util/0.11.1 \
+ crate://crates.io/winapi/0.3.9 \
+ crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+ crate://crates.io/winapi-util/0.1.5 \
+ crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+"
+
+SRC_URI[aho-corasick-0.7.18.sha256sum] = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
+SRC_URI[ansi_term-0.12.1.sha256sum] = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
+SRC_URI[arc-swap-1.5.0.sha256sum] = "c5d78ce20460b82d3fa150275ed9d55e21064fc7951177baacf86a145c4a4b1f"
+SRC_URI[atty-0.2.14.sha256sum] = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
+SRC_URI[autocfg-1.1.0.sha256sum] = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
+SRC_URI[bitflags-1.3.2.sha256sum] = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
+SRC_URI[capng-0.2.2.sha256sum] = "f6f8e9448233603643e42606121d95f5f8d4e015b3e7619a51593864dd902575"
+SRC_URI[cfg-if-1.0.0.sha256sum] = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
+SRC_URI[clap-2.34.0.sha256sum] = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
+SRC_URI[env_logger-0.8.4.sha256sum] = "a19187fea3ac7e84da7dacf48de0c45d63c6a76f9490dae389aead16c243fce3"
+SRC_URI[error-chain-0.12.4.sha256sum] = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+SRC_URI[futures-0.3.21.sha256sum] = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e"
+SRC_URI[futures-channel-0.3.21.sha256sum] = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010"
+SRC_URI[futures-core-0.3.21.sha256sum] = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3"
+SRC_URI[futures-executor-0.3.21.sha256sum] = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6"
+SRC_URI[futures-io-0.3.21.sha256sum] = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b"
+SRC_URI[futures-macro-0.3.21.sha256sum] = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512"
+SRC_URI[futures-sink-0.3.21.sha256sum] = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868"
+SRC_URI[futures-task-0.3.21.sha256sum] = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a"
+SRC_URI[futures-util-0.3.21.sha256sum] = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a"
+SRC_URI[heck-0.3.3.sha256sum] = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
+SRC_URI[hermit-abi-0.1.19.sha256sum] = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
+SRC_URI[hostname-0.3.1.sha256sum] = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867"
+SRC_URI[humantime-2.1.0.sha256sum] = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
+SRC_URI[itoa-1.0.2.sha256sum] = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d"
+SRC_URI[lazy_static-1.4.0.sha256sum] = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
+SRC_URI[libc-0.2.139.sha256sum] = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79"
+SRC_URI[libseccomp-sys-0.2.1.sha256sum] = "9a7cbbd4ad467251987c6e5b47d53b11a5a05add08f2447a9e2d70aef1e0d138"
+SRC_URI[log-0.4.17.sha256sum] = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
+SRC_URI[match_cfg-0.1.0.sha256sum] = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4"
+SRC_URI[memchr-2.5.0.sha256sum] = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
+SRC_URI[num_cpus-1.13.1.sha256sum] = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1"
+SRC_URI[num_threads-0.1.6.sha256sum] = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44"
+SRC_URI[pin-project-lite-0.2.9.sha256sum] = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
+SRC_URI[pin-utils-0.1.0.sha256sum] = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
+SRC_URI[proc-macro-error-1.0.4.sha256sum] = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
+SRC_URI[proc-macro-error-attr-1.0.4.sha256sum] = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
+SRC_URI[proc-macro2-1.0.63.sha256sum] = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb"
+SRC_URI[quote-1.0.29.sha256sum] = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+SRC_URI[regex-1.6.0.sha256sum] = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b"
+SRC_URI[regex-syntax-0.6.27.sha256sum] = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244"
+SRC_URI[slab-0.4.7.sha256sum] = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef"
+SRC_URI[strsim-0.8.0.sha256sum] = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
+SRC_URI[structopt-0.3.26.sha256sum] = "0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10"
+SRC_URI[structopt-derive-0.4.18.sha256sum] = "dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0"
+SRC_URI[syn-1.0.98.sha256sum] = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
+SRC_URI[syn-2.0.23.sha256sum] = "59fb7d6d8281a51045d62b8eb3a7d1ce347b76f312af50cd3dc0af39c87c1737"
+SRC_URI[syslog-6.0.1.sha256sum] = "978044cc68150ad5e40083c9f6a725e6fd02d7ba1bcf691ec2ff0d66c0b41acc"
+SRC_URI[termcolor-1.1.3.sha256sum] = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
+SRC_URI[textwrap-0.11.0.sha256sum] = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
+SRC_URI[thiserror-1.0.41.sha256sum] = "c16a64ba9387ef3fdae4f9c1a7f07a0997fce91985c0336f1ddc1822b3b37802"
+SRC_URI[thiserror-impl-1.0.41.sha256sum] = "d14928354b01c4d6a4f0e549069adef399a284e7995c7ccca94e8a07a5346c59"
+SRC_URI[time-0.3.11.sha256sum] = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217"
+SRC_URI[unicode-ident-1.0.2.sha256sum] = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7"
+SRC_URI[unicode-segmentation-1.9.0.sha256sum] = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99"
+SRC_URI[unicode-width-0.1.9.sha256sum] = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
+SRC_URI[vec_map-0.8.2.sha256sum] = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
+SRC_URI[version_check-0.9.4.sha256sum] = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
+SRC_URI[vhost-0.8.1.sha256sum] = "61957aeb36daf0b00b87fff9c10dd28a161bd35ab157553d340d183b3d8756e6"
+SRC_URI[vhost-user-backend-0.10.0.sha256sum] = "e3ea9d5e8ec847cde4df1c04e586698a479706fd6beca37323f9d425b24b4c2f"
+SRC_URI[virtio-bindings-0.2.1.sha256sum] = "c18d7b74098a946470ea265b5bacbbf877abc3373021388454de0d47735a5b98"
+SRC_URI[virtio-queue-0.9.0.sha256sum] = "35aca00da06841bd99162c381ec65893cace23ca0fb89254302cfe4bec4c300f"
+SRC_URI[vm-memory-0.12.0.sha256sum] = "a77c7a0891cbac53618f5f6eec650ed1dc4f7e506bbe14877aff49d94b8408b0"
+SRC_URI[vmm-sys-util-0.11.1.sha256sum] = "dd64fe09d8e880e600c324e7d664760a17f56e9672b7495a86381b49e4f72f46"
+SRC_URI[winapi-0.3.9.sha256sum] = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
+SRC_URI[winapi-i686-pc-windows-gnu-0.4.0.sha256sum] = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
+SRC_URI[winapi-util-0.1.5.sha256sum] = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
+SRC_URI[winapi-x86_64-pc-windows-gnu-0.4.0.sha256sum] = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
diff --git a/recipes-extended/virtiofsd/virtiofsd_1.7.0.bb b/recipes-extended/virtiofsd/virtiofsd_1.7.0.bb
new file mode 100644
index 00000000..b8a93820
--- /dev/null
+++ b/recipes-extended/virtiofsd/virtiofsd_1.7.0.bb
@@ -0,0 +1,21 @@
+SUMMARY = "virtio-fs vhost-user daemon"
+DESCRIPTION = "A daemon that allows sharing of folders with a VM via virtio-fs"
+HOMEPAGE = "https://gitlab.com/virtio-fs/virtiofsd"
+LICENSE = "Apache-2.0 | BSD-3-Clause"
+LIC_FILES_CHKSUM = " \
+ file://LICENSE-APACHE;md5=3b83ef96387f14655fc854ddc3c6bd57 \
+ file://LICENSE-BSD-3-Clause;md5=b1ed361f9fc790c1054d81a7ef041a34 \
+"
+
+DEPENDS = "libseccomp libcap-ng"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES = "seccomp"
+
+SRC_URI += "crate://crates.io/virtiofsd/1.7.0"
+SRC_URI[virtiofsd-1.7.0.sha256sum] = "6f043afa23aedbb18f36084b9df831796a9e4c62e73a16fe557de0cf30d7708d"
+
+inherit cargo
+inherit cargo-update-recipe-crates
+
+include virtiofsd-crates.inc
diff --git a/recipes-extended/xen/README b/recipes-extended/xen/README
index 3686530c..b9117f0c 100644
--- a/recipes-extended/xen/README
+++ b/recipes-extended/xen/README
@@ -1,7 +1,9 @@
Xen
---
-For any issues with the xen recipes please make sure you CC cardoe@gentoo.org
+For any issues with the Xen recipes please make sure you CC:
+ christopher.w.clark@gmail.com
+ cardoe@gentoo.org
configuring the hypervisor
--------------------------
@@ -14,6 +16,18 @@ copy it to your Yocto layer as 'defconfig' inside of
'recipes-extended/xen/files/' and then create a bbappend adding
'file://defconfig' to your SRC_URI.
+To generate your own .config file for Xen, you can use the interactive
+menuconfig via bitbake:
+
+ bitbake xen -c menuconfig
+
+Select the config settings that you want and Save the file. If you save it to
+the default ".config" file when prompted by menuconfig, you can find it in the
+'xen' subdirectory of the build tree.
+
+Configuration fragments are also supported. To use them you need to list the
+.cfg files in the SRC_URI.
+
security patches
----------------
@@ -22,3 +36,53 @@ as XSAs (http://xenbits.xen.org/xsa/). The easiest way to include those is to
drop patches in 'recipes-extened/xen/files' and create a bbappend adding those
patches to SRC_URI and they will be applied. Alternatively, you can override
the SRC_URI to a git repo you provide that contains the patches.
+
+recipe maintenance
+------------------
+
+# Xen version update
+
+The following rules shall be followed to define which versions of Xen have
+recipes in meta-virtualization:
+
+- Before a Yocto release meta-virtualization shall have recipes for:
+ - the latest stable major version of Xen, and
+
+ - the current version of the Xen master branch (known as the git recipes)
+
+ - In addition, there may also be recipes included for the previous stable
+ major version of Xen, in the case where the latest stable major version
+ is new and the prior stable major version of Xen is to be the preferred
+ version for the Yocto release
+
+- On Yocto LTS and the latest stable Yocto release branch, the preferred Xen
+ major version that is present when the Yocto release is issued must stay
+ supported and the recipes shall be regularly updated to follow updates
+ available in the Xen stable branch for that Xen major release.
+
+- On Yocto LTS and the latest stable Yocto release branch, the recipes for the
+ latest Xen major version shall also be regularly updated to follow updates
+ available in the Xen stable branch for that Xen major release.
+
+- On the master / in-development Yocto branch, new Xen recipes shall be added
+ when there is a new Xen major release.
+
+ - depending on the timing of the next Yocto release, the new recipes may
+ be preferred, or the prior major version recipes may remain preferred
+ until after the Yocto release
+
+ - the recipes for the previous Xen stable major version shall be removed
+ from the branch when it is no longer the preferred Xen version
+
+- On Yocto LTS and the latest stable Yocto release branch, new Xen recipes
+ shall be added when there is a new Xen major release.
+
+ - The preferred version of the Xen recipes shall always stay at the same
+ Xen major version once a Yocto release has been issued, and shall receive
+ regular updates to track the stable Xen branch of that Xen release.
+
+ - When new Xen recipes are added to a Yocto branch for a new Xen major
+ version, then any older Xen recipes present, except for the original
+ preferred version recipes, shall be marked as not updated anymore by
+ adding a comment inside the recipes. The older recipes will not receive
+ any build tests or be updated to follow the Xen branch.
diff --git a/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch b/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
new file mode 100644
index 00000000..b8711756
--- /dev/null
+++ b/recipes-extended/xen/files/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch
@@ -0,0 +1,57 @@
+From b300c18ab899b3c899e5405c96c20a32e51d77c8 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Mon, 2 Jul 2018 23:10:28 -0400
+Subject: [PATCH] xen: Fix menuconfig and add support for config fragments and
+
+Upstream-Status: Inappropriate [oe specific, cross compile issue]
+
+Signed-off-by: Diego Sueiro <diego.sueiro@arm.com>
+commit e6972e689a980ab28637e94e48c77eeace6abde5
+
+ xen/kconfig,menuconfig,mconf-cfg: Allow specification of ncurses location
+
+ In some cross build environments such as the Yocto Project build
+ environment it provides an ncurses library that is compiled
+ differently than the host's version. This causes display corruption
+ problems when the host's curses includes are used instead of the
+ includes from the provided compiler are overridden. There is a second
+ case where there is no curses libraries at all on the host system and
+ menuconfig will just fail entirely.
+
+ The solution is simply to allow an override variable in
+ check-lxdialog.sh for environments such as the Yocto Project. Adding
+ a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
+ compiling and linking against the right headers and libraries.
+
+ Change-Id: Ibe8dfafc90655e3be2671dbbb0cb7f5631fc4d44
+ Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+ cc: Michal Marek <mmarek@suse.cz>
+ cc: linux-kbuild@vger.kernel.org
+ Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+
+---
+ xen/tools/kconfig/mconf-cfg.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+ mode change 100755 => 100644 xen/tools/kconfig/mconf-cfg.sh
+
+diff --git a/xen/tools/kconfig/mconf-cfg.sh b/xen/tools/kconfig/mconf-cfg.sh
+old mode 100755
+new mode 100644
+index c812872d7f..56eb4fc79f
+--- a/xen/tools/kconfig/mconf-cfg.sh
++++ b/xen/tools/kconfig/mconf-cfg.sh
+@@ -4,6 +4,14 @@
+ PKG="ncursesw"
+ PKG2="ncurses"
+
++if [ "$CROSS_CURSES_LIB" != "" ]; then
++ echo libs=\'$CROSS_CURSES_LIB\'
++ if [ x"$CROSS_CURSES_INC" != x ]; then
++ echo cflags=\'$CROSS_CURSES_INC\'
++ fi
++ exit 0
++fi
++
+ if [ -n "$(command -v pkg-config)" ]; then
+ if pkg-config --exists $PKG; then
+ echo cflags=\"$(pkg-config --cflags $PKG)\"
diff --git a/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch
new file mode 100644
index 00000000..476f5ddc
--- /dev/null
+++ b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch
@@ -0,0 +1,73 @@
+From 6db88791d923167f160afbcadeffad84a4cbdbc5 Mon Sep 17 00:00:00 2001
+Message-Id: <6db88791d923167f160afbcadeffad84a4cbdbc5.1612262706.git.bertrand.marquis@arm.com>
+From: Maciej Pijanowski <maciej.pijanowski@3mdeb.com>
+Date: Fri, 19 Oct 2018 11:01:37 +0200
+Subject: [PATCH] python,pygrub: pass DISTUTILS env vars as setup.py args
+
+Upstream-Status: Inappropriate [oe specific, python install issues]
+
+Allow to respect the target install dir (PYTHON_SITEPACKAGES_DIR)
+as well as other parameters set by the OpenEmbedded build system.
+This is especially useful when the target libdir is not the default one
+(/usr/lib), but for example /usr/lib64.
+
+Signed-off-by: Maciej Pijanowski <maciej.pijanowski@3mdeb.com>
+
+Forward-ported to Xen 4.12.0
+Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+
+Modified to support pygrub installation with python 3
+Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+
+Forward-ported to Xen 4.14.0
+Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
+
+Forward-ported to Xen 4.15.0
+Signed-off-by: Bertrand Marquis <bertrand.marquis@arm.com>
+
+---
+ tools/pygrub/Makefile | 7 +++++--
+ tools/python/Makefile | 2 +-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile
+index 37b2146214..ffb9270065 100644
+--- a/tools/pygrub/Makefile
++++ b/tools/pygrub/Makefile
+@@ -10,7 +10,7 @@ INSTALL_LOG = build/installed_files.txt
+ all: build
+ .PHONY: build
+ build:
+- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build
++ CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build $(DISTUTILS_BUILD_ARGS)
+
+ .PHONY: install
+ install: all
+@@ -18,7 +18,10 @@ install: all
+ CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" \
+ LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py install \
+ --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
+- --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force
++ --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force \
++ $(DISTUTILS_INSTALL_ARGS)
++ rm -f $(DESTDIR)/$(LIBEXEC_BIN)/pygrub
++ $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(LIBEXEC_BIN)/pygrub
+ set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \
+ "`readlink -f $(DESTDIR)/$(bindir)`" != \
+ "`readlink -f $(LIBEXEC_BIN)`" ]; then \
+diff --git a/tools/python/Makefile b/tools/python/Makefile
+index cc76423647..5cb11ae453 100644
+--- a/tools/python/Makefile
++++ b/tools/python/Makefile
+@@ -12,7 +12,7 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA
+ SHLIB_libxenctrl="$(SHLIB_libxenctrl)" \
+ SHLIB_libxenguest="$(SHLIB_libxenguest)" \
+ SHLIB_libxenstore="$(SHLIB_libxenstore)" \
+- $(PYTHON) setup.py
++ $(PYTHON) setup.py $(DISTUTILS_BUILD_ARGS)
+
+ .PHONY: build
+ build:
+--
+2.17.1
+
diff --git a/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch
new file mode 100644
index 00000000..7ac1a399
--- /dev/null
+++ b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch
@@ -0,0 +1,43 @@
+Upstream-Status: Pending
+
+diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile
+index 4963bc89c6..c1c05eb421 100644
+--- a/tools/pygrub/Makefile
++++ b/tools/pygrub/Makefile
+@@ -13,14 +13,14 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA
+ all: build
+ .PHONY: build
+ build:
+- $(setup.py) build
++ $(setup.py) build $(DISTUTILS_BUILD_ARGS)
+
+ .PHONY: install
+ install: all
+ $(INSTALL_DIR) $(DESTDIR)/$(bindir)
+ $(INSTALL_DIR) $(DESTDIR)/$(LIBEXEC_BIN)
+ $(setup.py) install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
+- --root="$(DESTDIR)" --force
++ --root="$(DESTDIR)" --force $(DISTUTILS_INSTALL_ARGS)
+ $(INSTALL_PYTHON_PROG) src/pygrub $(DESTDIR)/$(LIBEXEC_BIN)/pygrub
+ set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \
+ "`readlink -f $(DESTDIR)/$(bindir)`" != \
+diff --git a/tools/python/Makefile b/tools/python/Makefile
+index 437431c48e..0a99c2067e 100644
+--- a/tools/python/Makefile
++++ b/tools/python/Makefile
+@@ -16,13 +16,13 @@ setup.py = CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDSHARED="$(CC)" LDFLAGS="$(PY_LDFLA
+
+ .PHONY: build
+ build:
+- $(setup.py) build
++ $(setup.py) build $(DISTUTILS_BUILD_ARGS)
+
+ .PHONY: install
+ install:
+ $(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
+ $(setup.py) install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
+- --root="$(DESTDIR)" --force
++ --root="$(DESTDIR)" --force $(DISTUTILS_INSTALL_ARGS)
+ $(INSTALL_PYTHON_PROG) scripts/convert-legacy-stream $(DESTDIR)$(LIBEXEC_BIN)
+ $(INSTALL_PYTHON_PROG) scripts/verify-stream-v2 $(DESTDIR)$(LIBEXEC_BIN)
+
diff --git a/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch
deleted file mode 100644
index 6504d86e..00000000
--- a/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From d79dcc2002008c58683de82f06c168d6eea57991 Mon Sep 17 00:00:00 2001
-From: Maciej Pijanowski <maciej.pijanowski@3mdeb.com>
-Date: Fri, 19 Oct 2018 11:01:37 +0200
-Subject: [PATCH] python,pygrub: pass DISTUTILS env vars as setup.py args
-
-Allow to respect the target install dir (PYTHON_SITEPACKAGES_DIR)
-as well as other parameters set by the OpenEmbedded build system.
-This is especially useful when the target libdir is not the default one
-(/usr/lib), but for example /usr/lib64.
-
-Signed-off-by: Maciej Pijanowski <maciej.pijanowski@3mdeb.com>
-
-Forward-ported to Xen 4.12.0
-Signed-off-by: Christopher Clark <christopher.clark6@baesystems.com>
-
-diff --git a/tools/pygrub/Makefile b/tools/pygrub/Makefile
-index 3063c49..513314b 100644
---- a/tools/pygrub/Makefile
-+++ b/tools/pygrub/Makefile
-@@ -10,14 +10,15 @@ INSTALL_LOG = build/installed_files.txt
- all: build
- .PHONY: build
- build:
-- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build
-+ CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) setup.py build $(DISTUTILS_BUILD_ARGS)
-
- .PHONY: install
- install: all
- $(INSTALL_DIR) $(DESTDIR)/$(bindir)
- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) \
- setup.py install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
-- --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force
-+ --root="$(DESTDIR)" --install-scripts=$(LIBEXEC_BIN) --force \
-+ $(DISTUTILS_INSTALL_ARGS)
- set -e; if [ $(bindir) != $(LIBEXEC_BIN) -a \
- "`readlink -f $(DESTDIR)/$(bindir)`" != \
- "`readlink -f $(LIBEXEC_BIN)`" ]; then \
-diff --git a/tools/python/Makefile b/tools/python/Makefile
-index 541858e..4d4a344 100644
---- a/tools/python/Makefile
-+++ b/tools/python/Makefile
-@@ -10,7 +10,7 @@ INSTALL_LOG = build/installed_files.txt
-
- .PHONY: build
- build:
-- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" $(PYTHON) setup.py build
-+ CC="$(CC)" CFLAGS="$(PY_CFLAGS)" $(PYTHON) setup.py build $(DISTUTILS_BUILD_ARGS)
-
- .PHONY: install
- install:
-@@ -18,7 +18,7 @@ install:
-
- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) \
- setup.py install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
-- --root="$(DESTDIR)" --force
-+ --root="$(DESTDIR)" --force $(DISTUTILS_INSTALL_ARGS)
-
- $(INSTALL_PROG) scripts/convert-legacy-stream $(DESTDIR)$(LIBEXEC_BIN)
- $(INSTALL_PROG) scripts/verify-stream-v2 $(DESTDIR)$(LIBEXEC_BIN)
diff --git a/recipes-extended/xen/files/0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch b/recipes-extended/xen/files/0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch
new file mode 100644
index 00000000..bf99f5e8
--- /dev/null
+++ b/recipes-extended/xen/files/0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch
@@ -0,0 +1,34 @@
+From c7c43c4531fe1cd188f62d9905c3f5c7a29a6fb0 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 12 Apr 2023 10:30:18 +0200
+Subject: [PATCH] tools/xenstore/xenstored_control.c: correctly print time_t
+
+On 32 bit systems with 64 bit time_t (hello, Y2038 problem),
+the following error occurs otherwise:
+
+| xenstored_control.c: In function 'lu_reject_reason':
+| xenstored_control.c:646:70: error: format '%ld' expects argument of type 'long int', but argument 5 has type 'time_t' {aka 'long long int'} [-Werror=format=]
+
+Upstream-Status: Submitted [by email to xen-devel@lists.xenproject.org and maintainers as suggested by add_maintainers.pl script]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ tools/xenstore/xenstored_control.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/xenstore/xenstored_control.c b/tools/xenstore/xenstored_control.c
+index d1aaa00bf4..8d318c0399 100644
+--- a/tools/xenstore/xenstored_control.c
++++ b/tools/xenstore/xenstored_control.c
+@@ -643,10 +643,10 @@ static const char *lu_reject_reason(const void *ctx)
+ list_for_each_entry(conn, &connections, list) {
+ if (conn->ta_start_time &&
+ (now - conn->ta_start_time >= lu_status->timeout)) {
+- ret = talloc_asprintf(ctx, "%s\nDomain %u: %ld s",
++ ret = talloc_asprintf(ctx, "%s\nDomain %u: %jd s",
+ ret ? : "Domains with long running transactions:",
+ conn->id,
+- now - conn->ta_start_time);
++ (intmax_t)now - conn->ta_start_time);
+ }
+ }
+
diff --git a/recipes-extended/xen/xen-blktap.inc b/recipes-extended/xen/xen-blktap.inc
new file mode 100644
index 00000000..2c8cb1fd
--- /dev/null
+++ b/recipes-extended/xen/xen-blktap.inc
@@ -0,0 +1,76 @@
+# The Xen block tap components are packaged separately here to support
+# the option to build them in a separate recipe from xen-tools.
+
+BLKTAP_PACKAGES ?= " \
+ ${PN}-blktap \
+ ${PN}-libblktap \
+ ${PN}-libblktapctl \
+ ${PN}-libblktapctl-dev \
+ ${PN}-libblktap-dev \
+ ${PN}-libvhd \
+ ${PN}-libvhd-dev \
+ ${PN}-blktap-staticdev \
+ "
+
+BLKTAP_PROVIDES ?= " \
+ virtual/blktap \
+ virtual/libblktap \
+ virtual/libblktapctl \
+ virtual/libvhd \
+ "
+
+BLKTAP_RRECOMMENDS ?= " \
+ virtual-blktap \
+ virtual-libblktap \
+ virtual-libblktapctl \
+ virtual-libvhd \
+ "
+
+RPROVIDES:${PN}-blktap = "virtual-blktap"
+RPROVIDES:${PN}-libblktap = "virtual-libblktap"
+RPROVIDES:${PN}-libblktapctl = "virtual-libblktapctl"
+RPROVIDES:${PN}-libvhd = "virtual-libvhd"
+
+FILES:${PN}-blktap-staticdev += "\
+ ${libdir}/libblktapctl.a \
+ ${libdir}/libvhd.a \
+ ${libdir}/libblktap.a \
+ "
+
+FILES:${PN}-libblktapctl = "${libdir}/libblktapctl.so.*"
+FILES:${PN}-libblktapctl-dev = " \
+ ${libdir}/libblktapctl.so \
+ ${libdir}/pkgconfig/xenblktapctl.pc \
+ ${datadir}/pkgconfig/xenblktapctl.pc \
+ "
+
+FILES:${PN}-libvhd = "${libdir}/libvhd.so.*"
+FILES:${PN}-libvhd-dev = " \
+ ${libdir}/libvhd.so \
+ ${libdir}/pkgconfig/vhd.pc \
+ ${datadir}/pkgconfig/vhd.pc \
+ "
+
+FILES:${PN}-libblktap = "${libdir}/libblktap.so.*"
+FILES:${PN}-libblktap-dev = " \
+ ${libdir}/libblktap.so \
+ ${libdir}/pkgconfig/blktap.pc \
+ ${datadir}/pkgconfig/blktap.pc \
+ "
+
+FILES:${PN}-blktap = "\
+ ${sbindir}/blktapctrl \
+ ${sbindir}/img2qcow \
+ ${sbindir}/lock-util \
+ ${sbindir}/qcow2raw \
+ ${sbindir}/qcow-create \
+ ${sbindir}/tap-ctl \
+ ${sbindir}/tapdisk \
+ ${sbindir}/tapdisk2 \
+ ${sbindir}/tapdisk-client \
+ ${sbindir}/tapdisk-diff \
+ ${sbindir}/tapdisk-stream \
+ ${sbindir}/td-util \
+ ${sbindir}/vhd-update \
+ ${sbindir}/vhd-util \
+ "
diff --git a/recipes-extended/xen/xen-hypervisor.inc b/recipes-extended/xen/xen-hypervisor.inc
new file mode 100644
index 00000000..6f3d24d0
--- /dev/null
+++ b/recipes-extended/xen/xen-hypervisor.inc
@@ -0,0 +1,117 @@
+SUMMARY = "Xen hypervisor"
+DESCRIPTION = "The Xen hypervisor"
+
+# This recipe is for just the Xen hypervisor.
+# Separate recipes are used to build Xen and its components:
+# this allows for varying the target architecture or toolchain used
+# to build the different components. eg. 32-bit tools and a 64-bit hypervisor.
+
+# The Xen hypervisor has a narrower compatible platform range than the Xen tools
+COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi'
+
+inherit deploy python3native cml1
+
+PACKAGES = " \
+ ${PN} \
+ ${PN}-dbg \
+ ${PN}-efi \
+ "
+
+FILES:${PN} = " \
+ /boot/xen-* \
+ /boot/xen \
+ /boot/xen-*.gz \
+ /boot/xen.gz \
+ /boot/xen-syms-* \
+ "
+
+FILES:${PN}-dbg += "${libdir}/debug/*"
+
+FILES:${PN}-efi = " \
+ /boot/xen.efi \
+ ${exec_prefix}/lib64/efi/xen* \
+ "
+
+do_configure() {
+ do_configure_common
+
+ # Handle the config fragments
+ cfgs="${@' '.join(find_cfgs(d))}"
+ if [ -n "${cfgs}" ]; then
+ # If .config is not present generate one in order
+ # to use the merge_config.sh
+ if [ ! -f "${S}/xen/.config" ] ; then
+ oe_runmake -C ${S}/xen defconfig
+ fi
+ ${S}/xen/tools/kconfig/merge_config.sh -m -O \
+ ${S}/xen ${S}/xen/.config "${cfgs}"
+ fi
+}
+
+# The hypervisor binary for arm must not be built with the hard floating point
+# ABI. Override CC and CPP when invoking make so that they do not contain
+# TUNE_CCARGS.
+EXTRA_OEMAKE:arm += "CC='${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} \
+ ${CC_REPRODUCIBLE_OPTIONS}' \
+ CPP='${CCACHE}${HOST_PREFIX}gcc -E ${TOOLCHAIN_OPTIONS} \
+ ${CC_REPRODUCIBLE_OPTIONS}'"
+
+do_compile() {
+ oe_runmake xen PYTHON="${PYTHON}" \
+ EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}"
+}
+
+do_install() {
+ oe_runmake DESTDIR="${D}" install-xen
+}
+# The do_install also ships files in /boot and /usr/lib64
+SYSROOT_DIRS += "/boot ${exec_prefix}/lib64"
+
+do_deploy() {
+ install -d ${DEPLOYDIR}
+
+ if [ -f ${B}/xen/xen ]; then
+ install -m 0644 ${B}/xen/xen ${DEPLOYDIR}/xen-${MACHINE}
+ fi
+
+ if [ -f ${B}/xen/xen.gz ]; then
+ install -m 0644 ${B}/xen/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz
+ fi
+
+ if [ -f ${B}/xen/xen.efi ]; then
+ install -m 0644 ${B}/xen/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi
+ fi
+}
+# Scheduling the do_deploy task:
+# - deploy copies files from ${B} that are written during do_compile so must
+# at least run afer that task has completed
+# - the hypervisor binaries may be included in the image filesystem, so we
+# must ensure that the binaries deployed match what is staged in the sysroot:
+# so do_deploy must run after do_populate_sysroot and after do_compile is
+# also needed for when having rm_work and bitbake needs to re-run do_deploy,
+# we ensure that the ${B} is re-generated, otherwise the deploy-xen will be
+# empty
+# - add the task before do_build to ensure that deployment has completed when
+# the recipe build done stamp is written
+addtask deploy after do_compile do_populate_sysroot before do_build
+# To ensure that a deployed hypervisor has matching tools, add a dependency to
+# make sure that the tools have built and been staged:
+do_deploy[depends] += "xen-tools:do_populate_sysroot"
+# Also ensure anything that the tools recipe needs to deploy, such as a
+# XSM policy file, has been deployed first:
+do_deploy[depends] += "xen-tools:do_deploy"
+
+# Enable use of menuconfig directly from bitbake and also within the devshell
+do_devshell[depends] += "ncurses-native:do_populate_sysroot"
+
+# Pass the native library path for kconfig build when running the do_menuconfig
+# task
+CROSS_CURSES_LIB += "-L${STAGING_LIBDIR_NATIVE}"
+
+# Specify the root dir of the .config file for do_menuconfig and do_diffconfig
+# tasks
+KCONFIG_CONFIG_ROOTDIR = "${S}/xen"
+
+# Xen is setting all CC flags on its own. Make sure that they are not modified
+# for aarch64, e.g. with architecture-specific optimizations.
+TUNE_CCARGS:aarch64=""
diff --git a/recipes-extended/xen/xen-tools.inc b/recipes-extended/xen/xen-tools.inc
new file mode 100644
index 00000000..5f010a5d
--- /dev/null
+++ b/recipes-extended/xen/xen-tools.inc
@@ -0,0 +1,859 @@
+SUMMARY = "Xen hypervisor tools"
+DESCRIPTION = "Tools and utility software for the Xen hypervisor"
+
+COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi'
+
+inherit setuptools3 update-rc.d systemd deploy
+require xen-blktap.inc
+
+RDEPENDS:${PN} = "\
+ bash perl xz \
+ ${PN}-console \
+ ${PN}-libxenguest \
+ ${PN}-libxenlight \
+ ${PN}-libxenvchan \
+ ${PN}-libxenctrl \
+ ${PN}-libxlutil \
+ ${PN}-libxenstat \
+ ${PN}-libxenstore \
+ ${PN}-libfsimage \
+ ${PN}-fsimage \
+ ${PN}-scripts-block \
+ ${PN}-scripts-network \
+ ${PN}-xen-watchdog \
+ ${PN}-xencommons \
+ ${PN}-xendomains \
+ ${PN}-xenstore \
+ virtual-xenstored \
+ ${PN}-xl \
+ "
+
+RDEPENDS:${PN}-dev = ""
+
+RRECOMMENDS:${PN} = " \
+ qemu \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'vmsep', 'qemu-x86_64 qemu-i386', '', d)} \
+ ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'seabios ipxe vgabios', '', d)} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_RRECOMMENDS}', d)} \
+ ${PN}-flask \
+ ${PN}-hvmloader \
+ ${PN}-libxenhypfs \
+ ${PN}-shim \
+ ${PN}-ucode \
+ ${PN}-vchan \
+ ${PN}-xenpaging \
+ ${PN}-xenhypfs \
+ "
+
+RDEPENDS:${PN}-devd = " \
+ ${PN}-xl \
+ "
+
+RDEPENDS:${PN}-fsimage = " \
+ libext2fs \
+ "
+
+RDEPENDS:${PN}-misc = " \
+ perl \
+ python3 \
+ ${PN}-xencov \
+ "
+
+RSUGGESTS:${PN}-misc = " \
+ ${PN}-xencons \
+ ${PN}-xenpvnetboot \
+ "
+
+RDEPENDS:${PN}-python = " \
+ python3 \
+ "
+
+RDEPENDS:${PN}-pygrub = " \
+ python3 \
+ ${PN}-python \
+ "
+
+RDEPENDS:${PN}-remus = "bash"
+
+RDEPENDS:${PN}-scripts-block = "\
+ bash \
+ ${PN}-scripts-common \
+ ${PN}-volatiles \
+ "
+
+RDEPENDS:${PN}-scripts-common = "bash"
+
+RDEPENDS:${PN}-scripts-network = "\
+ bash \
+ bridge-utils \
+ ${PN}-scripts-common \
+ ${PN}-volatiles \
+ "
+
+RRECOMMENDS:${PN}-scripts-network = "\
+ ifupdown \
+ "
+
+RSUGGESTS:${PN}-xencov = "${PN}-xencov-split"
+
+RDEPENDS:${PN}-xencommons = "\
+ bash \
+ util-linux-prlimit \
+ ${PN}-console \
+ ${PN}-xenstore \
+ virtual-xenstored \
+ ${PN}-xl \
+ ${PN}-scripts-common \
+ "
+
+RDEPENDS:${PN}-xendomains = "\
+ bash \
+ ${PN}-console \
+ ${PN}-scripts-block \
+ ${PN}-scripts-common \
+ virtual-xenstored \
+ "
+
+RDEPENDS:${PN}-xenhypfs = " \
+ ${PN}-libxenhypfs \
+ "
+
+RDEPENDS:${PN}-xl = "libgcc"
+
+RDEPENDS:${PN}-xenmon = " \
+ python3 \
+ "
+
+RSUGGESTS:${PN}-xentrace = "${PN}-xentrace-format"
+
+RDEPENDS:${PN}-xen-watchdog = "bash"
+
+PACKAGES = " \
+ ${PN} \
+ ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PACKAGES}', d)} \
+ ${PN}-console \
+ ${PN}-cpuid \
+ ${PN}-dbg \
+ ${PN}-dev \
+ ${PN}-devd \
+ ${PN}-doc \
+ ${PN}-flask \
+ ${PN}-flask-tools \
+ ${PN}-fsimage \
+ ${PN}-gdbsx \
+ ${PN}-hvmloader \
+ ${PN}-init-xenstore-dom \
+ ${PN}-kdd \
+ ${PN}-libfsimage \
+ ${PN}-libfsimage-dev \
+ ${PN}-libxencall \
+ ${PN}-libxencall-dev \
+ ${PN}-libxenctrl \
+ ${PN}-libxenctrl-dev \
+ ${PN}-libxendevicemodel \
+ ${PN}-libxendevicemodel-dev \
+ ${PN}-libxenevtchn \
+ ${PN}-libxenevtchn-dev \
+ ${PN}-libxenforeignmemory \
+ ${PN}-libxenforeignmemory-dev \
+ ${PN}-libxengnttab \
+ ${PN}-libxengnttab-dev \
+ ${PN}-libxenguest \
+ ${PN}-libxenguest-dev \
+ ${PN}-libxenhypfs \
+ ${PN}-libxenhypfs-dev \
+ ${PN}-libxenlight \
+ ${PN}-libxenlight-dev \
+ ${PN}-libxenstat \
+ ${PN}-libxenstat-dev \
+ ${PN}-libxenstore \
+ ${PN}-libxenstore-dev \
+ ${PN}-libxentoolcore \
+ ${PN}-libxentoolcore-dev \
+ ${PN}-libxentoollog \
+ ${PN}-libxentoollog-dev \
+ ${PN}-libxenvchan \
+ ${PN}-libxenvchan-dev \
+ ${PN}-libxlutil \
+ ${PN}-libxlutil-dev \
+ ${PN}-livepatch \
+ ${PN}-misc \
+ ${PN}-pygrub \
+ ${PN}-python \
+ ${PN}-remus \
+ ${PN}-scripts-block \
+ ${PN}-scripts-common \
+ ${PN}-scripts-network \
+ ${PN}-shim \
+ ${PN}-staticdev \
+ ${PN}-ucode \
+ ${PN}-vchan \
+ ${PN}-volatiles \
+ ${PN}-xcutils \
+ ${PN}-xencommons \
+ ${PN}-xencov \
+ ${PN}-xend \
+ ${PN}-xend-examples \
+ ${PN}-xendomains \
+ ${PN}-xenhypfs \
+ ${PN}-xenmon \
+ ${PN}-xenpaging \
+ ${PN}-xenpmd \
+ ${PN}-xenstat \
+ ${PN}-xenstore \
+ ${PN}-xenstored \
+ ${PN}-xentrace \
+ ${PN}-xen-watchdog \
+ ${PN}-xl \
+ ${PN}-xl-examples \
+ ${PN}-xm \
+ ${PN}-xm-examples \
+ ${PN}-xen-access \
+ ${PN}-xen-memshare \
+ ${PN}-test \
+ ${PN}-xen-vmtrace \
+ ${PN}-xen-mceinj \
+ "
+
+PROVIDES =+ " \
+ virtual-xenstored \
+ ${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_PROVIDES}', d)} \
+ "
+
+# There are multiple implementations of the XenStore daemon, so we use a
+# virtual package to allow for substitution.
+RPROVIDES:${PN}-xenstored = "virtual-xenstored"
+
+FILES:${PN}-dbg += "\
+ ${libdir}/xen/bin/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/site-packages/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/site-packages/xen/lowlevel/.debug \
+ ${libdir}/fs/xfs/.debug \
+ ${libdir}/fs/ufs/.debug \
+ ${libdir}/fs/ext2fs-lib/.debug \
+ ${libdir}/fs/fat/.debug \
+ ${libdir}/fs/zfs/.debug \
+ ${libdir}/fs/reiserfs/.debug \
+ ${libdir}/fs/iso9660/.debug \
+ ${libdir}/fs/**/.debug \
+ ${sbindir}/.debug \
+ ${libdir}exec/.debug \
+ ${libdir}/xen/libexec/.debug \
+ ${bindir}/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/xen/lowlevel/.debug \
+ "
+
+FILES:${PN}-dev = "\
+ ${includedir} \
+ "
+
+FILES:${PN}-doc = "\
+ ${sysconfdir}/xen/README \
+ ${sysconfdir}/xen/README.incompatibilities \
+ ${datadir}/doc \
+ ${datadir}/man \
+ "
+
+FILES:${PN}-staticdev += "\
+ ${libdir}/libxenguest.a \
+ ${libdir}/libxenlight.a \
+ ${libdir}/libxenvchan.a \
+ ${libdir}/libxenctrl.a \
+ ${libdir}/libxlutil.a \
+ ${libdir}/libxenstat.a \
+ ${libdir}/libxenstore.a \
+ "
+
+FILES:${PN}-libxencall = "${libdir}/libxencall.so.*"
+FILES:${PN}-libxencall-dev = " \
+ ${libdir}/libxencall.so \
+ ${libdir}/pkgconfig/xencall.pc \
+ ${datadir}/pkgconfig/xencall.pc \
+ "
+
+FILES:${PN}-libxenctrl = "${libdir}/libxenctrl.so.*"
+FILES:${PN}-libxenctrl-dev = " \
+ ${libdir}/libxenctrl.so \
+ ${libdir}/pkgconfig/xencontrol.pc \
+ ${datadir}/pkgconfig/xencontrol.pc \
+ "
+
+FILES:${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*"
+FILES:${PN}-libxendevicemodel-dev = " \
+ ${libdir}/libxendevicemodel.so \
+ ${libdir}/pkgconfig/xendevicemodel.pc \
+ ${datadir}/pkgconfig/xendevicemodel.pc \
+ "
+
+FILES:${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*"
+FILES:${PN}-libxenevtchn-dev = " \
+ ${libdir}/libxenevtchn.so \
+ ${libdir}/pkgconfig/xenevtchn.pc \
+ ${datadir}/pkgconfig/xenevtchn.pc \
+ "
+
+FILES:${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*"
+FILES:${PN}-libxenforeignmemory-dev = " \
+ ${libdir}/libxenforeignmemory.so \
+ ${libdir}/pkgconfig/xenforeignmemory.pc \
+ ${datadir}/pkgconfig/xenforeignmemory.pc \
+ "
+
+FILES:${PN}-libxengnttab = "${libdir}/libxengnttab.so.*"
+FILES:${PN}-libxengnttab-dev = " \
+ ${libdir}/libxengnttab.so \
+ ${libdir}/pkgconfig/xengnttab.pc \
+ ${datadir}/pkgconfig/xengnttab.pc \
+ "
+
+FILES:${PN}-libxenguest = "${libdir}/libxenguest.so.*"
+FILES:${PN}-libxenguest-dev = " \
+ ${libdir}/libxenguest.so \
+ ${libdir}/pkgconfig/xenguest.pc \
+ ${datadir}/pkgconfig/xenguest.pc \
+ "
+
+FILES:${PN}-libxenhypfs = "${libdir}/libxenhypfs.so.*"
+FILES:${PN}-libxenhypfs-dev = " \
+ ${libdir}/libxenhypfs.so \
+ ${libdir}/pkgconfig/xenhypfs.pc \
+ "
+
+FILES:${PN}-libxenlight = "${libdir}/libxenlight.so.*"
+FILES:${PN}-libxenlight-dev = " \
+ ${libdir}/libxenlight.so \
+ ${libdir}/pkgconfig/xenlight.pc \
+ ${datadir}/pkgconfig/xenlight.pc \
+ "
+
+FILES:${PN}-libxenstat = "${libdir}/libxenstat.so.*"
+FILES:${PN}-libxenstat-dev = " \
+ ${libdir}/libxenstat.so \
+ ${libdir}/pkgconfig/xenstat.pc \
+ ${datadir}/pkgconfig/xenstat.pc \
+ "
+
+FILES:${PN}-libxenstore = "${libdir}/libxenstore.so.*"
+FILES:${PN}-libxenstore-dev = " \
+ ${libdir}/libxenstore.so \
+ ${libdir}/pkgconfig/xenstore.pc \
+ ${datadir}/pkgconfig/xenstore.pc \
+ "
+
+FILES:${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*"
+FILES:${PN}-libxentoolcore-dev = " \
+ ${libdir}/libxentoolcore.so \
+ ${libdir}/pkgconfig/xentoolcore.pc \
+ ${datadir}/pkgconfig/xentoolcore.pc \
+ "
+
+FILES:${PN}-libxentoollog = "${libdir}/libxentoollog.so.*"
+FILES:${PN}-libxentoollog-dev = " \
+ ${libdir}/libxentoollog.so \
+ ${libdir}/pkgconfig/xentoollog.pc \
+ ${datadir}/pkgconfig/xentoollog.pc \
+ "
+
+FILES:${PN}-libxenvchan = "${libdir}/libxenvchan.so.*"
+FILES:${PN}-libxenvchan-dev = " \
+ ${libdir}/libxenvchan.so \
+ ${libdir}/pkgconfig/xenvchan.pc \
+ ${datadir}/pkgconfig/xenvchan.pc \
+ "
+
+FILES:${PN}-libxlutil = "${libdir}/libxlutil.so.*"
+FILES:${PN}-libxlutil-dev = " \
+ ${libdir}/libxlutil.so \
+ ${libdir}/pkgconfig/xlutil.pc \
+ ${datadir}/pkgconfig/xlutil.pc \
+ "
+FILES:${PN}-libvhd = "${libdir}/libvhd.so.*"
+FILES:${PN}-libvhd-dev = " \
+ ${libdir}/libvhd.so \
+ ${libdir}/pkgconfig/vhd.pc \
+ ${datadir}/pkgconfig/vhd.pc \
+ "
+
+FILES:${PN}-libfsimage = " \
+ ${libdir}/libfsimage.so.* \
+ ${libdir}/libxenfsimage.so.* \
+ "
+
+FILES:${PN}-libfsimage-dev = " \
+ ${libdir}/libfsimage.so \
+ ${libdir}/libxenfsimage.so \
+ ${libdir}/pkgconfig/fsimage.pc \
+ ${datadir}/pkgconfig/fsimage.pc \
+ ${libdir}/pkgconfig/xenfsimage.pc \
+ ${datadir}/pkgconfig/xenfsimage.pc \
+ "
+
+FILES:${PN}-fsimage = " \
+ ${libdir}/fs/**/[a-z]*fsimage.so \
+ ${libdir}/xenfsimage/**/fsimage.so \
+ "
+
+FILES:${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain"
+
+FILES:${PN} = "\
+ ${sysconfdir}/xen/auto \
+ ${sysconfdir}/xen/cpupool \
+ ${localstatedir}/xen/dump \
+ "
+
+FILES:${PN}-console = "\
+ ${libdir}/xen/bin/xenconsole \
+ ${sbindir}/xenconsoled \
+ "
+
+FILES:${PN}-cpuid = "\
+ ${bindir}/xen-cpuid \
+ "
+
+FILES:${PN}-devd = "\
+ ${sysconfdir}/init.d/xendriverdomain \
+ ${systemd_unitdir}/system/xendriverdomain.service \
+ "
+
+FILES:${PN}-flask = "\
+ /boot/xenpolicy-* \
+ "
+
+FILES:${PN}-flask-tools = "\
+ ${sbindir}/flask-get-bool \
+ ${sbindir}/flask-getenforce \
+ ${sbindir}/flask-label-pci \
+ ${sbindir}/flask-loadpolicy \
+ ${sbindir}/flask-set-bool \
+ ${sbindir}/flask-setenforce \
+ "
+
+FILES:${PN}-gdbsx = "\
+ ${sbindir}/gdbsx \
+ "
+
+INSANE_SKIP:${PN}-hvmloader = "arch"
+FILES:${PN}-hvmloader = "\
+ ${libdir}/xen/boot/hvmloader \
+ "
+
+FILES:${PN}-kdd = "\
+ ${sbindir}/kdd \
+ ${sbindir}/xen-kdd \
+ "
+
+FILES:${PN}-livepatch += " \
+ ${sbindir}/xen-livepatch \
+ "
+
+FILES:${PN}-misc = "\
+ ${bindir}/xen-detect \
+ ${libdir}/xen/bin/depriv-fd-checker \
+ ${sbindir}/gtracestat \
+ ${sbindir}/gtraceview \
+ ${sbindir}/xen-bugtool \
+ ${sbindir}/xenperf \
+ ${sbindir}/xenpm \
+ ${sbindir}/xsview \
+ ${sbindir}/xen-diag \
+ ${sbindir}/xen-tmem-list-parse \
+ ${sbindir}/xen-python-path \
+ ${sbindir}/xen-ringwatch \
+ ${sbindir}/xen-hptool \
+ ${sbindir}/xen-hvmcrash \
+ ${sbindir}/xen-hvmctx \
+ ${sbindir}/xenlockprof \
+ ${sbindir}/xen-lowmemd \
+ ${sbindir}/xen-mfndump \
+ ${libdir}/xen/bin/verify-stream-v2 \
+ ${libdir}/xen/bin/convert-legacy-stream \
+ "
+
+FILES:${PN}-pygrub = "\
+ ${bindir}/pygrub \
+ ${libdir}/xen/bin/pygrub \
+ "
+
+# Depending on the version of Xen libdir or nonarch libdir is used
+FILES:${PN}-python = "\
+ ${libdir}/${PYTHON_DIR} \
+ ${nonarch_libdir}/${PYTHON_DIR} \
+ "
+
+FILES:${PN}-remus = "\
+ ${sysconfdir}/xen/scripts/remus-netbuf-setup \
+ "
+
+FILES:${PN}-scripts-network = " \
+ ${sysconfdir}/xen/scripts/colo-proxy-setup \
+ ${sysconfdir}/xen/scripts/network-bridge \
+ ${sysconfdir}/xen/scripts/network-nat \
+ ${sysconfdir}/xen/scripts/network-route \
+ ${sysconfdir}/xen/scripts/qemu-ifup \
+ ${sysconfdir}/xen/scripts/vif2 \
+ ${sysconfdir}/xen/scripts/vif-bridge \
+ ${sysconfdir}/xen/scripts/vif-common.sh \
+ ${sysconfdir}/xen/scripts/vif-nat \
+ ${sysconfdir}/xen/scripts/vif-openvswitch \
+ ${sysconfdir}/xen/scripts/vif-route \
+ ${sysconfdir}/xen/scripts/vif-setup \
+ "
+
+FILES:${PN}-scripts-block = " \
+ ${sysconfdir}/xen/scripts/blktap \
+ ${sysconfdir}/xen/scripts/block \
+ ${sysconfdir}/xen/scripts/block-common.sh \
+ ${sysconfdir}/xen/scripts/block-dummy \
+ ${sysconfdir}/xen/scripts/block-enbd \
+ ${sysconfdir}/xen/scripts/block-iscsi \
+ ${sysconfdir}/xen/scripts/block-nbd \
+ ${sysconfdir}/xen/scripts/block-drbd-probe \
+ ${sysconfdir}/xen/scripts/block-tap \
+ ${sysconfdir}/xen/scripts/vscsi \
+ "
+
+FILES:${PN}-scripts-common = " \
+ ${sysconfdir}/xen/scripts/external-device-migrate \
+ ${sysconfdir}/xen/scripts/hotplugpath.sh \
+ ${sysconfdir}/xen/scripts/locking.sh \
+ ${sysconfdir}/xen/scripts/logging.sh \
+ ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \
+ ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \
+ ${sysconfdir}/xen/scripts/xen-network-common.sh \
+ ${sysconfdir}/xen/scripts/xen-script-common.sh \
+ "
+
+INSANE_SKIP:${PN}-shim = "arch"
+FILES:${PN}-shim = " \
+ ${libdir}/xen/boot/xen-shim \
+ "
+
+FILES:${PN}-ucode = "\
+ ${sbindir}/xen-ucode \
+ "
+
+FILES:${PN}-vchan = "\
+ ${bindir}/vchan-socket-proxy \
+ "
+
+FILES:${PN}-volatiles = "\
+ ${sysconfdir}/default/volatiles/99_xen \
+ ${sysconfdir}/tmpfiles.d/xen.conf \
+ "
+
+FILES:${PN}-xcutils = "\
+ ${libdir}/xen/bin/lsevtchn \
+ ${libdir}/xen/bin/readnotes \
+ ${libdir}/xen/bin/xc_restore \
+ ${libdir}/xen/bin/xc_save \
+ "
+
+FILES:${PN}-xencov = "\
+ ${sbindir}/xencov \
+ "
+
+FILES:${PN}-xend-examples = "\
+ ${sysconfdir}/xen/xend-config.sxp \
+ ${sysconfdir}/xen/xend-pci-permissive.sxp \
+ ${sysconfdir}/xen/xend-pci-quirks.sxp \
+ "
+
+FILES:${PN}-xenhypfs = "\
+ ${sbindir}/xenhypfs \
+ "
+
+FILES:${PN}-xenpaging = "\
+ ${libdir}/xen/bin/xenpaging \
+ ${localstatedir}/lib/xen/xenpaging \
+ "
+
+FILES:${PN}-xenpmd = "\
+ ${sbindir}/xenpmd \
+ "
+
+FILES:${PN}-xenstat = "\
+ ${sbindir}/xentop \
+ "
+
+FILES:${PN}-xenstore = "\
+ ${bindir}/xenstore \
+ ${bindir}/xenstore-chmod \
+ ${bindir}/xenstore-control \
+ ${bindir}/xenstore-exists \
+ ${bindir}/xenstore-list \
+ ${bindir}/xenstore-ls \
+ ${bindir}/xenstore-read \
+ ${bindir}/xenstore-rm \
+ ${bindir}/xenstore-watch \
+ ${bindir}/xenstore-write \
+ "
+
+FILES:${PN}-xenstored = "\
+ ${sbindir}/xenstored \
+ ${localstatedir}/lib/xenstored \
+ "
+
+FILES:${PN}-xentrace = "\
+ ${bindir}/xentrace \
+ ${bindir}/xentrace_setsize \
+ ${libdir}/xen/bin/xenctx \
+ ${bindir}/xenalyze \
+ ${sbindir}/xentrace \
+ ${sbindir}/xentrace_setsize \
+ ${sbindir}/xentrace_setmask \
+ "
+
+FILES:${PN}-xen-watchdog = "\
+ ${sbindir}/xenwatchdogd \
+ ${sysconfdir}/init.d/xen-watchdog \
+ ${systemd_unitdir}/system/xen-watchdog.service \
+ "
+
+FILES:${PN}-xl = "\
+ ${sysconfdir}/bash_completion.d/xl.sh \
+ ${sysconfdir}/bash_completion.d/xl \
+ ${sysconfdir}/xen/xl.conf \
+ ${libdir}/xen/bin/libxl-save-helper \
+ ${sbindir}/xl \
+ ${libdir}/xen/bin/xen-init-dom0 \
+ ${libdir}/xen/bin/init-dom0less \
+ "
+
+FILES:${PN}-xl-examples = "\
+ ${sysconfdir}/xen/xlexample.hvm \
+ ${sysconfdir}/xen/xlexample.pvlinux \
+ ${sysconfdir}/xen/xlexample.pvhlinux \
+ "
+
+FILES:${PN}-xm-examples = "\
+ ${sysconfdir}/xen/xmexample1 \
+ ${sysconfdir}/xen/xmexample2 \
+ ${sysconfdir}/xen/xmexample3 \
+ ${sysconfdir}/xen/xmexample.hvm \
+ ${sysconfdir}/xen/xmexample.hvm-stubdom \
+ ${sysconfdir}/xen/xmexample.nbd \
+ ${sysconfdir}/xen/xmexample.pv-grub \
+ ${sysconfdir}/xen/xmexample.vti \
+ "
+
+FILES:${PN}-xenmon = "\
+ ${sbindir}/xenbaked \
+ ${sbindir}/xenmon.py \
+ ${sbindir}/xenmon \
+ "
+
+FILES:${PN}-xm = "\
+ ${sysconfdir}/xen/xm-config.xml \
+ ${datadir}/xen/create.dtd \
+ ${sbindir}/xm \
+ "
+
+FILES:${PN}-xencommons += "\
+ ${nonarch_libdir}/modules-load.d/xen.conf \
+ ${sysconfdir}/default/xencommons \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${sysconfdir}/init.d/xencommons', d)} \
+ ${sysconfdir}/xen/scripts/launch-xenstore \
+ ${systemd_unitdir}/system/proc-xen.mount \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenconsoled.service', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xen-init-dom0.service', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/xenstored.service', '', d)} \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '${systemd_unitdir}/system/var-lib-xenstored.mount', '', d)} \
+ ${localstatedir} \
+ "
+
+FILES:${PN}-xend += " \
+ ${sysconfdir}/init.d/xend \
+ ${sbindir}/xend \
+ "
+
+FILES:${PN}-xendomains += "\
+ ${libdir}/xen/bin/xendomains \
+ ${sysconfdir}/default/xendomains \
+ ${sysconfdir}/init.d/xendomains \
+ ${sysconfdir}/sysconfig/xendomains \
+ ${systemd_unitdir}/system/xendomains.service \
+ "
+FILES:${PN}-xen-access += "\
+ ${sbindir}/xen-access \
+ "
+
+FILES:${PN}-xen-memshare += "\
+ ${sbindir}/xen-memshare \
+ "
+
+# memshare is only built for x86, so allow empty package for other archs
+ALLOW_EMPTY:${PN}-xen-memshare = "1"
+
+FILES:${PN}-test += "\
+ ${libdir}/xen/bin/test-xenstore \
+ ${libdir}/xen/bin/test-resource \
+ ${libdir}/xen/bin/test-cpu-policy \
+ ${libdir}/xen/bin/test-tsx \
+ ${libdir}/xen/bin/test-paging-mempool \
+ "
+
+# test-xenstore and test-resource currently only exist in 4.16
+# test-cpu-policy and test-tsx only exist in 4.16 for x86
+ALLOW_EMPTY:${PN}-test = "1"
+
+FILES:${PN}-xen-mceinj +="\
+ ${sbindir}/xen-mceinj \
+ "
+
+# xen-mceinj is only built for x86 4.16, so allow empty package
+ALLOW_EMPTY:${PN}-xen-mceinj = "1"
+
+FILES:${PN}-xen-vmtrace +="\
+ ${sbindir}/xen-vmtrace \
+ "
+
+# xen-vmtrace is only built for x86 4.16, so allow empty package
+ALLOW_EMPTY:${PN}-xen-vmtrace = "1"
+
+INSANE_SKIP:${PN} = "already-stripped"
+
+# configure init.d scripts
+INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd"
+INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${PN}-xencommons', d)}"
+INITSCRIPT_NAME:${PN}-xencommons = "xencommons"
+INITSCRIPT_PARAMS:${PN}-xencommons = "defaults 80"
+INITSCRIPT_NAME:${PN}-xen-watchdog = "xen-watchdog"
+INITSCRIPT_PARAMS:${PN}-xen-watchdog = "defaults 81"
+INITSCRIPT_NAME:${PN}-xend = "xend"
+INITSCRIPT_PARAMS:${PN}-xend = "defaults 82"
+INITSCRIPT_NAME:${PN}-xendomains = "xendomains"
+INITSCRIPT_PARAMS:${PN}-xendomains = "defaults 83"
+INITSCRIPT_NAME:${PN}-devd = "xendriverdomain"
+INITSCRIPT_PARAMS:${PN}-devd = "defaults 82"
+
+# systemd packages
+SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains ${PN}-devd"
+SYSTEMD_SERVICE:${PN}-devd = "xendriverdomain.service"
+SYSTEMD_SERVICE:${PN}-xen-watchdog = "xen-watchdog.service"
+SYSTEMD_SERVICE:${PN}-xencommons = " \
+ proc-xen.mount \
+ xen-qemu-dom0-disk-backend.service \
+ xenconsoled.service \
+ xen-init-dom0.service \
+ xenstored.service \
+ "
+SYSTEMD_SERVICE:${PN}-xendomains = "xendomains.service"
+
+EXTRA_OECONF += " \
+ --with-systemd=${systemd_unitdir}/system \
+ --with-initddir=${INIT_D_DIR} \
+ --with-sysconfig-leaf-dir=default \
+ --with-system-qemu=${bindir}/qemu-system-i386 \
+ "
+
+do_configure() {
+ do_configure_common
+}
+
+do_compile() {
+ cd ${S}
+ oe_runmake tools PYTHON="${PYTHON}" \
+ EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}"
+}
+
+do_install() {
+ cd ${S}
+ oe_runmake DESTDIR="${D}" install-tools
+
+ # Remove unported python 2 scripts -- see the separate xen-python2 recipe
+ rm -f ${D}${bindir}/xentrace_format \
+ ${D}${bindir}/xencons \
+ ${D}${bindir}/xencov_split \
+ ${D}${libdir}/xen/bin/xenpvnetboot
+
+ # remove installed volatiles
+ rm -rf ${D}${base_prefix}/run \
+ ${D}${localstatedir}/run \
+ ${D}${localstatedir}/lock \
+ ${D}${localstatedir}/log \
+ ${D}${localstatedir}/volatile \
+ ${D}${localstatedir}/lib/xen
+
+ VOLATILE_DIRS=" \
+ ${base_prefix}/run/xenstored \
+ ${base_prefix}/run/xend \
+ ${base_prefix}/run/xend/boot \
+ ${base_prefix}/run/xen \
+ ${localstatedir}/log/xen \
+ ${localstatedir}/lock/xen \
+ ${localstatedir}/lock/subsys \
+ ${localstatedir}/lib/xen \
+ "
+
+ # install volatiles using populate_volatiles mechanism
+ install -d ${D}${sysconfdir}/default/volatiles
+ for i in $VOLATILE_DIRS; do
+ echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen
+ done
+
+ # workaround for xendomains script which searchs sysconfig if directory exists
+ install -d ${D}${sysconfdir}/sysconfig
+ ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains
+
+ # systemd
+ if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
+ # install volatiles using systemd tmpfiles.d
+ install -d ${D}${sysconfdir}/tmpfiles.d
+ for i in $VOLATILE_DIRS; do
+ echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf
+ done
+ fi
+
+ if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then
+ sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \
+ ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service
+ fi
+
+ if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
+ rm -f ${D}/${sysconfdir}/init.d/xencommons
+ else
+ # fixup default path to qemu-system-i386
+ sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons
+
+ # remove the uncondiontally installed systemd service files
+ rm -f ${D}/${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service
+ rm -f ${D}/${systemd_unitdir}/system/xenconsoled.service
+ rm -f ${D}/${systemd_unitdir}/system/xen-init-dom0.service
+ rm -f ${D}/${systemd_unitdir}/system/xenstored.service
+ rm -f ${D}/${systemd_unitdir}/system/var-lib-xenstored.mount
+ fi
+}
+
+pkg_postinst:${PN}-volatiles() {
+ if [ -z "$D" ]; then
+ if command -v systemd-tmpfiles >/dev/null; then
+ systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf
+ elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
+ ${sysconfdir}/init.d/populate-volatile.sh update
+ fi
+ fi
+}
+
+do_deploy() {
+ XEN_FULLVERSION=$(oe_runmake -C ${S}/xen xenversion --no-print-directory)
+ FLASK_POLICY_FILE="xenpolicy-${XEN_FULLVERSION}"
+
+ install -d ${DEPLOYDIR}
+
+ # Install the flask policy in the deploy directory if it exists
+ if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then
+ install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR}
+ ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE}
+ fi
+}
+# Scheduling the do_deploy task:
+# - deploy copies files from ${D} that are written during do_install so must run
+# after that task
+# - the tools binaries are included in the image filesystem, so we must ensure
+# that the binaries deployed match what is staged in the sysroot:
+# so do_deploy must run after do_populate_sysroot
+# - add the task before do_build to ensure that deployment has completed when
+# the recipe build done stamp is written
+addtask deploy after do_install do_populate_sysroot before do_build
diff --git a/recipes-extended/xen/xen-tools_4.17.bb b/recipes-extended/xen/xen-tools_4.17.bb
new file mode 100644
index 00000000..72deed01
--- /dev/null
+++ b/recipes-extended/xen/xen-tools_4.17.bb
@@ -0,0 +1,19 @@
+# xen 4.17.2 release sha
+SRCREV ?= "0ebd2e49bcd0f566ba6b9158555942aab8e41332"
+
+XEN_REL ?= "4.17"
+XEN_BRANCH ?= "stable-${XEN_REL}"
+
+SRC_URI = "git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch \
+ file://0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch \
+ "
+
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
+
+PV = "${XEN_REL}+stable"
+
+S = "${WORKDIR}/git"
+
+require xen.inc
+require xen-tools.inc
diff --git a/recipes-extended/xen/xen-tools_4.18.bb b/recipes-extended/xen/xen-tools_4.18.bb
new file mode 100644
index 00000000..5dbe180a
--- /dev/null
+++ b/recipes-extended/xen/xen-tools_4.18.bb
@@ -0,0 +1,21 @@
+# tag: RELEASE-4.18.0
+SRCREV ?= "4da8ca9cb9cfdb92c9dd09d5270ae16a3b2dbc89"
+
+XEN_REL ?= "4.18"
+XEN_BRANCH ?= "stable-4.18"
+
+SRC_URI = " \
+ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch \
+ "
+
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
+
+PV = "${XEN_REL}+stable"
+
+S = "${WORKDIR}/git"
+
+DEFAULT_PREFERENCE ??= "-1"
+
+require xen.inc
+require xen-tools.inc
diff --git a/recipes-extended/xen/xen-tools_git.bb b/recipes-extended/xen/xen-tools_git.bb
new file mode 100644
index 00000000..8397178e
--- /dev/null
+++ b/recipes-extended/xen/xen-tools_git.bb
@@ -0,0 +1,21 @@
+# master status on 2023-05-26
+SRCREV ?= "03cf7ca23e0e876075954c558485b267b7d02406"
+
+XEN_REL ?= "4.18"
+XEN_BRANCH ?= "master"
+
+SRC_URI = " \
+ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch \
+ "
+
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
+
+PV = "${XEN_REL}+git"
+
+S = "${WORKDIR}/git"
+
+DEFAULT_PREFERENCE ??= "-1"
+
+require xen.inc
+require xen-tools.inc
diff --git a/recipes-extended/xen/xen.inc b/recipes-extended/xen/xen.inc
index 628e52bc..dcd281b5 100644
--- a/recipes-extended/xen/xen.inc
+++ b/recipes-extended/xen/xen.inc
@@ -1,28 +1,21 @@
-DESCRIPTION = "Xen hypervisor"
HOMEPAGE = "http://xen.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
SECTION = "console/tools"
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095"
+TOOLCHAIN = "gcc"
-COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi'
-
-inherit autotools-brokensep setuptools update-rc.d systemd deploy
+inherit autotools-brokensep pkgconfig
require xen-arch.inc
PACKAGECONFIG ??= " \
- sdl \
${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
- ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'hvm', '', d)} \
"
-FLASK_POLICY_FILE ?= "xenpolicy-${PV}"
-
-PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,virtual/libsdl,"
+PACKAGECONFIG[lzo] = ",,lzo"
PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native,"
PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd,"
-PACKAGECONFIG[hvm] = "--with-system-seabios="/usr/share/firmware/bios.bin",--disable-seabios,seabios ipxe vgabios,"
+PACKAGECONFIG[externalblktap] = ",,,"
DEPENDS = " \
${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'dev86-native', '', d)} \
@@ -47,9 +40,8 @@ DEPENDS = " \
pciutils \
pixman \
procps \
- python \
+ python3 \
libaio \
- lzo \
util-linux \
xz \
yajl \
@@ -57,777 +49,6 @@ DEPENDS = " \
gnu-efi \
"
-# inherit setuptools adds python to RDEPENDS, override it
-RDEPENDS_${PN} = ""
-
-RDEPENDS_${PN}-base = "\
- bash perl xz \
- ${PN}-console \
- ${PN}-libxenguest \
- ${PN}-libxenlight \
- ${PN}-libxenvchan \
- ${PN}-libxenctrl \
- ${PN}-libxlutil \
- ${PN}-libxenstat \
- ${PN}-libxenstore \
- ${PN}-libfsimage \
- ${PN}-fsimage \
- ${PN}-scripts-block \
- ${PN}-scripts-network \
- ${PN}-xen-watchdog \
- ${PN}-xencommons \
- ${PN}-xendomains \
- ${PN}-xenstore \
- ${PN}-xenstored \
- ${PN}-xl \
- "
-
-RDEPENDS_${PN}-dev = ""
-
-RRECOMMENDS_${PN}-base = " \
- ${PN}-blktap \
- ${PN}-libblktap \
- ${PN}-libblktapctl \
- ${PN}-libvhd \
- ${PN}-flask \
- ${PN}-hvmloader \
- ${PN}-shim \
- ${PN}-xenpaging \
- "
-
-RDEPENDS_${PN}-devd = " \
- ${PN}-xl \
- "
-
-RDEPENDS_${PN}-fsimage = " \
- libext2fs \
- "
-
-RDEPENDS_${PN}-misc = " \
- perl \
- python \
- "
-
-RDEPENDS_${PN}-remus = " \
- bash \
- python \
- "
-
-RDEPENDS_${PN}-scripts-block = "\
- bash \
- ${PN}-scripts-common \
- ${PN}-volatiles \
- "
-
-RDEPENDS_${PN}-scripts-common = "bash"
-
-RDEPENDS_${PN}-scripts-network = "\
- bash \
- bridge-utils \
- ${PN}-scripts-common \
- ${PN}-volatiles \
- "
-
-RDEPENDS_${PN}-xencommons = "\
- bash \
- ${PN}-console \
- ${PN}-xenstore \
- ${PN}-xenstored \
- ${PN}-xl \
- ${PN}-scripts-common \
- "
-
-RDEPENDS_${PN}-xendomains = "\
- bash \
- ${PN}-console \
- ${PN}-scripts-block \
- ${PN}-scripts-common \
- ${PN}-xenstored \
- "
-
-RDEPENDS_${PN}-xl = "libgcc"
-
-RDEPENDS_${PN}-xentrace = "python"
-
-RDEPENDS_${PN}-xen-watchdog = "bash"
-
-PACKAGES = "\
- ${PN}-base \
- ${PN}-blktap \
- ${PN}-console \
- ${PN}-cpuid \
- ${PN}-dbg \
- ${PN}-dev \
- ${PN}-devd \
- ${PN}-doc \
- ${PN}-efi \
- ${PN}-flask \
- ${PN}-flask-tools \
- ${PN}-fsimage \
- ${PN}-gdbsx \
- ${PN}-hvmloader \
- ${PN}-hypervisor \
- ${PN}-init-xenstore-dom \
- ${PN}-kdd \
- ${PN}-libblktap \
- ${PN}-libblktapctl \
- ${PN}-libblktapctl-dev \
- ${PN}-libblktap-dev \
- ${PN}-libfsimage \
- ${PN}-libfsimage-dev \
- ${PN}-libvhd \
- ${PN}-libvhd-dev \
- ${PN}-libxencall \
- ${PN}-libxencall-dev \
- ${PN}-libxenctrl \
- ${PN}-libxenctrl-dev \
- ${PN}-libxendevicemodel \
- ${PN}-libxendevicemodel-dev \
- ${PN}-libxenevtchn \
- ${PN}-libxenevtchn-dev \
- ${PN}-libxenforeignmemory \
- ${PN}-libxenforeignmemory-dev \
- ${PN}-libxengnttab \
- ${PN}-libxengnttab-dev \
- ${PN}-libxenguest \
- ${PN}-libxenguest-dev \
- ${PN}-libxenlight \
- ${PN}-libxenlight-dev \
- ${PN}-libxenstat \
- ${PN}-libxenstat-dev \
- ${PN}-libxenstore \
- ${PN}-libxenstore-dev \
- ${PN}-libxentoolcore \
- ${PN}-libxentoolcore-dev \
- ${PN}-libxentoollog \
- ${PN}-libxentoollog-dev \
- ${PN}-libxenvchan \
- ${PN}-libxenvchan-dev \
- ${PN}-libxlutil \
- ${PN}-libxlutil-dev \
- ${PN}-livepatch \
- ${PN}-misc \
- ${PN}-pygrub \
- ${PN}-python \
- ${PN}-qemu \
- ${PN}-remus \
- ${PN}-scripts-block \
- ${PN}-scripts-common \
- ${PN}-scripts-network \
- ${PN}-shim \
- ${PN}-staticdev \
- ${PN}-volatiles \
- ${PN}-xcutils \
- ${PN}-xencommons \
- ${PN}-xend \
- ${PN}-xend-examples \
- ${PN}-xendomains \
- ${PN}-xenmon \
- ${PN}-xenpaging \
- ${PN}-xenpmd \
- ${PN}-xenstat \
- ${PN}-xenstore \
- ${PN}-xenstored \
- ${PN}-xentrace \
- ${PN}-xen-watchdog \
- ${PN}-xl \
- ${PN}-xl-examples \
- ${PN}-xm \
- ${PN}-xm-examples \
- "
-
-FILES_${PN}-dbg += "\
- ${libdir}/.debug \
- ${libdir}/debug/* \
- ${libdir}/xen/bin/.debug \
- ${libdir}/python2.7/site-packages/.debug \
- ${libdir}/python2.7/site-packages/xen/lowlevel/.debug \
- ${libdir}/fs/xfs/.debug \
- ${libdir}/fs/ufs/.debug \
- ${libdir}/fs/ext2fs-lib/.debug \
- ${libdir}/fs/fat/.debug \
- ${libdir}/fs/zfs/.debug \
- ${libdir}/fs/reiserfs/.debug \
- ${libdir}/fs/iso9660/.debug \
- ${libdir}/fs/*/.debug \
- ${sbindir}/.debug \
- ${libdir}exec/.debug \
- ${libdir}/xen/libexec/.debug \
- ${bindir}/.debug \
- ${libdir}/python2.7/dist-packages/.debug \
- ${libdir}/python2.7/dist-packages/xen/lowlevel/.debug \
- "
-
-FILES_${PN}-dev = "\
- ${includedir} \
- "
-
-FILES_${PN}-doc = "\
- ${sysconfdir}/xen/README \
- ${sysconfdir}/xen/README.incompatibilities \
- ${datadir}/doc \
- ${datadir}/man \
- "
-
-FILES_${PN}-staticdev += "\
- ${libdir}/libblktapctl.a \
- ${libdir}/libxenguest.a \
- ${libdir}/libxenlight.a \
- ${libdir}/libxenvchan.a \
- ${libdir}/libxenctrl.a \
- ${libdir}/libxlutil.a \
- ${libdir}/libvhd.a \
- ${libdir}/libxenstat.a \
- ${libdir}/libxenstore.a \
- ${libdir}/libblktap.a \
- "
-
-FILES_${PN}-libblktapctl = "${libdir}/libblktapctl.so.*"
-FILES_${PN}-libblktapctl-dev = " \
- ${libdir}/libblktapctl.so \
- ${libdir}/pkgconfig/xenblktapctl.pc \
- ${datadir}/pkgconfig/xenblktapctl.pc \
- "
-
-FILES_${PN}-libxencall = "${libdir}/libxencall.so.*"
-FILES_${PN}-libxencall-dev = " \
- ${libdir}/libxencall.so \
- ${libdir}/pkgconfig/xencall.pc \
- ${datadir}/pkgconfig/xencall.pc \
- "
-
-FILES_${PN}-libxenctrl = "${libdir}/libxenctrl.so.*"
-FILES_${PN}-libxenctrl-dev = " \
- ${libdir}/libxenctrl.so \
- ${libdir}/pkgconfig/xencontrol.pc \
- ${datadir}/pkgconfig/xencontrol.pc \
- "
-
-FILES_${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*"
-FILES_${PN}-libxendevicemodel-dev = " \
- ${libdir}/libxendevicemodel.so \
- ${libdir}/pkgconfig/xendevicemodel.pc \
- ${datadir}/pkgconfig/xendevicemodel.pc \
- "
-
-FILES_${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*"
-FILES_${PN}-libxenevtchn-dev = " \
- ${libdir}/libxenevtchn.so \
- ${libdir}/pkgconfig/xenevtchn.pc \
- ${datadir}/pkgconfig/xenevtchn.pc \
- "
-
-FILES_${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*"
-FILES_${PN}-libxenforeignmemory-dev = " \
- ${libdir}/libxenforeignmemory.so \
- ${libdir}/pkgconfig/xenforeignmemory.pc \
- ${datadir}/pkgconfig/xenforeignmemory.pc \
- "
-
-FILES_${PN}-libxengnttab = "${libdir}/libxengnttab.so.*"
-FILES_${PN}-libxengnttab-dev = " \
- ${libdir}/libxengnttab.so \
- ${libdir}/pkgconfig/xengnttab.pc \
- ${datadir}/pkgconfig/xengnttab.pc \
- "
-
-FILES_${PN}-libxenguest = "${libdir}/libxenguest.so.*"
-FILES_${PN}-libxenguest-dev = " \
- ${libdir}/libxenguest.so \
- ${libdir}/pkgconfig/xenguest.pc \
- ${datadir}/pkgconfig/xenguest.pc \
- "
-
-FILES_${PN}-libxenlight = "${libdir}/libxenlight.so.*"
-FILES_${PN}-libxenlight-dev = " \
- ${libdir}/libxenlight.so \
- ${libdir}/pkgconfig/xenlight.pc \
- ${datadir}/pkgconfig/xenlight.pc \
- "
-
-FILES_${PN}-libxenstat = "${libdir}/libxenstat.so.*"
-FILES_${PN}-libxenstat-dev = " \
- ${libdir}/libxenstat.so \
- ${libdir}/pkgconfig/xenstat.pc \
- ${datadir}/pkgconfig/xenstat.pc \
- "
-
-FILES_${PN}-libxenstore = "${libdir}/libxenstore.so.*"
-FILES_${PN}-libxenstore-dev = " \
- ${libdir}/libxenstore.so \
- ${libdir}/pkgconfig/xenstore.pc \
- ${datadir}/pkgconfig/xenstore.pc \
- "
-
-FILES_${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*"
-FILES_${PN}-libxentoolcore-dev = " \
- ${libdir}/libxentoolcore.so \
- ${libdir}/pkgconfig/xentoolcore.pc \
- ${datadir}/pkgconfig/xentoolcore.pc \
- "
-
-FILES_${PN}-libxentoollog = "${libdir}/libxentoollog.so.*"
-FILES_${PN}-libxentoollog-dev = " \
- ${libdir}/libxentoollog.so \
- ${libdir}/pkgconfig/xentoollog.pc \
- ${datadir}/pkgconfig/xentoollog.pc \
- "
-
-FILES_${PN}-libxenvchan = "${libdir}/libxenvchan.so.*"
-FILES_${PN}-libxenvchan-dev = " \
- ${libdir}/libxenvchan.so \
- ${libdir}/pkgconfig/xenvchan.pc \
- ${datadir}/pkgconfig/xenvchan.pc \
- "
-
-FILES_${PN}-libxlutil = "${libdir}/libxlutil.so.*"
-FILES_${PN}-libxlutil-dev = " \
- ${libdir}/libxlutil.so \
- ${libdir}/pkgconfig/xlutil.pc \
- ${datadir}/pkgconfig/xlutil.pc \
- "
-FILES_${PN}-libvhd = "${libdir}/libvhd.so.*"
-FILES_${PN}-libvhd-dev = " \
- ${libdir}/libvhd.so \
- ${libdir}/pkgconfig/vhd.pc \
- ${datadir}/pkgconfig/vhd.pc \
- "
-
-FILES_${PN}-libblktap = "${libdir}/libblktap.so.*"
-FILES_${PN}-libblktap-dev = " \
- ${libdir}/libblktap.so \
- ${libdir}/pkgconfig/blktap.pc \
- ${datadir}/pkgconfig/blktap.pc \
- "
-
-FILES_${PN}-libfsimage = " \
- ${libdir}/libfsimage.so.* \
- ${libdir}/libxenfsimage.so.* \
- "
-FILES_${PN}-libfsimage-dev = " \
- ${libdir}/libfsimage.so \
- ${libdir}/libxenfsimage.so \
- ${libdir}/pkgconfig/fsimage.pc \
- ${datadir}/pkgconfig/fsimage.pc \
- ${libdir}/pkgconfig/xenfsimage.pc \
- ${datadir}/pkgconfig/xenfsimage.pc \
- "
-
-FILES_${PN}-fsimage = " \
- ${libdir}/fs/*/*fsimage.so \
- ${libdir}/xenfsimage/*/fsimage.so \
- "
-
-FILES_${PN}-hypervisor = "\
- /boot/xen-* \
- /boot/xen \
- /boot/xen-*.gz \
- /boot/xen.gz \
- /boot/xen-syms-* \
- "
-
-FILES_${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain"
-
-FILES_${PN}-efi = "\
- ${exec_prefix}/lib64/efi/xen* \
- "
-
-FILES_${PN}-base = "\
- ${sysconfdir}/xen/auto \
- ${sysconfdir}/xen/cpupool \
- ${localstatedir}/xen/dump \
- "
-
-FILES_${PN}-blktap = "\
- ${sbindir}/blktapctrl \
- ${sbindir}/img2qcow \
- ${sbindir}/lock-util \
- ${sbindir}/qcow2raw \
- ${sbindir}/qcow-create \
- ${sbindir}/tap-ctl \
- ${sbindir}/tapdisk \
- ${sbindir}/tapdisk2 \
- ${sbindir}/tapdisk-client \
- ${sbindir}/tapdisk-diff \
- ${sbindir}/tapdisk-stream \
- ${sbindir}/td-util \
- ${sbindir}/vhd-update \
- ${sbindir}/vhd-util \
- "
-
-FILES_${PN}-console = "\
- ${libdir}/xen/bin/xenconsole \
- ${sbindir}/xenconsoled \
- "
-
-FILES_${PN}-cpuid = "\
- ${bindir}/xen-cpuid \
- "
-
-FILES_${PN}-devd = "\
- ${sysconfdir}/init.d/xendriverdomain \
- ${systemd_unitdir}/system/xendriverdomain.service \
- "
-
-FILES_${PN}-flask = "\
- /boot/${FLASK_POLICY_FILE} \
- "
-
-FILES_${PN}-flask-tools = "\
- ${sbindir}/flask-get-bool \
- ${sbindir}/flask-getenforce \
- ${sbindir}/flask-label-pci \
- ${sbindir}/flask-loadpolicy \
- ${sbindir}/flask-set-bool \
- ${sbindir}/flask-setenforce \
- "
-
-FILES_${PN}-gdbsx = "\
- ${sbindir}/gdbsx \
- "
-
-INSANE_SKIP_${PN}-hvmloader = "arch"
-FILES_${PN}-hvmloader = "\
- ${libdir}/xen/boot/hvmloader \
- "
-
-FILES_${PN}-kdd = "\
- ${sbindir}/kdd \
- ${sbindir}/xen-kdd \
- "
-
-FILES_${PN}-livepatch += " \
- ${sbindir}/xen-livepatch \
- "
-
-FILES_${PN}-misc = "\
- ${bindir}/xencons \
- ${bindir}/xencov_split \
- ${bindir}/xen-detect \
- ${libdir}/xen/bin/xenpvnetboot \
- ${libdir}/xen/bin/depriv-fd-checker \
- ${sbindir}/gtracestat \
- ${sbindir}/gtraceview \
- ${sbindir}/xen-bugtool \
- ${sbindir}/xencov \
- ${sbindir}/xenperf \
- ${sbindir}/xenpm \
- ${sbindir}/xsview \
- ${sbindir}/xen-diag \
- ${sbindir}/xen-tmem-list-parse \
- ${sbindir}/xen-python-path \
- ${sbindir}/xen-ringwatch \
- ${sbindir}/xen-hptool \
- ${sbindir}/xen-hvmcrash \
- ${sbindir}/xen-hvmctx \
- ${sbindir}/xenlockprof \
- ${sbindir}/xen-lowmemd \
- ${sbindir}/xen-mfndump \
- ${libdir}/xen/bin/verify-stream-v2 \
- ${libdir}/xen/bin/convert-legacy-stream \
- "
-
-FILES_${PN}-pygrub = "\
- ${bindir}/pygrub \
- ${libdir}/xen/bin/pygrub \
- "
-
-FILES_${PN}-python = "\
- ${libdir}/python2.7 \
- "
-
-INSANE_SKIP_${PN} = "already-stripped"
-INSANE_SKIP_${PN}-qemu = "arch"
-FILES_${PN}-qemu = " \
- ${datadir}/xen/qemu \
- ${libdir}/xen/bin/qemu-system-i386 \
- ${libdir}/xen/bin/qemu-system-x86_64 \
- ${libdir}/xen/bin/qemu-img \
- ${libdir}/xen/bin/qemu-nbd \
- ${libdir}/xen/bin/qemu-ga \
- ${libdir}/xen/bin/qemu-io \
- ${libdir}/xen/bin/qemu-dm \
- ${libdir}/xen/bin/virtfs-proxy-helper \
- /usr/libexec/qemu-bridge-helper \
- ${libdir}/xen/libexec/qemu-bridge-helper \
- /usr/etc/qemu \
- /usr/etc/qemu/target-x86_64.conf \
- ${libdir}/xen/etc/qemu/target-x86_64.conf \
- ${datadir}/qemu-xen \
- ${datadir}/qemu-xen/qemu \
- ${datadir}/qemu-xen/qemu/bamboo.dtb \
- ${datadir}/qemu-xen/qemu/pxe-pcnet.rom \
- ${datadir}/qemu-xen/qemu/vgabios-vmware.bin \
- ${datadir}/qemu-xen/qemu/pxe-eepro100.rom \
- ${datadir}/qemu-xen/qemu/pxe-e1000.rom \
- ${datadir}/qemu-xen/qemu/openbios-ppc \
- ${datadir}/qemu-xen/qemu/multiboot.bin \
- ${datadir}/qemu-xen/qemu/vgabios-cirrus.bin \
- ${datadir}/qemu-xen/qemu/bios.bin \
- ${datadir}/qemu-xen/qemu/vgabios-stdvga.bin \
- ${datadir}/qemu-xen/qemu/palcode-clipper \
- ${datadir}/qemu-xen/qemu/pxe-ne2k_pci.rom \
- ${datadir}/qemu-xen/qemu/spapr-rtas.bin \
- ${datadir}/qemu-xen/qemu/slof.bin \
- ${datadir}/qemu-xen/qemu/vgabios-qxl.bin \
- ${datadir}/qemu-xen/qemu/pxe-rtl8139.rom \
- ${datadir}/qemu-xen/qemu/openbios-sparc64 \
- ${datadir}/qemu-xen/qemu/pxe-virtio.rom \
- ${datadir}/qemu-xen/qemu/kvmvapic.bin \
- ${datadir}/qemu-xen/qemu/openbios-sparc32 \
- ${datadir}/qemu-xen/qemu/petalogix-s3adsp1800.dtb \
- ${datadir}/qemu-xen/qemu/sgabios.bin \
- ${datadir}/qemu-xen/qemu/linuxboot.bin \
- ${datadir}/qemu-xen/qemu/qemu-icon.bmp \
- ${datadir}/qemu-xen/qemu/ppc_rom.bin \
- ${datadir}/qemu-xen/qemu/vgabios.bin \
- ${datadir}/qemu-xen/qemu/s390-zipl.rom \
- ${datadir}/qemu-xen/qemu/petalogix-ml605.dtb \
- ${datadir}/qemu-xen/qemu/keymaps \
- ${datadir}/qemu-xen/qemu/keymaps/common \
- ${datadir}/qemu-xen/qemu/keymaps/th \
- ${datadir}/qemu-xen/qemu/keymaps/is \
- ${datadir}/qemu-xen/qemu/keymaps/en-gb \
- ${datadir}/qemu-xen/qemu/keymaps/ar \
- ${datadir}/qemu-xen/qemu/keymaps/fr-be \
- ${datadir}/qemu-xen/qemu/keymaps/ru \
- ${datadir}/qemu-xen/qemu/keymaps/hu \
- ${datadir}/qemu-xen/qemu/keymaps/de-ch \
- ${datadir}/qemu-xen/qemu/keymaps/no \
- ${datadir}/qemu-xen/qemu/keymaps/fr \
- ${datadir}/qemu-xen/qemu/keymaps/pl \
- ${datadir}/qemu-xen/qemu/keymaps/fr-ca \
- ${datadir}/qemu-xen/qemu/keymaps/de \
- ${datadir}/qemu-xen/qemu/keymaps/fr-ch \
- ${datadir}/qemu-xen/qemu/keymaps/bepo \
- ${datadir}/qemu-xen/qemu/keymaps/lv \
- ${datadir}/qemu-xen/qemu/keymaps/ja \
- ${datadir}/qemu-xen/qemu/keymaps/da \
- ${datadir}/qemu-xen/qemu/keymaps/lt \
- ${datadir}/qemu-xen/qemu/keymaps/hr \
- ${datadir}/qemu-xen/qemu/keymaps/es \
- ${datadir}/qemu-xen/qemu/keymaps/modifiers \
- ${datadir}/qemu-xen/qemu/keymaps/sl \
- ${datadir}/qemu-xen/qemu/keymaps/it \
- ${datadir}/qemu-xen/qemu/keymaps/nl \
- ${datadir}/qemu-xen/qemu/keymaps/fo \
- ${datadir}/qemu-xen/qemu/keymaps/mk \
- ${datadir}/qemu-xen/qemu/keymaps/pt-br \
- ${datadir}/qemu-xen/qemu/keymaps/tr \
- ${datadir}/qemu-xen/qemu/keymaps/sv \
- ${datadir}/qemu-xen/qemu/keymaps/fi \
- ${datadir}/qemu-xen/qemu/keymaps/en-us \
- ${datadir}/qemu-xen/qemu/keymaps/et \
- ${datadir}/qemu-xen/qemu/keymaps/nl-be \
- ${datadir}/qemu-xen/qemu/keymaps/pt \
- ${bindir}/qemu-nbd-xen \
- ${bindir}/qemu-img-xen \
- "
-
-FILES_${PN}-remus = "\
- ${bindir}/remus \
- ${sysconfdir}/xen/scripts/remus-netbuf-setup \
- "
-
-FILES_${PN}-scripts-network = " \
- ${sysconfdir}/xen/scripts/colo-proxy-setup \
- ${sysconfdir}/xen/scripts/network-bridge \
- ${sysconfdir}/xen/scripts/network-nat \
- ${sysconfdir}/xen/scripts/network-route \
- ${sysconfdir}/xen/scripts/qemu-ifup \
- ${sysconfdir}/xen/scripts/vif2 \
- ${sysconfdir}/xen/scripts/vif-bridge \
- ${sysconfdir}/xen/scripts/vif-common.sh \
- ${sysconfdir}/xen/scripts/vif-nat \
- ${sysconfdir}/xen/scripts/vif-openvswitch \
- ${sysconfdir}/xen/scripts/vif-route \
- ${sysconfdir}/xen/scripts/vif-setup \
- "
-
-FILES_${PN}-scripts-block = " \
- ${sysconfdir}/xen/scripts/blktap \
- ${sysconfdir}/xen/scripts/block \
- ${sysconfdir}/xen/scripts/block-common.sh \
- ${sysconfdir}/xen/scripts/block-dummy \
- ${sysconfdir}/xen/scripts/block-enbd \
- ${sysconfdir}/xen/scripts/block-iscsi \
- ${sysconfdir}/xen/scripts/block-nbd \
- ${sysconfdir}/xen/scripts/block-drbd-probe \
- ${sysconfdir}/xen/scripts/block-tap \
- ${sysconfdir}/xen/scripts/vscsi \
- "
-
-FILES_${PN}-scripts-common = " \
- ${sysconfdir}/xen/scripts/external-device-migrate \
- ${sysconfdir}/xen/scripts/hotplugpath.sh \
- ${sysconfdir}/xen/scripts/locking.sh \
- ${sysconfdir}/xen/scripts/logging.sh \
- ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \
- ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \
- ${sysconfdir}/xen/scripts/xen-network-common.sh \
- ${sysconfdir}/xen/scripts/xen-script-common.sh \
- "
-
-INSANE_SKIP_${PN}-shim = "arch"
-FILES_${PN}-shim = " \
- ${libdir}/xen/boot/xen-shim \
- "
-
-FILES_${PN}-volatiles = "\
- ${sysconfdir}/default/volatiles/99_xen \
- ${sysconfdir}/tmpfiles.d/xen.conf \
- "
-
-FILES_${PN}-xcutils = "\
- ${libdir}/xen/bin/lsevtchn \
- ${libdir}/xen/bin/readnotes \
- ${libdir}/xen/bin/xc_restore \
- ${libdir}/xen/bin/xc_save \
- "
-
-FILES_${PN}-xend-examples = "\
- ${sysconfdir}/xen/xend-config.sxp \
- ${sysconfdir}/xen/xend-pci-permissive.sxp \
- ${sysconfdir}/xen/xend-pci-quirks.sxp \
- "
-
-FILES_${PN}-xenpaging = "\
- ${libdir}/xen/bin/xenpaging \
- ${localstatedir}/lib/xen/xenpaging \
- "
-
-FILES_${PN}-xenpmd = "\
- ${sbindir}/xenpmd \
- "
-
-FILES_${PN}-xenstat = "\
- ${sbindir}/xentop \
- "
-
-FILES_${PN}-xenstore = "\
- ${bindir}/xenstore \
- ${bindir}/xenstore-chmod \
- ${bindir}/xenstore-control \
- ${bindir}/xenstore-exists \
- ${bindir}/xenstore-list \
- ${bindir}/xenstore-ls \
- ${bindir}/xenstore-read \
- ${bindir}/xenstore-rm \
- ${bindir}/xenstore-watch \
- ${bindir}/xenstore-write \
- "
-
-FILES_${PN}-xenstored = "\
- ${sbindir}/xenstored \
- ${localstatedir}/lib/xenstored \
- "
-
-FILES_${PN}-xentrace = "\
- ${bindir}/xentrace \
- ${bindir}/xentrace_format \
- ${bindir}/xentrace_setsize \
- ${libdir}/xen/bin/xenctx \
- ${bindir}/xenalyze \
- ${sbindir}/xentrace \
- ${sbindir}/xentrace_setsize \
- "
-
-FILES_${PN}-xen-watchdog = "\
- ${sbindir}/xenwatchdogd \
- ${sysconfdir}/init.d/xen-watchdog \
- ${systemd_unitdir}/system/xen-watchdog.service \
- "
-
-FILES_${PN}-xl = "\
- ${sysconfdir}/bash_completion.d/xl.sh \
- ${sysconfdir}/xen/xl.conf \
- ${libdir}/xen/bin/libxl-save-helper \
- ${sbindir}/xl \
- ${libdir}/xen/bin/xen-init-dom0 \
- "
-
-FILES_${PN}-xl-examples = "\
- ${sysconfdir}/xen/xlexample.hvm \
- ${sysconfdir}/xen/xlexample.pvlinux \
- "
-
-FILES_${PN}-xm-examples = "\
- ${sysconfdir}/xen/xmexample1 \
- ${sysconfdir}/xen/xmexample2 \
- ${sysconfdir}/xen/xmexample3 \
- ${sysconfdir}/xen/xmexample.hvm \
- ${sysconfdir}/xen/xmexample.hvm-stubdom \
- ${sysconfdir}/xen/xmexample.nbd \
- ${sysconfdir}/xen/xmexample.pv-grub \
- ${sysconfdir}/xen/xmexample.vti \
- "
-
-FILES_${PN}-xenmon = "\
- ${sbindir}/xenbaked \
- ${sbindir}/xentrace_setmask \
- ${sbindir}/xenmon.py \
- ${sbindir}/xenmon \
- "
-
-FILES_${PN}-xm = "\
- ${sysconfdir}/xen/xm-config.xml \
- ${datadir}/xen/create.dtd \
- ${sbindir}/xm \
- "
-
-FILES_${PN}-xencommons += "\
- ${sysconfdir}/default/xencommons \
- ${sysconfdir}/init.d/xencommons \
- ${sysconfdir}/xen/scripts/launch-xenstore \
- ${systemd_unitdir}/modules-load.d/xen.conf \
- ${systemd_unitdir}/system/proc-xen.mount \
- ${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service \
- ${systemd_unitdir}/system/xenconsoled.service \
- ${systemd_unitdir}/system/xen-init-dom0.service \
- ${systemd_unitdir}/system/xenstored.service \
- ${systemd_unitdir}/system/var-lib-xenstored.mount \
- "
-
-FILES_${PN}-xend += " \
- ${sysconfdir}/init.d/xend \
- ${sbindir}/xend \
- "
-
-FILES_${PN}-xendomains += "\
- ${libdir}/xen/bin/xendomains \
- ${sysconfdir}/default/xendomains \
- ${sysconfdir}/init.d/xendomains \
- ${sysconfdir}/sysconfig/xendomains \
- ${systemd_unitdir}/system/xendomains.service \
- "
-
-# configure init.d scripts
-INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xencommons ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd"
-INITSCRIPT_NAME_${PN}-xencommons = "xencommons"
-INITSCRIPT_PARAMS_${PN}-xencommons = "defaults 80"
-INITSCRIPT_NAME_${PN}-xen-watchdog = "xen-watchdog"
-INITSCRIPT_PARAMS_${PN}-xen-watchdog = "defaults 81"
-INITSCRIPT_NAME_${PN}-xend = "xend"
-INITSCRIPT_PARAMS_${PN}-xend = "defaults 82"
-INITSCRIPT_NAME_${PN}-xendomains = "xendomains"
-INITSCRIPT_PARAMS_${PN}-xendomains = "defaults 83"
-INITSCRIPT_NAME_${PN}-devd = "xendriverdomain"
-INITSCRIPT_PARAMS_${PN}-devd = "defaults 82"
-
-# systemd packages
-SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains ${PN}-devd"
-SYSTEMD_SERVICE_${PN}-devd = "xendriverdomain.service"
-SYSTEMD_SERVICE_${PN}-xen-watchdog = "xen-watchdog.service"
-SYSTEMD_SERVICE_${PN}-xencommons = " \
- proc-xen.mount \
- var-lib-xenstored.mount \
- xen-qemu-dom0-disk-backend.service \
- xenconsoled.service \
- xen-init-dom0.service \
- xenstored.service \
- "
-SYSTEMD_SERVICE_${PN}-xendomains = "xendomains.service"
-
#### REQUIRED ENVIRONMENT VARIABLES ####
export BUILD_SYS
export HOST_SYS
@@ -852,8 +73,8 @@ libexecdir = "${libdir}"
export XEN_OS = "Linux"
# this is used for the header (#!${bindir}/python) of the install python scripts
-export PYTHONPATH="${bindir}/python"
-export ac_cv_path_PYTHONPATH="${bindir}/python"
+export PYTHONPATH="${bindir}/env python3"
+export ac_cv_path_PYTHONPATH="${bindir}/env python3"
export DISTUTILS_BUILD_ARGS
export DISTUTILS_INSTALL_ARGS
@@ -867,38 +88,56 @@ export CROSS_COMPILE="${TARGET_PREFIX}"
# overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'"
export LDFLAGS=""
-# Yocto injects -mfpmath=sse for some machine types into the CFLAGS which
-# conflicts with -mno-sse so instead we strip -mfpmath=sse instead of
-# patching the build to be ok with this
-TUNE_CCARGS := "${@oe.utils.str_filter_out('-mfpmath=sse', '${TUNE_CCARGS}', d)}"
-TUNE_CCARGS := "${@oe.utils.str_filter_out('-msse4.2', '${TUNE_CCARGS}', d)}"
-
-# Supply the full set of compiler flags via the tool variables
-# Yocto supplys _FORTIFY_SOURCE via CC/CPP/CXX but optimization -O via C*FLAGS
-CC_append = " ${CFLAGS}"
-CPP_append = " ${CPPFLAGS}"
-CXX_append = " ${CXXFLAGS}"
+# No additional C flags for the main hypervisor build
+EXTRA_CFLAGS_XEN_CORE ?= ""
+# Add prefix maps to support buildpaths QA test and reproducibility
+DEBUG_PREFIX_MAP:append = " \
+ -ffile-prefix-map=${S}=${PN}-source \
+ -fdebug-prefix-map=${WORKDIR}=${PN} \
+ "
+
+# - The Xen tools build for x86 systems with HVM-mode enabled includes hvmloader
+# which fails to build when "-m64" is included in flags set via the
+# EXTRA_CFLAGS_XEN_TOOLS: so clear TUNE_CCARGS on x86 to prevent that.
+TUNE_CCARGS:x86-64=""
+
+# - Yocto supplies the _FORTIFY_SOURCE flag via CC/CPP/CXX but then passes the
+# optimization -O via C*FLAGS which is problematic when the CFLAGS are cleared
+# within the build because compilation fails with the compiler stating
+# "_FORTIFY_SOURCE requires compiling with optimization (-O)".
+# - Move HOST_CC_ARCH into the Xen-provided CFLAGS variables and keep
+# TOOLCHAIN_OPTIONS set via CC: this enables hvmloader to be built correctly.
+# It must not be compiled with SSE compiler options enabled and the Xen build
+# explicitly clears CFLAGS to ensure that, so such options must not be passed
+# in via the tool variable. hvmloader is required to run HVM-mode guest VMs.
+CC="${CCACHE}${HOST_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}"
+EXTRA_CFLAGS_XEN_TOOLS="${HOST_CC_ARCH} ${CFLAGS}"
+# 32-bit ARM needs the TUNE_CCARGS component of HOST_CC_ARCH to be passed
+# in CC to ensure that configure can compile binaries for the right arch.
+CC:arm="${CCACHE}${HOST_PREFIX}gcc ${TUNE_CCARGS} ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP} ${CC_REPRODUCIBLE_OPTIONS}"
+
+# There are no Xen-provided variables for C++, so append to the tool variables:
+CPP:append = " ${CPPFLAGS}"
+CXX:append = " ${CXXFLAGS}"
EXTRA_OECONF += " \
--exec-prefix=${prefix} \
--prefix=${prefix} \
--host=${HOST_SYS} \
- --with-systemd=${systemd_unitdir}/system \
- --with-systemd-modules-load=${systemd_unitdir}/modules-load.d \
--disable-stubdom \
--disable-ioemu-stubdom \
--disable-pv-grub \
--disable-xenstore-stubdom \
--disable-rombios \
--disable-ocamltools \
- --with-initddir=${INIT_D_DIR} \
- --with-sysconfig-leaf-dir=default \
- --with-system-qemu=/usr/bin/qemu-system-i386 \
--disable-qemu-traditional \
+ ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', \
+ '--enable-pvshim --with-system-seabios="/usr/share/firmware/bios.bin"', \
+ '--disable-pvshim --disable-seabios', d)} \
"
-EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.bin"
-EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.cirrus.bin"
+EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.bin"
+EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.8a.cirrus.bin"
EXTRA_OEMAKE += "SEABIOS_ROM=${STAGING_DIR_HOST}/usr/share/firmware/bios.bin"
EXTRA_OEMAKE += "ETHERBOOT_ROMS=${STAGING_DIR_HOST}/usr/share/firmware/rtl8139.rom"
@@ -920,10 +159,8 @@ EXTRA_OEMAKE += "${@['', 'XEN_WHOAMI=${PF} XEN_DOMAIN=${DISTRO} XEN_BUILD_HOST=$
[d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}${@get_build_time_vars(d)}"
# Improve build reproducibility: compiler flags to remove filesystem differences.
-# Suppress __FILE__ via an alternative builtin.
-CC += "${@['', '-gno-record-gcc-switches -Wno-builtin-macro-redefined -D__FILE__=__VERSION__ ' + \
- '-fdebug-prefix-map=${WORKDIR}=${PN}'] \
- [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}"
+CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches'] \
+ [d.getVar('BUILD_REPRODUCIBLE_BINARIES') == '1']}"
# check for XSM in package config to allow XSM_ENABLE to be set
python () {
@@ -955,28 +192,8 @@ do_post_patch() {
fi
}
-do_post_patch_append_arm() {
- # The hypervisor binary must not be built with the hard floating point ABI.
- echo "CC := \$(filter-out ${TUNE_CCARGS},\$(CC))" >> ${B}/xen/arch/arm/Rules.mk
-}
-
addtask post_patch after do_patch before do_configure
-do_stubs() {
- # no stubs-32.h in our 64-bit sysroot - hack it into tools/include/gnu
- if ! test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-32.h ; then
- if test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h ; then
- test -d ${S}/tools/include/gnu || mkdir ${S}/tools/include/gnu
- cat ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h | grep -v stub_bdflush | grep -v stub_getmsg | grep -v stub_putmsg > ${S}/tools/include/gnu/stubs-32.h
- echo \#define __stub___kernel_cosl >> ${S}/tools/include/gnu/stubs-32.h
- echo \#define __stub___kernel_sinl >> ${S}/tools/include/gnu/stubs-32.h
- echo \#define __stub___kernel_tanl >> ${S}/tools/include/gnu/stubs-32.h
- fi
- fi
-}
-
-addtask stubs after do_configure before do_compile
-
# Allow all hypervisor settings in a defconfig
EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y"
# Build release versions always. Technically since we track release
@@ -984,7 +201,8 @@ EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y"
# from staging that reverts this
EXTRA_OEMAKE += "debug=n"
-do_configure() {
+do_configure_common() {
+ cd ${S}
#./configure --enable-xsmpolicy does not set XSM_ENABLE must be done manually
if [ "${XSM_ENABLED}" = "1" ]; then
@@ -992,145 +210,26 @@ do_configure() {
fi
if [ -f "${WORKDIR}/defconfig" ]; then
- cp "${WORKDIR}/defconfig" "${B}/xen/.config" || \
+ cp "${WORKDIR}/defconfig" "${S}/xen/.config" || \
bbfatal "Unable to copy defconfig to .config"
fi
+ unset CFLAGS
+
# do configure
- oe_runconf
- if [ ! -e ${STAGING_INCDIR}/bits/long-double-32.h ]; then
- cp ${STAGING_INCDIR}/bits/long-double-64.h ${STAGING_INCDIR}/bits/long-double-32.h
- fi
+ oe_runconf EXTRA_CFLAGS_XEN_CORE="${EXTRA_CFLAGS_XEN_CORE}" \
+ EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}" \
+ PYTHON="${PYTHON}"
}
-do_compile() {
+do_compile:prepend() {
# workaround for build bug when CFLAGS is exported
# https://www.mail-archive.com/xen-devel@lists.xen.org/msg67822.html
unset CFLAGS
-
- # Workaround for parallel build bug: build xen first.
- # https://lists.xenproject.org/archives/html/xen-devel/2018-07/msg02551.html
- oe_runmake xen
- oe_runmake
}
-do_install() {
+do_install:prepend() {
# CFLAGS is used to set PY_CFLAGS which affects the pygrub install
# so also need to unset CFLAGS here:
unset CFLAGS
- oe_runmake DESTDIR="${D}" install
-
- # remove installed volatiles
- rm -rf ${D}${base_prefix}/run \
- ${D}${localstatedir}/run \
- ${D}${localstatedir}/lock \
- ${D}${localstatedir}/log \
- ${D}${localstatedir}/volatile \
- ${D}${localstatedir}/lib/xen
-
- VOLATILE_DIRS=" \
- ${base_prefix}/run/xenstored \
- ${base_prefix}/run/xend \
- ${base_prefix}/run/xend/boot \
- ${base_prefix}/run/xen \
- ${localstatedir}/log/xen \
- ${localstatedir}/lock/xen \
- ${localstatedir}/lock/subsys \
- ${localstatedir}/lib/xen \
- "
-
- # install volatiles using populate_volatiles mechanism
- install -d ${D}${sysconfdir}/default/volatiles
- for i in $VOLATILE_DIRS; do
- echo "d root root 0755 $i none" >> ${D}${sysconfdir}/default/volatiles/99_xen
- done
-
- # workaround for xendomains script which searchs sysconfig if directory exists
- install -d ${D}${sysconfdir}/sysconfig
- ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains
-
- # systemd
- if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
- # install volatiles using systemd tmpfiles.d
- install -d ${D}${sysconfdir}/tmpfiles.d
- for i in $VOLATILE_DIRS; do
- echo "d $i 0755 root root - -" >> ${D}${sysconfdir}/tmpfiles.d/xen.conf
- done
- fi
-
- # fixup default path to qemu-system-i386
- sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons
-
- if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then
- sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \
- ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service
- fi
-}
-
-pkg_postinst_${PN}-volatiles() {
- if [ -z "$D" ]; then
- if command -v systemd-tmpfiles >/dev/null; then
- systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf
- elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
- ${sysconfdir}/init.d/populate-volatile.sh update
- fi
- fi
-}
-
-do_deploy() {
- install -d ${DEPLOYDIR}
-
- if [ -f ${D}/boot/xen ]; then
- install -m 0644 ${D}/boot/xen ${DEPLOYDIR}/xen-${MACHINE}
- fi
-
- if [ -f ${D}/boot/xen.gz ]; then
- install -m 0644 ${D}/boot/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz
- fi
-
- if [ -f ${D}/usr/lib64/efi/xen.efi ]; then
- install -m 0644 ${D}/usr/lib64/efi/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi
- fi
-
- # Install the flask policy in the deploy directory if it exists
- if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then
- install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR}
- ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE}
- fi
-}
-
-addtask deploy after do_populate_sysroot
-
-# Enable use of menuconfig directly from bitbake and also within the devshell
-OE_TERMINAL_EXPORTS += "HOST_EXTRACFLAGS HOSTLDFLAGS TERMINFO"
-HOST_EXTRACFLAGS = "${BUILD_CFLAGS} ${BUILD_LDFLAGS}"
-HOSTLDFLAGS = "${BUILD_LDFLAGS}"
-TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo"
-do_devshell[depends] += "ncurses-native:do_populate_sysroot"
-
-KCONFIG_CONFIG_COMMAND ??= "menuconfig"
-python do_menuconfig() {
- import shutil
-
- try:
- mtime = os.path.getmtime("xen/.config")
- shutil.copy("xen/.config", "xen/.config.orig")
- except OSError:
- mtime = 0
-
- oe_terminal("${SHELL} -c \"cd xen; XEN_CONFIG_EXPERT=y make %s; if [ \$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'),
- d.getVar('PN') + ' Configuration', d)
-
- try:
- newmtime = os.path.getmtime("xen/.config")
- except OSError:
- newmtime = 0
-
- if newmtime > mtime:
- bb.note("Configuration changed, recompile will be forced")
- bb.build.write_taint('do_compile', d)
}
-do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
-do_menuconfig[nostamp] = "1"
-do_menuconfig[dirs] = "${B}"
-addtask menuconfig after do_configure
diff --git a/recipes-extended/xen/xen_4.12.0.bb b/recipes-extended/xen/xen_4.12.0.bb
deleted file mode 100644
index 246be7a0..00000000
--- a/recipes-extended/xen/xen_4.12.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-require xen.inc
-
-SRC_URI = " \
- https://downloads.xenproject.org/release/xen/${PV}/xen-${PV}.tar.gz \
- file://0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch \
- "
-
-SRC_URI[md5sum] = "7d24d4541e3025421e02384cabc3528b"
-SRC_URI[sha256sum] = "6e5455e4a58dcb2339bfcd2a89842728068b530aa62501843793f7cf743c4d64"
-
-S = "${WORKDIR}/xen-${PV}"
diff --git a/recipes-extended/xen/xen_4.17.bb b/recipes-extended/xen/xen_4.17.bb
new file mode 100644
index 00000000..d83fa97f
--- /dev/null
+++ b/recipes-extended/xen/xen_4.17.bb
@@ -0,0 +1,22 @@
+# xen 4.17.2 release sha
+SRCREV ?= "0ebd2e49bcd0f566ba6b9158555942aab8e41332"
+
+XEN_REL ?= "4.17"
+XEN_BRANCH ?= "stable-${XEN_REL}"
+
+SRC_URI = " \
+ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
+ "
+
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
+
+PV = "${XEN_REL}+stable"
+
+S = "${WORKDIR}/git"
+
+require xen.inc
+require xen-hypervisor.inc
+
+TOOLCHAIN = "gcc"
+LDFLAGS:remove = "-fuse-ld=lld"
diff --git a/recipes-extended/xen/xen_4.18.bb b/recipes-extended/xen/xen_4.18.bb
new file mode 100644
index 00000000..2ad7704e
--- /dev/null
+++ b/recipes-extended/xen/xen_4.18.bb
@@ -0,0 +1,21 @@
+# tag: RELEASE-4.18.0
+SRCREV ?= "4da8ca9cb9cfdb92c9dd09d5270ae16a3b2dbc89"
+
+XEN_REL ?= "4.18"
+XEN_BRANCH ?= "stable-4.18"
+
+SRC_URI = " \
+ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
+ "
+
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
+
+PV = "${XEN_REL}+stable"
+
+S = "${WORKDIR}/git"
+
+DEFAULT_PREFERENCE ??= "-1"
+
+require xen.inc
+require xen-hypervisor.inc
diff --git a/recipes-extended/xen/xen_git.bb b/recipes-extended/xen/xen_git.bb
index 5f950e6f..79078878 100644
--- a/recipes-extended/xen/xen_git.bb
+++ b/recipes-extended/xen/xen_git.bb
@@ -1,18 +1,21 @@
-require xen.inc
+# master status on 2023-11-24
+SRCREV ?= "03cf7ca23e0e876075954c558485b267b7d02406"
+
+XEN_REL ?= "4.19"
+XEN_BRANCH ?= "master"
-SRCREV ?= "cb70a26f78848fe45f593f7ebc9cfaac760a791b"
+SRC_URI = " \
+ git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
+ file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
+ "
-XEN_REL = "4.13"
-XEN_BRANCH = "staging"
-FLASK_POLICY_FILE = "xenpolicy-${XEN_REL}-unstable"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
-PV = "${XEN_REL}+git${SRCPV}"
+PV = "${XEN_REL}+git"
S = "${WORKDIR}/git"
-SRC_URI = " \
- git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
- file://0001-python-pygrub-pass-DISTUTILS-xen.4.12.patch \
- "
+DEFAULT_PREFERENCE ??= "-1"
-DEFAULT_PREFERENCE = "-1"
+require xen.inc
+require xen-hypervisor.inc
diff --git a/recipes-extended/xen/xtf_git.bb b/recipes-extended/xen/xtf_git.bb
new file mode 100644
index 00000000..f1e76f7b
--- /dev/null
+++ b/recipes-extended/xen/xtf_git.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Xen Test Framework"
+HOMEPAGE = "https://xenbits.xenproject.org/docs/xtf/"
+LICENSE = "BSD-2-Clause"
+
+# For additional reference on XTF, please see:
+# https://static.sched.com/hosted_files/xendeveloperanddesignsummit2017/79/xtf.pdf
+
+SRC_URI = "git://xenbits.xen.org/xtf;branch=master"
+SRCREV = "3e800027016ea4eb19887bf626b46f45fc43fa5d"
+
+COMPATIBLE_HOST = '(x86_64.*).*-linux'
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=a5680865974e05cf0510615ee1d745d8"
+
+PV = "0+git"
+
+S = "${WORKDIR}/git"
+
+inherit python3native
+
+PACKAGES = "${PN}"
+
+FILES:${PN} = " \
+ ${libexecdir}/* \
+ "
+
+RDEPENDS:${PN} = " \
+ xen-tools-xl \
+ python3 \
+ "
+
+do_compile() {
+ oe_runmake CC="${TARGET_PREFIX}gcc ${TOOLCHAIN_OPTIONS} ${DEBUG_PREFIX_MAP}" \
+ CPP="${CPP}" \
+ LD="${LD}" \
+ OBJCOPY="${OBJCOPY}" \
+ PYTHON="${PYTHON}"
+ # switch the shebang to python3
+ sed 's,^\(#!/usr/bin/env python\)$,\13,' -i "${B}/xtf-runner"
+}
+
+do_install() {
+ # packaging: rpmbuild can package the XTF test unikernels when they are
+ # installed as non-executable files (they are run within VMs anyway).
+ oe_runmake install DESTDIR="${D}" \
+ xtfdir="${libexecdir}/${BPN}" \
+ PYTHON="${PYTHON}" \
+ INSTALL_PROGRAM="install -m 644 -p"
+ install -m 755 -p "${B}/xtf-runner" "${D}${libexecdir}/${BPN}/xtf-runner"
+}
+
+INSANE_SKIP = "arch"
+# xen-tools-xl is a runtime but not build time dependency
+INSANE_SKIP:${PN} = "build-deps"
+INHIBIT_PACKAGE_STRIP = "1"
+INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
diff --git a/recipes-extended/xvisor/files/0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch b/recipes-extended/xvisor/files/0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch
new file mode 100644
index 00000000..2e53943f
--- /dev/null
+++ b/recipes-extended/xvisor/files/0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch
@@ -0,0 +1,34 @@
+From 022c885d077dce6fad3eca5fd2f54b2070c375d2 Mon Sep 17 00:00:00 2001
+From: Alistair Francis <alistair.francis@wdc.com>
+Date: Fri, 17 May 2019 14:21:44 -0700
+Subject: [PATCH] TESTS: Don't specify mabi or march for RISC-V
+
+To avoid
+ can't link double-float modules with soft-float modules
+errors when building 32-bit baremetal guests don't specify mabi
+or march.
+
+Upstream-Status: Inappropriate [Fixes a 32-bit Yocto flow bug]
+Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
+---
+ tests/riscv/common/basic/Makefile.inc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tests/riscv/common/basic/Makefile.inc b/tests/riscv/common/basic/Makefile.inc
+index 9fa5abed..f3ff1864 100644
+--- a/tests/riscv/common/basic/Makefile.inc
++++ b/tests/riscv/common/basic/Makefile.inc
+@@ -24,8 +24,8 @@
+ ARCH_CPPFLAGS=$(board_cppflags) -DFIRMWARE_BOOT
+ ARCH_CPPFLAGS+=-DTEXT_START=$(board_text_start)
+ ifeq ($(board_32bit),y)
+-ARCH_CFLAGS=$(board_cflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mabi=ilp32 -march=rv32imafdc -mcmodel=medany
+-ARCH_ASFLAGS=$(board_asflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mabi=ilp32 -march=rv32imafdc -mcmodel=medany
++ARCH_CFLAGS=$(board_cflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mcmodel=medany
++ARCH_ASFLAGS=$(board_asflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mcmodel=medany
+ else
+ ARCH_CFLAGS=$(board_cflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mabi=lp64 -march=rv64imafdc -mcmodel=medany
+ ARCH_ASFLAGS=$(board_asflags) -fno-omit-frame-pointer -fno-optimize-sibling-calls -mno-save-restore -mstrict-align -mabi=lp64 -march=rv64imafdc -mcmodel=medany
+--
+2.21.0
+
diff --git a/recipes-extended/xvisor/files/0001-build-use-usr-bin-env-for-python-scripts.patch b/recipes-extended/xvisor/files/0001-build-use-usr-bin-env-for-python-scripts.patch
new file mode 100644
index 00000000..1e37c49e
--- /dev/null
+++ b/recipes-extended/xvisor/files/0001-build-use-usr-bin-env-for-python-scripts.patch
@@ -0,0 +1,38 @@
+From eb351ca63a86f53cfb18987284a1445d543dfe56 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@gmail.com>
+Date: Mon, 29 Nov 2021 17:20:00 -0500
+Subject: [PATCH] build: use /usr/bin/env for python scripts
+
+Without this, we break on hosts without /usr/bin/python
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
+---
+ tools/scripts/d2c.py | 2 +-
+ tools/scripts/memimg.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/tools/scripts/d2c.py b/tools/scripts/d2c.py
+index b46a7bc4..0a6bce08 100755
+--- a/tools/scripts/d2c.py
++++ b/tools/scripts/d2c.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+ #/**
+ # Copyright (c) 2013 Anup Patel.
+ # All rights reserved.
+diff --git a/tools/scripts/memimg.py b/tools/scripts/memimg.py
+index 423c9c33..ba2f06cb 100755
+--- a/tools/scripts/memimg.py
++++ b/tools/scripts/memimg.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/env python3
+ #/**
+ # Copyright (c) 2011 Anup Patel.
+ # All rights reserved.
+--
+2.19.1
+
diff --git a/recipes-extended/xvisor/xvisor-configs.inc b/recipes-extended/xvisor/xvisor-configs.inc
new file mode 100644
index 00000000..cd873cb3
--- /dev/null
+++ b/recipes-extended/xvisor/xvisor-configs.inc
@@ -0,0 +1,25 @@
+def get_oemake_config(a, d):
+ import re
+
+ if re.match('armeb$', a): return 'generic-v7-defconfig'
+ elif re.match('aarch64$', a): return 'generic-v8-defconfig'
+ elif re.match('aarch64_be$', a): return 'generic-v8-defconfig'
+ elif re.match('aarch64_ilp32$', a): return 'generic-v8-defconfig'
+ elif re.match('aarch64_be_ilp32$', a): return 'generic-v8-defconfig'
+ elif re.match('riscv32(eb|)$', a): return 'generic-32b-defconfig'
+ elif re.match('riscv64(eb|)$', a): return 'generic-64b-defconfig'
+ else:
+ bb.note("cannot map '%s' to a Xvisor defconfig" % a)
+
+def map_xvisor_arch(a, d):
+ import re
+
+ if re.match('(i.86|x86.64)$', a): return 'x86'
+ elif re.match('armeb$', a): return 'arm'
+ elif re.match('aarch64$', a): return 'arm'
+ elif re.match('aarch64_be$', a): return 'arm'
+ elif re.match('aarch64_ilp32$', a): return 'arm'
+ elif re.match('aarch64_be_ilp32$', a): return 'arm'
+ elif re.match('riscv(32|64|)(eb|)$', a): return 'riscv'
+ else:
+ bb.note("cannot map '%s' to a Xvisor architecture" % a)
diff --git a/recipes-extended/xvisor/xvisor_git.bb b/recipes-extended/xvisor/xvisor_git.bb
new file mode 100644
index 00000000..205951e9
--- /dev/null
+++ b/recipes-extended/xvisor/xvisor_git.bb
@@ -0,0 +1,57 @@
+SUMMARY = "Xvisor is an open-source type-1 hypervisor, which aims at providing a monolithic, light-weight, portable, and flexible virtualization solution."
+DESCRIPTION = "Xvisor primarily supports Full virtualization hence, supports a wide range of unmodified guest operating systems. Paravirtualization is optional for Xvisor and will be supported in an architecture independent manner (such as VirtIO PCI/MMIO devices) to ensure no-change in guest OS for using paravirtualization."
+LICENSE = "GPL-2.0-only"
+LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+DEPENDS += "dtc-native dosfstools-native mtools-native"
+
+require xvisor-configs.inc
+
+inherit autotools-brokensep
+
+PV = "0.3.0+git"
+
+# This version support the RISC-V v0.5.0 Hypervisor extensions
+SRCREV = "6b23764a1439f9d08b2ed2f363da522460d8a22b"
+SRC_URI = "git://github.com/avpatel/xvisor-next.git;branch=master;protocol=https \
+ file://0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch \
+ file://0001-build-use-usr-bin-env-for-python-scripts.patch \
+"
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE += "ARCH=\"${@map_xvisor_arch(d.getVar('TARGET_ARCH'), d)}\" I=${D}"
+
+CONFIG = "${@get_oemake_config(d.getVar('TARGET_ARCH'), d)}"
+
+do_configure() {
+ oe_runmake ${CONFIG}
+}
+
+do_install:append() {
+ install -d ${D}
+ install -m 755 ${B}/build/vmm.* ${D}/
+
+ # We don't need this
+ rm ${D}/system.map
+}
+
+do_deploy () {
+ install -d ${DEPLOY_DIR_IMAGE}
+ install -m 755 ${D}/vmm.* ${DEPLOY_DIR_IMAGE}/
+
+ if [[ -f "${D}/*.dtb" ]]; then
+ install -m 755 ${D}/*.dtb ${DEPLOY_DIR_IMAGE}/
+ fi
+}
+
+addtask deploy after do_install
+
+FILES:${PN} += "/vmm.*"
+FILES:${PN} += "/*.dtb"
+
+COMPATIBLE_HOST = "(aarch64|riscv64|riscv32).*"
+INHIBIT_PACKAGE_STRIP = "1"
+
+# ERROR: xvisor-git-r0 do_package_qa: QA Issue: File /vmm.elf in package xvisor doesn't have GNU_HASH (didn't pass LDFLAGS?) [ldflags]
+# ERROR: xvisor-git-r0 do_package_qa: QA Issue: xvisor: ELF binary /vmm.elf has relocations in .text [textrel]
+INSANE_SKIP:${PN} += "ldflags textrel"
diff --git a/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
index 95034045..f5ae9033 100644
--- a/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
+++ b/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
@@ -1,13 +1,2 @@
-# Change the default Xserver OpenGL configuration for non-x86 distros with Xen: deselect 'glamor'.
-# This removes the dependency on libegl to simplify the domU build.
-#
-# To override this (eg. if wanted for dom0 images) define:
-# REMOVED_OPENGL_PKGCONFIGS = ""
+require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${BPN}_xen.inc', '', d)}
-XEN_REMOVED_OPENGL_PKGCONFIGS ?= "glamor"
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86 = ""
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86-64 = ""
-
-REMOVED_OPENGL_PKGCONFIGS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', "${XEN_REMOVED_OPENGL_PKGCONFIGS}", '', d)}"
-
-OPENGL_PKGCONFIGS_remove = "${REMOVED_OPENGL_PKGCONFIGS}"
diff --git a/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc b/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc
new file mode 100644
index 00000000..1b7e06b2
--- /dev/null
+++ b/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc
@@ -0,0 +1,13 @@
+# Change the default Xserver OpenGL configuration for non-x86 distros with Xen: deselect 'glamor'.
+# This removes the dependency on libegl to simplify the domU build.
+#
+# To override this (eg. if wanted for dom0 images) define:
+# REMOVED_OPENGL_PKGCONFIGS = ""
+
+XEN_REMOVED_OPENGL_PKGCONFIGS ?= "glamor"
+XEN_REMOVED_OPENGL_PKGCONFIGS:x86 = ""
+XEN_REMOVED_OPENGL_PKGCONFIGS:x86-64 = ""
+
+REMOVED_OPENGL_PKGCONFIGS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', "${XEN_REMOVED_OPENGL_PKGCONFIGS}", '', d)}"
+
+OPENGL_PKGCONFIGS:remove = "${REMOVED_OPENGL_PKGCONFIGS}"
diff --git a/recipes-kernel/linux/linux-%.bbappend b/recipes-kernel/linux/linux-%.bbappend
new file mode 100644
index 00000000..dbae9b14
--- /dev/null
+++ b/recipes-kernel/linux/linux-%.bbappend
@@ -0,0 +1,38 @@
+# any kernel recipe with fragment support, that sets LINUX_VERSION to one of the tested
+# values, will get the appropriate fragments included in their SRC_URI
+
+LINUX_MAJOR = "${@(d.getVar('LINUX_VERSION') or "x.y").split('.')[0]}"
+LINUX_MINOR = "${@(d.getVar('LINUX_VERSION') or "x.y").split('.')[1]}"
+
+KERNEL_META_TYPE = "${@'yocto' if d.getVar('SRC_URI').find('type=kmeta') > 0 and d.getVar('SKIP_META_VIRT_KERNEL_INCLUDE') == None else 'none'}"
+
+include ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-${KERNEL_META_TYPE}_${LINUX_MAJOR}.${LINUX_MINOR}_virtualization.inc', '', d)}
+
+python __anonymous () {
+ # Gather the variables
+ virt_enabled = bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'True', '', d )
+ skip_kernel_include_enabled = d.getVar('SKIP_META_VIRT_KERNEL_INCLUDE')
+ kmeta_type = d.getVar('SRC_URI').find('type=kmeta')
+ inhibit_skip_kernel_check_warning = d.getVar('META_VIRT_KERNEL_CHECK_WARNING_INHIBIT')
+
+ #
+ # We warn if:
+ # - the kernel has the capability of merging fragments
+ # - virtualiation is enabled
+ # - and the user has decided to force skip the include
+ #
+ # .. because they have knowingly opted-out of our tested
+ # kernel configurations, and need to be warned.
+ #
+ # BUT, it can also be annoying to get a warning when you
+ # have explcitly opted out. So we have one more warning
+ # that indicates that the impacts are understood and this
+ # really is on purpse. If META_VIRT_KERNEL_CHECK_WARNING_INHIBIT
+ # is set, we won't do the warning.
+ #
+ if virt_enabled and kmeta_type > 0 and skip_kernel_include_enabled:
+ if not inhibit_skip_kernel_check_warning:
+ bb.warn( "You have a kernel-yocto enabled kernel, but have inhibited \
+virtualization kernel features. Some runtime issues may be present in \
+your final image" )
+}
diff --git a/recipes-kernel/linux/linux-yocto-dev.bbappend b/recipes-kernel/linux/linux-yocto-dev.bbappend
deleted file mode 100644
index 20eeba95..00000000
--- a/recipes-kernel/linux/linux-yocto-dev.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-yocto_virtualization.inc', '', d)}
diff --git a/recipes-kernel/linux/linux-yocto-rt_%.bbappend b/recipes-kernel/linux/linux-yocto-rt_%.bbappend
deleted file mode 100644
index 20eeba95..00000000
--- a/recipes-kernel/linux/linux-yocto-rt_%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-yocto_virtualization.inc', '', d)}
diff --git a/recipes-kernel/linux/linux-yocto/docker.cfg b/recipes-kernel/linux/linux-yocto/docker.cfg
deleted file mode 100644
index 79012a6a..00000000
--- a/recipes-kernel/linux/linux-yocto/docker.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_NF_NAT=m
-CONFIG_NF_CONNTRACK=y
-
-CONFIG_DM_THIN_PROVISIONING=m
-
-
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-
-CONFIG_OVERLAY_FS=y
diff --git a/recipes-kernel/linux/linux-yocto/docker.scc b/recipes-kernel/linux/linux-yocto/docker.scc
deleted file mode 100644
index e317456c..00000000
--- a/recipes-kernel/linux/linux-yocto/docker.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable Features needed by docker in addition to LXC features"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware docker.cfg
diff --git a/recipes-kernel/linux/linux-yocto/ebtables.cfg b/recipes-kernel/linux/linux-yocto/ebtables.cfg
deleted file mode 100644
index a3c514e1..00000000
--- a/recipes-kernel/linux/linux-yocto/ebtables.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_T_NAT=m
diff --git a/recipes-kernel/linux/linux-yocto/ebtables.scc b/recipes-kernel/linux/linux-yocto/ebtables.scc
deleted file mode 100644
index b3895e58..00000000
--- a/recipes-kernel/linux/linux-yocto/ebtables.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable ebtables support"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware ebtables.cfg
diff --git a/recipes-kernel/linux/linux-yocto/extra-configs.cfg b/recipes-kernel/linux/linux-yocto/extra-configs.cfg
new file mode 100644
index 00000000..a43bbcbc
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/extra-configs.cfg
@@ -0,0 +1 @@
+# placeholder config fragment for local enable and debug \ No newline at end of file
diff --git a/recipes-kernel/linux/linux-yocto/lxc.cfg b/recipes-kernel/linux/linux-yocto/lxc.cfg
deleted file mode 100644
index 3fefc034..00000000
--- a/recipes-kernel/linux/linux-yocto/lxc.cfg
+++ /dev/null
@@ -1,33 +0,0 @@
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_MEMCG=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_RT_GROUP_SCHED=y
-CONFIG_CHECKPOINT_RESTORE=y
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-
-CONFIG_NET_CLS_CGROUP=m
-CONFIG_BLK_CGROUP=y
-CONFIG_CGROUP_NET_PRIO=y
-
-# Virtual drivers
-CONFIG_HVC_DRIVER=y
-
-# Base support for live boot
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_VFAT_FS=y
-CONFIG_RD_GZIP=y
-
-# Support for virtual ethernet and LXC
-CONFIG_VETH=y
-CONFIG_MACVLAN=y
-CONFIG_VXLAN=m
diff --git a/recipes-kernel/linux/linux-yocto/lxc.scc b/recipes-kernel/linux/linux-yocto/lxc.scc
deleted file mode 100644
index ee518835..00000000
--- a/recipes-kernel/linux/linux-yocto/lxc.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable Features needed by LxC, namespaces, cgroups et.c."
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware lxc.cfg
diff --git a/recipes-kernel/linux/linux-yocto/vswitch.cfg b/recipes-kernel/linux/linux-yocto/vswitch.cfg
deleted file mode 100644
index b1fefc0c..00000000
--- a/recipes-kernel/linux/linux-yocto/vswitch.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_OPENVSWITCH=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_ACT_POLICE=m
diff --git a/recipes-kernel/linux/linux-yocto/vswitch.scc b/recipes-kernel/linux/linux-yocto/vswitch.scc
deleted file mode 100644
index 2790b4fe..00000000
--- a/recipes-kernel/linux/linux-yocto/vswitch.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable in kernel OpenvSwitch module"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware vswitch.cfg
diff --git a/recipes-kernel/linux/linux-yocto/xen.cfg b/recipes-kernel/linux/linux-yocto/xen.cfg
deleted file mode 100644
index 4780311d..00000000
--- a/recipes-kernel/linux/linux-yocto/xen.cfg
+++ /dev/null
@@ -1,50 +0,0 @@
-CONFIG_HYPERVISOR_GUEST=y
-CONFIG_PARAVIRT=y
-CONFIG_XEN=y
-CONFIG_XEN_DOM0=y
-CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=500
-CONFIG_XEN_SAVE_RESTORE=y
-# CONFIG_XEN_DEBUG_FS is not set
-CONFIG_XEN_PVH=y
-CONFIG_MMU_NOTIFIER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_PCI_XEN=y
-CONFIG_XEN_PCIDEV_FRONTEND=y
-CONFIG_SYS_HYPERVISOR=y
-CONFIG_XEN_BLKDEV_FRONTEND=y
-CONFIG_XEN_BLKDEV_BACKEND=m
-CONFIG_XEN_SCSI_FRONTEND=m
-CONFIG_XEN_NETDEV_FRONTEND=y
-CONFIG_XEN_NETDEV_BACKEND=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
-CONFIG_HVC_IRQ=y
-CONFIG_HVC_XEN=y
-CONFIG_HVC_XEN_FRONTEND=y
-CONFIG_XEN_WDT=m
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FB_SYS_FOPS=y
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_XEN_FBDEV_FRONTEND=y
-CONFIG_XEN_BALLOON=y
-CONFIG_XEN_SCRUB_PAGES=y
-CONFIG_XEN_DEV_EVTCHN=y
-CONFIG_XEN_BACKEND=y
-CONFIG_XENFS=y
-CONFIG_XEN_COMPAT_XENFS=y
-CONFIG_XEN_SYS_HYPERVISOR=y
-CONFIG_XEN_XENBUS_FRONTEND=y
-CONFIG_XEN_GNTDEV=m
-CONFIG_XEN_GRANT_DEV_ALLOC=m
-CONFIG_SWIOTLB_XEN=y
-CONFIG_XEN_PCIDEV_BACKEND=m
-CONFIG_XEN_PRIVCMD=y
-CONFIG_XEN_ACPI_PROCESSOR=m
-CONFIG_XEN_MCE_LOG=y
-CONFIG_XEN_HAVE_PVMMU=y
-CONFIG_XEN_EFI=y
-CONFIG_XEN_AUTO_XLATE=y
-CONFIG_XEN_ACPI=y
diff --git a/recipes-kernel/linux/linux-yocto/xen.scc b/recipes-kernel/linux/linux-yocto/xen.scc
deleted file mode 100644
index b588e5df..00000000
--- a/recipes-kernel/linux/linux-yocto/xen.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Xen Kernel Support"
-define KFEATURE_COMPATIBILITY arch
-
-kconf non-hardware xen.cfg
diff --git a/recipes-kernel/linux/linux-yocto/xt-checksum.cfg b/recipes-kernel/linux/linux-yocto/xt-checksum.cfg
deleted file mode 100644
index 58afbff6..00000000
--- a/recipes-kernel/linux/linux-yocto/xt-checksum.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
diff --git a/recipes-kernel/linux/linux-yocto/xt-checksum.scc b/recipes-kernel/linux/linux-yocto/xt-checksum.scc
deleted file mode 100644
index d3804f0c..00000000
--- a/recipes-kernel/linux/linux-yocto/xt-checksum.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Add extra iptables modules"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware xt-checksum.cfg
diff --git a/recipes-kernel/linux/linux-yocto_4.19.bbappend b/recipes-kernel/linux/linux-yocto_4.19.bbappend
deleted file mode 100644
index 617caccb..00000000
--- a/recipes-kernel/linux/linux-yocto_4.19.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/recipes-kernel/linux/linux-yocto_5.2.bbappend b/recipes-kernel/linux/linux-yocto_5.2.bbappend
deleted file mode 100644
index 617caccb..00000000
--- a/recipes-kernel/linux/linux-yocto_5.2.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/recipes-kernel/linux/linux-yocto_6.6_virtualization.inc b/recipes-kernel/linux/linux-yocto_6.6_virtualization.inc
new file mode 100644
index 00000000..59311487
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto_6.6_virtualization.inc
@@ -0,0 +1,4 @@
+# include the baseline meta virtualization configuration options
+# after this include, we can do version specific things
+
+include linux-yocto_virtualization.inc
diff --git a/recipes-kernel/linux/linux-yocto_virtualization.inc b/recipes-kernel/linux/linux-yocto_virtualization.inc
index f050b3fa..9a6554d1 100644
--- a/recipes-kernel/linux/linux-yocto_virtualization.inc
+++ b/recipes-kernel/linux/linux-yocto_virtualization.inc
@@ -1,20 +1,61 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/linux-yocto:"
-SRC_URI += "file://xt-checksum.scc \
- file://ebtables.scc \
- file://vswitch.scc \
- file://lxc.scc \
- file://docker.scc \
- "
-KERNEL_FEATURES_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'features/kvm/qemu-kvm-enable.scc', '', d)}"
+KERNEL_FEATURES:append = " ${@bb.utils.contains('DISTRO_FEATURES', 'kvm', ' features/kvm/qemu-kvm-enable.scc', '', d)}"
KERNEL_MODULE_AUTOLOAD += "nf_conntrack_ipv6 openvswitch"
KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm', '', d)}"
# aufs kernel support required for xen-image-minimal
-KERNEL_FEATURES_append += "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}"
+KERNEL_FEATURES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}"
-KERNEL_FEATURES_append = " cfg/virtio.scc"
+# Always add a local/layer fragment for easy debug and enabling of options
+SRC_URI += "file://extra-configs.cfg"
+
+# if the kernel-yocto meta-data routine automatically starts to add the
+# recipe-sysroot-native, we can do away with this conditional, since all
+# features will be found at the same relative offset from a search
+# directory
+def kernel_cache_cond_feature(src_uri,feature):
+ import re
+ kernel_cache = re.search("kernel-cache", src_uri )
+ if kernel_cache:
+ return feature
+
+ return "../recipe-sysroot-native/kcfg/" + feature
+
+# no conditional, just use the yocto-kernel-cache addition, yes
+# the src_uri isn't used, but we may need to check it in the future
+def kernel_cache_feature(src_uri,feature):
+ return "../recipe-sysroot-native/kcfg/" + feature
+
+def distro_cond_feature(feature_fragment,distro_feature,d):
+ import bb
+ feat = kernel_cache_feature("",feature_fragment)
+ return bb.utils.contains('DISTRO_FEATURES', distro_feature, ' ' + feat, ' ', d)
+
+KERNEL_CACHE_FEATURES ?= "${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/virtio.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/xt-checksum.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/vswitch.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/lxc.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/docker.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/cgroup-hugetlb.scc')} \
+ ${@kernel_cache_feature(d.getVar('SRC_URI'),'cfg/criu.scc')} \
+ "
+KERNEL_FEATURES:append = " ${KERNEL_CACHE_FEATURES}"
+
+# if kernel-yocto has been inherited (how we can check for configuration
+# fragment merging suport at the moment, then add a dependency on the
+# configuration fragment repository. This allows us to be sure that our
+# features can be enabled via the fragments
+do_kernel_metadata[depends] += "${@['', 'yocto-cfg-fragments-native:do_populate_sysroot'][(bb.data.inherits_class('kernel-yocto', d))]}"
# xen kernel support
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}"
+# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}"
+KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/xen.scc', 'xen', d )}"
+
+# k8s and k3s kernel support
+# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k8s', ' file://kubernetes.scc', '', d)}"
+# SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'k3s', ' file://kubernetes.scc', '', d)}"
+KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/kubernetes.scc', 'k8s', d )}"
+KERNEL_FEATURES:append = "${@distro_cond_feature('cfg/kubernetes.scc', 'k3s', d )}"
+
diff --git a/recipes-kernel/linux/yocto-cfg-fragments.bb b/recipes-kernel/linux/yocto-cfg-fragments.bb
new file mode 100644
index 00000000..e6815715
--- /dev/null
+++ b/recipes-kernel/linux/yocto-cfg-fragments.bb
@@ -0,0 +1,37 @@
+HOMEPAGE = "https://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-cache/"
+SUMMARY = "Kernel configuration fragments"
+DESCRIPTION = "Typically used as part of a kernel clone, this is the standalone \
+fragment repository. Making it available to other fragment management schemes \
+"
+SECTION = "devel"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
+
+do_configure[noexec] = "1"
+do_compile[noexec] = "1"
+INHIBIT_DEFAULT_DEPS = "1"
+
+LINUX_VERSION ?= "6.6"
+PV = "v${LINUX_VERSION}+git${SRCREV}"
+
+SRCREV = "eb283ea577df80542d48f0c498365960b4c4ecd9"
+SRC_URI = "\
+ git://git.yoctoproject.org/yocto-kernel-cache;branch=yocto-${LINUX_VERSION} \
+ "
+
+S = "${WORKDIR}/git"
+
+do_install() {
+ install -d ${D}${base_prefix}/kcfg
+
+ # copy the configuration fragments over to the native deploy
+ cp -r ${S}/* ${D}${base_prefix}/kcfg
+ # scripts bring in a bash dependency we don't want
+ rm -rf ${D}${base_prefix}/kcfg/scripts
+}
+
+FILES:${PN} += "kcfg/"
+SYSROOT_DIRS += "${base_prefix}/kcfg"
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/recipes-kernel/lopper/lopper_git.bb b/recipes-kernel/lopper/lopper_git.bb
new file mode 100644
index 00000000..5e2ca69a
--- /dev/null
+++ b/recipes-kernel/lopper/lopper_git.bb
@@ -0,0 +1,34 @@
+SUMMARY = "Device Tree Lopper"
+DESCRIPTION = "Tool for manipulation of system device tree files"
+LICENSE = "BSD-3-Clause"
+SECTION = "bootloader"
+
+SRC_URI = "git://github.com/devicetree-org/lopper.git;branch=master;protocol=https"
+SRCREV = "9159040dab25e2f1e7b447fcbfcd5397b1d618e8"
+S = "${WORKDIR}/git"
+
+BASEVERSION = "1.0.2"
+PV = "v${BASEVERSION}+git"
+
+PYPA_WHEEL = "${PIP_INSTALL_DIST_PATH}/${BPN}-${BASEVERSION}-*.whl"
+
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=8e5f5f691f01c9fdfa7a7f2d535be619"
+
+RDEPENDS:${PN} = " \
+ python3-core \
+ python3-dtc \
+ python3-humanfriendly \
+ "
+
+inherit setuptools3
+
+INHIBIT_PACKAGE_STRIP = "1"
+
+do_install:append() {
+ # we have to remove the vendor'd libfdt, since an attempt to strip it
+ # will be made, and it will fail in a cross environment.
+ rm -rf ${D}/${PYTHON_SITEPACKAGES_DIR}/${BPN}/vendor
+}
+
+BBCLASSEXTEND = "native nativesdk"
+
diff --git a/recipes-networking/cni/README.md b/recipes-networking/cni/README.md
new file mode 100644
index 00000000..3f5f6401
--- /dev/null
+++ b/recipes-networking/cni/README.md
@@ -0,0 +1,3 @@
+# CNI debug tip:
+
+CNI_PATH=/opt/cni/bin /opt/cni/bin/cnitool add uniquename /var/run/netns/testingns \ No newline at end of file
diff --git a/recipes-networking/cni/cni_git.bb b/recipes-networking/cni/cni_git.bb
index b8adf886..fda7af60 100644
--- a/recipes-networking/cni/cni_git.bb
+++ b/recipes-networking/cni/cni_git.bb
@@ -9,59 +9,71 @@ Because of this focus, CNI has a wide range of support and the specification \
is simple to implement. \
"
-SRCREV_cni = "dc71cd2ba60c452c56a0a259f2a23d2afe42b688"
-SRCREV_plugins = "0eddc554c0747200b7b112ce5322dcfa525298cf"
+SRCREV_cni = "b62753aa2bfa365c1ceaff6f25774a8047c896b5"
+SRCREV_plugins = "b6a0e0bc96906f0d3bd6bfcaab0b5ae72292f46c"
+SRCREV_flannel_plugin = "6464faacf5c00e25321573225d74638455ef03a0"
+SRCREV_FORMAT = "cni_plugins"
SRC_URI = "\
- git://github.com/containernetworking/cni.git;nobranch=1;name=cni \
- git://github.com/containernetworking/plugins.git;nobranch=1;destsuffix=plugins;name=plugins \
+ git://github.com/containernetworking/cni.git;branch=main;name=cni;protocol=https \
+ git://github.com/containernetworking/plugins.git;branch=main;destsuffix=${S}/src/github.com/containernetworking/plugins;name=plugins;protocol=https \
+ git://github.com/flannel-io/cni-plugin;branch=main;name=flannel_plugin;protocol=https;destsuffix=${S}/src/github.com/containernetworking/plugins/plugins/meta/flannel \
+ file://modules.txt \
"
-RPROVIDES_${PN} += "kubernetes-cni"
+# generated via:
+# ./scripts/oe-go-mod-autogen.py --repo https://github.com/containernetworking/cni.git --rev <insert your rev here>
+include src_uri.inc
+
+DEPENDS = " \
+ rsync-native \
+ "
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
GO_IMPORT = "import"
-PV = "0.7.0+git${SRCREV_cni}"
+PV = "v1.2.0-rc0+git${SRCREV_cni}"
inherit go
inherit goarch
+# https://github.com/llvm/llvm-project/issues/53999
+TOOLCHAIN = "gcc"
+
+# sets the "sites" variable.
+include relocation.inc
+
do_compile() {
- # link fixups for compilation
- rm -f ${S}/src/import/vendor/src
- mkdir -p ${S}/src/import/vendor/
- ln -sf ./ ${S}/src/import/vendor/src
- rm -rf ${S}/src/import/plugins
- rm -rf ${S}/src/import/vendor/github.com/containernetworking/plugins
+ mkdir -p ${S}/src/github.com/containernetworking
+ ln -sfr ${S}/src/import ${S}/src/github.com/containernetworking/cni
- mkdir -p ${S}/src/import/vendor/github.com/containernetworking/cni
+ # our copied .go files are to be used for the build
+ ln -sf vendor.copy vendor
- ln -sf ../../../../libcni ${S}/src/import/vendor/github.com/containernetworking/cni/libcni
- ln -sf ../../../../pkg ${S}/src/import/vendor/github.com/containernetworking/cni/pkg
- ln -sf ../../../../cnitool ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool
- ln -sf ${WORKDIR}/plugins ${S}/src/import/vendor/github.com/containernetworking/plugins
+ # inform go that we know what we are doing
+ cp ${WORKDIR}/modules.txt vendor/
- export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
- export CGO_ENABLED="1"
+ export GO111MODULE=off
- cd ${S}/src/import/vendor/github.com/containernetworking/cni/libcni
- ${GO} build
+ cd ${B}/src/github.com/containernetworking/cni/libcni
+ ${GO} build ${GOBUILDFLAGS}
- cd ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool
- ${GO} build
+ cd ${B}/src/github.com/containernetworking/cni/cnitool
+ ${GO} build ${GOBUILDFLAGS}
- cd ${S}/src/import/vendor/github.com/containernetworking/plugins/
+ cd ${B}/src/github.com/containernetworking/plugins
PLUGINS="$(ls -d plugins/meta/*; ls -d plugins/ipam/*; ls -d plugins/main/* | grep -v windows)"
- mkdir -p ${WORKDIR}/plugins/bin/
+ mkdir -p ${B}/plugins/bin/
for p in $PLUGINS; do
plugin="$(basename "$p")"
echo "building: $p"
- ${GO} build -o ${WORKDIR}/plugins/bin/$plugin github.com/containernetworking/plugins/$p
+ ${GO} build ${GOBUILDFLAGS} -o ${B}/plugins/bin/$plugin github.com/containernetworking/plugins/$p
done
}
+do_compile[cleandirs] = "${B}/plugins"
+
do_install() {
localbindir="${libexecdir}/cni/"
@@ -69,15 +81,17 @@ do_install() {
install -d ${D}/${sysconfdir}/cni/net.d
install -m 755 ${S}/src/import/cnitool/cnitool ${D}/${localbindir}
- install -m 755 -D ${WORKDIR}/plugins/bin/* ${D}/${localbindir}
+ install -m 755 -D ${B}/plugins/bin/* ${D}/${localbindir}
# Parts of k8s expect the cni binaries to be available in /opt/cni
install -d ${D}/opt/cni
ln -sf ${libexecdir}/cni/ ${D}/opt/cni/bin
}
-FILES_${PN} += "${libexecdir}/cni/* /opt/cni/bin"
+FILES:${PN} += "${libexecdir}/cni/* /opt/cni/bin"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
deltask compile_ptest_base
+
+RDEPENDS:${PN} += " ca-certificates"
diff --git a/recipes-networking/cni/files/modules.txt b/recipes-networking/cni/files/modules.txt
new file mode 100644
index 00000000..38217c96
--- /dev/null
+++ b/recipes-networking/cni/files/modules.txt
@@ -0,0 +1,26 @@
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit
+# github.com/onsi/ginkgo/v2 v2.13.2
+## explicit
+# github.com/onsi/gomega v1.30.0
+## explicit
+# github.com/vishvananda/netns v0.0.4
+## explicit
+# github.com/go-logr/logr v1.3.0
+## explicit
+# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
+## explicit
+# github.com/google/go-cmp v0.6.0
+## explicit
+# github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38
+## explicit
+# golang.org/x/net v0.17.0
+## explicit
+# golang.org/x/sys v0.14.0
+## explicit
+# golang.org/x/text v0.13.0
+## explicit
+# golang.org/x/tools v0.14.0
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
diff --git a/recipes-networking/cni/relocation.inc b/recipes-networking/cni/relocation.inc
new file mode 100644
index 00000000..456e2c8a
--- /dev/null
+++ b/recipes-networking/cni/relocation.inc
@@ -0,0 +1,30 @@
+export sites="golang.org/x/net:golang.org/x/net:force \
+ golang.org/x/sys:golang.org/x/sys:force \
+ gopkg.in/yaml.v3:gopkg.in/yaml.v3:force \
+ golang.org/x/text:golang.org/x/text:force \
+ golang.org/x/tools:golang.org/x/tools:force \
+ github.com/onsi/gomega:github.com/onsi/gomega:force \
+ github.com/go-logr/logr:github.com/go-logr/logr:force \
+ github.com/google/pprof:github.com/google/pprof:force \
+ github.com/google/go-cmp:github.com/google/go-cmp:force \
+ github.com/onsi/ginkgo/v2:github.com/onsi/ginkgo/v2:force \
+ github.com/vishvananda/netns:github.com/vishvananda/netns:force \
+ github.com/go-task/slim-sprig:github.com/go-task/slim-sprig:force \
+ github.com/Masterminds/semver/v3:github.com/Masterminds/semver/v3:force"
+
+do_compile:prepend() {
+ cd ${S}/src/import
+ for s in $sites; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+}
diff --git a/recipes-networking/cni/src_uri.inc b/recipes-networking/cni/src_uri.inc
new file mode 100644
index 00000000..6cda91ab
--- /dev/null
+++ b/recipes-networking/cni/src_uri.inc
@@ -0,0 +1,65 @@
+# golang.org/x/net v0.17.0
+# [1] git ls-remote https://go.googlesource.com/net b225e7ca6dde1ef5a5ae5ce922861bda011cfabd
+SRCREV_net="b225e7ca6dde1ef5a5ae5ce922861bda011cfabd"
+SRC_URI += "git://go.googlesource.com/net;name=net;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/net"
+
+# golang.org/x/sys v0.14.0
+# [1] git ls-remote https://go.googlesource.com/sys cb378ae1ff8cd45e69d4f172df8370bc844e1f86
+SRCREV_sys="cb378ae1ff8cd45e69d4f172df8370bc844e1f86"
+SRC_URI += "git://go.googlesource.com/sys;name=sys;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sys"
+
+# gopkg.in/yaml.v3 v3.0.1
+# [1] git ls-remote https://github.com/go-yaml/yaml f6f7691b1fdeb513f56608cd2c32c51f8194bf51
+SRCREV_yaml.v3="f6f7691b1fdeb513f56608cd2c32c51f8194bf51"
+SRC_URI += "git://github.com/go-yaml/yaml;name=yaml.v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/gopkg.in/yaml.v3"
+
+# golang.org/x/text v0.13.0
+# [1] git ls-remote https://go.googlesource.com/text f488e191e67ed95a5b9b7b39024e5a5f5f1ffd02
+SRCREV_text="f488e191e67ed95a5b9b7b39024e5a5f5f1ffd02"
+SRC_URI += "git://go.googlesource.com/text;name=text;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/text"
+
+# golang.org/x/tools v0.14.0
+# [1] git ls-remote https://go.googlesource.com/tools 3f4194ee29d7db9b59757dfff729ef55cf89661c
+SRCREV_tools="3f4194ee29d7db9b59757dfff729ef55cf89661c"
+SRC_URI += "git://go.googlesource.com/tools;name=tools;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/tools"
+
+# github.com/onsi/gomega v1.30.0
+# [1] git ls-remote https://github.com/onsi/gomega f804ac6ada8d36164ecae0513295de8affce1245
+SRCREV_gomega="f804ac6ada8d36164ecae0513295de8affce1245"
+SRC_URI += "git://github.com/onsi/gomega;name=gomega;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/onsi/gomega"
+
+# github.com/go-logr/logr v1.3.0
+# [1] git ls-remote https://github.com/go-logr/logr 8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f
+SRCREV_logr="8adefbede0fe82bdee4fb8c9c9bdc7bc5d91388f"
+SRC_URI += "git://github.com/go-logr/logr;name=logr;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-logr/logr"
+
+# github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38
+# [1] git ls-remote https://github.com/google/pprof 94a9f03dee38882adc8bdfc42cdd6a04f8e7056e
+SRCREV_pprof="94a9f03dee38882adc8bdfc42cdd6a04f8e7056e"
+SRC_URI += "git://github.com/google/pprof;name=pprof;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/pprof"
+
+# github.com/google/go-cmp v0.6.0
+# [1] git ls-remote https://github.com/google/go-cmp c3ad8435e7bef96af35732bc0789e5a2278c6d5f
+SRCREV_go-cmp="c3ad8435e7bef96af35732bc0789e5a2278c6d5f"
+SRC_URI += "git://github.com/google/go-cmp;name=go-cmp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/go-cmp"
+
+# github.com/onsi/ginkgo/v2 v2.13.2
+# [1] git ls-remote https://github.com/onsi/ginkgo 931dc0b144749710bd085d4eb7cd4192a22972d7
+SRCREV_v2="931dc0b144749710bd085d4eb7cd4192a22972d7"
+SRC_URI += "git://github.com/onsi/ginkgo;name=v2;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/onsi/ginkgo/v2"
+
+# github.com/vishvananda/netns v0.0.4
+# [1] git ls-remote https://github.com/vishvananda/netns 7a452d2d15292b2bfb2a2d88e6bdeac156a761b9
+SRCREV_netns="7a452d2d15292b2bfb2a2d88e6bdeac156a761b9"
+SRC_URI += "git://github.com/vishvananda/netns;name=netns;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/vishvananda/netns"
+
+# github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572
+# [1] git ls-remote https://github.com/go-task/slim-sprig 52ccab3ef572c7e1a2c258be183f9a9296d60152
+SRCREV_slim-sprig="52ccab3ef572c7e1a2c258be183f9a9296d60152"
+SRC_URI += "git://github.com/go-task/slim-sprig;name=slim-sprig;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/go-task/slim-sprig"
+
+# github.com/Masterminds/semver/v3 v3.2.1
+# [1] git ls-remote https://github.com/Masterminds/semver e06051f8fcc4c8b4a4990c337b9862a2448722e5
+SRCREV_v3="e06051f8fcc4c8b4a4990c337b9862a2448722e5"
+SRC_URI += "git://github.com/Masterminds/semver;name=v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Masterminds/semver/v3"
+
diff --git a/recipes-networking/netns/netns_git.bb b/recipes-networking/netns/netns_git.bb
index da6aac21..357275c1 100644
--- a/recipes-networking/netns/netns_git.bb
+++ b/recipes-networking/netns/netns_git.bb
@@ -1,13 +1,13 @@
HOMEPAGE = "https://github.com/jfrazelle/netns"
SUMMARY = "Runc hook for setting up default bridge networking."
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=48ef0979a2bcc3fae14ff30b8a7f5dbf"
+LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=7bac31faf84a2d7e88972f562a3ebbe5"
-SRC_URI = "git://github.com/genuinetools/netns;branch=master \
+SRC_URI = "git://github.com/genuinetools/netns;branch=master;protocol=https \
file://Makefile-force-rebuilding-all-packages-to-avoid-cgo.patch \
"
-SRCREV = "9b103a19b917cc3762a33b7d78244b1d5e45ccfd"
-PV = "0.5.3"
+SRCREV = "00d5d07ab1c8afcf481ffa5958719943b6ecfde4"
+PV = "0.5.3+git"
GO_IMPORT = "import"
S = "${WORKDIR}/git"
@@ -19,7 +19,7 @@ EXTRA_OEMAKE = "GO='${GO}'"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
- export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
+ export GOROOT="${STAGING_LIBDIR}/go"
# Setup vendor directory so that it can be used in GOPATH.
#
# Go looks in a src directory under any directory in GOPATH but netns
@@ -29,8 +29,7 @@ do_compile() {
# they are not under the src directory.
ln -sfn . "${S}/src/import/vendor/src"
mkdir -p "${S}/src/import/vendor/src/github.com/genuinetools/netns"
- ln -sfn "${S}/src/import/ipallocator" "${S}/src/import/vendor/src/github.com/genuinetools/netns/ipallocator"
- ln -sfn "${S}/src/import/version" "${S}/src/import/vendor/src/github.com/genuinetools/netns/version"
+
export GOPATH="${S}/src/import/vendor"
# Pass the needed cflags/ldflags so that cgo
@@ -38,8 +37,9 @@ do_compile() {
export CGO_ENABLED="1"
export CFLAGS=""
export LDFLAGS=""
- export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
- export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
+ export CGO_CFLAGS="${TARGET_CFLAGS}"
+ export CGO_LDFLAGS="${TARGET_LDFLAGS}"
+ export GOFLAGS="-mod=vendor -trimpath"
cd ${S}/src/import
# Static builds work but are not recommended. See Makefile*cgo patch.
diff --git a/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch b/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch
index cb708dea..4fe3abd8 100644
--- a/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch
+++ b/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch
@@ -1,5 +1,7 @@
Add test-install rule to support ptest execution
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Radu Patriu <radu.patriu@enea.com>
Index: openvswitch-2.1.2/Makefile.am
diff --git a/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch b/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
deleted file mode 100644
index 53e3103a..00000000
--- a/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
+++ /dev/null
@@ -1,373 +0,0 @@
-From a348e0162343f7d46443eb1fd2bcf0698460a780 Mon Sep 17 00:00:00 2001
-From: "Hongzhi.Song" <hongzhi.song@windriver.com>
-Date: Wed, 23 Jan 2019 04:28:28 -0500
-Subject: [PATCH] python: make remaining scripts use /usr/bin/env
-
-Unfortunately there is no concept of a host python vs. target python
-to facilitate cross compilation. There is only one PYTHON variable and
-this is used during building and in the header of python scripts after
-installation. The best approach for cross compilation is to thus to
-ensure python is in the path and avoid passing a path as part of
-PYTHON. To make this function smoothly all installed scripts should
-make use of /usr/bin/env to increase the chances of finding python.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
----
- build-aux/check-structs | 2 +-
- build-aux/dpdkstrip.py | 2 +-
- build-aux/extract-ofp-actions | 2 +-
- build-aux/extract-ofp-errors | 2 +-
- build-aux/extract-ofp-fields | 2 +-
- build-aux/extract-ofp-msgs | 2 +-
- build-aux/sodepends.py | 2 +-
- build-aux/soexpand.py | 2 +-
- build-aux/text2c | 2 +-
- build-aux/xml2nroff | 2 +-
- ovn/utilities/ovn-detrace.in | 2 +-
- ovn/utilities/ovn-docker-overlay-driver.in | 2 +-
- ovn/utilities/ovn-docker-underlay-driver.in | 2 +-
- ovsdb/dot2pic | 2 +-
- ovsdb/ovsdb-doc | 2 +-
- ovsdb/ovsdb-dot.in | 2 +-
- ovsdb/ovsdb-idlc.in | 2 +-
- python/build/soutil.py | 2 +-
- tests/flowgen.py | 2 +-
- tests/ovsdb-monitor-sort.py | 2 +-
- tests/uuidfilt.py | 2 +-
- utilities/bugtool/ovs-bugtool.in | 2 +-
- utilities/ovs-check-dead-ifs.in | 2 +-
- utilities/ovs-dpctl-top.in | 2 +-
- utilities/ovs-l3ping.in | 2 +-
- utilities/ovs-parse-backtrace.in | 2 +-
- utilities/ovs-pcap.in | 2 +-
- utilities/ovs-tcpdump.in | 2 +-
- utilities/ovs-tcpundump.in | 2 +-
- utilities/ovs-test.in | 2 +-
- utilities/ovs-vlan-test.in | 2 +-
- vtep/ovs-vtep.in | 2 +-
- 32 files changed, 32 insertions(+), 32 deletions(-)
-
-diff --git a/build-aux/check-structs b/build-aux/check-structs
-index 37ffa06..eb44c91 100755
---- a/build-aux/check-structs
-+++ b/build-aux/check-structs
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import os.path
- import sys
-diff --git a/build-aux/dpdkstrip.py b/build-aux/dpdkstrip.py
-index 48c7f06..b8b8ba9 100755
---- a/build-aux/dpdkstrip.py
-+++ b/build-aux/dpdkstrip.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- # Copyright (c) 2017 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
-index 64de0f3..f6bca0b 100755
---- a/build-aux/extract-ofp-actions
-+++ b/build-aux/extract-ofp-actions
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import getopt
- import sys
-diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
-index 6f64efd..c410fd4 100755
---- a/build-aux/extract-ofp-errors
-+++ b/build-aux/extract-ofp-errors
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import sys
- import os.path
-diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
-index 3592594..2fc8317 100755
---- a/build-aux/extract-ofp-fields
-+++ b/build-aux/extract-ofp-fields
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import getopt
- import sys
-diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs
-index a67e870..92c4bda 100755
---- a/build-aux/extract-ofp-msgs
-+++ b/build-aux/extract-ofp-msgs
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import sys
- import os.path
-diff --git a/build-aux/sodepends.py b/build-aux/sodepends.py
-index 90cfaa0..45812bc 100755
---- a/build-aux/sodepends.py
-+++ b/build-aux/sodepends.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2008, 2011, 2017 Nicira, Inc.
- #
-diff --git a/build-aux/soexpand.py b/build-aux/soexpand.py
-index 53ca640..00adcf4 100755
---- a/build-aux/soexpand.py
-+++ b/build-aux/soexpand.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2008, 2017 Nicira, Inc.
- #
-diff --git a/build-aux/text2c b/build-aux/text2c
-index cb1f256..ab7910e 100755
---- a/build-aux/text2c
-+++ b/build-aux/text2c
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- import re
- import sys
-diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff
-index bd4e879..db45c56 100755
---- a/build-aux/xml2nroff
-+++ b/build-aux/xml2nroff
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
- #
-diff --git a/ovn/utilities/ovn-detrace.in b/ovn/utilities/ovn-detrace.in
-index c842adc..9e95183 100755
---- a/ovn/utilities/ovn-detrace.in
-+++ b/ovn/utilities/ovn-detrace.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2017 eBay Inc.
- #
-diff --git a/ovn/utilities/ovn-docker-overlay-driver.in b/ovn/utilities/ovn-docker-overlay-driver.in
-index 65edfcd..895426b 100755
---- a/ovn/utilities/ovn-docker-overlay-driver.in
-+++ b/ovn/utilities/ovn-docker-overlay-driver.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- # Copyright (C) 2015 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/ovn/utilities/ovn-docker-underlay-driver.in b/ovn/utilities/ovn-docker-underlay-driver.in
-index d91ce9f..e0c8db6 100755
---- a/ovn/utilities/ovn-docker-underlay-driver.in
-+++ b/ovn/utilities/ovn-docker-underlay-driver.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- # Copyright (C) 2015 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/ovsdb/dot2pic b/ovsdb/dot2pic
-index de67261..174e723 100755
---- a/ovsdb/dot2pic
-+++ b/ovsdb/dot2pic
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2009, 2010, 2011, 2013, 2017 Nicira, Inc.
- #
-diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
-index 406c293..d55c6e6 100755
---- a/ovsdb/ovsdb-doc
-+++ b/ovsdb/ovsdb-doc
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
- #
-diff --git a/ovsdb/ovsdb-dot.in b/ovsdb/ovsdb-dot.in
-index 8eea617..38ba33a 100755
---- a/ovsdb/ovsdb-dot.in
-+++ b/ovsdb/ovsdb-dot.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#! /usr/bin/env @PYTHON@
-
- from datetime import date
- import ovs.db.error
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index 40fef39..84c63a6 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
-
- from __future__ import print_function
- import getopt
-diff --git a/python/build/soutil.py b/python/build/soutil.py
-index b8027af..8f52803 100755
---- a/python/build/soutil.py
-+++ b/python/build/soutil.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2008, 2017 Nicira, Inc.
- #
-diff --git a/tests/flowgen.py b/tests/flowgen.py
-index 976fe7a..7ef32d1 100755
---- a/tests/flowgen.py
-+++ b/tests/flowgen.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Copyright (c) 2009, 2010, 2011, 2012, 2015, 2017 Nicira, Inc.
- #
-diff --git a/tests/ovsdb-monitor-sort.py b/tests/ovsdb-monitor-sort.py
-index 7d368a7..ab4c38c 100755
---- a/tests/ovsdb-monitor-sort.py
-+++ b/tests/ovsdb-monitor-sort.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
-
- # Breaks lines read from stdin into groups using blank lines as
- # group separators, then sorts lines within the groups for
-diff --git a/tests/uuidfilt.py b/tests/uuidfilt.py
-index ea72812..f1a9aff 100755
---- a/tests/uuidfilt.py
-+++ b/tests/uuidfilt.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
-
- import re
- import sys
-diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
-index 288c34f..b5a6906 100755
---- a/utilities/bugtool/ovs-bugtool.in
-+++ b/utilities/bugtool/ovs-bugtool.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#! /usr/bin/env @PYTHON@
-
- # This library is free software; you can redistribute it and/or
- # modify it under the terms of version 2.1 of the GNU Lesser General Public
-diff --git a/utilities/ovs-check-dead-ifs.in b/utilities/ovs-check-dead-ifs.in
-index ac54f6c..13d86b3 100755
---- a/utilities/ovs-check-dead-ifs.in
-+++ b/utilities/ovs-check-dead-ifs.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
-
- import os
- import re
-diff --git a/utilities/ovs-dpctl-top.in b/utilities/ovs-dpctl-top.in
-index 7f0f1f8..ece707a 100755
---- a/utilities/ovs-dpctl-top.in
-+++ b/utilities/ovs-dpctl-top.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2013 Nicira, Inc.
- #
-diff --git a/utilities/ovs-l3ping.in b/utilities/ovs-l3ping.in
-index 1b07972..9852699 100644
---- a/utilities/ovs-l3ping.in
-+++ b/utilities/ovs-l3ping.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-diff --git a/utilities/ovs-parse-backtrace.in b/utilities/ovs-parse-backtrace.in
-index 350cbd9..1960fb4 100755
---- a/utilities/ovs-parse-backtrace.in
-+++ b/utilities/ovs-parse-backtrace.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2012 Nicira, Inc.
- #
-diff --git a/utilities/ovs-pcap.in b/utilities/ovs-pcap.in
-index 7bebc07..b4e5ca8 100755
---- a/utilities/ovs-pcap.in
-+++ b/utilities/ovs-pcap.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2010 Nicira, Inc.
- #
-diff --git a/utilities/ovs-tcpdump.in b/utilities/ovs-tcpdump.in
-index 22f249f..ff2a51e 100755
---- a/utilities/ovs-tcpdump.in
-+++ b/utilities/ovs-tcpdump.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2016 Red Hat, Inc.
- #
-diff --git a/utilities/ovs-tcpundump.in b/utilities/ovs-tcpundump.in
-index c298700..0d8b8da 100755
---- a/utilities/ovs-tcpundump.in
-+++ b/utilities/ovs-tcpundump.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2010 Nicira, Inc.
- #
-diff --git a/utilities/ovs-test.in b/utilities/ovs-test.in
-index fb1f9ad..4dba169 100644
---- a/utilities/ovs-test.in
-+++ b/utilities/ovs-test.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
-diff --git a/utilities/ovs-vlan-test.in b/utilities/ovs-vlan-test.in
-index e229498..5b70118 100755
---- a/utilities/ovs-vlan-test.in
-+++ b/utilities/ovs-vlan-test.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- #
- # Copyright (c) 2010 Nicira, Inc.
- #
-diff --git a/vtep/ovs-vtep.in b/vtep/ovs-vtep.in
-index 3383870..42f98db 100755
---- a/vtep/ovs-vtep.in
-+++ b/vtep/ovs-vtep.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#!/usr/bin/env @PYTHON@
- # Copyright (C) 2013 Nicira, Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
---
-2.8.1
-
diff --git a/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch b/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
index 64e0e3f4..ffa8af0e 100644
--- a/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
+++ b/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
@@ -5,18 +5,19 @@ Subject: [PATCH] python: switch remaining scripts to use python3
Work to remove the main openvswitch package's dependency on python 2.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
ofproto/ipfix-gen-entities | 2 +-
tests/test-l7.py | 2 +-
- utilities/checkpatch.py | 2 +-
utilities/ovs-dev.py | 2 +-
utilities/ovs-pipegen.py | 2 +-
xenserver/etc_xapi.d_plugins_openvswitch-cfg-update | 2 +-
xenserver/opt_xensource_libexec_interface-reconfigure | 2 +-
xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync | 2 +-
- 8 files changed, 8 insertions(+), 8 deletions(-)
+ 7 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities
index 0be7199..d2cce42 100755
@@ -38,16 +39,6 @@ index d7854a1..f09defb 100755
# Copyright (c) 2015, 2016 Nicira, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
-index f929714..e17a1cf 100755
---- a/utilities/checkpatch.py
-+++ b/utilities/checkpatch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright (c) 2016, 2017 Red Hat, Inc.
- # Copyright (c) 2018 Nicira, Inc.
- #
diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py
index 9ce0f04..839e13e 100755
--- a/utilities/ovs-dev.py
diff --git a/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch b/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch
deleted file mode 100644
index f997bbff..00000000
--- a/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 801023e72b31e7c49cbccedd76ade33a17fcbe45 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 20 Mar 2017 12:13:30 -0700
-Subject: [PATCH] Define WAIT_ANY if not provided by system
-
-POSIX does not define it and uses -1 directly
-some libc do not have this definitions
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- tests/test-ovn.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/tests/test-ovn.c b/tests/test-ovn.c
-index 84adf81..2bc6bdf 100644
---- a/tests/test-ovn.c
-+++ b/tests/test-ovn.c
-@@ -38,6 +38,10 @@
- #include "simap.h"
- #include "util.h"
-
-+#ifndef WAIT_ANY
-+# define WAIT_ANY (-1) /* Any process. */
-+#endif
-+
- /* --relops: Bitmap of the relational operators to test, in exhaustive test. */
- static unsigned int test_relops;
-
diff --git a/recipes-networking/openvswitch/openvswitch-git/Makefile.am-set-the-python3-interpreter-with-usr-bin.patch b/recipes-networking/openvswitch/openvswitch-git/Makefile.am-set-the-python3-interpreter-with-usr-bin.patch
new file mode 100644
index 00000000..472ecb57
--- /dev/null
+++ b/recipes-networking/openvswitch/openvswitch-git/Makefile.am-set-the-python3-interpreter-with-usr-bin.patch
@@ -0,0 +1,43 @@
+From 5053d98f6595653dc02485810fda94348b6e8a1b Mon Sep 17 00:00:00 2001
+From: Xiangyu Chen <xiangyu.chen@windriver.com>
+Date: Fri, 21 Jul 2023 08:47:51 +0000
+Subject: [PATCH] Makefile.am: set the python3 interpreter with /usr/bin/env
+
+The variable "PYTHON3" just python3, this cause the following scripts error:
+/usr/sbin/ovs-bugtool Not found the interpreter python3
+/usr/bin/ovs-pcap Not found the interpreter python3
+/usr/bin/ovs-test Not found the interpreter python3
+/usr/bin/ovs-tcpdump Not found the interpreter python3
+/usr/bin/ovs-tcpundump Not found the interpreter python3
+/usr/bin/ovs-vlan-test Not found the interpreter python3
+/usr/bin/ovs-l3ping Not found the interpreter python3
+/usr/bin/ovs-parse-backtrace Not found the interpreter python3
+/usr/bin/ovs-dpctl-top Not found the interpreter python3
+/usr/share/openvswitch/scripts/ovs-check-dead-ifs Not found the interpreter python3
+/usr/share/openvswitch/scripts/ovs-check-dead-ifs Not found the interpreter python3
+/usr/share/openvswitch/scripts/ovs-monitor-ipsec Not found the interpreter python3
+/usr/share/openvswitch/scripts/ovs-vtep Not found the interpreter python3
+
+Upstream-Status: Inappropriate [embedded specific]
+
+Signed-off-by: Xiangyu Chen <xiangyu.chen@windriver.com>
+---
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 28e85d422..031bbf39c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -154,7 +154,7 @@ SUFFIXES += .in
+ -e 's,[@]PKIDIR[@],$(PKIDIR),g' \
+ -e 's,[@]LOGDIR[@],$(LOGDIR),g' \
+ -e 's,[@]DBDIR[@],$(DBDIR),g' \
+- -e 's,[@]PYTHON3[@],$(PYTHON3),g' \
++ -e 's,[@]PYTHON3[@],/usr/bin/env $(PYTHON3),g' \
+ -e 's,[@]RUNDIR[@],$(RUNDIR),g' \
+ -e 's,[@]VERSION[@],$(VERSION),g' \
+ -e 's,[@]localstatedir[@],$(localstatedir),g' \
+--
+2.35.5
+
diff --git a/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch b/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
index 711a1487..43735132 100644
--- a/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
@@ -3,17 +3,19 @@ From: Amy Fong <amy.fong@windriver.com>
Date: Thu, 29 Jan 2015 09:56:03 -0500
Subject: [PATCH] Disable m4 file test where sources are built from git.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Amy Fong <amy.fong@windriver.com>
---
Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/Makefile.am b/Makefile.am
-index ff7d70a..2fc1f13 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -187,7 +187,7 @@ CLEAN_LOCAL += clean-pycov
+Index: git/Makefile.am
+===================================================================
+--- git.orig/Makefile.am
++++ git/Makefile.am
+@@ -194,7 +194,7 @@
# If we're checked out from a Git repository, make sure that every
# file that is in Git is distributed.
@@ -21,4 +23,4 @@ index ff7d70a..2fc1f13 100644
+# ALL_LOCAL += dist-hook-git
dist-hook-git: distfiles
@if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1; then \
- (cd datapath && $(MAKE) distfiles); \
+ (cd $(srcdir) && git ls-files) | grep -v '\.gitignore$$' | \
diff --git a/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch b/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch
deleted file mode 100644
index 5e5a38d9..00000000
--- a/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 9b7fb1346702d59af67435487254ef35940bc16a Mon Sep 17 00:00:00 2001
-From: "Hongzhi.Song" <hongzhi.song@windriver.com>
-Date: Wed, 23 Jan 2019 03:41:30 -0500
-Subject: [PATCH] datapatch/linux: Specify install path for kernel module
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
-Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
----
- datapath/linux/Makefile.main.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/datapath/linux/Makefile.main.in b/datapath/linux/Makefile.main.in
-index 328bbfb..6dcc8d0 100644
---- a/datapath/linux/Makefile.main.in
-+++ b/datapath/linux/Makefile.main.in
-@@ -71,8 +71,8 @@ default:
- $(MAKE) -C $(KSRC) $(if @KARCH@,ARCH=@KARCH@) M=$(builddir) modules
-
- modules_install:
-- $(MAKE) -C $(KSRC) $(if @KARCH@,ARCH=@KARCH@) M=$(builddir) modules_install
-- /sbin/depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' $(KSRC)/include/generated/utsrelease.h`
-+ $(MAKE) -C $(KSRC) $(if @KARCH@,ARCH=@KARCH@) M=$(builddir) modules_install INSTALL_MOD_PATH=${INSTALL_MOD_PATH}
-+ #/sbin/depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' $(KSRC)/include/generated/utsrelease.h`
- endif
-
- # Much of the kernel build system in this file is derived from Intel's
---
-2.8.1
-
diff --git a/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-78e203138cb7253e9ca5ad8a2c4ed6bb6752f23e.patch b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch
index a8fc86c9..571753a5 100644
--- a/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-78e203138cb7253e9ca5ad8a2c4ed6bb6752f23e.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch
@@ -13,6 +13,10 @@ Fix ptest for v2.5
Signed-off-by: He Zhe <zhe.he@windriver.com>
+refresh patch to fix patch-fuzz warning
+Signed-off-by: Changqing Li <changqing.li@windriver.com>
+
+Upstream-Status: Inappropriate [embedded specific]
---
Makefile.am | 1 +
test.mk | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -23,8 +27,8 @@ diff --git a/Makefile.am b/Makefile.am
index 7889728..6435399 100644
--- a/Makefile.am
+++ b/Makefile.am
-@@ -494,3 +494,4 @@ include windows/automake.mk
- include ovn/automake.mk
+@@ -497,3 +497,4 @@ include windows/automake.mk
+ include windows/automake.mk
include selinux/automake.mk
include build-aux/automake.mk
+include test.mk
diff --git a/recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch b/recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch
index 65290cf6..1505d47a 100644
--- a/recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch
@@ -1,6 +1,6 @@
-From 219e7cf9f28fdf14747fdf674bec293f763fe8e3 Mon Sep 17 00:00:00 2001
+From fc540d0dee7d1f801c781905735f0f4619aba511 Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Tue, 4 Sep 2018 15:38:59 -0400
+Date: Thu, 11 Mar 2021 11:26:58 +0800
Subject: [PATCH] systemd: create runtime dirs
The recommendation would be to make use of "RuntimeDirectory=" and
@@ -9,23 +9,23 @@ upstream service file uses 'chown' we will match this by using
'mkdir'. Without this the service will fail to start since these
directories won't exist.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
- rhel/usr_lib_systemd_system_ovsdb-server.service | 1 +
- 1 file changed, 1 insertion(+)
+ rhel/usr_lib_systemd_system_ovsdb-server.service | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
-diff --git a/rhel/usr_lib_systemd_system_ovsdb-server.service b/rhel/usr_lib_systemd_system_ovsdb-server.service
-index 694598f..0bb2274 100644
---- a/rhel/usr_lib_systemd_system_ovsdb-server.service
-+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
-@@ -10,6 +10,7 @@ Type=forking
- Restart=on-failure
- EnvironmentFile=/etc/openvswitch/default.conf
- EnvironmentFile=-/etc/sysconfig/openvswitch
+Index: git/rhel/usr_lib_systemd_system_ovsdb-server.service
+===================================================================
+--- git.orig/rhel/usr_lib_systemd_system_ovsdb-server.service
++++ git/rhel/usr_lib_systemd_system_ovsdb-server.service
+@@ -17,7 +17,7 @@
+ # remove openvswitch.useropts first to reload a fresh
+ # OVS_USER_ID from default.conf or sysconfig.
+ ExecStartPre=/bin/rm -f /run/openvswitch.useropts
+-
+ExecStartPre=-/bin/mkdir /var/run/openvswitch /var/log/openvswitch
- ExecStartPre=/bin/chown ${OVS_USER_ID} /var/run/openvswitch /var/log/openvswitch
- ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch/useropts; if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /bin/echo "OVSUSER=--ovs-user=${OVS_USER_ID}" > /run/openvswitch/useropts; fi'
- EnvironmentFile=-/run/openvswitch/useropts
---
-2.7.4
-
+ ExecStartPre=-/bin/chown ${OVS_USER_ID} /run/openvswitch /var/log/openvswitch
+ ExecStartPre=/bin/sh -c '/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts'
+ ExecStartPre=/bin/sh -c 'if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /bin/echo "OVS_USER_OPT=--ovs-user=${OVS_USER_ID}" >> /run/openvswitch.useropts; fi'
diff --git a/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch b/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch
index d7d4c159..7fe0236e 100644
--- a/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch
@@ -1,24 +1,26 @@
-From 163020a5bba1323dc337d72d4771bb81d824b0dc Mon Sep 17 00:00:00 2001
+From a79bf6caf915d2a00a52a73033b1c903f2df894f Mon Sep 17 00:00:00 2001
From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Tue, 29 May 2018 18:57:46 +0000
-Subject: [PATCH] systemd: update tool paths
+Date: Wed, 10 Mar 2021 11:17:37 +0800
+Subject: [PATCH 1/2] systemd: update tool paths
We are using the rhel files but we install our tools in a slightly
different path, update accordingly.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
---
rhel/usr_lib_systemd_system_ovs-vswitchd.service.in | 4 ++--
- rhel/usr_lib_systemd_system_ovsdb-server.service | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
+ rhel/usr_lib_systemd_system_ovsdb-server.service | 8 ++++----
+ 2 files changed, 6 insertions(+), 6 deletions(-)
-diff --git a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
-index 11b34c6..94c48f8 100644
---- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
-+++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
-@@ -15,8 +15,8 @@ EnvironmentFile=/etc/openvswitch/default.conf
- EnvironmentFile=-/etc/sysconfig/openvswitch
- EnvironmentFile=-/run/openvswitch/useropts
+Index: git/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
+===================================================================
+--- git.orig/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
++++ git/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
+@@ -17,8 +17,8 @@
+ EnvironmentFile=-/run/openvswitch.useropts
+ LimitSTACK=2M
@begin_dpdk@
-ExecStartPre=-/bin/sh -c '/usr/bin/chown :$${OVS_USER_ID##*:} /dev/hugepages'
-ExecStartPre=-/usr/bin/chmod 0775 /dev/hugepages
@@ -27,21 +29,23 @@ index 11b34c6..94c48f8 100644
@end_dpdk@
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovsdb-server --no-monitor --system-id=random \
-diff --git a/rhel/usr_lib_systemd_system_ovsdb-server.service b/rhel/usr_lib_systemd_system_ovsdb-server.service
-index 70da1ec..694598f 100644
---- a/rhel/usr_lib_systemd_system_ovsdb-server.service
-+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
-@@ -10,8 +10,8 @@ Type=forking
- Restart=on-failure
- EnvironmentFile=/etc/openvswitch/default.conf
- EnvironmentFile=-/etc/sysconfig/openvswitch
--ExecStartPre=/usr/bin/chown ${OVS_USER_ID} /var/run/openvswitch /var/log/openvswitch
--ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch/useropts; if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /usr/bin/echo "OVSUSER=--ovs-user=${OVS_USER_ID}" > /run/openvswitch/useropts; fi'
-+ExecStartPre=/bin/chown ${OVS_USER_ID} /var/run/openvswitch /var/log/openvswitch
-+ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch/useropts; if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /bin/echo "OVSUSER=--ovs-user=${OVS_USER_ID}" > /run/openvswitch/useropts; fi'
- EnvironmentFile=-/run/openvswitch/useropts
+Index: git/rhel/usr_lib_systemd_system_ovsdb-server.service
+===================================================================
+--- git.orig/rhel/usr_lib_systemd_system_ovsdb-server.service
++++ git/rhel/usr_lib_systemd_system_ovsdb-server.service
+@@ -16,11 +16,11 @@
+ # Environment is reloaded for each Exec*, make sure to
+ # remove openvswitch.useropts first to reload a fresh
+ # OVS_USER_ID from default.conf or sysconfig.
+-ExecStartPre=/usr/bin/rm -f /run/openvswitch.useropts
++ExecStartPre=/bin/rm -f /run/openvswitch.useropts
+
+-ExecStartPre=-/usr/bin/chown ${OVS_USER_ID} /run/openvswitch /var/log/openvswitch
+-ExecStartPre=/bin/sh -c '/usr/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts'
+-ExecStartPre=/bin/sh -c 'if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /usr/bin/echo "OVS_USER_OPT=--ovs-user=${OVS_USER_ID}" >> /run/openvswitch.useropts; fi'
++ExecStartPre=-/bin/chown ${OVS_USER_ID} /run/openvswitch /var/log/openvswitch
++ExecStartPre=/bin/sh -c '/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts'
++ExecStartPre=/bin/sh -c 'if [ "$${OVS_USER_ID/:*/}" != "root" ]; then /bin/echo "OVS_USER_OPT=--ovs-user=${OVS_USER_ID}" >> /run/openvswitch.useropts; fi'
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl \
--no-ovs-vswitchd --no-monitor --system-id=random \
---
-2.7.4
-
+ ${OVS_USER_OPT} \
diff --git a/recipes-networking/openvswitch/openvswitch.inc b/recipes-networking/openvswitch/openvswitch.inc
index 37fbe5ab..767a41e6 100644
--- a/recipes-networking/openvswitch/openvswitch.inc
+++ b/recipes-networking/openvswitch/openvswitch.inc
@@ -9,22 +9,22 @@ DESCRIPTION = "\
HOMEPAGE = "http://openvswitch.org/"
SECTION = "networking"
-LICENSE = "Apache-2"
+LICENSE = "Apache-2.0"
DEPENDS += "bridge-utils openssl python3 perl python3-six-native coreutils-native"
-RDEPENDS_${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
+RDEPENDS:${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
python3 perl perl-module-strict ${PN}-switch \
bash python3-twisted python3-six"
-RDEPENDS_${PN}-testcontroller = "${PN} ${PN}-pki"
-RDEPENDS_${PN}-switch = "${PN} openssl procps util-linux-uuidgen"
-RDEPENDS_${PN}-pki = "${PN}"
-RDEPENDS_${PN}-brcompat = "${PN} ${PN}-switch"
+RDEPENDS:${PN}-testcontroller = "${PN} ${PN}-pki"
+RDEPENDS:${PN}-switch = "${PN} openssl procps util-linux-uuidgen"
+RDEPENDS:${PN}-pki = "${PN}"
+RDEPENDS:${PN}-brcompat = "${PN} ${PN}-switch"
# Some installers will fail because of an install order based on
# rdeps. E.g. ovs-pki calls sed in the postinstall. sed may be
# queued for install later.
-RDEPENDS_${PN} += "sed gawk grep"
+RDEPENDS:${PN} += "sed gawk grep"
SRC_URI = "\
file://openvswitch-switch \
@@ -45,19 +45,19 @@ CONFIGUREOPT_DEPTRACK = ""
# distro layers can enable with EXTRA_OECONF_pn_openvswitch += ""
# EXTRA_OECONF = "--with-linux=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
-ALLOW_EMPTY_${PN}-pki = "1"
+ALLOW_EMPTY:${PN}-pki = "1"
PACKAGES =+ "${PN}-testcontroller ${PN}-switch ${PN}-brcompat ${PN}-pki"
-FILES_${PN}-testcontroller = "\
+FILES:${PN}-testcontroller = "\
${sysconfdir}/init.d/openvswitch-testcontroller \
${sysconfdir}/default/openvswitch-testcontroller \
${sysconfdir}/openvswitch-testcontroller \
${bindir}/ovs-testcontroller \
"
-FILES_${PN}-brcompat = "${sbindir}/ovs-brcompatd"
+FILES:${PN}-brcompat = "${sbindir}/ovs-brcompatd"
-FILES_${PN}-switch = "\
+FILES:${PN}-switch = "\
${sysconfdir}/init.d/openvswitch-switch \
${sysconfdir}/default/openvswitch-switch \
${systemd_unitdir}/system/ovs-vswitchd.service \
@@ -68,33 +68,33 @@ FILES_${PN}-switch = "\
"
# silence a warning
-FILES_${PN} += "${datadir}/ovsdbmonitor"
-FILES_${PN} += "/run"
+FILES:${PN} += "${datadir}/ovsdbmonitor"
+FILES:${PN} += "/run"
-FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/"
-inherit autotools update-rc.d systemd python3native
+FILES:${PN} += "${libdir}/python${PYTHON_BASEVERSION}/"
+inherit pkgconfig autotools update-rc.d systemd python3native
SYSTEMD_PACKAGES = "${PN}-switch"
-SYSTEMD_SERVICE_${PN}-switch = " \
+SYSTEMD_SERVICE:${PN}-switch = " \
ovsdb-server.service \
ovs-vswitchd.service \
openvswitch.service \
"
INITSCRIPT_PACKAGES = "${PN}-switch ${PN}-testcontroller"
-INITSCRIPT_NAME_${PN}-switch = "openvswitch-switch"
-INITSCRIPT_PARAMS_${PN}-switch = "defaults 71"
+INITSCRIPT_NAME:${PN}-switch = "openvswitch-switch"
+INITSCRIPT_PARAMS:${PN}-switch = "defaults 71"
-INITSCRIPT_NAME_${PN}-testcontroller = "openvswitch-testcontroller"
-INITSCRIPT_PARAMS_${PN}-testcontroller = "defaults 72"
+INITSCRIPT_NAME:${PN}-testcontroller = "openvswitch-testcontroller"
+INITSCRIPT_PARAMS:${PN}-testcontroller = "defaults 72"
-do_configure_prepend() {
+do_configure:prepend() {
# Work around the for Makefile CC=$(if ....) by swapping out any
# "-Wa," assembly directives with "-Xassembler
CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'`
}
-do_install_prepend() {
+do_install:prepend() {
SERVICE_FILE="${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service"
${S}/build-aux/dpdkstrip.py \
${@bb.utils.contains('PACKAGECONFIG','dpdk','--dpdk','--nodpdk',d)} \
@@ -102,7 +102,7 @@ do_install_prepend() {
> ${SERVICE_FILE}
}
-do_install_append() {
+do_install:append() {
install -d ${D}/${sysconfdir}/default/
install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch
install -d ${D}/${sysconfdir}/openvswitch-testcontroller
@@ -132,18 +132,17 @@ do_install_append() {
install -d ${D}/usr/share/openvswitch/scripts/
install -m 755 ${S}/rhel/usr_share_openvswitch_scripts_ovs-systemd-reload ${D}/usr/share/openvswitch/scripts/ovs-systemd-reload
- oe_runmake modules_install INSTALL_MOD_PATH=${D}
install -d ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages
cp -r ${S}/python/ovstest/ ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages/
}
-pkg_postinst_ontarget_${PN}-pki () {
+pkg_postinst_ontarget:${PN}-pki () {
if test ! -d $D/${datadir}/${PN}/pki; then
ovs-pki init --dir=$D/${datadir}/${PN}/pki
fi
}
-pkg_postinst_ontarget_${PN}-testcontroller () {
+pkg_postinst_ontarget:${PN}-testcontroller () {
if test ! -d $D/${datadir}/${PN}/pki; then
ovs-pki init --dir=$D/${datadir}/${PN}/pki
fi
diff --git a/recipes-networking/openvswitch/openvswitch_git.bb b/recipes-networking/openvswitch/openvswitch_git.bb
index 072d7f14..b7d9b8dd 100644
--- a/recipes-networking/openvswitch/openvswitch_git.bb
+++ b/recipes-networking/openvswitch/openvswitch_git.bb
@@ -4,43 +4,35 @@ DEPENDS += "virtual/kernel"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-RDEPENDS_${PN}-ptest += "\
- python3-logging python3-syslog python3-io \
+RDEPENDS:${PN}-ptest += "\
+ python3-logging python3-syslog python3-io python3-core \
python3-fcntl python3-shell python3-xml python3-math \
python3-datetime python3-netclient python3 sed \
ldd perl-module-socket perl-module-carp perl-module-exporter \
perl-module-xsloader python3-netserver python3-threading \
- python3-resource findutils which \
+ python3-resource findutils which diffutils \
"
S = "${WORKDIR}/git"
-PV = "2.11+${SRCPV}"
-
-FILESEXTRAPATHS_append := "${THISDIR}/${PN}-git:"
-
-SRCREV = "f22ca8011fdb7e81ffce5017cd26539bccf50e94"
-SRC_URI = "file://openvswitch-switch \
- file://openvswitch-switch-setup \
- file://openvswitch-testcontroller \
- file://openvswitch-testcontroller-setup \
- git://github.com/openvswitch/ovs.git;protocol=git;branch=branch-2.11 \
- file://openvswitch-add-ptest-78e203138cb7253e9ca5ad8a2c4ed6bb6752f23e.patch \
- file://run-ptest \
- file://disable_m4_check.patch \
- file://kernel_module.patch \
- file://python-make-remaining-scripts-use-usr-bin-env.patch \
- file://0002-Define-WAIT_ANY-if-not-provided-by-system.patch \
- file://python-switch-remaining-scripts-to-use-python3.patch \
- file://systemd-update-tool-paths.patch \
- file://systemd-create-runtime-dirs.patch \
+PV = "3.3.0"
+CVE_VERSION = "3.3.0"
+
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}-git:"
+
+SRCREV = "1c1f173ce8a8534e262083bc4db3ee15f05231c0"
+SRC_URI += "git://github.com/openvswitch/ovs.git;protocol=https;branch=branch-3.3 \
+ file://openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch \
+ file://run-ptest \
+ file://disable_m4_check.patch \
+ file://systemd-update-tool-paths.patch \
+ file://systemd-create-runtime-dirs.patch \
+ file://Makefile.am-set-the-python3-interpreter-with-usr-bin.patch \
"
LIC_FILES_CHKSUM = "file://LICENSE;md5=1ce5d23a6429dff345518758f13aaeab"
-DPDK_INSTALL_DIR ?= "/opt/dpdk"
-
PACKAGECONFIG ?= "libcap-ng"
-PACKAGECONFIG[dpdk] = "--with-dpdk=${STAGING_DIR_TARGET}${DPDK_INSTALL_DIR}/share/${TARGET_ARCH}-native-linuxapp-gcc,,dpdk,dpdk"
+PACKAGECONFIG[dpdk] = "--with-dpdk=shared,,dpdk,dpdk"
PACKAGECONFIG[libcap-ng] = "--enable-libcapng,--disable-libcapng,libcap-ng,"
PACKAGECONFIG[ssl] = ",--disable-ssl,openssl,"
@@ -50,7 +42,7 @@ PACKAGECONFIG[ssl] = ",--disable-ssl,openssl,"
# EXTRA_OECONF += "--with-linux=${STAGING_KERNEL_BUILDDIR} --with-linux-source=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
# silence a warning
-FILES_${PN} += "/lib/modules"
+FILES:${PN} += "/lib/modules"
inherit ptest
@@ -60,6 +52,3 @@ do_install_ptest() {
oe_runmake test-install
}
-do_install_append() {
- oe_runmake modules_install INSTALL_MOD_PATH=${D}
-}
diff --git a/recipes-networking/slirp4netns/slirp4netns_0.4.1.bb b/recipes-networking/slirp4netns/slirp4netns_git.bb
index b47df968..33a5636a 100644
--- a/recipes-networking/slirp4netns/slirp4netns_0.4.1.bb
+++ b/recipes-networking/slirp4netns/slirp4netns_git.bb
@@ -3,14 +3,21 @@ DESCRIPTION = "slirp4netns allows connecting a network namespace to the \
Internet in a completely unprivileged way, by connecting a TAP device in a \
network namespace to the usermode TCP/IP stack ("slirp")."
-LICENSE = "GPLv2+"
+LICENSE = "GPL-2.0-or-later"
LIC_FILES_CHKSUM = "file://COPYING;md5=1e2efd29c201480c6be2744d9edade26"
-SRCREV = "4d38845e2e311b684fc8d1c775c725bfcd5ddc27"
-SRC_URI = "git://github.com/rootless-containers/slirp4netns.git;nobranch=1"
+SRCREV = "323aa69a68362a432f15d5e8050e74a0637aaf1e"
+SRC_URI = "git://github.com/rootless-containers/slirp4netns.git;nobranch=1;protocol=https"
-DEPENDS = "glib-2.0 libcap libseccomp"
+PV = "1.2.0+git"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
+
+DEPENDS = "glib-2.0 libcap libseccomp libslirp"
S = "${WORKDIR}/git"
+RRECOMMENDS:${PN} += "kernel-module-tun"
+
inherit autotools pkgconfig
diff --git a/scripts/README-oe-go-mod-autogen.txt b/scripts/README-oe-go-mod-autogen.txt
new file mode 100644
index 00000000..80a35e52
--- /dev/null
+++ b/scripts/README-oe-go-mod-autogen.txt
@@ -0,0 +1,120 @@
+Description:
+
+ oe-go-mod-autogen.py is a helper script for go mod recipes. It is based
+ on intiial efforts to use only the git fetcher versus golangs module
+ infrastructure.
+
+ Example:
+
+ a) generate
+
+ cmd: <path_to>/meta-virtualization/scripts/oe-go-mod-autogen.py \
+ --repo https://github.com/docker/compose --rev v2.20.3
+ output: src_uri.inc, relocation.inc, modules.txt
+
+ b) Copy the three generated files to replace the original ones.
+
+ c) update SRCREV
+
+ Edit the recipe to update PV and the main SRCREV, and
+ docker-compose is upgraded.
+
+ See --help for more explanations and examples.
+
+ Below are some technical details.
+
+ * get module's repo from module name
+
+ This script checks the following two URLs to determine the module's repo.
+ 1. https://<module_name_tweaked>?=go-get=1
+ 2. https://pkg.go.dev/<module_name_tweaked>
+
+ The module_name_tweaked is derived from module_name, with the last components
+ removed one by one. Let me use two examples to explain this.
+
+ For module_name sigs.k8s.io/json, the sigs.k8s.io/json is first used as
+ module_name_tweaked for searching. And we can correctly get the repo URL, so
+ the search stops.
+
+ For module_name github.com/k3s-io/etcd/api/v3, the following ones are used
+ as module_name_tweaked:
+ github.com/k3s-io/etcd/api/v3
+ github.com/k3s-io/etcd/api
+ github.com/k3s-io/etcd
+ And when searching 'github.com/k3s-io/etcd', we get the repo URL, so the search
+ stops.
+
+ * determine the srcdir:destdir mapping in 'vendor' creation
+
+ To correctly form the 'vendor' directory, the mapping is critical.
+ This script makes use of tag matching and path matching to determine
+ the subpath in the repo for the module.
+
+ * avoid subpath being overriden by parent path
+
+ We need to avoid subpath being overriden by parent path. This is needed
+ for both SRC_URI ordering in src_uri.inc and the sites mapping ordering
+ in relocation.inc. This script simply uses the length as the ordering key,
+ simply for the reason that if a path is a subpath of another path, it must
+ be longer.
+
+ * the .git suffix is removed to sync with each other
+
+ Unlike normal recipes, go mod recipe usually have many SRC_URIs. This script
+ remove the '.git' suffix from repo URL so that the repo URLs are in sync
+ with each.
+
+ * basic directory hierarchy and caching mechanism
+
+ <cwd>/repos: hold the repos downloaded and checked
+ <cwd>/wget-contents: hold the contents to determine the module's repo
+ <cwd>/wget-contents/<module_name>.repo_url.cache: the repo value cache
+ This is to avoid unnecessary URL fetching and repo cloning.
+
+ * the ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE switch in script
+
+ The script must get the correct repo_url, fullsrc_rev and subpath for
+ each required module in go.mod to correctly generate the src_uri.inc and
+ relocation.inc files. If this process fails for any required module, this
+ script stop immediately, as I deliberately set ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE
+ to True in this script. The purpose is to encourage people to report
+ problems to meta-virt so that we can improve this script according to
+ these feedbacks. But this variable can set to False, then the script
+ only records the failed modules in self.modules_unhandled with reasons
+ added, people can modify the generated src_uri.inc and relocation.inc
+ to manually handle these unhandled modules if they are urgent to
+ add/upgrade some go mod recipes.
+
+
+Debug tips:
+
+If the do_compile task exits with a go mod / fetch error, this is due
+to some sort of compilation error during the go build. The log file
+can be huge. To figure out what broke, try the following:
+
+ % cd ${S}/src/import
+ % grep -v ^HASH ../../../temp/log.do_compile
+
+This will likely highlight what broke. It is often that either the wrong
+revision was used (and there will be go build errors) or that a fetched
+repository used the wrong source or destination. Seeing what module
+couldn't be found, will allow you to locate the SRC_URI fetch in question,
+how it was relocated. Either the source or destination may be wrong.
+
+As an example, k3s was failing with the following error:
+
+ go: finding module for package sigs.k8s.io/kustomize/kustomize/v5/commands/build
+ vendor/k8s.io/kubectl/pkg/cmd/kustomize/kustomize.go:25:2: cannot query module due to -mod=vendor
+ WARNING: exit code 1 from a shell command.
+
+Which leads to looking at the SRC_URI and vendor fetch, which was not
+using the proper source for kustomize.
+
+ sigs.k8s.io/kustomize/kustomize/v5:sigs.k8s.io/kustomize/kustomize:force \
+
+had to be changed to:
+
+ sigs.k8s.io/kustomize/kustomize/v5:sigs.k8s.io/kustomize/kustomize/v5/kustomize:force \
+
+To get the commands/build subirectory from the source into the proper
+vendor location.
diff --git a/scripts/lib/wic/plugins/source/bootimg-biosxen.py b/scripts/lib/wic/plugins/source/bootimg-biosxen.py
new file mode 100644
index 00000000..f00747db
--- /dev/null
+++ b/scripts/lib/wic/plugins/source/bootimg-biosxen.py
@@ -0,0 +1,212 @@
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# DESCRIPTION
+# This implements the 'bootimg-biosxen' source plugin class for 'wic'
+#
+# Bootloader arguments: Xen args are separated from Linux ones at '---':
+# eg.
+# bootloader --append="console=com1,vga com1=115200,8n1 --- console=hvc0"
+#
+# Optional source param: initrd
+# accepts multiple ramdisk files to be supplied to multiboot.
+# eg.
+# part /boot --source bootimg-biosxen --sourceparams="initrd=foo.initrd;bar.initrd"
+#
+# AUTHORS
+# Christopher Clark <christopher.w.clark [at] gmail.com>
+# Elements derived from bootimg-biosplusefi.py by:
+# William Bourque <wbourque [at] gmail.com>
+
+import logging
+import os
+import types
+
+from wic import WicError
+import wic.pluginbase
+from importlib.machinery import SourceFileLoader
+from wic.misc import (exec_cmd, get_bitbake_var)
+
+logger = logging.getLogger('wic')
+
+class BootimgBiosXenPlugin(wic.pluginbase.SourcePlugin):
+ """
+ Create MBR boot partition including files for Xen
+
+ """
+
+ name = 'bootimg-biosxen'
+ __PCBIOS_MODULE_NAME = "bootimg-pcbios"
+ __imgBiosObj = None
+
+ @classmethod
+ def __init__(cls):
+ """
+ Constructor (init)
+ """
+ # original comment from bootimg-biosplusefi.py :
+ # "XXX For some reasons, __init__ constructor is never called.
+ # Something to do with how pluginbase works?"
+ cls.__instanciateBIOSClass()
+
+ @classmethod
+ def __instanciateBIOSClass(cls):
+ """
+
+ """
+ # Import bootimg-pcbios (class name "BootimgPcbiosPlugin")
+ modulePath = os.path.join(os.path.dirname(wic.pluginbase.__file__),
+ "plugins", "source",
+ cls.__PCBIOS_MODULE_NAME + ".py")
+ loader = SourceFileLoader(cls.__PCBIOS_MODULE_NAME, modulePath)
+ mod = types.ModuleType(loader.name)
+ loader.exec_module(mod)
+ cls.__imgBiosObj = mod.BootimgPcbiosPlugin()
+
+ @classmethod
+ def do_install_disk(cls, disk, disk_name, creator, workdir, oe_builddir,
+ bootimg_dir, kernel_dir, native_sysroot):
+ """
+ Called after all partitions have been prepared and assembled into a
+ disk image.
+ """
+ if not cls.__imgBiosObj:
+ cls.__instanciateBIOSClass()
+
+ cls.__imgBiosObj.do_install_disk(disk, disk_name, creator, workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ native_sysroot)
+
+ @classmethod
+ def do_configure_partition(cls, part, source_params, creator, cr_workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ native_sysroot):
+ """
+ Called before do_prepare_partition(), creates syslinux config
+ """
+ if not cls.__imgBiosObj:
+ cls.__instanciateBIOSClass()
+
+ bootloader = creator.ks.bootloader
+
+ if not bootloader.configfile:
+ splash = os.path.join(cr_workdir, "/hdd/boot/splash.jpg")
+ if os.path.exists(splash):
+ splashline = "menu background splash.jpg"
+ else:
+ splashline = ""
+
+ syslinux_conf = ""
+ syslinux_conf += "PROMPT 0\n"
+ syslinux_conf += "TIMEOUT " + str(bootloader.timeout) + "\n"
+ syslinux_conf += "\n"
+ syslinux_conf += "ALLOWOPTIONS 1\n"
+ syslinux_conf += "\n"
+ if splashline:
+ syslinux_conf += "%s\n" % splashline
+
+ syslinux_conf += "DEFAULT boot\n"
+ syslinux_conf += "LABEL boot\n"
+ syslinux_conf += " KERNEL mboot.c32\n"
+
+ # Split the bootloader args at '---' to separate the Xen args
+ # from the Linux kernel args.
+ # The Xen args here are defaults; overridden by bootloader append.
+ xen_args = "console=com1,vga com1=115200,8n1"
+ kernel_append = ""
+ if bootloader.append:
+ separator_pos = bootloader.append.find('---')
+ if separator_pos != -1:
+ xen_args = bootloader.append[:separator_pos]
+ kernel_append = bootloader.append[separator_pos+3:]
+ else:
+ kernel_append = bootloader.append
+
+ kernel_args = "label=boot root=%s %s" % \
+ (creator.rootdev, kernel_append)
+
+ syslinux_conf += " APPEND /xen.gz %s --- /vmlinuz %s" % \
+ (xen_args, kernel_args)
+
+ initrd = source_params.get('initrd')
+ if initrd:
+ initrds = initrd.split(';')
+ for initrd_file in initrds:
+ syslinux_conf += " --- /%s" % os.path.basename(initrd_file)
+ syslinux_conf += "\n"
+
+ logger.debug("Writing syslinux config %s/hdd/boot/syslinux.cfg",
+ cr_workdir)
+
+ hdddir = "%s/hdd/boot" % cr_workdir
+ install_cmd = "install -d %s" % hdddir
+ exec_cmd(install_cmd)
+
+ cfg = open("%s/hdd/boot/syslinux.cfg" % cr_workdir, "w")
+ cfg.write(syslinux_conf)
+ cfg.close()
+
+ else:
+ cls.__imgBiosObj.do_configure_partition(part, source_params,
+ creator, cr_workdir,
+ oe_builddir, bootimg_dir,
+ kernel_dir, native_sysroot)
+
+ @classmethod
+ def do_prepare_partition(cls, part, source_params, creator, cr_workdir,
+ oe_builddir, bootimg_dir, kernel_dir,
+ rootfs_dir, native_sysroot):
+ """
+ Called to do the actual content population for a partition i.e. it
+ 'prepares' the partition to be incorporated into the image.
+ """
+ if not cls.__imgBiosObj:
+ cls.__instanciateBIOSClass()
+
+ bootimg_dir = cls.__imgBiosObj._get_bootimg_dir(bootimg_dir, 'syslinux')
+ hdddir = "%s/hdd/boot" % cr_workdir
+
+ # machine-deduction logic originally from isoimage-isohybrid.py
+ initrd_dir = get_bitbake_var("DEPLOY_DIR_IMAGE")
+ if not initrd_dir:
+ raise WicError("Couldn't find DEPLOY_DIR_IMAGE, exiting.")
+ machine = os.path.basename(initrd_dir)
+
+ xen = "xen-" + machine + ".gz"
+
+ cmds = ["install -m 0644 %s/%s %s/xen.gz" %
+ (kernel_dir, xen, hdddir),
+ "install -m 0644 %s/syslinux/mboot.c32 %s/mboot.c32" %
+ (bootimg_dir, hdddir)]
+
+ initrd = source_params.get('initrd')
+
+ # Allow multiple 'initrds', as per the bootimg-efi class.
+ # This can be used to install additional binaries for multiboot.
+ # eg. TXT ACMs, XSM/Flask policy file, microcode binary
+ if initrd:
+ initrds = initrd.split(';')
+ for initrd_file in initrds:
+ cmds.append("install -m 0644 %s/%s %s/%s" %
+ (kernel_dir, initrd_file, hdddir,
+ os.path.basename(initrd_file)))
+
+ for install_cmd in cmds:
+ exec_cmd(install_cmd)
+
+ cls.__imgBiosObj.do_prepare_partition(part, source_params,
+ creator, cr_workdir,
+ oe_builddir, bootimg_dir,
+ kernel_dir, rootfs_dir,
+ native_sysroot)
diff --git a/scripts/oe-go-mod-autogen.py b/scripts/oe-go-mod-autogen.py
new file mode 100755
index 00000000..c44c096a
--- /dev/null
+++ b/scripts/oe-go-mod-autogen.py
@@ -0,0 +1,800 @@
+#!/usr/bin/env python3
+
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# go-dep processor
+#
+# Copyright (C) 2022 Bruce Ashfield
+# Copyright (C) 2023 Chen Qi
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import os
+import sys
+import logging
+import argparse
+from collections import OrderedDict
+import subprocess
+import textwrap
+
+# This switch is used to make this script error out ASAP, mainly for debugging purpose
+ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE = True
+
+logger = logging.getLogger('oe-go-mod-autogen')
+loggerhandler = logging.StreamHandler()
+loggerhandler.setFormatter(logging.Formatter("%(levelname)s: %(message)s"))
+logger.addHandler(loggerhandler)
+logger.setLevel(logging.INFO)
+
+class GoModTool(object):
+ def __init__(self, repo, rev, workdir):
+ self.repo = repo
+ self.rev = rev
+ self.workdir = workdir
+
+ # Stores the actual module name and its related information
+ # {module: (repo_url, repo_dest_dir, fullsrcrev)}
+ self.modules_repoinfo = {}
+
+ # {module_name: (url, version, destdir, fullsrcrev)}
+ #
+ # url: place to get the source codes, we only support git repo
+ # version: module version, git tag or git rev
+ # destdir: place to put the fetched source codes
+ # fullsrcrev: full src rev which is the value of SRC_REV
+ #
+ # e.g.
+ # For 'github.com/Masterminds/semver/v3 v3.1.1' in go.mod:
+ # module_name = github.com/Masterminds/semver/v3
+ # url = https://github.com/Masterminds/semver
+ # version = v3.1.1
+ # destdir = ${WORKDIR}/${BP}/src/${GO_IMPORT}/vendor/github.com/Masterminds/semver/v3
+ # fullsrcrev = d387ce7889a157b19ad7694dba39a562051f41b0
+ self.modules_require = OrderedDict()
+
+ # {orig_module: (actual_module, actual_version)}
+ self.modules_replace = OrderedDict()
+
+ # Unhandled modules
+ self.modules_unhandled = OrderedDict()
+
+ # store subpaths used to form srcpath
+ # {actual_module_name: subpath}
+ self.modules_subpaths = OrderedDict()
+
+ # modules's actual source paths, record those that are not the same with the module itself
+ self.modules_srcpaths = OrderedDict()
+
+ # store lines, comment removed
+ self.require_lines = []
+ self.replace_lines = []
+
+ # fetch repo
+ self.fetch_and_checkout_repo(self.repo.split('://')[1], self.repo, self.rev, checkout=True, get_subpath=False)
+
+ def show_go_mod_info(self):
+ # Print modules_require, modules_replace and modules_unhandled
+ print("modules required:")
+ for m in self.modules_require:
+ url, version, destdir, fullrev = self.modules_require[m]
+ print("%s %s %s %s" % (m, version, url, fullrev))
+
+ print("modules replace:")
+ for m in self.modules_replace:
+ actual_module, actual_version = self.modules_replace[m]
+ print("%s => %s %s" % (m, actual_module, actual_version))
+
+ print("modules unhandled:")
+ for m in self.modules_unhandled:
+ reason = self.modules_unhandled[m]
+ print("%s unhandled: %s" % (m, reason))
+
+ def parse(self):
+ # check if this repo needs autogen
+ repo_url, repo_dest_dir, repo_fullrev = self.modules_repoinfo[self.repo.split('://')[1]]
+ if os.path.isdir(os.path.join(repo_dest_dir, 'vendor')):
+ logger.info("vendor direcotry has already existed for %s, no need to add other repos" % self.repo)
+ return
+ go_mod_file = os.path.join(repo_dest_dir, 'go.mod')
+ if not os.path.exists(go_mod_file):
+ logger.info("go.mod file does not exist for %s, no need to add otehr repos" % self.repo)
+ return
+ self.parse_go_mod(go_mod_file)
+ self.show_go_mod_info()
+
+ def fetch_and_checkout_repo(self, module_name, repo_url, rev, default_protocol='https://', checkout=False, get_subpath=True):
+ """
+ Fetch repo_url to <workdir>/repos/repo_base_name
+ """
+ protocol = default_protocol
+ if '://' in repo_url:
+ repo_url_final = repo_url
+ else:
+ repo_url_final = default_protocol + repo_url
+ logger.debug("fetch and checkout %s %s" % (repo_url_final, rev))
+ repos_dir = os.path.join(self.workdir, 'repos')
+ if not os.path.exists(repos_dir):
+ os.makedirs(repos_dir)
+ repo_basename = repo_url.split('/')[-1].split('.git')[0]
+ repo_dest_dir = os.path.join(repos_dir, repo_basename)
+ module_last_name = module_name.split('/')[-1]
+ git_action = "fetch"
+ if os.path.exists(repo_dest_dir):
+ if checkout:
+ # check if current HEAD is rev
+ try:
+ headrev = subprocess.check_output('git rev-list -1 HEAD', shell=True, cwd=repo_dest_dir).decode('utf-8').strip()
+ requiredrev = subprocess.check_output('git rev-list -1 %s 2>/dev/null || git rev-list -1 %s/%s' % (rev, module_last_name, rev), shell=True, cwd=repo_dest_dir).decode('utf-8').strip()
+ if headrev == requiredrev:
+ logger.info("%s has already been fetched and checked out as required, skipping" % repo_url)
+ self.modules_repoinfo[module_name] = (repo_url, repo_dest_dir, requiredrev)
+ return
+ else:
+ logger.info("HEAD of %s is not %s, will do a clean clone" % (repo_dest_dir, requiredrev))
+ git_action = "clone"
+ except:
+ logger.info("'git rev-list' in %s failed, will do a clean clone" % repo_dest_dir)
+ git_action = "clone"
+ else:
+ # determine if the current repo points to the desired remote repo
+ try:
+ remote_origin_url = subprocess.check_output('git config --get remote.origin.url', shell=True, cwd=repo_dest_dir).decode('utf-8').strip()
+ if remote_origin_url.endswith('.git'):
+ if not repo_url_final.endswith('.git'):
+ remote_origin_url = remote_origin_url[:-4]
+ else:
+ if repo_url_final.endswith('.git'):
+ remote_origin_url = remote_origin_url + '.git'
+ if remote_origin_url != repo_url_final:
+ logger.info("remote.origin.url for %s is not %s, will do a clean clone" % (repo_dest_dir, repo_url_final))
+ git_action = "clone"
+ except:
+ logger.info("'git config --get remote.origin.url' in %s failed, will do a clean clone" % repo_dest_dir)
+ git_action = "clone"
+ else:
+ # No local repo, clone it.
+ git_action = "clone"
+
+ if git_action == "clone":
+ logger.info("Removing %s" % repo_dest_dir)
+ subprocess.check_call('rm -rf %s' % repo_dest_dir, shell=True)
+
+ # clone/fetch repo
+ try:
+ git_cwd = repos_dir if git_action == "clone" else repo_dest_dir
+ logger.info("git %s %s in %s" % (git_action, repo_url_final, git_cwd))
+ subprocess.check_call('git %s %s >/dev/null 2>&1' % (git_action, repo_url_final), shell=True, cwd=git_cwd)
+ except:
+ logger.warning("Failed to %s %s in %s" % (git_action, repo_url_final, git_cwd))
+ return
+
+ def get_requiredrev(get_subpath):
+ import re
+ # check if rev is a revision or a version
+ if len(rev) == 12 and re.match('[0-9a-f]+', rev):
+ rev_is_version = False
+ else:
+ rev_is_version = True
+
+ # if rev is not a version, 'git rev-list -1 <rev>' should just succeed!
+ if not rev_is_version:
+ try:
+ rev_return = subprocess.check_output('git rev-list -1 %s 2>/dev/null' % rev, shell=True, cwd=repo_dest_dir).decode('utf-8').strip()
+ if get_subpath:
+ cmd = 'git branch -M toremove && git checkout -b check_subpath %s && git branch -D toremove' % rev_return
+ subprocess.check_call(cmd, shell=True, cwd=repo_dest_dir)
+ # try to get the subpath for this module
+ module_name_parts = module_name.split('/')
+ while (len(module_name_parts) > 0):
+ subpath = '/'.join(module_name_parts)
+ dir_to_check = repo_dest_dir + '/' + '/'.join(module_name_parts)
+ if os.path.isdir(dir_to_check):
+ self.modules_subpaths[module_name] = subpath
+ break
+ else:
+ module_name_parts.pop(0)
+ return rev_return
+ except:
+ logger.warning("Revision (%s) not in repo(%s)" % (rev, repo_dest_dir))
+ return None
+
+ # the following codes deals with case where rev is a version
+ # determine the longest match tag, in this way, we can get the current srcpath to be used in relocation.inc
+ # we first get the initial tag, which is formed from module_name and rev
+ module_parts = module_name.split('/')
+ if rev.startswith(module_parts[-1] + '.'):
+ tag = '/'.join(module_parts[:-1]) + '/' + rev
+ last_module_part_replaced = True
+ else:
+ tag = '/'.join(module_parts) + '/' + rev
+ last_module_part_replaced = False
+ logger.debug("use %s as the initial tag for %s" % (tag, module_name))
+ tag_parts = tag.split('/')
+ while(len(tag_parts) > 0):
+ try:
+ rev_return = subprocess.check_output('git rev-list -1 %s 2>/dev/null' % tag, shell=True, cwd=repo_dest_dir).decode('utf-8').strip()
+ if len(tag_parts) > 1:
+ # ensure that the subpath exists
+ if get_subpath:
+ cmd = 'git branch -M toremove && git checkout -b check_subpath %s && git branch -D toremove' % rev_return
+ subprocess.check_call(cmd, shell=True, cwd=repo_dest_dir)
+ # get subpath for the actual_module_name
+ if last_module_part_replaced:
+ subpath = '/'.join(tag_parts[:-1]) + '/' + module_parts[-1]
+ if not os.path.isdir(repo_dest_dir + '/' + subpath):
+ subpath = '/'.join(tag_parts[:-1])
+ else:
+ subpath = '/'.join(tag_parts[:-1])
+ if not os.path.isdir(repo_dest_dir + '/' + subpath):
+ logger.warning("subpath (%s) derived from tag matching does not exist in %s" % (subpath, repo_dest_dir))
+ return None
+ self.modules_subpaths[module_name] = subpath
+ logger.info("modules_subpath[%s] = %s" % (module_name, subpath))
+ return rev_return
+ except:
+ tag_parts.pop(0)
+ tag = '/'.join(tag_parts)
+ logger.warning("No tag matching %s" % rev)
+ return None
+
+ requiredrev = get_requiredrev(get_subpath)
+ if requiredrev:
+ logger.info("Got module(%s) requiredrev: %s" % (module_name, requiredrev))
+ if checkout:
+ subprocess.check_call('git checkout -b gomodautogen %s' % requiredrev, shell=True, cwd=repo_dest_dir)
+ self.modules_repoinfo[module_name] = (repo_url, repo_dest_dir, requiredrev)
+ else:
+ logger.warning("Failed to get requiredrev, repo_url = %s, rev = %s, module_name = %s" % (repo_url, rev, module_name))
+
+ def parse_go_mod(self, go_mod_path):
+ """
+ Parse go.mod file to get the modules info
+ """
+ # First we get the require and replace lines
+ # The parsing logic assumes the replace lines come *after* the require lines
+ inrequire = False
+ inreplace = False
+ with open(go_mod_path, 'r') as f:
+ lines = f.readlines()
+ for line in lines:
+ if line.startswith('require ('):
+ inrequire = True
+ continue
+ if line.startswith(')'):
+ inrequire = False
+ continue
+ if line.startswith('require ') or inrequire:
+ # we have one line require
+ require_line = line.lstrip('require ').split('//')[0].strip()
+ if require_line:
+ self.require_lines.append(require_line)
+ continue
+ # we can deal with requires and replaces separately because go.mod always writes requires before replaces
+ if line.startswith('replace ('):
+ inreplace = True
+ continue
+ if line.startswith(')'):
+ inreplace = False
+ continue
+ if line.startswith('replace ') or inreplace:
+ replace_line = line.lstrip('replace ').split('//')[0].strip()
+ if replace_line:
+ self.replace_lines.append(replace_line)
+ continue
+ #
+ # parse the require_lines and replace_lines to form self.modules_require and self.modules_replace
+ #
+ logger.debug("Parsing require_lines and replace_lines ...")
+ # A typical replace line is as below:
+ # github.com/hashicorp/golang-lru => github.com/ktock/golang-lru v0.5.5-0.20211029085301-ec551be6f75c
+ # It means that the github.com/hashicorp/golang-lru module is replaced by github.com/ktock/golang-lru
+ # with the version 'v0.5.5-0.20211029085301-ec551be6f75c'.
+ # So the destdir is vendor/github.com/hashicorp/golang-lru while the contents are from github.com/ktock/golang-lru
+ for line in self.replace_lines:
+ orig_module, actual = line.split('=>')
+ actual_module, actual_version = actual.split()
+ orig_module = orig_module.strip()
+ actual_module = actual_module.strip()
+ actual_version = actual_version.strip()
+ self.modules_replace[orig_module] = (actual_module, actual_version)
+ #
+ # Typical require lines are as below:
+ # github.com/Masterminds/semver/v3 v3.1.1
+ # golang.org/x/crypto v0.0.0-20220321153916-2c7772ba3064
+ #
+ # We need to first try https://<module_name>?=go-get=1 to see it contains
+ # line starting with '<meta name="go-import" content='.
+ #
+ # If so, get root-path vcs repo-url from content. See https://go.dev/ref/mod#vcs-find
+ # For example, the above 'wget https://golang.org/x/crypto?go-get=1' gives you
+ # <meta name="go-import" content="golang.org/x/crypto git https://go.googlesource.com/crypto">
+ # In such case, the self.modules_require has the following contents:
+ # module_name: golang.org/x/crypto
+ # url: https://go.googlesource.com/crypto
+ # version: v0.0.0-20220321153916-2c7772ba3064
+ # destdir: ${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/crypto
+ # fullsrcrev: 2c7772ba30643b7a2026cbea938420dce7c6384d (git rev-list -1 2c7772ba3064)
+ #
+ # If not, try https://pkg.go.dev/<module_name>, and find the 'Repository'.
+ # For example, 'wget https://pkg.go.dev/github.com/Masterminds/semver/v3' gives:
+ # github.com/Masterminds/semver
+ # In such case, the self.modules has the following contents:
+ # module_name: github.com/Masterminds/semver/v3
+ # url: https://github.com/Masterminds/semver
+ # version: v3.1.1
+ # destdir: ${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/Masterminds/semver/v3
+ # fullsrcrev: 7bb0c843b53d6ad21a3f619cb22c4b442bb3ef3e (git rev-list -1 v3.1.1)
+ #
+ # As a last resort, if the last component of <module_name> matches 'v[0-9]+',
+ # remove the last component and try wget https://<module_name_with_last_component_removed>?go-get=1,
+ # then try using the above matching method.
+ #
+ for line in self.require_lines:
+ module_name, version = line.strip().split()
+ logger.debug("require line: %s" % line)
+ logger.debug("module_name = %s; version = %s" % (module_name, version))
+ # take the modules_replace into consideration to get the actual version and actual module name
+ # note that the module_name is used in destdir, and the actual_module_name and actual_version
+ # are used to determine the url and fullsrcrev
+ destdir = '${WORKDIR}/${BP}/src/import/vendor.fetch/%s' % module_name
+ actual_module_name = module_name
+ actual_version = version
+ if module_name in self.modules_replace:
+ actual_module_name, actual_version = self.modules_replace[module_name]
+ logger.debug("actual_module_name = %s; actual_version = %s" % (actual_module_name, actual_version))
+ url, fullsrcrev = self.get_url_srcrev(actual_module_name, actual_version)
+ logger.debug("url = %s; fullsrcrev = %s" % (url, fullsrcrev))
+ if url and fullsrcrev:
+ self.modules_require[module_name] = (url, version, destdir, fullsrcrev)
+ # form srcpath, actual_module_name/<subpath>
+ if actual_module_name in self.modules_subpaths:
+ subpath = self.modules_subpaths[actual_module_name]
+ srcpath = '%s/%s' % (actual_module_name, subpath)
+ self.modules_srcpaths[module_name] = srcpath
+ logger.info("self.modules_srcpaths[%s] = %s" % (module_name, srcpath))
+ else:
+ self.modules_srcpaths[module_name] = actual_module_name
+ else:
+ logger.warning("get_url_srcrev(%s, %s) failed" % (actual_module_name, actual_version))
+ if ERROR_OUT_ON_FETCH_AND_CHECKOUT_FAILURE:
+ sys.exit(1)
+
+ def use_wget_to_get_repo_url(self, wget_content_file, url_cache_file, module_name):
+ """
+ Use wget to get repo_url for module_name, return None if not found
+ """
+ try:
+ logger.info("wget -O %s https://%s?=go-get=1" % (wget_content_file, module_name))
+ subprocess.check_call('wget -O %s https://%s?=go-get=1' % (wget_content_file, module_name), shell=True)
+ with open(wget_content_file, 'r') as f:
+ for line in f.readlines():
+ if '<meta name="go-import" content=' in line:
+ logger.info("Succeed to find go-import content for %s" % module_name)
+ logger.debug("The line is %s" % line)
+ root_path, vcs, repo_url = line.split('content=')[1].split('"')[1].split()
+ logger.info("%s: %s %s %s" % (module_name, root_path, vcs, repo_url))
+ if vcs != 'git':
+ logger.warning('%s unhandled as its vcs is %s which is not supported by this script.' % (module_name, vcs))
+ unhandled_reason = 'vcs %s is not supported by this script' % vcs
+ self.modules_unhandled[module_name] = unhandled_reason
+ return None
+ with open(url_cache_file, 'w') as f:
+ f.write(repo_url)
+ return repo_url
+ except:
+ logger.info("wget -O %s https://%s?=go-get=1 failed" % (wget_content_file, module_name))
+ # if we cannot find repo url from https://<module_name>?=go-get=1, try https://pkg.go/dev/<module_name>
+ try:
+ logger.info("wget -O %s https://pkg.go.dev/%s" % (wget_content_file, module_name))
+ subprocess.check_call("wget -O %s https://pkg.go.dev/%s" % (wget_content_file, module_name), shell=True)
+ repo_url_found = False
+ with open(wget_content_file, 'r') as f:
+ in_repo_section = False
+ for line in f.readlines():
+ if '>Repository<' in line:
+ in_repo_section = True
+ continue
+ if in_repo_section:
+ newline = line.strip()
+ if newline != '' and not newline.startswith('<'):
+ repo_url = newline
+ repo_url_found = True
+ break
+ if repo_url_found:
+ logger.info("repo url for %s: %s" % (module_name, repo_url))
+ with open(url_cache_file, 'w') as f:
+ f.write(repo_url)
+ return repo_url
+ else:
+ unhandled_reason = 'cannot determine repo_url for %s' % module_name
+ self.modules_unhandled[module_name] = unhandled_reason
+ return None
+ except:
+ logger.info("wget -O %s https://pkg.go.dev/%s failed" % (wget_content_file, module_name))
+ return None
+
+
+ def get_repo_url_rev(self, module_name, version):
+ """
+ Return (repo_url, rev)
+ """
+ import re
+ # First get rev from version
+ v = version.split('+incompatible')[0]
+ version_components = v.split('-')
+ if len(version_components) == 1:
+ rev = v
+ elif len(version_components) == 3:
+ if len(version_components[2]) == 12:
+ rev = version_components[2]
+ else:
+ rev = v
+ else:
+ rev = v
+
+ #
+ # Get repo_url
+ # We put a cache mechanism here, <wget_content_file>.repo_url.cache is used to store the repo url fetch before
+ #
+ wget_dir = os.path.join(self.workdir, 'wget-contents')
+ if not os.path.exists(wget_dir):
+ os.makedirs(wget_dir)
+ wget_content_file = os.path.join(wget_dir, module_name.replace('/', '_'))
+ url_cache_file = "%s.repo_url.cache" % wget_content_file
+ if os.path.exists(url_cache_file):
+ with open(url_cache_file, 'r') as f:
+ repo_url = f.readline().strip()
+ return (repo_url, rev)
+ module_name_parts = module_name.split('/')
+ while (len(module_name_parts) > 0):
+ module_name_to_check = '/'.join(module_name_parts)
+ logger.info("module_name_to_check: %s" % module_name_to_check)
+ repo_url = self.use_wget_to_get_repo_url(wget_content_file, url_cache_file, module_name_to_check)
+ if repo_url:
+ return (repo_url, rev)
+ else:
+ if module_name in self.modules_unhandled:
+ return (None, rev)
+ else:
+ module_name_parts.pop(-1)
+
+ unhandled_reason = 'cannot determine the repo for %s' % module_name
+ self.modules_unhandled[module_name] = unhandled_reason
+ return (None, rev)
+
+ def get_url_srcrev(self, module_name, version):
+ """
+ Return url and fullsrcrev according to module_name and version
+ """
+ repo_url, rev = self.get_repo_url_rev(module_name, version)
+ if not repo_url or not rev:
+ return (None, None)
+ self.fetch_and_checkout_repo(module_name, repo_url, rev)
+ if module_name in self.modules_repoinfo:
+ repo_url, repo_dest_dir, repo_fullrev = self.modules_repoinfo[module_name]
+ # remove the .git suffix to sync repos across modules with different versions and across recipes
+ if repo_url.endswith('.git'):
+ repo_url = repo_url[:-len('.git')]
+ return (repo_url, repo_fullrev)
+ else:
+ unhandled_reason = 'fetch_and_checkout_repo(%s, %s, %s) failed' % (module_name, repo_url, rev)
+ self.modules_unhandled[module_name] = unhandled_reason
+ return (None, None)
+
+ def gen_src_uri_inc(self):
+ """
+ Generate src_uri.inc file containing SRC_URIs
+ """
+ src_uri_inc_file = os.path.join(self.workdir, 'src_uri.inc')
+ # record the <name> after writting SRCREV_<name>, this is to avoid modules having the same basename resulting in same SRCREV_xxx
+ srcrev_name_recorded = []
+ template = """# %s %s
+# [1] git ls-remote %s %s
+SRCREV_%s="%s"
+SRC_URI += "git://%s;name=%s;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/%s"
+
+"""
+ # We can't simply write SRC_URIs one by one in the order that go.mod specify them.
+ # Because the latter one might clean things up for the former one if the former one is a subpath of the latter one.
+ def take_first_len(elem):
+ return len(elem[0])
+
+ src_uri_contents = []
+ with open(src_uri_inc_file, 'w') as f:
+ for module in self.modules_require:
+ # {module_name: (url, version, destdir, fullsrcrev)}
+ repo_url, version, destdir, fullrev = self.modules_require[module]
+ if module in self.modules_replace:
+ actual_module_name, actual_version = self.modules_replace[module]
+ else:
+ actual_module_name, actual_version = (module, version)
+ if '://' in repo_url:
+ repo_url_noprotocol = repo_url.split('://')[1]
+ else:
+ repo_url_noprotocol = repo_url
+ if not repo_url.startswith('https://'):
+ repo_url = 'https://' + repo_url
+ name = module.split('/')[-1]
+ if name in srcrev_name_recorded:
+ name = '-'.join(module.split('/')[-2:])
+ src_uri_contents.append((actual_module_name, actual_version, repo_url, fullrev, name, fullrev, repo_url_noprotocol, name, actual_module_name))
+ srcrev_name_recorded.append(name)
+ # sort the src_uri_contents and then write it
+ src_uri_contents.sort(key=take_first_len)
+ for content in src_uri_contents:
+ f.write(template % content)
+ logger.info("%s generated" % src_uri_inc_file)
+
+ def gen_relocation_inc(self):
+ """
+ Generate relocation.inc file
+ """
+ relocation_inc_file = os.path.join(self.workdir, 'relocation.inc')
+ template = """export sites="%s"
+
+do_compile:prepend() {
+ cd ${S}/src/import
+ for s in $sites; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+}
+"""
+ sites = []
+ for module in self.modules_require:
+ # <dest>:<source>[:force]
+ if module in self.modules_srcpaths:
+ srcpath = self.modules_srcpaths[module]
+ logger.debug("Using %s as srcpath of module (%s)" % (srcpath, module))
+ else:
+ srcpath = module
+ sites.append("%s:%s:force" % (module, srcpath))
+ # To avoid the former one being overriden by the latter one when the former one is a subpath of the latter one, sort sites
+ sites.sort(key=len)
+ with open(relocation_inc_file, 'w') as f:
+ sites_str = ' \\\n '.join(sites)
+ f.write(template % sites_str)
+ logger.info("%s generated" % relocation_inc_file)
+
+ def gen_modules_txt(self):
+ """
+ Generate modules.txt file
+ """
+ modules_txt_file = os.path.join(self.workdir, 'modules.txt')
+ with open(modules_txt_file, 'w') as f:
+ for l in self.require_lines:
+ f.write('# %s\n' % l)
+ f.write('## explicit\n')
+ for l in self.replace_lines:
+ f.write('# %s\n' %l)
+ logger.info("%s generated" % modules_txt_file)
+
+ def sanity_check(self):
+ """
+ Various anity checks
+ """
+ sanity_check_ok = True
+ #
+ # Sanity Check 1:
+ # For modules having the same repo, at most one is allowed to not have subpath.
+ # This check operates on self.modules_repoinfo and self.modules_subpaths
+ #
+ repo_modules = {}
+ for module in self.modules_repoinfo:
+ # first form {repo: [module1, module2, ...]}
+ repo_url, repo_dest_dir, fullsrcrev = self.modules_repoinfo[module]
+ if repo_url not in repo_modules:
+ repo_modules[repo_url] = [module]
+ else:
+ repo_modules[repo_url].append(module)
+ for repo in repo_modules:
+ modules = repo_modules[repo]
+ if len(modules) == 1:
+ continue
+ # for modules sharing the same repo, at most one is allowed to not have subpath
+ nosubpath_modules = []
+ for m in modules:
+ if m not in self.modules_subpaths:
+ nosubpath_modules.append(m)
+ if len(nosubpath_modules) == 0:
+ continue
+ if len(nosubpath_modules) > 1:
+ logger.warning("Multiple modules sharing %s, but they don't have subpath: %s. Please double check." % (repo, nosubpath_modules))
+ if len(nosubpath_modules) == 1:
+ # do further check, OK if the module is the prefix for other modules sharing the same repo
+ module_to_check = nosubpath_modules[0]
+ for m in modules:
+ if module_to_check == m:
+ continue
+ if not m.startswith('%s/' % module_to_check):
+ logger.warning("%s is sharing repo (%s) with other modules, and it might need a subpath. Please double check: %s and: %s" % (module_to_check, repo, nosubpath_modules,m))
+ continue
+
+ #
+ # End of Sanity Check
+ #
+ if not sanity_check_ok:
+ sys.exit(1)
+ return
+
+def main():
+ parser = argparse.ArgumentParser(
+ description="go mod dependency -> SRC_URI procesing",
+ formatter_class=argparse.RawDescriptionHelpFormatter,
+ epilog=textwrap.dedent('''\
+
+ Overview:
+ =========
+
+ go-mod-oe is a tool for processing go dependencies to generate
+ dependencies suitable for OE fetcher consumption.
+
+ In particular, it creates a build structure suitable for
+ '-mod="vendor"' go builds. Once complete all go mod dependencies
+ are in the vendor/ directory, so no golang specific fetching or
+ network access happens during the build.
+
+ The files src_uri.inc, relocation.inc and modules.txt are generated
+ and suitable for recipe inclusion.
+
+ A recipe build can then use these files to leverage the git fetcher
+ and related functionality (mirrors, sstate, etc).
+
+ Note 1: --rev does not have to be a tag, if you want to track the tip of
+ a branch specify the latest git has on that branch, and it will
+ be used.
+
+ Note 2: This script does not generate an entire recipe, the way the
+ the outputs are used can be modified as required.
+
+ Note 3: if a go.mod has a bad revision, or needs to be manually updated
+ to fetch fixes: go.mod in the main repository (see the repos/
+ directory). If go.mod is edited, modules.txt also has to be
+ updated to match the revision information.
+
+ How to use in a recipe:
+ =======================
+
+ There are examples in meta-virtualization of recipes that use this
+ script and stragegy for builds: docker-compose, nerdcli, k3s
+
+ 1) The recipe should set the master repository SRCREV details, and then include
+ the src_uri.inc file:
+
+ SRCREV_nerdcli = "e084a2df4a8861eb5f0b0d32df0643ef24b81093"
+ SRC_URI = "git://github.com/containerd/nerdctl.git;name=nerdcli;branch=master;protocol=https"
+
+ include src_uri.inc
+
+ This results in the SRC_URI being fully populated with the main
+ repository and all dependencies.
+
+ 2) The recipe should either copy, or include the relocation.inc file. It sets
+ a variable "sites" that is a list of source locations (where the src_uri.inc
+ fetches) and destination in a vendor directory, it also has a do_compile:prepend()
+ that contains a loop which relocates the fetches into a vendor.copy directory.
+
+ It is expected to be processed as follows, before compilation starts:
+
+ # sets the "sites" variable and copies files
+ include relocation.inc
+
+ The do_compile:prepend, contains the following loop:
+
+ cd ${S}/src/import
+ # this moves all the fetches into the proper vendor structure
+ # expected for build
+ for s in ${sites}; do
+ site_dest=$(echo $s | cut -d: -f1)
+ site_source=$(echo $s | cut -d: -f2)
+ force_flag=$(echo $s | cut -d: -f3)
+ mkdir -p vendor.copy/$site_dest
+ if [ -n "$force_flag" ]; then
+ echo "[INFO] $site_dest: force copying .go files"
+ rm -rf vendor.copy/$site_dest
+ rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest
+ else
+ [ -n "$(ls -A vendor.copy/$site_dest/*.go 2> /dev/null)" ] && { echo "[INFO] vendor.fetch/$site_source -> $site_dest: go copy skipped (files present)" ; true ; } || { echo "[INFO] $site_dest: copying .go files" ; rsync -a --exclude='vendor/' --exclude='.git/' vendor.fetch/$site_source/ vendor.copy/$site_dest ; }
+ fi
+ done
+
+ The main compile() function, should set the appropriate GO variables,
+ copy modules.txt and build the appripriate target:
+
+ # our copied .go files are to be used for the build
+ ln -sf vendor.copy vendor
+
+ 3) The modules.txt file should be copied into the recipe directory, included
+ on the SRC_URI and copied into place after the relocation has been
+ processed.
+
+ # patches and config
+ SRC_URI += "file://0001-Makefile-allow-external-specification-of-build-setti.patch \\
+ file://modules.txt \
+ "
+
+ .....
+
+ cp ${WORKDIR}/modules.txt vendor/
+
+ Example: Updating the K3S recipe
+ ================================
+
+ % cd meta-virtualization/recipe-containers/k3s/
+ # produces src_uri.inc, relocation.inc and modules.txt in the current directory
+ % ../../scripts/oe-go-mod-autogen.py --repo https://github.com/rancher/k3s.git --rev v1.27.5+k3s1
+
+ % cp modules.txt k3s/
+
+ ... add and commit files.
+
+
+ '''))
+ parser.add_argument("--repo", help = "Repo for the recipe.", required=True)
+ parser.add_argument("--rev", help = "Revision for the recipe.", required=True)
+ parser.add_argument("--module", help = "Go module name. To be used with '--test'")
+ parser.add_argument("--version", help = "Go module version. To be used with '--test'")
+ parser.add_argument("--test", help = "Test to get repo url and fullsrcrev, used together with --module and --version.", action="store_true")
+ parser.add_argument("--workdir", help = "Working directory to hold intermediate results and output.", default=os.getcwd())
+ parser.add_argument("-d", "--debug",
+ help = "Enable debug output",
+ action="store_const", const=logging.DEBUG, dest="loglevel", default=logging.INFO)
+ parser.add_argument("-q", "--quiet",
+ help = "Hide all output except error messages",
+ action="store_const", const=logging.ERROR, dest="loglevel")
+ parser.add_argument("-v", action='store_true', dest="verbose",
+ help="verbose")
+
+ args = parser.parse_args()
+
+ if args.verbose:
+ args.loglevel = args.verbose
+ args = parser.parse_args()
+
+ logger.setLevel(args.loglevel)
+ logger.debug("oe-go-mod-autogen.py running for %s:%s in %s" % (args.repo, args.rev, args.workdir))
+ gomodtool = GoModTool(args.repo, args.rev, args.workdir)
+ if args.test:
+ if not args.module or not args.version:
+ print("Please specify --module and --version")
+ sys.exit(1)
+ url, srcrev = gomodtool.get_url_srcrev(args.module, args.version)
+ print("url = %s, srcrev = %s" % (url, srcrev))
+ if not url or not srcrev:
+ print("Failed to get url & srcrev for %s:%s" % (args.module, args.version))
+ else:
+ gomodtool.parse()
+ gomodtool.sanity_check()
+ gomodtool.gen_src_uri_inc()
+ gomodtool.gen_relocation_inc()
+ gomodtool.gen_modules_txt()
+
+
+if __name__ == "__main__":
+ try:
+ ret = main()
+ except Exception as esc:
+ ret = 1
+ import traceback
+ traceback.print_exc()
+ sys.exit(ret)
diff --git a/wic/directdisk-bootloader-xen.cfg b/wic/directdisk-bootloader-xen.cfg
new file mode 100644
index 00000000..3ad76d6c
--- /dev/null
+++ b/wic/directdisk-bootloader-xen.cfg
@@ -0,0 +1,17 @@
+ALLOWOPTIONS 1
+DEFAULT boot
+TIMEOUT 10
+PROMPT 1
+SERIAL 0 115200
+
+UI vesamenu.c32
+menu title Select boot options
+menu tabmsg Press [Tab] to edit, [Return] to select
+
+LABEL boot
+ KERNEL mboot.c32
+ APPEND /xen.gz console=com1,vga com1=115200,8n1 --- /vmlinuz quiet console=hvc0 root=LABEL=root rw rootwait panic=10
+
+LABEL verbose
+ KERNEL mboot.c32
+ APPEND /xen.gz console=com1,vga com1=115200,8n1 loglvl=all guest_loglvl=all --- /vmlinuz quiet console=hvc0 earlyprintk=xen root=LABEL=root rw rootwait panic=10
diff --git a/wic/directdisk-bootloader-xen.wks b/wic/directdisk-bootloader-xen.wks
new file mode 100644
index 00000000..c34120a5
--- /dev/null
+++ b/wic/directdisk-bootloader-xen.wks
@@ -0,0 +1,12 @@
+# short-description: Create a 'pcbios' direct disk image with Xen hypervisor and bootloader config
+# long-description: Creates a partitioned legacy BIOS disk image to boot Xen
+# with a bootloader config that the user can directly dd to boot media.
+# Boot files are located on the first vfat partition.
+
+part /boot --source bootimg-biosxen --ondisk sda --label boot --active --align 1024
+
+# For the main partition, it can be useful to add additional space for VMs;
+# eg. increase partition size by appending: --size 10G
+part / --source rootfs --ondisk sda --use-uuid --fstype=ext4 --label root --align 1024
+
+bootloader --configfile="directdisk-bootloader-xen.cfg"
diff --git a/wic/directdisk-xen.wks b/wic/directdisk-xen.wks
new file mode 100644
index 00000000..d6ca46a4
--- /dev/null
+++ b/wic/directdisk-xen.wks
@@ -0,0 +1,10 @@
+# short-description: Create a 'pcbios' direct disk image with Xen hypervisor
+# long-description: Creates a partitioned legacy BIOS disk image to boot Xen
+# that the user can directly dd to boot media. Boot files are located on the
+# first vfat partition.
+
+part /boot --source bootimg-biosxen --ondisk sda --label boot --active --align 1024
+
+# For the main partition, it can be useful to add additional space for VMs:
+# eg. increase partition size by appending: --size 10G
+part / --source rootfs --ondisk sda --use-uuid --fstype=ext4 --label root --align 1024
diff --git a/wic/qemuboot-xen-x86-64.cfg b/wic/qemuboot-xen-x86-64.cfg
new file mode 100644
index 00000000..94fb0890
--- /dev/null
+++ b/wic/qemuboot-xen-x86-64.cfg
@@ -0,0 +1,8 @@
+DEFAULT boot
+TIMEOUT 0
+PROMPT 0
+SERIAL 0 115200
+
+LABEL boot
+ KERNEL mboot.c32
+ APPEND /xen.gz console=com1,vga com1=115200,8n1 loglvl=all guest_loglvl=all --- /bZimage console=hvc0 earlyprintk=xen root=/dev/sda2 pmtmr=0
diff --git a/wic/qemuboot-xen-x86-64.wks b/wic/qemuboot-xen-x86-64.wks
new file mode 100644
index 00000000..593e0a66
--- /dev/null
+++ b/wic/qemuboot-xen-x86-64.wks
@@ -0,0 +1,12 @@
+# short-description: Create a 'pcbios' direct disk image with Xen hypervisor and bootloader config
+# long-description: Creates a partitioned legacy BIOS disk image to boot Xen
+# with a bootloader config that the user can directly dd to boot media.
+# Boot files are located on the first vfat partition.
+
+part /boot --source bootimg-biosxen --ondisk sda --label boot --active --align 1024
+
+# For the main partition, it can be useful to add additional space for VMs;
+# eg. increase partition size by appending: --size 10G
+part / --source rootfs --ondisk sda --use-uuid --fstype=ext4 --label root --align 1024
+
+bootloader --configfile="qemuboot-xen-x86-64.cfg"