Blame kata-osbuilder.spec

Fabiano Fidêncio 63e31aa
%if (0%{?fedora} && 0%{?fedora >= 31})
Fabiano Fidêncio 63e31aa
    %define have_go_rpm_macros 1
Fabiano Fidêncio 63e31aa
%else
Fabiano Fidêncio 63e31aa
    %define have_go_rpm_macros 0
Fabiano Fidêncio 63e31aa
%endif
Fabiano Fidêncio 63e31aa
3345b25
%global with_debug 0
3345b25
Fabiano Fidêncio 0c402b2
%if 0%{?with_debug}
3345b25
%global _find_debuginfo_dwz_opts %{nil}
3345b25
%global _dwz_low_mem_die_limit 0
3345b25
%else
3345b25
%global debug_package %{nil}
3345b25
%endif
3345b25
Fabiano Fidêncio 2a26949
%if ! 0%{?gobuild:1}
Fabiano Fidêncio 2a26949
# %gobuild not available on RHEL. Definition lifted from Fedora33 podman.spec and tested on RHEL-8.2
Fabiano Fidêncio 2a26949
%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 %{?**};
Fabiano Fidêncio 2a26949
%endif
Fabiano Fidêncio 2a26949
2bc8098
%global katadatadir             %{_datadir}/kata-containers
2bc8098
%global katalibexecdir          %{_libexecdir}/kata-containers
2bc8098
%global kataosbuilderdir        %{katalibexecdir}/osbuilder
2bc8098
%global kataagentdir            %{kataosbuilderdir}/agent
Fabiano Fidêncio 15b109b
%global katalocalstatecachedir  %{_localstatedir}/cache/kata-containers
3345b25
7b9a2cd
%global tag                     1.10.0
2bc8098
%global git0    https://github.com/kata-containers/osbuilder
99df63b
%global git1 https://github.com/kata-containers/agent
99df63b
99df63b
3345b25
Name: kata-osbuilder
2bc8098
Version: %{tag}
5213150
Release: 8%{?dist}
3345b25
License: ASL 2.0
99df63b
Summary: Kata guest initrd and image build scripts
3345b25
URL: %{git0}
e34d8c3
d831056
# kata-agent doesn't build on arm32
e34d8c3
ExcludeArch: %{arm}
e34d8c3
# Installing requires a kernel package, which isn't available i686
e34d8c3
ExcludeArch: %{ix86}
e34d8c3
2bc8098
Source0: %{git0}/archive/%{version}/osbuilder-%{version}.tar.gz
2bc8098
Source1: %{git1}/archive/%{version}/agent-%{version}.tar.gz
99df63b
Source2: fedora-kata-osbuilder.sh
4fb8c6e
Source3: kata-osbuilder-generate.service
Fabiano Fidêncio 83247b4
Source4: agent-0001-mount-Use-virtiofs-instead-of-virtio_fs-as-typeVirti.patch
Fabiano Fidêncio 75204e6
%if 0%{?fedora}
ca3efb6
Source5: 15-dracut-fedora.conf
Fabiano Fidêncio 75204e6
%else
Fabiano Fidêncio 75204e6
Source5: 15-dracut-rhel.conf
Fabiano Fidêncio 75204e6
%endif
99df63b
591da57
# Pass in pre-compiled nsdax to drop runtime GCC dependency
591da57
# Submitted upstream: https://github.com/kata-containers/osbuilder/pull/418
591da57
Patch01: osbuilder-0001-image_builder-Remove-nsdax-binary-after-its-usage.patch
591da57
Patch02: osbuilder-0002-image-builder-Add-NSDAX_BIN-for-passing-in-compiled-.patch
a6bca63
# Don't clobber our pre-populated /sbin/init
a6bca63
# https://github.com/kata-containers/osbuilder/pull/420
591da57
Patch03: osbuilder-0002-rootfs-Don-t-overwrite-init-if-it-already-exists.patch
Fabiano Fidêncio 5076d8a
# Force mount_dir to be created in $TMPDIR
Fabiano Fidêncio 5076d8a
# https://github.com/kata-containers/osbuilder/pull/436
Fabiano Fidêncio 5076d8a
Patch04: osbuilder-0004-image_builder-Force-mount_dir-to-be-created-in-TMPDI.patch
ca3efb6
99df63b
591da57
BuildRequires: gcc
3345b25
BuildRequires: git
Fabiano Fidêncio 63e31aa
%if 0%{?have_go_rpm_macros}
105d814
BuildRequires: go-rpm-macros
Fabiano Fidêncio 2a26949
%else
Fabiano Fidêncio 2a26949
BuildRequires: compiler(go-compiler)
Fabiano Fidêncio 2a26949
BuildRequires: golang
Fabiano Fidêncio 2a26949
%endif
Fabiano Fidêncio c81ef81
BuildRequires: make
4fb8c6e
BuildRequires: systemd
4fb8c6e
%{?systemd_requires}
e3e8557
# %check requirements
e3e8557
BuildRequires: kernel
e3e8557
BuildRequires: dracut
Fabiano Fidêncio 75204e6
%if 0%{?fedora}
e3e8557
BuildRequires: busybox
Fabiano Fidêncio 75204e6
%endif
4fb8c6e
4770fd0
# dracut/rootfs build deps
4fb8c6e
Requires: kernel
4770fd0
Requires: dracut
Fabiano Fidêncio 75204e6
%if 0%{?fedora}
b70c146
Requires: busybox
Fabiano Fidêncio 75204e6
%endif
4770fd0
# image build deps
4fb8c6e
Requires: e2fsprogs
d4a2baf
Requires: parted
Fabiano Fidêncio f688053
Requires: qemu-img
99df63b
99df63b
# Bundled kata-agent pieces
99df63b
Provides: bundled(golang(github.com/docker/docker/pkg/parsers))
99df63b
Provides: bundled(golang(github.com/gogo/protobuf/gogoproto))
ce95328
Provides: bundled(golang(github.com/gogo/protobuf/jsonpb))
99df63b
Provides: bundled(golang(github.com/gogo/protobuf/proto))
99df63b
Provides: bundled(golang(github.com/gogo/protobuf/types))
99df63b
Provides: bundled(golang(github.com/grpc-ecosystem/grpc-opentracing/go/otgrpc))
99df63b
Provides: bundled(golang(github.com/hashicorp/yamux))
99df63b
Provides: bundled(golang(github.com/mdlayher/vsock))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer))
ce95328
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/cgroups))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/configs))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/nsenter))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/seccomp))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/specconv))
99df63b
Provides: bundled(golang(github.com/opencontainers/runc/libcontainer/utils))
99df63b
Provides: bundled(golang(github.com/opencontainers/runtime-spec/specs-go))
99df63b
Provides: bundled(golang(github.com/opentracing/opentracing-go))
99df63b
Provides: bundled(golang(github.com/pkg/errors))
99df63b
Provides: bundled(golang(github.com/sirupsen/logrus))
ce95328
Provides: bundled(golang(github.com/stretchr/testify/assert))
99df63b
Provides: bundled(golang(github.com/uber/jaeger-client-go/config))
99df63b
Provides: bundled(golang(github.com/vishvananda/netlink))
ce95328
Provides: bundled(golang(github.com/vishvananda/netns))
99df63b
Provides: bundled(golang(golang.org/x/net/context))
99df63b
Provides: bundled(golang(golang.org/x/sys/unix))
99df63b
Provides: bundled(golang(google.golang.org/grpc))
99df63b
Provides: bundled(golang(google.golang.org/grpc/codes))
99df63b
Provides: bundled(golang(google.golang.org/grpc/status))
99df63b
3345b25
3345b25
%description
3345b25
%{summary}
3345b25
99df63b
99df63b
3345b25
%prep
2bc8098
%autosetup -Sgit -n osbuilder-%{version}
9339734
tar -xvf %{SOURCE1} > /dev/null
Fabiano Fidêncio 83247b4
pushd agent-%{version}
Fabiano Fidêncio 83247b4
patch -p1 < %{SOURCE4}
Fabiano Fidêncio 83247b4
popd
99df63b
3345b25
3345b25
%build
591da57
# Manually build nsdax tool
591da57
gcc %{build_cflags} image-builder/nsdax.gpl.c -o nsdax
591da57
99df63b
# Build kata-agent
2bc8098
pushd agent-%{version}
99df63b
mkdir _build
99df63b
pushd _build
99df63b
mkdir -p src/github.com/kata-containers
99df63b
ln -s $(dirs +1 -l) src/github.com/kata-containers/agent
99df63b
popd
99df63b
99df63b
mv vendor src
99df63b
export GOPATH=$(pwd)/_build:$(pwd)
99df63b
%gobuild -o %{name}
99df63b
make
99df63b
popd
99df63b
99df63b
3345b25
%install
2e304be
# Install the whole kata agent rooted in /usr/libexec
2e304be
# The whole tree is copied into the appliance by our script
2e304be
mkdir -p %{buildroot}%{kataagentdir}
2e304be
pushd agent-%{version}
2e304be
%makeinstall DESTDIR=%{buildroot}%{kataagentdir}
2e304be
popd
2e304be
99df63b
mkdir -p %{buildroot}%{katadatadir}
99df63b
mkdir -p %{buildroot}%{kataosbuilderdir}
Fabiano Fidêncio 15b109b
mkdir -p %{buildroot}%{katalocalstatecachedir}
9304463
rm rootfs-builder/.gitignore
591da57
cp -aR nsdax %{buildroot}/%{kataosbuilderdir}
99df63b
cp -aR rootfs-builder %{buildroot}/%{kataosbuilderdir}
99df63b
cp -aR image-builder %{buildroot}/%{kataosbuilderdir}
4e32777
cp -aR initrd-builder %{buildroot}/%{kataosbuilderdir}
99df63b
cp -aR scripts %{buildroot}%{kataosbuilderdir}
99df63b
cp -aR dracut %{buildroot}%{kataosbuilderdir}
ca3efb6
cp -a %{SOURCE5} %{buildroot}%{kataosbuilderdir}/dracut/dracut.conf.d/
b761afc
cp -a %{SOURCE2} %{buildroot}%{kataosbuilderdir}
80286ff
chmod +x %{buildroot}/%{kataosbuilderdir}/scripts/lib.sh
3345b25
4fb8c6e
install -m 0644 -D -t %{buildroot}%{_unitdir} %{_sourcedir}/kata-osbuilder-generate.service
4fb8c6e
4fb8c6e
e3e8557
%check
36b6039
# We could be run in a mock chroot, where uname will report
36b6039
# different kernel than what we have installed in the chroot.
36b6039
# So we need to determine a valid kernel version to test against.
36b6039
KVERSION=$(ls /lib/modules/ | tr "\n" " " | cut -d " " -f 1)
e3e8557
TEST_MODE=1 %{buildroot}%{kataosbuilderdir}/fedora-kata-osbuilder.sh \
36b6039
    -o %{buildroot}%{kataosbuilderdir} \
