diff --git a/kata-containers-3.0.0-vendor.tar.gz b/kata-containers-3.0.0-vendor.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb104a2112dcdd73277023469e8c4e74bc1dc138 Binary files /dev/null and b/kata-containers-3.0.0-vendor.tar.gz differ diff --git a/kata-containers-3.0.0.tar.gz b/kata-containers-3.0.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1f5a1dc645fe1ba01f5ea28a86c70e17681368b9 Binary files /dev/null and b/kata-containers-3.0.0.tar.gz differ diff --git a/kata-containers.img b/kata-containers.img new file mode 100644 index 0000000000000000000000000000000000000000..48ef3a581e1295c88d65bbe5b2ffd67f985dfa29 Binary files /dev/null and b/kata-containers.img differ diff --git a/kata-containers.spec b/kata-containers.spec new file mode 100644 index 0000000000000000000000000000000000000000..0fc1882acc1ad8838406e78afcc9035b17afa25d --- /dev/null +++ b/kata-containers.spec @@ -0,0 +1,256 @@ +%define anolis_release 1 + +%global have_go_rpm_macros 0 + +%global with_debug 0 + +# Shamelessly copied from CRI-O spec file. +%if 0%{?with_debug} +%global _find_debuginfo_dwz_opts %{nil} +%global _dwz_low_mem_die_limit 0 +%else +%global debug_package %{nil} +%endif + +# https://github.com/rust-lang/rust/issues/47714 +%undefine _strict_symbol_defs_build + +# We want verbose builds +%global _configure_disable_silent_rules 1 + +# Use bundled deps as we don't ship the exact right versions for all the +# required rust libraries +%global bundled_rust_deps 1 + +# Release candidate version tracking +# global rcver rc0 +%if 0%{?rcver:1} +%global rcrel .%{rcver} +%global rcstr -%{rcver} +%endif + +# htps://github.com/kata-containers/kata-containers +Version: 3.0.0 +%global tag %{version}%{?rcstr} + +%global domain github.com +%global org kata-containers +%global repo kata-containers +%global download %{domain}/%{org}/%{repo} +%global importname %{download} + + +%global common_description %{expand: +Kata Containers version 3.x repository. Kata Containers is an open source +project and community working to build a standard implementation of lightweight +Virtual Machines (VMs) that feel and perform like containers, but provide the +workload isolation and security advantages of VMs. https://katacontainers.io/.} + +%global golicenses LICENSE \\\ + src/agent/LICENSE + +%global godocs README.md \\\ + CODE_OF_CONDUCT.md \\\ + CONTRIBUTING.md\\\ + src/agent/README.md + +Name: %{repo} +Release: %{anolis_release}%{?rcrel}%{?dist} +Summary: Kata Containers version 3.x repository +License: ASL 2.0 +Url: https://%{download} +Source0: https://%{download}/archive/%{version}%{?rcstr}/%{repo}-%{version}%{?rcstr}.tar.gz +Source1: https://%{download}/releases/download/%{version}/%{repo}-%{version}%{?rcstr}-vendor.tar.gz +Source2: kata-containers.img +Source3: vmlinux.container + +%if 0%{?have_go_rpm_macros} +BuildRequires: go-rpm-macros +%else +BuildRequires: compiler(go-compiler) +BuildRequires: golang +%endif + +BuildRequires: git-core +BuildRequires: libselinux-devel +BuildRequires: libseccomp-devel +BuildRequires: make +BuildRequires: systemd +BuildRequires: gcc +BuildRequires: protobuf-compiler + +%{?systemd_requires} +# %%check requirements +BuildRequires: dracut +BuildRequires: kernel + +%if 0%{?bundled_rust_deps} +BuildRequires: cargo +BuildRequires: rust +%else +# Generated using rust2rpm +# [dependencies] +BuildRequires: rust-packaging +BuildRequires: (crate(anyhow/default) >= 1.0.32 with crate(anyhow/default) < 2.0.0) +BuildRequires: (crate(lazy_static/default) >= 1.3.0 with crate(lazy_static/default) < 2.0.0) +BuildRequires: (crate(libc/default) >= 0.2.58 with crate(libc/default) < 0.3.0) +BuildRequires: (crate(log/default) >= 0.4.11 with crate(log/default) < 0.5.0) +BuildRequires: (crate(nix/default) >= 0.17.0 with crate(nix/default) < 0.18.0) +BuildRequires: (crate(prctl/default) >= 1.0.0 with crate(prctl/default) < 2.0.0) +BuildRequires: (crate(procfs/default) >= 0.7.9 with crate(procfs/default) < 0.8.0) +BuildRequires: (crate(prometheus/default) >= 0.9.0 with crate(prometheus/default) < 0.10.0) +BuildRequires: (crate(prometheus/process) >= 0.9.0 with crate(prometheus/process) < 0.10.0) +BuildRequires: (crate(regex/default) >= 1.0.0 with crate(regex/default) < 2.0.0) +BuildRequires: (crate(scan_fmt/default) >= 0.2.3 with crate(scan_fmt/default) < 0.3.0) +BuildRequires: (crate(scopeguard/default) >= 1.0.0 with crate(scopeguard/default) < 2.0.0) +BuildRequires: (crate(serde_json/default) >= 1.0.39 with crate(serde_json/default) < 2.0.0) +BuildRequires: (crate(signal-hook/default) >= 0.1.9 with crate(signal-hook/default) < 0.2.0) +BuildRequires: (crate(slog-scope/default) >= 4.1.2 with crate(slog-scope/default) < 5.0.0) +BuildRequires: (crate(slog-stdlog/default) >= 4.0.0 with crate(slog-stdlog/default) < 5.0.0) +BuildRequires: (crate(slog/default) >= 2.5.2 with crate(slog/default) < 3.0.0) +BuildRequires: (crate(slog/dynamic-keys) >= 2.5.2 with crate(slog/dynamic-keys) < 3.0.0) +BuildRequires: (crate(slog/max_level_trace) >= 2.5.2 with crate(slog/max_level_trace) < 3.0.0) +BuildRequires: (crate(slog/release_max_level_info) >= 2.5.2 with crate(slog/release_max_level_info) < 3.0.0) +BuildRequires: (crate(tempfile/default) >= 3.1.0 with crate(tempfile/default) < 4.0.0) +BuildRequires: crate(cgroups/default) >= 0.0.0 +BuildRequires: crate(logging/default) >= 0.0.0 +BuildRequires: crate(netlink/default) >= 0.0.0 +BuildRequires: crate(netlink/with-agent-handler) >= 0.0.0 +BuildRequires: crate(netlink/with-log) >= 0.0.0 +BuildRequires: crate(oci/default) >= 0.0.0 +BuildRequires: crate(protobuf/default) = 2.14.0 +BuildRequires: crate(protocols/default) >= 0.0.0 +BuildRequires: crate(rustjail/default) >= 0.0.0 +BuildRequires: crate(ttrpc/default) >= 0.0.0 +%endif + +Requires: dracut +Requires: kernel + +Conflicts: kata-agent +Conflicts: kata-ksm-throttler +Conflicts: kata-osbuilder +Conflicts: kata-proxy +Conflicts: kata-runtime +Conflicts: kata-shim + +# The following architectures lack the required qemu support +# s390 fail to build: https://github.com/kata-containers/kata-containers/issues/1204 +ExcludeArch: %{arm} %{ix86} s390 s390x + + +%description +%{common_description} + +%gopkg + + +# Common variables to pass to 'make' +# The machine type uses a modern default +# The kernel parameters workaround an issue with cgroupsv2 after kernel 5.3 +# To-do: add BUILDFLAGS=gobuildflags when the macro becomes available + +# The machine type to be used is architecture specific: +# aarch64: virt +# x86_64: q35 +%ifarch aarch64 +%global machinetype "virt" +%endif +%ifarch x86_64 +%global machinetype "q35" +%endif + +%global katadatadir %{_datadir}/kata-containers +%global katadefaults %{_datadir}/defaults/kata-containers +%global katacache %{_localstatedir}/cache +%global katalibexecdir %{_libexecdir}/kata-containers +%global katalocalstatecachedir %{katacache}/kata-containers + +%global kataagentdir %{katalibexecdir}/agent +%global kataosbuilderdir %{katalibexecdir}/osbuilder + +%global runtime_make_vars KERNELTYPE="compressed" \\\ + DEFSHAREDFS="virtio-fs" \\\ + DEFVIRTIOFSDAEMON=%{_libexecdir}/"virtiofsd" \\\ + DEFVIRTIOFSCACHESIZE=0 \\\ + DEFSANDBOXCGROUPONLY=true \\\ + SKIP_GO_VERSION_CHECK=y \\\ + MACHINETYPE=%{machinetype} \\\ + SCRIPTS_DIR=%{_bindir} \\\ + DESTDIR=%{buildroot} \\\ + PREFIX=/usr \\\ + DEFAULTSDIR=%{katadefaults} \\\ + CONFDIR=%{katadefaults} \\\ + FEATURE_SELINUX="yes" \\\ + DEFENABLEANNOTATIONS=['\\\".*\\\"'] \\\ + LIBC=gnu + +%global agent_make_vars LIBC=gnu \\\ + DESTDIR=%{buildroot}%{kataagentdir} + +%prep +%autosetup -S git -p1 -n %{repo}-%{version}%{?rcstr} + +cd %{_builddir}/%{repo}-%{version}%{?rcstr} +tar -xf %{SOURCE1} + +# Not using gobuild here in order to stick to how upstream builds +# (This builds multiple binaries) +%build +export PATH=$PATH:"$(pwd)/go/bin" +export GOPATH="$(pwd)/go" + +mkdir -p go/src/%{domain}/%{org} +ln -s $(pwd)/../%{repo}-%{version}%{?rcstr} go/src/%{importname} +cd go/src/%{importname} + +pushd src/runtime-rs +%make_build %{runtime_make_vars} +popd + +pushd src/agent +%make_build %{agent_make_vars} +touch kata-agent +popd + +# Not using gopkginstall here in order to stick to how upstream builds +%install +export GOPATH=$(pwd)/go +export PATH=$PATH:$GOPATH/bin + +cd go/src/%{importname} + +install -m 0644 -D -t %{buildroot}%{katalibexecdir} VERSION + +pushd src/runtime-rs +%make_install %{runtime_make_vars} +popd + +pushd src/agent +%make_install %{agent_make_vars} +popd + +install -m 0755 -D -t %{buildroot}%{katadatadir} %{SOURCE2} +install -m 0755 -D -t %{buildroot}%{katadatadir} %{SOURCE3} + +%files +# runtime +%{_bindir}/containerd-shim-kata-v2 +%dir %{katalibexecdir} +%{katalibexecdir}/VERSION +%dir %{katadatadir} +%dir %{katadefaults} +%{katadefaults}/configuration.toml +%{katadefaults}/configuration-dragonball.toml +%license LICENSE +%doc README.md CONTRIBUTING.md +%{katadatadir}/kata-containers.img +%{katadatadir}/vmlinux.container + +#agent +%dir %{kataagentdir} +%{kataagentdir}/* + +%changelog +* Wed Aug 17 2022 Chao Wu - 3.0.0-1 +- support Kata Containers 3.0.0 which is introduced by Open Anolis. diff --git a/vmlinux.container b/vmlinux.container new file mode 100644 index 0000000000000000000000000000000000000000..29183806bc7d4e53bd0a8b9b2fe31c4f18ccfdec Binary files /dev/null and b/vmlinux.container differ