aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--MAINTAINERS2
-rw-r--r--README.md (renamed from README)11
-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-container-cfg.bbclass10
-rw-r--r--classes/meta-virt-hosts.bbclass29
-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--classes/sdcard_image-rpi-xen.bbclass120
-rw-r--r--conf/distro/include/meta-virt-container.inc40
-rw-r--r--conf/distro/include/meta-virt-default-versions.inc3
-rw-r--r--conf/distro/include/meta-virt-xen.inc23
-rw-r--r--conf/distro/include/virt_security_flags.inc4
-rw-r--r--conf/layer.conf31
-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/bootfiles/rpi-config_git.bbappend6
-rw-r--r--dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bbappend17
-rw-r--r--dynamic-layers/raspberrypi/recipes-bsp/xen-rpi-u-boot-scr/files/boot.cmd.xen.in (renamed from dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/files/boot.cmd.xen.in)23
-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-extended/xen/files/defconfig_raspberrypi4-64117
-rw-r--r--dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend11
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0001-swiotlb-xen-use-vmalloc_to_page-on-vmalloc-virt-addr.patch44
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0002-swiotlb-xen-remove-start_dma_addr.patch47
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0003-swiotlb-xen-add-struct-device-parameter-to-xen_phys_.patch78
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0004-swiotlb-xen-add-struct-device-parameter-to-xen_bus_t.patch66
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0007-swiotlb-xen-add-struct-device-parameter-to-is_xen_sw.patch57
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0008-swiotlb-xen-introduce-phys_to_dma-dma_to_phys-transl.patch88
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0009-xen-arm-introduce-phys-dma-translations-in-xen_dma_s_kernel_5.4.patch68
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0010-xen-arm-call-dma_to_phys-on-the-dma_addr_t-parameter.patch75
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/files/0011-adding-page-coherent-patch.patch39
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend5
-rw-r--r--dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4.bbappend19
-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.inc278
-rw-r--r--recipes-containers/aardvark-dns/aardvark-dns_1.9.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_git.bb (renamed from recipes-containers/conmon/conmon_2.0.18.bb)13
-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.bb53
-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.conf623
-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.bb49
-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/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-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/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch110
-rw-r--r--recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch45
-rw-r--r--recipes-containers/crun/crun_git.bb39
-rw-r--r--recipes-containers/docker-compose/docker-compose_git.bb80
-rw-r--r--recipes-containers/docker-compose/files/0001-setup.py-import-fastentrypoints.patch28
-rw-r--r--recipes-containers/docker-compose/files/0001-setup.py-remove-maximum-version-requirements.patch64
-rw-r--r--recipes-containers/docker-compose/files/modules.txt367
-rw-r--r--recipes-containers/docker-compose/python3-docker-compose_1.26.0.bb41
-rw-r--r--recipes-containers/docker-compose/relocation.inc200
-rw-r--r--recipes-containers/docker-compose/src_uri.inc915
-rw-r--r--recipes-containers/docker-distribution/docker-distribution_git.bb40
-rw-r--r--recipes-containers/docker-distribution/files/0001-build-use-to-use-cross-go-compiler.patch2
-rw-r--r--recipes-containers/docker/README7
-rw-r--r--recipes-containers/docker/docker-ce/0001-cli-use-go-cross-compiler.patch25
-rw-r--r--recipes-containers/docker/docker-ce/0001-dynbinary-use-go-cross-compiler.patch26
-rw-r--r--recipes-containers/docker/docker-ce/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch61
-rw-r--r--recipes-containers/docker/docker-ce_git.bb133
-rw-r--r--recipes-containers/docker/docker-moby.bb152
-rw-r--r--recipes-containers/docker/docker-moby/0001-cli-use-go-cross-compiler.patch25
-rw-r--r--recipes-containers/docker/docker-moby/0001-dynbinary-use-go-cross-compiler.patch26
-rw-r--r--recipes-containers/docker/docker-moby/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch61
-rw-r--r--recipes-containers/docker/docker-moby/0001-libnetwork-use-GO-instead-of-go.patch59
-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-libnetwork-use-GO-instead-of-go.patch (renamed from recipes-containers/docker/docker-ce/0001-libnetwork-use-GO-instead-of-go.patch)26
-rw-r--r--recipes-containers/go-digest/go-digest_git.bb14
-rw-r--r--recipes-containers/go-errors/go-errors_git.bb12
-rw-r--r--recipes-containers/go-spf13-cobra/spf13-cobra_git.bb10
-rw-r--r--recipes-containers/go-spf13-pflag/spf13-pflag_git.bb12
-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.txt760
-rw-r--r--recipes-containers/k3s/k3s_git.bb143
-rw-r--r--recipes-containers/k3s/relocation.inc357
-rw-r--r--recipes-containers/k3s/src_uri.inc1700
-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-cross-don-t-build-tests-by-default.patch8
-rw-r--r--recipes-containers/kubernetes/kubernetes/0001-generate-bindata-unset-GOBIN.patch36
-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.bb124
-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-template-if-busybox-contains-init-use-it-in-containe.patch45
-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.patch2
-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/run-ptest28
-rw-r--r--recipes-containers/lxc/files/template-make-busybox-template-compatible-with-core-.patch2
-rw-r--r--recipes-containers/lxc/files/templates-actually-create-DOWNLOAD_TEMP-directory.patch6
-rw-r--r--recipes-containers/lxc/files/templates-use-curl-instead-of-wget.patch41
-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.patch2
-rw-r--r--recipes-containers/lxc/lxc_git.bb (renamed from recipes-containers/lxc/lxc_4.0.3.bb)138
-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.txt248
-rw-r--r--recipes-containers/nerdctl/nerdctl_git.bb84
-rw-r--r--recipes-containers/nerdctl/relocation.inc141
-rw-r--r--recipes-containers/nerdctl/src_uri.inc620
-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.inc538
-rw-r--r--recipes-containers/netavark/netavark_1.9.0.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.bb43
-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.patch27
-rw-r--r--recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb51
-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.bb102
-rw-r--r--recipes-containers/riddler/files/0001-build-use-to-select-cross-compiler.patch14
-rw-r--r--recipes-containers/riddler/riddler_git.bb37
-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.patch2
-rw-r--r--recipes-containers/singularity/singularity/0001-configure.ac-drop-2nd-AM_INIT_AUTOMAKE.patch36
-rw-r--r--recipes-containers/singularity/singularity_git.bb13
-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/0001-sloci-image-fix-variant-quoting.patch2
-rw-r--r--recipes-containers/sloci-image/sloci-image_git.bb (renamed from recipes-containers/sloci-image/sloci-image-native_git.bb)10
-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.inc2
-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_virtualization.inc3
-rw-r--r--recipes-core/busybox/busybox_vmsep.inc2
-rw-r--r--recipes-core/initscripts/initscripts_virtualization.inc2
-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-initrd-cross-install-tweaks.patch39
-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.patch2
-rw-r--r--recipes-core/runx/runx_git.bb58
-rw-r--r--recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend11
-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.bb35
-rw-r--r--recipes-devtools/go/go-capability_git.bb6
-rw-r--r--recipes-devtools/go/go-cli_git.bb6
-rw-r--r--recipes-devtools/go/go-connections_git.bb6
-rw-r--r--recipes-devtools/go/go-context_git.bb14
-rw-r--r--recipes-devtools/go/go-dbus_git.bb6
-rw-r--r--recipes-devtools/go/go-distribution_git.bb6
-rw-r--r--recipes-devtools/go/go-fsnotify_git.bb10
-rw-r--r--recipes-devtools/go/go-libtrust_git.bb6
-rw-r--r--recipes-devtools/go/go-logrus_git.bb8
-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.bb11
-rw-r--r--recipes-devtools/go/go-patricia_git.bb6
-rw-r--r--recipes-devtools/go/go-pty_git.bb4
-rw-r--r--recipes-devtools/go/go-systemd_git.bb8
-rw-r--r--recipes-devtools/go/grpc-go_git.bb16
-rw-r--r--recipes-devtools/go/notary_git.bb6
-rw-r--r--recipes-devtools/python/python-websocket-client.inc11
-rw-r--r--recipes-devtools/python/python3-boto3_1.17.51.bb (renamed from recipes-devtools/python/python3-boto3_1.14.7.bb)5
-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.bb (renamed from recipes-devtools/python/python3-bugsnag_3.6.1.bb)5
-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_4.2.1.bb19
-rw-r--r--recipes-devtools/python/python3-docker_7.0.0.bb20
-rw-r--r--recipes-devtools/python/python3-dockerpty_0.4.1.bb10
-rw-r--r--recipes-devtools/python/python3-dotenv_0.17.0.bb (renamed from recipes-devtools/python/python3-dotenv_0.13.0.bb)3
-rw-r--r--recipes-devtools/python/python3-fastentrypoints_0.12.bb2
-rw-r--r--recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb (renamed from recipes-devtools/python/python3-flask-cors_3.0.8.bb)3
-rw-r--r--recipes-devtools/python/python3-nacl_1.3.0.bb26
-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/python3-newrelic_5.14.1.144.bb)11
-rw-r--r--recipes-devtools/python/python3-paramiko_2.7.0.bb16
-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/python3-webob_1.8.5.bb)5
-rw-r--r--recipes-devtools/python/python3-websocket-client_0.57.0.bb2
-rw-r--r--recipes-devtools/python/python3_3.%.bbappend1
-rw-r--r--recipes-devtools/python/python3_virtualization.inc8
-rw-r--r--recipes-devtools/qemu/qemu-package-split.inc79
-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-SnappyCompressor.h-fix-snappy-compiler-error.patch30
-rw-r--r--recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch30
-rw-r--r--recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch34
-rw-r--r--recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch41
-rw-r--r--recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch51
-rw-r--r--recipes-extended/ceph/ceph/0001-mgr-require-all-caps-for-pre-octopus-tell-commands.patch100
-rw-r--r--recipes-extended/ceph/ceph/0001-msg-async-ProtocolV2-avoid-AES-GCM-nonce-reuse-vulne.patch256
-rw-r--r--recipes-extended/ceph/ceph/0001-msg-async-crypto_onwire-fix-endianness-of-nonce_t.patch61
-rw-r--r--recipes-extended/ceph/ceph/0001-rgw-EPERM-to-ERR_INVALID_REQUEST.patch33
-rw-r--r--recipes-extended/ceph/ceph/0001-rgw-reject-control-characters-in-response-header-act.patch64
-rw-r--r--recipes-extended/ceph/ceph/0001-rgw-reject-unauthenticated-response-header-actions.patch36
-rw-r--r--recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch42
-rw-r--r--recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch101
-rw-r--r--recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch70
-rw-r--r--recipes-extended/ceph/ceph/0002-mon-enforce-caps-for-pre-octopus-client-tell-command.patch95
-rw-r--r--recipes-extended/ceph/ceph/0003-PendingReleaseNotes-note-about-security-fix.patch31
-rw-r--r--recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch101
-rw-r--r--recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch30
-rw-r--r--recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch207
-rw-r--r--recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch32
-rw-r--r--recipes-extended/ceph/ceph/0006-rocksdb-build-with-rocksdb-7.y.z.patch109
-rw-r--r--recipes-extended/ceph/ceph/CVE-2021-3979.patch158
-rw-r--r--recipes-extended/ceph/ceph_15.2.15.bb (renamed from recipes-extended/ceph/ceph_15.2.0.bb)59
-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.bb10
-rw-r--r--recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch5
-rw-r--r--recipes-extended/diod/files/0001-drod-add-option-to-config-systemddir.patch4
-rw-r--r--recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch2
-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.patch2
-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/xen-guest-image-minimal.bb10
-rw-r--r--recipes-extended/images/xen-image-minimal.bb56
-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.patch2
-rw-r--r--recipes-extended/ipxe/files/ipxe-golan-Add-explicit-type-casts-for-nodnic_queue_pair_.patch2
-rw-r--r--recipes-extended/ipxe/files/ipxe-intel-Avoid-spurious-compiler-warning-on-GCC-10.patch2
-rw-r--r--recipes-extended/ipxe/ipxe_git.bb27
-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.patch16
-rw-r--r--recipes-extended/kvmtool/files/0003-kvmtool-Werror-disabled.patch19
-rw-r--r--recipes-extended/kvmtool/files/external-crosscompiler.patch38
-rw-r--r--recipes-extended/kvmtool/kvmtool.bb9
-rw-r--r--recipes-extended/libibverbs/libibverbs_1.2.1.bb14
-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_4.0.0.bb21
-rw-r--r--recipes-extended/libvirt/libvirt-python.inc22
-rw-r--r--recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch31
-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.patch2
-rw-r--r--recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch47
-rw-r--r--recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch34
-rw-r--r--recipes-extended/libvirt/libvirt/install-missing-file.patch50
-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.patch43
-rw-r--r--recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch39
-rw-r--r--recipes-extended/libvirt/libvirt/runptest.patch116
-rw-r--r--recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch91
-rw-r--r--recipes-extended/libvirt/libvirt_10.0.0.bb334
-rw-r--r--recipes-extended/libvirt/libvirt_6.3.0.bb418
-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.patch2
-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.bb24
-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.patch2
-rw-r--r--recipes-extended/seabios/seabios_1.16.0.bb (renamed from recipes-extended/seabios/seabios_1.13.0.bb)11
-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/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.patch2
-rw-r--r--recipes-extended/uxen/uxen-guest-tools_4.1.7.bb22
-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-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/README53
-rw-r--r--recipes-extended/xen/files/0001-Config.mk-drop-Wdeclaration-after-statement.patch42
-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.patch (renamed from recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.14.patch)55
-rw-r--r--recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch43
-rw-r--r--recipes-extended/xen/files/0001-tools-xenstore-xenstored_control.c-correctly-print-t.patch34
-rw-r--r--recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror-4.14.patch26
-rw-r--r--recipes-extended/xen/files/xen-arm64-implement-atomic-fetch-add.patch50
-rw-r--r--recipes-extended/xen/xen-blktap.inc32
-rw-r--r--recipes-extended/xen/xen-hypervisor.inc78
-rw-r--r--recipes-extended/xen/xen-python2.bb71
-rw-r--r--recipes-extended/xen/xen-tools.inc391
-rw-r--r--recipes-extended/xen/xen-tools_4.14.bb19
-rw-r--r--recipes-extended/xen/xen-tools_4.17.bb20
-rw-r--r--recipes-extended/xen/xen-tools_4.18.bb22
-rw-r--r--recipes-extended/xen/xen-tools_git.bb12
-rw-r--r--recipes-extended/xen/xen.inc59
-rw-r--r--recipes-extended/xen/xen_4.14.bb18
-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.bb11
-rw-r--r--recipes-extended/xen/xtf_git.bb56
-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.inc24
-rw-r--r--recipes-extended/xvisor/xvisor_git.bb (renamed from recipes-extended/xvisor/xvisor_0.3.0.bb)31
-rw-r--r--recipes-graphics/xorg-xserver/xserver-xorg_xen.inc6
-rw-r--r--recipes-kernel/linux/linux-%.bbappend30
-rw-r--r--recipes-kernel/linux/linux-yocto-dev.bbappend1
-rw-r--r--recipes-kernel/linux/linux-yocto/cgroup-hugetlb.cfg5
-rw-r--r--recipes-kernel/linux/linux-yocto/cgroup-hugetlb.scc5
-rw-r--r--recipes-kernel/linux/linux-yocto/criu.cfg8
-rw-r--r--recipes-kernel/linux/linux-yocto/criu.scc4
-rw-r--r--recipes-kernel/linux/linux-yocto/docker.cfg1
-rw-r--r--recipes-kernel/linux/linux-yocto/kubernetes.cfg39
-rw-r--r--recipes-kernel/linux/linux-yocto/kubernetes.scc3
-rw-r--r--recipes-kernel/linux/linux-yocto_6.6_virtualization.inc (renamed from recipes-kernel/linux/linux-yocto_5.4_virtualization.inc)0
-rw-r--r--recipes-kernel/linux/linux-yocto_virtualization.inc33
-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.bb36
-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-switch-remaining-scripts-to-use-python3.patch2
-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.patch2
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/systemd-create-runtime-dirs.patch34
-rw-r--r--recipes-networking/openvswitch/openvswitch-git/systemd-update-tool-paths.patch52
-rw-r--r--recipes-networking/openvswitch/openvswitch.inc51
-rw-r--r--recipes-networking/openvswitch/openvswitch_git.bb41
-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
-rwxr-xr-xscripts/oe-go-mod-autogen.py800
-rw-r--r--wic/qemuboot-xen-x86-64.cfg8
-rw-r--r--wic/qemuboot-xen-x86-64.wks12
484 files changed, 19795 insertions, 6433 deletions
diff --git a/.gitignore b/.gitignore
index 357aefeb..daeb43d5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
-build*/
+/build*/
pyshtables.py
*.swp
*.orig
@@ -6,3 +6,4 @@ pyshtables.py
/*.patch
*~
scripts/lib/wic/plugins/source/__pycache__
+lib/oeqa/runtime/cases/__pycache__
diff --git a/MAINTAINERS b/MAINTAINERS
index 1bb9a24a..4b41bad2 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -32,3 +32,5 @@ 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 88068f30..7a848bb6 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:
@@ -34,6 +34,7 @@ that may also be enabled:
- 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
------------
@@ -67,13 +68,17 @@ 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
-----------
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-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-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/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/classes/sdcard_image-rpi-xen.bbclass b/classes/sdcard_image-rpi-xen.bbclass
deleted file mode 100644
index c03520c2..00000000
--- a/classes/sdcard_image-rpi-xen.bbclass
+++ /dev/null
@@ -1,120 +0,0 @@
-inherit sdcard_image-rpi
-
-# This image class should be retired and folded into sdcard_image-rpi.bbclass
-# when it has support for adding binaries to the boot partition that are not
-# present in the root partition filesystem: ie. the hypervisor (xen) image.
-
-do_image_rpi_xen_sdimg[depends] = " \
- parted-native:do_populate_sysroot \
- mtools-native:do_populate_sysroot \
- dosfstools-native:do_populate_sysroot \
- virtual/kernel:do_deploy \
- ${IMAGE_BOOTLOADER}:do_deploy \
- rpi-config:do_deploy \
- ${@bb.utils.contains('MACHINE_FEATURES', 'armstub', 'armstubs:do_deploy', '' ,d)} \
- ${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot:do_deploy', '',d)} \
- ${@bb.utils.contains('RPI_USE_U_BOOT', '1', 'u-boot-default-script:do_deploy', '',d)} \
- xen:do_deploy \
- "
-
-do_image_rpi_xen_sdimg[recrdeps] = "do_build"
-
-IMAGE_TYPEDEP_rpi-xen-sdimg = "${SDIMG_ROOTFS_TYPE}"
-
-SDIMG = "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.rpi-xen-sdimg"
-
-# Take from: IMAGE_CMD_rpi-sdimg from meta-raspberrypi, current as of: 44d7dd0e
-# with modification to include the Xen hypervisor binary in the boot partition.
-IMAGE_CMD_rpi-xen-sdimg () {
-
- # Align partitions
- BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE} + ${IMAGE_ROOTFS_ALIGNMENT} - 1)
- BOOT_SPACE_ALIGNED=$(expr ${BOOT_SPACE_ALIGNED} - ${BOOT_SPACE_ALIGNED} % ${IMAGE_ROOTFS_ALIGNMENT})
- SDIMG_SIZE=$(expr ${IMAGE_ROOTFS_ALIGNMENT} + ${BOOT_SPACE_ALIGNED} + $ROOTFS_SIZE)
-
- echo "Creating filesystem with Boot partition ${BOOT_SPACE_ALIGNED} KiB and RootFS $ROOTFS_SIZE KiB"
-
- # Check if we are building with device tree support
- DTS="${KERNEL_DEVICETREE}"
-
- # Initialize sdcard image file
- dd if=/dev/zero of=${SDIMG} bs=1024 count=0 seek=${SDIMG_SIZE}
-
- # Create partition table
- parted -s ${SDIMG} mklabel msdos
- # Create boot partition and mark it as bootable
- parted -s ${SDIMG} unit KiB mkpart primary fat32 ${IMAGE_ROOTFS_ALIGNMENT} $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT})
- parted -s ${SDIMG} set 1 boot on
- # Create rootfs partition to the end of disk
- parted -s ${SDIMG} -- unit KiB mkpart primary ext2 $(expr ${BOOT_SPACE_ALIGNED} \+ ${IMAGE_ROOTFS_ALIGNMENT}) -1s
- parted ${SDIMG} print
-
- # Create a vfat image with boot files
- BOOT_BLOCKS=$(LC_ALL=C parted -s ${SDIMG} unit b print | awk '/ 1 / { print substr($4, 1, length($4 -1)) / 512 /2 }')
- rm -f ${WORKDIR}/boot.img
- mkfs.vfat -F32 -n "${BOOTDD_VOLUME_ID}" -S 512 -C ${WORKDIR}/boot.img $BOOT_BLOCKS
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/* ::/ || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/bcm2835-bootfiles/* into boot.img"
- if [ "${@bb.utils.contains("MACHINE_FEATURES", "armstub", "1", "0", d)}" = "1" ]; then
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/armstubs/${ARMSTUB} ::/ || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/armstubs/${ARMSTUB} into boot.img"
- fi
- if test -n "${DTS}"; then
- # Copy board device trees to root folder
- for dtbf in ${@split_overlays(d, True)}; do
- dtb=`basename $dtbf`
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$dtb ::$dtb || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/$dtb into boot.img"
- done
-
- # Copy device tree overlays to dedicated folder
- mmd -i ${WORKDIR}/boot.img overlays
- for dtbf in ${@split_overlays(d, False)}; do
- dtb=`basename $dtbf`
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/$dtb ::overlays/$dtb || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/$dtb into boot.img"
- done
- fi
- if [ "${RPI_USE_U_BOOT}" = "1" ]; then
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/u-boot.bin ::${SDIMG_KERNELIMAGE} || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/u-boot.bin into boot.img"
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/boot.scr ::boot.scr || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/boot.scr into boot.img"
- if [ ! -z "${INITRAMFS_IMAGE}" -a "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${INITRAMFS_LINK_NAME}.bin ::${KERNEL_IMAGETYPE} || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${INITRAMFS_LINK_NAME}.bin into boot.img"
- else
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} ::${KERNEL_IMAGETYPE} || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} into boot.img"
- fi
- else
- if [ ! -z "${INITRAMFS_IMAGE}" -a "${INITRAMFS_IMAGE_BUNDLE}" = "1" ]; then
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${INITRAMFS_LINK_NAME}.bin ::${SDIMG_KERNELIMAGE} || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE}-${INITRAMFS_LINK_NAME}.bin into boot.img"
- else
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} ::${SDIMG_KERNELIMAGE} || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGETYPE} into boot.img"
- fi
- fi
- # -- Begin Xen deploy modification
- mcopy -v -i ${WORKDIR}/boot.img -s ${DEPLOY_DIR_IMAGE}/xen-${MACHINE} ::xen || bbfatal "mcopy cannot copy ${DEPLOY_DIR_IMAGE}/xen-${MACHINE} into boot.img"
- # -- End Xen deploy modification
-
- if [ -n "${FATPAYLOAD}" ] ; then
- echo "Copying payload into VFAT"
- for entry in ${FATPAYLOAD} ; do
- # use bbwarn instead of bbfatal to stop aborting on vfat issues like not supporting .~lock files
- mcopy -v -i ${WORKDIR}/boot.img -s ${IMAGE_ROOTFS}$entry :: || bbwarn "mcopy cannot copy ${IMAGE_ROOTFS}$entry into boot.img"
- done
- fi
-
- # Add stamp file
- echo "${IMAGE_NAME}" > ${WORKDIR}/image-version-info
- mcopy -v -i ${WORKDIR}/boot.img ${WORKDIR}/image-version-info :: || bbfatal "mcopy cannot copy ${WORKDIR}/image-version-info into boot.img"
-
- # Deploy vfat partition
- if [ "${SDIMG_VFAT_DEPLOY}" = "1" ]; then
- cp ${WORKDIR}/boot.img ${IMGDEPLOYDIR}/${SDIMG_VFAT}
- ln -sf ${SDIMG_VFAT} ${SDIMG_LINK_VFAT}
- fi
-
- # Burn Partitions
- dd if=${WORKDIR}/boot.img of=${SDIMG} conv=notrunc seek=1 bs=$(expr ${IMAGE_ROOTFS_ALIGNMENT} \* 1024)
- # If SDIMG_ROOTFS_TYPE is a .xz file use xzcat
- if echo "${SDIMG_ROOTFS_TYPE}" | egrep -q "*\.xz"
- then
- xzcat ${SDIMG_ROOTFS} | dd of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024)
- else
- dd if=${SDIMG_ROOTFS} of=${SDIMG} conv=notrunc seek=1 bs=$(expr 1024 \* ${BOOT_SPACE_ALIGNED} + ${IMAGE_ROOTFS_ALIGNMENT} \* 1024)
- fi
-}
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 299b5dfc..388eca90 100644
--- a/conf/distro/include/meta-virt-default-versions.inc
+++ b/conf/distro/include/meta-virt-default-versions.inc
@@ -1,3 +1,4 @@
# Meta-virtuailization PREFERED_VERSION
-# placeholder for preferred versions
+PREFERRED_VERSION_xen ?= "4.17+stable%"
+PREFERRED_VERSION_xen-tools ?= "4.17+stable%"
diff --git a/conf/distro/include/meta-virt-xen.inc b/conf/distro/include/meta-virt-xen.inc
index b61f612a..5fbb57f8 100644
--- a/conf/distro/include/meta-virt-xen.inc
+++ b/conf/distro/include/meta-virt-xen.inc
@@ -1,16 +1,15 @@
# Make sure Xen mode is enabled in qemu
-PACKAGECONFIG_append_pn-qemu = " xen"
+PACKAGECONFIG:append:pn-qemu = " xen"
# For builds for ARM platforms, enable fdt
-PACKAGECONFIG_append_pn-qemu_arm = " fdt"
-PACKAGECONFIG_append_pn-qemu_aarch64 = " fdt"
+PACKAGECONFIG:append:pn-qemu:arm = " fdt"
+PACKAGECONFIG:append:pn-qemu:aarch64 = " fdt"
-# Raspberry Pi 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_raspberrypi4-64 = " sdcard_image-rpi-xen"
-IMAGE_FSTYPES_append_raspberrypi4-64 = " rpi-xen-sdimg"
-# Align kernel version with current meta-virtualization kernel version
-PREFERRED_VERSION_linux-raspberrypi ?= "5.4.%"
+# 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 1ec7a157..7c8e3701 100644
--- a/conf/layer.conf
+++ b/conf/layer.conf
@@ -11,25 +11,17 @@ BBFILE_PRIORITY_virtualization-layer = "8"
# Custom licenses used by some packages in this layer
LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
-# The dynamic-layers directory hosts extensions and layer-specific
-# modifications.
-#
-# The .bbappend and .bb files are included if the respective layer
-# collection is available.
-BBFILES += "${@' '.join('${LAYERDIR}/dynamic-layers/%s/recipes*/*/*.bbappend' % layer \
- for layer in BBFILE_COLLECTIONS.split())}"
-BBFILES += "${@' '.join('${LAYERDIR}/dynamic-layers/%s/recipes*/*/*.bb' % layer \
- for layer in BBFILE_COLLECTIONS.split())}"
-
BBFILES_DYNAMIC += " \
raspberrypi:${LAYERDIR}/dynamic-layers/raspberrypi/*/*/*.bb \
- raspberrypi:${LAYERDIR}/dynamic-layers/rasbperrypi/*/*/*.bbappend \
+ 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 = "zeus dunfell"
+LAYERSERIES_COMPAT_virtualization-layer = "nanbield scarthgap"
LAYERDEPENDS_virtualization-layer = " \
core \
openembedded-layer \
@@ -47,9 +39,9 @@ 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.
@@ -60,8 +52,13 @@ INHERIT += "sanity-meta-virt"
# 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-k8s-cfg"
-USER_CLASSES_append = " meta-virt-xen-cfg"
+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/bootfiles/rpi-config_git.bbappend b/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend
deleted file mode 100644
index 2b9c4fbc..00000000
--- a/dynamic-layers/raspberrypi/recipes-bsp/bootfiles/rpi-config_git.bbappend
+++ /dev/null
@@ -1,6 +0,0 @@
-do_deploy_append() {
- # We need the GIC enabled for Xen to work.
- if [ "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'yes', 'no', d)}" = "yes" ]; then
- echo "enable_gic=1" >> ${DEPLOYDIR}/bcm2835-bootfiles/config.txt
- fi
-}
diff --git a/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bbappend b/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bbappend
deleted file mode 100644
index 2a511160..00000000
--- a/dynamic-layers/raspberrypi/recipes-bsp/rpi-u-boot-scr/rpi-u-boot-scr.bbappend
+++ /dev/null
@@ -1,17 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-RPI_DOM0_MEM ??= "256M"
-RPI_DEBUG_XEN_ARGS ??= "sync_console bootscrub=0"
-
-SRC_URI += "file://boot.cmd.xen.in"
-
-# If the distro is Xen enabled, override the default boot.cmd.in with the
-# alternative boot.cmd.xen.in from this layer, with variables subsitution here
-do_compile_append() {
- if [ "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'yes', 'no', d)}" = "yes" ]; then
- sed -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 arm -T script -C none -n "Boot script" -d "${WORKDIR}/boot.cmd" boot.scr
- fi
-}
diff --git a/dynamic-layers/raspberrypi/recipes-bsp/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
index 6c38d7d7..98742200 100644
--- a/dynamic-layers/raspberrypi/recipes-bsp/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
@@ -13,27 +13,36 @@ 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 boot arguments for dom0
-setenv dom0_bootargs "console=hvc0 earlyprintk=xen debug root=/dev/mmcblk0p2 rootwait"
-fdt set /chosen xen,dom0-bootargs \"${dom0_bootargs}\"
-
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 "xen,linux-zimage", "xen,multiboot-module"
+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 0:1 ${xen_loadaddr} xen
+fatload mmc 1:1 ${xen_loadaddr} xen
+echo Xen loaded, size: 0x$filesize
+
echo Load Linux kernel into memory
-fatload mmc 0:1 ${kernel_loadaddr} Image
+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}>
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-extended/xen/files/defconfig_raspberrypi4-64 b/dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
deleted file mode 100644
index f3343d32..00000000
--- a/dynamic-layers/raspberrypi/recipes-extended/xen/files/defconfig_raspberrypi4-64
+++ /dev/null
@@ -1,117 +0,0 @@
-#
-# Automatically generated file; DO NOT EDIT.
-# Xen/arm 4.13.0 Configuration
-#
-CONFIG_64BIT=y
-CONFIG_ARM_64=y
-CONFIG_ARM=y
-CONFIG_ARCH_DEFCONFIG="arch/arm/configs/arm64_defconfig"
-
-#
-# Architecture Features
-#
-CONFIG_NR_CPUS=128
-# CONFIG_ACPI is not set
-CONFIG_GICV3=y
-# CONFIG_HAS_ITS is not set
-CONFIG_HVM=y
-# CONFIG_NEW_VGIC is not set
-CONFIG_SBSA_VUART_CONSOLE=y
-CONFIG_ARM_SSBD=y
-CONFIG_HARDEN_BRANCH_PREDICTOR=y
-# CONFIG_TEE is not set
-
-#
-# ARM errata workaround via the alternative framework
-#
-CONFIG_ARM64_ERRATUM_827319=y
-CONFIG_ARM64_ERRATUM_824069=y
-CONFIG_ARM64_ERRATUM_819472=y
-CONFIG_ARM64_ERRATUM_832075=y
-CONFIG_ARM64_ERRATUM_834220=y
-CONFIG_ARM64_HARDEN_BRANCH_PREDICTOR=y
-CONFIG_ALL_PLAT=y
-# CONFIG_QEMU is not set
-# CONFIG_RCAR3 is not set
-# CONFIG_MPSOC is not set
-# CONFIG_NO_PLAT is not set
-CONFIG_ALL64_PLAT=y
-# CONFIG_ALL32_PLAT is not set
-CONFIG_MPSOC_PLATFORM=y
-
-#
-# Common Features
-#
-CONFIG_GRANT_TABLE=y
-CONFIG_HAS_ALTERNATIVE=y
-CONFIG_HAS_DEVICE_TREE=y
-CONFIG_HAS_FAST_MULTIPLY=y
-# CONFIG_MEM_ACCESS is not set
-CONFIG_HAS_PDX=y
-
-#
-# Speculative hardening
-#
-CONFIG_SPECULATIVE_HARDEN_ARRAY=y
-# CONFIG_EFI_SET_VIRTUAL_ADDRESS_MAP is not set
-CONFIG_XSM=y
-CONFIG_XSM_FLASK=y
-CONFIG_XSM_FLASK_AVC_STATS=y
-# CONFIG_XSM_FLASK_POLICY is not set
-CONFIG_XSM_SILO=y
-# CONFIG_XSM_DUMMY_DEFAULT is not set
-# CONFIG_XSM_FLASK_DEFAULT is not set
-CONFIG_XSM_SILO_DEFAULT=y
-# CONFIG_ARGO is not set
-
-#
-# Schedulers
-#
-CONFIG_SCHED_CREDIT=y
-CONFIG_SCHED_CREDIT2=y
-CONFIG_SCHED_RTDS=y
-CONFIG_SCHED_ARINC653=y
-CONFIG_SCHED_NULL=y
-# CONFIG_SCHED_CREDIT_DEFAULT is not set
-CONFIG_SCHED_CREDIT2_DEFAULT=y
-# CONFIG_SCHED_RTDS_DEFAULT is not set
-# CONFIG_SCHED_ARINC653_DEFAULT is not set
-# CONFIG_SCHED_NULL_DEFAULT is not set
-CONFIG_SCHED_DEFAULT="credit2"
-# CONFIG_LIVEPATCH is not set
-# CONFIG_ENFORCE_UNIQUE_SYMBOLS is not set
-# CONFIG_SUPPRESS_DUPLICATE_SYMBOL_WARNINGS is not set
-CONFIG_CMDLINE=""
-CONFIG_DOM0_MEM=""
-CONFIG_TRACEBUFFER=y
-
-#
-# Device Drivers
-#
-CONFIG_HAS_NS16550=y
-CONFIG_HAS_CADENCE_UART=y
-CONFIG_HAS_MVEBU=y
-CONFIG_HAS_MESON=y
-CONFIG_HAS_PL011=y
-CONFIG_HAS_SCIF=y
-CONFIG_HAS_PASSTHROUGH=y
-CONFIG_ARM_SMMU=y
-# CONFIG_IPMMU_VMSA is not set
-CONFIG_IOMMU_FORCE_PT_SHARE=y
-CONFIG_DEFCONFIG_LIST="arch/arm/configs/arm64_defconfig"
-
-#
-# Debugging Options
-#
-CONFIG_DEBUG=y
-CONFIG_DEBUG_INFO=y
-CONFIG_FRAME_POINTER=y
-# CONFIG_COVERAGE is not set
-# CONFIG_DEBUG_LOCK_PROFILE is not set
-CONFIG_DEBUG_LOCKS=y
-# CONFIG_PERF_COUNTERS is not set
-CONFIG_VERBOSE_DEBUG=y
-# CONFIG_DEVICE_TREE_DEBUG is not set
-CONFIG_SCRUB_DEBUG=y
-# CONFIG_DEBUG_TRACE is not set
-CONFIG_XMEM_POOL_POISON=y
diff --git a/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend b/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend
deleted file mode 100644
index 995dfd3f..00000000
--- a/dynamic-layers/raspberrypi/recipes-extended/xen/xen_git.bbappend
+++ /dev/null
@@ -1,11 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI_append_raspberrypi4-64 = " \
- file://defconfig_raspberrypi4-64 \
- "
-
-do_post_patch_append_raspberrypi4-64() {
- if [ ! -e "${WORKDIR}/defconfig" ] ; then
- cp "${WORKDIR}/defconfig_raspberrypi4-64" "${WORKDIR}/defconfig"
- fi
-}
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0001-swiotlb-xen-use-vmalloc_to_page-on-vmalloc-virt-addr.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0001-swiotlb-xen-use-vmalloc_to_page-on-vmalloc-virt-addr.patch
deleted file mode 100644
index 09144ced..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0001-swiotlb-xen-use-vmalloc_to_page-on-vmalloc-virt-addr.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From f5f4de59377afdd9a80e0f47df109eacf427c203 Mon Sep 17 00:00:00 2001
-From: Boris Ostrovsky <boris.ostrovsky@oracle.com>
-Date: Wed, 20 May 2020 16:42:06 -0700
-Subject: [PATCH 01/10] swiotlb-xen: use vmalloc_to_page on vmalloc virt
- addresses
-
-Don't just assume that virt_to_page works on all virtual addresses.
-Instead add a is_vmalloc_addr check and use vmalloc_to_page on vmalloc
-virt addresses.
-
-Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index b6d27762c6f8..a42129cba36e 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -335,6 +335,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
- int order = get_order(size);
- phys_addr_t phys;
- u64 dma_mask = DMA_BIT_MASK(32);
-+ struct page *pg;
-
- if (hwdev && hwdev->coherent_dma_mask)
- dma_mask = hwdev->coherent_dma_mask;
-@@ -346,9 +347,11 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
- /* Convert the size to actually allocated. */
- size = 1UL << (order + XEN_PAGE_SHIFT);
-
-+ pg = is_vmalloc_addr(vaddr) ? vmalloc_to_page(vaddr) :
-+ virt_to_page(vaddr);
- if (!WARN_ON((dev_addr + size - 1 > dma_mask) ||
- range_straddles_page_boundary(phys, size)) &&
-- TestClearPageXenRemapped(virt_to_page(vaddr)))
-+ TestClearPageXenRemapped(pg))
- xen_destroy_contiguous_region(phys, order);
-
- xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0002-swiotlb-xen-remove-start_dma_addr.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0002-swiotlb-xen-remove-start_dma_addr.patch
deleted file mode 100644
index 9c572a11..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0002-swiotlb-xen-remove-start_dma_addr.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From d078eac368946990c27b86198d2a37416ea02002 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:42:11 -0700
-Subject: [PATCH 02/10] swiotlb-xen: remove start_dma_addr
-
-It is not strictly needed. Call virt_to_phys on xen_io_tlb_start
-instead. It will be useful not to have a start_dma_addr around with the
-next patches.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index a42129cba36e..b5e0492b07b9 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -52,8 +52,6 @@ static unsigned long xen_io_tlb_nslabs;
- * Quick lookup value of the bus address of the IOTLB.
- */
-
--static u64 start_dma_addr;
--
- /*
- * Both of these functions should avoid XEN_PFN_PHYS because phys_addr_t
- * can be 32bit when dma_addr_t is 64bit leading to a loss in
-@@ -241,7 +239,6 @@ int __ref xen_swiotlb_init(int verbose, bool early)
- m_ret = XEN_SWIOTLB_EFIXUP;
- goto error;
- }
-- start_dma_addr = xen_virt_to_bus(xen_io_tlb_start);
- if (early) {
- if (swiotlb_init_with_tbl(xen_io_tlb_start, xen_io_tlb_nslabs,
- verbose))
-@@ -389,7 +386,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
- */
- trace_swiotlb_bounced(dev, dev_addr, size, swiotlb_force);
-
-- map = swiotlb_tbl_map_single(dev, start_dma_addr, phys,
-+ map = swiotlb_tbl_map_single(dev, virt_to_phys(xen_io_tlb_start), phys,
- size, size, dir, attrs);
- if (map == (phys_addr_t)DMA_MAPPING_ERROR)
- return DMA_MAPPING_ERROR;
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0003-swiotlb-xen-add-struct-device-parameter-to-xen_phys_.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0003-swiotlb-xen-add-struct-device-parameter-to-xen_phys_.patch
deleted file mode 100644
index d90701ba..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0003-swiotlb-xen-add-struct-device-parameter-to-xen_phys_.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 5ef503632a8df9be70f3c1ff828780e4348a03dc Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:42:11 -0700
-Subject: [PATCH 03/10] swiotlb-xen: add struct device* parameter to
- xen_phys_to_bus
-
-The parameter is unused in this patch.
-No functional changes.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index b5e0492b07b9..958ee5517e0b 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -57,7 +57,7 @@ static unsigned long xen_io_tlb_nslabs;
- * can be 32bit when dma_addr_t is 64bit leading to a loss in
- * information if the shift is done before casting to 64bit.
- */
--static inline dma_addr_t xen_phys_to_bus(phys_addr_t paddr)
-+static inline dma_addr_t xen_phys_to_bus(struct device *dev, phys_addr_t paddr)
- {
- unsigned long bfn = pfn_to_bfn(XEN_PFN_DOWN(paddr));
- dma_addr_t dma = (dma_addr_t)bfn << XEN_PAGE_SHIFT;
-@@ -78,9 +78,9 @@ static inline phys_addr_t xen_bus_to_phys(dma_addr_t baddr)
- return paddr;
- }
-
--static inline dma_addr_t xen_virt_to_bus(void *address)
-+static inline dma_addr_t xen_virt_to_bus(struct device *dev, void *address)
- {
-- return xen_phys_to_bus(virt_to_phys(address));
-+ return xen_phys_to_bus(dev, virt_to_phys(address));
- }
-
- static inline int range_straddles_page_boundary(phys_addr_t p, size_t size)
-@@ -309,7 +309,7 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
- * Do not use virt_to_phys(ret) because on ARM it doesn't correspond
- * to *dma_handle. */
- phys = *dma_handle;
-- dev_addr = xen_phys_to_bus(phys);
-+ dev_addr = xen_phys_to_bus(hwdev, phys);
- if (((dev_addr + size - 1 <= dma_mask)) &&
- !range_straddles_page_boundary(phys, size))
- *dma_handle = dev_addr;
-@@ -367,7 +367,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
- unsigned long attrs)
- {
- phys_addr_t map, phys = page_to_phys(page) + offset;
-- dma_addr_t dev_addr = xen_phys_to_bus(phys);
-+ dma_addr_t dev_addr = xen_phys_to_bus(dev, phys);
-
- BUG_ON(dir == DMA_NONE);
- /*
-@@ -392,7 +392,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
- return DMA_MAPPING_ERROR;
-
- phys = map;
-- dev_addr = xen_phys_to_bus(map);
-+ dev_addr = xen_phys_to_bus(dev, map);
-
- /*
- * Ensure that the address returned is DMA'ble
-@@ -536,7 +536,7 @@ xen_swiotlb_sync_sg_for_device(struct device *dev, struct scatterlist *sgl,
- static int
- xen_swiotlb_dma_supported(struct device *hwdev, u64 mask)
- {
-- return xen_virt_to_bus(xen_io_tlb_end - 1) <= mask;
-+ return xen_virt_to_bus(hwdev, xen_io_tlb_end - 1) <= mask;
- }
-
- const struct dma_map_ops xen_swiotlb_dma_ops = {
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0004-swiotlb-xen-add-struct-device-parameter-to-xen_bus_t.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0004-swiotlb-xen-add-struct-device-parameter-to-xen_bus_t.patch
deleted file mode 100644
index ccd03f1c..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0004-swiotlb-xen-add-struct-device-parameter-to-xen_bus_t.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From ed2cec0f196028f4eaed0951f1f82efd9e6b1b67 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:42:12 -0700
-Subject: [PATCH 04/10] swiotlb-xen: add struct device* parameter to
- xen_bus_to_phys
-
-The parameter is unused in this patch.
-No functional changes.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index 958ee5517e0b..9b4306a56feb 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -67,7 +67,7 @@ static inline dma_addr_t xen_phys_to_bus(struct device *dev, phys_addr_t paddr)
- return dma;
- }
-
--static inline phys_addr_t xen_bus_to_phys(dma_addr_t baddr)
-+static inline phys_addr_t xen_bus_to_phys(struct device *dev, dma_addr_t baddr)
- {
- unsigned long xen_pfn = bfn_to_pfn(XEN_PFN_DOWN(baddr));
- dma_addr_t dma = (dma_addr_t)xen_pfn << XEN_PAGE_SHIFT;
-@@ -339,7 +339,7 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
-
- /* do not use virt_to_phys because on ARM it doesn't return you the
- * physical address */
-- phys = xen_bus_to_phys(dev_addr);
-+ phys = xen_bus_to_phys(hwdev, dev_addr);
-
- /* Convert the size to actually allocated. */
- size = 1UL << (order + XEN_PAGE_SHIFT);
-@@ -420,7 +420,7 @@ static dma_addr_t xen_swiotlb_map_page(struct device *dev, struct page *page,
- static void xen_swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr,
- size_t size, enum dma_data_direction dir, unsigned long attrs)
- {
-- phys_addr_t paddr = xen_bus_to_phys(dev_addr);
-+ phys_addr_t paddr = xen_bus_to_phys(hwdev, dev_addr);
-
- BUG_ON(dir == DMA_NONE);
-
-@@ -436,7 +436,7 @@ static void
- xen_swiotlb_sync_single_for_cpu(struct device *dev, dma_addr_t dma_addr,
- size_t size, enum dma_data_direction dir)
- {
-- phys_addr_t paddr = xen_bus_to_phys(dma_addr);
-+ phys_addr_t paddr = xen_bus_to_phys(dev, dma_addr);
-
- if (!dev_is_dma_coherent(dev))
- xen_dma_sync_for_cpu(dma_addr, paddr, size, dir);
-@@ -449,7 +449,7 @@ static void
- xen_swiotlb_sync_single_for_device(struct device *dev, dma_addr_t dma_addr,
- size_t size, enum dma_data_direction dir)
- {
-- phys_addr_t paddr = xen_bus_to_phys(dma_addr);
-+ phys_addr_t paddr = xen_bus_to_phys(dev, dma_addr);
-
- if (is_xen_swiotlb_buffer(dma_addr))
- swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_DEVICE);
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0007-swiotlb-xen-add-struct-device-parameter-to-is_xen_sw.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0007-swiotlb-xen-add-struct-device-parameter-to-is_xen_sw.patch
deleted file mode 100644
index 9ef40598..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0007-swiotlb-xen-add-struct-device-parameter-to-is_xen_sw.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From f19187658bc7625f5e3ef89f56d599552b37a497 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:42:15 -0700
-Subject: [PATCH 07/10] swiotlb-xen: add struct device* parameter to
- is_xen_swiotlb_buffer
-
-The parameter is unused in this patch.
-No functional changes.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index ef58f05ae445..c50448fd9b75 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -97,7 +97,7 @@ static inline int range_straddles_page_boundary(phys_addr_t p, size_t size)
- return 0;
- }
-
--static int is_xen_swiotlb_buffer(dma_addr_t dma_addr)
-+static int is_xen_swiotlb_buffer(struct device *dev, dma_addr_t dma_addr)
- {
- unsigned long bfn = XEN_PFN_DOWN(dma_addr);
- unsigned long xen_pfn = bfn_to_local_pfn(bfn);
-@@ -428,7 +428,7 @@ static void xen_swiotlb_unmap_page(struct device *hwdev, dma_addr_t dev_addr,
- xen_dma_sync_for_cpu(hwdev, dev_addr, paddr, size, dir);
-
- /* NOTE: We use dev_addr here, not paddr! */
-- if (is_xen_swiotlb_buffer(dev_addr))
-+ if (is_xen_swiotlb_buffer(hwdev, dev_addr))
- swiotlb_tbl_unmap_single(hwdev, paddr, size, size, dir, attrs);
- }
-
-@@ -441,7 +441,7 @@ xen_swiotlb_sync_single_for_cpu(struct device *dev, dma_addr_t dma_addr,
- if (!dev_is_dma_coherent(dev))
- xen_dma_sync_for_cpu(dev, dma_addr, paddr, size, dir);
-
-- if (is_xen_swiotlb_buffer(dma_addr))
-+ if (is_xen_swiotlb_buffer(dev, dma_addr))
- swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_CPU);
- }
-
-@@ -451,7 +451,7 @@ xen_swiotlb_sync_single_for_device(struct device *dev, dma_addr_t dma_addr,
- {
- phys_addr_t paddr = xen_bus_to_phys(dev, dma_addr);
-
-- if (is_xen_swiotlb_buffer(dma_addr))
-+ if (is_xen_swiotlb_buffer(dev, dma_addr))
- swiotlb_tbl_sync_single(dev, paddr, size, dir, SYNC_FOR_DEVICE);
-
- if (!dev_is_dma_coherent(dev))
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0008-swiotlb-xen-introduce-phys_to_dma-dma_to_phys-transl.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0008-swiotlb-xen-introduce-phys_to_dma-dma_to_phys-transl.patch
deleted file mode 100644
index 2b59e180..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0008-swiotlb-xen-introduce-phys_to_dma-dma_to_phys-transl.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-From 9838cc0b60a4287034ac3bc94a3adf08bc1c3858 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:42:57 -0700
-Subject: [PATCH 08/10] swiotlb-xen: introduce phys_to_dma/dma_to_phys
- translations
-
-Call dma_to_phys in is_xen_swiotlb_buffer.
-Call phys_to_dma in xen_phys_to_bus.
-Call dma_to_phys in xen_bus_to_phys.
-
-Everything is taken care of by these changes except for
-xen_swiotlb_alloc_coherent and xen_swiotlb_free_coherent, which need a
-few explicit phys_to_dma/dma_to_phys calls.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- drivers/xen/swiotlb-xen.c | 20 ++++++++++++--------
- 1 file changed, 12 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/xen/swiotlb-xen.c b/drivers/xen/swiotlb-xen.c
-index c50448fd9b75..d011c4c7aa72 100644
---- a/drivers/xen/swiotlb-xen.c
-+++ b/drivers/xen/swiotlb-xen.c
-@@ -64,14 +64,16 @@ static inline dma_addr_t xen_phys_to_bus(struct device *dev, phys_addr_t paddr)
-
- dma |= paddr & ~XEN_PAGE_MASK;
-
-- return dma;
-+ return phys_to_dma(dev, dma);
- }
-
--static inline phys_addr_t xen_bus_to_phys(struct device *dev, dma_addr_t baddr)
-+static inline phys_addr_t xen_bus_to_phys(struct device *dev,
-+ dma_addr_t dma_addr)
- {
-+ phys_addr_t baddr = dma_to_phys(dev, dma_addr);
- unsigned long xen_pfn = bfn_to_pfn(XEN_PFN_DOWN(baddr));
-- dma_addr_t dma = (dma_addr_t)xen_pfn << XEN_PAGE_SHIFT;
-- phys_addr_t paddr = dma;
-+ phys_addr_t paddr = (xen_pfn << XEN_PAGE_SHIFT) |
-+ (baddr & ~XEN_PAGE_MASK);
-
- paddr |= baddr & ~XEN_PAGE_MASK;
-
-@@ -99,7 +101,7 @@ static inline int range_straddles_page_boundary(phys_addr_t p, size_t size)
-
- static int is_xen_swiotlb_buffer(struct device *dev, dma_addr_t dma_addr)
- {
-- unsigned long bfn = XEN_PFN_DOWN(dma_addr);
-+ unsigned long bfn = XEN_PFN_DOWN(dma_to_phys(dev, dma_addr));
- unsigned long xen_pfn = bfn_to_local_pfn(bfn);
- phys_addr_t paddr = XEN_PFN_PHYS(xen_pfn);
-
-@@ -304,11 +306,11 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
- if (hwdev && hwdev->coherent_dma_mask)
- dma_mask = hwdev->coherent_dma_mask;
-
-- /* At this point dma_handle is the physical address, next we are
-+ /* At this point dma_handle is the dma address, next we are
- * going to set it to the machine address.
- * Do not use virt_to_phys(ret) because on ARM it doesn't correspond
- * to *dma_handle. */
-- phys = *dma_handle;
-+ phys = dma_to_phys(hwdev, *dma_handle);
- dev_addr = xen_phys_to_bus(hwdev, phys);
- if (((dev_addr + size - 1 <= dma_mask)) &&
- !range_straddles_page_boundary(phys, size))
-@@ -319,6 +321,7 @@ xen_swiotlb_alloc_coherent(struct device *hwdev, size_t size,
- xen_free_coherent_pages(hwdev, size, ret, (dma_addr_t)phys, attrs);
- return NULL;
- }
-+ *dma_handle = phys_to_dma(hwdev, *dma_handle);
- SetPageXenRemapped(virt_to_page(ret));
- }
- memset(ret, 0, size);
-@@ -351,7 +354,8 @@ xen_swiotlb_free_coherent(struct device *hwdev, size_t size, void *vaddr,
- TestClearPageXenRemapped(pg))
- xen_destroy_contiguous_region(phys, order);
-
-- xen_free_coherent_pages(hwdev, size, vaddr, (dma_addr_t)phys, attrs);
-+ xen_free_coherent_pages(hwdev, size, vaddr, phys_to_dma(hwdev, phys),
-+ attrs);
- }
-
- /*
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0009-xen-arm-introduce-phys-dma-translations-in-xen_dma_s_kernel_5.4.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0009-xen-arm-introduce-phys-dma-translations-in-xen_dma_s_kernel_5.4.patch
deleted file mode 100644
index 9676698f..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0009-xen-arm-introduce-phys-dma-translations-in-xen_dma_s_kernel_5.4.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 9749386d4ba0adb545cfad494b312894909cc7a4 Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:43:07 -0700
-Subject: [PATCH 09/10] xen/arm: introduce phys/dma translations in
- xen_dma_sync_for_*
-
-Add phys_to_dma/dma_to_phys calls to
-xen_dma_sync_for_cpu, xen_dma_sync_for_device, and
-xen_arch_need_swiotlb.
-
-In xen_arch_need_swiotlb, take the opportunity to switch to the simpler
-pfn_valid check we use everywhere else.
-
-dma_cache_maint is fixed by the next patch.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Rebased onto 5.4 by: Christoher Clark <christopher.w.clark@gmail.com>
----
- arch/arm/xen/mm.c | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
-index 38fa917c8585..dc1fb57d2e12 100644
---- a/arch/arm/xen/mm.c
-+++ b/arch/arm/xen/mm.c
-@@ -1,5 +1,6 @@
- // SPDX-License-Identifier: GPL-2.0-only
- #include <linux/cpu.h>
-+#include <linux/dma-direct.h>
- #include <linux/dma-noncoherent.h>
- #include <linux/gfp.h>
- #include <linux/highmem.h>
-@@ -73,7 +74,7 @@ static void dma_cache_maint(dma_addr_t handle, size_t size, u32 op)
- void xen_dma_sync_for_cpu(struct device *dev, dma_addr_t handle,
- phys_addr_t paddr, size_t size, enum dma_data_direction dir)
- {
-- if (pfn_valid(PFN_DOWN(handle)))
-+ if (pfn_valid(PFN_DOWN(dma_to_phys(dev, handle))))
- arch_sync_dma_for_cpu(dev, paddr, size, dir);
- else if (dir != DMA_TO_DEVICE)
- dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
-@@ -82,7 +83,7 @@ void xen_dma_sync_for_cpu(struct device *dev, dma_addr_t handle,
- void xen_dma_sync_for_device(struct device *dev, dma_addr_t handle,
- phys_addr_t paddr, size_t size, enum dma_data_direction dir)
- {
-- if (pfn_valid(PFN_DOWN(handle)))
-+ if (pfn_valid(PFN_DOWN(dma_to_phys(dev, handle))))
- arch_sync_dma_for_device(dev, paddr, size, dir);
- else if (dir == DMA_FROM_DEVICE)
- dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
-@@ -95,7 +96,7 @@ bool xen_arch_need_swiotlb(struct device *dev,
- dma_addr_t dev_addr)
- {
- unsigned int xen_pfn = XEN_PFN_DOWN(phys);
-- unsigned int bfn = XEN_PFN_DOWN(dev_addr);
-+ unsigned int bfn = XEN_PFN_DOWN(dma_to_phys(dev, dev_addr));
-
- /*
- * The swiotlb buffer should be used if
-@@ -112,7 +113,7 @@ bool xen_arch_need_swiotlb(struct device *dev,
- * require a bounce buffer because the device doesn't support coherent
- * memory and we are not able to flush the cache.
- */
-- return (!hypercall_cflush && (xen_pfn != bfn) &&
-+ return (!hypercall_cflush && !pfn_valid(bfn) &&
- !dev_is_dma_coherent(dev));
- }
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0010-xen-arm-call-dma_to_phys-on-the-dma_addr_t-parameter.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0010-xen-arm-call-dma_to_phys-on-the-dma_addr_t-parameter.patch
deleted file mode 100644
index 8e2dc3c1..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0010-xen-arm-call-dma_to_phys-on-the-dma_addr_t-parameter.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 1f1182bf84ec7a6d1ec74c56fccd66ff013077af Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:43:08 -0700
-Subject: [PATCH 10/10] xen/arm: call dma_to_phys on the dma_addr_t parameter
- of dma_cache_maint
-
-Add a struct device* parameter to dma_cache_maint.
-
-Translate the dma_addr_t parameter of dma_cache_maint by calling
-dma_to_phys. Do it for the first page and all the following pages, in
-case of multipage handling.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- arch/arm/xen/mm.c | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
-index 7639251bcc79..6ddf3b3c1ab5 100644
---- a/arch/arm/xen/mm.c
-+++ b/arch/arm/xen/mm.c
-@@ -43,15 +43,18 @@ unsigned long xen_get_swiotlb_free_pages(unsigned int order)
- static bool hypercall_cflush = false;
-
- /* buffers in highmem or foreign pages cannot cross page boundaries */
--static void dma_cache_maint(dma_addr_t handle, size_t size, u32 op)
-+static void dma_cache_maint(struct device *dev, dma_addr_t handle,
-+ size_t size, u32 op)
- {
- struct gnttab_cache_flush cflush;
-
-- cflush.a.dev_bus_addr = handle & XEN_PAGE_MASK;
- cflush.offset = xen_offset_in_page(handle);
- cflush.op = op;
-+ handle &= XEN_PAGE_MASK;
-
- do {
-+ cflush.a.dev_bus_addr = dma_to_phys(dev, handle);
-+
- if (size + cflush.offset > XEN_PAGE_SIZE)
- cflush.length = XEN_PAGE_SIZE - cflush.offset;
- else
-@@ -60,7 +63,7 @@ static void dma_cache_maint(dma_addr_t handle, size_t size, u32 op)
- HYPERVISOR_grant_table_op(GNTTABOP_cache_flush, &cflush, 1);
-
- cflush.offset = 0;
-- cflush.a.dev_bus_addr += cflush.length;
-+ handle += cflush.length;
- size -= cflush.length;
- } while (size);
- }
-@@ -79,7 +82,7 @@ void xen_dma_sync_for_cpu(struct device *dev, dma_addr_t handle,
- if (pfn_valid(PFN_DOWN(dma_to_phys(dev, handle))))
- arch_sync_dma_for_cpu(paddr, size, dir);
- else if (dir != DMA_TO_DEVICE)
-- dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
-+ dma_cache_maint(dev, handle, size, GNTTAB_CACHE_INVAL);
- }
-
- void xen_dma_sync_for_device(struct device *dev, dma_addr_t handle,
-@@ -89,9 +92,9 @@ void xen_dma_sync_for_device(struct device *dev, dma_addr_t handle,
- if (pfn_valid(PFN_DOWN(dma_to_phys(dev, handle))))
- arch_sync_dma_for_device(paddr, size, dir);
- else if (dir == DMA_FROM_DEVICE)
-- dma_cache_maint(handle, size, GNTTAB_CACHE_INVAL);
-+ dma_cache_maint(dev, handle, size, GNTTAB_CACHE_INVAL);
- else
-- dma_cache_maint(handle, size, GNTTAB_CACHE_CLEAN);
-+ dma_cache_maint(dev, handle, size, GNTTAB_CACHE_CLEAN);
- }
-
- bool xen_arch_need_swiotlb(struct device *dev,
---
-2.15.4
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0011-adding-page-coherent-patch.patch b/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0011-adding-page-coherent-patch.patch
deleted file mode 100644
index a84ae742..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/files/0011-adding-page-coherent-patch.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 1f1182bf84ec7a6d1ec74c56fccd66ff013077af Mon Sep 17 00:00:00 2001
-From: Stefano Stabellini <stefano.stabellini@xilinx.com>
-Date: Wed, 20 May 2020 16:43:08 -0700
-Subject: [PATCH 11/11] xen/arm: call dma_to_phys on the dma_addr_t parameter
- of dma_cache_maint
-
-Add a struct device* parameter to dma_cache_maint.
-
-Translate the dma_addr_t parameter of dma_cache_maint by calling
-dma_to_phys. Do it for the first page and all the following pages, in
-case of multipage handling.
-
-Signed-off-by: Stefano Stabellini <stefano.stabellini@xilinx.com>
----
- include/xen/arm/page-coherent.h | 15 +++++++++------
- 1 file changed, 9 insertions(+), 6 deletions(-)
-
-diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
-index 7639251bcc79..6ddf3b3c1ab5 100644
---- a/include/xen/arm/page-coherent.h 2020-05-20 06:22:38.000000000 +0000
-+++ b/include/xen/arm/page-coherent.h 2020-05-29 00:37:15.604981421 +0000
-@@ -8,12 +8,17 @@
- static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
- dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
- {
-+ void *cpu_addr;
-+ if (dma_alloc_from_dev_coherent(hwdev, size, dma_handle, &cpu_addr))
-+ return cpu_addr;
- return dma_direct_alloc(hwdev, size, dma_handle, flags, attrs);
- }
-
- static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
- void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
- {
-+ if (dma_release_from_dev_coherent(hwdev, get_order(size), cpu_addr))
-+ return;
- dma_direct_free(hwdev, size, cpu_addr, dma_handle, attrs);
- }
-
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend
deleted file mode 100644
index 25979e2c..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_%.bbappend
+++ /dev/null
@@ -1,5 +0,0 @@
-# For a Xen-enabled distro, override the contents of cmdline.txt
-
-DEFAULT_CMDLINE := "${CMDLINE}"
-XEN_LINUX_CMDLINE ?= "console=hvc0 clk_ignore_unused earlyprintk=xen debug root=/dev/mmcblk0p2 rootwait"
-CMDLINE = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', '${XEN_LINUX_CMDLINE}', '${DEFAULT_CMDLINE}', d)}"
diff --git a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4.bbappend b/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4.bbappend
deleted file mode 100644
index ec8d677b..00000000
--- a/dynamic-layers/raspberrypi/recipes-kernel/linux/linux-raspberrypi_5.4.bbappend
+++ /dev/null
@@ -1,19 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-
-SRC_URI += " \
- file://0001-swiotlb-xen-use-vmalloc_to_page-on-vmalloc-virt-addr.patch \
- file://0002-swiotlb-xen-remove-start_dma_addr.patch \
- file://0003-swiotlb-xen-add-struct-device-parameter-to-xen_phys_.patch \
- file://0004-swiotlb-xen-add-struct-device-parameter-to-xen_bus_t.patch \
- file://0007-swiotlb-xen-add-struct-device-parameter-to-is_xen_sw.patch \
- file://0008-swiotlb-xen-introduce-phys_to_dma-dma_to_phys-transl.patch \
- file://0009-xen-arm-introduce-phys-dma-translations-in-xen_dma_s_kernel_5.4.patch \
- file://0010-xen-arm-call-dma_to_phys-on-the-dma_addr_t-parameter.patch \
- file://0011-adding-page-coherent-patch.patch \
- "
-
-# Add support for virtio.scc which linux-yocto_virtualization adds
-SRCREV_meta = "aafb8f095e97013d6e55b09ed150369cbe0c6476"
-SRC_URI_append += " \
- git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=kernel-meta \
- "
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..85be064b
--- /dev/null
+++ b/recipes-containers/aardvark-dns/aardvark-dns-crates.inc
@@ -0,0 +1,278 @@
+# 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.3.2 \
+ 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/1.0.2 \
+ crate://crates.io/anyhow/1.0.75 \
+ crate://crates.io/async-broadcast/0.6.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.31 \
+ crate://crates.io/clap/4.3.24 \
+ crate://crates.io/clap_builder/4.3.24 \
+ crate://crates.io/clap_derive/4.3.12 \
+ crate://crates.io/clap_lex/0.5.1 \
+ 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/errno/0.3.7 \
+ crate://crates.io/error-chain/0.12.4 \
+ crate://crates.io/event-listener/3.1.0 \
+ crate://crates.io/event-listener-strategy/0.1.0 \
+ crate://crates.io/form_urlencoded/1.2.0 \
+ crate://crates.io/futures-channel/0.3.29 \
+ crate://crates.io/futures-core/0.3.29 \
+ crate://crates.io/futures-io/0.3.29 \
+ crate://crates.io/futures-sink/0.3.29 \
+ crate://crates.io/futures-task/0.3.29 \
+ crate://crates.io/futures-util/0.3.29 \
+ 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/is-terminal/0.4.9 \
+ 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/linux-raw-sys/0.4.11 \
+ 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/rustix/0.38.25 \
+ 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.34.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_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+"
+
+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.3.2.sha256sum] = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163"
+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-1.0.2.sha256sum] = "c677ab05e09154296dd37acecd46420c17b9713e8366facafa8fc0885167cf4c"
+SRC_URI[anyhow-1.0.75.sha256sum] = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
+SRC_URI[async-broadcast-0.6.0.sha256sum] = "334d75cf09b33bede6cbc20e52515853ae7bee3d4eadd9540e13ce92af983d34"
+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.31.sha256sum] = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+SRC_URI[clap-4.3.24.sha256sum] = "fb690e81c7840c0d7aade59f242ea3b41b9bc27bcd5997890e7702ae4b32e487"
+SRC_URI[clap_builder-4.3.24.sha256sum] = "5ed2e96bc16d8d740f6f48d663eddf4b8a0983e79210fd55479b7bcd0a69860e"
+SRC_URI[clap_derive-4.3.12.sha256sum] = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
+SRC_URI[clap_lex-0.5.1.sha256sum] = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961"
+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[errno-0.3.7.sha256sum] = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+SRC_URI[error-chain-0.12.4.sha256sum] = "2d2f06b9cac1506ece98fe3231e3cc9c4410ec3d5b1f24ae1c8946f0742cdefc"
+SRC_URI[event-listener-3.1.0.sha256sum] = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
+SRC_URI[event-listener-strategy-0.1.0.sha256sum] = "15c97b4e30ea7e4b7e7b429d6e2d8510433ba8cee4e70dfb3243794e539d29fd"
+SRC_URI[form_urlencoded-1.2.0.sha256sum] = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652"
+SRC_URI[futures-channel-0.3.29.sha256sum] = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+SRC_URI[futures-core-0.3.29.sha256sum] = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+SRC_URI[futures-io-0.3.29.sha256sum] = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+SRC_URI[futures-sink-0.3.29.sha256sum] = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+SRC_URI[futures-task-0.3.29.sha256sum] = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+SRC_URI[futures-util-0.3.29.sha256sum] = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+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[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+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[linux-raw-sys-0.4.11.sha256sum] = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829"
+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[rustix-0.38.25.sha256sum] = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
+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.34.0.sha256sum] = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9"
+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_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
diff --git a/recipes-containers/aardvark-dns/aardvark-dns_1.9.0.bb b/recipes-containers/aardvark-dns/aardvark-dns_1.9.0.bb
new file mode 100644
index 00000000..e7e6bfbf
--- /dev/null
+++ b/recipes-containers/aardvark-dns/aardvark-dns_1.9.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 = "e4785bd5430e7f3006bb537e95c2a0f9311f85bc"
+
+# 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..02a07dcc
--- /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.33.3"
+
+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 = "5ca83472cb6927d8353a5c6e577c56450b175345"
+SRCREV_storage = "246ba3062e8b551026aef2708eee747014ce5c52"
+
+SRC_URI = " \
+ git://github.com/containers/buildah;branch=release-1.33;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.18.bb b/recipes-containers/conmon/conmon_git.bb
index c2c0fae4..5b998b09 100644
--- a/recipes-containers/conmon/conmon_2.0.18.bb
+++ b/recipes-containers/conmon/conmon_git.bb
@@ -4,19 +4,24 @@ HOMEPAGE = "https://github.com/containers/conmon"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=61af0b6932ea7b12fb9142721043bc77"
-DEPENDS = "glib-2.0"
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
-SRCREV = "7b3e303be8f1aea7e0d4a784c8e64a75c14756a4"
+DEPENDS = "glib-2.0 go-md2man-native libseccomp"
+
+SRCREV = "6d88cb3672a3dceeb4b045a92dc4d4285c9f4efd"
SRC_URI = "\
- git://github.com/containers/conmon.git \
+ git://github.com/containers/conmon.git;branch=main;protocol=https \
"
-PV = "2.0.18+git${SRCPV}"
+PV = "2.1.8+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)}"
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..1dadf287 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 = "87bf39a7f5580a86df739a787ced9664d1dc11bd"
+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 ebf5bab3..7ea54617 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 = "6d0ffae63b9b7d8f07e7f9cf50736a67fb31faf3"
+SRCREV_cri-o = "f8ccf314a68ac03d3f46097d90c573078ee5e494"
SRC_URI = "\
- git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.17;name=cri-o \
- file://0001-Makefile-force-symlinks.patch \
+ git://github.com/kubernetes-sigs/cri-o.git;branch=release-1.29;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.17.0+git${SRCREV_cri-o}"
+PV = "1.29.0+git${SRCREV_cri-o}"
+
+inherit features_check
+REQUIRED_DISTRO_FEATURES ?= "seccomp"
DEPENDS = " \
glib-2.0 \
@@ -36,38 +38,25 @@ 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 conmon util-linux iptables conntrack-tools"
+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=''"
@@ -81,8 +70,8 @@ do_compile() {
}
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
@@ -107,17 +96,19 @@ do_install() {
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} += "/usr/share/containers/oci/hooks.d"
+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"
+ALLOW_EMPTY:${PN} = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN} += "ldflags already-stripped textrel"
deltask compile_ptest_base
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 899d255b..84472d88 100644
--- a/recipes-containers/cri-o/files/crio.conf
+++ b/recipes-containers/cri-o/files/crio.conf
@@ -1,146 +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.
+# Path to AF_LOCAL socket on which CRI-O will listen.
listen = "/var/run/crio/crio.sock"
-# stream_address is the IP address on which the stream server will listen
-stream_address = ""
+# 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
+
+# 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/bin/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",
+]
-# hooks_dir_path is the oci hooks directory for automatically executed hooks
-hooks_dir_path = "/usr/share/containers/oci/hooks.d"
+# 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 = [
+]
-# pids_limit is the number of processes allowed in a container
-pids_limit = 1024
+# 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 = [
+]
-# The "crio.image" table contains settings pertaining to the
-# management of OCI images.
+# 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 = [
+]
+
+# 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",
+]
+
+monitor_path = ""
+
+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 = ['docker.io', 'registry.fedoraproject.org', 'registry.access.redhat.com']
+# Controls how image volumes are handled. The valid values are mkdir, bind and
+# ignore; the latter will ignore volumes entirely.
+image_volumes = "mkdir"
+
+# Temporary directory to use for storing big files
+big_files_temporary_dir = ""
-# The "crio.network" table contains settings pertaining to the
-# management of CNI plugins.
+# 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..c484a5a1
--- /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 = "f8733ddf69f86dae2d40e9f690785ef4bdb4440e"
+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.28.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 704a0f9e..0ff5850e 100644
--- a/recipes-containers/criu/criu_git.bb
+++ b/recipes-containers/criu/criu_git.bb
@@ -7,26 +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 = "c703e3fd8404e506cc6156719b953ea0580d59a4"
-PV = "3.13+git${SRCPV}"
+SRCREV = "d46f40f4ff0c724e0b9f0f8a2e8c043806897e94"
+PV = "3.17.1+git"
-SRC_URI = "git://github.com/checkpoint-restore/criu.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 \
- "
+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-lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch \
+ file://0004-criu-fix-conflicting-headers.patch \
+ file://0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch \
+ "
COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
DEPENDS += "libnl libcap protobuf-c-native protobuf-c util-linux-native libbsd libnet"
-RDEPENDS_${PN} = "bash"
+RDEPENDS:${PN} = "bash cgroup-lite"
S = "${WORKDIR}/git"
@@ -35,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 += " -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,6 +57,7 @@ export HOST_SYS
export HOSTCFLAGS = "${BUILD_CFLAGS}"
inherit setuptools3
+inherit pkgconfig
B = "${S}"
@@ -64,7 +66,10 @@ 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
}
@@ -75,22 +80,24 @@ do_compile () {
do_install () {
export INSTALL_LIB="${libdir}/${PYTHON_DIR}/site-packages"
- oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" FULL_PYTHON=${PYTHON} PYTHON=python3 install
+ oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" PLUGINDIR="${localstatedir}/lib" FULL_PYTHON=${PYTHON} PYTHON=python3 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.
- sed -i 's%^\#\!.*%\#\!/usr/bin/env python3%g' ${D}/usr/bin/crit
+ sed -i 's%^\#\!.*%\#\!/usr/bin/env python3%' ${D}/usr/bin/crit ${D}${libdir}/python3*/site-packages/crit-*-py3*.egg/EGG-INFO/scripts/crit
+
+ rm -rf ${D}/__pycache__
}
-FILES_${PN} += "${systemd_unitdir}/ \
+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-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/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/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..dc41d368
--- /dev/null
+++ b/recipes-containers/criu/files/0005-mount-add-definition-for-FSOPEN_CLOEXEC.patch
@@ -0,0 +1,110 @@
+Upstream-Status: Backport [https://github.com/checkpoint-restore/criu/commit/517c0947]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+
+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>
+---
+ 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/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..77126a1c 100644
--- a/recipes-containers/crun/crun_git.bb
+++ b/recipes-containers/crun/crun_git.bb
@@ -1,31 +1,44 @@
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 = "90b21ddd007f0306952b8b38aa66ddee58afffe4"
+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.12+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 += "systemd"
DEPENDS += "oci-image-spec oci-runtime-spec"
+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..b7745f2b
--- /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 = "d6f842b042d2f2926901305336527b3eaadf067a"
+
+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.21.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-setup.py-import-fastentrypoints.patch b/recipes-containers/docker-compose/files/0001-setup.py-import-fastentrypoints.patch
deleted file mode 100644
index df613e84..00000000
--- a/recipes-containers/docker-compose/files/0001-setup.py-import-fastentrypoints.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From f3a22f0f14a4b3313e6405dfb6c97df949493a34 Mon Sep 17 00:00:00 2001
-From: Ming Liu <liu.ming50@gmail.com>
-Date: Thu, 30 Jan 2020 17:22:19 +0100
-Subject: [PATCH] setup.py: import fastentrypoints
-
-Upstream-Status: Inappropriate [OE specific configuration]
-
-Signed-off-by: Ming Liu <liu.ming50@gmail.com>
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index ad57969..3cccffc 100644
---- a/setup.py
-+++ b/setup.py
-@@ -12,7 +12,7 @@ import sys
- import pkg_resources
- from setuptools import find_packages
- from setuptools import setup
--
-+import fastentrypoints
-
- def read(*parts):
- path = os.path.join(os.path.dirname(__file__), *parts)
---
-2.7.4
-
diff --git a/recipes-containers/docker-compose/files/0001-setup.py-remove-maximum-version-requirements.patch b/recipes-containers/docker-compose/files/0001-setup.py-remove-maximum-version-requirements.patch
deleted file mode 100644
index f517d05a..00000000
--- a/recipes-containers/docker-compose/files/0001-setup.py-remove-maximum-version-requirements.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 1d358acd46c9ca71d848fca8c2d677414257f247 Mon Sep 17 00:00:00 2001
-From: Chen Qi <Qi.Chen@windriver.com>
-Date: Fri, 22 Nov 2019 09:24:58 +0800
-Subject: [PATCH] setup.py: remove maximum version requirements
-
-Remove maximum version requirements so that docker-compose will not
-require old version recipes.
-
-Upstream-Status: Inappropriate [OE Specific]
-
-Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
-Signed-off-by: Ming Liu <liu.ming50@gmail.com>
----
- setup.py | 26 +++++++++++++-------------
- 1 file changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/setup.py b/setup.py
-index 110441dc..eef28254 100644
---- a/setup.py
-+++ b/setup.py
-@@ -30,18 +30,18 @@ def find_version(*file_paths):
-
-
- install_requires = [
-- 'cached-property >= 1.2.0, < 2',
-- 'docopt >= 0.6.1, < 1',
-- 'PyYAML >= 3.10, < 6',
-- 'requests >= 2.20.0, < 3',
-- 'texttable >= 0.9.0, < 2',
-- 'websocket-client >= 0.32.0, < 1',
-- 'distro >= 1.5.0, < 2',
-- 'docker[ssh] >= 3.7.0, < 5',
-- 'dockerpty >= 0.4.1, < 1',
-- 'six >= 1.3.0, < 2',
-- 'jsonschema >= 2.5.1, < 4',
-- 'python-dotenv >= 0.13.0, < 1',
-+ 'cached-property >= 1.2.0',
-+ 'docopt >= 0.6.1',
-+ 'PyYAML >= 3.10',
-+ 'requests >= 2.20.0',
-+ 'texttable >= 0.9.0',
-+ 'websocket-client >= 0.32.0',
-+ 'distro >= 1.5.0',
-+ 'docker[ssh] >= 3.7.0',
-+ 'dockerpty >= 0.4.1',
-+ 'six >= 1.3.0',
-+ 'jsonschema >= 2.5.1',
-+ 'python-dotenv >= 0.13.0',
- ]
-
-
-@@ -61,7 +61,7 @@ extras_require = {
- ':python_version < "3.3"': ['backports.shutil_get_terminal_size == 1.0.0',
- 'ipaddress >= 1.0.16, < 2'],
- ':sys_platform == "win32"': ['colorama >= 0.4, < 1'],
-- 'socks': ['PySocks >= 1.5.6, != 1.5.7, < 2'],
-+ 'socks': ['PySocks >= 1.5.6, != 1.5.7'],
- 'tests': tests_require,
- }
-
-
---
-2.25.0
-
diff --git a/recipes-containers/docker-compose/files/modules.txt b/recipes-containers/docker-compose/files/modules.txt
new file mode 100644
index 00000000..d287d128
--- /dev/null
+++ b/recipes-containers/docker-compose/files/modules.txt
@@ -0,0 +1,367 @@
+# github.com/AlecAivazis/survey/v2 v2.3.7
+## explicit
+# github.com/Microsoft/go-winio v0.6.1
+## explicit
+# github.com/adrg/xdg v0.4.0
+## explicit
+# github.com/buger/goterm v1.0.4
+## explicit
+# github.com/compose-spec/compose-go v1.18.3
+## explicit
+# github.com/containerd/console v1.0.3
+## explicit
+# github.com/containerd/containerd v1.7.3
+## explicit
+# github.com/cucumber/godog v0.0.0-00010101000000-000000000000
+## explicit
+# github.com/distribution/distribution/v3 v3.0.0-20230601133803-97b1d649c493
+## explicit
+# github.com/docker/buildx v0.11.2
+## explicit
+# github.com/docker/cli v24.0.5+incompatible
+## explicit
+# github.com/docker/cli-docs-tool v0.6.0
+## explicit
+# github.com/docker/docker v24.0.5+incompatible
+## explicit
+# github.com/docker/go-connections v0.4.0
+## explicit
+# github.com/docker/go-units v0.5.0
+## explicit
+# github.com/fsnotify/fsevents v0.1.1
+## explicit
+# github.com/golang/mock v1.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/mapstructure v1.5.0
+## explicit
+# github.com/moby/buildkit v0.12.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-rc4
+## explicit
+# github.com/pkg/errors v0.9.1
+## explicit
+# github.com/sirupsen/logrus v1.9.3
+## explicit
+# github.com/spf13/cobra v1.7.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/otel v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
+## explicit
+# go.opentelemetry.io/otel/sdk v1.14.0
+## explicit
+# go.opentelemetry.io/otel/trace v1.14.0
+## explicit
+# go.uber.org/goleak v1.2.1
+## explicit
+# golang.org/x/sync v0.3.0
+## explicit
+# google.golang.org/grpc v1.57.0
+## explicit
+# gopkg.in/yaml.v2 v2.4.0
+## explicit
+# gotest.tools/v3 v3.5.0
+## explicit
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1
+## explicit
+# github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1
+## explicit
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit
+# github.com/aws/aws-sdk-go-v2 v1.17.6
+## explicit
+# github.com/aws/aws-sdk-go-v2/config v1.18.16
+## explicit
+# github.com/aws/aws-sdk-go-v2/credentials v1.13.16
+## explicit
+# github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.24
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.24
+## explicit
+# github.com/aws/aws-sdk-go-v2/internal/ini v1.3.31
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/sso v1.12.5
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/ssooidc v1.14.5
+## explicit
+# github.com/aws/aws-sdk-go-v2/service/sts v1.18.6
+## explicit
+# github.com/aws/smithy-go v1.13.5
+## explicit
+# github.com/beorn7/perks v1.0.1
+## explicit
+# github.com/bugsnag/bugsnag-go v1.5.0
+## explicit
+# github.com/cenkalti/backoff/v4 v4.2.0
+## explicit
+# github.com/cespare/xxhash/v2 v2.2.0
+## explicit
+# github.com/cloudflare/cfssl v1.6.4
+## explicit
+# github.com/containerd/continuity v0.4.1
+## explicit
+# github.com/containerd/typeurl/v2 v2.1.1
+## explicit
+# github.com/cucumber/gherkin-go/v19 v19.0.3
+## explicit
+# github.com/cucumber/messages-go/v16 v16.0.1
+## explicit
+# github.com/cyphar/filepath-securejoin v0.2.3
+## explicit
+# github.com/davecgh/go-spew v1.1.1
+## explicit
+# github.com/docker/distribution v2.8.2+incompatible
+## explicit
+# github.com/docker/docker-credential-helpers v0.7.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/emicklei/go-restful/v3 v3.10.1
+## explicit
+# github.com/felixge/httpsnoop v1.0.3
+## explicit
+# github.com/fvbommel/sortorder v1.0.2
+## explicit
+# github.com/go-logr/logr v1.2.4
+## explicit
+# github.com/go-logr/stdr v1.2.2
+## explicit
+# github.com/go-openapi/jsonpointer v0.19.5
+## explicit
+# github.com/go-openapi/jsonreference v0.20.0
+## explicit
+# github.com/go-openapi/swag v0.19.14
+## explicit
+# github.com/gofrs/flock v0.8.1
+## explicit
+# github.com/gofrs/uuid v4.2.0+incompatible
+## 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 v0.5.7-v3refs
+## explicit
+# github.com/google/go-cmp v0.5.9
+## explicit
+# github.com/google/gofuzz v1.2.0
+## explicit
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+## explicit
+# github.com/gorilla/mux v1.8.0
+## explicit
+# github.com/grpc-ecosystem/go-grpc-middleware v1.3.0
+## explicit
+# github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3
+## explicit
+# github.com/hashicorp/errwrap v1.1.0
+## explicit
+# github.com/hashicorp/go-immutable-radix v1.3.1
+## explicit
+# github.com/hashicorp/go-memdb v1.3.2
+## explicit
+# github.com/hashicorp/golang-lru v0.5.4
+## explicit
+# github.com/hashicorp/hcl v1.0.0
+## 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/jinzhu/gorm v1.9.11
+## 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.16.5
+## explicit
+# github.com/kr/pretty v0.3.0
+## explicit
+# github.com/magiconair/properties v1.8.6
+## explicit
+# github.com/mailru/easyjson v0.7.6
+## 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.14
+## 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/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/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/opencontainers/runc v1.1.7
+## explicit
+# github.com/pelletier/go-toml v1.9.5
+## explicit
+# github.com/pelletier/go-toml/v2 v2.0.5
+## explicit
+# github.com/pmezard/go-difflib v1.0.0
+## explicit
+# github.com/prometheus/client_golang v1.14.0
+## explicit
+# github.com/prometheus/client_model v0.3.0
+## explicit
+# github.com/prometheus/common v0.42.0
+## explicit
+# github.com/prometheus/procfs v0.9.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-20190422032157-8b2912629002
+## explicit
+# github.com/shibumi/go-pathspec v1.3.0
+## explicit
+# github.com/spf13/afero v1.9.2
+## explicit
+# github.com/spf13/cast v1.5.0
+## explicit
+# github.com/spf13/jwalterweatherman v1.1.0
+## explicit
+# github.com/subosito/gotenv v1.4.1
+## explicit
+# github.com/tonistiigi/fsutil v0.0.0-20230629203738-36ef4d8c0dbb
+## 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
+# github.com/zmap/zcrypto v0.0.0-20220605182715-4dfcec6e9a8c
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.40.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.40.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0
+## explicit
+# go.opentelemetry.io/otel/metric v0.37.0
+## explicit
+# go.opentelemetry.io/proto/otlp v0.19.0
+## explicit
+# golang.org/x/crypto v0.7.0
+## explicit
+# golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1
+## explicit
+# golang.org/x/mod v0.11.0
+## explicit
+# golang.org/x/net v0.9.0
+## explicit
+# golang.org/x/oauth2 v0.7.0
+## explicit
+# golang.org/x/sys v0.7.0
+## explicit
+# golang.org/x/term v0.7.0
+## explicit
+# golang.org/x/text v0.9.0
+## explicit
+# golang.org/x/time v0.3.0
+## explicit
+# golang.org/x/tools v0.7.0
+## explicit
+# google.golang.org/appengine v1.6.7
+## explicit
+# google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54
+## explicit
+# google.golang.org/genproto/googleapis/api v0.0.0-20230525234035-dd9d682886f9
+## explicit
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20230525234030-28d5490b6b19
+## explicit
+# google.golang.org/protobuf v1.30.0
+## explicit
+# gopkg.in/inf.v0 v0.9.1
+## explicit
+# gopkg.in/ini.v1 v1.67.0
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+# k8s.io/api v0.26.2
+## explicit
+# k8s.io/apimachinery v0.26.2
+## explicit
+# k8s.io/client-go v0.26.2
+## explicit
+# k8s.io/klog/v2 v2.90.1
+## explicit
+# k8s.io/kube-openapi v0.0.0-20221012153701-172d655c2280
+## explicit
+# k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5
+## explicit
+# sigs.k8s.io/json v0.0.0-20220713155537-f223a00ba0e2
+## explicit
+# sigs.k8s.io/structured-merge-diff/v4 v4.2.3
+## explicit
+# sigs.k8s.io/yaml v1.3.0
+## explicit
+# github.com/cucumber/godog => github.com/laurazard/godog v0.0.0-20220922095256-4c4b17abdae7
diff --git a/recipes-containers/docker-compose/python3-docker-compose_1.26.0.bb b/recipes-containers/docker-compose/python3-docker-compose_1.26.0.bb
deleted file mode 100644
index 37c62e85..00000000
--- a/recipes-containers/docker-compose/python3-docker-compose_1.26.0.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-SUMMARY = "Multi-container orchestration for Docker"
-HOMEPAGE = "https://www.docker.com/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "f7d54de5db1f17322c09db8157bd160f"
-SRC_URI[sha256sum] = "7e836102d139aca667d6af53f0f4d942c9459ec24d6dd4f0203d74359b0fd311"
-
-SRC_URI += "file://0001-setup.py-remove-maximum-version-requirements.patch \
- file://0001-setup.py-import-fastentrypoints.patch \
- "
-
-DEPENDS += "${PYTHON_PN}-fastentrypoints-native"
-
-RDEPENDS_${PN} = "\
- ${PYTHON_PN}-cached-property \
- ${PYTHON_PN}-certifi \
- ${PYTHON_PN}-chardet \
- ${PYTHON_PN}-colorama \
- ${PYTHON_PN}-distro \
- ${PYTHON_PN}-docker \
- ${PYTHON_PN}-docker-pycreds \
- ${PYTHON_PN}-dockerpty \
- ${PYTHON_PN}-docopt \
- ${PYTHON_PN}-dotenv \
- ${PYTHON_PN}-fcntl \
- ${PYTHON_PN}-idna \
- ${PYTHON_PN}-jsonschema \
- ${PYTHON_PN}-misc \
- ${PYTHON_PN}-paramiko \
- ${PYTHON_PN}-pyyaml \
- ${PYTHON_PN}-requests \
- ${PYTHON_PN}-six \
- ${PYTHON_PN}-terminal \
- ${PYTHON_PN}-texttable \
- ${PYTHON_PN}-urllib3 \
- ${PYTHON_PN}-wcwidth \
- ${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..9e6eacf4
--- /dev/null
+++ b/recipes-containers/docker-compose/relocation.inc
@@ -0,0 +1,200 @@
+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 \
+ gopkg.in/inf.v0:gopkg.in/inf.v0:force \
+ gopkg.in/ini.v1:gopkg.in/ini.v1:force \
+ gopkg.in/yaml.v2:gopkg.in/yaml.v2:force \
+ golang.org/x/exp:golang.org/x/exp:force \
+ golang.org/x/mod:golang.org/x/mod: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 \
+ 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 \
+ github.com/adrg/xdg:github.com/adrg/xdg: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/kr/pretty:github.com/kr/pretty:force \
+ github.com/docker/cli:github.com/docker/cli:force \
+ github.com/pkg/errors:github.com/pkg/errors:force \
+ github.com/gofrs/uuid:github.com/gofrs/uuid:force \
+ github.com/mgutz/ansi:github.com/mgutz/ansi:force \
+ github.com/spf13/cast:github.com/spf13/cast:force \
+ github.com/golang/mock:github.com/golang/mock: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/gorilla/mux:github.com/gorilla/mux:force \
+ github.com/jinzhu/gorm:github.com/jinzhu/gorm:force \
+ github.com/moby/locker:github.com/moby/locker:force \
+ github.com/rivo/uniseg:github.com/rivo/uniseg:force \
+ github.com/spf13/afero:github.com/spf13/afero:force \
+ github.com/buger/goterm:github.com/buger/goterm:force \
+ github.com/morikuni/aec:github.com/morikuni/aec: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/zmap/zcrypto:github.com/zmap/zcrypto:force \
+ github.com/docker/buildx:github.com/docker/buildx:force \
+ github.com/docker/docker:github.com/docker/docker: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/go-cmp:github.com/google/go-cmp:force \
+ github.com/google/gofuzz:github.com/google/gofuzz:force \
+ github.com/hashicorp/hcl:github.com/hashicorp/hcl:force \
+ github.com/imdario/mergo:github.com/imdario/mergo:force \
+ github.com/google/gnostic:github.com/google/gnostic:force \
+ github.com/cucumber/godog:github.com/laurazard/godog:force \
+ github.com/docker/go-units:github.com/docker/go-units:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus:force \
+ github.com/davecgh/go-spew:github.com/davecgh/go-spew: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/subosito/gotenv:github.com/subosito/gotenv:force \
+ google.golang.org/genproto:google.golang.org/genproto:force \
+ google.golang.org/protobuf:google.golang.org/protobuf:force \
+ github.com/stretchr/testify:github.com/stretchr/testify:force \
+ github.com/cloudflare/cfssl:github.com/cloudflare/cfssl: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/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/felixge/httpsnoop:github.com/felixge/httpsnoop: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 \
+ github.com/Microsoft/go-winio:github.com/Microsoft/go-winio:force \
+ github.com/containerd/console:github.com/containerd/console:force \
+ github.com/bugsnag/bugsnag-go:github.com/bugsnag/bugsnag-go:force \
+ github.com/fvbommel/sortorder:github.com/fvbommel/sortorder:force \
+ github.com/hashicorp/go-memdb:github.com/hashicorp/go-memdb: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/opencontainers/runc:github.com/opencontainers/runc: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/hashicorp/golang-lru:github.com/hashicorp/golang-lru: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/pelletier/go-toml/v2:github.com/pelletier/go-toml/v2: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/magiconair/properties:github.com/magiconair/properties:force \
+ github.com/xeipuuv/gojsonpointer:github.com/xeipuuv/gojsonpointer:force \
+ go.opentelemetry.io/proto/otlp:go.opentelemetry.io/proto/otlp/otlp:force \
+ github.com/mitchellh/mapstructure:github.com/mitchellh/mapstructure: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/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/compose-spec/compose-go:github.com/compose-spec/compose-go:force \
+ github.com/hashicorp/go-multierror:github.com/hashicorp/go-multierror:force \
+ github.com/cucumber/gherkin-go/v19:github.com/cucumber/gherkin-go/v19: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/spf13/jwalterweatherman:github.com/spf13/jwalterweatherman: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/cucumber/messages-go/v16:github.com/cucumber/messages-go/v16: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/cyphar/filepath-securejoin:github.com/cyphar/filepath-securejoin:force \
+ github.com/aws/aws-sdk-go-v2/config:github.com/aws/aws-sdk-go-v2/config/config:force \
+ github.com/distribution/distribution/v3:github.com/distribution/distribution/v3:force \
+ github.com/hashicorp/go-immutable-radix:github.com/hashicorp/go-immutable-radix: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 \
+ 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/internal/retry:go.opentelemetry.io/otel/exporters/otlp/internal/retry/exporters/otlp/internal/retry: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 \
+ 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/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..8897c9ca
--- /dev/null
+++ b/recipes-containers/docker-compose/src_uri.inc
@@ -0,0 +1,915 @@
+# k8s.io/api v0.26.2
+# [1] git ls-remote https://github.com/kubernetes/api 1528256abbdf8ff2510112b28a6aacd239789a36
+SRCREV_k8s.io-api="1528256abbdf8ff2510112b28a6aacd239789a36"
+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-20230220204549-a5ecb0141aa5
+# [1] git ls-remote https://github.com/kubernetes/utils a5ecb0141aa5b1b224e745aca203afdfd22d8b3a
+SRCREV_utils="a5ecb0141aa5b1b224e745aca203afdfd22d8b3a"
+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.90.1
+# [1] git ls-remote https://github.com/kubernetes/klog d7fc50528570f8276de46570f916682257821e22
+SRCREV_klog-v2="d7fc50528570f8276de46570f916682257821e22"
+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.0
+# [1] git ls-remote https://github.com/gotestyourself/gotest.tools a80f057529047c44e1a85d0d017b200787e537e0
+SRCREV_gotest.tools-v3="a80f057529047c44e1a85d0d017b200787e537e0"
+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"
+
+# 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"
+
+# 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"
+
+# golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1
+# [1] git ls-remote https://go.googlesource.com/exp 613f0c0eb8a17a98ecdb096a7f9f7d5053c1c963
+SRCREV_exp="613f0c0eb8a17a98ecdb096a7f9f7d5053c1c963"
+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.11.0
+# [1] git ls-remote https://go.googlesource.com/mod 62c7e578f1a7275d934c99dd48715525bd52b17e
+SRCREV_mod="62c7e578f1a7275d934c99dd48715525bd52b17e"
+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.9.0
+# [1] git ls-remote https://go.googlesource.com/net 694cff8668bac64e0864b552bffc280cd27f21b1
+SRCREV_net="694cff8668bac64e0864b552bffc280cd27f21b1"
+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.7.0
+# [1] git ls-remote https://go.googlesource.com/sys 64840c112d2335ed9874114aed48f946e778a769
+SRCREV_sys="64840c112d2335ed9874114aed48f946e778a769"
+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"
+
+# k8s.io/client-go v0.26.2
+# [1] git ls-remote https://github.com/kubernetes/client-go 620cb60675340a9ca825fd5082b0d500f9b62e90
+SRCREV_client-go="620cb60675340a9ca825fd5082b0d500f9b62e90"
+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-20220713155537-f223a00ba0e2
+# [1] git ls-remote https://github.com/kubernetes-sigs/json f223a00ba0e27f539157f69f9c919c204ea7f40b
+SRCREV_json="f223a00ba0e27f539157f69f9c919c204ea7f40b"
+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.3.0
+# [1] git ls-remote https://go.googlesource.com/sync 93782cc822b6b554cb7df40332fd010f0473cbc8
+SRCREV_sync="93782cc822b6b554cb7df40332fd010f0473cbc8"
+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.7.0
+# [1] git ls-remote https://go.googlesource.com/term 7ae6be6d0150527c2c41e70586b9ade6a972a186
+SRCREV_x-term="7ae6be6d0150527c2c41e70586b9ade6a972a186"
+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.9.0
+# [1] git ls-remote https://go.googlesource.com/text 48e4a4a957429d31328a685863b594ca9a06b552
+SRCREV_text="48e4a4a957429d31328a685863b594ca9a06b552"
+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.2.1
+# [1] git ls-remote https://github.com/uber-go/goleak 83c7e126390f1508ca9cb8e87d70849b55181104
+SRCREV_goleak="83c7e126390f1508ca9cb8e87d70849b55181104"
+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.7.0
+# [1] git ls-remote https://go.googlesource.com/tools 031fc75960d487b0b15db12fb328676236a3a39c
+SRCREV_tools="031fc75960d487b0b15db12fb328676236a3a39c"
+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/adrg/xdg v0.4.0
+# [1] git ls-remote https://github.com/adrg/xdg 4ec40e24f0cf1039f93c773f2984decdea9719b5
+SRCREV_xdg="4ec40e24f0cf1039f93c773f2984decdea9719b5"
+SRC_URI += "git://github.com/adrg/xdg;name=xdg;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/adrg/xdg"
+
+# golang.org/x/crypto v0.7.0
+# [1] git ls-remote https://go.googlesource.com/crypto 776e461a4e6d8b372a43c72122c5c28cfc40dca2
+SRCREV_crypto="776e461a4e6d8b372a43c72122c5c28cfc40dca2"
+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.7.0
+# [1] git ls-remote https://go.googlesource.com/oauth2 36075149c5b89480def496c735b8a1ba5fc63218
+SRCREV_oauth2="36075149c5b89480def496c735b8a1ba5fc63218"
+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.26.2
+# [1] git ls-remote https://github.com/kubernetes/apimachinery 53ecdf01b997ca93c7db7615dfe7b27ad8391983
+SRCREV_apimachinery="53ecdf01b997ca93c7db7615dfe7b27ad8391983"
+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-20221012153701-172d655c2280
+# [1] git ls-remote https://github.com/kubernetes/kube-openapi 172d655c2280350c77cf05962948fc67ff043492
+SRCREV_kube-openapi="172d655c2280350c77cf05962948fc67ff043492"
+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/kr/pretty v0.3.0
+# [1] git ls-remote https://github.com/kr/pretty a883a8422cd235c67c6c4fdcb7bbb022143e10b1
+SRCREV_pretty="a883a8422cd235c67c6c4fdcb7bbb022143e10b1"
+SRC_URI += "git://github.com/kr/pretty;name=pretty;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/kr/pretty"
+
+# github.com/docker/cli v24.0.5+incompatible
+# [1] git ls-remote https://github.com/docker/cli ced099660009713e0e845eeb754e6050dbaa45d0
+SRCREV_cli="ced099660009713e0e845eeb754e6050dbaa45d0"
+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/gofrs/uuid v4.2.0+incompatible
+# [1] git ls-remote https://github.com/gofrs/uuid 0c84a43ce25087b7041833685982950a65630d28
+SRCREV_uuid="0c84a43ce25087b7041833685982950a65630d28"
+SRC_URI += "git://github.com/gofrs/uuid;name=uuid;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/gofrs/uuid"
+
+# 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/spf13/cast v1.5.0
+# [1] git ls-remote https://github.com/spf13/cast 2b0eb0f724e320b655240e331aef36d1175986c2
+SRCREV_cast="2b0eb0f724e320b655240e331aef36d1175986c2"
+SRC_URI += "git://github.com/spf13/cast;name=cast;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/cast"
+
+# 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/spf13/cobra v1.7.0
+# [1] git ls-remote https://github.com/spf13/cobra 4dd4b25de38418174a6e859e8a32eaccca32dccc
+SRCREV_cobra="4dd4b25de38418174a6e859e8a32eaccca32dccc"
+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.57.0
+# [1] git ls-remote https://github.com/grpc/grpc-go 87bf02ad24f6cc071d2553eb5d62332194bba1fe
+SRCREV_grpc="87bf02ad24f6cc071d2553eb5d62332194bba1fe"
+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/gorilla/mux v1.8.0
+# [1] git ls-remote https://github.com/gorilla/mux 98cb6bf42e086f6af920b965c38cacc07402d51b
+SRCREV_mux="98cb6bf42e086f6af920b965c38cacc07402d51b"
+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/jinzhu/gorm v1.9.11
+# [1] git ls-remote https://github.com/jinzhu/gorm 81c17a7e2529c59efc4e74c5b32c1fb71fb12fa2
+SRCREV_gorm="81c17a7e2529c59efc4e74c5b32c1fb71fb12fa2"
+SRC_URI += "git://github.com/jinzhu/gorm;name=gorm;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/jinzhu/gorm"
+
+# 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/spf13/afero v1.9.2
+# [1] git ls-remote https://github.com/spf13/afero 2a70f2bb2db1524bf2aa3ca0cfebefa8d6367b7b
+SRCREV_afero="2a70f2bb2db1524bf2aa3ca0cfebefa8d6367b7b"
+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/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/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.2.4
+# [1] git ls-remote https://github.com/go-logr/logr 4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2
+SRCREV_logr="4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2"
+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/zmap/zcrypto v0.0.0-20220605182715-4dfcec6e9a8c
+# [1] git ls-remote https://github.com/zmap/zcrypto 4dfcec6e9a8c2014f73dd584e64dc797129d77b8
+SRCREV_zcrypto="4dfcec6e9a8c2014f73dd584e64dc797129d77b8"
+SRC_URI += "git://github.com/zmap/zcrypto;name=zcrypto;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/zmap/zcrypto"
+
+# github.com/docker/buildx v0.11.2
+# [1] git ls-remote https://github.com/docker/buildx 9872040b6626fb7d87ef7296fd5b832e8cc2ad17
+SRCREV_buildx="9872040b6626fb7d87ef7296fd5b832e8cc2ad17"
+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 v24.0.5+incompatible
+# [1] git ls-remote https://github.com/moby/moby a61e2b4c9c5f7c241aeb37f389b4444aee26bea4
+SRCREV_docker="a61e2b4c9c5f7c241aeb37f389b4444aee26bea4"
+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/moby/buildkit v0.12.1
+# [1] git ls-remote https://github.com/moby/buildkit bb857a0d49f45aa0ce9cd554b78d4075553e20f9
+SRCREV_buildkit="bb857a0d49f45aa0ce9cd554b78d4075553e20f9"
+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.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_otel="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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.13.5
+# [1] git ls-remote https://github.com/aws/smithy-go 296783feb4cb708355148913a16a624ae6b7db2f
+SRCREV_smithy-go="296783feb4cb708355148913a16a624ae6b7db2f"
+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/go-cmp v0.5.9
+# [1] git ls-remote https://github.com/google/go-cmp a97318bf6562f2ed2632c5f985db51b1bc5bdcd0
+SRCREV_go-cmp="a97318bf6562f2ed2632c5f985db51b1bc5bdcd0"
+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/hashicorp/hcl v1.0.0
+# [1] git ls-remote https://github.com/hashicorp/hcl 8cb6e5b959231cc1119e43259c4a608f9c51a241
+SRCREV_hcl="8cb6e5b959231cc1119e43259c4a608f9c51a241"
+SRC_URI += "git://github.com/hashicorp/hcl;name=hcl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/hcl"
+
+# 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/google/gnostic v0.5.7-v3refs
+# [1] git ls-remote https://github.com/google/gnostic b49832d97d25b6a41cbe34ea12257924a934eeee
+SRCREV_gnostic="b49832d97d25b6a41cbe34ea12257924a934eeee"
+SRC_URI += "git://github.com/google/gnostic;name=gnostic;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/google/gnostic"
+
+# github.com/laurazard/godog v0.0.0-20220922095256-4c4b17abdae7
+# [1] git ls-remote https://github.com/laurazard/godog 4c4b17abdae7fd4f9d35cfe391ca65d172b092e3
+SRCREV_godog="4c4b17abdae7fd4f9d35cfe391ca65d172b092e3"
+SRC_URI += "git://github.com/laurazard/godog;name=godog;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/laurazard/godog"
+
+# 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/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/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/go-openapi/swag v0.19.14
+# [1] git ls-remote https://github.com/go-openapi/swag c78fa6719bc3d4b977d19a09064feda1c07571af
+SRCREV_swag="c78fa6719bc3d4b977d19a09064feda1c07571af"
+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.6
+# [1] git ls-remote https://github.com/mailru/easyjson 8ab5ff9cd8e4e432e8b79f6c47d324a31dd803cf
+SRCREV_easyjson="8ab5ff9cd8e4e432e8b79f6c47d324a31dd803cf"
+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/subosito/gotenv v1.4.1
+# [1] git ls-remote https://github.com/subosito/gotenv d94fdbe829d24b31d6ac30b6beb28b6420c1778a
+SRCREV_gotenv="d94fdbe829d24b31d6ac30b6beb28b6420c1778a"
+SRC_URI += "git://github.com/subosito/gotenv;name=gotenv;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/subosito/gotenv"
+
+# google.golang.org/genproto v0.0.0-20230526161137-0005af68ea54
+# [1] git ls-remote https://github.com/googleapis/go-genproto 0005af68ea5476a8b99ce94ab83ae4aaac864963
+SRCREV_genproto="0005af68ea5476a8b99ce94ab83ae4aaac864963"
+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.30.0
+# [1] git ls-remote https://github.com/protocolbuffers/protobuf-go f221882bfb484564f1714ae05f197dea2c76898d
+SRCREV_google.golang.org-protobuf="f221882bfb484564f1714ae05f197dea2c76898d"
+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/cloudflare/cfssl v1.6.4
+# [1] git ls-remote https://github.com/cloudflare/cfssl b4d0d877cac528f63db39dfb62d5c96cd3a32a0b
+SRCREV_cfssl="b4d0d877cac528f63db39dfb62d5c96cd3a32a0b"
+SRC_URI += "git://github.com/cloudflare/cfssl;name=cfssl;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cloudflare/cfssl"
+
+# 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-20190422032157-8b2912629002
+# [1] git ls-remote https://github.com/serialx/hashring 8b2912629002c928de72c69aae20c8600bef41a6
+SRCREV_hashring="8b2912629002c928de72c69aae20c8600bef41a6"
+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.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_sdk="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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/aws/aws-sdk-go-v2 v1.17.6
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_aws-sdk-go-v2="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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/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/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.42.0
+# [1] git ls-remote https://github.com/prometheus/common 66b493f42b757378fbad83e42b0ed441d425a17b
+SRCREV_common="66b493f42b757378fbad83e42b0ed441d425a17b"
+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.9.0
+# [1] git ls-remote https://github.com/prometheus/procfs bb7727a9ca9b3cd1559b42ffa74e13ef7efb6283
+SRCREV_procfs="bb7727a9ca9b3cd1559b42ffa74e13ef7efb6283"
+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-20230629203738-36ef4d8c0dbb
+# [1] git ls-remote https://github.com/tonistiigi/fsutil 36ef4d8c0dbba81b41fcfe7a03ba1f6ba56904f2
+SRCREV_fsutil="36ef4d8c0dbba81b41fcfe7a03ba1f6ba56904f2"
+SRC_URI += "git://github.com/tonistiigi/fsutil;name=fsutil;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/tonistiigi/fsutil"
+
+# 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.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/bugsnag/bugsnag-go v1.5.0
+# [1] git ls-remote https://github.com/bugsnag/bugsnag-go d5b63da7e1f93d83e3980e5ab2bf33179bad7b2a
+SRCREV_bugsnag-go="d5b63da7e1f93d83e3980e5ab2bf33179bad7b2a"
+SRC_URI += "git://github.com/bugsnag/bugsnag-go;name=bugsnag-go;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/bugsnag/bugsnag-go"
+
+# 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/hashicorp/go-memdb v1.3.2
+# [1] git ls-remote https://github.com/hashicorp/go-memdb 542a5804dedaaddf1a0cad8b6a7b0b3fcf438776
+SRCREV_go-memdb="542a5804dedaaddf1a0cad8b6a7b0b3fcf438776"
+SRC_URI += "git://github.com/hashicorp/go-memdb;name=go-memdb;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-memdb"
+
+# github.com/klauspost/compress v1.16.5
+# [1] git ls-remote https://github.com/klauspost/compress ed6feffc3bb26797dc2a376516b16611046cdecd
+SRCREV_compress="ed6feffc3bb26797dc2a376516b16611046cdecd"
+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.14
+# [1] git ls-remote https://github.com/mattn/go-runewidth 2c6a438f68cfe01255a90824599da41fdf76d1e2
+SRCREV_go-runewidth="2c6a438f68cfe01255a90824599da41fdf76d1e2"
+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.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/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.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_trace="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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.0
+# [1] git ls-remote https://github.com/cenkalti/backoff e5c9822f4eaffe6a2abac94d7fbf85380dd629a8
+SRCREV_v4="e5c9822f4eaffe6a2abac94d7fbf85380dd629a8"
+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.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/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/opencontainers/runc v1.1.7
+# [1] git ls-remote https://github.com/opencontainers/runc 860f061b76bb4fc671f0f9e900f7d80ff93d4eb7
+SRCREV_runc="860f061b76bb4fc671f0f9e900f7d80ff93d4eb7"
+SRC_URI += "git://github.com/opencontainers/runc;name=runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runc"
+
+# 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 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/docker/cli-docs-tool v0.6.0
+# [1] git ls-remote https://github.com/docker/cli-docs-tool 5cb124c70a1f08a8fcbffad5059b4b5b01123124
+SRCREV_cli-docs-tool="5cb124c70a1f08a8fcbffad5059b4b5b01123124"
+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/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/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/pelletier/go-toml/v2 v2.0.5
+# [1] git ls-remote https://github.com/pelletier/go-toml 942841787a7d70422e4d8bc7d0be28ab911402df
+SRCREV_go-toml-v2="942841787a7d70422e4d8bc7d0be28ab911402df"
+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/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 v0.37.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_metric="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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.3
+# [1] git ls-remote https://github.com/containerd/containerd 7880925980b188f4c97b462f709d0db8e8962aff
+SRCREV_containerd="7880925980b188f4c97b462f709d0db8e8962aff"
+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.4.0
+# [1] git ls-remote https://github.com/docker/go-connections 7395e3f8aa162843a74ed6d48e79627d9792ac55
+SRCREV_go-connections="7395e3f8aa162843a74ed6d48e79627d9792ac55"
+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.1
+# [1] git ls-remote https://github.com/containerd/continuity 25762ef7c27a37645197ed6d1d708e55a230e35d
+SRCREV_continuity="25762ef7c27a37645197ed6d1d708e55a230e35d"
+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/magiconair/properties v1.8.6
+# [1] git ls-remote https://github.com/magiconair/properties 869a5592420f4ff6ebf74500b5c658b29d973172
+SRCREV_properties="869a5592420f4ff6ebf74500b5c658b29d973172"
+SRC_URI += "git://github.com/magiconair/properties;name=properties;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/magiconair/properties"
+
+# 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/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/emicklei/go-restful/v3 v3.10.1
+# [1] git ls-remote https://github.com/emicklei/go-restful 96e1c78bfbbfa19bd826b27b3a8a8087ee3cb1d3
+SRCREV_go-restful-v3="96e1c78bfbbfa19bd826b27b3a8a8087ee3cb1d3"
+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.5
+# [1] git ls-remote https://github.com/go-openapi/jsonpointer 2446e21cad36eee826e1c2380f0ff747074a2faa
+SRCREV_jsonpointer="2446e21cad36eee826e1c2380f0ff747074a2faa"
+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/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/compose-spec/compose-go v1.18.3
+# [1] git ls-remote https://github.com/compose-spec/compose-go c6eecc55b95f952b6d6406adcd297499d11a300b
+SRCREV_compose-go="c6eecc55b95f952b6d6406adcd297499d11a300b"
+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/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/cucumber/gherkin-go/v19 v19.0.3
+# [1] git ls-remote https://github.com/cucumber/gherkin-go 11029f28bd1bc215fa57275b576f2b237b7c2b07
+SRCREV_v19="11029f28bd1bc215fa57275b576f2b237b7c2b07"
+SRC_URI += "git://github.com/cucumber/gherkin-go;name=v19;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cucumber/gherkin-go/v19"
+
+# github.com/prometheus/client_model v0.3.0
+# [1] git ls-remote https://github.com/prometheus/client_model 63fb9822ca3ba7a4ba5184071fb8f2ea000a99ef
+SRCREV_client_model="63fb9822ca3ba7a4ba5184071fb8f2ea000a99ef"
+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/spf13/jwalterweatherman v1.1.0
+# [1] git ls-remote https://github.com/spf13/jwalterweatherman 94f6ae3ed3bceceafa716478c5fbf8d29ca601a1
+SRCREV_jwalterweatherman="94f6ae3ed3bceceafa716478c5fbf8d29ca601a1"
+SRC_URI += "git://github.com/spf13/jwalterweatherman;name=jwalterweatherman;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/spf13/jwalterweatherman"
+
+# 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.18.16
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_config="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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/cucumber/messages-go/v16 v16.0.1
+# [1] git ls-remote https://github.com/cucumber/messages-go 1848e9bfc84e8c1674c4d9ded0bdbfc23c458b28
+SRCREV_v16="1848e9bfc84e8c1674c4d9ded0bdbfc23c458b28"
+SRC_URI += "git://github.com/cucumber/messages-go;name=v16;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/cucumber/messages-go/v16"
+
+# github.com/go-openapi/jsonreference v0.20.0
+# [1] git ls-remote https://github.com/go-openapi/jsonreference c5db5582e080fbeae80be42f42881230a8caebf6
+SRCREV_jsonreference="c5db5582e080fbeae80be42f42881230a8caebf6"
+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.14.0
+# [1] git ls-remote https://github.com/prometheus/client_golang 254e5468413f19fb75cdad45f5ddc0b8c975188c
+SRCREV_client_golang="254e5468413f19fb75cdad45f5ddc0b8c975188c"
+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/opencontainers/image-spec v1.1.0-rc4
+# [1] git ls-remote https://github.com/opencontainers/image-spec 82e8329f7eb6df5c62924f2792d285ba276ae876
+SRCREV_image-spec="82e8329f7eb6df5c62924f2792d285ba276ae876"
+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-20230106234847-43070de90fa1
+# [1] git ls-remote https://github.com/AdaLogics/go-fuzz-headers 43070de90fa134c9ea55cd6de4308a2ae59658d3
+SRCREV_go-fuzz-headers="43070de90fa134c9ea55cd6de4308a2ae59658d3"
+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.2.3
+# [1] git ls-remote https://github.com/kubernetes-sigs/structured-merge-diff 26781d0c10bfdbd7d66b18d8be83985f623df9f8
+SRCREV_structured-merge-diff-v4="26781d0c10bfdbd7d66b18d8be83985f623df9f8"
+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/cyphar/filepath-securejoin v0.2.3
+# [1] git ls-remote https://github.com/cyphar/filepath-securejoin 8f267f5ea675a20a2cb5e91011d063721f53bf79
+SRCREV_filepath-securejoin="8f267f5ea675a20a2cb5e91011d063721f53bf79"
+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/distribution/distribution/v3 v3.0.0-20230601133803-97b1d649c493
+# [1] git ls-remote https://github.com/distribution/distribution 97b1d649c4938d0f608d96454d6a8326b1f96acd
+SRCREV_v3="97b1d649c4938d0f608d96454d6a8326b1f96acd"
+SRC_URI += "git://github.com/distribution/distribution;name=v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/distribution/distribution/v3"
+
+# github.com/hashicorp/go-immutable-radix v1.3.1
+# [1] git ls-remote https://github.com/hashicorp/go-immutable-radix 49d1d02c49a783de548d1ba8ae8fde466a20b9e6
+SRCREV_go-immutable-radix="49d1d02c49a783de548d1ba8ae8fde466a20b9e6"
+SRC_URI += "git://github.com/hashicorp/go-immutable-radix;name=go-immutable-radix;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/hashicorp/go-immutable-radix"
+
+# github.com/aws/aws-sdk-go-v2/credentials v1.13.16
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_credentials="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.12.5
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_sso="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.18.6
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_sts="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.3.31
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_ini="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.11.3
+# [1] git ls-remote https://github.com/grpc-ecosystem/grpc-gateway 0197faf8b072910084edd1209aa2ac51833b895c
+SRCREV_grpc-gateway-v2="0197faf8b072910084edd1209aa2ac51833b895c"
+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-20230525234035-dd9d682886f9
+# [1] git ls-remote https://github.com/googleapis/go-genproto dd9d682886f99d242574cd3eaea438ce7ea66399
+SRCREV_api="dd9d682886f99d242574cd3eaea438ce7ea66399"
+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-20230525234030-28d5490b6b19
+# [1] git ls-remote https://github.com/googleapis/go-genproto 28d5490b6b19cce1ebbc6ab55ca8637bd35b3486
+SRCREV_rpc="28d5490b6b19cce1ebbc6ab55ca8637bd35b3486"
+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.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/aws/aws-sdk-go-v2/service/ssooidc v1.14.5
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_ssooidc="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.12.24
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_imds="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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"
+
+# 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.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_otlptrace="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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.4.24
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_endpoints-v2="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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"
+
+# github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.30
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_configsources="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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"
+
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_retry="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+SRC_URI += "git://github.com/open-telemetry/opentelemetry-go;name=retry;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.opentelemetry.io/otel/exporters/otlp/internal/retry"
+
+# github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.24
+# [1] git ls-remote https://github.com/aws/aws-sdk-go-v2 18bff5e44f4c2c140feaf54b2dd92140630c7e50
+SRCREV_presigned-url="18bff5e44f4c2c140feaf54b2dd92140630c7e50"
+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.40.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib 3311cc2a734d7597598cc67910f8f292d13eeda7
+SRCREV_otelhttp="3311cc2a734d7597598cc67910f8f292d13eeda7"
+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"
+
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_otlptracegrpc="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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.14.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go 2e54fbb3fede5b54f316b3a08eab236febd854e0
+SRCREV_otlptracehttp="2e54fbb3fede5b54f316b3a08eab236febd854e0"
+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/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib 3311cc2a734d7597598cc67910f8f292d13eeda7
+SRCREV_otelgrpc="3311cc2a734d7597598cc67910f8f292d13eeda7"
+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.40.0
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go-contrib 3311cc2a734d7597598cc67910f8f292d13eeda7
+SRCREV_otelhttptrace="3311cc2a734d7597598cc67910f8f292d13eeda7"
+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 692438ec..dbca0d55 100644
--- a/recipes-containers/docker-distribution/docker-distribution_git.bb
+++ b/recipes-containers/docker-distribution/docker-distribution_git.bb
@@ -3,21 +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.
@@ -26,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}
@@ -57,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
index 393b167f..f97a60ca 100644
--- 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
@@ -6,6 +6,8 @@ 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 +-
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/0001-cli-use-go-cross-compiler.patch b/recipes-containers/docker/docker-ce/0001-cli-use-go-cross-compiler.patch
deleted file mode 100644
index d9924112..00000000
--- a/recipes-containers/docker/docker-ce/0001-cli-use-go-cross-compiler.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ae6f4a1e685394fb7b9539f134b66ca84ddc91c2 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@gmail.com>
-Date: Tue, 30 Jun 2020 22:19:56 -0400
-Subject: [PATCH] cli: use go cross compiler
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- git/cli/scripts/build/dynbinary | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git git/src/import/components/cli/scripts/build/dynbinary git/src/import/components/cli/scripts/build/dynbinary
-index 4feb7e71d8..f990d0e040 100755
---- git/src/import/components/cli/scripts/build/dynbinary
-+++ git/src/import/components/cli/scripts/build/dynbinary
-@@ -9,6 +9,6 @@ source ./scripts/build/.variables
-
- echo "Building dynamically linked $TARGET"
- export CGO_ENABLED=1
--go build -o "${TARGET}" -tags pkcs11 --ldflags "${LDFLAGS}" -buildmode=pie "${SOURCE}"
-+${GO} build -o "${TARGET}" -tags pkcs11 --ldflags "${LDFLAGS}" -buildmode=pie "${SOURCE}"
-
- ln -sf "$(basename "${TARGET}")" build/docker
---
-2.19.1
-
diff --git a/recipes-containers/docker/docker-ce/0001-dynbinary-use-go-cross-compiler.patch b/recipes-containers/docker/docker-ce/0001-dynbinary-use-go-cross-compiler.patch
deleted file mode 100644
index c11c6e6a..00000000
--- a/recipes-containers/docker/docker-ce/0001-dynbinary-use-go-cross-compiler.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bbf600cc4d46c3f7ec0c1b486790a2402d41f550 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
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- hack/make/.binary | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/components/engine/hack/make/.binary b/src/import/components/engine/hack/make/.binary
-index 53de6749e5..47ab2a754f 100644
---- a/src/import/components/engine/hack/make/.binary
-+++ b/src/import/components/engine/hack/make/.binary
-@@ -81,7 +81,7 @@ esac
-
- echo "Building: $DEST/$BINARY_FULLNAME"
- echo "GOOS=\"${GOOS}\" GOARCH=\"${GOARCH}\" GOARM=\"${GOARM}\""
--go build \
-+${GO} build \
- -o "$DEST/$BINARY_FULLNAME" \
- "${BUILDFLAGS[@]}" \
- -ldflags "
---
-2.19.1
-
diff --git a/recipes-containers/docker/docker-ce/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch b/recipes-containers/docker/docker-ce/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch
deleted file mode 100644
index 70fdaf83..00000000
--- a/recipes-containers/docker/docker-ce/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/docker-ce_git.bb b/recipes-containers/docker/docker-ce_git.bb
deleted file mode 100644
index 2140c243..00000000
--- a/recipes-containers/docker/docker-ce_git.bb
+++ /dev/null
@@ -1,133 +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 = "48a66213fe1747e8873f849862ff3fb981899fc6"
-SRCREV_libnetwork = "026aabaa659832804b01754aaadd2c0f420c68b6"
-SRC_URI = "\
- git://github.com/docker/docker-ce.git;branch=19.03;name=docker \
- git://github.com/docker/libnetwork.git;branch=bump_19.03;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 \
- file://0001-dynbinary-use-go-cross-compiler.patch \
- file://0001-cli-use-go-cross-compiler.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.12-ce"
-PV = "${DOCKER_VERSION}+git${SRCREV_docker}"
-
-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
-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}"
- export DOCKER_BUILDTAGS='${BUILD_TAGS} ${PACKAGECONFIG_CONFARGS}'
-
- 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/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
- 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/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 62759d94..00000000
--- a/recipes-containers/docker/docker-moby.bb
+++ /dev/null
@@ -1,152 +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 = "9dc6525e6118a25fab2be322d1914740ea842495"
-SRCREV_libnetwork = "026aabaa659832804b01754aaadd2c0f420c68b6"
-SRCREV_cli = "0ed913b885c8919944a2e4c8d0b80a318a8dd48b"
-SRC_URI = "\
- git://github.com/moby/moby.git;branch=19.03;name=moby \
- git://github.com/docker/libnetwork.git;branch=bump_19.03;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 \
- file://0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch \
- file://0001-cli-use-go-cross-compiler.patch \
- file://0001-dynbinary-use-go-cross-compiler.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.12"
-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_moby}" ./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_moby}" 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/
-}
-
-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/0001-cli-use-go-cross-compiler.patch b/recipes-containers/docker/docker-moby/0001-cli-use-go-cross-compiler.patch
deleted file mode 100644
index 9419d547..00000000
--- a/recipes-containers/docker/docker-moby/0001-cli-use-go-cross-compiler.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ae6f4a1e685394fb7b9539f134b66ca84ddc91c2 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@gmail.com>
-Date: Tue, 30 Jun 2020 22:19:56 -0400
-Subject: [PATCH] cli: use go cross compiler
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- git/cli/scripts/build/dynbinary | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git git/cli/scripts/build/dynbinary git/cli/scripts/build/dynbinary
-index 4feb7e71d8..f990d0e040 100755
---- git/cli/scripts/build/dynbinary
-+++ git/cli/scripts/build/dynbinary
-@@ -9,6 +9,6 @@ source ./scripts/build/.variables
-
- echo "Building dynamically linked $TARGET"
- export CGO_ENABLED=1
--go build -o "${TARGET}" -tags pkcs11 --ldflags "${LDFLAGS}" -buildmode=pie "${SOURCE}"
-+${GO} build -o "${TARGET}" -tags pkcs11 --ldflags "${LDFLAGS}" -buildmode=pie "${SOURCE}"
-
- ln -sf "$(basename "${TARGET}")" build/docker
---
-2.19.1
-
diff --git a/recipes-containers/docker/docker-moby/0001-dynbinary-use-go-cross-compiler.patch b/recipes-containers/docker/docker-moby/0001-dynbinary-use-go-cross-compiler.patch
deleted file mode 100644
index d9cdfb01..00000000
--- a/recipes-containers/docker/docker-moby/0001-dynbinary-use-go-cross-compiler.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From bbf600cc4d46c3f7ec0c1b486790a2402d41f550 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
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- hack/make/.binary | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/hack/make/.binary b/src/import/hack/make/.binary
-index 53de6749e5..47ab2a754f 100644
---- a/src/import/hack/make/.binary
-+++ b/src/import/hack/make/.binary
-@@ -81,7 +81,7 @@ esac
-
- echo "Building: $DEST/$BINARY_FULLNAME"
- echo "GOOS=\"${GOOS}\" GOARCH=\"${GOARCH}\" GOARM=\"${GOARM}\""
--go build \
-+${GO} build \
- -o "$DEST/$BINARY_FULLNAME" \
- "${BUILDFLAGS[@]}" \
- -ldflags "
---
-2.19.1
-
diff --git a/recipes-containers/docker/docker-moby/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch b/recipes-containers/docker/docker-moby/0001-imporve-hardcoded-CC-on-cross-compile-docker-ce.patch
deleted file mode 100644
index 766425a8..00000000
--- a/recipes-containers/docker/docker-moby/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/hack/make/.binary b/src/import/hack/make/.binary
-index 53de6749e5..66f4ca05f3 100644
---- a/src/import/hack/make/.binary
-+++ b/src/import/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/docker-moby/0001-libnetwork-use-GO-instead-of-go.patch b/recipes-containers/docker/docker-moby/0001-libnetwork-use-GO-instead-of-go.patch
deleted file mode 100644
index c623b260..00000000
--- a/recipes-containers/docker/docker-moby/0001-libnetwork-use-GO-instead-of-go.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 04c07804930faad708218a3134c81de06a9c742a Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Fri, 6 Apr 2018 23:58:22 -0400
-Subject: [PATCH] libnetwork: use $(GO) instead of go
-
-Ensure that the libnetwork makefile uses the go cross flags and
-utilities.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-Index: git/libnetwork/Makefile
-===================================================================
---- git.orig/libnetwork/Makefile
-+++ git/libnetwork/Makefile
-@@ -45,9 +45,9 @@
- build-local:
- @echo "🐳 $@"
- @mkdir -p "bin"
-- go build -tags experimental -o "bin/dnet" ./cmd/dnet
-- 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
-
- build-images:
-@@ -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
-
- # Rebuild protocol buffers.
- # These may need to be rebuilt after vendoring updates, so .proto files are declared .PHONY so they are always rebuilt.
-@@ -130,7 +130,7 @@
- if ls $$dir/*.go &> /dev/null; then \
- pushd . &> /dev/null ; \
- cd $$dir ; \
-- go test ${INSIDECONTAINER} -test.parallel 5 -test.v -covermode=count -coverprofile=./profile.tmp ; \
-+ $(GO) test ${INSIDECONTAINER} -test.parallel 5 -test.v -covermode=count -coverprofile=./profile.tmp ; \
- ret=$$? ;\
- if [ $$ret -ne 0 ]; then exit $$ret; fi ;\
- popd &> /dev/null; \
-@@ -145,7 +145,7 @@
- # Depends on binaries because vet will silently fail if it can not load compiled imports
- vet: ## run go vet
- @echo "🐳 $@"
-- @test -z "$$(go vet ${PACKAGES} 2>&1 | grep -v 'constant [0-9]* not a string in call to Errorf' | egrep -v '(timestamp_test.go|duration_test.go|exit status 1)' | tee /dev/stderr)"
-+ @test -z "$$($(GO) vet ${PACKAGES} 2>&1 | grep -v 'constant [0-9]* not a string in call to Errorf' | egrep -v '(timestamp_test.go|duration_test.go|exit status 1)' | tee /dev/stderr)"
-
- misspell:
- @echo "🐳 $@"
diff --git a/recipes-containers/docker/docker-moby_git.bb b/recipes-containers/docker/docker-moby_git.bb
new file mode 100644
index 00000000..4682ab4e
--- /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 = "afcd2cde957e5d3c33b79652645163dcb277b95d"
+SRCREV_libnetwork = "67e0588f1ddfaf2faf4c8cae8b7ea2876434d91c"
+SRCREV_cli = "ed223bc820ee9bb7005a333013b86203a9e1bc23"
+SRCREV_FORMAT = "moby_libnetwork"
+SRC_URI = "\
+ git://github.com/moby/moby.git;branch=24.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=24.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 = "24.0.7"
+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 4bcb4091..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 kernel-module-xt-addrtype"
+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.socket','',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..696eeaa7
--- /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
+
+@@ -78,7 +57,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" "$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" "$GO_PACKAGE"
+ )
+
+ echo "Created binary: $DEST/$BINARY_FULLNAME"
diff --git a/recipes-containers/docker/docker-ce/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/docker-ce/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/go-digest/go-digest_git.bb b/recipes-containers/go-digest/go-digest_git.bb
index a2f8cd69..a231cf7b 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"
@@ -26,7 +26,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 +36,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..87486358 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"
@@ -36,6 +36,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..c6629014 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"
@@ -36,6 +36,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..201f183a 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"
@@ -36,6 +36,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..efb15e91
--- /dev/null
+++ b/recipes-containers/k3s/k3s/modules.txt
@@ -0,0 +1,760 @@
+# 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 v1.1.0
+## explicit
+# github.com/containerd/containerd v1.7.3
+## 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.6.0
+## explicit
+# github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
+## explicit
+# github.com/docker/docker v23.0.3+incompatible
+## explicit
+# github.com/erikdubbelboer/gspt v0.0.0-20190125194910-e68493906b83
+## explicit
+# github.com/flannel-io/flannel v0.22.2
+## explicit
+# github.com/go-bindata/go-bindata v3.1.2+incompatible
+## explicit
+# github.com/go-sql-driver/mysql v1.7.1
+## explicit
+# github.com/go-test/deep v1.0.7
+## explicit
+# github.com/google/cadvisor v0.47.3
+## explicit
+# github.com/google/uuid v1.3.0
+## explicit
+# github.com/gorilla/mux v1.8.0
+## explicit
+# github.com/gorilla/websocket v1.5.0
+## explicit
+# github.com/json-iterator/go v1.1.12
+## explicit
+# github.com/k3s-io/helm-controller v0.15.4
+## explicit
+# github.com/k3s-io/kine v0.10.3
+## explicit
+# github.com/klauspost/compress v1.16.7
+## explicit
+# github.com/kubernetes-sigs/cri-tools v0.0.0-00010101000000-000000000000
+## explicit
+# github.com/lib/pq v1.10.2
+## explicit
+# github.com/mattn/go-sqlite3 v1.14.17
+## explicit
+# github.com/minio/minio-go/v7 v7.0.33
+## explicit
+# github.com/natefinch/lumberjack v2.0.0+incompatible
+## explicit
+# github.com/onsi/ginkgo/v2 v2.9.4
+## explicit
+# github.com/onsi/gomega v1.27.6
+## explicit
+# github.com/opencontainers/runc v1.1.7
+## 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-rc2
+## explicit
+# github.com/rancher/lasso v0.0.0-20230629200414-8a54b32e6792
+## explicit
+# github.com/rancher/remotedialer v0.3.0
+## explicit
+# github.com/rancher/wharfie v0.5.3
+## 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/yl2chen/cidranger v1.0.2
+## explicit
+# go.etcd.io/etcd/api/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/client/pkg/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/client/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/etcdutl/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/server/v3 v3.5.9
+## explicit
+# go.uber.org/zap v1.24.0
+## explicit
+# golang.org/x/crypto v0.12.0
+## explicit
+# golang.org/x/net v0.14.0
+## explicit
+# golang.org/x/sync v0.3.0
+## explicit
+# golang.org/x/sys v0.11.0
+## explicit
+# google.golang.org/grpc v1.57.0
+## explicit
+# gopkg.in/yaml.v2 v2.4.0
+## explicit
+# inet.af/tcpproxy v0.0.0-20200125044825-b6bb9b5b8252
+## explicit
+# k8s.io/api v0.28.2
+## explicit
+# k8s.io/apimachinery v0.28.2
+## explicit
+# k8s.io/apiserver v0.28.2
+## explicit
+# k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
+## explicit
+# k8s.io/cloud-provider v0.28.2
+## explicit
+# k8s.io/cluster-bootstrap v0.0.0
+## explicit
+# k8s.io/component-base v0.28.2
+## explicit
+# k8s.io/component-helpers v0.28.2
+## explicit
+# k8s.io/cri-api v0.29.0-alpha.0
+## explicit
+# k8s.io/klog/v2 v2.100.1
+## explicit
+# k8s.io/kubectl v0.25.0
+## explicit
+# k8s.io/kubernetes v1.28.2
+## explicit
+# k8s.io/utils v0.0.0-20230406110748-d93618cff8a2
+## explicit
+# sigs.k8s.io/yaml v1.3.0
+## explicit
+# cloud.google.com/go/compute v1.23.0
+## 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/Microsoft/hcsshim v0.11.0
+## 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-20201105010758-936f38b697fd
+## 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/v3 v3.0.2
+## 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/nri v0.3.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.2.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.2
+## explicit
+# github.com/cyphar/filepath-securejoin v0.2.3
+## explicit
+# github.com/davecgh/go-spew v1.1.1
+## 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.2+incompatible
+## explicit
+# github.com/docker/docker-credential-helpers v0.7.0
+## explicit
+# github.com/docker/go-connections v0.4.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.10.2
+## 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.3
+## explicit
+# github.com/fsnotify/fsnotify v1.6.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-logr/logr v1.2.4
+## 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/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/mock v1.6.0
+## 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.8
+## explicit
+# github.com/google/go-cmp v0.5.9
+## 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-20210720184732-4bb14d4b1be1
+## explicit
+# github.com/google/s2a-go v0.1.5
+## explicit
+# github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
+## explicit
+# github.com/googleapis/enterprise-certificate-proxy v0.2.5
+## 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.11.3
+## 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/imdario/mergo v0.3.13
+## 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.3.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.1.0
+## 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/matttproud/golang_protobuf_extensions v1.0.4
+## 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.0
+## 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.0
+## 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.4.1
+## explicit
+# github.com/nats-io/nats-server/v2 v2.9.18
+## explicit
+# github.com/nats-io/nats.go v1.27.1
+## explicit
+# github.com/nats-io/nkeys v0.4.4
+## 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-rc3
+## 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.0
+## explicit
+# github.com/pquerna/cachecontrol v0.1.0
+## explicit
+# github.com/prometheus/client_golang v1.16.0
+## explicit
+# github.com/prometheus/client_model v0.4.0
+## explicit
+# github.com/prometheus/common v0.44.0
+## explicit
+# github.com/prometheus/procfs v0.10.1
+## 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.7.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/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.0
+## 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.7
+## explicit
+# go.etcd.io/etcd/client/v2 v2.305.9
+## explicit
+# go.etcd.io/etcd/pkg/v3 v3.5.9
+## explicit
+# go.etcd.io/etcd/raft/v3 v3.5.9
+## 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.35.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0
+## explicit
+# go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.1
+## explicit
+# go.opentelemetry.io/otel v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0
+## explicit
+# go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0
+## explicit
+# go.opentelemetry.io/otel/metric v0.37.0
+## explicit
+# go.opentelemetry.io/otel/sdk v1.14.0
+## explicit
+# go.opentelemetry.io/otel/trace v1.14.0
+## explicit
+# go.opentelemetry.io/proto/otlp v0.19.0
+## explicit
+# go.starlark.net v0.0.0-20230525235612-a134d8f9ddca
+## explicit
+# go.uber.org/atomic v1.10.0
+## explicit
+# go.uber.org/multierr v1.11.0
+## explicit
+# golang.org/x/exp v0.0.0-20230307190834-24139beb5833
+## explicit
+# golang.org/x/mod v0.10.0
+## explicit
+# golang.org/x/oauth2 v0.11.0
+## explicit
+# golang.org/x/term v0.10.0
+## explicit
+# golang.org/x/text v0.12.0
+## explicit
+# golang.org/x/time v0.3.0
+## explicit
+# golang.org/x/tools v0.8.0
+## 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.138.0
+## explicit
+# google.golang.org/appengine v1.6.7
+## explicit
+# google.golang.org/genproto v0.0.0-20230815205213-6bfd019c3878
+## explicit
+# google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5
+## explicit
+# google.golang.org/genproto/googleapis/rpc v0.0.0-20230807174057-1744710a1577
+## 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.2
+## explicit
+# k8s.io/cli-runtime v0.22.2
+## explicit
+# k8s.io/code-generator v0.28.2
+## 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-20220902162205-c0856e24416d
+## explicit
+# k8s.io/kms v0.0.0
+## explicit
+# k8s.io/kube-aggregator v0.28.2
+## explicit
+# k8s.io/kube-controller-manager v0.0.0
+## explicit
+# k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9
+## explicit
+# k8s.io/kube-proxy v0.0.0
+## explicit
+# k8s.io/kube-scheduler v0.0.0
+## explicit
+# k8s.io/kubelet v0.0.0
+## explicit
+# k8s.io/legacy-cloud-providers v0.0.0
+## explicit
+# k8s.io/metrics v0.0.0
+## explicit
+# k8s.io/mount-utils v0.28.2
+## 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.2.3
+## 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.4-k3s3
+# github.com/cloudnativelabs/kube-router/v2 => github.com/k3s-io/kube-router/v2 v2.0.1-0.20230508174102-b42e5faded1c
+# github.com/containerd/containerd => github.com/k3s-io/containerd v1.7.6-k3s1
+# 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/opencontainers/runc => github.com/opencontainers/runc v1.1.8
+# 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/rancher/wrangler => github.com/rancher/wrangler v1.1.1-0.20230818201331-3604a6be798d
+# 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.1.0
+# golang.org/x/net => golang.org/x/net v0.8.0
+# golang.org/x/sys => golang.org/x/sys v0.6.0
+# google.golang.org/genproto => google.golang.org/genproto v0.0.0-20230525234035-dd9d682886f9
+# google.golang.org/grpc => google.golang.org/grpc v1.51.0
+# 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.2-k3s1
+# k8s.io/apiextensions-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.28.2-k3s1
+# k8s.io/apimachinery => github.com/k3s-io/kubernetes/staging/src/k8s.io/apimachinery v1.28.2-k3s1
+# k8s.io/apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/apiserver v1.28.2-k3s1
+# k8s.io/cli-runtime => github.com/k3s-io/kubernetes/staging/src/k8s.io/cli-runtime v1.28.2-k3s1
+# k8s.io/client-go => github.com/k3s-io/kubernetes/staging/src/k8s.io/client-go v1.28.2-k3s1
+# k8s.io/cloud-provider => github.com/k3s-io/kubernetes/staging/src/k8s.io/cloud-provider v1.28.2-k3s1
+# k8s.io/cluster-bootstrap => github.com/k3s-io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.28.2-k3s1
+# k8s.io/code-generator => github.com/k3s-io/kubernetes/staging/src/k8s.io/code-generator v1.28.2-k3s1
+# k8s.io/component-base => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-base v1.28.2-k3s1
+# k8s.io/component-helpers => github.com/k3s-io/kubernetes/staging/src/k8s.io/component-helpers v1.28.2-k3s1
+# k8s.io/controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/controller-manager v1.28.2-k3s1
+# k8s.io/cri-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/cri-api v1.28.2-k3s1
+# k8s.io/csi-translation-lib => github.com/k3s-io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.28.2-k3s1
+# k8s.io/dynamic-resource-allocation => github.com/k3s-io/kubernetes/staging/src/k8s.io/dynamic-resource-allocation v1.28.2-k3s1
+# k8s.io/endpointslice => github.com/k3s-io/kubernetes/staging/src/k8s.io/endpointslice v1.28.2-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.2-k3s1
+# k8s.io/kube-aggregator => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-aggregator v1.28.2-k3s1
+# k8s.io/kube-controller-manager => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.28.2-k3s1
+# k8s.io/kube-proxy => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-proxy v1.28.2-k3s1
+# k8s.io/kube-scheduler => github.com/k3s-io/kubernetes/staging/src/k8s.io/kube-scheduler v1.28.2-k3s1
+# k8s.io/kubectl => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubectl v1.28.2-k3s1
+# k8s.io/kubelet => github.com/k3s-io/kubernetes/staging/src/k8s.io/kubelet v1.28.2-k3s1
+# k8s.io/kubernetes => github.com/k3s-io/kubernetes v1.28.2-k3s1
+# k8s.io/legacy-cloud-providers => github.com/k3s-io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.28.2-k3s1
+# k8s.io/metrics => github.com/k3s-io/kubernetes/staging/src/k8s.io/metrics v1.28.2-k3s1
+# k8s.io/mount-utils => github.com/k3s-io/kubernetes/staging/src/k8s.io/mount-utils v1.28.2-k3s1
+# k8s.io/node-api => github.com/k3s-io/kubernetes/staging/src/k8s.io/node-api v1.28.2-k3s1
+# k8s.io/pod-security-admission => github.com/k3s-io/kubernetes/staging/src/k8s.io/pod-security-admission v1.28.2-k3s1
+# k8s.io/sample-apiserver => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-apiserver v1.28.2-k3s1
+# k8s.io/sample-cli-plugin => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.28.2-k3s1
+# k8s.io/sample-controller => github.com/k3s-io/kubernetes/staging/src/k8s.io/sample-controller v1.28.2-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..835c3d50
--- /dev/null
+++ b/recipes-containers/k3s/k3s_git.bb
@@ -0,0 +1,143 @@
+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=master;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 = "6330a5b49cfe3030af9c26ec29471e1d5c288cdd"
+
+SRCREV_FORMAT = "k3s_fuse"
+PV = "v1.28.2+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/
+
+ ${GO} build -trimpath -tags "$TAGS" -ldflags "${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
+}
+
+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"
+
+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..63e80119
--- /dev/null
+++ b/recipes-containers/k3s/relocation.inc
@@ -0,0 +1,357 @@
+export sites="k8s.io/utils:k8s.io/utils:force \
+ k8s.io/gengo:k8s.io/gengo:force \
+ go.uber.org/zap:go.uber.org/zap: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 \
+ 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 \
+ go.uber.org/atomic:go.uber.org/atomic: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/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/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/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/golang/mock:github.com/golang/mock: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-test/deep:github.com/go-test/deep:force \
+ github.com/otiai10/copy:github.com/otiai10/copy: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/go-logr/logr:github.com/go-logr/logr:force \
+ github.com/go-logr/stdr:github.com/go-logr/stdr: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/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/urfave/cli/v2:github.com/urfave/cli/v2:force \
+ go.opentelemetry.io/otel:go.opentelemetry.io/otel:force \
+ github.com/containerd/zfs:github.com/containerd/zfs: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/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/rancher/wharfie:github.com/rancher/wharfie:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus: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/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/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/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/Azure/go-ansiterm:github.com/Azure/go-ansiterm:force \
+ github.com/Azure/go-autorest:github.com/Azure/go-autorest:force \
+ github.com/Microsoft/hcsshim:github.com/Microsoft/hcsshim: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/containerd/cgroups:github.com/containerd/cgroups: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/klauspost/compress:github.com/klauspost/compress: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/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/opencontainers/runc:github.com/opencontainers/runc:force \
+ github.com/vishvananda/netlink:github.com/vishvananda/netlink: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 \
+ 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/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/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/containerd/cgroups/v3:github.com/containerd/cgroups/v3: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/opencontainers/selinux:github.com/opencontainers/selinux: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/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/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/moby/sys/sequential:github.com/moby/sys/sequential/sequential: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/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/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/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/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/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 \
+ github.com/matttproud/golang_protobuf_extensions:github.com/matttproud/golang_protobuf_extensions: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/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/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..7567d1a6
--- /dev/null
+++ b/recipes-containers/k3s/src_uri.inc
@@ -0,0 +1,1700 @@
+# k8s.io/utils v0.0.0-20230406110748-d93618cff8a2
+# [1] git ls-remote https://github.com/kubernetes/utils d93618cff8a22d3aea7bf78d9d528fd859720c2d
+SRCREV_utils="d93618cff8a22d3aea7bf78d9d528fd859720c2d"
+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-20220902162205-c0856e24416d
+# [1] git ls-remote https://github.com/kubernetes/gengo c0856e24416daea2775735ff996a5870c2033839
+SRCREV_gengo="c0856e24416daea2775735ff996a5870c2033839"
+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/zap v1.24.0
+# [1] git ls-remote https://github.com/uber-go/zap a55bdc32f526699c3b4cc51a2cc97e944d02fbbf
+SRCREV_zap="a55bdc32f526699c3b4cc51a2cc97e944d02fbbf"
+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.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.8.0
+# [1] git ls-remote https://go.googlesource.com/net dfa2b5dffd96fb2ae13e7d182501f0bce044a0a4
+SRCREV_net="dfa2b5dffd96fb2ae13e7d182501f0bce044a0a4"
+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.6.0
+# [1] git ls-remote https://go.googlesource.com/sys c7a1bf9a0b0aa7c0c0e35a435924dd68e64d1653
+SRCREV_sys="c7a1bf9a0b0aa7c0c0e35a435924dd68e64d1653"
+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.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"
+
+# go.etcd.io/bbolt v1.3.7
+# [1] git ls-remote https://github.com/etcd-io/bbolt da2f2a53f6e2f25b215b79db2cd417488ef8e955
+SRCREV_bbolt="da2f2a53f6e2f25b215b79db2cd417488ef8e955"
+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-20230307190834-24139beb5833
+# [1] git ls-remote https://go.googlesource.com/exp 24139beb58334522371ecb30ef162994b651297e
+SRCREV_exp="24139beb58334522371ecb30ef162994b651297e"
+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.10.0
+# [1] git ls-remote https://go.googlesource.com/mod ad6fd61f94f8fdf6926f5dee6e45bdd13add2f9f
+SRCREV_mod="ad6fd61f94f8fdf6926f5dee6e45bdd13add2f9f"
+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.3.0
+# [1] git ls-remote https://go.googlesource.com/sync 93782cc822b6b554cb7df40332fd010f0473cbc8
+SRCREV_sync="93782cc822b6b554cb7df40332fd010f0473cbc8"
+SRC_URI += "git://go.googlesource.com/sync;name=sync;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/sync"
+
+# 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.10.0
+# [1] git ls-remote https://go.googlesource.com/term edd9fb7f4aabf5aa4c7bca2146907778a2af0321
+SRCREV_x-term="edd9fb7f4aabf5aa4c7bca2146907778a2af0321"
+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.12.0
+# [1] git ls-remote https://go.googlesource.com/text fb697c0580b4b6ab0a21ca17e64788b981fb6018
+SRCREV_text="fb697c0580b4b6ab0a21ca17e64788b981fb6018"
+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/atomic v1.10.0
+# [1] git ls-remote https://github.com/uber-go/atomic 96800363039fbf926a6c826795797abcde5f07a5
+SRCREV_atomic="96800363039fbf926a6c826795797abcde5f07a5"
+SRC_URI += "git://github.com/uber-go/atomic;name=atomic;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/go.uber.org/atomic"
+
+# golang.org/x/tools v0.8.0
+# [1] git ls-remote https://go.googlesource.com/tools 5ef3193183ecbeb75ee5b12e4d0d76129ec4da3d
+SRCREV_tools="5ef3193183ecbeb75ee5b12e4d0d76129ec4da3d"
+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.1.0
+# [1] git ls-remote https://go.googlesource.com/crypto 642fcc37f5043eadb2509c84b2769e729e7d27ef
+SRCREV_crypto="642fcc37f5043eadb2509c84b2769e729e7d27ef"
+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/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/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.138.0
+# [1] git ls-remote https://github.com/googleapis/google-api-go-client 85e7e701156850dc39c0d0bfc48040bc25b6297f
+SRCREV_google.golang.org-api="85e7e701156850dc39c0d0bfc48040bc25b6297f"
+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/google/uuid v1.3.0
+# [1] git ls-remote https://github.com/google/uuid 44b5fee7c49cf3bcdf723f106b36d56ef13ccc88
+SRCREV_uuid="44b5fee7c49cf3bcdf723f106b36d56ef13ccc88"
+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.0
+# [1] git ls-remote https://github.com/gorilla/mux 98cb6bf42e086f6af920b965c38cacc07402d51b
+SRCREV_mux="98cb6bf42e086f6af920b965c38cacc07402d51b"
+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.10.3
+# [1] git ls-remote https://github.com/k3s-io/kine c5f2d892d70778fb9ad15208d4ca8617c3c794da
+SRCREV_kine="c5f2d892d70778fb9ad15208d4ca8617c3c794da"
+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.6
+# [1] git ls-remote https://github.com/onsi/gomega 64305cbf9d7c2209f13bcfd65dc4aafd6ec4b898
+SRCREV_gomega="64305cbf9d7c2209f13bcfd65dc4aafd6ec4b898"
+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/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.51.0
+# [1] git ls-remote https://github.com/grpc/grpc-go eeb9afa1f6b6388152955eeca8926e36ca94c768
+SRCREV_grpc="eeb9afa1f6b6388152955eeca8926e36ca94c768"
+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/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/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/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.7.0
+# [1] git ls-remote https://github.com/spf13/cobra 4dd4b25de38418174a6e859e8a32eaccca32dccc
+SRCREV_cobra="4dd4b25de38418174a6e859e8a32eaccca32dccc"
+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-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"
+
+# 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/go-logr/logr v1.2.4
+# [1] git ls-remote https://github.com/go-logr/logr 4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2
+SRCREV_logr="4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2"
+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/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-20210720184732-4bb14d4b1be1
+# [1] git ls-remote https://github.com/google/pprof 4bb14d4b1be14417e47d0bbaf2bd4e188eda647f
+SRCREV_pprof="4bb14d4b1be14417e47d0bbaf2bd4e188eda647f"
+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-20230629200414-8a54b32e6792
+# [1] git ls-remote https://github.com/rancher/lasso 8a54b32e67927fdc462570ef8763186c52078300
+SRCREV_lasso="8a54b32e67927fdc462570ef8763186c52078300"
+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/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.5.9
+# [1] git ls-remote https://github.com/google/go-cmp a97318bf6562f2ed2632c5f985db51b1bc5bdcd0
+SRCREV_go-cmp="a97318bf6562f2ed2632c5f985db51b1bc5bdcd0"
+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.5
+# [1] git ls-remote https://github.com/google/s2a-go ab15cb590c7ae2cac7e1928843ec29bd6eb69356
+SRCREV_s2a-go="ab15cb590c7ae2cac7e1928843ec29bd6eb69356"
+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.13
+# [1] git ls-remote https://github.com/darccio/mergo 194978757031c1a5c8ff8e059ae75fc2fc2a04f7
+SRCREV_mergo="194978757031c1a5c8ff8e059ae75fc2fc2a04f7"
+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.4
+# [1] git ls-remote https://github.com/nats-io/nkeys 73b08e02f4e8ed17521951fdf7542a6a61955ce6
+SRCREV_nkeys="73b08e02f4e8ed17521951fdf7542a6a61955ce6"
+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/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/onsi/ginkgo/v2 v2.9.4
+# [1] git ls-remote https://github.com/onsi/ginkgo 909d19387f14c77d47f73878e5d6e63c26fd7afa
+SRCREV_ginkgo-v2="909d19387f14c77d47f73878e5d6e63c26fd7afa"
+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_v3="ccba498c397bb90a9c84945bbb0f7af2d72b6309"
+SRC_URI += "git://github.com/robfig/cron;name=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/containerd/nri v0.3.0
+# [1] git ls-remote https://github.com/containerd/nri 2a8b6558e9fd2045471d9c77386441e1ad060a87
+SRCREV_nri="2a8b6558e9fd2045471d9c77386441e1ad060a87"
+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.4.1
+# [1] git ls-remote https://github.com/nats-io/jwt 535a7674fb6149ba5d35297b3125b337ee281e13
+SRCREV_jwt-v2="535a7674fb6149ba5d35297b3125b337ee281e13"
+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.0
+# [1] git ls-remote https://github.com/vmware/govmomi eabc29ba6d1015a55593f71cf84d99f4518a2589
+SRCREV_govmomi="eabc29ba6d1015a55593f71cf84d99f4518a2589"
+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.5.3
+# [1] git ls-remote https://github.com/rancher/wharfie 3ede7b88d327b06884f70978da9e87a0a210c6b3
+SRCREV_wharfie="3ede7b88d327b06884f70978da9e87a0a210c6b3"
+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/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.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/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.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/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.27.1
+# [1] git ls-remote https://github.com/nats-io/nats.go e86764410c409ae5021bc5d73484ca4685c10dbd
+SRCREV_nats.go="e86764410c409ae5021bc5d73484ca4685c10dbd"
+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/mattn/go-sqlite3 v1.14.17
+# [1] git ls-remote https://github.com/mattn/go-sqlite3 f08f1b6b9ce62b2496d8d64df26c1e278887bc1c
+SRCREV_go-sqlite3="f08f1b6b9ce62b2496d8d64df26c1e278887bc1c"
+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"
+
+# cloud.google.com/go/compute v1.23.0
+# [1] git ls-remote https://github.com/googleapis/google-cloud-go 4a23c37ecf13804fa5126211c5719969e62e4cea
+SRCREV_compute="4a23c37ecf13804fa5126211c5719969e62e4cea"
+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.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"
+
+# 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/k3s-io/containerd v1.7.6-k3s1
+# [1] git ls-remote https://github.com/k3s-io/containerd be89dbc8cd4b889b9478d0f6cbafd00dd7767c52
+SRCREV_containerd="be89dbc8cd4b889b9478d0f6cbafd00dd7767c52"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kubernetes="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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/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/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/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.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/fsnotify/fsnotify v1.6.0
+# [1] git ls-remote https://github.com/fsnotify/fsnotify 5f8c606accbcc6913853fe7e083ee461d181d88d
+SRCREV_fsnotify="5f8c606accbcc6913853fe7e083ee461d181d88d"
+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.0
+# [1] git ls-remote https://github.com/minio/sha256-simd 6a57409d8e0fa3ae883aee331b71aaa40d5a7dd9
+SRCREV_sha256-simd="6a57409d8e0fa3ae883aee331b71aaa40d5a7dd9"
+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.0
+# [1] git ls-remote https://github.com/mrunalp/fileutils d7fdd64cc1cabe10bc154ee7d2318b07b7f296ef
+SRCREV_fileutils="d7fdd64cc1cabe10bc154ee7d2318b07b7f296ef"
+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.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.10.1
+# [1] git ls-remote https://github.com/prometheus/procfs 332e865adfebaa7eaedc94535a3f12f7e5eeb2d4
+SRCREV_procfs="332e865adfebaa7eaedc94535a3f12f7e5eeb2d4"
+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.4-k3s3
+# [1] git ls-remote https://github.com/k3s-io/cri-dockerd 4e5e5975922f576f4c559655d7aade8ff71319ad
+SRCREV_cri-dockerd="4e5e5975922f576f4c559655d7aade8ff71319ad"
+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/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/coreos/go-iptables v0.6.0
+# [1] git ls-remote https://github.com/coreos/go-iptables 14d56d57c892f27a717aa6026fd2d3293221395b
+SRCREV_go-iptables="14d56d57c892f27a717aa6026fd2d3293221395b"
+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.22.2
+# [1] git ls-remote https://github.com/flannel-io/flannel 148b6d6a58deb864519bbc474f4c531a0799e910
+SRCREV_flannel="148b6d6a58deb864519bbc474f4c531a0799e910"
+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/klauspost/compress v1.16.7
+# [1] git ls-remote https://github.com/klauspost/compress 67a538e2b4df11f8ec7139388838a13bce84b5d5
+SRCREV_compress="67a538e2b4df11f8ec7139388838a13bce84b5d5"
+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/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/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.1.0
+# [1] git ls-remote https://github.com/klauspost/cpuid 4645384556483379792c7a2ac8fcacaf5d80141b
+SRCREV_cpuid-v2="4645384556483379792c7a2ac8fcacaf5d80141b"
+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.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/shengdoushi/base58 v1.0.0
+# [1] git ls-remote https://github.com/shengdoushi/base58 c5f44ca1af76fb63925d5fba8fa7b85870199839
+SRCREV_base58="c5f44ca1af76fb63925d5fba8fa7b85870199839"
+SRC_URI += "git://github.com/shengdoushi/base58;name=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/opencontainers/runc v1.1.8
+# [1] git ls-remote https://github.com/opencontainers/runc 82f18fe0e44a59034f3e1f45e475fa5636e539aa
+SRCREV_runc="82f18fe0e44a59034f3e1f45e475fa5636e539aa"
+SRC_URI += "git://github.com/opencontainers/runc;name=runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runc"
+
+# 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/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.3.0
+# [1] git ls-remote https://github.com/jonboulle/clockwork 6a247c35607b17156e639c6e0606887fa6fc304f
+SRCREV_clockwork="6a247c35607b17156e639c6e0606887fa6fc304f"
+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/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/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-0.20230508174102-b42e5faded1c
+# [1] git ls-remote https://github.com/k3s-io/kube-router b42e5faded1c6f744fd7067f88f1c83a16a989c0
+SRCREV_v2="b42e5faded1c6f744fd7067f88f1c83a16a989c0"
+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/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/containerd/cgroups/v3 v3.0.2
+# [1] git ls-remote https://github.com/containerd/cgroups 8fa64246e17ceea54277b3ad7139d9ec17545bfa
+SRCREV_cgroups-v3="8fa64246e17ceea54277b3ad7139d9ec17545bfa"
+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/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.2
+# [1] git ls-remote https://github.com/cpuguy83/go-md2man d97078115282836e16d0dca10b4b42ce60fc70e6
+SRCREV_go-md2man-v2="d97078115282836e16d0dca10b4b42ce60fc70e6"
+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.4.0
+# [1] git ls-remote https://github.com/docker/go-connections 7395e3f8aa162843a74ed6d48e79627d9792ac55
+SRCREV_go-connections="7395e3f8aa162843a74ed6d48e79627d9792ac55"
+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.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/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.4
+# [1] git ls-remote https://github.com/k3s-io/helm-controller 32c2e08fa0265cbc36680d50ca766c5a73cecd85
+SRCREV_helm-controller="32c2e08fa0265cbc36680d50ca766c5a73cecd85"
+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/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/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.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/nats-io/nats-server/v2 v2.9.18
+# [1] git ls-remote https://github.com/nats-io/nats-server 166eeb243c09136327a3bfdc48f8cdc384bd8816
+SRCREV_nats-server-v2="166eeb243c09136327a3bfdc48f8cdc384bd8816"
+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-rc2
+# [1] git ls-remote https://github.com/rancher/dynamiclistener 1c60bf414fd2331505a8dbd039e527ee3c7a94dc
+SRCREV_dynamiclistener="1c60bf414fd2331505a8dbd039e527ee3c7a94dc"
+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/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.4.0
+# [1] git ls-remote https://github.com/prometheus/client_model 91c3945f2cfbfb9040e34a0b6764d804b5a5a490
+SRCREV_client_model="91c3945f2cfbfb9040e34a0b6764d804b5a5a490"
+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/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.16.0
+# [1] git ls-remote https://github.com/prometheus/client_golang 3583c1e1d085b75cab406c78b015562d45552b39
+SRCREV_client_golang="3583c1e1d085b75cab406c78b015562d45552b39"
+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"
+
+# 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-rc3
+# [1] git ls-remote https://github.com/opencontainers/image-spec 085b884d628c42985cc2f2a99e5701f7e9b3bd1f
+SRCREV_image-spec="085b884d628c42985cc2f2a99e5701f7e9b3bd1f"
+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.2.3
+# [1] git ls-remote https://github.com/kubernetes-sigs/structured-merge-diff 26781d0c10bfdbd7d66b18d8be83985f623df9f8
+SRCREV_structured-merge-diff-v4="26781d0c10bfdbd7d66b18d8be83985f623df9f8"
+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/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.3
+# [1] git ls-remote https://github.com/cyphar/filepath-securejoin 8f267f5ea675a20a2cb5e91011d063721f53bf79
+SRCREV_filepath-securejoin="8f267f5ea675a20a2cb5e91011d063721f53bf79"
+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/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-20201105010758-936f38b697fd
+# [1] git ls-remote https://github.com/bronze1man/goStrongswanVici 936f38b697fd9a0054eee1469fee9d51199d4e66
+SRCREV_goStrongswanVici="936f38b697fd9a0054eee1469fee9d51199d4e66"
+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.2.0
+# [1] git ls-remote https://github.com/containernetworking/plugins c4d24e80d64393d2c632a825a3486d1c2c0248ec
+SRCREV_plugins="c4d24e80d64393d2c632a825a3486d1c2c0248ec"
+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/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/grpc-ecosystem/grpc-gateway/v2 v2.11.3
+# [1] git ls-remote https://github.com/grpc-ecosystem/grpc-gateway 0197faf8b072910084edd1209aa2ac51833b895c
+SRCREV_grpc-gateway-v2="0197faf8b072910084edd1209aa2ac51833b895c"
+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-20230803162519-f966b187b2e5
+# [1] git ls-remote https://github.com/googleapis/go-genproto f966b187b2e5cc15e67ca68e47d6aa17b0cacf55
+SRCREV_googleapis-api="f966b187b2e5cc15e67ca68e47d6aa17b0cacf55"
+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-20230807174057-1744710a1577
+# [1] git ls-remote https://github.com/googleapis/go-genproto 1744710a157770fc02e206b1635931ada8882b25
+SRCREV_rpc="1744710a157770fc02e206b1635931ada8882b25"
+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/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/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/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"
+
+# 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.2.5
+# [1] git ls-remote https://github.com/googleapis/enterprise-certificate-proxy 5b63ef50a6264a9749823f4e41da6d4e7836e419
+SRCREV_enterprise-certificate-proxy="5b63ef50a6264a9749823f4e41da6d4e7836e419"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_api="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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/k3s-io/kubernetes/staging/src/k8s.io/kms v1.28.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kms="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_cri-api="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kubectl="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kubelet="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_metrics="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_apiserver="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_client-go="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kube-proxy="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_cli-runtime="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_mount-utils="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_apimachinery="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_endpointslice="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_cloud-provider="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_component-base="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_code-generator="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kube-scheduler="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kube-aggregator="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_cluster-bootstrap="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_component-helpers="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_controller-manager="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_csi-translation-lib="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_legacy-cloud-providers="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_pod-security-admission="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_apiextensions-apiserver="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_kube-controller-manager="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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.2-k3s1
+# [1] git ls-remote https://github.com/k3s-io/kubernetes 1235ba136d79ae87b8e6aa1768ad12e22857e27a
+SRCREV_dynamic-resource-allocation="1235ba136d79ae87b8e6aa1768ad12e22857e27a"
+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-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-generate-bindata-unset-GOBIN.patch b/recipes-containers/kubernetes/kubernetes/0001-generate-bindata-unset-GOBIN.patch
deleted file mode 100644
index 95196efa..00000000
--- a/recipes-containers/kubernetes/kubernetes/0001-generate-bindata-unset-GOBIN.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 3a43ae2df86f8609d5b88863caf19667420ec171 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@gmail.com>
-Date: Fri, 31 Jul 2020 18:39:38 +0000
-Subject: [PATCH] generate-bindata: unset GOBIN
-
-go install is more strict with recent releases and when cross-compiling
-will generate the following error if GOBIN is set:
-
- | go install: cannot install cross-compiled binaries when GOBIN is set
- | make[2]: *** [Makefile.generated_files:622: gen_bindata] Error 1
- | make[1]: *** [Makefile:545: generated_files] Error 2
- | make: *** [Makefile:506: cross] Error 1
- | WARNING: exit code 2 from a shell command.
-
-So we explicitly unset GOBIN to avoid the issue.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
----
- src/import/hack/generate-bindata.sh | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/import/hack/generate-bindata.sh b/src/import/hack/generate-bindata.sh
-index c12da77e54b..9a9f8ac3b2f 100755
---- a/src/import/hack/generate-bindata.sh
-+++ b/src/import/hack/generate-bindata.sh
-@@ -33,6 +33,7 @@ export GOBIN="${KUBE_OUTPUT_BINPATH}"
- PATH="${GOBIN}:${PATH}"
-
- # Install tools we need, but only from vendor/...
-+unset GOBIN
- go install k8s.io/kubernetes/vendor/github.com/go-bindata/go-bindata/go-bindata
-
- # run the generation from the root directory for stable output
---
-2.19.1
-
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 2cc2bcdf..0a1323e1 100644
--- a/recipes-containers/kubernetes/kubernetes_git.bb
+++ b/recipes-containers/kubernetes/kubernetes_git.bb
@@ -1,43 +1,61 @@
-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.19.0-rc.3+git${SRCREV_kubernetes}"
-SRCREV_kubernetes = "bdc575e10c35a3e65a1c02bceea432832b7e4f4f"
-SRCREV_kubernetes-release = "e7fbf5b8b7e87ed1848cf3a0129f7a7dff2aa4ed"
+PV = "v1.28.2+git${SRCREV_kubernetes}"
+CVE_VERSION = "1.28.2"
+SRCREV_kubernetes = "e3b5e621f07f0fee298f641ebded61b8f393fe27"
+SRCREV_kubernetes-release = "21382abdbfa8e6a43fd417306fa649cb651cc06e"
+PE = "1"
-SRC_URI = "git://github.com/kubernetes/kubernetes.git;branch=release-1.19;name=kubernetes \
- git://github.com/kubernetes/release;branch=master;name=kubernetes-release;destsuffix=git/release \
+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.28;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.28;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-generate-bindata-unset-GOBIN.patch \
+ file://0001-build-golang.sh-convert-remaining-go-calls-to-use.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}"
@@ -46,11 +64,16 @@ do_compile() {
export CFLAGS="${BUILD_CFLAGS}"
export LDFLAGS="${BUILD_LDFLAGS}"
export CGO_CFLAGS="${BUILD_CFLAGS}"
- export CGO_LDFLAGS="${BUILD_LDFLAGS}"
+ # 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}"
- make generated_files KUBE_BUILD_PLATFORMS="${HOST_GOOS}/${BUILD_GOARCH}"
+ # 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}"
@@ -65,7 +88,7 @@ do_compile() {
export GOBIN=""
# to limit what is built, use 'WHAT', i.e. make WHAT=cmd/kubelet
- make cross GO=${GO} KUBE_BUILD_PLATFORMS=${GOOS}/${GOARCH} GOLDFLAGS=""
+ make cross CGO_FLAGS=${CGO_FLAGS} GO=${GO} KUBE_BUILD_PLATFORMS=${GOOS}/${GOARCH} GOLDFLAGS="" DBG=1
}
do_install() {
@@ -75,38 +98,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 -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"
+
+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"
+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-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/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 a8c76bc8..00000000
--- a/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 0cfa202f5d96a35692f063f35bf4706f310b17e4 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 a3272e9..a2d4c29 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -378,6 +378,15 @@ AC_ARG_ENABLE([examples],
- [enable_examples=$enableval], [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],
- [AS_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 d280656..62cbf4f 100644
---- a/src/lxc/log.h
-+++ b/src/lxc/log.h
-@@ -47,8 +47,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 6702b69e..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
@@ -3,6 +3,8 @@ 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/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 be5dddf1..00000000
--- a/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 85d1e77acbfde2aa1045cfda877a91a9e57c405d 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 90a4bd4..a3272e9 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -227,7 +227,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 cd8f81d0..00000000
--- a/recipes-containers/lxc/files/lxc-fix-B-S.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 1cdadc8d6f7ccaf398a95af920b7c49514ee62ef 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/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 56ff2f07..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
@@ -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>
---
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 522aab7c..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 7c1c597592694d1f3e652657b1cc642a8990f8a0 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 58d063f..d7e6128 100644
+index 4cb2129..923d2a1 100644
--- a/templates/lxc-download.in
+++ b/templates/lxc-download.in
@@ -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 156df82f..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,22 +1,24 @@
-From 07890dd8ffdcd08b7be1ddbd9f56ac55482c76bb 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
-Signed-off-by: Joakim Roubert <joakimr@axis.com>
+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 d7e6128..8a4b567 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
}
@@ -28,18 +30,16 @@ index d7e6128..8a4b567 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
-@@ -271,7 +271,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
@@ -48,3 +48,6 @@ index d7e6128..8a4b567 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 8caeb2ba..00000000
--- a/recipes-containers/lxc/files/tests-add-no-validate-when-using-download-template.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-From 1c2506434e744d8c6a86e42c9d8bae4cde7553f6 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 d21c948..9e1969b 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 e5a8011e..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
@@ -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_4.0.3.bb b/recipes-containers/lxc/lxc_git.bb
index f0fd4b96..33ea4ee7 100644
--- a/recipes-containers/lxc/lxc_4.0.3.bb
+++ b/recipes-containers/lxc/lxc_git.bb
@@ -1,12 +1,12 @@
DESCRIPTION = "lxc aims to use these new functionnalities to provide an userspace container object"
SECTION = "console/utils"
-LICENSE = "LGPLv2.1 & GPLv2"
+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} = " \
+RDEPENDS:${PN} = " \
rsync \
curl \
gzip \
@@ -30,56 +30,58 @@ RDEPENDS_${PN} = " \
util-linux-getopt \
"
-RDEPENDS_${PN}_append_libc-glibc = " glibc-utils"
+RDEPENDS:${PN}:append:libc-glibc = " glibc-utils"
-RDEPENDS_${PN}-ptest += "file make gmp nettle gnutls bash libgcc"
+RDEPENDS:${PN}-ptest += "file make gmp nettle gnutls bash libgcc"
-RDEPENDS_${PN}-networking += "iptables"
+RDEPENDS:${PN}-networking += "iptables"
-SRC_URI = "http://linuxcontainers.org/downloads/${BPN}-${PV}.tar.gz \
+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://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://0001-download-don-t-try-compatbility-index.patch \
file://tests-our-init-is-not-busybox.patch \
- file://tests-add-no-validate-when-using-download-template.patch \
+ file://0001-template-if-busybox-contains-init-use-it-in-containe.patch \
file://dnsmasq.conf \
file://lxc-net \
"
-SRC_URI[md5sum] = "7d86ddf9fcb5f78ac5ae0380fbbfb690"
-SRC_URI[sha256sum] = "d56d91d772449c57e9a67b770dab8967e412051d8d6246ce56c63264671672e5"
+SRCREV = "cb8e38aca27a23964941f0f011a8919aab8bebab"
+PV = "5.0.3+git"
-S = "${WORKDIR}/${BPN}-${PV}"
+S = "${WORKDIR}/git"
# 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}"
+PTEST_CONF = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '-Dtests=true', '', d)}"
-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 -Wno-error=stringop-overflow"
+# 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)} \
"
-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"
+
+# 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] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
-PACKAGECONFIG[seccomp] ="--enable-seccomp,--disable-seccomp,libseccomp,libseccomp"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
+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
@@ -87,45 +89,46 @@ export HOST_SYS
export STAGING_INCDIR
export STAGING_LIBDIR
-inherit autotools pkgconfig ptest update-rc.d systemd python3native
+inherit meson 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}"
+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"
+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: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 += " \
+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='${PYTHON_SITEPACKAGES_DIR}' \
- am_cv_python_pythondir='${PYTHON_SITEPACKAGES_DIR}' \
-"
+# 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() {
+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
@@ -136,8 +139,15 @@ do_install_append() {
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
+ 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
@@ -165,15 +175,15 @@ do_install_ptest() {
mv ${D}/usr/bin/lxc-test-* ${D}/${PTEST_PATH}/tests/.
}
-pkg_postinst_${PN}() {
+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() {
+pkg_postinst:${PN}-networking() {
if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-cat >> /etc/network/interfaces << EOF
+cat >> $D/etc/network/interfaces << EOF
auto lxcbr0
iface lxcbr0 inet dhcp
@@ -182,7 +192,7 @@ iface lxcbr0 inet dhcp
bridge_maxwait 0
EOF
-cat<<EOF>/etc/network/if-pre-up.d/lxcbr0
+cat<<EOF>$D/etc/network/if-pre-up.d/lxcbr0
#! /bin/sh
if test "x\$IFACE" = xlxcbr0 ; then
@@ -195,6 +205,6 @@ if test "x\$IFACE" = xlxcbr0 ; then
fi
fi
EOF
-chmod 755 /etc/network/if-pre-up.d/lxcbr0
+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..9b9f9cc4
--- /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-v1.3.0/src/import/Makefile
+===================================================================
+--- nerdctl-v1.3.0.orig/src/import/Makefile
++++ nerdctl-v1.3.0/src/import/Makefile
+@@ -32,7 +32,7 @@
+ REVISION ?= $(shell git rev-parse HEAD)$(shell if ! git diff --no-ext-diff --quiet --exit-code; then echo .m; fi)
+
+ GO_BUILD_LDFLAGS ?= -s -w
+-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..deafa0dc
--- /dev/null
+++ b/recipes-containers/nerdctl/nerdctl/modules.txt
@@ -0,0 +1,248 @@
+# github.com/Masterminds/semver/v3 v3.2.1
+## explicit
+# github.com/Microsoft/go-winio v0.6.1
+## explicit
+# github.com/Microsoft/hcsshim v0.10.0
+## explicit
+# github.com/awslabs/soci-snapshotter v0.3.0
+## explicit
+# github.com/compose-spec/compose-go v1.17.0
+## explicit
+# github.com/containerd/accelerated-container-image v0.6.7
+## explicit
+# github.com/containerd/cgroups/v3 v3.0.2
+## explicit
+# github.com/containerd/console v1.0.3
+## explicit
+# github.com/containerd/containerd v1.7.3
+## explicit
+# github.com/containerd/continuity v0.4.1
+## explicit
+# github.com/containerd/go-cni v1.1.9
+## explicit
+# github.com/containerd/imgcrypt v1.1.7
+## explicit
+# github.com/containerd/nydus-snapshotter v0.10.0
+## explicit
+# github.com/containerd/stargz-snapshotter v0.14.3
+## explicit
+# github.com/containerd/stargz-snapshotter/estargz v0.14.3
+## explicit
+# github.com/containerd/stargz-snapshotter/ipfs v0.14.3
+## 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/coreos/go-iptables v0.6.0
+## explicit
+# github.com/coreos/go-systemd/v22 v22.5.0
+## explicit
+# github.com/cyphar/filepath-securejoin v0.2.3
+## explicit
+# github.com/docker/cli v24.0.5+incompatible
+## explicit
+# github.com/docker/docker v24.0.5+incompatible
+## explicit
+# github.com/docker/go-connections v0.4.0
+## explicit
+# github.com/docker/go-units v0.5.0
+## explicit
+# github.com/fahedouch/go-logrotate v0.1.3
+## explicit
+# github.com/fatih/color v1.15.0
+## explicit
+# github.com/fluent/fluent-logger-golang v1.9.0
+## explicit
+# github.com/hashicorp/go-multierror v1.1.1
+## explicit
+# github.com/ipfs/go-cid v0.4.1
+## explicit
+# github.com/mattn/go-isatty v0.0.19
+## 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/opencontainers/go-digest v1.0.0
+## explicit
+# github.com/opencontainers/image-spec v1.1.0-rc4
+## explicit
+# github.com/opencontainers/runtime-spec v1.1.0
+## explicit
+# github.com/pelletier/go-toml v1.9.5
+## explicit
+# github.com/rootless-containers/bypass4netns v0.3.0
+## explicit
+# github.com/rootless-containers/rootlesskit v1.1.1
+## explicit
+# github.com/sirupsen/logrus v1.9.3
+## explicit
+# github.com/spf13/cobra v1.7.0
+## explicit
+# github.com/spf13/pflag v1.0.5
+## explicit
+# github.com/tidwall/gjson v1.15.0
+## 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
+# golang.org/x/crypto v0.11.0
+## explicit
+# golang.org/x/net v0.12.0
+## explicit
+# golang.org/x/sync v0.3.0
+## explicit
+# golang.org/x/sys v0.10.0
+## explicit
+# golang.org/x/term v0.10.0
+## explicit
+# golang.org/x/text v0.11.0
+## explicit
+# gopkg.in/yaml.v3 v3.0.1
+## explicit
+# gotest.tools/v3 v3.5.0
+## explicit
+# golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1
+## explicit
+# github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1
+## 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/cilium/ebpf v0.9.1
+## explicit
+# github.com/containerd/fifo v1.1.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.7
+## explicit
+# github.com/distribution/distribution/v3 v3.0.0-20230214150026-36d8c594d7aa
+## 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/frankban/quicktest v1.14.2
+## explicit
+# github.com/go-logr/logr v1.2.4
+## 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.5.9
+## explicit
+# github.com/google/uuid v1.3.0
+## explicit
+# github.com/hashicorp/errwrap v1.1.0
+## explicit
+# github.com/imdario/mergo v0.3.16
+## explicit
+# github.com/inconshreveable/mousetrap v1.1.0
+## explicit
+# github.com/klauspost/compress v1.16.7
+## explicit
+# github.com/klauspost/cpuid/v2 v2.1.1
+## 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.0
+## explicit
+# github.com/mitchellh/go-homedir v1.1.0
+## explicit
+# github.com/moby/locker v1.0.1
+## explicit
+# github.com/moby/sys/mountinfo v0.6.2
+## 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.8.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/runc v1.1.7
+## explicit
+# github.com/opencontainers/selinux v1.11.0
+## explicit
+# github.com/philhofer/fwd v1.1.1
+## explicit
+# github.com/pkg/errors v0.9.1
+## 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.3
+## 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/otel v1.15.1
+## explicit
+# go.opentelemetry.io/otel/trace v1.15.1
+## explicit
+# golang.org/x/mod v0.11.0
+## explicit
+# golang.org/x/tools v0.9.1
+## explicit
+# google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
+## explicit
+# google.golang.org/grpc v1.56.2
+## explicit
+# google.golang.org/protobuf v1.31.0
+## explicit
+# gopkg.in/square/go-jose.v2 v2.5.1
+## 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..4e65405e
--- /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 = "b33a58f288bc42351404a016e694190b897cd252"
+
+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 = "v1.5.0"
+
+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..401a980c
--- /dev/null
+++ b/recipes-containers/nerdctl/relocation.inc
@@ -0,0 +1,141 @@
+export sites="gotest.tools/v3:gotest.tools/v3: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 \
+ golang.org/x/exp:golang.org/x/exp:force \
+ go.opencensus.io:go.opencensus.io: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/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/docker/go-units:github.com/docker/go-units:force \
+ github.com/mattn/go-isatty:github.com/mattn/go-isatty:force \
+ github.com/sirupsen/logrus:github.com/sirupsen/logrus:force \
+ github.com/yuchanns/srslog:github.com/yuchanns/srslog:force \
+ github.com/containerd/fifo:github.com/containerd/fifo:force \
+ github.com/golang/protobuf:github.com/golang/protobuf: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/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/pelletier/go-toml:github.com/pelletier/go-toml:force \
+ github.com/vishvananda/netns:github.com/vishvananda/netns:force \
+ github.com/Azure/go-ansiterm:github.com/Azure/go-ansiterm: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/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/typeurl:github.com/containerd/typeurl:force \
+ github.com/frankban/quicktest:github.com/frankban/quicktest: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/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/opencontainers/runc:github.com/opencontainers/runc: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/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 \
+ 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/distribution/distribution/v3:github.com/distribution/distribution/v3:force \
+ github.com/containerd/stargz-snapshotter:github.com/containerd/stargz-snapshotter:force \
+ github.com/rootless-containers/rootlesskit:github.com/rootless-containers/rootlesskit: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/containerd/stargz-snapshotter/ipfs:github.com/containerd/stargz-snapshotter/ipfs/ipfs: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"
+
+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..0fc89701
--- /dev/null
+++ b/recipes-containers/nerdctl/src_uri.inc
@@ -0,0 +1,620 @@
+# gotest.tools/v3 v3.5.0
+# [1] git ls-remote https://github.com/gotestyourself/gotest.tools a80f057529047c44e1a85d0d017b200787e537e0
+SRCREV_gotest.tools-v3="a80f057529047c44e1a85d0d017b200787e537e0"
+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"
+
+# golang.org/x/net v0.12.0
+# [1] git ls-remote https://go.googlesource.com/net c73c09c3904ce6a210970374bd1bc507ef1f8cc2
+SRCREV_net="c73c09c3904ce6a210970374bd1bc507ef1f8cc2"
+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.10.0
+# [1] git ls-remote https://go.googlesource.com/sys a1a9c4b846b3a485ba94fede5b50579c7f432759
+SRCREV_sys="a1a9c4b846b3a485ba94fede5b50579c7f432759"
+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/exp v0.0.0-20230713183714-613f0c0eb8a1
+# [1] git ls-remote https://go.googlesource.com/exp 613f0c0eb8a17a98ecdb096a7f9f7d5053c1c963
+SRCREV_exp="613f0c0eb8a17a98ecdb096a7f9f7d5053c1c963"
+SRC_URI += "git://go.googlesource.com/exp;name=exp;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/golang.org/x/exp"
+
+# 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/mod v0.11.0
+# [1] git ls-remote https://go.googlesource.com/mod 62c7e578f1a7275d934c99dd48715525bd52b17e
+SRCREV_mod="62c7e578f1a7275d934c99dd48715525bd52b17e"
+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.3.0
+# [1] git ls-remote https://go.googlesource.com/sync 93782cc822b6b554cb7df40332fd010f0473cbc8
+SRCREV_sync="93782cc822b6b554cb7df40332fd010f0473cbc8"
+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.10.0
+# [1] git ls-remote https://go.googlesource.com/term edd9fb7f4aabf5aa4c7bca2146907778a2af0321
+SRCREV_x-term="edd9fb7f4aabf5aa4c7bca2146907778a2af0321"
+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.11.0
+# [1] git ls-remote https://go.googlesource.com/text e50348080f29449bcd6808c11400b3d45f08b09d
+SRCREV_text="e50348080f29449bcd6808c11400b3d45f08b09d"
+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.9.1
+# [1] git ls-remote https://go.googlesource.com/tools 4609d79b05b5ef86867bd70209b7077e22d30cb2
+SRCREV_tools="4609d79b05b5ef86867bd70209b7077e22d30cb2"
+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.11.0
+# [1] git ls-remote https://go.googlesource.com/crypto e98487292dcad4efaa6033b245ee014f90d177a2
+SRCREV_crypto="e98487292dcad4efaa6033b245ee014f90d177a2"
+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.5+incompatible
+# [1] git ls-remote https://github.com/docker/cli ced099660009713e0e845eeb754e6050dbaa45d0
+SRCREV_cli="ced099660009713e0e845eeb754e6050dbaa45d0"
+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.15.0
+# [1] git ls-remote https://github.com/fatih/color 12126ed593697635c525b302836b292b657ea573
+SRCREV_color="12126ed593697635c525b302836b292b657ea573"
+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.7.0
+# [1] git ls-remote https://github.com/spf13/cobra 4dd4b25de38418174a6e859e8a32eaccca32dccc
+SRCREV_cobra="4dd4b25de38418174a6e859e8a32eaccca32dccc"
+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.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/google/uuid v1.3.0
+# [1] git ls-remote https://github.com/google/uuid 44b5fee7c49cf3bcdf723f106b36d56ef13ccc88
+SRCREV_uuid="44b5fee7c49cf3bcdf723f106b36d56ef13ccc88"
+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.56.2
+# [1] git ls-remote https://github.com/grpc/grpc-go faab8736bf73291f92b867d5dae31c927d53d508
+SRCREV_grpc="faab8736bf73291f92b867d5dae31c927d53d508"
+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.2.4
+# [1] git ls-remote https://github.com/go-logr/logr 4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2
+SRCREV_logr="4da5305ff29a64c62f54ad43ebbfcb5e1b015fb2"
+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.5+incompatible
+# [1] git ls-remote https://github.com/moby/moby a61e2b4c9c5f7c241aeb37f389b4444aee26bea4
+SRCREV_docker="a61e2b4c9c5f7c241aeb37f389b4444aee26bea4"
+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.15.0
+# [1] git ls-remote https://github.com/tidwall/gjson 8d2c36ffa41368759c3bcb25b8790c8ce1e5562d
+SRCREV_gjson="8d2c36ffa41368759c3bcb25b8790c8ce1e5562d"
+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/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.5.9
+# [1] git ls-remote https://github.com/google/go-cmp a97318bf6562f2ed2632c5f985db51b1bc5bdcd0
+SRCREV_go-cmp="a97318bf6562f2ed2632c5f985db51b1bc5bdcd0"
+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.15.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go fc96138629cecdcc04dd5cb65559ead9e485d927
+SRCREV_otel="fc96138629cecdcc04dd5cb65559ead9e485d927"
+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/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/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.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/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/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/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/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/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"
+
+# google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1
+# [1] git ls-remote https://github.com/googleapis/go-genproto daa745c078e18def54ea6b63235554b59c97f01d
+SRCREV_genproto="daa745c078e18def54ea6b63235554b59c97f01d"
+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.5.1
+# [1] git ls-remote https://github.com/square/go-jose 3a5ee095dcb5030a9de84fb92c222ac652fff176
+SRCREV_go-jose.v2="3a5ee095dcb5030a9de84fb92c222ac652fff176"
+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/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.3
+# [1] git ls-remote https://github.com/vbatts/tar-split 3cdf99b6d45a47170f0092f1f3c0bbf2aca55db6
+SRCREV_tar-split="3cdf99b6d45a47170f0092f1f3c0bbf2aca55db6"
+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.10.0
+# [1] git ls-remote https://github.com/microsoft/hcsshim 28cce9cea720462e4b84498f9f79fdb836454ba0
+SRCREV_hcsshim="28cce9cea720462e4b84498f9f79fdb836454ba0"
+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/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/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/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.0
+# [1] git ls-remote https://github.com/minio/sha256-simd 6a57409d8e0fa3ae883aee331b71aaa40d5a7dd9
+SRCREV_sha256-simd="6a57409d8e0fa3ae883aee331b71aaa40d5a7dd9"
+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/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.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/coreos/go-iptables v0.6.0
+# [1] git ls-remote https://github.com/coreos/go-iptables 14d56d57c892f27a717aa6026fd2d3293221395b
+SRCREV_go-iptables="14d56d57c892f27a717aa6026fd2d3293221395b"
+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/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/frankban/quicktest v1.14.2
+# [1] git ls-remote https://github.com/frankban/quicktest 9f3c63cd6950868c53a96aa4bf4cda5ca1d2e857
+SRCREV_quicktest="9f3c63cd6950868c53a96aa4bf4cda5ca1d2e857"
+SRC_URI += "git://github.com/frankban/quicktest;name=quicktest;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/frankban/quicktest"
+
+# github.com/klauspost/compress v1.16.7
+# [1] git ls-remote https://github.com/klauspost/compress 67a538e2b4df11f8ec7139388838a13bce84b5d5
+SRCREV_compress="67a538e2b4df11f8ec7139388838a13bce84b5d5"
+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.1.1
+# [1] git ls-remote https://github.com/klauspost/cpuid 976c6486fb9f5d9ef7354ef9c2819b1ffcda73a9
+SRCREV_cpuid-v2="976c6486fb9f5d9ef7354ef9c2819b1ffcda73a9"
+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.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/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/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.7
+# [1] git ls-remote https://github.com/containers/ocicrypt ee4e19a2ec93f08262499bc9521c751f4a1d935c
+SRCREV_ocicrypt="ee4e19a2ec93f08262499bc9521c751f4a1d935c"
+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"
+
+# github.com/opencontainers/runc v1.1.7
+# [1] git ls-remote https://github.com/opencontainers/runc 860f061b76bb4fc671f0f9e900f7d80ff93d4eb7
+SRCREV_runc="860f061b76bb4fc671f0f9e900f7d80ff93d4eb7"
+SRC_URI += "git://github.com/opencontainers/runc;name=runc;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/opencontainers/runc"
+
+# go.opentelemetry.io/otel/trace v1.15.1
+# [1] git ls-remote https://github.com/open-telemetry/opentelemetry-go fc96138629cecdcc04dd5cb65559ead9e485d927
+SRCREV_trace="fc96138629cecdcc04dd5cb65559ead9e485d927"
+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/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"
+
+# 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.2
+# [1] git ls-remote https://github.com/containerd/cgroups 8fa64246e17ceea54277b3ad7139d9ec17545bfa
+SRCREV_cgroups-v3="8fa64246e17ceea54277b3ad7139d9ec17545bfa"
+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.3
+# [1] git ls-remote https://github.com/containerd/containerd 7880925980b188f4c97b462f709d0db8e8962aff
+SRCREV_containerd="7880925980b188f4c97b462f709d0db8e8962aff"
+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.1
+# [1] git ls-remote https://github.com/containerd/continuity 25762ef7c27a37645197ed6d1d708e55a230e35d
+SRCREV_continuity="25762ef7c27a37645197ed6d1d708e55a230e35d"
+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.4.0
+# [1] git ls-remote https://github.com/docker/go-connections 7395e3f8aa162843a74ed6d48e79627d9792ac55
+SRCREV_go-connections="7395e3f8aa162843a74ed6d48e79627d9792ac55"
+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.1.3
+# [1] git ls-remote https://github.com/fahedouch/go-logrotate 8d5cc0d08c8653a794ad7bfe7c4d8150b2179aa1
+SRCREV_go-logrotate="8d5cc0d08c8653a794ad7bfe7c4d8150b2179aa1"
+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/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.17.0
+# [1] git ls-remote https://github.com/compose-spec/compose-go 95ac1be8bfdc4dc21cdfb14e37b52c31275046a3
+SRCREV_compose-go="95ac1be8bfdc4dc21cdfb14e37b52c31275046a3"
+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.3.0
+# [1] git ls-remote https://github.com/awslabs/soci-snapshotter 2574f6466b4a148be04f8f79c6e71167994452a7
+SRCREV_soci-snapshotter="2574f6466b4a148be04f8f79c6e71167994452a7"
+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-rc4
+# [1] git ls-remote https://github.com/opencontainers/image-spec 82e8329f7eb6df5c62924f2792d285ba276ae876
+SRCREV_image-spec="82e8329f7eb6df5c62924f2792d285ba276ae876"
+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-20230106234847-43070de90fa1
+# [1] git ls-remote https://github.com/AdaLogics/go-fuzz-headers 43070de90fa134c9ea55cd6de4308a2ae59658d3
+SRCREV_go-fuzz-headers="43070de90fa134c9ea55cd6de4308a2ae59658d3"
+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.8.0
+# [1] git ls-remote https://github.com/multiformats/go-multiaddr f317559337171436148d927749f783f33b82a698
+SRCREV_go-multiaddr="f317559337171436148d927749f783f33b82a698"
+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.3
+# [1] git ls-remote https://github.com/cyphar/filepath-securejoin 8f267f5ea675a20a2cb5e91011d063721f53bf79
+SRCREV_filepath-securejoin="8f267f5ea675a20a2cb5e91011d063721f53bf79"
+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.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/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.1.0
+# [1] git ls-remote https://github.com/opencontainers/runtime-spec 06252546d1cabcd924a5fb3cb0177178d5e3082f
+SRCREV_runtime-spec="06252546d1cabcd924a5fb3cb0177178d5e3082f"
+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.10.0
+# [1] git ls-remote https://github.com/containerd/nydus-snapshotter 8ca9591ac87cd816783d58ce0c07f6747b9f1282
+SRCREV_nydus-snapshotter="8ca9591ac87cd816783d58ce0c07f6747b9f1282"
+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/distribution/distribution/v3 v3.0.0-20230214150026-36d8c594d7aa
+# [1] git ls-remote https://github.com/distribution/distribution 36d8c594d7aa4fb0b9b927fb1edf4171b36f361b
+SRCREV_distribution-v3="36d8c594d7aa4fb0b9b927fb1edf4171b36f361b"
+SRC_URI += "git://github.com/distribution/distribution;name=distribution-v3;protocol=https;nobranch=1;destsuffix=${WORKDIR}/${BP}/src/import/vendor.fetch/github.com/distribution/distribution/v3"
+
+# github.com/containerd/stargz-snapshotter v0.14.3
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 6ee6fa1a88df6ea098f6b7dddde29e33f09d5331
+SRCREV_stargz-snapshotter="6ee6fa1a88df6ea098f6b7dddde29e33f09d5331"
+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/rootless-containers/rootlesskit v1.1.1
+# [1] git ls-remote https://github.com/rootless-containers/rootlesskit a2c596ff9b3fddc0c2becb38f2ef4004f15765b5
+SRCREV_rootlesskit="a2c596ff9b3fddc0c2becb38f2ef4004f15765b5"
+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/rootless-containers/bypass4netns v0.3.0
+# [1] git ls-remote https://github.com/rootless-containers/bypass4netns 8175487972621850933a7bd6c6924a16569ba435
+SRCREV_bypass4netns="8175487972621850933a7bd6c6924a16569ba435"
+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.14.3
+# [1] git ls-remote https://github.com/containerd/stargz-snapshotter 6ee6fa1a88df6ea098f6b7dddde29e33f09d5331
+SRCREV_ipfs="6ee6fa1a88df6ea098f6b7dddde29e33f09d5331"
+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/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/containerd/accelerated-container-image v0.6.7
+# [1] git ls-remote https://github.com/containerd/accelerated-container-image aabf505074e0a31879bf004ec400c659ff046b70
+SRCREV_accelerated-container-image="aabf505074e0a31879bf004ec400c659ff046b70"
+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"
+
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..36435e30
--- /dev/null
+++ b/recipes-containers/netavark/netavark-crates.inc
@@ -0,0 +1,538 @@
+# 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.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.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.31 \
+ 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/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_logger/0.10.1 \
+ crate://crates.io/equivalent/1.0.1 \
+ crate://crates.io/errno/0.3.7 \
+ 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.29 \
+ crate://crates.io/futures-core/0.3.29 \
+ crate://crates.io/futures-executor/0.3.29 \
+ crate://crates.io/futures-io/0.3.29 \
+ crate://crates.io/futures-lite/1.13.0 \
+ crate://crates.io/futures-lite/2.0.1 \
+ crate://crates.io/futures-macro/0.3.29 \
+ crate://crates.io/futures-sink/0.3.29 \
+ crate://crates.io/futures-task/0.3.29 \
+ crate://crates.io/futures-util/0.3.29 \
+ 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.22 \
+ 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/is-terminal/0.4.9 \
+ 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.17.1 \
+ 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/nispor/1.2.15 \
+ 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.69 \
+ 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.33 \
+ 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.25 \
+ 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.193 \
+ crate://crates.io/serde-value/0.7.0 \
+ crate://crates.io/serde_derive/1.0.193 \
+ crate://crates.io/serde_json/1.0.108 \
+ 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/syn/1.0.109 \
+ crate://crates.io/syn/2.0.39 \
+ crate://crates.io/sync_wrapper/0.1.2 \
+ crate://crates.io/sysctl/0.5.5 \
+ crate://crates.io/tempfile/3.8.1 \
+ crate://crates.io/termcolor/1.4.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-targets/0.48.5 \
+ crate://crates.io/windows_aarch64_gnullvm/0.48.5 \
+ crate://crates.io/windows_aarch64_msvc/0.48.5 \
+ crate://crates.io/windows_i686_gnu/0.48.5 \
+ crate://crates.io/windows_i686_msvc/0.48.5 \
+ crate://crates.io/windows_x86_64_gnu/0.48.5 \
+ crate://crates.io/windows_x86_64_gnullvm/0.48.5 \
+ crate://crates.io/windows_x86_64_msvc/0.48.5 \
+ 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.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.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.31.sha256sum] = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38"
+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[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_logger-0.10.1.sha256sum] = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece"
+SRC_URI[equivalent-1.0.1.sha256sum] = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
+SRC_URI[errno-0.3.7.sha256sum] = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8"
+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.29.sha256sum] = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb"
+SRC_URI[futures-core-0.3.29.sha256sum] = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c"
+SRC_URI[futures-executor-0.3.29.sha256sum] = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc"
+SRC_URI[futures-io-0.3.29.sha256sum] = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa"
+SRC_URI[futures-lite-1.13.0.sha256sum] = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
+SRC_URI[futures-lite-2.0.1.sha256sum] = "d3831c2651acb5177cbd83943f3d9c8912c5ad03c76afcc0e9511ba568ec5ebb"
+SRC_URI[futures-macro-0.3.29.sha256sum] = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb"
+SRC_URI[futures-sink-0.3.29.sha256sum] = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817"
+SRC_URI[futures-task-0.3.29.sha256sum] = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2"
+SRC_URI[futures-util-0.3.29.sha256sum] = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104"
+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.22.sha256sum] = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178"
+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[is-terminal-0.4.9.sha256sum] = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
+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.17.1.sha256sum] = "053998cea5a306971f88580d0829e90f270f940befd7cf928da179d4187a5a66"
+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[nispor-1.2.15.sha256sum] = "1b7611344f5b567ae02ddb7e8c9029f9ca5c049cc5d227613ab8b72b876379c7"
+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.69.sha256sum] = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da"
+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.33.sha256sum] = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
+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.25.sha256sum] = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e"
+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.193.sha256sum] = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
+SRC_URI[serde-value-0.7.0.sha256sum] = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
+SRC_URI[serde_derive-1.0.193.sha256sum] = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
+SRC_URI[serde_json-1.0.108.sha256sum] = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
+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[syn-1.0.109.sha256sum] = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
+SRC_URI[syn-2.0.39.sha256sum] = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
+SRC_URI[sync_wrapper-0.1.2.sha256sum] = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
+SRC_URI[sysctl-0.5.5.sha256sum] = "ec7dddc5f0fee506baf8b9fdb989e242f17e4b11c61dfbb0635b705217199eea"
+SRC_URI[tempfile-3.8.1.sha256sum] = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5"
+SRC_URI[termcolor-1.4.0.sha256sum] = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449"
+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-targets-0.48.5.sha256sum] = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
+SRC_URI[windows_aarch64_gnullvm-0.48.5.sha256sum] = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
+SRC_URI[windows_aarch64_msvc-0.48.5.sha256sum] = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
+SRC_URI[windows_i686_gnu-0.48.5.sha256sum] = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
+SRC_URI[windows_i686_msvc-0.48.5.sha256sum] = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
+SRC_URI[windows_x86_64_gnu-0.48.5.sha256sum] = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
+SRC_URI[windows_x86_64_gnullvm-0.48.5.sha256sum] = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
+SRC_URI[windows_x86_64_msvc-0.48.5.sha256sum] = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
+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.9.0.bb b/recipes-containers/netavark/netavark_1.9.0.bb
new file mode 100644
index 00000000..5249acee
--- /dev/null
+++ b/recipes-containers/netavark/netavark_1.9.0.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 = "167e2e4f167cadc635bbacb5331674b67787d08e"
+
+# 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;nobranch=1 \
+ 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..b925a2a7 100644
--- a/recipes-containers/oci-image-tools/oci-image-tools_git.bb
+++ b/recipes-containers/oci-image-tools/oci-image-tools_git.bb
@@ -1,7 +1,7 @@
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"
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
DEPENDS = "\
oci-image-spec \
@@ -12,12 +12,12 @@ DEPENDS = "\
spf13-pflag \
"
-SRC_URI = "git://github.com/opencontainers/image-tools.git \
+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 +27,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
index fedfad37..06db99fd 100644
--- 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
@@ -3,29 +3,28 @@ 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/src/import/Makefile | 4 ++--
+ a/Makefile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
-diff --git a/src/import/Makefile a/src/import/Makefile
-index 77626d2..c3a0760 100644
---- a/src/import/Makefile
-+++ a/src/import/Makefile
-@@ -8,11 +8,11 @@ COMMIT=$(shell git rev-parse HEAD 2> /dev/null || true)
- all: tool runtimetest
+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 -tags "$(BUILDTAGS)" -ldflags "-X main.gitCommit=${COMMIT}" -o oci-runtime-tool ./cmd/oci-runtime-tool
-+ ${GO} build -tags "$(BUILDTAGS)" -ldflags "-X main.gitCommit=${COMMIT}" -o oci-runtime-tool ./cmd/oci-runtime-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:
-- CGO_ENABLED=0 go build -installsuffix cgo -tags "$(BUILDTAGS)" -o runtimetest ./cmd/runtimetest
-+ CGO_ENABLED=0 ${GO} build -installsuffix cgo -tags "$(BUILDTAGS)" -o runtimetest ./cmd/runtimetest
+- go build $(STATIC_BUILD_FLAGS) -o runtimetest ./cmd/runtimetest
++ ${GO} build $(STATIC_BUILD_FLAGS) -o runtimetest ./cmd/runtimetest
.PHONY: man
man:
---
-2.19.1
-
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 a0ccb85c..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,52 +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..90c196c8
--- /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 = "c545dbd7220c2d85a0e92371f0e240d2c8b7c836"
+SRCREV_storage = "246ba3062e8b551026aef2708eee747014ce5c52"
+SRC_URI = " \
+ git://github.com/containers/podman-tui;protocol=https;name=podmantui;branch=release-v0.14 \
+"
+# 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.14;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.14.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 af94f0c4..33d437a3 100644
--- a/recipes-containers/podman/podman_git.bb
+++ b/recipes-containers/podman/podman_git.bb
@@ -6,37 +6,35 @@ 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 = "a11c4ead10177a66ef2810a0a92ea8ce2299da07"
+SRCREV = "0ec4c8b1d7d6fc273d50064f87a6c0b2d269fdcd"
SRC_URI = " \
- git://github.com/containers/libpod.git;branch=v2.0 \
+ git://github.com/containers/libpod.git;branch=v4.8;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 = "2.0.1+git${SRCPV}"
+PV = "4.8.2+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"
@@ -48,8 +46,14 @@ exclude_graphdriver_btrfs exclude_graphdriver_devicemapper"
# 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"
@@ -78,8 +82,6 @@ do_compile() {
cd ${S}/src/.gopath/src/"${PODMAN_PKG}"
- oe_runmake pkg/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}
@@ -87,7 +89,11 @@ 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() {
@@ -101,23 +107,61 @@ do_install() {
if ${@bb.utils.contains('PACKAGECONFIG', 'docker', 'true', 'false', d)}; then
oe_runmake install.docker DESTDIR="${D}"
fi
- if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
- install -d ${D}${systemd_unitdir}/system
- install -m 644 ${S}/src/import/contrib/systemd/system/podman.service ${D}/${systemd_unitdir}/system
- install -m 644 ${S}/src/import/contrib/systemd/system/podman.socket ${D}/${systemd_unitdir}/system
- rm -f ${D}/${systemd_unitdir}/system/docker.service.rpm
+
+ # 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
}
-FILES_${PN} += " \
+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} += " \
${systemd_unitdir}/system/* \
+ ${nonarch_libdir}/systemd/* \
${systemd_unitdir}/user/* \
${nonarch_libdir}/tmpfiles.d/* \
+ ${datadir}/user-tmpfiles.d/* \
${sysconfdir}/cni \
"
-SYSTEMD_SERVICE_${PN} = "podman.service podman.socket"
+SYSTEMD_SERVICE:${PN} = "podman.service podman.socket"
-RDEPENDS_${PN} += "conmon virtual/runc iptables cni skopeo"
-RRECOMMENDS_${PN} += "slirp4netns"
-RCONFLICTS_${PN} = "${@bb.utils.contains('PACKAGECONFIG', 'docker', 'docker', '', d)}"
+# 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"
+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
index 8098562e..9c6c124c 100644
--- 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
@@ -3,26 +3,28 @@ 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/src/import/Makefile | 10 +++++-----
+ git/Makefile | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
-diff --git git/src/import/Makefile git/src/import/Makefile
+diff --git git/Makefile git/Makefile
index c6976af..f3c8d17 100644
---- git/src/import/Makefile
-+++ git/src/import/Makefile
+--- 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 -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 -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 "+ $@"
diff --git a/recipes-containers/riddler/riddler_git.bb b/recipes-containers/riddler/riddler_git.bb
index 8f71649b..2b2902b5 100644
--- a/recipes-containers/riddler/riddler_git.bb
+++ b/recipes-containers/riddler/riddler_git.bb
@@ -1,24 +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 \
+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 \
"
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.
@@ -26,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..a2ce157a 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 = "26a98ea20ee1e946f07fc8a9ba9f11b84b39e4a0"
+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.9"
+
+CVE_PRODUCT = "runc"
diff --git a/recipes-containers/runc/runc-opencontainers_git.bb b/recipes-containers/runc/runc-opencontainers_git.bb
index 3a7e7aaf..61e7cfa6 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 = "f3446b1e5fe75bf419c808d8705c899ab4968b6e"
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.10"
+
+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
index dbfe06e4..5af21719 100644
--- a/recipes-containers/singularity/singularity/0001-Use-python3.patch
+++ b/recipes-containers/singularity/singularity/0001-Use-python3.patch
@@ -8,6 +8,8 @@ Subject: [PATCH] Use python3
| 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 +++---
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 103270dd..72171b39 100644
--- a/recipes-containers/singularity/singularity_git.bb
+++ b/recipes-containers/singularity/singularity_git.bb
@@ -1,19 +1,20 @@
# 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"
+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 \
+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${SRCPV}"
+PV = "2.3.1+git"
SRCREV = "e214d4ebf0a1274b1c63b095fd55ae61c7e92947"
S = "${WORKDIR}/git"
@@ -21,7 +22,7 @@ S = "${WORKDIR}/git"
inherit python3native autotools-brokensep
EXTRA_OECONF = "--prefix=/usr/local"
-pkg_postinst_${PN}() {
+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..ada89dba 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=main;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 = "a85eaac984be2e36fe14590e4c3c135775f6c393"
+PV = "v1.14.0+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/0001-sloci-image-fix-variant-quoting.patch b/recipes-containers/sloci-image/sloci-image/0001-sloci-image-fix-variant-quoting.patch
index 5cb35830..85aa6205 100644
--- 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
@@ -11,6 +11,8 @@ 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 ++-
diff --git a/recipes-containers/sloci-image/sloci-image-native_git.bb b/recipes-containers/sloci-image/sloci-image_git.bb
index b3b11bd9..4bbf06e2 100644
--- a/recipes-containers/sloci-image/sloci-image-native_git.bb
+++ b/recipes-containers/sloci-image/sloci-image_git.bb
@@ -1,7 +1,7 @@
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 \
+SRC_URI = "git://github.com/jirutka/sloci-image.git;branch=master;protocol=https \
file://0001-sloci-image-fix-variant-quoting.patch \
"
@@ -9,9 +9,7 @@ SRC_URI = "git://github.com/jirutka/sloci-image.git \
DEPENDS = ""
SRCREV = "4015e49763e5a738026a5bbfcf32b38b5a4fa650"
-PV = "v0.1.0+git${SRCPV}"
-
-inherit native
+PV = "v0.1.0+git"
S = "${WORKDIR}/git"
@@ -23,3 +21,7 @@ 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..dc63b2aa 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() {
+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
}
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_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
index d4b1e6cc..566cd6d5 100644
--- a/recipes-core/busybox/busybox_vmsep.inc
+++ b/recipes-core/busybox/busybox_vmsep.inc
@@ -1,4 +1,4 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/busybox:"
+FILESEXTRAPATHS:prepend := "${THISDIR}/busybox:"
SRC_URI += " \
file://static.cfg \
"
diff --git a/recipes-core/initscripts/initscripts_virtualization.inc b/recipes-core/initscripts/initscripts_virtualization.inc
index 0600ab2a..db9c5535 100644
--- a/recipes-core/initscripts/initscripts_virtualization.inc
+++ b/recipes-core/initscripts/initscripts_virtualization.inc
@@ -1,4 +1,4 @@
-do_install_append() {
+do_install:append() {
echo >> ${D}${sysconfdir}/init.d/functions
echo success \(\) \{ >> ${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
index 0b4fbb3d..55e453d9 100644
--- a/recipes-core/libxcrypt/libxcrypt_%.bbappend
+++ b/recipes-core/libxcrypt/libxcrypt_%.bbappend
@@ -1,4 +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)}"
+# 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-initrd-cross-install-tweaks.patch b/recipes-core/runx/runx/0001-make-initrd-cross-install-tweaks.patch
deleted file mode 100644
index 43c621e0..00000000
--- a/recipes-core/runx/runx/0001-make-initrd-cross-install-tweaks.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From d8bd5749e6fc6e0c86a8720044ec78167bab3569 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@xilinx.com>
-Date: Mon, 16 Dec 2019 22:03:14 -0800
-Subject: [PATCH] make-initrd: cross install tweaks
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@xilinx.com>
----
- kernel/make-initrd | 18 ++++++++++++++++--
- 1 file changed, 16 insertions(+), 2 deletions(-)
-
-Index: git/initrd/make-initrd
-===================================================================
---- git.orig/initrd/make-initrd
-+++ git/initrd/make-initrd
-@@ -23,8 +23,22 @@
- mkdir -p $tmpdir/lib
- mkdir -p $tmpdir/var
- mkdir -p $tmpdir/mnt
--cp "$busybox" $tmpdir/bin/busybox
--$tmpdir/bin/busybox --install $tmpdir/bin
-+
-+
-+if [ -z "$BUSYBOX" ]; then
-+ BUSYBOX=`which busybox`
-+fi
-+cp $BUSYBOX $tmpdir/bin
-+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, no binary symlinks will be available"
-+ fi
-+else
-+ $tmpdir/bin/busybox --install $tmpdir/bin
-+fi
-
- mkdir -p $tmpdir/etc/init.d
- cp $init $tmpdir/etc/init.d/rcS
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
index 2821b61b..798f616a 100644
--- a/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch
+++ b/recipes-core/runx/runx/0001-make-kernel-cross-compilation-tweaks.patch
@@ -3,6 +3,8 @@ 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 +++++++++++++++++++++++++++++++++--------
diff --git a/recipes-core/runx/runx_git.bb b/recipes-core/runx/runx_git.bb
index 991e6e1f..831360ba 100644
--- a/recipes-core/runx/runx_git.bb
+++ b/recipes-core/runx/runx_git.bb
@@ -2,13 +2,19 @@ HOMEPAGE = "https://github.com/lf-edge/runx"
SUMMARY = "runx stuff"
DESCRIPTION = "Xen Runtime for OCI"
-SRCREV_runx = "f24efd33fb18469e9cfe4d1bfe8e2c90ec8c4e93"
+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 \
- https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.tar.xz;destsuffix=git/kernel/build \
+ 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-initrd-cross-install-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"
@@ -16,7 +22,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=945fc9aa694796a6337395cc291ddd8c"
S = "${WORKDIR}/git"
-PV = "0.1-git${SRCREV_runx}"
+PV = "v1.0-git${SRCREV_runx}"
inherit features_check
REQUIRED_DISTRO_FEATURES = "vmsep"
@@ -27,14 +33,19 @@ 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 go-build"
+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} += " 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
@@ -45,12 +56,12 @@ do_compile() {
# building.
mkdir -p ${S}/kernel/build
mkdir -p ${S}/kernel/src
- cp ${DL_DIR}/linux-4.15.tar.xz ${S}/kernel/build/
+ 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}/linux-4.15 ${S}/kernel/src/
+ # ln -sf ${WORKDIR}/${KERNEL_SRC_VER} ${S}/kernel/src/
# build the kernel
echo "[INFO]: runx: building the kernel"
@@ -71,12 +82,23 @@ do_compile() {
${S}/kernel/make-kernel
# construct the initrd
- echo "[INFO]: runx: constructing the initrd"
-
- cp ${STAGING_DIR_HOST}/bin/busybox.nosuid ${WORKDIR}/busybox
- export QEMU_USER=`which qemu-${HOST_ARCH}`
- export BUSYBOX="${WORKDIR}/busybox"
- export CROSS_COMPILE="t"
+ 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
}
@@ -98,7 +120,7 @@ do_install() {
deltask compile_ptest_base
-FILES_${PN} += "${bindir}/* ${datadir}/runX/*"
+FILES:${PN} += "${bindir}/* ${datadir}/runX/*"
INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
+INSANE_SKIP:${PN} += "ldflags already-stripped"
diff --git a/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend b/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
index 4b3c020b..1705cbc4 100644
--- a/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
+++ b/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
@@ -1,11 +1,2 @@
require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'sysvinit-inittab_xen.inc', '', d)}
-
-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"
+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 de0af20b..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:${base_sbindir}/getty-wrapper 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
index e057b6d7..75ea40a8 100644
--- a/recipes-devtools/go/go-build_git.bb
+++ b/recipes-devtools/go/go-build_git.bb
@@ -2,12 +2,14 @@ HOMEPAGE = "https://github.com/lf-edge/runx"
SUMMARY = "console for runx"
DESCRIPTION = "Xen Runtime for OCI"
-SRCREV_runx = "da0c75c58ae5232d19b1791c33545db3225e1ea9"
-SRCREV_runc = "e4363b038787addfa12e8b0acf5417d4fba01693"
+SRCREV_runx = "f24efd33fb18469e9cfe4d1bfe8e2c90ec8c4e93"
+SRCREV_runc = "1e7bb5b773162b57333d57f612fd72e3f8612d94"
+SRCREV_FORMAT = "runx_runc"
SRC_URI = "\
- git://github.com/lf-edge/runx;nobranch=1;name=runx \
- git://github.com/opencontainers/runc.git;nobranch=1;destsuffix=runc;name=runc \
+ 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"
@@ -27,24 +29,33 @@ inherit pkgconfig
GO_IMPORT = "import"
inherit go
-RDEPENDS_${PN}-dev = "bash"
+RDEPENDS:${PN}-dev = "bash"
do_compile() {
export GOARCH="${TARGET_GOARCH}"
cd ${S}/src/import/gobuild
- mkdir -p go/src/github.com/opencontainers
- ln -s ${WORKDIR}/runc ${S}/src/import/gobuild/go/src/github.com/opencontainers/runc
- export GOPATH="${S}/src/import/gobuild/go/src/github.com/opencontainers/runc"
- oe_runmake
+
+ # 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/
- install -m 755 ${B}/src/import/gobuild/recvtty ${D}${datadir}/runX/
-
}
-FILES_${PN} += "${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..e01a83d1 100644
--- a/recipes-devtools/go/go-capability_git.bb
+++ b/recipes-devtools/go/go-capability_git.bb
@@ -7,10 +7,10 @@ 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"
S = "${WORKDIR}/git"
@@ -26,4 +26,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..affe38ec 100644
--- a/recipes-devtools/go/go-cli_git.bb
+++ b/recipes-devtools/go/go-cli_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -26,4 +26,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..7e8f020d 100644
--- a/recipes-devtools/go/go-connections_git.bb
+++ b/recipes-devtools/go/go-connections_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -36,4 +36,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..580463d3 100644
--- a/recipes-devtools/go/go-context_git.bb
+++ b/recipes-devtools/go/go-context_git.bb
@@ -2,17 +2,21 @@ 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"
+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 +29,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..49b2de3b 100644
--- a/recipes-devtools/go/go-dbus_git.bb
+++ b/recipes-devtools/go/go-dbus_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -26,4 +26,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..dd98a317 100644
--- a/recipes-devtools/go/go-distribution_git.bb
+++ b/recipes-devtools/go/go-distribution_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -36,4 +36,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..052658b8 100644
--- a/recipes-devtools/go/go-fsnotify_git.bb
+++ b/recipes-devtools/go/go-fsnotify_git.bb
@@ -2,15 +2,15 @@ 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"
@@ -26,4 +26,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..c578008a 100644
--- a/recipes-devtools/go/go-libtrust_git.bb
+++ b/recipes-devtools/go/go-libtrust_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -26,4 +26,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..211d07c9 100644
--- a/recipes-devtools/go/go-logrus_git.bb
+++ b/recipes-devtools/go/go-logrus_git.bb
@@ -6,11 +6,11 @@ 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"
@@ -26,4 +26,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..0d69fc58 100644
--- a/recipes-devtools/go/go-mux_git.bb
+++ b/recipes-devtools/go/go-mux_git.bb
@@ -2,17 +2,20 @@ 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"
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 +28,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..0a3c3f35 100644
--- a/recipes-devtools/go/go-patricia_git.bb
+++ b/recipes-devtools/go/go-patricia_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -26,4 +26,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 02cef69e..132e82d1 100644
--- a/recipes-devtools/go/go-pty_git.bb
+++ b/recipes-devtools/go/go-pty_git.bb
@@ -7,7 +7,7 @@ LIC_FILES_CHKSUM = "file://License;md5=93958070863d769117fa33b129020050"
SRCNAME = "pty"
PKG_NAME = "github.com/creack/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
+SRC_URI = "git://${PKG_NAME}.git;branch=master;protocol=https"
SRCREV = "05017fcccf23c823bfdea560dcc958a136e54fb7"
@@ -25,4 +25,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..3aa837aa 100644
--- a/recipes-devtools/go/go-systemd_git.bb
+++ b/recipes-devtools/go/go-systemd_git.bb
@@ -7,12 +7,12 @@ 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"
@@ -28,4 +28,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..1b877d62 100644
--- a/recipes-devtools/go/notary_git.bb
+++ b/recipes-devtools/go/notary_git.bb
@@ -7,10 +7,10 @@ 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"
@@ -36,4 +36,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/python-websocket-client.inc b/recipes-devtools/python/python-websocket-client.inc
deleted file mode 100644
index 8604dcbb..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=c4c4a98fbc4836b81c8c64d6ecb01fc1"
-
-inherit pypi
-
-PYPI_PACKAGE = "websocket_client"
-
-SRC_URI[md5sum] = "8061820da5e1de26a6a1a6996d4eebd5"
-SRC_URI[sha256sum] = "d735b91d6d1692a6a181f2a8c9e0238e5f6373356f561bb9dc4c7af36f452010"
diff --git a/recipes-devtools/python/python3-boto3_1.14.7.bb b/recipes-devtools/python/python3-boto3_1.17.51.bb
index f9e979e8..9c94a34d 100644
--- a/recipes-devtools/python/python3-boto3_1.14.7.bb
+++ b/recipes-devtools/python/python3-boto3_1.17.51.bb
@@ -9,7 +9,8 @@ SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93"
-SRC_URI[md5sum] = "fb8b77d4ac10a971570419dd3613196e"
-SRC_URI[sha256sum] = "4856c8cb4150b900cc7dccbdf16f542fb8c12e97b17639979e58760847f7cf35"
+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_3.6.1.bb b/recipes-devtools/python/python3-bugsnag_4.1.0.bb
index 32385798..595cc8c7 100644
--- a/recipes-devtools/python/python3-bugsnag_3.6.1.bb
+++ b/recipes-devtools/python/python3-bugsnag_4.1.0.bb
@@ -8,10 +8,9 @@ DESCRIPTION = "\
"
SECTION = "devel/python"
LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=3bc101ebc0815bd849021892cd333dd4"
+LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
-SRC_URI[md5sum] = "93443091b052130cfe1daf7595249f9f"
-SRC_URI[sha256sum] = "8878437aa44ec485cecb255742035b3b98a6c7e7d167a943b5fbe597b2f8f7f9"
+SRC_URI[sha256sum] = "dcbd59cd9edea26cc92efb6518aed83a2f356f81bfd5acc730bfe202fb27c1c1"
inherit pypi setuptools3
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_4.2.1.bb b/recipes-devtools/python/python3-docker_4.2.1.bb
deleted file mode 100644
index 32b24eb3..00000000
--- a/recipes-devtools/python/python3-docker_4.2.1.bb
+++ /dev/null
@@ -1,19 +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] = "65111a1e4a2ab83d2ba104cdb17f1326"
-SRC_URI[sha256sum] = "380a20d38fbfaa872e96ee4d0d23ad9beb0f9ed57ff1c30653cbeb0c9c0964f2"
-
-DEPENDS += "${PYTHON_PN}-pip-native"
-
-RDEPENDS_${PN} += " \
- ${PYTHON_PN}-misc \
- ${PYTHON_PN}-six \
- ${PYTHON_PN}-docker-pycreds \
- ${PYTHON_PN}-requests \
- ${PYTHON_PN}-websocket-client \
-"
-
-inherit pypi setuptools3
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 cde2d128..e4aa0321 100644
--- a/recipes-devtools/python/python3-dockerpty_0.4.1.bb
+++ b/recipes-devtools/python/python3-dockerpty_0.4.1.bb
@@ -8,9 +8,9 @@ inherit pypi setuptools3
SRC_URI[md5sum] = "028bacb34536f3ee6a2ccd668c27e8e4"
SRC_URI[sha256sum] = "69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce"
-RDEPENDS_${PN} += "\
- ${PYTHON_PN}-fcntl \
- ${PYTHON_PN}-io \
- ${PYTHON_PN}-six \
- ${PYTHON_PN}-terminal \
+RDEPENDS:${PN} += "\
+ python3-fcntl \
+ python3-io \
+ python3-six \
+ python3-terminal \
"
diff --git a/recipes-devtools/python/python3-dotenv_0.13.0.bb b/recipes-devtools/python/python3-dotenv_0.17.0.bb
index e7644cb8..1fd13b70 100644
--- a/recipes-devtools/python/python3-dotenv_0.13.0.bb
+++ b/recipes-devtools/python/python3-dotenv_0.17.0.bb
@@ -7,7 +7,6 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=55ee2c3471d386636a719c8ccac40b31"
PYPI_PACKAGE = "python-dotenv"
-SRC_URI[md5sum] = "3dfde58c6a5fbd41292c4039a68f70f4"
-SRC_URI[sha256sum] = "3b9909bc96b0edc6b01586e1eed05e71174ef4e04c71da5786370cebea53ad74"
+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
index 53bed187..390a5080 100644
--- a/recipes-devtools/python/python3-fastentrypoints_0.12.bb
+++ b/recipes-devtools/python/python3-fastentrypoints_0.12.bb
@@ -12,7 +12,7 @@ LIC_FILES_CHKSUM = "file://README.rst;md5=f212a0cb34eb678477972d2011fb365a"
inherit pypi setuptools3
-RDEPENDS_${PN} += "${PYTHON_PN}-setuptools ${PYTHON_PN}-pickle"
+RDEPENDS:${PN} += "python3-setuptools python3-pickle"
SRC_URI[md5sum] = "390ad9a9229164a06156a5b1f0ef1b22"
SRC_URI[sha256sum] = "ff284f1469bd65400599807d2c6284d5b251398e6e28811f5f77fd262292410b"
diff --git a/recipes-devtools/python/python3-flask-cors_3.0.8.bb b/recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb
index aac7152f..2b2e2ce6 100644
--- a/recipes-devtools/python/python3-flask-cors_3.0.8.bb
+++ b/recipes-devtools/python/python3-flask-cors-virt_3.0.10.bb
@@ -11,7 +11,6 @@ DEPENDS += "python3-six python3-flask"
PYPI_PACKAGE = "Flask-Cors"
-SRC_URI[md5sum] = "551cc4c0305a171d28caa2b3bc838867"
-SRC_URI[sha256sum] = "72170423eb4612f0847318afff8c247b38bd516b7737adfc10d1c2cdbb382d16"
+SRC_URI[sha256sum] = "b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de"
inherit pypi setuptools3
diff --git a/recipes-devtools/python/python3-nacl_1.3.0.bb b/recipes-devtools/python/python3-nacl_1.3.0.bb
deleted file mode 100644
index d0a99aef..00000000
--- a/recipes-devtools/python/python3-nacl_1.3.0.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-SUMMARY = "Python binding to the Networking and Cryptography (NaCl) library"
-HOMEPAGE = "https://github.com/pyca/pynacl"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8cc789b082b3d97e1ccc5261f8594d3f"
-
-PYPI_PACKAGE = "PyNaCl"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "3f3b1272287bc2de8efd8a5fa18bf728"
-SRC_URI[sha256sum] = "0c6100edd16fefd1557da078c7a31e7b7d7a52ce39fdca2bec29d4f7b6e7600c"
-
-DEPENDS += "\
- libsodium \
- python3-cffi-native \
- python3-pip-native \
-"
-
-RDEPENDS_${PN}_class-target += " \
- python3-cffi \
- python3-pycparser \
-"
-
-export SODIUM_INSTALL = "system"
-
-BBCLASSEXTEND = "native"
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/python3-newrelic_5.14.1.144.bb b/recipes-devtools/python/python3-newrelic_6.2.0.156.bb
index 42e87d33..62371f60 100644
--- a/recipes-devtools/python/python3-newrelic_5.14.1.144.bb
+++ b/recipes-devtools/python/python3-newrelic_6.2.0.156.bb
@@ -6,14 +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=b4840908dbb9e62b3d8891e77187b34f"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=2b42edef8fa55315f34f2370b4715ca9"
-SRC_URI[md5sum] = "53115aea6cbdf0e2721279c230230600"
-SRC_URI[sha256sum] = "340ebcdb0dd08bfb597c71598d6d8f746a93f7e4921f10b3616c9142c608a14d"
+SRC_URI[sha256sum] = "3dec4647de67609570c4e305f2b6432a00e0a0940a7ac69660ee92268b49d6e7"
inherit pypi setuptools3
-FILES_${PN}-dbg += "\
+DEPENDS += "python3-setuptools-scm-native"
+
+SRC_URI += "file://0001-setup.py-tweak-setuptools_scm-version-dependency.patch"
+
+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-paramiko_2.7.0.bb b/recipes-devtools/python/python3-paramiko_2.7.0.bb
deleted file mode 100644
index d03702cf..00000000
--- a/recipes-devtools/python/python3-paramiko_2.7.0.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-SUMMARY = "Python module that implements the SSH2 protocol"
-HOMEPAGE = "https://github.com/paramiko/paramiko"
-LICENSE = "LGPLv2.1"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fd0120fc2e9f841c73ac707a30389af5"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "b130f3e1c3442d21c1a0c9ae17776f4e"
-SRC_URI[sha256sum] = "fba9c46340e3d690ad5a9d0dbf06677cd91425de3afa7e9c0c187298ee4ddd0d"
-
-RDEPENDS_${PN} += " \
- python3-bcrypt \
- python3-cryptography \
- python3-pyasn1 \
- python3-nacl \
-"
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/python3-webob_1.8.5.bb b/recipes-devtools/python/python3-webob_1.8.7.bb
index 74a36e39..d23ddfd2 100644
--- a/recipes-devtools/python/python3-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 setuptools3 pypi
-RDEPENDS_${PN} += " \
+RDEPENDS:${PN} += " \
python3-sphinx \
"
diff --git a/recipes-devtools/python/python3-websocket-client_0.57.0.bb b/recipes-devtools/python/python3-websocket-client_0.57.0.bb
deleted file mode 100644
index 473e31ff..00000000
--- a/recipes-devtools/python/python3-websocket-client_0.57.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/python3_3.%.bbappend b/recipes-devtools/python/python3_3.%.bbappend
deleted file mode 100644
index 617caccb..00000000
--- a/recipes-devtools/python/python3_3.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/recipes-devtools/python/python3_virtualization.inc b/recipes-devtools/python/python3_virtualization.inc
deleted file mode 100644
index 55301c7e..00000000
--- a/recipes-devtools/python/python3_virtualization.inc
+++ /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
index 2dec440b..7671d84e 100644
--- a/recipes-devtools/qemu/qemu-package-split.inc
+++ b/recipes-devtools/qemu/qemu-package-split.inc
@@ -1,4 +1,10 @@
-PACKAGES_prepend_class-target = "${PN}-x86_64 \
+# 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 \
@@ -9,38 +15,57 @@ PACKAGES_prepend_class-target = "${PN}-x86_64 \
${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}"
-INSANE_SKIP_${PN}-x86_64_class-target = "file-rdeps"
+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}"
-INSANE_SKIP_${PN}-i386_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}"
-INSANE_SKIP_${PN}-system-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}"
-INSANE_SKIP_${PN}-aarch64_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}"
-INSANE_SKIP_${PN}-arm_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}"
-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}-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}-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}"
+FILES:${PN}-keymaps:class-target = "${datadir}/${PN}/keymaps/*"
+RDEPENDS:${PN}-keymaps:class-target = "${PN}"
-PACKAGECONFIG_append = " virtfs"
+PACKAGECONFIG:append = " virtfs"
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-SnappyCompressor.h-fix-snappy-compiler-error.patch b/recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch
new file mode 100644
index 00000000..2ebd32d1
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-SnappyCompressor.h-fix-snappy-compiler-error.patch
@@ -0,0 +1,30 @@
+From 85bde55627cfbb35d8b4735dec32bf33fa30079f Mon Sep 17 00:00:00 2001
+From: Saul Wold <saul.wold@windriver.com>
+Date: Fri, 28 May 2021 10:16:07 -0700
+Subject: [PATCH] SnappyCompressor.h: fix snappy compiler error
+
+snappy quietly changed public type
+
+Known issue in ceph: https://tracker.ceph.com/issues/50934
+
+Upstream-Status: Pending
+
+Signed-off-by: Saul Wold <saul.wold@windriver.com>
+
+---
+ src/compressor/snappy/SnappyCompressor.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/compressor/snappy/SnappyCompressor.h b/src/compressor/snappy/SnappyCompressor.h
+index 0cfb819c..2fbe35b7 100644
+--- a/src/compressor/snappy/SnappyCompressor.h
++++ b/src/compressor/snappy/SnappyCompressor.h
+@@ -96,7 +96,7 @@ class SnappyCompressor : public Compressor {
+ if (qat_enabled)
+ return qat_accel.decompress(p, compressed_len, dst);
+ #endif
+- snappy::uint32 res_len = 0;
++ uint32_t res_len = 0;
+ BufferlistSource source_1(p, compressed_len);
+ if (!snappy::GetUncompressedLength(&source_1, &res_len)) {
+ return -1;
diff --git a/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch b/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch
new file mode 100644
index 00000000..70d3eb94
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch
@@ -0,0 +1,30 @@
+From 496465d9238109a93612e28682273e5bf576823b Mon Sep 17 00:00:00 2001
+From: Chen Qi <Qi.Chen@windriver.com>
+Date: Sun, 22 May 2022 19:40:59 -0700
+Subject: [PATCH 1/2] buffer.h: add missing header file due to gcc upgrade
+
+The header file <memory> have been changed to be no longer included by other
+heades, thus requiring explicit include. See https://gcc.gnu.org/gcc-12/porting_to.html
+
+Upstream-Status: Pending
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/include/buffer.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/include/buffer.h b/src/include/buffer.h
+index 5c8b427d..88845ee6 100644
+--- a/src/include/buffer.h
++++ b/src/include/buffer.h
+@@ -43,6 +43,7 @@
+ #include <list>
+ #include <vector>
+ #include <string>
++#include <memory>
+ #if __cplusplus >= 201703L
+ #include <string_view>
+ #endif // __cplusplus >= 201703L
+--
+2.36.0
+
diff --git a/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch b/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch
new file mode 100644
index 00000000..c0b718a2
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-cmake-add-support-for-python3.11.patch
@@ -0,0 +1,34 @@
+From 1060f2e4362ebd6db23870d442dcd158d219ee92 Mon Sep 17 00:00:00 2001
+From: Yanfei Xu <yanfei.xu@windriver.com>
+Date: Tue, 10 Nov 2020 17:17:30 +0800
+Subject: [PATCH] cmake: add support for python 3.9 and 3.10
+
+add support for python3.9.
+
+Signed-off-by: Yanfei Xu <yanfei.xu@windriver.com>
+
+Add support for python 3.10.
+
+Upstream-Status: Submitted [https://github.com/ceph/ceph/pull/43630]
+
+Signed-off-by: Kai Kang <kai.kang@windriver.com>
+---
+ cmake/modules/FindPython/Support.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/modules/FindPython/Support.cmake b/cmake/modules/FindPython/Support.cmake
+index 6584699b79..c05bbe3306 100644
+--- a/cmake/modules/FindPython/Support.cmake
++++ b/cmake/modules/FindPython/Support.cmake
+@@ -17,7 +17,7 @@ if (NOT DEFINED _${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR)
+ message (FATAL_ERROR "FindPython: INTERNAL ERROR")
+ endif()
+ if (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 3)
+- set(_${_PYTHON_PREFIX}_VERSIONS 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
++ set(_${_PYTHON_PREFIX}_VERSIONS 3.11 3.10 3.9 3.8 3.7 3.6 3.5 3.4 3.3 3.2 3.1 3.0)
+ elseif (_${_PYTHON_PREFIX}_REQUIRED_VERSION_MAJOR EQUAL 2)
+ set(_${_PYTHON_PREFIX}_VERSIONS 2.7 2.6 2.5 2.4 2.3 2.2 2.1 2.0)
+ else()
+--
+2.18.2
+
diff --git a/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch b/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
new file mode 100644
index 00000000..b6ba82b6
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch
@@ -0,0 +1,41 @@
+From 59e6b44f7ed4020a860e347322acfdacc6e4560b Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Fri, 28 Oct 2022 16:47:38 +0100
+Subject: [PATCH] common: fix build with GCC 13 (missing <cstdint> include)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Needed for uint8_t. Only worked by chance before (see
+https://www.gnu.org/software/gcc/gcc-13/porting_to.html).
+
+```
+FAILED: src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o
+/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_ASIO_DISABLE_THREAD_KEYWORD_EXTENSION -DHAVE_CONFIG_H -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_REENTRANT -D_THREAD_SAFE -D__CEPH__ -D__STDC_FORMAT_MACROS -D__linux__ -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/src/include -I/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5_build/include -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/xxHash -isystem /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/rapidjson/include -O2 -march=native -pipe -fPIC -U_FORTIFY_SOURCE -Wall -fno-strict-aliasing -fsigned-char -Wtype-limits -Wignored-qualifiers -Wpointer-arith -Werror=format-security -Winit-self -Wno-unknown-pragmas -Wnon-virtual-dtor -Wno-ignored-qualifiers -ftemplate-depth-1024 -Wpessimizing-move -Wredundant-move -Wstrict-null-sentinel -Woverloaded-virtual -fno-new-ttp-matching -fstack-protector-strong -fdiagnostics-color=auto -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free -std=c++17 -MD -MT src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -MF src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o.d -o src/CMakeFiles/common-objs.dir/mds/FSMapUser.cc.o -c /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc
+In file included from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/log/SubsystemMap.h:12,
+ from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/config.h:23,
+ from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/mdstypes.h:13,
+ from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.h:21,
+ from /var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/mds/FSMapUser.cc:1:
+/var/tmp/portage/sys-cluster/ceph-17.2.5/work/ceph-17.2.5/src/common/subsys_types.h:56:23: error: ‘uint8_t’ in namespace ‘std’ does not name a type; did you mean ‘wint_t’?
+```
+
+Bug: https://bugs.gentoo.org/878531
+Signed-off-by: Sam James <sam@gentoo.org>
+Upstream-Status: Backport [https://github.com/ceph/ceph/commit/74794f9d6f5c6671438085bdba730b504901a7c0]
+---
+ src/common/subsys_types.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/common/subsys_types.h b/src/common/subsys_types.h
+index 52171809..bd7cc439 100644
+--- a/src/common/subsys_types.h
++++ b/src/common/subsys_types.h
+@@ -17,6 +17,7 @@
+
+ #include <algorithm>
+ #include <array>
++#include <cstdint>
+
+ enum ceph_subsys_id_t {
+ ceph_subsys_, // default
diff --git a/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch b/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch
new file mode 100644
index 00000000..795c60fc
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch
@@ -0,0 +1,51 @@
+From b7b58010fd10b95c681df78cc4322e6586a39099 Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Tue, 17 Aug 2021 15:20:24 +0800
+Subject: [PATCH 1/6] kv/rocksdb_cache: drop ROCKSDB_PRIszt
+
+ROCKSDB_PRIszt is a macro for "zu", which is in turn use for printing an
+(unsigned) size_t variable.
+
+there is no point having it in the header file or define a macro for it,
+as %zu is standard compliant, and we don't get any advantage by using a
+macro for it.
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+Upstream-Status: Backport [44f5b827eb3c65665373a86908bf5d47e7d02687]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+
+---
+ src/kv/rocksdb_cache/ShardedCache.cc | 2 +-
+ src/kv/rocksdb_cache/ShardedCache.h | 1 -
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
+index 367140a9..8e08deb8 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.cc
++++ b/src/kv/rocksdb_cache/ShardedCache.cc
+@@ -131,7 +131,7 @@ std::string ShardedCache::GetPrintableOptions() const {
+ char buffer[kBufferSize];
+ {
+ std::lock_guard<std::mutex> l(capacity_mutex_);
+- snprintf(buffer, kBufferSize, " capacity : %" ROCKSDB_PRIszt "\n",
++ snprintf(buffer, kBufferSize, " capacity : %zu\n",
+ capacity_);
+ ret.append(buffer);
+ snprintf(buffer, kBufferSize, " num_shard_bits : %d\n", num_shard_bits_);
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index 4d64893a..8ab2587b 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -22,7 +22,6 @@
+ #ifndef CACHE_LINE_SIZE
+ #define CACHE_LINE_SIZE 64 // XXX arch-specific define
+ #endif
+-#define ROCKSDB_PRIszt "zu"
+
+ namespace rocksdb_cache {
+
+--
+2.33.0
+
diff --git a/recipes-extended/ceph/ceph/0001-mgr-require-all-caps-for-pre-octopus-tell-commands.patch b/recipes-extended/ceph/ceph/0001-mgr-require-all-caps-for-pre-octopus-tell-commands.patch
deleted file mode 100644
index de191bf8..00000000
--- a/recipes-extended/ceph/ceph/0001-mgr-require-all-caps-for-pre-octopus-tell-commands.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From de67c1dab5597c91538970421b25f6ec667af492 Mon Sep 17 00:00:00 2001
-From: Josh Durgin <jdurgin@redhat.com>
-Date: Mon, 4 May 2020 17:03:35 -0400
-Subject: [PATCH 1/3] mgr: require all caps for pre-octopus tell commands
-
-This matches the requirements for admin socket commands
-sent via tell elsewhere.
-
-Signed-off-by: Josh Durgin <jdurgin@redhat.com>
-
-Upstream-status: Backport
-[https://github.com/ceph/ceph/commit/347003e13167c428187a5450517850f4d85e09ad]
-
-Signed-off-by: Liu Haitao <haitao.liu@windriver.com>
----
- src/mgr/DaemonServer.cc | 37 ++++++++++++++++++++++---------------
- 1 file changed, 22 insertions(+), 15 deletions(-)
-
-diff --git a/src/mgr/DaemonServer.cc b/src/mgr/DaemonServer.cc
-index becd428a..527326e3 100644
---- a/src/mgr/DaemonServer.cc
-+++ b/src/mgr/DaemonServer.cc
-@@ -808,20 +808,12 @@ public:
- bool DaemonServer::handle_command(const ref_t<MCommand>& m)
- {
- std::lock_guard l(lock);
-- // a blank fsid in MCommand signals a legacy client sending a "mon-mgr" CLI
-- // command.
-- if (m->fsid != uuid_d()) {
-- cct->get_admin_socket()->queue_tell_command(m);
-+ auto cmdctx = std::make_shared<CommandContext>(m);
-+ try {
-+ return _handle_command(cmdctx);
-+ } catch (const bad_cmd_get& e) {
-+ cmdctx->reply(-EINVAL, e.what());
- return true;
-- } else {
-- // legacy client; send to CLI processing
-- auto cmdctx = std::make_shared<CommandContext>(m);
-- try {
-- return _handle_command(cmdctx);
-- } catch (const bad_cmd_get& e) {
-- cmdctx->reply(-EINVAL, e.what());
-- return true;
-- }
- }
- }
-
-@@ -853,8 +845,12 @@ bool DaemonServer::_handle_command(
- std::shared_ptr<CommandContext>& cmdctx)
- {
- MessageRef m;
-+ bool admin_socket_cmd = false;
- if (cmdctx->m_tell) {
- m = cmdctx->m_tell;
-+ // a blank fsid in MCommand signals a legacy client sending a "mon-mgr" CLI
-+ // command.
-+ admin_socket_cmd = (cmdctx->m_tell->fsid != uuid_d());
- } else {
- m = cmdctx->m_mgr;
- }
-@@ -888,7 +884,10 @@ bool DaemonServer::_handle_command(
-
- dout(10) << "decoded-size=" << cmdctx->cmdmap.size() << " prefix=" << prefix << dendl;
-
-- if (prefix == "get_command_descriptions") {
-+ // this is just for mgr commands - admin socket commands will fall
-+ // through and use the admin socket version of
-+ // get_command_descriptions
-+ if (prefix == "get_command_descriptions" && !admin_socket_cmd) {
- dout(10) << "reading commands from python modules" << dendl;
- const auto py_commands = py_modules.get_commands();
-
-@@ -925,7 +924,10 @@ bool DaemonServer::_handle_command(
-
- bool is_allowed = false;
- ModuleCommand py_command;
-- if (!mgr_cmd) {
-+ if (admin_socket_cmd) {
-+ // admin socket commands require all capabilities
-+ is_allowed = session->caps.is_allow_all();
-+ } else if (!mgr_cmd) {
- // Resolve the command to the name of the module that will
- // handle it (if the command exists)
- auto py_commands = py_modules.get_py_commands();
-@@ -958,6 +960,11 @@ bool DaemonServer::_handle_command(
- << "entity='" << session->entity_name << "' "
- << "cmd=" << cmdctx->cmd << ": dispatch";
-
-+ if (admin_socket_cmd) {
-+ cct->get_admin_socket()->queue_tell_command(cmdctx->m_tell);
-+ return true;
-+ }
-+
- // ----------------
- // service map commands
- if (prefix == "service dump") {
---
-2.25.1
-
diff --git a/recipes-extended/ceph/ceph/0001-msg-async-ProtocolV2-avoid-AES-GCM-nonce-reuse-vulne.patch b/recipes-extended/ceph/ceph/0001-msg-async-ProtocolV2-avoid-AES-GCM-nonce-reuse-vulne.patch
deleted file mode 100644
index 54156698..00000000
--- a/recipes-extended/ceph/ceph/0001-msg-async-ProtocolV2-avoid-AES-GCM-nonce-reuse-vulne.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-From 20b7bb685c5ea74c651ca1ea547ac66b0fee7035 Mon Sep 17 00:00:00 2001
-From: Ilya Dryomov <idryomov@gmail.com>
-Date: Fri, 6 Mar 2020 20:16:45 +0100
-Subject: [PATCH] msg/async/ProtocolV2: avoid AES-GCM nonce reuse
- vulnerabilities
-
-The secure mode uses AES-128-GCM with 96-bit nonces consisting of a
-32-bit counter followed by a 64-bit salt. The counter is incremented
-after processing each frame, the salt is fixed for the duration of
-the session. Both are initialized from the session key generated
-during session negotiation, so the counter starts with essentially
-a random value. It is allowed to wrap, and, after 2**32 frames, it
-repeats, resulting in nonce reuse (the actual sequence numbers that
-the messenger works with are 64-bit, so the session continues on).
-
-Because of how GCM works, this completely breaks both confidentiality
-and integrity aspects of the secure mode. A single nonce reuse reveals
-the XOR of two plaintexts and almost completely reveals the subkey
-used for producing authentication tags. After a few nonces get used
-twice, all confidentiality and integrity goes out the window and the
-attacker can potentially encrypt-authenticate plaintext of their
-choice.
-
-We can't easily change the nonce format to extend the counter to
-64 bits (and possibly XOR it with a longer salt). Instead, just
-remember the initial nonce and cut the session before it repeats,
-forcing renegotiation.
-
-Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
-Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
-Reviewed-by: Sage Weil <sage@redhat.com>
-
-Conflicts:
- src/msg/async/ProtocolV2.h [ context: commit ed3ec4c01d17
- ("msg: Build target 'common' without using namespace in
- headers") not in octopus ]
-
-CVE: CVE-2020-1759
-Upstream Status: Backport [20b7bb685c5ea74c651ca1ea547ac66b0fee7035]
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- src/msg/async/ProtocolV2.cc | 62 ++++++++++++++++++++++++----------
- src/msg/async/ProtocolV2.h | 5 +--
- src/msg/async/crypto_onwire.cc | 17 ++++++++--
- src/msg/async/crypto_onwire.h | 5 +++
- 4 files changed, 67 insertions(+), 22 deletions(-)
-
-diff --git a/src/msg/async/ProtocolV2.cc b/src/msg/async/ProtocolV2.cc
-index 8fc02db6e5..c69f2ccf79 100644
---- a/src/msg/async/ProtocolV2.cc
-+++ b/src/msg/async/ProtocolV2.cc
-@@ -533,7 +533,10 @@ ssize_t ProtocolV2::write_message(Message *m, bool more) {
- m->get_payload(),
- m->get_middle(),
- m->get_data());
-- connection->outgoing_bl.append(message.get_buffer(session_stream_handlers));
-+ if (!append_frame(message)) {
-+ m->put();
-+ return -EILSEQ;
-+ }
-
- ldout(cct, 5) << __func__ << " sending message m=" << m
- << " seq=" << m->get_seq() << " " << *m << dendl;
-@@ -566,15 +569,17 @@ ssize_t ProtocolV2::write_message(Message *m, bool more) {
- return rc;
- }
-
--void ProtocolV2::append_keepalive() {
-- ldout(cct, 10) << __func__ << dendl;
-- auto keepalive_frame = KeepAliveFrame::Encode();
-- connection->outgoing_bl.append(keepalive_frame.get_buffer(session_stream_handlers));
--}
--
--void ProtocolV2::append_keepalive_ack(utime_t &timestamp) {
-- auto keepalive_ack_frame = KeepAliveFrameAck::Encode(timestamp);
-- connection->outgoing_bl.append(keepalive_ack_frame.get_buffer(session_stream_handlers));
-+template <class F>
-+bool ProtocolV2::append_frame(F& frame) {
-+ ceph::bufferlist bl;
-+ try {
-+ bl = frame.get_buffer(session_stream_handlers);
-+ } catch (ceph::crypto::onwire::TxHandlerError &e) {
-+ ldout(cct, 1) << __func__ << " " << e.what() << dendl;
-+ return false;
-+ }
-+ connection->outgoing_bl.append(bl);
-+ return true;
- }
-
- void ProtocolV2::handle_message_ack(uint64_t seq) {
-@@ -612,7 +617,15 @@ void ProtocolV2::write_event() {
- connection->write_lock.lock();
- if (can_write) {
- if (keepalive) {
-- append_keepalive();
-+ ldout(cct, 10) << __func__ << " appending keepalive" << dendl;
-+ auto keepalive_frame = KeepAliveFrame::Encode();
-+ if (!append_frame(keepalive_frame)) {
-+ connection->write_lock.unlock();
-+ connection->lock.lock();
-+ fault();
-+ connection->lock.unlock();
-+ return;
-+ }
- keepalive = false;
- }
-
-@@ -663,13 +676,16 @@ void ProtocolV2::write_event() {
- if (r == 0) {
- uint64_t left = ack_left;
- if (left) {
-- auto ack = AckFrame::Encode(in_seq);
-- connection->outgoing_bl.append(ack.get_buffer(session_stream_handlers));
- ldout(cct, 10) << __func__ << " try send msg ack, acked " << left
- << " messages" << dendl;
-- ack_left -= left;
-- left = ack_left;
-- r = connection->_try_send(left);
-+ auto ack_frame = AckFrame::Encode(in_seq);
-+ if (append_frame(ack_frame)) {
-+ ack_left -= left;
-+ left = ack_left;
-+ r = connection->_try_send(left);
-+ } else {
-+ r = -EILSEQ;
-+ }
- } else if (is_queued()) {
- r = connection->_try_send();
- }
-@@ -769,7 +785,13 @@ template <class F>
- CtPtr ProtocolV2::write(const std::string &desc,
- CONTINUATION_TYPE<ProtocolV2> &next,
- F &frame) {
-- ceph::bufferlist bl = frame.get_buffer(session_stream_handlers);
-+ ceph::bufferlist bl;
-+ try {
-+ bl = frame.get_buffer(session_stream_handlers);
-+ } catch (ceph::crypto::onwire::TxHandlerError &e) {
-+ ldout(cct, 1) << __func__ << " " << e.what() << dendl;
-+ return _fault();
-+ }
- return write(desc, next, bl);
- }
-
-@@ -1672,7 +1694,11 @@ CtPtr ProtocolV2::handle_keepalive2(ceph::bufferlist &payload)
- ldout(cct, 30) << __func__ << " got KEEPALIVE2 tag ..." << dendl;
-
- connection->write_lock.lock();
-- append_keepalive_ack(keepalive_frame.timestamp());
-+ auto keepalive_ack_frame = KeepAliveFrameAck::Encode(keepalive_frame.timestamp());
-+ if (!append_frame(keepalive_ack_frame)) {
-+ connection->write_lock.unlock();
-+ return _fault();
-+ }
- connection->write_lock.unlock();
-
- ldout(cct, 20) << __func__ << " got KEEPALIVE2 "
-diff --git a/src/msg/async/ProtocolV2.h b/src/msg/async/ProtocolV2.h
-index 2dbe647ae5..9897d18cf2 100644
---- a/src/msg/async/ProtocolV2.h
-+++ b/src/msg/async/ProtocolV2.h
-@@ -129,6 +129,9 @@ private:
- CONTINUATION_TYPE<ProtocolV2> &next,
- bufferlist &buffer);
-
-+ template <class F>
-+ bool append_frame(F& frame);
-+
- void requeue_sent();
- uint64_t discard_requeued_up_to(uint64_t out_seq, uint64_t seq);
- void reset_recv_state();
-@@ -140,8 +143,6 @@ private:
- void prepare_send_message(uint64_t features, Message *m);
- out_queue_entry_t _get_next_outgoing();
- ssize_t write_message(Message *m, bool more);
-- void append_keepalive();
-- void append_keepalive_ack(utime_t &timestamp);
- void handle_message_ack(uint64_t seq);
-
- CONTINUATION_DECL(ProtocolV2, _wait_for_peer_banner);
-diff --git a/src/msg/async/crypto_onwire.cc b/src/msg/async/crypto_onwire.cc
-index acf3f66689..07e7fe6553 100644
---- a/src/msg/async/crypto_onwire.cc
-+++ b/src/msg/async/crypto_onwire.cc
-@@ -22,6 +22,10 @@ static constexpr const std::size_t AESGCM_BLOCK_LEN{16};
- struct nonce_t {
- std::uint32_t random_seq;
- std::uint64_t random_rest;
-+
-+ bool operator==(const nonce_t& rhs) const {
-+ return !memcmp(this, &rhs, sizeof(*this));
-+ }
- } __attribute__((packed));
- static_assert(sizeof(nonce_t) == AESGCM_IV_LEN);
-
-@@ -35,7 +39,8 @@ class AES128GCM_OnWireTxHandler : public ceph::crypto::onwire::TxHandler {
- CephContext* const cct;
- std::unique_ptr<EVP_CIPHER_CTX, decltype(&::EVP_CIPHER_CTX_free)> ectx;
- ceph::bufferlist buffer;
-- nonce_t nonce;
-+ nonce_t nonce, initial_nonce;
-+ bool used_initial_nonce;
- static_assert(sizeof(nonce) == AESGCM_IV_LEN);
-
- public:
-@@ -44,7 +49,7 @@ public:
- const nonce_t& nonce)
- : cct(cct),
- ectx(EVP_CIPHER_CTX_new(), EVP_CIPHER_CTX_free),
-- nonce(nonce) {
-+ nonce(nonce), initial_nonce(nonce), used_initial_nonce(false) {
- ceph_assert_always(ectx);
- ceph_assert_always(key.size() * CHAR_BIT == 128);
-
-@@ -61,6 +66,7 @@ public:
-
- ~AES128GCM_OnWireTxHandler() override {
- ::ceph::crypto::zeroize_for_security(&nonce, sizeof(nonce));
-+ ::ceph::crypto::zeroize_for_security(&initial_nonce, sizeof(initial_nonce));
- }
-
- std::uint32_t calculate_segment_size(std::uint32_t size) override
-@@ -78,6 +84,13 @@ public:
- void AES128GCM_OnWireTxHandler::reset_tx_handler(
- std::initializer_list<std::uint32_t> update_size_sequence)
- {
-+ if (nonce == initial_nonce) {
-+ if (used_initial_nonce) {
-+ throw ceph::crypto::onwire::TxHandlerError("out of nonces");
-+ }
-+ used_initial_nonce = true;
-+ }
-+
- if(1 != EVP_EncryptInit_ex(ectx.get(), nullptr, nullptr, nullptr,
- reinterpret_cast<const unsigned char*>(&nonce))) {
- throw std::runtime_error("EVP_EncryptInit_ex failed");
-diff --git a/src/msg/async/crypto_onwire.h b/src/msg/async/crypto_onwire.h
-index bd682e8c71..0c544f205a 100644
---- a/src/msg/async/crypto_onwire.h
-+++ b/src/msg/async/crypto_onwire.h
-@@ -45,6 +45,11 @@ struct MsgAuthError : public std::runtime_error {
- }
- };
-
-+struct TxHandlerError : public std::runtime_error {
-+ TxHandlerError(const char* what)
-+ : std::runtime_error(std::string("tx handler error: ") + what) {}
-+};
-+
- struct TxHandler {
- virtual ~TxHandler() = default;
-
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0001-msg-async-crypto_onwire-fix-endianness-of-nonce_t.patch b/recipes-extended/ceph/ceph/0001-msg-async-crypto_onwire-fix-endianness-of-nonce_t.patch
deleted file mode 100644
index ad8a2055..00000000
--- a/recipes-extended/ceph/ceph/0001-msg-async-crypto_onwire-fix-endianness-of-nonce_t.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From dfd1d81cec62e21e21696dc87d4db5f920e51a67 Mon Sep 17 00:00:00 2001
-From: Ilya Dryomov <idryomov@gmail.com>
-Date: Fri, 6 Mar 2020 20:16:45 +0100
-Subject: [PATCH] msg/async/crypto_onwire: fix endianness of nonce_t
-
-As a AES-GCM IV, nonce_t is implicitly shared between server and
-client. Currently, if their endianness doesn't match, they are unable
-to communicate in secure mode because each gets its own idea of what
-the next nonce should be after the counter is incremented.
-
-Several RFCs state that the nonce counter should be BE, but since we
-use LE for everything on-disk and on-wire, make it LE.
-
-Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
-Reviewed-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
-Reviewed-by: Sage Weil <sage@redhat.com>
-
-CVE: CVE-2020-1759
-Upstream Status: Backport [dfd1d81cec62e21e21696dc87d4db5f920e51a67]
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- src/msg/async/crypto_onwire.cc | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/msg/async/crypto_onwire.cc b/src/msg/async/crypto_onwire.cc
-index 07e7fe6553..c39632cbd6 100644
---- a/src/msg/async/crypto_onwire.cc
-+++ b/src/msg/async/crypto_onwire.cc
-@@ -20,8 +20,8 @@ static constexpr const std::size_t AESGCM_TAG_LEN{16};
- static constexpr const std::size_t AESGCM_BLOCK_LEN{16};
-
- struct nonce_t {
-- std::uint32_t random_seq;
-- std::uint64_t random_rest;
-+ ceph_le32 random_seq;
-+ ceph_le64 random_rest;
-
- bool operator==(const nonce_t& rhs) const {
- return !memcmp(this, &rhs, sizeof(*this));
-@@ -99,7 +99,7 @@ void AES128GCM_OnWireTxHandler::reset_tx_handler(
- buffer.reserve(std::accumulate(std::begin(update_size_sequence),
- std::end(update_size_sequence), AESGCM_TAG_LEN));
-
-- ++nonce.random_seq;
-+ nonce.random_seq = nonce.random_seq + 1;
- }
-
- void AES128GCM_OnWireTxHandler::authenticated_encrypt_update(
-@@ -204,7 +204,7 @@ void AES128GCM_OnWireRxHandler::reset_rx_handler()
- reinterpret_cast<const unsigned char*>(&nonce))) {
- throw std::runtime_error("EVP_DecryptInit_ex failed");
- }
-- ++nonce.random_seq;
-+ nonce.random_seq = nonce.random_seq + 1;
- }
-
- ceph::bufferlist AES128GCM_OnWireRxHandler::authenticated_decrypt_update(
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0001-rgw-EPERM-to-ERR_INVALID_REQUEST.patch b/recipes-extended/ceph/ceph/0001-rgw-EPERM-to-ERR_INVALID_REQUEST.patch
deleted file mode 100644
index 30906d7c..00000000
--- a/recipes-extended/ceph/ceph/0001-rgw-EPERM-to-ERR_INVALID_REQUEST.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 92da834cababc4dddd5dbbab5837310478d1e6d4 Mon Sep 17 00:00:00 2001
-From: Abhishek Lekshmanan <abhishek@suse.com>
-Date: Fri, 27 Mar 2020 19:29:01 +0100
-Subject: [PATCH] rgw: EPERM to ERR_INVALID_REQUEST
-
-As per Robin's comments and S3 spec
-
-Signed-off-by: Abhishek Lekshmanan <abhishek@suse.com>
-
-CVE: CVE-2020-1760
-Upstream Status: Backport [92da834cababc4dddd5dbbab5837310478d1e6d4]
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- src/rgw/rgw_rest_s3.cc | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
-index 1bfc8312de..f13ae23dd6 100644
---- a/src/rgw/rgw_rest_s3.cc
-+++ b/src/rgw/rgw_rest_s3.cc
-@@ -301,7 +301,7 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
- /* reject unauthenticated response header manipulation, see
- * https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html */
- if (s->auth.identity->is_anonymous()) {
-- return -EPERM;
-+ return -ERR_INVALID_REQUEST;
- }
- if (strcmp(p->param, "response-content-type") != 0) {
- response_attrs[p->http_attr] = val;
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0001-rgw-reject-control-characters-in-response-header-act.patch b/recipes-extended/ceph/ceph/0001-rgw-reject-control-characters-in-response-header-act.patch
deleted file mode 100644
index af0fc79a..00000000
--- a/recipes-extended/ceph/ceph/0001-rgw-reject-control-characters-in-response-header-act.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From be7679007c3dfab3e19c22c38c36ccac91828e3b Mon Sep 17 00:00:00 2001
-From: "Robin H. Johnson" <rjohnson@digitalocean.com>
-Date: Fri, 27 Mar 2020 20:48:13 +0100
-Subject: [PATCH] rgw: reject control characters in response-header actions
-
-S3 GetObject permits overriding response header values, but those inputs
-need to be validated to insure only characters that are valid in an HTTP
-header value are present.
-
-Credit: Initial vulnerability discovery by William Bowling (@wcbowling)
-Credit: Further vulnerability discovery by Robin H. Johnson <rjohnson@digitalocean.com>
-Signed-off-by: Robin H. Johnson <rjohnson@digitalocean.com>
-
-CVE: CVE-2020-1760
-Upstream Status: Backport [be7679007c3dfab3e19c22c38c36ccac91828e3b]
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- src/rgw/rgw_rest_s3.cc | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
-index f13ae23dd6..0de040968c 100644
---- a/src/rgw/rgw_rest_s3.cc
-+++ b/src/rgw/rgw_rest_s3.cc
-@@ -189,6 +189,15 @@ int decode_attr_bl_single_value(map<string, bufferlist>& attrs, const char *attr
- return 0;
- }
-
-+inline bool str_has_cntrl(const std::string s) {
-+ return std::any_of(s.begin(), s.end(), ::iscntrl);
-+}
-+
-+inline bool str_has_cntrl(const char* s) {
-+ std::string _s(s);
-+ return str_has_cntrl(_s);
-+}
-+
- int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
- off_t bl_len)
- {
-@@ -303,6 +312,19 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
- if (s->auth.identity->is_anonymous()) {
- return -ERR_INVALID_REQUEST;
- }
-+ /* HTTP specification says no control characters should be present in
-+ * header values: https://tools.ietf.org/html/rfc7230#section-3.2
-+ * field-vchar = VCHAR / obs-text
-+ *
-+ * Failure to validate this permits a CRLF injection in HTTP headers,
-+ * whereas S3 GetObject only permits specific headers.
-+ */
-+ if(str_has_cntrl(val)) {
-+ /* TODO: return a more distinct error in future;
-+ * stating what the problem is */
-+ return -ERR_INVALID_REQUEST;
-+ }
-+
- if (strcmp(p->param, "response-content-type") != 0) {
- response_attrs[p->http_attr] = val;
- } else {
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0001-rgw-reject-unauthenticated-response-header-actions.patch b/recipes-extended/ceph/ceph/0001-rgw-reject-unauthenticated-response-header-actions.patch
deleted file mode 100644
index ae241473..00000000
--- a/recipes-extended/ceph/ceph/0001-rgw-reject-unauthenticated-response-header-actions.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 8f90658c731499722d5f4393c8ad70b971d05f77 Mon Sep 17 00:00:00 2001
-From: Matt Benjamin <mbenjamin@redhat.com>
-Date: Fri, 27 Mar 2020 18:13:48 +0100
-Subject: [PATCH] rgw: reject unauthenticated response-header actions
-
-Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
-Reviewed-by: Casey Bodley <cbodley@redhat.com>
-(cherry picked from commit d8dd5e513c0c62bbd7d3044d7e2eddcd897bd400)
-
-CVE: CVE-2020-1760
-Upstream Status: Backport [8f90658c731499722d5f4393c8ad70b971d05f77]
-
-Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
----
- src/rgw/rgw_rest_s3.cc | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc
-index 532d738b58..1bfc8312de 100644
---- a/src/rgw/rgw_rest_s3.cc
-+++ b/src/rgw/rgw_rest_s3.cc
-@@ -298,6 +298,11 @@ int RGWGetObj_ObjStore_S3::send_response_data(bufferlist& bl, off_t bl_ofs,
- bool exists;
- string val = s->info.args.get(p->param, &exists);
- if (exists) {
-+ /* reject unauthenticated response header manipulation, see
-+ * https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html */
-+ if (s->auth.identity->is_anonymous()) {
-+ return -EPERM;
-+ }
- if (strcmp(p->param, "response-content-type") != 0) {
- response_attrs[p->http_attr] = val;
- } else {
---
-2.20.1
-
diff --git a/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch b/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch
new file mode 100644
index 00000000..d119bf1b
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch
@@ -0,0 +1,42 @@
+From 841806de212226921eeaeb3eea054bda8ccce616 Mon Sep 17 00:00:00 2001
+From: Radoslaw Zarzynski <rzarzyns@redhat.com>
+Date: Wed, 19 Jan 2022 15:24:11 +0000
+Subject: [PATCH 2/2] common: fix FTBFS due to dout & need_dynamic on GCC-12
+
+For details see:
+https://gist.github.com/rzarzynski/d6d2df6888923bef6a3e764f4856853f.
+
+Special thanks to Kaleb Keithley who reported the issue
+and tested the fix!
+
+Fixes: https://tracker.ceph.com/issues/53896
+Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
+
+Upstream-Status: Backport [963d756ded40f5adf2efef53893c917bec1845c1]
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+---
+ src/common/dout.h | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/common/dout.h b/src/common/dout.h
+index c7c08182..42f49915 100644
+--- a/src/common/dout.h
++++ b/src/common/dout.h
+@@ -99,11 +99,12 @@ namespace ceph::dout {
+ template<typename T>
+ struct dynamic_marker_t {
+ T value;
+- operator T() const { return value; }
++ // constexpr ctor isn't needed as it's an aggregate type
++ constexpr operator T() const { return value; }
+ };
+
+ template<typename T>
+-dynamic_marker_t<T> need_dynamic(T&& t) {
++constexpr dynamic_marker_t<T> need_dynamic(T&& t) {
+ return dynamic_marker_t<T>{ std::forward<T>(t) };
+ }
+
+--
+2.36.0
+
diff --git a/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch b/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
new file mode 100644
index 00000000..4f46d223
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch
@@ -0,0 +1,101 @@
+From cca3144aca7f7c19772065421f9b02205a84e0b8 Mon Sep 17 00:00:00 2001
+From: Casey Bodley <cbodley@redhat.com>
+Date: Tue, 15 Feb 2022 18:27:10 -0500
+Subject: [PATCH] common: replace BitVector::NoInitAllocator with wrapper
+ struct
+
+in c++20, the deprecated `struct std::allocator<T>::rebind` template was
+removed, so `BitVector` no longer compiles. without a `rebind` to
+inherit, `std::allocator_traits<NoInitAllocator>::rebind_alloc<U>` was
+looking for `NoInitAllocator<U>`, but it isn't a template class
+
+further investigation found that in c++17, `vector<__u32, NoInitAllocator>`
+was rebinding this `NoInitAllocator` to `std::allocator<__u32>` and
+preventing the no-init optimization from taking effect
+
+instead of messing with the allocator to avoid zero-initialization, wrap
+each __u32 in a struct whose constructor does not initialize the value
+
+Fixes: https://tracker.ceph.com/issues/54279
+
+Signed-off-by: Casey Bodley <cbodley@redhat.com>
+---
+Fixes:
+http://errors.yoctoproject.org/Errors/Details/701862/
+
+Upstream-Status: Backport [https://github.com/ceph/ceph/commit/4f0ad8aab6b21a1fd57a7c1630d298e31b5d9bb6]
+
+ src/common/bit_vector.hpp | 27 +++++++++++----------------
+ 1 file changed, 11 insertions(+), 16 deletions(-)
+
+diff --git a/src/common/bit_vector.hpp b/src/common/bit_vector.hpp
+index 10ee6c3e..9ce3e8b1 100644
+--- a/src/common/bit_vector.hpp
++++ b/src/common/bit_vector.hpp
+@@ -223,23 +223,18 @@ public:
+
+ static void generate_test_instances(std::list<BitVector *> &o);
+ private:
+- struct NoInitAllocator : public std::allocator<__u32> {
+- NoInitAllocator() {}
+- NoInitAllocator(const std::allocator<__u32>& alloc)
+- : std::allocator<__u32>(alloc) {
+- }
+-
+- template <class U, class... Args>
+- void construct(U* p, Args&&... args) const {
+- }
+- };
+-
+ bufferlist m_data;
+ uint64_t m_size;
+ bool m_crc_enabled;
+
+ mutable __u32 m_header_crc;
+- mutable std::vector<__u32, NoInitAllocator> m_data_crcs;
++
++ // inhibit value-initialization when used in std::vector
++ struct u32_struct {
++ u32_struct() {}
++ __u32 val;
++ };
++ mutable std::vector<u32_struct> m_data_crcs;
+
+ void resize(uint64_t elements, bool zero);
+
+@@ -351,7 +346,7 @@ void BitVector<_b>::encode_data(bufferlist& bl, uint64_t data_byte_offset,
+
+ bufferlist bit;
+ bit.substr_of(m_data, data_byte_offset, len);
+- m_data_crcs[data_byte_offset / BLOCK_SIZE] = bit.crc32c(0);
++ m_data_crcs[data_byte_offset / BLOCK_SIZE].val = bit.crc32c(0);
+
+ bl.claim_append(bit);
+ data_byte_offset += BLOCK_SIZE;
+@@ -385,7 +380,7 @@ void BitVector<_b>::decode_data(bufferlist::const_iterator& it,
+ bufferlist bit;
+ bit.append(ptr);
+ if (m_crc_enabled &&
+- m_data_crcs[data_byte_offset / BLOCK_SIZE] != bit.crc32c(0)) {
++ m_data_crcs[data_byte_offset / BLOCK_SIZE].val != bit.crc32c(0)) {
+ throw buffer::malformed_input("invalid data block CRC");
+ }
+ data.append(bit);
+@@ -499,7 +494,7 @@ void BitVector<_b>::encode_data_crcs(bufferlist& bl, uint64_t offset,
+ compute_index(offset + length - 1, &index, &shift);
+ uint64_t end_crc_index = index / BLOCK_SIZE;
+ while (crc_index <= end_crc_index) {
+- __u32 crc = m_data_crcs[crc_index++];
++ __u32 crc = m_data_crcs[crc_index++].val;
+ ceph::encode(crc, bl);
+ }
+ }
+@@ -520,7 +515,7 @@ void BitVector<_b>::decode_data_crcs(bufferlist::const_iterator& it,
+ while (remaining > 0) {
+ __u32 crc;
+ ceph::decode(crc, it);
+- m_data_crcs[crc_index++] = crc;
++ m_data_crcs[crc_index++].val = crc;
+ --remaining;
+ }
+ }
diff --git a/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch b/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch
new file mode 100644
index 00000000..3fc8c860
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch
@@ -0,0 +1,70 @@
+From 6cdb1387a713fad765b5193d5acf4504f206a66f Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Tue, 17 Aug 2021 15:39:00 +0800
+Subject: [PATCH 2/6] kv/rocksdb_cache: reorder ShardedCache methods
+ declarations
+
+in the exact order in which rocksdb::Cache declare its public virtual
+methods.
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+Upstream-Status: Backport [633656f8ade2c1d67a66f8b7ca3aa0a2ae82e6b1]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/kv/rocksdb_cache/ShardedCache.h | 21 ++++++++++-----------
+ 1 file changed, 10 insertions(+), 11 deletions(-)
+
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index 8ab2587b..a16cf561 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -56,34 +56,33 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
+ public:
+ ShardedCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit);
+ virtual ~ShardedCache() = default;
++ // rocksdb::Cache
+ virtual const char* Name() const override = 0;
+- virtual CacheShard* GetShard(int shard) = 0;
+- virtual const CacheShard* GetShard(int shard) const = 0;
+- virtual void* Value(Handle* handle) override = 0;
+- virtual size_t GetCharge(Handle* handle) const = 0;
+- virtual uint32_t GetHash(Handle* handle) const = 0;
+- virtual void DisownData() override = 0;
+-
+- virtual void SetCapacity(size_t capacity) override;
+- virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
+-
+ virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
+ void (*deleter)(const rocksdb::Slice& key, void* value),
+ rocksdb::Cache::Handle** handle, Priority priority) override;
+ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
+ virtual bool Ref(rocksdb::Cache::Handle* handle) override;
+ virtual bool Release(rocksdb::Cache::Handle* handle, bool force_erase = false) override;
++ virtual void* Value(Handle* handle) override = 0;
+ virtual void Erase(const rocksdb::Slice& key) override;
+ virtual uint64_t NewId() override;
+- virtual size_t GetCapacity() const override;
++ virtual void SetCapacity(size_t capacity) override;
++ virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
+ virtual bool HasStrictCapacityLimit() const override;
++ virtual size_t GetCapacity() const override;
+ virtual size_t GetUsage() const override;
+ virtual size_t GetUsage(rocksdb::Cache::Handle* handle) const override;
+ virtual size_t GetPinnedUsage() const override;
++ virtual size_t GetCharge(Handle* handle) const = 0;
++ virtual void DisownData() override = 0;
+ virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+ bool thread_safe) override;
+ virtual void EraseUnRefEntries() override;
+ virtual std::string GetPrintableOptions() const override;
++ virtual CacheShard* GetShard(int shard) = 0;
++ virtual const CacheShard* GetShard(int shard) const = 0;
++ virtual uint32_t GetHash(Handle* handle) const = 0;
+
+ int GetNumShardBits() const { return num_shard_bits_; }
+
+--
+2.33.0
+
diff --git a/recipes-extended/ceph/ceph/0002-mon-enforce-caps-for-pre-octopus-client-tell-command.patch b/recipes-extended/ceph/ceph/0002-mon-enforce-caps-for-pre-octopus-client-tell-command.patch
deleted file mode 100644
index 79f2174b..00000000
--- a/recipes-extended/ceph/ceph/0002-mon-enforce-caps-for-pre-octopus-client-tell-command.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From ddbac9b2779172876ebd2d26b68b04b02350a125 Mon Sep 17 00:00:00 2001
-From: Josh Durgin <jdurgin@redhat.com>
-Date: Thu, 23 Apr 2020 00:22:10 -0400
-Subject: [PATCH 2/3] mon: enforce caps for pre-octopus client tell commands
-
-This affects only the commands whitelisted here - in particular
-injectargs requires write access to the monitors.
-
-Signed-off-by: Josh Durgin <jdurgin@redhat.com>
-
-Upstream-status: Backport
-[https://github.com/ceph/ceph/commit/fc5e56b75a97c4652c87e9959aad1c4dec45010d]
-
-Signed-off-by: Liu Haitao <haitao.liu@windriver.com>
----
- src/mon/Monitor.cc | 56 +++++++++++++++++++++++-----------------------
- 1 file changed, 28 insertions(+), 28 deletions(-)
-
-diff --git a/src/mon/Monitor.cc b/src/mon/Monitor.cc
-index b7cb3eae..eecd2f68 100644
---- a/src/mon/Monitor.cc
-+++ b/src/mon/Monitor.cc
-@@ -3226,34 +3226,6 @@ void Monitor::handle_command(MonOpRequestRef op)
- return;
- }
-
-- // compat kludge for legacy clients trying to tell commands that are
-- // new. see bottom of MonCommands.h. we need to handle both (1)
-- // pre-octopus clients and (2) octopus clients with a mix of pre-octopus
-- // and octopus mons.
-- if ((!HAVE_FEATURE(m->get_connection()->get_features(), SERVER_OCTOPUS) ||
-- monmap->min_mon_release < ceph_release_t::octopus) &&
-- (prefix == "injectargs" ||
-- prefix == "smart" ||
-- prefix == "mon_status" ||
-- prefix == "heap")) {
-- if (m->get_connection()->get_messenger() == 0) {
-- // Prior to octopus, monitors might forward these messages
-- // around. that was broken at baseline, and if we try to process
-- // this message now, it will assert out when we try to send a
-- // message in reply from the asok/tell worker (see
-- // AnonConnection). Just reply with an error.
-- dout(5) << __func__ << " failing forwarded command from a (presumably) "
-- << "pre-octopus peer" << dendl;
-- reply_command(
-- op, -EBUSY,
-- "failing forwarded tell command in mixed-version mon cluster", 0);
-- return;
-- }
-- dout(5) << __func__ << " passing command to tell/asok" << dendl;
-- cct->get_admin_socket()->queue_tell_command(m);
-- return;
-- }
--
- string module;
- string err;
-
-@@ -3368,6 +3340,34 @@ void Monitor::handle_command(MonOpRequestRef op)
- << "entity='" << session->entity_name << "' "
- << "cmd=" << m->cmd << ": dispatch";
-
-+ // compat kludge for legacy clients trying to tell commands that are
-+ // new. see bottom of MonCommands.h. we need to handle both (1)
-+ // pre-octopus clients and (2) octopus clients with a mix of pre-octopus
-+ // and octopus mons.
-+ if ((!HAVE_FEATURE(m->get_connection()->get_features(), SERVER_OCTOPUS) ||
-+ monmap->min_mon_release < ceph_release_t::octopus) &&
-+ (prefix == "injectargs" ||
-+ prefix == "smart" ||
-+ prefix == "mon_status" ||
-+ prefix == "heap")) {
-+ if (m->get_connection()->get_messenger() == 0) {
-+ // Prior to octopus, monitors might forward these messages
-+ // around. that was broken at baseline, and if we try to process
-+ // this message now, it will assert out when we try to send a
-+ // message in reply from the asok/tell worker (see
-+ // AnonConnection). Just reply with an error.
-+ dout(5) << __func__ << " failing forwarded command from a (presumably) "
-+ << "pre-octopus peer" << dendl;
-+ reply_command(
-+ op, -EBUSY,
-+ "failing forwarded tell command in mixed-version mon cluster", 0);
-+ return;
-+ }
-+ dout(5) << __func__ << " passing command to tell/asok" << dendl;
-+ cct->get_admin_socket()->queue_tell_command(m);
-+ return;
-+ }
-+
- if (mon_cmd->is_mgr()) {
- const auto& hdr = m->get_header();
- uint64_t size = hdr.front_len + hdr.middle_len + hdr.data_len;
---
-2.25.1
-
diff --git a/recipes-extended/ceph/ceph/0003-PendingReleaseNotes-note-about-security-fix.patch b/recipes-extended/ceph/ceph/0003-PendingReleaseNotes-note-about-security-fix.patch
deleted file mode 100644
index ed2a63e7..00000000
--- a/recipes-extended/ceph/ceph/0003-PendingReleaseNotes-note-about-security-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 56800925651857821034ac9c8ec82d45635cc3b8 Mon Sep 17 00:00:00 2001
-From: Josh Durgin <jdurgin@redhat.com>
-Date: Wed, 13 May 2020 21:34:56 -0700
-Subject: [PATCH 3/3] PendingReleaseNotes: note about security fix
-
-Signed-off-by: Josh Durgin <jdurgin@redhat.com>
-
-Upstream-status: Backport
-[https://github.com/ceph/ceph/commit/06f239fc35f35865d2cf92dda1ac8f4d5fe82bde]
-
-Signed-off-by: Liu Haitao <haitao.liu@windriver.com>
----
- PendingReleaseNotes | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/PendingReleaseNotes b/PendingReleaseNotes
-index c9fd4c79..6e07ce6d 100644
---- a/PendingReleaseNotes
-+++ b/PendingReleaseNotes
-@@ -1,6 +1,8 @@
- >=15.0.0
- --------
-
-+* CVE-2020-10736: Fixes an authorization bypass in monitor and manager daemons
-+
- * The RGW "num_rados_handles" has been removed.
- * If you were using a value of "num_rados_handles" greater than 1
- multiply your current "objecter_inflight_ops" and
---
-2.25.1
-
diff --git a/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch b/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch
new file mode 100644
index 00000000..01144b79
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch
@@ -0,0 +1,101 @@
+From 29f1e556c1e7c5ab195983552387e1410e0b5b6c Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Tue, 17 Aug 2021 16:25:32 +0800
+Subject: [PATCH 3/6] kv/rocksdb_cache: define DeleterFn function pointer type
+
+this paves the road to rocksdb v6.22.1 compatible implementation
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+Upstream-Status: Backport [c7a6c74b62dfcc96f676eb6d8844852c4705b66f]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/kv/rocksdb_cache/BinnedLRUCache.cc | 2 +-
+ src/kv/rocksdb_cache/BinnedLRUCache.h | 4 ++--
+ src/kv/rocksdb_cache/ShardedCache.cc | 2 +-
+ src/kv/rocksdb_cache/ShardedCache.h | 6 ++++--
+ 4 files changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+index 2391a7f6..4e5f4dd4 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+@@ -344,7 +344,7 @@ bool BinnedLRUCacheShard::Release(rocksdb::Cache::Handle* handle, bool force_era
+
+ rocksdb::Status BinnedLRUCacheShard::Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
+ size_t charge,
+- void (*deleter)(const rocksdb::Slice& key, void* value),
++ DeleterFn deleter,
+ rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) {
+ auto e = new BinnedLRUHandle();
+ rocksdb::Status s;
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
+index 96023ce2..b0fb7148 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
+@@ -56,7 +56,7 @@ std::shared_ptr<rocksdb::Cache> NewBinnedLRUCache(
+
+ struct BinnedLRUHandle {
+ void* value;
+- void (*deleter)(const rocksdb::Slice&, void* value);
++ DeleterFn deleter;
+ BinnedLRUHandle* next_hash;
+ BinnedLRUHandle* next;
+ BinnedLRUHandle* prev;
+@@ -189,7 +189,7 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
+ // Like Cache methods, but with an extra "hash" parameter.
+ virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
+ size_t charge,
+- void (*deleter)(const rocksdb::Slice& key, void* value),
++ DeleterFn deleter,
+ rocksdb::Cache::Handle** handle,
+ rocksdb::Cache::Priority priority) override;
+ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) override;
+diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
+index 8e08deb8..ef3b3b98 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.cc
++++ b/src/kv/rocksdb_cache/ShardedCache.cc
+@@ -44,7 +44,7 @@ void ShardedCache::SetStrictCapacityLimit(bool strict_capacity_limit) {
+ }
+
+ rocksdb::Status ShardedCache::Insert(const rocksdb::Slice& key, void* value, size_t charge,
+- void (*deleter)(const rocksdb::Slice& key, void* value),
++ DeleterFn deleter,
+ rocksdb::Cache::Handle** handle, Priority priority) {
+ uint32_t hash = HashSlice(key);
+ return GetShard(Shard(hash))
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index a16cf561..674e5322 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -25,6 +25,8 @@
+
+ namespace rocksdb_cache {
+
++using DeleterFn = void (*)(const rocksdb::Slice& key, void* value);
++
+ // Single cache shard interface.
+ class CacheShard {
+ public:
+@@ -33,7 +35,7 @@ class CacheShard {
+
+ virtual rocksdb::Status Insert(const rocksdb::Slice& key, uint32_t hash, void* value,
+ size_t charge,
+- void (*deleter)(const rocksdb::Slice& key, void* value),
++ DeleterFn deleter,
+ rocksdb::Cache::Handle** handle, rocksdb::Cache::Priority priority) = 0;
+ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, uint32_t hash) = 0;
+ virtual bool Ref(rocksdb::Cache::Handle* handle) = 0;
+@@ -59,7 +61,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
+ // rocksdb::Cache
+ virtual const char* Name() const override = 0;
+ virtual rocksdb::Status Insert(const rocksdb::Slice& key, void* value, size_t charge,
+- void (*deleter)(const rocksdb::Slice& key, void* value),
++ DeleterFn,
+ rocksdb::Cache::Handle** handle, Priority priority) override;
+ virtual rocksdb::Cache::Handle* Lookup(const rocksdb::Slice& key, rocksdb::Statistics* stats) override;
+ virtual bool Ref(rocksdb::Cache::Handle* handle) override;
+--
+2.33.0
+
diff --git a/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch b/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
new file mode 100644
index 00000000..c27d6f3e
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0003-librdb-fix-build-with-gcc-13.patch
@@ -0,0 +1,30 @@
+From 937231991bd7e2cd578cf8cb6c1bedf611c5faef Mon Sep 17 00:00:00 2001
+From: Martin Jansa <Martin.Jansa@gmail.com>
+Date: Sat, 29 Apr 2023 13:47:43 +0200
+Subject: [PATCH] librdb: fix build with gcc-13
+
+* fixes:
+ceph-15.2.15/src/librbd/api/PoolMetadata.h:28:19: error: 'uint64_t' has not bee
+n declared
+ceph/15.2.15-r0/ceph-15.2.15/src/librbd/api/PoolMetadata.cc:133:5: error: no declaration matche
+s 'int librbd::api::PoolMetadata<ImageCtxT>::list(librados::v14_2_0::IoCtx&, const std::string&, uint64_t, std::map<std::__cxx11::basic_string<cha
+r>, ceph::buffer::v15_2_0::list>*)'
+
+Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
+Upstream-Status: Pending
+---
+ src/librbd/api/PoolMetadata.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/librbd/api/PoolMetadata.h b/src/librbd/api/PoolMetadata.h
+index c0a81735..69ab574a 100644
+--- a/src/librbd/api/PoolMetadata.h
++++ b/src/librbd/api/PoolMetadata.h
+@@ -7,6 +7,7 @@
+ #include "include/buffer_fwd.h"
+ #include "include/rados/librados_fwd.hpp"
+
++#include <cstdint>
+ #include <map>
+ #include <string>
+
diff --git a/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch b/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch
new file mode 100644
index 00000000..ee1e1416
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch
@@ -0,0 +1,207 @@
+From 90696cb3652eb307c6aadde4af7d9198dc00c15f Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Tue, 17 Aug 2021 16:27:47 +0800
+Subject: [PATCH 4/6] kv/rocksdb_cache: implement methods required by rocksdb
+ v6.22.1
+
+rocksdb v6.22.1 added couple pure methods, so let's implement them.
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+Upstream-Status: Backport [2c445598ce5280e85feb1f0e94d1940a444ee421]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/kv/rocksdb_cache/BinnedLRUCache.cc | 26 +++++++++++++++++++++++---
+ src/kv/rocksdb_cache/BinnedLRUCache.h | 14 +++++++++++---
+ src/kv/rocksdb_cache/ShardedCache.cc | 25 ++++++++++++++++++++++++-
+ src/kv/rocksdb_cache/ShardedCache.h | 20 ++++++++++++++++++--
+ 4 files changed, 76 insertions(+), 9 deletions(-)
+
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.cc b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+index 4e5f4dd4..1e6ba7af 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.cc
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.cc
+@@ -150,13 +150,20 @@ void BinnedLRUCacheShard::EraseUnRefEntries() {
+ }
+ }
+
+-void BinnedLRUCacheShard::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+- bool thread_safe) {
++void BinnedLRUCacheShard::ApplyToAllCacheEntries(
++ const std::function<void(const rocksdb::Slice& key,
++ void* value,
++ size_t charge,
++ DeleterFn)>& callback,
++ bool thread_safe)
++{
+ if (thread_safe) {
+ mutex_.lock();
+ }
+ table_.ApplyToAllCacheEntries(
+- [callback](BinnedLRUHandle* h) { callback(h->value, h->charge); });
++ [callback](BinnedLRUHandle* h) {
++ callback(h->key(), h->value, h->charge, h->deleter);
++ });
+ if (thread_safe) {
+ mutex_.unlock();
+ }
+@@ -463,6 +470,12 @@ std::string BinnedLRUCacheShard::GetPrintableOptions() const {
+ return std::string(buffer);
+ }
+
++DeleterFn BinnedLRUCacheShard::GetDeleter(rocksdb::Cache::Handle* h) const
++{
++ auto* handle = reinterpret_cast<BinnedLRUHandle*>(h);
++ return handle->deleter;
++}
++
+ BinnedLRUCache::BinnedLRUCache(CephContext *c,
+ size_t capacity,
+ int num_shard_bits,
+@@ -518,6 +531,13 @@ void BinnedLRUCache::DisownData() {
+ #endif // !__SANITIZE_ADDRESS__
+ }
+
++#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++DeleterFn BinnedLRUCache::GetDeleter(Handle* handle) const
++{
++ return reinterpret_cast<const BinnedLRUHandle*>(handle)->deleter;
++}
++#endif
++
+ size_t BinnedLRUCache::TEST_GetLRUSize() {
+ size_t lru_size_of_all_shards = 0;
+ for (int i = 0; i < num_shards_; i++) {
+diff --git a/src/kv/rocksdb_cache/BinnedLRUCache.h b/src/kv/rocksdb_cache/BinnedLRUCache.h
+index b0fb7148..ba0c2720 100644
+--- a/src/kv/rocksdb_cache/BinnedLRUCache.h
++++ b/src/kv/rocksdb_cache/BinnedLRUCache.h
+@@ -205,13 +205,19 @@ class alignas(CACHE_LINE_SIZE) BinnedLRUCacheShard : public CacheShard {
+ virtual size_t GetUsage() const override;
+ virtual size_t GetPinnedUsage() const override;
+
+- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+- bool thread_safe) override;
++ virtual void ApplyToAllCacheEntries(
++ const std::function<void(const rocksdb::Slice& key,
++ void* value,
++ size_t charge,
++ DeleterFn)>& callback,
++ bool thread_safe) override;
+
+ virtual void EraseUnRefEntries() override;
+
+ virtual std::string GetPrintableOptions() const override;
+
++ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const override;
++
+ void TEST_GetLRUList(BinnedLRUHandle** lru, BinnedLRUHandle** lru_low_pri);
+
+ // Retrieves number of elements in LRU, for unit test purpose only
+@@ -303,7 +309,9 @@ 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)
++ virtual DeleterFn GetDeleter(Handle* handle) const override;
++#endif
+ // Retrieves number of elements in LRU, for unit test purpose only
+ size_t TEST_GetLRUSize();
+ // Sets the high pri pool ratio
+diff --git a/src/kv/rocksdb_cache/ShardedCache.cc b/src/kv/rocksdb_cache/ShardedCache.cc
+index ef3b3b98..6cbd89ad 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.cc
++++ b/src/kv/rocksdb_cache/ShardedCache.cc
+@@ -109,13 +109,36 @@ size_t ShardedCache::GetPinnedUsage() const {
+ return usage;
+ }
+
++#if (ROCKSDB_MAJOR >= 6 && ROCKSDB_MINOR >= 22)
++DeleterFn ShardedCache::GetDeleter(Handle* handle) const
++{
++ uint32_t hash = GetHash(handle);
++ return GetShard(Shard(hash))->GetDeleter(handle);
++}
++
++void ShardedCache::ApplyToAllEntries(
++ const std::function<void(const rocksdb::Slice& key, void* value, size_t charge,
++ DeleterFn deleter)>& callback,
++ const ApplyToAllEntriesOptions& opts)
++{
++ int num_shards = 1 << num_shard_bits_;
++ for (int s = 0; s < num_shards; s++) {
++ GetShard(s)->ApplyToAllCacheEntries(callback, true /* thread_safe */);
++ }
++}
++#else
+ void ShardedCache::ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+ bool thread_safe) {
+ int num_shards = 1 << num_shard_bits_;
+ for (int s = 0; s < num_shards; s++) {
+- GetShard(s)->ApplyToAllCacheEntries(callback, thread_safe);
++ GetShard(s)->ApplyToAllCacheEntries(
++ [callback](const rocksdb::Slice&, void* value, size_t charge, DeleterFn) {
++ callback(value, charge);
++ },
++ thread_safe);
+ }
+ }
++#endif
+
+ void ShardedCache::EraseUnRefEntries() {
+ int num_shards = 1 << num_shard_bits_;
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index 674e5322..4d3ca302 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -14,6 +14,7 @@
+ #include <string>
+ #include <mutex>
+
++#include "rocksdb/version.h"
+ #include "rocksdb/cache.h"
+ #include "include/ceph_hash.h"
+ #include "common/PriorityCache.h"
+@@ -45,10 +46,15 @@ class CacheShard {
+ virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0;
+ virtual size_t GetUsage() const = 0;
+ virtual size_t GetPinnedUsage() const = 0;
+- virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+- bool thread_safe) = 0;
++ virtual void ApplyToAllCacheEntries(
++ const std::function<void(const rocksdb::Slice& key,
++ void* value,
++ size_t charge,
++ DeleterFn)>& callback,
++ bool thread_safe) = 0;
+ virtual void EraseUnRefEntries() = 0;
+ virtual std::string GetPrintableOptions() const { return ""; }
++ virtual DeleterFn GetDeleter(rocksdb::Cache::Handle* handle) const = 0;
+ };
+
+ // Generic cache interface which shards cache by hash of keys. 2^num_shard_bits
+@@ -77,9 +83,19 @@ 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)
++ virtual DeleterFn GetDeleter(Handle* handle) const override;
++#endif
+ virtual void DisownData() override = 0;
++#if (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,
++ const ApplyToAllEntriesOptions& opts) override;
++#else
+ virtual void ApplyToAllCacheEntries(void (*callback)(void*, size_t),
+ bool thread_safe) override;
++#endif
+ virtual void EraseUnRefEntries() override;
+ virtual std::string GetPrintableOptions() const override;
+ virtual CacheShard* GetShard(int shard) = 0;
+--
+2.33.0
+
diff --git a/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch b/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch
new file mode 100644
index 00000000..bc18574c
--- /dev/null
+++ b/recipes-extended/ceph/ceph/0005-kv-rocksdb_cache-mark-Shard-const.patch
@@ -0,0 +1,32 @@
+From 52c57e25a5e2c617bc797b8ce50060b5894bd7fc Mon Sep 17 00:00:00 2001
+From: Kefu Chai <kchai@redhat.com>
+Date: Tue, 17 Aug 2021 18:06:31 +0800
+Subject: [PATCH 5/6] kv/rocksdb_cache: mark Shard() const
+
+it does not mutate anything, so mark it `const`.
+
+Signed-off-by: Kefu Chai <kchai@redhat.com>
+
+Upstream-Status: Backport [0296ac4458c0be0609f033e15b0fa8c6c9c20049]
+
+Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
+---
+ src/kv/rocksdb_cache/ShardedCache.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/kv/rocksdb_cache/ShardedCache.h b/src/kv/rocksdb_cache/ShardedCache.h
+index 4d3ca302..f98421a0 100644
+--- a/src/kv/rocksdb_cache/ShardedCache.h
++++ b/src/kv/rocksdb_cache/ShardedCache.h
+@@ -136,7 +136,7 @@ class ShardedCache : public rocksdb::Cache, public PriorityCache::PriCache {
+ // return Hash(s.data(), s.size(), 0);
+ }
+
+- uint32_t Shard(uint32_t hash) {
++ uint32_t Shard(uint32_t hash) const {
+ // Note, hash >> 32 yields hash in gcc, not the zero we expect!
+ return (num_shard_bits_ > 0) ? (hash >> (32 - num_shard_bits_)) : 0;
+ }
+--
+2.33.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/CVE-2021-3979.patch b/recipes-extended/ceph/ceph/CVE-2021-3979.patch
new file mode 100644
index 00000000..081b32ba
--- /dev/null
+++ b/recipes-extended/ceph/ceph/CVE-2021-3979.patch
@@ -0,0 +1,158 @@
+From 47c33179f9a15ae95cc1579a421be89378602656 Mon Sep 17 00:00:00 2001
+From: Guillaume Abrioux <gabrioux@redhat.com>
+Date: Tue, 25 Jan 2022 10:25:53 +0100
+Subject: [PATCH] ceph-volume: honour osd_dmcrypt_key_size option
+
+ceph-volume doesn't honour osd_dmcrypt_key_size.
+It means the default size is always applied.
+
+It also changes the default value in `get_key_size_from_conf()`
+
+From cryptsetup manpage:
+
+> For XTS mode you can optionally set a key size of 512 bits with the -s option.
+
+Using more than 512bits will end up with the following error message:
+
+```
+Key size in XTS mode must be 256 or 512 bits.
+```
+
+Fixes: https://tracker.ceph.com/issues/54006
+
+Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
+
+Upstream-Status: Backport
+ github.com/ceph/ceph.git
+ equivalent to cherry-pick of commit 47c33179f9a15ae95cc1579a421be89378602656
+
+CVE: CVE-2021-3979
+
+Signed-off-by: Joe Slater <joe.slater@windriver.com>
+---
+ .../ceph_volume/tests/util/test_encryption.py | 41 +++++++++++++------
+ .../ceph_volume/util/encryption.py | 34 ++++++++++-----
+ 2 files changed, 51 insertions(+), 24 deletions(-)
+
+diff --git a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
+index e1420b440d3..c86dc50b7c7 100644
+--- a/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
++++ b/src/ceph-volume/ceph_volume/tests/util/test_encryption.py
+@@ -1,5 +1,31 @@
+ from ceph_volume.util import encryption
++import base64
+
++class TestGetKeySize(object):
++ def test_get_size_from_conf_default(self, conf_ceph_stub):
++ conf_ceph_stub('''
++ [global]
++ fsid=asdf
++ ''')
++ assert encryption.get_key_size_from_conf() == '512'
++
++ def test_get_size_from_conf_custom(self, conf_ceph_stub):
++ conf_ceph_stub('''
++ [global]
++ fsid=asdf
++ [osd]
++ osd_dmcrypt_key_size=256
++ ''')
++ assert encryption.get_key_size_from_conf() == '256'
++
++ def test_get_size_from_conf_custom_invalid(self, conf_ceph_stub):
++ conf_ceph_stub('''
++ [global]
++ fsid=asdf
++ [osd]
++ osd_dmcrypt_key_size=1024
++ ''')
++ assert encryption.get_key_size_from_conf() == '512'
+
+ class TestStatus(object):
+
+@@ -37,17 +63,6 @@ class TestDmcryptClose(object):
+
+ class TestDmcryptKey(object):
+
+- def test_dmcrypt_with_default_size(self, conf_ceph_stub):
+- conf_ceph_stub('[global]\nfsid=asdf-lkjh')
+- result = encryption.create_dmcrypt_key()
+- assert len(result) == 172
+-
+- def test_dmcrypt_with_custom_size(self, conf_ceph_stub):
+- conf_ceph_stub('''
+- [global]
+- fsid=asdf
+- [osd]
+- osd_dmcrypt_size=8
+- ''')
++ def test_dmcrypt(self):
+ result = encryption.create_dmcrypt_key()
+- assert len(result) == 172
++ assert len(base64.b64decode(result)) == 128
+diff --git a/src/ceph-volume/ceph_volume/util/encryption.py b/src/ceph-volume/ceph_volume/util/encryption.py
+index 72a0ccf121e..2a2c03337b6 100644
+--- a/src/ceph-volume/ceph_volume/util/encryption.py
++++ b/src/ceph-volume/ceph_volume/util/encryption.py
+@@ -9,21 +9,29 @@ from .disk import lsblk, device_family, get_part_entry_type
+
+ logger = logging.getLogger(__name__)
+
+-
+-def create_dmcrypt_key():
++def get_key_size_from_conf():
+ """
+- Create the secret dm-crypt key used to decrypt a device.
++ Return the osd dmcrypt key size from config file.
++ Default is 512.
+ """
+- # get the customizable dmcrypt key size (in bits) from ceph.conf fallback
+- # to the default of 1024
+- dmcrypt_key_size = conf.ceph.get_safe(
++ default_key_size = '512'
++ key_size = conf.ceph.get_safe(
+ 'osd',
+ 'osd_dmcrypt_key_size',
+- default=1024,
+- )
+- # The size of the key is defined in bits, so we must transform that
+- # value to bytes (dividing by 8) because we read in bytes, not bits
+- random_string = os.urandom(int(dmcrypt_key_size / 8))
++ default='512')
++
++ if key_size not in ['256', '512']:
++ logger.warning(("Invalid value set for osd_dmcrypt_key_size ({}). "
++ "Falling back to {}bits".format(key_size, default_key_size)))
++ return default_key_size
++
++ return key_size
++
++def create_dmcrypt_key():
++ """
++ Create the secret dm-crypt key (KEK) used to encrypt/decrypt the Volume Key.
++ """
++ random_string = os.urandom(128)
+ key = base64.b64encode(random_string).decode('utf-8')
+ return key
+
+@@ -38,6 +46,8 @@ def luks_format(key, device):
+ command = [
+ 'cryptsetup',
+ '--batch-mode', # do not prompt
++ '--key-size',
++ get_key_size_from_conf(),
+ '--key-file', # misnomer, should be key
+ '-', # because we indicate stdin for the key here
+ 'luksFormat',
+@@ -83,6 +93,8 @@ def luks_open(key, device, mapping):
+ """
+ command = [
+ 'cryptsetup',
++ '--key-size',
++ get_key_size_from_conf(),
+ '--key-file',
+ '-',
+ '--allow-discards', # allow discards (aka TRIM) requests for device
+--
+2.35.1
+
diff --git a/recipes-extended/ceph/ceph_15.2.0.bb b/recipes-extended/ceph/ceph_15.2.15.bb
index 9423faa4..2c5cdf58 100644
--- a/recipes-extended/ceph/ceph_15.2.0.bb
+++ b/recipes-extended/ceph/ceph_15.2.15.bb
@@ -1,10 +1,10 @@
SUMMARY = "User space components of the Ceph file system"
-LICENSE = "LGPLv2.1 & GPLv2 & Apache-2.0 & MIT"
+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=4eb012c221c5fd4b760029a2981a6754 \
"
-inherit cmake python3native python3-dir systemd
+inherit cmake pkgconfig python3native python3-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.
@@ -12,21 +12,23 @@ SRC_URI = "http://download.ceph.com/tarballs/ceph-${PV}.tar.gz \
file://0001-ceph-fix-build-errors-for-cross-compile.patch \
file://0001-fix-host-library-paths-were-used.patch \
file://ceph.conf \
- file://0001-msg-async-ProtocolV2-avoid-AES-GCM-nonce-reuse-vulne.patch \
- file://0001-msg-async-crypto_onwire-fix-endianness-of-nonce_t.patch \
- file://0001-rgw-reject-unauthenticated-response-header-actions.patch \
- file://0001-rgw-EPERM-to-ERR_INVALID_REQUEST.patch \
- file://0001-rgw-reject-control-characters-in-response-header-act.patch \
- file://0001-mgr-require-all-caps-for-pre-octopus-tell-commands.patch \
- file://0002-mon-enforce-caps-for-pre-octopus-client-tell-command.patch \
- file://0003-PendingReleaseNotes-note-about-security-fix.patch \
+ file://0001-cmake-add-support-for-python3.11.patch \
+ file://0001-SnappyCompressor.h-fix-snappy-compiler-error.patch \
+ file://0001-buffer.h-add-missing-header-file-due-to-gcc-upgrade.patch \
+ file://0002-common-fix-FTBFS-due-to-dout-need_dynamic-on-GCC-12.patch \
+ file://CVE-2021-3979.patch \
+ file://0001-kv-rocksdb_cache-drop-ROCKSDB_PRIszt.patch \
+ file://0002-kv-rocksdb_cache-reorder-ShardedCache-methods-declar.patch \
+ file://0003-kv-rocksdb_cache-define-DeleterFn-function-pointer-t.patch \
+ file://0004-kv-rocksdb_cache-implement-methods-required-by-rocks.patch \
+ file://0005-kv-rocksdb_cache-mark-Shard-const.patch \
+ file://0006-rocksdb-build-with-rocksdb-7.y.z.patch \
+ file://0001-common-fix-build-with-GCC-13-missing-cstdint-include.patch \
+ file://0002-common-replace-BitVector-NoInitAllocator-with-wrappe.patch \
+ file://0003-librdb-fix-build-with-gcc-13.patch \
"
-SRC_URI[md5sum] = "1f9af648b4c6d19975aab2583ab99710"
-SRC_URI[sha256sum] = "4292c473d1714a6602c525d7582e4e03ec608f0a1cbc0dd338207e5c7068e0d3"
-SRC_URI[sha1sum] = "7158806ece1483fcccdf1172c20cc34d9401c543"
-SRC_URI[sha384sum] = "20e996dbf30d1e33a6d6aae36960190125ce263d306415bcec5d2b3032b8b8f730deeba3ca318576573127d08909404a"
-SRC_URI[sha512sum] = "07a3ff2ccf1a3abac652ff8c5f1611e7c628fcedcb280adc6cd49792b46fa50c7c29437dc57c2c4a6af708a6833abf8c1a386ef2142d30bd5e1f214ba7aec4f2"
+SRC_URI[sha256sum] = "5dccdaff2ebe18d435b32bfc06f8b5f474bf6ac0432a6a07d144b7c56700d0bf"
DEPENDS = "boost bzip2 curl expat gperf-native \
keyutils libaio libibverbs lz4 \
@@ -35,7 +37,7 @@ DEPENDS = "boost bzip2 curl expat gperf-native \
python3 python3-cython-native rabbitmq-c rocksdb snappy udev \
valgrind xfsprogs zlib \
"
-SYSTEMD_SERVICE_${PN} = " \
+SYSTEMD_SERVICE:${PN} = " \
ceph-radosgw@.service \
ceph-radosgw.target \
ceph-mon@.service \
@@ -73,17 +75,21 @@ EXTRA_OECMAKE = "-DWITH_MANPAGE=OFF \
-DPYTHON_INSTALL_DIR=${PYTHON_SITEPACKAGES_DIR} -DPYTHON_DESIRED=3 \
-DPython3_EXECUTABLE=${PYTHON} \
-DWITH_RADOSGW_KAFKA_ENDPOINT=OFF \
+ -DWITH_REENTRANT_STRSIGNAL=ON \
"
+CXXFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
+CFLAGS += "${HOST_CC_ARCH} ${TOOLCHAIN_OPTIONS}"
+
export STAGING_DIR_HOST
-do_configure_prepend () {
+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 () {
+do_install:append () {
sed -i -e 's:^#!/usr/bin/python$:&3:' \
-e 's:${WORKDIR}.*python3:${bindir}/python3:' \
${D}${bindir}/ceph ${D}${bindir}/ceph-crash \
@@ -99,7 +105,7 @@ do_install_append () {
rm ${D}${systemd_unitdir}/system/ceph-fuse.target ${D}${systemd_unitdir}/system/ceph-fuse@.service
}
-do_install_append_class-target () {
+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
@@ -111,40 +117,41 @@ do_install_append_class-target () {
fi
}
-pkg_postinst_${PN}() {
+pkg_postinst:${PN}() {
if [ -z "$D" ] && [ -e ${sysconfdir}/init.d/populate-volatile.sh ] ; then
${sysconfdir}/init.d/populate-volatile.sh update
fi
}
-FILES_${PN} += "\
+FILES:${PN} += "\
${libdir}/rados-classes/*.so.* \
${libdir}/ceph/compressor/*.so \
${libdir}/rados-classes/*.so \
${libdir}/ceph/*.so \
"
-FILES_${PN} += " \
+FILES:${PN} += " \
/etc/tmpfiles.d/ceph-placeholder.conf \
/etc/default/volatiles/99_ceph-placeholder \
"
-FILES_${PN}-python = "\
+FILES:${PN}-python = "\
${PYTHON_SITEPACKAGES_DIR}/* \
"
-RDEPENDS_${PN} += "\
+RDEPENDS:${PN} += "\
python3-core \
python3-misc \
python3-modules \
python3-prettytable \
${PN}-python \
+ gawk \
"
COMPATIBLE_HOST = "(x86_64).*"
PACKAGES += " \
${PN}-python \
"
-INSANE_SKIP_${PN}-python += "ldflags"
-INSANE_SKIP_${PN} += "dev-so"
+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/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..390797b7
--- /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 = "2c452ebfb86d2007d81dcbd986adf1e4cdc6a7f3"
+SRC_URI = "git://github.com/canonical/cloud-init;branch=23.4.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 d93e4871..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="https://github.com/lkundrak/dev86/archive/v${PV}.tar.gz"
-
-SRC_URI[md5sum] = "288af53f256300777efc91d97c082fda"
-SRC_URI[sha256sum] = "533f2a0d2ed61223040f27e5cd007a11d969aaf34f6b709ece122b1e6fc50580"
-
-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..2b87a8ae 100644
--- a/recipes-extended/diod/diod_1.0.24.bb
+++ b/recipes-extended/diod/diod_1.0.24.bb
@@ -5,12 +5,12 @@ 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}"
+PV = "1.0.24+git"
SRCREV = "0ea3fe3d829b5085307cd27a512708d99ef48199"
-SRC_URI = "git://github.com/chaos/diod.git;protocol=git \
+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 \
@@ -26,11 +26,11 @@ S = "${WORKDIR}/git"
inherit autotools 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-diod-ops.c-add-header-file-for-makedev.patch b/recipes-extended/diod/files/0001-diod-ops.c-add-header-file-for-makedev.patch
index e6f7ece2..49bc507b 100644
--- 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
@@ -13,10 +13,7 @@ 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]
+Upstream-Status: Submitted
Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com>
---
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
index 8b70d8fa..4931a19b 100644
--- 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
@@ -3,13 +3,13 @@ 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.
+Upstream-Status: Inappropriate [embedded specific]
+
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
configure.ac | 9 +++++++++
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
index 65d6ff6b..13e0a86e 100644
--- a/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
+++ b/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
@@ -3,7 +3,7 @@ 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
+Upstream-Status: Inappropriate [embedded specific]
Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
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 091ce3cf..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
@@ -46,6 +46,8 @@ 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>
---
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/xen-guest-image-minimal.bb b/recipes-extended/images/xen-guest-image-minimal.bb
index 63c7510d..fced7639 100644
--- a/recipes-extended/images/xen-guest-image-minimal.bb
+++ b/recipes-extended/images/xen-guest-image-minimal.bb
@@ -4,14 +4,18 @@ 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 c965f221..7f1acbfe 100644
--- a/recipes-extended/images/xen-image-minimal.bb
+++ b/recipes-extended/images/xen-image-minimal.bb
@@ -2,16 +2,16 @@ 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_KERNEL_MODULES} \
xen-tools \
qemu \
"
@@ -21,17 +21,26 @@ IMAGE_INSTALL += " \
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"
+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
@@ -41,21 +50,21 @@ do_check_xen_state() {
addtask check_xen_state before do_rootfs
-syslinux_iso_populate_append() {
+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() {
+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() {
+grubefi_populate:append() {
install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}${EFIDIR}/xen.gz
}
-syslinux_populate_append() {
+syslinux_populate:append() {
install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}/xen.gz
}
@@ -73,14 +82,19 @@ build_syslinux_cfg () {
}
# Enable runqemu. eg: runqemu xen-image-minimal nographic slirp
-WKS_FILE_x86-64 = "directdisk-xen.wks"
-QB_MEM = "-m 400"
-QB_DEFAULT_KERNEL = ""
-QB_DEFAULT_FSTYPE = "wic"
-QB_FSINFO = "wic:kernel-in-fs"
+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"
+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:
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 865e9bbb..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,3 +1,5 @@
+Upstream-Status: Inappropriate [embedded specific]
+
diff --git a/src/Makefile.housekeeping b/src/Makefile.housekeeping
index 1dd1479..13f44dd 100644
--- a/Makefile.housekeeping
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
index 62e8e9df..8a78e7af 100644
--- 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
@@ -9,6 +9,8 @@ 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 ++++--
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
index e424d220..c76fe1ce 100644
--- 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
@@ -8,6 +8,8 @@ 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 ++++++++++--------
diff --git a/recipes-extended/ipxe/ipxe_git.bb b/recipes-extended/ipxe/ipxe_git.bb
index fbaad309..08ed519a 100644
--- a/recipes-extended/ipxe/ipxe_git.bb
+++ b/recipes-extended/ipxe/ipxe_git.bb
@@ -1,37 +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"
+# syslinux has this restriction
+COMPATIBLE_HOST:class-target = '(x86_64|i.86).*-(linux|freebsd.*)'
+
SRCREV = "18dc73d27edb55ebe9cb13c58d59af3da3bd374b"
-PV = "gitr${SRCPV}"
+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..1200f707 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,18 +1,21 @@
-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
+index c05b2c0..2ce753f 100644
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,8 @@
@@ -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 --%,$(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..3ac3fecc 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
+index 2ce753f..fe2e3cb 100644
--- a/Makefile
+++ b/Makefile
-@@ -2,6 +2,7 @@
- # Define WERROR=0 to disable -Werror.
- #
+@@ -4,6 +4,7 @@
+
+ CFLAGS += $(EXTRA_CFLAGS)
+WERROR = 0
ifeq ($(strip $(V)),)
- E = @echo
- Q = @
---
-2.7.4
+ ifeq ($(findstring s,$(filter-out --%,$(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.bb
index 90ad8a1f..53d8f9d2 100644
--- a/recipes-extended/kvmtool/kvmtool.bb
+++ b/recipes-extended/kvmtool/kvmtool.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 = "336751fb10ef24e65cd2f25c450da1d52ff5b33c"
+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
index fa7eee62..048b6b65 100644
--- a/recipes-extended/libibverbs/libibverbs_1.2.1.bb
+++ b/recipes-extended/libibverbs/libibverbs_1.2.1.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Libibverbs is a library that allows userspace processes to use In
HOMEPAGE = "http://www.openfabrics.org/downloads/verbs/"
SECTION = "libs/devel"
-LICENSE = "BSD"
+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
@@ -16,19 +16,19 @@ inherit autotools
DEPENDS = "libnl pkgconfig-native"
PACKAGES += "${PN}-utils"
-FILES_${PN} = "${sysconfdir} ${libdir}/*.so.*"
-FILES_${PN}-utils = "${bindir}"
+FILES:${PN} = "${sysconfdir} ${libdir}/*.so.*"
+FILES:${PN}-utils = "${bindir}"
PACKAGECONFIG ??= ""
PACKAGECONFIG[valgrind] = "--with-valgrind,--without-valgrind,valgrind,"
-do_install_append() {
+do_install:append() {
mkdir -p ${D}${sysconfdir}/libibverbs.d
rm -f ${D}${libdir}/libibverbs.la
}
PROVIDES = "virtual/libibverbs"
-RPROVIDES_${PN} = "virtual/libibverbs"
+RPROVIDES:${PN} = "virtual-libibverbs"
-COMPATIBLE_HOST_mipsarch = "none"
-COMPATIBLE_HOST_arm = "none"
+COMPATIBLE_HOST:mipsarch = "none"
+COMPATIBLE_HOST:arm = "none"
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_4.0.0.bb b/recipes-extended/libvirt/libvirt-glib_4.0.0.bb
new file mode 100644
index 00000000..7ca65a95
--- /dev/null
+++ b/recipes-extended/libvirt/libvirt-glib_4.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 = "e0bfc34682744a74b850fa217e9c206a9eb80612"
+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 7b87d5e1..6fb2b68c 100644
--- a/recipes-extended/libvirt/libvirt-python.inc
+++ b/recipes-extended/libvirt/libvirt-python.inc
@@ -1,24 +1,26 @@
-inherit python3native python3-dir
+inherit python3native python3-dir python3targetconfig
export STAGING_INCDIR
export STAGING_LIBDIR
export BUILD_SYS
export HOST_SYS
-RDEPENDS_${PN}-python += "python3"
+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[libvirt_python.md5sum] = "4cf898350ee9a47f94986d402c153bdb"
-SRC_URI[libvirt_python.sha256sum] = "c772421ecc144f098f4ab15db700c62db9b9e6e76b876217edcfd62e9ce02750"
+SRC_URI[libvirt_python.sha256sum] = "a82588f0e7db53eda7b7dbcbc448b0ec43e00a8c77cac69644495299b410c20d"
export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
export LIBVIRT_CFLAGS = "-I${S}/include"
@@ -38,7 +40,7 @@ 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
@@ -49,7 +51,7 @@ do_compile_append() {
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
diff --git a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch b/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
deleted file mode 100644
index f02a5d64..00000000
--- a/recipes-extended/libvirt/libvirt/0001-build-drop-unnecessary-libgnu.la-reference.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 30a056069cb35804434fb036e51ae97f33c02025 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@gmail.com>
-Date: Sat, 7 Mar 2020 21:36:27 -0500
-Subject: [PATCH] build: drop unnecessary libgnu.la reference
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-
----
- tools/Makefile.am | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 2a0a989..93fe283 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -168,7 +168,6 @@ virt_host_validate_LDADD = \
-
- if WITH_GNUTLS
- virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
-@@ -270,7 +269,6 @@ BUILT_SOURCES =
-
- if WITH_GNUTLS
- virsh_LDADD += ../src/libvirt-net-rpc.la \
-- ../gnulib/lib/libgnu.la \
- $(NULL)
- endif
-
diff --git a/recipes-extended/libvirt/libvirt/0001-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 abb0b1af..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
@@ -6,6 +6,8 @@ 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>
---
diff --git a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch b/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
deleted file mode 100644
index b0148e5c..00000000
--- a/recipes-extended/libvirt/libvirt/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 3566bcacaa6408fb8f655d1749a20b2f30e0c765 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@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 ce3d296..2c8180f 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -366,7 +366,7 @@ EXTRA_DIST= \
- aclperms.htmlinc \
- $(schema_DATA)
-
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
-
- aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
- $(top_srcdir)/scripts/genaclperms.py Makefile.am
-@@ -432,8 +432,7 @@ manpages/%.html.in: manpages/%.rst
- $(AM_V_GEN)$(MKDIR_P) `dirname $@` && \
- $(RST2HTML) --strict $< > $@ || { rm $@ && exit 1; }
-
--%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
-- $(acl_generated)
-+%.html.tmp: %.html.in site.xsl subsite.xsl page.xsl
- $(AM_V_GEN)name=`echo $@ | sed -e 's/.tmp//'`; \
- genhtmlin=`echo $@ | sed -e 's/.tmp/.in/'`; \
- rst=`echo $@ | sed -e 's/.html.tmp/.rst/'`; \
diff --git a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index 395d5610..00000000
--- a/recipes-extended/libvirt/libvirt/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 79f5975db01af0599860ccca7ef44b0e27105a04 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@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 8375415..12b51f7 100644
---- a/m4/virt-xdr.m4
-+++ b/m4/virt-xdr.m4
-@@ -30,10 +30,10 @@ AC_DEFUN([LIBVIRT_CHECK_XDR], [
- ])
- with_xdr="yes"
-
-- dnl Recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+ dnl Recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
- old_CFLAGS=$CFLAGS
- AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
-- for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+ for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
- if test x"$add_CFLAGS" = xmissing; then
- lv_cv_xdr_cflags=missing; break
- fi
diff --git a/recipes-extended/libvirt/libvirt/install-missing-file.patch b/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index 6aa36df8..00000000
--- a/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From aa75f5136066d239d48a21373b3d96ee12378e8d Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@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 4a808dd..0c3e799 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -173,6 +173,7 @@ EXTRA_DIST = \
- $(NULL)
-
- test_helpers = commandhelper ssh
-+test_misc =
- test_programs = virshtest sockettest \
- virhostcputest virbuftest \
- commandtest seclabeltest \
-@@ -311,6 +312,7 @@ endif WITH_LXC
-
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
-
- if WITH_ESX
-@@ -1551,7 +1553,7 @@ endif ! WITH_LINUX
-
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh virschematest
-
- install-ptest:
- list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
diff --git a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef6..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@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 87b55915..00000000
--- a/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 94bd514e1b6e602a48285db94e65050f8f0c2585 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@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 605c2fd..e0ab018 100644
---- a/m4/virt-libpcap.m4
-+++ b/m4/virt-libpcap.m4
-@@ -23,14 +23,14 @@ AC_DEFUN([LIBVIRT_ARG_LIBPCAP], [
-
- AC_DEFUN([LIBVIRT_CHECK_LIBPCAP], [
- LIBPCAP_REQUIRED="1.5.0"
-- LIBPCAP_CONFIG="pcap-config"
-+ LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
-
- if test "x$with_libpcap" != "xno"; then
- case $with_libpcap in
-- ''|yes|check) LIBPCAP_CONFIG="pcap-config" ;;
-- *) LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+ ''|yes|check) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+ *) LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
- esac
- AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
- AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
diff --git a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e839..00000000
--- a/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@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 f6bc7736..00000000
--- a/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From d210838a4433dd254c1a11b08b804ebe9ff5f378 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@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 ada5b8f..4a808dd 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -28,11 +28,13 @@ AM_CPPFLAGS = \
-
- WARN_CFLAGS += $(RELAXED_FRAME_LIMIT_CFLAGS)
-
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
-- -Dabs_builddir="\"$(abs_builddir)\"" \
-- -Dabs_top_builddir="\"$(abs_top_builddir)\"" \
-- -Dabs_srcdir="\"$(abs_srcdir)\"" \
-- -Dabs_top_srcdir="\"$(abs_top_srcdir)\"" \
-+ -Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_builddir="\"$(PTEST_DIR)\"" \
-+ -Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+ -Dabs_top_srcdir="\"$(PTEST_DIR)\"" \
- $(LIBXML_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(LIBNL_CFLAGS) \
-@@ -474,10 +476,10 @@ TESTS = $(test_programs) \
-
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT = \
-- abs_top_builddir="$(abs_top_builddir)" \
-- abs_top_srcdir="$(abs_top_srcdir)" \
-- abs_builddir="$(abs_builddir)" \
-- abs_srcdir="$(abs_srcdir)" \
-+ abs_top_builddir="$(PTEST_DIR)" \
-+ abs_top_srcdir="$(PTEST_DIR)" \
-+ abs_builddir="$(PTEST_DIR)/tests" \
-+ abs_srcdir="$(PTEST_DIR)/tests" \
- LIBVIRT_AUTOSTART=0 \
- LC_ALL=C \
- VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE) \
-@@ -1547,4 +1549,54 @@ else ! WITH_LINUX
- EXTRA_DIST += virscsitest.c
- endif ! WITH_LINUX
-
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh virschematest
-+
-+install-ptest:
-+ list='$(TESTS) $(test_helpers) test-lib.sh virschematest'
-+ install -d $(DEST_DIR)/tools
-+ @(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+ install * $(DEST_DIR)/tools)
-+ install -d $(DEST_DIR)/src/network
-+ cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
-+ install -d $(DEST_DIR)/src/cpu_map
-+ cp $(top_srcdir)/src/cpu_map/*.xml $(DEST_DIR)/src/cpu_map
-+ install ../src/libvirt_iohelper $(DEST_DIR)/src
-+ install -D ../src/libvirtd $(DEST_DIR)/src/libvirtd
-+ install -d $(DEST_DIR)/src/remote
-+ install -D $(top_srcdir)/../build/src/remote/libvirtd.conf $(DEST_DIR)/src/remote/libvirtd.conf
-+ install -d $(DEST_DIR)/src/remote/.libs
-+ @(if [ -d ../src/remote/.libs ] ; then cd ../src/remote/.libs; fi; \
-+ install * $(DEST_DIR)/src/remote/.libs)
-+ install -d $(DEST_DIR)/src/.libs
-+ @(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+ install * $(DEST_DIR)/src/.libs)
-+ install -d $(DEST_DIR)/docs/schemas
-+ cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+ cp -r $(top_srcdir)/build-aux $(DEST_DIR)
-+ install -d $(DEST_DIR)/examples/xml
-+ cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
-+ install -d $(DEST_DIR)/tests/.libs
-+ find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+ find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+ @(for file in $(PTESTS); do \
-+ if [ -f .libs/$$file ]; then \
-+ install .libs/$$file $(DEST_DIR)/tests; \
-+ elif [ -f $(srcdir)/$$file ]; then \
-+ install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+ else \
-+ install $(builddir)/$$file $(DEST_DIR)/tests; \
-+ fi; \
-+ done;)
-+ @(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+ cp ../config.h $(DEST_DIR)
-+ cp Makefile $(DEST_DIR)/tests
-+ sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+ cp ../Makefile $(DEST_DIR)
-+ sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+ sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+ sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda
diff --git a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index bb500fde..00000000
--- a/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 7dc21edd851b260485b432c096f8e90f6fa07778 Mon Sep 17 00:00:00 2001
-From: Dengke Du <dengke.du@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 | 20 ++++++++++++++++++++
- tools/Makefile.am | 12 ++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index ad635bd..a94f41d 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -74,6 +74,10 @@ LDADD = \
- $(top_builddir)/src/libvirt-admin.la \
- $(NULL)
-
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS = \
- c/admin/client_close \
- c/admin/client_info \
-@@ -111,6 +115,22 @@ c_misc_openauth_SOURCES = c/misc/openauth.c
- examplesdir = $(docdir)/examples
-
- adminexamplesdir = $(examplesdir)/c/admin
-+
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la \
-+ $(LDADD) \
-+ $(NULL)
-+endif
-+
- adminexamples_DATA = $(ADMIN_EXAMPLES)
-
- domainexamplesdir = $(examplesdir)/c/domain
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 53df930..2a0a989 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -166,6 +166,12 @@ virt_host_validate_LDADD = \
- $(GLIB_LIBS) \
- $(NULL)
-
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- virt_host_validate_CFLAGS = \
- $(AM_CFLAGS) \
- $(NULL)
-@@ -262,6 +268,12 @@ virt_admin_CFLAGS = \
- $(READLINE_CFLAGS)
- BUILT_SOURCES =
-
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+ ../gnulib/lib/libgnu.la \
-+ $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
-
diff --git a/recipes-extended/libvirt/libvirt_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_6.3.0.bb b/recipes-extended/libvirt/libvirt_6.3.0.bb
deleted file mode 100644
index 08e2961c..00000000
--- a/recipes-extended/libvirt/libvirt_6.3.0.bb
+++ /dev/null
@@ -1,418 +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 \
- 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_${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://0001-build-drop-unnecessary-libgnu.la-reference.patch \
- file://hook_support.py \
- file://gnutls-helper.py \
- "
-
-SRC_URI[libvirt.md5sum] = "1bd4435f77924f5ec9928b538daf4a02"
-SRC_URI[libvirt.sha256sum] = "74069438d34082336e99a88146349e21130552b96efc3b7c562f6878127996f5"
-
-inherit autotools gettext update-rc.d pkgconfig ptest systemd useradd perlnative
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r qemu; -r kvm"
-USERADD_PARAM_${PN} = "-r -g qemu -G kvm qemu"
-
-# Override the default set in autotools.bbclass so that we will use relative pathnames
-# to our local m4 files. This prevents an "Argument list too long" error during configuration
-# if our project is in a directory with an absolute pathname of more than about 125 characters.
-#
-acpaths = "-I ./m4"
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DMIDECODE=/usr/sbin/dmidecode \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
-
-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[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,xen,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
-PACKAGECONFIG[python] = ",,python3,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-PACKAGECONFIG[apparmor-profiles] = "--with-apparmor-profiles, --without-apparmor-profiles,"
-PACKAGECONFIG[firewalld] = "--with-firewalld, --without-firewalld,"
-PACKAGECONFIG[libpcap] = "--with-libpcap, --without-libpcap,libpcap,libpcap"
-PACKAGECONFIG[numad] = "--with-numad, --without-numad,"
-
-# 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:"
- oe_runmake 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
- # 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
- ;;
- *)
- 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_OECONF += " \
- --with-init-script=systemd \
- --with-test-suite \
- "
-
-# 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"
-
-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..aa7fabb6 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 = "41600b602815a9c42620cd5a96c5b88739fc6d9b"
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
index 7a12e730..fb34c5c7 100644
--- 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
@@ -5,7 +5,7 @@ Subject: [PATCH] Should fix #235 (nasty_metachars was not being returned when
specified in cfg file
CVE: CVE-2020-6581
-Upstream Status: Backport [4f7dd1199f1f3f72f9197e8565da339a4a2490b7]
+Upstream-Status: Backport [4f7dd1199f1f3f72f9197e8565da339a4a2490b7]
Signed-off-by: Sakib Sajal <sakib.sajal@windriver.com>
---
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_4.0.2.bb b/recipes-extended/nagios/nagios-nrpe_4.0.2.bb
index d9c7b159..ac54469b 100644
--- a/recipes-extended/nagios/nagios-nrpe_4.0.2.bb
+++ b/recipes-extended/nagios/nagios-nrpe_4.0.2.bb
@@ -4,7 +4,7 @@ DESCRIPTION = "Nagios Remote Plugin Executor"
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"
@@ -26,6 +26,8 @@ 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"
@@ -57,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
@@ -81,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
index a2786fd7..f401d7b9 100644
--- a/recipes-extended/seabios/seabios/python3.patch
+++ b/recipes-extended/seabios/seabios/python3.patch
@@ -1,3 +1,5 @@
+Upstream-Status: Inappropriate [embedded specific]
+
diff --git a/Makefile b/Makefile
index 516cb38..7f6acaa 100644
--- a/Makefile
diff --git a/recipes-extended/seabios/seabios_1.13.0.bb b/recipes-extended/seabios/seabios_1.16.0.bb
index 4cf44201..ebab54bf 100644
--- a/recipes-extended/seabios/seabios_1.13.0.bb
+++ b/recipes-extended/seabios/seabios_1.16.0.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "SeaBIOS"
HOMEPAGE = "http://www.coreboot.org/SeaBIOS"
-LICENSE = "LGPLv3"
+LICENSE = "LGPL-3.0-only"
SECTION = "firmware"
inherit python3native
@@ -15,11 +15,9 @@ S = "${WORKDIR}/${PN}-${PV}"
LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6 \
"
+SRC_URI[sha256sum] = "d44d8e97ad56f3fd23ed3076077a770d37a5e7bae22daa59656ff41c3334fb34"
-SRC_URI[md5sum] = "1dc1725bac1d230bfd6b3204eed4f2f7"
-SRC_URI[sha256sum] = "37673dc2d6308591b15bdb94e5bcc3e99bdb40198d2247733c43f50b55dbe703"
-
-FILES_${PN} = "/usr/share/firmware"
+FILES:${PN} = "/usr/share/firmware"
DEPENDS += "util-linux-native file-native bison-native flex-native gettext-native acpica-native"
@@ -27,6 +25,9 @@ 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/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
index db4c53f5..09a43754 100644
--- 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
@@ -1,3 +1,5 @@
+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/recipes-extended/uxen/uxen-guest-tools_4.1.7.bb b/recipes-extended/uxen/uxen-guest-tools_4.1.7.bb
deleted file mode 100644
index 757f1e3b..00000000
--- a/recipes-extended/uxen/uxen-guest-tools_4.1.7.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-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 = "GPLv2"
-
-COMPATIBLE_HOST = '(x86_64.*).*-linux'
-
-SRC_URI = " \
- https://www.bromium.com/wp-content/uploads/2019/06/uxen-vmsupport-linux-${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 \
- "
-
-SRC_URI[uxen.sha384sum] = "d9d7a1fa5c44ac77eea3d8d4756f9e07fc02acfe12606325ff0bb8a60c07abc3e9ddb80c2039797fb2122d750219722f"
-SRC_URI[license.sha384sum] = "92e48c614df3094cb52321d4c4e01f6df5526d46aee5c6fa36c43ee23d4c33f03baa1fc5f6f29efafff636b6d13bc92c"
-
-# The software license is GPLv2: please see page 199 of the pdf document
-LIC_FILES_CHKSUM = "file://../Bromium-4.1.8-Open-Source-Software.pdf;md5=cf120df6ffa417b36f870a9997650049"
-
-S = "${WORKDIR}/uxen-vmsupport-linux-${PV}"
-
-inherit module
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-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 34e79774..b9117f0c 100644
--- a/recipes-extended/xen/README
+++ b/recipes-extended/xen/README
@@ -25,6 +25,9 @@ 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
----------------
@@ -33,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-Config.mk-drop-Wdeclaration-after-statement.patch b/recipes-extended/xen/files/0001-Config.mk-drop-Wdeclaration-after-statement.patch
new file mode 100644
index 00000000..dcfffb06
--- /dev/null
+++ b/recipes-extended/xen/files/0001-Config.mk-drop-Wdeclaration-after-statement.patch
@@ -0,0 +1,42 @@
+From 70e8b986fe78f5fbd1dfdef4f02ea9b50c7158db Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 28 Nov 2023 18:34:17 +0100
+Subject: [PATCH] Config.mk: drop -Wdeclaration-after-statement
+
+Such constructs are fully allowed by C99:
+https://gcc.gnu.org/onlinedocs/gcc-12.2.0/gcc/Mixed-Labels-and-Declarations.html#Mixed-Labels-and-Declarations
+
+If the flag is present, then building against python 3.12 will fail thusly:
+
+| In file included from /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/Python.h:44,
+| from xen/lowlevel/xc/xc.c:8:
+| /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/object.h: In function 'Py_SIZE':
+| /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/object.h:233:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
+| 233 | PyVarObject *var_ob = _PyVarObject_CAST(ob);
+| | ^~~~~~~~~~~
+| In file included from /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/Python.h:53:
+| /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/cpython/longintrepr.h: In function '_PyLong_CompactValue':
+| /srv/storage/alex/yocto/build-virt/tmp/work/core2-64-poky-linux/xen-tools/4.17+stable/recipe-sysroot/usr/include/python3.12/cpython/longintrepr.h:121:5: error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
+| 121 | Py_ssize_t sign = 1 - (op->long_value.lv_tag & _PyLong_SIGN_MASK);
+| | ^~~~~~~~~~
+| cc1: all warnings being treated as errors
+
+Upstream-Status: Submitted [by email to xen-devel@lists.xenproject.org and maintainers printed by get_maintainer.pl]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ Config.mk | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/Config.mk b/Config.mk
+index 8bc2bcd5f6..09d5e8ebde 100644
+--- a/Config.mk
++++ b/Config.mk
+@@ -173,8 +173,6 @@ CFLAGS += -std=gnu99
+
+ CFLAGS += -Wall -Wstrict-prototypes
+
+-$(call cc-option-add,HOSTCFLAGS,HOSTCC,-Wdeclaration-after-statement)
+-$(call cc-option-add,CFLAGS,CC,-Wdeclaration-after-statement)
+ $(call cc-option-add,CFLAGS,CC,-Wno-unused-but-set-variable)
+ $(call cc-option-add,CFLAGS,CC,-Wno-unused-local-typedefs)
+
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.14.patch b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch
index f0688fd9..476f5ddc 100644
--- a/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.14.patch
+++ b/recipes-extended/xen/files/0001-python-pygrub-pass-DISTUTILS-xen-4.15.patch
@@ -1,8 +1,11 @@
-From d79dcc2002008c58683de82f06c168d6eea57991 Mon Sep 17 00:00:00 2001
+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
@@ -18,22 +21,32 @@ 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 3063c49..513314b 100644
+index 37b2146214..ffb9270065 100644
--- a/tools/pygrub/Makefile
+++ b/tools/pygrub/Makefile
-@@ -10,14 +10,17 @@ INSTALL_LOG = build/installed_files.txt
+@@ -10,7 +10,7 @@ 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)
+- 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
- $(INSTALL_DIR) $(DESTDIR)/$(bindir)
- CC="$(CC)" CFLAGS="$(PY_CFLAGS)" LDFLAGS="$(PY_LDFLAGS)" $(PYTHON) \
- setup.py install --record $(INSTALL_LOG) $(PYTHON_PREFIX_ARG) \
+@@ -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)
@@ -43,24 +56,18 @@ index 3063c49..513314b 100644
"`readlink -f $(DESTDIR)/$(bindir)`" != \
"`readlink -f $(LIBEXEC_BIN)`" ]; then \
diff --git a/tools/python/Makefile b/tools/python/Makefile
-index 541858e..4d4a344 100644
+index cc76423647..5cb11ae453 100644
--- a/tools/python/Makefile
+++ b/tools/python/Makefile
-@@ -10,7 +10,7 @@ INSTALL_LOG = build/installed_files.txt
+@@ -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:
-- 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_PYTHON_PROG) scripts/convert-legacy-stream $(DESTDIR)$(LIBEXEC_BIN)
- $(INSTALL_PYTHON_PROG) scripts/verify-stream-v2 $(DESTDIR)$(LIBEXEC_BIN)
+--
+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-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/files/0001-xen-build-temporarily-inhibit-Werror-4.14.patch b/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror-4.14.patch
deleted file mode 100644
index 0e0a3dc4..00000000
--- a/recipes-extended/xen/files/0001-xen-build-temporarily-inhibit-Werror-4.14.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 9cff3bf8425ccc593825fcde8ca5eaa32a43d04d Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@gmail.com>
-Date: Thu, 18 Jun 2020 09:05:22 -0400
-Subject: [PATCH] xen/build: temporarily inhibit Werror
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
-Rebased on Xen 4.14:
-Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
----
- tools/libxl/Makefile | 2 +-
- xen/Rules.mk | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile
-index 6da342ed61..c67560e269 100644
---- a/tools/libxl/Makefile
-+++ b/tools/libxl/Makefile
-@@ -11,7 +11,7 @@ MINOR = 0
- XLUMAJOR = 4.14
- XLUMINOR = 0
-
--CFLAGS += -Werror -Wno-format-zero-length -Wmissing-declarations \
-+CFLAGS += -Wno-format-zero-length -Wmissing-declarations \
- -Wno-declaration-after-statement -Wformat-nonliteral
- CFLAGS += -I. -fPIC
-
diff --git a/recipes-extended/xen/files/xen-arm64-implement-atomic-fetch-add.patch b/recipes-extended/xen/files/xen-arm64-implement-atomic-fetch-add.patch
deleted file mode 100644
index 6e957a50..00000000
--- a/recipes-extended/xen/files/xen-arm64-implement-atomic-fetch-add.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Christopher Clark <christopher.w.clark@gmail.com>
-Date: Fri, 26 June 2020 16:34:00 -0800
-Subject: [PATCH] xen: implement atomic op to fix arm64 compilation
-
-Xen's ARM implementation of arch_fetch_and_add since f9cc3cd9
-uses a builtin, despite the build being performed with -fno-builtin.
-With gcc 10.1.0, this now breaks prelinking spinlock.c, so
-implement the one atomic operation that is required with logic
-derived from Linux's atomic_ll_sc.h: ATOMIC_FETCH_OP and comparison with
-the binary produced with and without the patch with gcc 9.2.0.
-
-Signed-off-by: Christopher Clark <christopher.w.clark@gmail.com>
-diff --git a/xen/include/asm-arm/system.h b/xen/include/asm-arm/system.h
-index e5d062667d..c46dd3ac71 100644
---- a/xen/include/asm-arm/system.h
-+++ b/xen/include/asm-arm/system.h
-@@ -55,7 +55,32 @@ static inline int local_abort_is_enabled(void)
- return !(flags & PSR_ABT_MASK);
- }
-
-+#ifdef CONFIG_ARM_64
-+
-+/* see atomic_ll_sc.h: ATOMIC_FETCH_OP(name, mb, acq, rel, cl, op, asm_op, constraint) */
-+static inline int arch_fetch_and_add(unsigned int *ptr, unsigned long i)
-+{
-+ int register lptr asm("x0");
-+ int register result asm("w1");
-+ int register newval asm("w2");
-+ int register status asm("w3");
-+
-+ asm volatile(
-+ " mov %[lptr], %[ptr]\n"
-+ "1: ldxr %w[result], [%[lptr]]\n"
-+ " add %w[newval], %w[result], %w[i]\n"
-+ " stlxr %w[status], %w[newval], [%[lptr]]\n"
-+ " cbnz %w[status], 1b\n"
-+ " dmb ish\n"
-+ : [result] "=&r" (result), [lptr] "=&r" (lptr), [newval] "=&r" (newval), [status] "=&r" (status), [i] "+r" (i), "+Q" (*ptr)
-+ : [ptr] "r" (ptr), "r" (i)
-+ : "memory");
-+
-+ return result;
-+}
-+#else
- #define arch_fetch_and_add(x, v) __sync_fetch_and_add(x, v)
-+#endif
-
- extern struct vcpu *__context_switch(struct vcpu *prev, struct vcpu *next);
-
diff --git a/recipes-extended/xen/xen-blktap.inc b/recipes-extended/xen/xen-blktap.inc
index 5f385ddc..2c8cb1fd 100644
--- a/recipes-extended/xen/xen-blktap.inc
+++ b/recipes-extended/xen/xen-blktap.inc
@@ -20,45 +20,45 @@ BLKTAP_PROVIDES ?= " \
"
BLKTAP_RRECOMMENDS ?= " \
- virtual/blktap \
- virtual/libblktap \
- virtual/libblktapctl \
- virtual/libvhd \
+ 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"
+RPROVIDES:${PN}-blktap = "virtual-blktap"
+RPROVIDES:${PN}-libblktap = "virtual-libblktap"
+RPROVIDES:${PN}-libblktapctl = "virtual-libblktapctl"
+RPROVIDES:${PN}-libvhd = "virtual-libvhd"
-FILES_${PN}-blktap-staticdev += "\
+FILES:${PN}-blktap-staticdev += "\
${libdir}/libblktapctl.a \
${libdir}/libvhd.a \
${libdir}/libblktap.a \
"
-FILES_${PN}-libblktapctl = "${libdir}/libblktapctl.so.*"
-FILES_${PN}-libblktapctl-dev = " \
+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 = " \
+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 = " \
+FILES:${PN}-libblktap = "${libdir}/libblktap.so.*"
+FILES:${PN}-libblktap-dev = " \
${libdir}/libblktap.so \
${libdir}/pkgconfig/blktap.pc \
${datadir}/pkgconfig/blktap.pc \
"
-FILES_${PN}-blktap = "\
+FILES:${PN}-blktap = "\
${sbindir}/blktapctrl \
${sbindir}/img2qcow \
${sbindir}/lock-util \
diff --git a/recipes-extended/xen/xen-hypervisor.inc b/recipes-extended/xen/xen-hypervisor.inc
index c386917d..6f3d24d0 100644
--- a/recipes-extended/xen/xen-hypervisor.inc
+++ b/recipes-extended/xen/xen-hypervisor.inc
@@ -9,7 +9,7 @@ DESCRIPTION = "The Xen 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
+inherit deploy python3native cml1
PACKAGES = " \
${PN} \
@@ -17,7 +17,7 @@ PACKAGES = " \
${PN}-efi \
"
-FILES_${PN} = " \
+FILES:${PN} = " \
/boot/xen-* \
/boot/xen \
/boot/xen-*.gz \
@@ -25,24 +25,47 @@ FILES_${PN} = " \
/boot/xen-syms-* \
"
-FILES_${PN}-dbg += "${libdir}/debug/*"
+FILES:${PN}-dbg += "${libdir}/debug/*"
-FILES_${PN}-efi = " \
+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}"
+ 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}
@@ -64,11 +87,13 @@ do_deploy() {
# 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 -- which is always after
-# do_compile, so that handles 'after do_compile' too
+# 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_populate_sysroot before do_build
+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"
@@ -77,35 +102,16 @@ do_deploy[depends] += "xen-tools:do_populate_sysroot"
do_deploy[depends] += "xen-tools:do_deploy"
# 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
+# Pass the native library path for kconfig build when running the do_menuconfig
+# task
+CROSS_CURSES_LIB += "-L${STAGING_LIBDIR_NATIVE}"
- try:
- mtime = os.path.getmtime("xen/.config")
- shutil.copy("xen/.config", "xen/.config.orig")
- except OSError:
- mtime = 0
+# Specify the root dir of the .config file for do_menuconfig and do_diffconfig
+# tasks
+KCONFIG_CONFIG_ROOTDIR = "${S}/xen"
- 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
+# 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-python2.bb b/recipes-extended/xen/xen-python2.bb
deleted file mode 100644
index ad3c1fd6..00000000
--- a/recipes-extended/xen/xen-python2.bb
+++ /dev/null
@@ -1,71 +0,0 @@
-SUMMARY = "Xen hypervisor tools written in python 2"
-DESCRIPTION = "Unported utility scripts for the Xen hypervisor"
-HOMEPAGE = "http://xen.org"
-LICENSE = "GPLv2"
-SECTION = "console/tools"
-
-SRCREV ?= "a5fcafbfbee55261853fba07149c1c795f2baf58"
-
-# The same restriction as xen-tools.inc, because of the dependency on xen-tools-xentrace from xen-tools-xentrace-format
-COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux-gnueabi'
-
-XEN_REL ?= "4.12"
-XEN_BRANCH ?= "stable-4.12"
-
-SRC_URI = "git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH}"
-
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095"
-
-PV = "${XEN_REL}+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# Packages in this recipe do not use ${PN} to allow for simpler
-# movement of the package back into the xen-tools recipe if/when
-# the scripts are ported to python 3.
-
-RDEPENDS_xen-tools-xencov-split ="python"
-RDEPENDS_xen-tools-xencons = "python"
-RDEPENDS_xen-tools-xenpvnetboot = "python"
-RDEPENDS_xen-tools-xentrace-format = "python"
-
-RRECOMMENDS_xen-tools-xencov-trace = "xen-tools-xencov"
-RRECOMMENDS_xen-tools-xentrace-format = "xen-tools-xentrace"
-
-PACKAGES = " \
- xen-tools-xencons \
- xen-tools-xencov-split \
- xen-tools-xenpvnetboot \
- xen-tools-xentrace-format \
- "
-
-FILES_xen-tools-xencons = " \
- ${bindir}/xencons \
- "
-
-FILES_xen-tools-xencov-split = " \
- ${bindir}/xencov_split \
- "
-
-FILES_xen-tools-xenpvnetboot = " \
- ${libdir}/xen/bin/xenpvnetboot \
- "
-
-FILES_xen-tools-xentrace-format = " \
- ${bindir}/xentrace_format \
- "
-
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-do_install() {
- install -d ${D}${bindir}
- install -m 0755 ${S}/tools/xentrace/xentrace_format \
- ${D}${bindir}/xentrace_format
- install -m 0755 ${S}/tools/misc/xencons ${D}${bindir}/xencons
- install -m 0755 ${S}/tools/misc/xencov_split ${D}${bindir}/xencov_split
-
- install -d ${D}${libdir}/xen/bin
- install -m 0755 ${S}/tools/misc/xenpvnetboot \
- ${D}${libdir}/xen/bin/xenpvnetboot
-}
diff --git a/recipes-extended/xen/xen-tools.inc b/recipes-extended/xen/xen-tools.inc
index ace1a013..30608fb2 100644
--- a/recipes-extended/xen/xen-tools.inc
+++ b/recipes-extended/xen/xen-tools.inc
@@ -6,30 +6,7 @@ COMPATIBLE_HOST = 'i686-.*-linux|(x86_64.*).*-linux|aarch64.*-linux|arm-.*-linux
inherit setuptools3 update-rc.d systemd deploy
require xen-blktap.inc
-# To build hvmloader, which is needed on x86-64 targets when 'hvm' is enabled
-# in PACKAGECONFIG, to support running HVM-mode guest VMs, some files from
-# 32-bit glibc are needed.
-# Add the multilib 32-bit glibc to DEPENDS only when necessary.
-#
-# To enable multilib, please add the following to your local.conf -:
-#
-# require conf/multilib.conf
-# MULTILIBS = "multilib:lib32"
-# DEFAULTTUNE_virtclass-multilib-lib32 = "x86"
-
-# Use this multilib prefix for x86 32-bit to match local.conf:
-MLPREFIX32 = "lib32-"
-
-# The DEPENDS on a multilib 32-bit glibc is only added when target is x86-64
-# and 'hvm' is enabled in PACKAGECONFIG.
-# This x86-64 override is never intended for native use, so clear that.
-GLIBC32 = ""
-GLIBC32_x86-64 = \
- "${@bb.utils.contains('PACKAGECONFIG', 'hvm', '${MLPREFIX32}glibc', '', d)}"
-GLIBC32_class-native = ""
-DEPENDS += "${GLIBC32}"
-
-RDEPENDS_${PN} = "\
+RDEPENDS:${PN} = "\
bash perl xz \
${PN}-console \
${PN}-libxenguest \
@@ -47,20 +24,15 @@ RDEPENDS_${PN} = "\
${PN}-xencommons \
${PN}-xendomains \
${PN}-xenstore \
- virtual/xenstored \
+ virtual-xenstored \
${PN}-xl \
"
-RDEPENDS_${PN}-dev = ""
+RDEPENDS:${PN}-dev = ""
-# Qemu is necessary on ARM platforms, and to support HVM guests on x86
-QEMU = "${@bb.utils.contains('PACKAGECONFIG', 'hvm', 'qemu', '', d)}"
-QEMU_arm = "qemu"
-QEMU_aarch64 = "qemu"
-
-RRECOMMENDS_${PN} = " \
- ${QEMU} \
- ${@bb.utils.contains('PACKAGECONFIG', 'hvm', 'seabios', '', d)} \
+RRECOMMENDS:${PN} = " \
+ qemu \
+ ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'seabios ipxe vgabios', '', d)} \
${@bb.utils.contains('PACKAGECONFIG', 'externalblktap', '', '${BLKTAP_RRECOMMENDS}', d)} \
${PN}-flask \
${PN}-hvmloader \
@@ -72,87 +44,88 @@ RRECOMMENDS_${PN} = " \
${PN}-xenhypfs \
"
-RDEPENDS_${PN}-devd = " \
+RDEPENDS:${PN}-devd = " \
${PN}-xl \
"
-RDEPENDS_${PN}-fsimage = " \
+RDEPENDS:${PN}-fsimage = " \
libext2fs \
"
-RDEPENDS_${PN}-misc = " \
+RDEPENDS:${PN}-misc = " \
perl \
python3 \
${PN}-xencov \
"
-RSUGGESTS_${PN}-misc = " \
+RSUGGESTS:${PN}-misc = " \
${PN}-xencons \
${PN}-xenpvnetboot \
"
-RDEPENDS_${PN}-python = " \
+RDEPENDS:${PN}-python = " \
python3 \
"
-RDEPENDS_${PN}-pygrub = " \
+RDEPENDS:${PN}-pygrub = " \
python3 \
${PN}-python \
"
-RDEPENDS_${PN}-remus = "bash"
+RDEPENDS:${PN}-remus = "bash"
-RDEPENDS_${PN}-scripts-block = "\
+RDEPENDS:${PN}-scripts-block = "\
bash \
${PN}-scripts-common \
${PN}-volatiles \
"
-RDEPENDS_${PN}-scripts-common = "bash"
+RDEPENDS:${PN}-scripts-common = "bash"
-RDEPENDS_${PN}-scripts-network = "\
+RDEPENDS:${PN}-scripts-network = "\
bash \
bridge-utils \
${PN}-scripts-common \
${PN}-volatiles \
"
-RSUGGESTS_${PN}-scripts-network = "\
+RRECOMMENDS:${PN}-scripts-network = "\
ifupdown \
"
-RSUGGESTS_${PN}-xencov = "${PN}-xencov-split"
+RSUGGESTS:${PN}-xencov = "${PN}-xencov-split"
-RDEPENDS_${PN}-xencommons = "\
+RDEPENDS:${PN}-xencommons = "\
bash \
+ util-linux-prlimit \
${PN}-console \
${PN}-xenstore \
- virtual/xenstored \
+ virtual-xenstored \
${PN}-xl \
${PN}-scripts-common \
"
-RDEPENDS_${PN}-xendomains = "\
+RDEPENDS:${PN}-xendomains = "\
bash \
${PN}-console \
${PN}-scripts-block \
${PN}-scripts-common \
- virtual/xenstored \
+ virtual-xenstored \
"
-RDEPENDS_${PN}-xenhypfs = " \
+RDEPENDS:${PN}-xenhypfs = " \
${PN}-libxenhypfs \
"
-RDEPENDS_${PN}-xl = "libgcc"
+RDEPENDS:${PN}-xl = "libgcc"
-RDEPENDS_${PN}-xenmon = " \
+RDEPENDS:${PN}-xenmon = " \
python3 \
"
-RSUGGESTS_${PN}-xentrace = "${PN}-xentrace-format"
+RSUGGESTS:${PN}-xentrace = "${PN}-xentrace-format"
-RDEPENDS_${PN}-xen-watchdog = "bash"
+RDEPENDS:${PN}-xen-watchdog = "bash"
PACKAGES = " \
${PN} \
@@ -234,21 +207,26 @@ PACKAGES = " \
${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 \
+ 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"
+RPROVIDES:${PN}-xenstored = "virtual-xenstored"
-FILES_${PN}-dbg += "\
+FILES:${PN}-dbg += "\
${libdir}/xen/bin/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/.debug \
- ${libdir}/${PYTHON_DIR}/site-packages/xen/lowlevel/.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 \
@@ -261,22 +239,22 @@ FILES_${PN}-dbg += "\
${libdir}exec/.debug \
${libdir}/xen/libexec/.debug \
${bindir}/.debug \
- ${libdir}/${PYTHON_DIR}/dist-packages/.debug \
- ${libdir}/${PYTHON_DIR}/dist-packages/xen/lowlevel/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/.debug \
+ ${nonarch_libdir}/${PYTHON_DIR}/dist-packages/xen/lowlevel/.debug \
"
-FILES_${PN}-dev = "\
+FILES:${PN}-dev = "\
${includedir} \
"
-FILES_${PN}-doc = "\
+FILES:${PN}-doc = "\
${sysconfdir}/xen/README \
${sysconfdir}/xen/README.incompatibilities \
${datadir}/doc \
${datadir}/man \
"
-FILES_${PN}-staticdev += "\
+FILES:${PN}-staticdev += "\
${libdir}/libxenguest.a \
${libdir}/libxenlight.a \
${libdir}/libxenvchan.a \
@@ -286,122 +264,122 @@ FILES_${PN}-staticdev += "\
${libdir}/libxenstore.a \
"
-FILES_${PN}-libxencall = "${libdir}/libxencall.so.*"
-FILES_${PN}-libxencall-dev = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+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 = " \
+FILES:${PN}-libvhd = "${libdir}/libvhd.so.*"
+FILES:${PN}-libvhd-dev = " \
${libdir}/libvhd.so \
${libdir}/pkgconfig/vhd.pc \
${datadir}/pkgconfig/vhd.pc \
"
-FILES_${PN}-libfsimage = " \
+FILES:${PN}-libfsimage = " \
${libdir}/libfsimage.so.* \
${libdir}/libxenfsimage.so.* \
"
-FILES_${PN}-libfsimage-dev = " \
+FILES:${PN}-libfsimage-dev = " \
${libdir}/libfsimage.so \
${libdir}/libxenfsimage.so \
${libdir}/pkgconfig/fsimage.pc \
@@ -410,38 +388,38 @@ FILES_${PN}-libfsimage-dev = " \
${datadir}/pkgconfig/xenfsimage.pc \
"
-FILES_${PN}-fsimage = " \
+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}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain"
-FILES_${PN} = "\
+FILES:${PN} = "\
${sysconfdir}/xen/auto \
${sysconfdir}/xen/cpupool \
${localstatedir}/xen/dump \
"
-FILES_${PN}-console = "\
+FILES:${PN}-console = "\
${libdir}/xen/bin/xenconsole \
${sbindir}/xenconsoled \
"
-FILES_${PN}-cpuid = "\
+FILES:${PN}-cpuid = "\
${bindir}/xen-cpuid \
"
-FILES_${PN}-devd = "\
+FILES:${PN}-devd = "\
${sysconfdir}/init.d/xendriverdomain \
${systemd_unitdir}/system/xendriverdomain.service \
"
-FILES_${PN}-flask = "\
+FILES:${PN}-flask = "\
/boot/xenpolicy-* \
"
-FILES_${PN}-flask-tools = "\
+FILES:${PN}-flask-tools = "\
${sbindir}/flask-get-bool \
${sbindir}/flask-getenforce \
${sbindir}/flask-label-pci \
@@ -450,25 +428,25 @@ FILES_${PN}-flask-tools = "\
${sbindir}/flask-setenforce \
"
-FILES_${PN}-gdbsx = "\
+FILES:${PN}-gdbsx = "\
${sbindir}/gdbsx \
"
-INSANE_SKIP_${PN}-hvmloader = "arch"
-FILES_${PN}-hvmloader = "\
+INSANE_SKIP:${PN}-hvmloader = "arch"
+FILES:${PN}-hvmloader = "\
${libdir}/xen/boot/hvmloader \
"
-FILES_${PN}-kdd = "\
+FILES:${PN}-kdd = "\
${sbindir}/kdd \
${sbindir}/xen-kdd \
"
-FILES_${PN}-livepatch += " \
+FILES:${PN}-livepatch += " \
${sbindir}/xen-livepatch \
"
-FILES_${PN}-misc = "\
+FILES:${PN}-misc = "\
${bindir}/xen-detect \
${libdir}/xen/bin/depriv-fd-checker \
${sbindir}/gtracestat \
@@ -491,20 +469,22 @@ FILES_${PN}-misc = "\
${libdir}/xen/bin/convert-legacy-stream \
"
-FILES_${PN}-pygrub = "\
+FILES:${PN}-pygrub = "\
${bindir}/pygrub \
${libdir}/xen/bin/pygrub \
"
-FILES_${PN}-python = "\
+# 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 = "\
+FILES:${PN}-remus = "\
${sysconfdir}/xen/scripts/remus-netbuf-setup \
"
-FILES_${PN}-scripts-network = " \
+FILES:${PN}-scripts-network = " \
${sysconfdir}/xen/scripts/colo-proxy-setup \
${sysconfdir}/xen/scripts/network-bridge \
${sysconfdir}/xen/scripts/network-nat \
@@ -519,7 +499,7 @@ FILES_${PN}-scripts-network = " \
${sysconfdir}/xen/scripts/vif-setup \
"
-FILES_${PN}-scripts-block = " \
+FILES:${PN}-scripts-block = " \
${sysconfdir}/xen/scripts/blktap \
${sysconfdir}/xen/scripts/block \
${sysconfdir}/xen/scripts/block-common.sh \
@@ -532,7 +512,7 @@ FILES_${PN}-scripts-block = " \
${sysconfdir}/xen/scripts/vscsi \
"
-FILES_${PN}-scripts-common = " \
+FILES:${PN}-scripts-common = " \
${sysconfdir}/xen/scripts/external-device-migrate \
${sysconfdir}/xen/scripts/hotplugpath.sh \
${sysconfdir}/xen/scripts/locking.sh \
@@ -543,59 +523,59 @@ FILES_${PN}-scripts-common = " \
${sysconfdir}/xen/scripts/xen-script-common.sh \
"
-INSANE_SKIP_${PN}-shim = "arch"
-FILES_${PN}-shim = " \
+INSANE_SKIP:${PN}-shim = "arch"
+FILES:${PN}-shim = " \
${libdir}/xen/boot/xen-shim \
"
-FILES_${PN}-ucode = "\
+FILES:${PN}-ucode = "\
${sbindir}/xen-ucode \
"
-FILES_${PN}-vchan = "\
+FILES:${PN}-vchan = "\
${bindir}/vchan-socket-proxy \
"
-FILES_${PN}-volatiles = "\
+FILES:${PN}-volatiles = "\
${sysconfdir}/default/volatiles/99_xen \
${sysconfdir}/tmpfiles.d/xen.conf \
"
-FILES_${PN}-xcutils = "\
+FILES:${PN}-xcutils = "\
${libdir}/xen/bin/lsevtchn \
${libdir}/xen/bin/readnotes \
${libdir}/xen/bin/xc_restore \
${libdir}/xen/bin/xc_save \
"
-FILES_${PN}-xencov = "\
+FILES:${PN}-xencov = "\
${sbindir}/xencov \
"
-FILES_${PN}-xend-examples = "\
+FILES:${PN}-xend-examples = "\
${sysconfdir}/xen/xend-config.sxp \
${sysconfdir}/xen/xend-pci-permissive.sxp \
${sysconfdir}/xen/xend-pci-quirks.sxp \
"
-FILES_${PN}-xenhypfs = "\
+FILES:${PN}-xenhypfs = "\
${sbindir}/xenhypfs \
"
-FILES_${PN}-xenpaging = "\
+FILES:${PN}-xenpaging = "\
${libdir}/xen/bin/xenpaging \
${localstatedir}/lib/xen/xenpaging \
"
-FILES_${PN}-xenpmd = "\
+FILES:${PN}-xenpmd = "\
${sbindir}/xenpmd \
"
-FILES_${PN}-xenstat = "\
+FILES:${PN}-xenstat = "\
${sbindir}/xentop \
"
-FILES_${PN}-xenstore = "\
+FILES:${PN}-xenstore = "\
${bindir}/xenstore \
${bindir}/xenstore-chmod \
${bindir}/xenstore-control \
@@ -608,12 +588,12 @@ FILES_${PN}-xenstore = "\
${bindir}/xenstore-write \
"
-FILES_${PN}-xenstored = "\
+FILES:${PN}-xenstored = "\
${sbindir}/xenstored \
${localstatedir}/lib/xenstored \
"
-FILES_${PN}-xentrace = "\
+FILES:${PN}-xentrace = "\
${bindir}/xentrace \
${bindir}/xentrace_setsize \
${libdir}/xen/bin/xenctx \
@@ -623,26 +603,29 @@ FILES_${PN}-xentrace = "\
${sbindir}/xentrace_setmask \
"
-FILES_${PN}-xen-watchdog = "\
+FILES:${PN}-xen-watchdog = "\
${sbindir}/xenwatchdogd \
${sysconfdir}/init.d/xen-watchdog \
${systemd_unitdir}/system/xen-watchdog.service \
"
-FILES_${PN}-xl = "\
+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 = "\
+FILES:${PN}-xl-examples = "\
${sysconfdir}/xen/xlexample.hvm \
${sysconfdir}/xen/xlexample.pvlinux \
+ ${sysconfdir}/xen/xlexample.pvhlinux \
"
-FILES_${PN}-xm-examples = "\
+FILES:${PN}-xm-examples = "\
${sysconfdir}/xen/xmexample1 \
${sysconfdir}/xen/xmexample2 \
${sysconfdir}/xen/xmexample3 \
@@ -653,86 +636,112 @@ FILES_${PN}-xm-examples = "\
${sysconfdir}/xen/xmexample.vti \
"
-FILES_${PN}-xenmon = "\
+FILES:${PN}-xenmon = "\
${sbindir}/xenbaked \
${sbindir}/xenmon.py \
${sbindir}/xenmon \
"
-FILES_${PN}-xm = "\
+FILES:${PN}-xm = "\
${sysconfdir}/xen/xm-config.xml \
${datadir}/xen/create.dtd \
${sbindir}/xm \
"
-FILES_${PN}-xencommons += "\
+FILES:${PN}-xencommons += "\
+ ${nonarch_libdir}/modules-load.d/xen.conf \
${sysconfdir}/default/xencommons \
- ${sysconfdir}/init.d/xencommons \
+ ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', '${sysconfdir}/init.d/xencommons', d)} \
${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 \
+ ${@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 += " \
+FILES:${PN}-xend += " \
${sysconfdir}/init.d/xend \
${sbindir}/xend \
"
-FILES_${PN}-xendomains += "\
+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 \
+ "
-INSANE_SKIP_${PN} = "already-stripped"
+# 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}-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"
+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 = " \
+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"
-
-# To build hvmloader, which is needed on x86-64 targets when 'hvm' is enabled
-# in PACKAGECONFIG, additional CFLAGS are needed to set the 32-bit sysroot.
-RECIPE_SYSROOT32 = "${WORKDIR}/${MLPREFIX32}recipe-sysroot"
-ADD_SYSROOT32_CFLAGS = ""
-ADD_SYSROOT32_CFLAGS_x86-64 = \
- "${@bb.utils.contains('PACKAGECONFIG', 'hvm', \
- 'CFLAGS += "--sysroot=${RECIPE_SYSROOT32}"', '', d)}"
-# This x86-64 override is never intended for native use, so clear that.
-ADD_SYSROOT32_CFLAGS_class-native = ""
+SYSTEMD_SERVICE:${PN}-xendomains = "xendomains.service"
EXTRA_OECONF += " \
--with-systemd=${systemd_unitdir}/system \
- --with-systemd-modules-load=${systemd_unitdir}/modules-load.d \
--with-initddir=${INIT_D_DIR} \
--with-sysconfig-leaf-dir=default \
--with-system-qemu=${bindir}/qemu-system-i386 \
@@ -740,15 +749,12 @@ EXTRA_OECONF += " \
do_configure() {
do_configure_common
-
- if [ -n '${ADD_SYSROOT32_CFLAGS}' ] ; then
- echo '${ADD_SYSROOT32_CFLAGS}' >>"${S}/tools/firmware/Rules.mk"
- fi
}
do_compile() {
cd ${S}
- oe_runmake tools PYTHON="${PYTHON}"
+ oe_runmake tools PYTHON="${PYTHON}" \
+ EXTRA_CFLAGS_XEN_TOOLS="${EXTRA_CFLAGS_XEN_TOOLS}"
}
do_install() {
@@ -799,16 +805,27 @@ do_install() {
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
+
+ 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() {
+pkg_postinst:${PN}-volatiles() {
if [ -z "$D" ]; then
if command -v systemd-tmpfiles >/dev/null; then
systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf
diff --git a/recipes-extended/xen/xen-tools_4.14.bb b/recipes-extended/xen/xen-tools_4.14.bb
deleted file mode 100644
index 4119190d..00000000
--- a/recipes-extended/xen/xen-tools_4.14.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-SRCREV ?= "456957aaa1391e0dfa969e2dd97b87c51a79444e"
-
-XEN_REL ?= "4.14"
-XEN_BRANCH ?= "stable-${XEN_REL}"
-
-SRC_URI = " \
- git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
- file://0001-python-pygrub-pass-DISTUTILS-xen-4.14.patch \
- file://0001-xen-build-temporarily-inhibit-Werror-4.14.patch \
- "
-
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
-
-PV = "${XEN_REL}+stable${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-require xen.inc
-require xen-tools.inc
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..e011b87c
--- /dev/null
+++ b/recipes-extended/xen/xen-tools_4.17.bb
@@ -0,0 +1,20 @@
+# xen 4.17.2 release sha
+SRCREV ?= "322a20add00a4687cd46d9183616fa6fecbef81f"
+
+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 \
+ file://0001-Config.mk-drop-Wdeclaration-after-statement.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..9920c358
--- /dev/null
+++ b/recipes-extended/xen/xen-tools_4.18.bb
@@ -0,0 +1,22 @@
+# tag: RELEASE-4.18.0
+SRCREV ?= "d75f1e9b74314cea91ce435730d4e3539ecca77d"
+
+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 \
+ file://0001-Config.mk-drop-Wdeclaration-after-statement.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
index 71aeeed8..63a2152e 100644
--- a/recipes-extended/xen/xen-tools_git.bb
+++ b/recipes-extended/xen/xen-tools_git.bb
@@ -1,17 +1,17 @@
-SRCREV ?= "8c4532f19d6925538fb0c938f7de9a97da8c5c3b"
+# master status on 2023-05-26
+SRCREV ?= "f96e2f64576cdbb147391c7cb399d393385719a9"
-XEN_REL ?= "4.15"
+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.14.patch \
- file://0001-xen-build-temporarily-inhibit-Werror-4.14.patch \
+ file://0001-python-pygrub-pass-DISTUTILS-xen-4.18.patch \
"
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
-PV = "${XEN_REL}+git${SRCPV}"
+PV = "${XEN_REL}+git"
S = "${WORKDIR}/git"
diff --git a/recipes-extended/xen/xen.inc b/recipes-extended/xen/xen.inc
index 9e8fcad2..dcd281b5 100644
--- a/recipes-extended/xen/xen.inc
+++ b/recipes-extended/xen/xen.inc
@@ -1,21 +1,20 @@
HOMEPAGE = "http://xen.org"
-LICENSE = "GPLv2"
+LICENSE = "GPL-2.0-only"
SECTION = "console/tools"
-inherit autotools-brokensep
+TOOLCHAIN = "gcc"
+
+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)} \
"
-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 = " \
@@ -43,7 +42,6 @@ DEPENDS = " \
procps \
python3 \
libaio \
- lzo \
util-linux \
xz \
yajl \
@@ -90,8 +88,19 @@ export CROSS_COMPILE="${TARGET_PREFIX}"
# overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'"
export LDFLAGS=""
-# Pass through the Yocto distro compiler flags via the Xen-provided variables.
-# Special handling:
+# 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
@@ -101,18 +110,15 @@ export LDFLAGS=""
# 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} ${CC_REPRODUCIBLE_OPTIONS}"
-EXTRA_CFLAGS_XEN_CORE="${HOST_CC_ARCH} ${CFLAGS}"
+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} ${CC_REPRODUCIBLE_OPTIONS}"
-EXTRA_CFLAGS_XEN_CORE_arm="${SECURITY_CFLAGS} ${CFLAGS}"
-EXTRA_CFLAGS_XEN_TOOLS_arm="${SECURITY_CFLAGS} ${CFLAGS}"
+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}"
+CPP:append = " ${CPPFLAGS}"
+CXX:append = " ${CXXFLAGS}"
EXTRA_OECONF += " \
--exec-prefix=${prefix} \
@@ -125,10 +131,13 @@ EXTRA_OECONF += " \
--disable-rombios \
--disable-ocamltools \
--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"
@@ -150,9 +159,7 @@ 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.
-CC_REPRODUCIBLE_OPTIONS = "${@['', '-gno-record-gcc-switches ' + \
- '-ffile-prefix-map=${S}=${PN}-source ' + \
- '-fdebug-prefix-map=${WORKDIR}=${PN}'] \
+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
@@ -185,12 +192,6 @@ 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))" >> ${S}/xen/arch/arm/Rules.mk
- echo "CPP := \$(filter-out ${TUNE_CCARGS},\$(CPP))" >> ${S}/xen/arch/arm/Rules.mk
-}
-
addtask post_patch after do_patch before do_configure
# Allow all hypervisor settings in a defconfig
@@ -221,13 +222,13 @@ do_configure_common() {
PYTHON="${PYTHON}"
}
-do_compile_prepend() {
+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
}
-do_install_prepend() {
+do_install:prepend() {
# CFLAGS is used to set PY_CFLAGS which affects the pygrub install
# so also need to unset CFLAGS here:
unset CFLAGS
diff --git a/recipes-extended/xen/xen_4.14.bb b/recipes-extended/xen/xen_4.14.bb
deleted file mode 100644
index 0413bee1..00000000
--- a/recipes-extended/xen/xen_4.14.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-SRCREV ?= "456957aaa1391e0dfa969e2dd97b87c51a79444e"
-
-XEN_REL ?= "4.14"
-XEN_BRANCH ?= "stable-${XEN_REL}"
-
-SRC_URI = " \
- git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
- file://xen-arm64-implement-atomic-fetch-add.patch \
- "
-
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
-
-PV = "${XEN_REL}+stable${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-require xen.inc
-require xen-hypervisor.inc
diff --git a/recipes-extended/xen/xen_4.17.bb b/recipes-extended/xen/xen_4.17.bb
new file mode 100644
index 00000000..8fae2c37
--- /dev/null
+++ b/recipes-extended/xen/xen_4.17.bb
@@ -0,0 +1,22 @@
+# xen 4.17.2 release sha
+SRCREV ?= "322a20add00a4687cd46d9183616fa6fecbef81f"
+
+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..8da44559
--- /dev/null
+++ b/recipes-extended/xen/xen_4.18.bb
@@ -0,0 +1,21 @@
+# tag: RELEASE-4.18.0
+SRCREV ?= "d75f1e9b74314cea91ce435730d4e3539ecca77d"
+
+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 408bc3b3..1a1ebb78 100644
--- a/recipes-extended/xen/xen_git.bb
+++ b/recipes-extended/xen/xen_git.bb
@@ -1,16 +1,17 @@
-SRCREV ?= "8c4532f19d6925538fb0c938f7de9a97da8c5c3b"
+# master status on 2023-11-24
+SRCREV ?= "f96e2f64576cdbb147391c7cb399d393385719a9"
-XEN_REL ?= "4.15"
+XEN_REL ?= "4.19"
XEN_BRANCH ?= "master"
SRC_URI = " \
git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
- file://xen-arm64-implement-atomic-fetch-add.patch \
+ file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-location.patch \
"
-LIC_FILES_CHKSUM ?= "file://COPYING;md5=419739e325a50f3d7b4501338e44a4e5"
+LIC_FILES_CHKSUM ?= "file://COPYING;md5=d1a1e216f80b6d8da95fec897d0dbec9"
-PV = "${XEN_REL}+git${SRCPV}"
+PV = "${XEN_REL}+git"
S = "${WORKDIR}/git"
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-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
index 099128dd..cd873cb3 100644
--- a/recipes-extended/xvisor/xvisor-configs.inc
+++ b/recipes-extended/xvisor/xvisor-configs.inc
@@ -1,15 +1,15 @@
-def get_oemake_config(d):
- plat = d.getVar('XVISOR_PLAT')
-
- if plat is None:
- return ""
-
- if 'riscv/virt32' in plat:
- return "generic-32b-defconfig"
- if 'riscv/virt64' in plat:
- return "generic-64b-defconfig"
+def get_oemake_config(a, d):
+ import re
- return ""
+ 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
@@ -22,4 +22,4 @@ def map_xvisor_arch(a, d):
elif re.match('aarch64_be_ilp32$', a): return 'arm'
elif re.match('riscv(32|64|)(eb|)$', a): return 'riscv'
else:
- bb.error("cannot map '%s' to a Xvisor architecture" % a)
+ bb.note("cannot map '%s' to a Xvisor architecture" % a)
diff --git a/recipes-extended/xvisor/xvisor_0.3.0.bb b/recipes-extended/xvisor/xvisor_git.bb
index 66ad6187..205951e9 100644
--- a/recipes-extended/xvisor/xvisor_0.3.0.bb
+++ b/recipes-extended/xvisor/xvisor_git.bb
@@ -1,6 +1,6 @@
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 = "GPLv2"
+LICENSE = "GPL-2.0-only"
LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
DEPENDS += "dtc-native dosfstools-native mtools-native"
@@ -8,22 +8,26 @@ require xvisor-configs.inc
inherit autotools-brokensep
-SRCREV = "58592ef18c71526a0045935d1e8eed5e8553b7d6"
-SRC_URI = "git://github.com/xvisor/xvisor.git \
- file://0001-TESTS-Don-t-specify-mabi-or-march-for-RISC-V.patch \
- "
+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)}"
+CONFIG = "${@get_oemake_config(d.getVar('TARGET_ARCH'), d)}"
do_configure() {
oe_runmake ${CONFIG}
}
-do_install_append() {
+do_install:append() {
install -d ${D}
install -m 755 ${B}/build/vmm.* ${D}/
@@ -34,11 +38,20 @@ do_install_append() {
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} += "/vmm.*"
+FILES:${PN} += "/*.dtb"
-COMPATIBLE_HOST = "(riscv64|riscv32).*"
+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_xen.inc b/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc
index 95034045..1b7e06b2 100644
--- a/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc
+++ b/recipes-graphics/xorg-xserver/xserver-xorg_xen.inc
@@ -5,9 +5,9 @@
# REMOVED_OPENGL_PKGCONFIGS = ""
XEN_REMOVED_OPENGL_PKGCONFIGS ?= "glamor"
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86 = ""
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86-64 = ""
+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}"
+OPENGL_PKGCONFIGS:remove = "${REMOVED_OPENGL_PKGCONFIGS}"
diff --git a/recipes-kernel/linux/linux-%.bbappend b/recipes-kernel/linux/linux-%.bbappend
index 2a2335bc..dbae9b14 100644
--- a/recipes-kernel/linux/linux-%.bbappend
+++ b/recipes-kernel/linux/linux-%.bbappend
@@ -4,7 +4,35 @@
LINUX_MAJOR = "${@(d.getVar('LINUX_VERSION') or "x.y").split('.')[0]}"
LINUX_MINOR = "${@(d.getVar('LINUX_VERSION') or "x.y").split('.')[1]}"
-include ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'linux-yocto_${LINUX_MAJOR}.${LINUX_MINOR}_virtualization.inc', '', d)}
+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/cgroup-hugetlb.cfg b/recipes-kernel/linux/linux-yocto/cgroup-hugetlb.cfg
new file mode 100644
index 00000000..417ca249
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/cgroup-hugetlb.cfg
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: MIT
+#
+# This requires CONFIG_HUGETLBFS
+
+CONFIG_CGROUP_HUGETLB=y
diff --git a/recipes-kernel/linux/linux-yocto/cgroup-hugetlb.scc b/recipes-kernel/linux/linux-yocto/cgroup-hugetlb.scc
new file mode 100644
index 00000000..7d1f9997
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/cgroup-hugetlb.scc
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: MIT
+define KFEATURE_DESCRIPTION "Enable hugetlb cgroup"
+define KFEATURE_COMPATIBILITY all
+
+kconf non-hardware cgroup-hugetlb.cfg
diff --git a/recipes-kernel/linux/linux-yocto/criu.cfg b/recipes-kernel/linux/linux-yocto/criu.cfg
new file mode 100644
index 00000000..dc9502a6
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/criu.cfg
@@ -0,0 +1,8 @@
+#Networking options options for sock-diag subsystem
+CONFIG_UNIX_DIAG=y
+CONFIG_INET_DIAG=y
+CONFIG_INET_UDP_DIAG=y
+CONFIG_PACKET_DIAG=y
+CONFIG_NETLINK_DIAG=y
+CONFIG_NETFILTER_XT_MARK=y
+CONFIG_TUN=m
diff --git a/recipes-kernel/linux/linux-yocto/criu.scc b/recipes-kernel/linux/linux-yocto/criu.scc
new file mode 100644
index 00000000..87a88113
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/criu.scc
@@ -0,0 +1,4 @@
+define KFEATURE_DESCRIPTION "Enable Networking Features needed by criu."
+define KFEATURE_COMPATIBILITY board
+
+kconf non-hardware criu.cfg
diff --git a/recipes-kernel/linux/linux-yocto/docker.cfg b/recipes-kernel/linux/linux-yocto/docker.cfg
index 79012a6a..eeeaa242 100644
--- a/recipes-kernel/linux/linux-yocto/docker.cfg
+++ b/recipes-kernel/linux/linux-yocto/docker.cfg
@@ -8,5 +8,6 @@ CONFIG_DM_THIN_PROVISIONING=m
CONFIG_IP_NF_NAT=m
CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_NETFILTER_XT_MATCH_IPVS=m
CONFIG_OVERLAY_FS=y
diff --git a/recipes-kernel/linux/linux-yocto/kubernetes.cfg b/recipes-kernel/linux/linux-yocto/kubernetes.cfg
new file mode 100644
index 00000000..84fa8c57
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/kubernetes.cfg
@@ -0,0 +1,39 @@
+CONFIG_BLK_CGROUP=y
+CONFIG_BLK_DEV_THROTTLING=y
+CONFIG_CGROUP_PERF=y
+CONFIG_CGROUP_HUGETLB=y
+CONFIG_NET_CLS_CGROUP=y
+CONFIG_CFS_BANDWIDTH=y
+CONFIG_FAIR_GROUP_SCHED=y
+CONFIG_RT_GROUP_SCHED=y
+CONFIG_IP_NF_TARGET_REDIRECT=y
+CONFIG_IP_SET=m
+CONFIG_IP_VS=y
+CONFIG_IP_VS_NFCT=y
+CONFIG_IP_VS_PROTO_TCP=y
+CONFIG_IP_VS_PROTO_UDP=y
+CONFIG_IP_VS_RR=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NETFILTER_XT_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NAMESPACES=y
+CONFIG_NET_NS=y
+CONFIG_PID_NS=y
+CONFIG_IPC_NS=y
+CONFIG_UTS_NS=y
+CONFIG_CGROUPS=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CGROUP_FREEZER=y
+CONFIG_CGROUP_SCHED=y
+CONFIG_SMP=y
+CONFIG_CPUSETS=y
+CONFIG_MEMCG=y
+CONFIG_INET=y
+CONFIG_EXT4_FS=y
+CONFIG_PROC_FS=y
diff --git a/recipes-kernel/linux/linux-yocto/kubernetes.scc b/recipes-kernel/linux/linux-yocto/kubernetes.scc
new file mode 100644
index 00000000..a94ae845
--- /dev/null
+++ b/recipes-kernel/linux/linux-yocto/kubernetes.scc
@@ -0,0 +1,3 @@
+include docker.scc
+include cgl/cfg/net/ip_vs.scc
+kconf non-hardware kubernetes.cfg
diff --git a/recipes-kernel/linux/linux-yocto_5.4_virtualization.inc b/recipes-kernel/linux/linux-yocto_6.6_virtualization.inc
index 59311487..59311487 100644
--- a/recipes-kernel/linux/linux-yocto_5.4_virtualization.inc
+++ b/recipes-kernel/linux/linux-yocto_6.6_virtualization.inc
diff --git a/recipes-kernel/linux/linux-yocto_virtualization.inc b/recipes-kernel/linux/linux-yocto_virtualization.inc
index f050b3fa..a37759ef 100644
--- a/recipes-kernel/linux/linux-yocto_virtualization.inc
+++ b/recipes-kernel/linux/linux-yocto_virtualization.inc
@@ -1,20 +1,45 @@
-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 \
+ file://cgroup-hugetlb.scc \
+ file://criu.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"
+# 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
+
+KERNEL_CACHE_FEATURES ?= "${@kernel_cache_cond_feature(d.getVar('SRC_URI'),'cfg/virtio.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)}"
+
+# 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)}"
diff --git a/recipes-kernel/linux/yocto-cfg-fragments.bb b/recipes-kernel/linux/yocto-cfg-fragments.bb
new file mode 100644
index 00000000..38c081d5
--- /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.5"
+PV = "v${LINUX_VERSION}+git${SRCREV}"
+
+SRCREV = "fa8ffc924f6d91ea09c9f792a5bb8a184ec1657a"
+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 3ad939bd..a1a31f2d 100644
--- a/recipes-networking/cni/cni_git.bb
+++ b/recipes-networking/cni/cni_git.bb
@@ -9,35 +9,39 @@ Because of this focus, CNI has a wide range of support and the specification \
is simple to implement. \
"
-SRCREV_cni = "4cfb7b568922a3c79a23e438dc52fe537fc9687e"
-# Version 0.8.5
-SRCREV_plugins = "1f33fb729ae2b8900785f896df2dc1f6fe5e8239"
+SRCREV_cni = "ca96f4ca96d89f4d7fbce885af1d66046b45342f"
+SRCREV_plugins = "9d9ec6e3e18ea245b9cef0f8396e570247338d1f"
+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=${S}/src/github.com/containernetworking/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 \
"
-
-RPROVIDES_${PN} += "kubernetes-cni"
-
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
GO_IMPORT = "import"
-PV = "0.7.1+git${SRCREV_cni}"
+PV = "v1.1.2+git${SRCREV_cni}"
inherit go
inherit goarch
+# https://github.com/llvm/llvm-project/issues/53999
+TOOLCHAIN = "gcc"
+
do_compile() {
mkdir -p ${S}/src/github.com/containernetworking
ln -sfr ${S}/src/import ${S}/src/github.com/containernetworking/cni
+ export GO111MODULE=off
+
cd ${B}/src/github.com/containernetworking/cni/libcni
- ${GO} build
+ ${GO} build ${GOBUILDFLAGS}
cd ${B}/src/github.com/containernetworking/cni/cnitool
- ${GO} build
+ ${GO} build ${GOBUILDFLAGS}
cd ${B}/src/github.com/containernetworking/plugins
PLUGINS="$(ls -d plugins/meta/*; ls -d plugins/ipam/*; ls -d plugins/main/* | grep -v windows)"
@@ -45,10 +49,12 @@ do_compile() {
for p in $PLUGINS; do
plugin="$(basename "$p")"
echo "building: $p"
- ${GO} build -mod=vendor -o ${B}/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/"
@@ -63,8 +69,10 @@ do_install() {
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/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-switch-remaining-scripts-to-use-python3.patch b/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
index 113bc91d..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,6 +5,8 @@ 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>
---
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-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch
index fc74debb..571753a5 100644
--- a/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch
+++ b/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch
@@ -15,6 +15,8 @@ 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 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 0438cf88..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 6876e0c155b7f83e1f8545446e2dd69c2b7989f2 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 aad557f..69b0bf6 100644
---- a/rhel/usr_lib_systemd_system_ovsdb-server.service
-+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
-@@ -11,6 +11,7 @@ PIDFile=/var/run/openvswitch/ovsdb-server.pid
- 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; /bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts'
+ 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'
---
-2.7.4
-
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 aae44fe7..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,22 +1,24 @@
-From efd6b8f03ef7278d2477833f84bb8488bd0c346d 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
+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 | 6 +++---
- 2 files changed, 5 insertions(+), 5 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 ff43dae..f88b57c 100644
---- a/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
-+++ b/rhel/usr_lib_systemd_system_ovs-vswitchd.service.in
-@@ -17,8 +17,8 @@ EnvironmentFile=-/etc/sysconfig/openvswitch
+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@
@@ -27,23 +29,23 @@ index ff43dae..f88b57c 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 4c170c0..aad557f 100644
---- a/rhel/usr_lib_systemd_system_ovsdb-server.service
-+++ b/rhel/usr_lib_systemd_system_ovsdb-server.service
-@@ -11,9 +11,9 @@ PIDFile=/var/run/openvswitch/ovsdb-server.pid
- 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; /usr/bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /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} /var/run/openvswitch /var/log/openvswitch
-+ExecStartPre=/bin/sh -c 'rm -f /run/openvswitch.useropts; /bin/echo "OVS_USER_ID=${OVS_USER_ID}" > /run/openvswitch.useropts'
++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'
- EnvironmentFile=-/run/openvswitch.useropts
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 07258be7..cc96c83a 100644
--- a/recipes-networking/openvswitch/openvswitch_git.bb
+++ b/recipes-networking/openvswitch/openvswitch_git.bb
@@ -4,7 +4,7 @@ DEPENDS += "virtual/kernel"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-RDEPENDS_${PN}-ptest += "\
+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 \
@@ -14,31 +14,25 @@ RDEPENDS_${PN}-ptest += "\
"
S = "${WORKDIR}/git"
-PV = "2.13+${SRCPV}"
-
-FILESEXTRAPATHS_append := "${THISDIR}/${PN}-git:"
-
-SRCREV = "71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3"
-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.13 \
- file://openvswitch-add-ptest-71d553b995d0bd527d3ab1e9fbaf5a2ae34de2f3.patch \
- file://run-ptest \
- file://disable_m4_check.patch \
- file://kernel_module.patch \
- file://python-switch-remaining-scripts-to-use-python3.patch \
- file://systemd-update-tool-paths.patch \
- file://systemd-create-runtime-dirs.patch \
+PV = "3.2.1+"
+CVE_VERSION = "3.2.1"
+
+FILESEXTRAPATHS:append := "${THISDIR}/${PN}-git:"
+
+SRCREV = "b3d094b4fb4ece7241e4bd6c2327a169073e43c5"
+SRC_URI += "git://github.com/openvswitch/ovs.git;protocol=https;branch=branch-3.2 \
+ 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,"
@@ -48,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
@@ -58,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/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/qemuboot-xen-x86-64.cfg b/wic/qemuboot-xen-x86-64.cfg
new file mode 100644
index 00000000..297e19b2
--- /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 --- /vmlinuz 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"