36b6039
    -k "$KVERSION"
e3e8557
e3e8557
4fb8c6e
%preun
4fb8c6e
%systemd_preun kata-osbuilder-generate.service
4fb8c6e
%postun
4fb8c6e
%systemd_postun kata-osbuilder-generate.service
3345b25
%post
Fabiano Fidêncio a33f87d
# Skip running this on Fedora CoreOS / Red Hat CoreOS
Fabiano Fidêncio a33f87d
if test -w %{katalocalstatecachedir}; then
Fabiano Fidêncio a33f87d
    %systemd_post kata-osbuilder-generate.service
Fabiano Fidêncio a33f87d
Fabiano Fidêncio a33f87d
    TMPOUT="$(mktemp -t kata-rpm-post-XXXXXX.log)"
Fabiano Fidêncio a33f87d
    echo "Creating kata appliance initrd and filesystem image..."
Fabiano Fidêncio a33f87d
    bash %{kataosbuilderdir}/fedora-kata-osbuilder.sh > ${TMPOUT} 2>&1
Fabiano Fidêncio a33f87d
    if test "$?" != "0" ; then
Fabiano Fidêncio a33f87d
        echo "Building failed. Here is the log details:"
Fabiano Fidêncio a33f87d
        cat ${TMPOUT}
Fabiano Fidêncio a33f87d
        exit 1
