diff --git a/.gitignore b/.gitignore index cfb08e4..46a2ce1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,15 +1 @@ -/osbuilder-72c5f6a.tar.gz -/osbuilder-4287ba6.tar.gz -/agent-8d682c4.tar.gz -/osbuilder-1.9.0.tar.gz -/agent-1.9.0.tar.gz -/osbuilder-1.9.1.tar.gz -/agent-1.9.1.tar.gz -/osbuilder-1.9.2.tar.gz -/agent-1.9.2.tar.gz -/osbuilder-1.9.3.tar.gz -/agent-1.9.3.tar.gz -/osbuilder-1.10.0.tar.gz -/agent-1.10.0.tar.gz -/osbuilder-1.11.0-alpha1.tar.gz -/agent-1.11.0-alpha1.tar.gz +/osbuilder-*.tar.gz diff --git a/0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch b/0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch new file mode 100644 index 0000000..2cc187d --- /dev/null +++ b/0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch @@ -0,0 +1,37 @@ +From 4b9fbceaa3f6db76736489d9d00b74a3967112d2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= +Date: Mon, 23 Mar 2020 17:08:28 +0100 +Subject: [PATCH] image_builder: Force mount_dir to be created in $TMPDIR +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Immutable systems, as such Red Hat Core OS and Fedora Core OS, will not +allow mount_dir to be created in a location that's not read-write. + +Let's ensure we use $TMPDIR (with /tmp as fallback) as base for mount_dir, +as it's a safe writable choice for any distro supported by kata. + +Fixes: #437 + +Signed-off-by: Fabiano Fidêncio +--- + image-builder/image_builder.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/image-builder/image_builder.sh b/image-builder/image_builder.sh +index aa813d5..04c840c 100755 +--- a/image-builder/image_builder.sh ++++ b/image-builder/image_builder.sh +@@ -372,7 +372,7 @@ create_rootfs_image() { + fi + + info "Mounting root partition" +- readonly mount_dir=$(mktemp -d osbuilder-mount-dir.XXXX) ++ readonly mount_dir=$(mktemp -p ${TMPDIR:-/tmp} -d osbuilder-mount-dir.XXXX) + mount "${device}p1" "${mount_dir}" + OK "root partition mounted" + +-- +2.26.0.rc2 + diff --git a/agent-0001-mount-Use-virtiofs-instead-of-virtio_fs-as-typeVirti.patch b/agent-0001-mount-Use-virtiofs-instead-of-virtio_fs-as-typeVirti.patch deleted file mode 100644 index 58ebbd7..0000000 --- a/agent-0001-mount-Use-virtiofs-instead-of-virtio_fs-as-typeVirti.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 69f807d45f1eafa2694d50619c79bee64fec178a Mon Sep 17 00:00:00 2001 -From: Fabiano Fidêncio -Date: Thu, 6 Feb 2020 22:02:19 +0100 -Subject: [PATCH] mount: Use virtiofs instead of virtio_fs as typeVirtioFS -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -virtio_fs was used in the early stages of the driver development - -Signed-off-by: Fabiano Fidêncio ---- - mount.go | 2 +- - mount_test.go | 6 +++--- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/agent-1.10.0/mount.go b/agent-1.10.0/mount.go -index b824b8f..8988646 100644 ---- a/mount.go -+++ b/mount.go -@@ -27,7 +27,7 @@ import ( - - const ( - type9pFs = "9p" -- typeVirtioFS = "virtio_fs" -+ typeVirtioFS = "virtiofs" - typeRootfs = "rootfs" - typeTmpFs = "tmpfs" - procMountStats = "/proc/self/mountstats" -diff --git a/mount_test.go b/mount_test.go -index 684a018..e13ed07 100644 ---- a/mount_test.go -+++ b/mount_test.go -@@ -445,14 +445,14 @@ func TestMount(t *testing.T) { - {"", "/foo", "9p", 0, "", true}, - {"proc", "", "9p", 0, "", true}, - {"proc", "/proc", "", 0, "", true}, -- {"proc", "", "virtio_fs", 0, "", true}, -- {"proc", subdir, "virtio_fs", 0, "", true}, -+ {"proc", "", "virtiofs", 0, "", true}, -+ {"proc", subdir, "virtiofs", 0, "", true}, - {"proc", subdir, "foo", 0, "", true}, - {symLinkName, symLinkDest, "moo", 0, "", true}, - {existsFile, existingNonCreatableFile, "bind", 0, "", true}, - {"tmpfs", validSubdir, "tmpfs", 0, "", true}, - {"proc", validSubdir, "9p", 0, "", true}, -- {"proc", validSubdir, "virtio_fs", 0, "", true}, -+ {"proc", validSubdir, "virtiofs", 0, "", true}, - } - - for i, d := range data { --- -2.18.1 - diff --git a/fedora-kata-osbuilder.sh b/fedora-kata-osbuilder.sh index ff02f0c..e6e3e12 100755 --- a/fedora-kata-osbuilder.sh +++ b/fedora-kata-osbuilder.sh @@ -156,9 +156,8 @@ generate_rootfs() # obuilder script inflexibility for now, which expect that some rootfs.sh # code is called on a fully populated distro root. - local agent_dir="/usr/libexec/kata-containers/osbuilder/agent" + local agent_dir="/usr/libexec/kata-containers/agent" if [ -n "${TEST_MODE}" ] ; then - agent_dir="${OSBUILDER_DIR}/agent" nsdax_bin="${OSBUILDER_DIR}/nsdax" fi diff --git a/kata-osbuilder.rpmlintrc b/kata-osbuilder.rpmlintrc index a73bdb8..6199085 100644 --- a/kata-osbuilder.rpmlintrc +++ b/kata-osbuilder.rpmlintrc @@ -1,5 +1,2 @@ addFilter(r'spelling-error Summary(en_US) initrd -> trinity') addFilter(r'spelling-error %description -l en_US initrd -> trinity') - -# Remove warnings regarding the bundled / goland macros not providing a version number -addFilter(r'unversioned-explicit-provides bundled\(golang\(.*\)\)') diff --git a/kata-osbuilder.spec b/kata-osbuilder.spec index 24c2906..0d592ca 100644 --- a/kata-osbuilder.spec +++ b/kata-osbuilder.spec @@ -1,23 +1,3 @@ -%if (0%{?fedora} && 0%{?fedora >= 31}) - %define have_go_rpm_macros 1 -%else - %define have_go_rpm_macros 0 -%endif - -%global with_debug 0 - -%if 0%{?with_debug} -%global _find_debuginfo_dwz_opts %{nil} -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%if ! 0%{?gobuild:1} -# %gobuild not available on RHEL. Definition lifted from Fedora33 podman.spec and tested on RHEL-8.2 -%define gobuild(o:) GO111MODULE=off go build -buildmode pie -compiler gc -tags="rpm_crashtraceback ${BUILDTAGS:-}" -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n') -extldflags '-Wl,-z,relro -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld '" -a -v -x %{?**}; -%endif - # Release candidate version tracking %global rcver alpha1 %if 0%{?rcver:1} @@ -27,33 +7,27 @@ Version: 1.11.0 -%global katadatadir %{_datadir}/kata-containers %global katalibexecdir %{_libexecdir}/kata-containers %global kataosbuilderdir %{katalibexecdir}/osbuilder -%global kataagentdir %{kataosbuilderdir}/agent %global katalocalstatecachedir %{_localstatedir}/cache/kata-containers %global tag %{version}%{?rcstr} %global git0 https://github.com/kata-containers/osbuilder -%global git1 https://github.com/kata-containers/agent Name: kata-osbuilder -Release: 0%{?rcrel}%{?dist} +Release: 0.1%{?rcrel}%{?dist} License: ASL 2.0 Summary: Kata guest initrd and image build scripts URL: %{git0} -# kata-agent doesn't build on arm32 +# Mirror of kata-agent ExcludeArch ExcludeArch: %{arm} -# Installing requires a kernel package, which isn't available i686 ExcludeArch: %{ix86} Source0: %{git0}/archive/%{version}/osbuilder-%{version}%{?rcstr}.tar.gz -Source1: %{git1}/archive/%{version}/agent-%{version}%{?rcstr}.tar.gz Source2: fedora-kata-osbuilder.sh Source3: kata-osbuilder-generate.service -Source4: agent-0001-mount-Use-virtiofs-instead-of-virtio_fs-as-typeVirti.patch %if 0%{?fedora} Source5: 15-dracut-fedora.conf %else @@ -62,27 +36,23 @@ Source5: 15-dracut-rhel.conf # Force mount_dir to be created in $TMPDIR # https://github.com/kata-containers/osbuilder/pull/436 -Patch01: osbuilder-0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch +Patch01: 0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch BuildRequires: gcc BuildRequires: git -%if 0%{?have_go_rpm_macros} -BuildRequires: go-rpm-macros -%else -BuildRequires: compiler(go-compiler) -BuildRequires: golang -%endif BuildRequires: make BuildRequires: systemd %{?systemd_requires} # %check requirements BuildRequires: kernel BuildRequires: dracut +BuildRequires: kata-agent >= %{version} %if 0%{?fedora} BuildRequires: busybox %endif +Requires: kata-agent >= %{version} # dracut/rootfs build deps Requires: kernel Requires: dracut @@ -94,36 +64,6 @@ Requires: e2fsprogs Requires: parted Requires: qemu-img -# Bundled kata-agent pieces -Provides: bundled(golang(github.com/docker/docker/pkg/parsers)) -Provides: bundled(golang(github.com/gogo/protobuf/gogoproto)) -Provides: bundled(golang(github.com/gogo/protobuf/jsonpb)) -Provides: bundled(golang(github.com/gogo/protobuf/proto)) -Provides: bundled(golang(github.com/gogo/protobuf/types)) -Provides: bundled(golang(github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc)) -Provides: bundled(golang(github.com/hashicorp/yamux)) -Provides: bundled(golang(github.com/mdlayher/vsock)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/cgroups)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/configs)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/nsenter)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/seccomp)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/specconv)) -Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/utils)) -Provides: bundled(golang(github.com/opencontainers/runtime-spec/specs-go)) -Provides: bundled(golang(github.com/opentracing/opentracing-go)) -Provides: bundled(golang(github.com/pkg/errors)) -Provides: bundled(golang(github.com/sirupsen/logrus)) -Provides: bundled(golang(github.com/stretchr/testify/assert)) -Provides: bundled(golang(github.com/uber/jaeger-client-go/config)) -Provides: bundled(golang(github.com/vishvananda/netlink)) -Provides: bundled(golang(github.com/vishvananda/netns)) -Provides: bundled(golang(golang.org/x/net/context)) -Provides: bundled(golang(golang.org/x/sys/unix)) -Provides: bundled(golang(google.golang.org/grpc)) -Provides: bundled(golang(google.golang.org/grpc/codes)) -Provides: bundled(golang(google.golang.org/grpc/status)) - %description %{summary} @@ -132,40 +72,14 @@ Provides: bundled(golang(google.golang.org/grpc/status)) %prep %autosetup -Sgit -n osbuilder-%{version}%{?rcstr} -tar -xvf %{SOURCE1} > /dev/null -pushd agent-%{version}%{?rcstr} -patch -p1 < %{SOURCE4} -popd %build # Manually build nsdax tool gcc %{build_cflags} image-builder/nsdax.gpl.c -o nsdax -# Build kata-agent -pushd agent-%{version}%{?rcstr} -mkdir _build -pushd _build -mkdir -p src/github.com/kata-containers -ln -s $(dirs +1 -l) src/github.com/kata-containers/agent -popd - -mv vendor src -export GOPATH=$(pwd)/_build:$(pwd) -%gobuild -o %{name} -make -popd - %install -# Install the whole kata agent rooted in /usr/libexec -# The whole tree is copied into the appliance by our script -mkdir -p %{buildroot}%{kataagentdir} -pushd agent-%{version}%{?rcstr} -%makeinstall DESTDIR=%{buildroot}%{kataagentdir} -popd - -mkdir -p %{buildroot}%{katadatadir} mkdir -p %{buildroot}%{kataosbuilderdir} mkdir -p %{buildroot}%{katalocalstatecachedir} rm rootfs-builder/.gitignore @@ -215,13 +129,11 @@ fi %files %license LICENSE %doc CODE_OF_CONDUCT.md CONTRIBUTING.md README.md -%dir %{katadatadir} %dir %{katalibexecdir} %dir %{kataosbuilderdir} %dir %{katalocalstatecachedir} %{kataosbuilderdir}/* -%{kataagentdir}/usr/bin/kata-agent %{_unitdir}/kata-osbuilder-generate.service # Remove some scripts we don't use @@ -238,6 +150,9 @@ fi %changelog +* Wed Mar 25 2020 Cole Robinson - 1.11.0-0.1.alpha +- Remove kata-agent, it has moved to its own top level package + * Mon Mar 23 2020 Fabiano Fidêncio - 1.11.0-0.alpha1 - Update to release 1.11.0-alpha1 diff --git a/osbuilder-0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch b/osbuilder-0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch deleted file mode 100644 index 2cc187d..0000000 --- a/osbuilder-0001-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch +++ /dev/null @@ -1,37 +0,0 @@ -From 4b9fbceaa3f6db76736489d9d00b74a3967112d2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= -Date: Mon, 23 Mar 2020 17:08:28 +0100 -Subject: [PATCH] image_builder: Force mount_dir to be created in $TMPDIR -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Immutable systems, as such Red Hat Core OS and Fedora Core OS, will not -allow mount_dir to be created in a location that's not read-write. - -Let's ensure we use $TMPDIR (with /tmp as fallback) as base for mount_dir, -as it's a safe writable choice for any distro supported by kata. - -Fixes: #437 - -Signed-off-by: Fabiano Fidêncio ---- - image-builder/image_builder.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/image-builder/image_builder.sh b/image-builder/image_builder.sh -index aa813d5..04c840c 100755 ---- a/image-builder/image_builder.sh -+++ b/image-builder/image_builder.sh -@@ -372,7 +372,7 @@ create_rootfs_image() { - fi - - info "Mounting root partition" -- readonly mount_dir=$(mktemp -d osbuilder-mount-dir.XXXX) -+ readonly mount_dir=$(mktemp -p ${TMPDIR:-/tmp} -d osbuilder-mount-dir.XXXX) - mount "${device}p1" "${mount_dir}" - OK "root partition mounted" - --- -2.26.0.rc2 - diff --git a/sources b/sources index 091e69e..7c87fb7 100644 --- a/sources +++ b/sources @@ -1,2 +1 @@ SHA512 (osbuilder-1.11.0-alpha1.tar.gz) = 4d577f8eddc1b3465cd707a987e54af679d21c619b1358195db9ecda59158680bed08dc40cddc4fcd536bf4b7c0000baaa08501c16bd4a854cbed773cd2c5c99 -SHA512 (agent-1.11.0-alpha1.tar.gz) = 548775c3d3c59f53ff021dfef494d679f2fc245eae84158671e05326e54d135a84ca900ddeaff258c67c0a6b8cff1df3c4796d9ad0c9b1aa23cfe718356f1fea