Fabiano Fidêncio a33f87d
    fi
99df63b
fi
99df63b
3345b25
3345b25
%files
3345b25
%license LICENSE
3345b25
%doc CODE_OF_CONDUCT.md CONTRIBUTING.md README.md
99df63b
%dir %{katadatadir}
Fabiano Fidêncio 15b109b
%dir %{katalibexecdir}
99df63b
%dir %{kataosbuilderdir}
0e24f67
%dir %{katalocalstatecachedir}
0e24f67
99df63b
%{kataosbuilderdir}/*
2e304be
%{kataagentdir}/usr/bin/kata-agent
4fb8c6e
%{_unitdir}/kata-osbuilder-generate.service
99df63b
0e24f67
# Remove some scripts we don't use
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/alpine
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/centos
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/clearlinux
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/debian
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/euleros
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/fedora
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/template
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/suse
0e24f67
%exclude %{kataosbuilderdir}/rootfs-builder/ubuntu
0e24f67
%exclude %{kataosbuilderdir}/scripts/install-yq.sh
99df63b
3345b25
3345b25
%changelog
5213150
* Tue Mar 10 2020 Cole Robinson <crobinso@redhat.com> - 1.10.0-8
5213150
- Restore needed qemu-img dep
5213150
d831056
* Fri Mar 06 2020 Cole Robinson <aintdiscole@gmail.com> - 1.10.0-7
d831056
- Allow passing non-uname kernel version to osbuilder script
d831056
bacd52d
* Thu Mar 05 2020 Cole Robinson <aintdiscole@gmail.com> - 1.10.0-6
bacd52d
- Precompile nsdax binary to drop gcc runtime dep
bacd52d
- Re-add 9p drivers for ease of debugging
bacd52d
- Add %check section
bacd52d
- Add drop in 15-dracut-fedora.conf rather than patch upstream files
bacd52d
- Drop some custom patches
bacd52d
- fedora-kata-osbuilder.sh rework and improvements
bacd52d
b70c146
* Mon Feb 17 2020 Cole Robinson <aintdiscole@gmail.com> - 1.10.0-5
b70c146
- Add runtime busybox dep, for dracut debug modules
b70c146
04bddf4
* Sat Feb 15 2020 Cole Robinson <aintdiscole@gmail.com> - 1.10.0-4
04bddf4
- Fixes for virtio-fs
04bddf4
- Add modules to aid debugging appliance initrd/image
04bddf4
150cf1d
* Fri Feb 14 2020 Cole Robinson <aintdiscole@gmail.com> - 1.10.0-3
150cf1d
- Add kata-osbuilder-generate.service
150cf1d
6ad79fd
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.10.0-2
6ad79fd
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
6ad79fd
7b9a2cd
* Tue Jan 21 2020 Christophe de Dinechin <dinechin@redhat.com> - 1.10.0-1
7b9a2cd
- Update to release 1.10.0
7b9a2cd
7ad2b3e
* Fri Jan 17 2020 Christophe de Dinechin <dinechin@redhat.com> - 1.9.3-1
7ad2b3e
- Update to 1.9.3 (No change upstream)
7ad2b3e
f41ee43
* Fri Jan 17 2020 Christophe de Dinechin <dinechin@redhat.com> - 1.9.2-1
f41ee43
- Update to 1.9.2 (No change upstream)
f41ee43
Fabiano Fidêncio dfcc16d
* Fri Jan 17 2020 Fabiano FidĂȘncio <fidencio@redhat.com> - 1.9.1-2
Fabiano Fidêncio dfcc16d
- Remove unneeded nsdax binary file - rhbz#1792216
Fabiano Fidêncio 15b109b
- Install images in /var/cache instead of /usr/libexec - rhbz#1792216
Fabiano Fidêncio dfcc16d
e205f50
* Fri Nov 29 2019 Christophe de Dinechin <dinechin@redhat.com> - 1.9.1-1
e205f50
- Udpate to 1.9.1
e205f50
d705f3c
* Tue Nov 19 2019 Christophe de Dinechin <dinechin@redhat.com> - 1.9.0-4
d705f3c
- Address remaining warnigns reported by rpmlint / rpmgrill, see bz1773629
d705f3c
acb7878
* Tue Nov 19 2019 Christophe de Dinechin <dinechin@redhat.com> - 1.9.0-3
acb7878
- Address various errors and warnings reported by rpmlint / rpmgrill:
acb7878
+ Add rpmlintrc filter to address bogus spelling erorrs (initrd -> trinity)
acb7878
+ Add rpmlintrc filter to remove golang macros warnings (no version number)
acb7878
+ Rmove percent sign in changelog
acb7878
+ Use SOURCE2 instead of _sourcedir to avoid rpmlint error
acb7878
+ Add missing golang packages in the provides list (from golist)
acb7878
+ Fix permission for fedora-kata-osbuilder.sh
acb7878
c484876
* Thu Nov 14 2019 Christophe de Dinechin <dinechin@redhat.com> - 1.9.0-2
c484876
- Build from tag instead of commit
c484876
c484876
* Thu Nov 14 2019 Christophe de Dinechin <dinechin@redhat.com> - 1.9.0-1
8b9bd69
- Update to release 1.9.0
8b9bd69
25a0423
* Thu Oct 24 2019 Cole Robinson <crobinso@redhat.com> - 1.9.0-0.3.git4287ba6
25a0423
- Link to kernel in /usr/share/kata-containers, not /boot
25a0423
bb994fa
* Thu Oct 10 2019 Cole Robinson <aintdiscole@gmail.com> - 1.9.0-0.2.git8d682c4
bb994fa
- fedora-kata-osbuilder.sh: Limit what we delete on install
bb994fa
64292bc
* Wed Sep 18 2019 Cole Robinson <aintdiscole@gmail.com> - 1.9.0-0.1.git8d682c4
64292bc
- Update to latest release 1.9.0alpha2
64292bc
- Use dracut as build method for initrd + image
b27f690
- Add fedora-kata-osbuilder.sh script that handles {percent}post image building
64292bc
f580fc7
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-4.git72c5f6a
f580fc7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
f580fc7
75918c0
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.1-3.git72c5f6a
75918c0
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
75918c0
792cfaa
* Thu Dec 13 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.1-2.git72c5f6a
792cfaa
- enable all arches
792cfaa
3345b25
* Thu Dec 13 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.1-1.git72c5f6a
3345b25
- Resolves: #1590414 - first build for Fedora
3345b25
- bump to v1.4.1
3345b25
3345b25
* Mon Nov 26 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.0-4.git39e6aa4
3345b25
- update summary and description
3345b25
3345b25
* Mon Nov 26 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.0-3.git39e6aa4
3345b25
- install license and docs
3345b25
3345b25
* Fri Nov 23 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.0-2.git39e6aa4
3345b25
- use qemu-img
3345b25
3345b25
* Fri Nov 23 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.4.0-1.git39e6aa4
3345b25
- bump to v1.4.0
3345b25
- built commit 39e6aa4
3345b25
3345b25
* Sun Nov 11 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.0.0-1.git37d1824
3345b25
- bump to 1.3.1
3345b25
- built commit 37d1824
3345b25
3345b25
* Thu Jun 28 2018 Lokesh Mandvekar <lsm5@fedoraproject.org> - 1.0.0-1.gitac0c290
3345b25
- initial build