4f32297
# Generated by go2rpm
4f32297
# arm support not fully implemented: not implemented
84b4767
%ifnarch %{arm}
4f32297
%bcond_without check
6aec4fc
%endif
6d6c07f
%bcond_with bootstrap
4f32297
4f32297
# https://github.com/containerd/containerd
4f32297
%global goipath         github.com/containerd/containerd
95f7464
Version:                1.6.23
78865e2
4f32297
%gometa
78865e2
4f32297
%global goname          containerd
4f32297
%global godevelname     containerd-devel
4f32297
4f32297
%global common_description %{expand:
4f32297
Containerd is an industry-standard container runtime with an emphasis on
4f32297
simplicity, robustness and portability. It is available as a daemon for Linux
4f32297
and Windows, which can manage the complete container lifecycle of its host
4f32297
system: image transfer and storage, container execution and supervision,
4f32297
low-level storage and network attachments, etc.}
4f32297
4f32297
%global golicenses      LICENSE NOTICE
5a9aaef
%global godocs          docs ROADMAP.md SCOPE.md code-of-conduct.md\\\
5a9aaef
                        BUILDING.md README.md RELEASES.md
4f32297
4f32297
Name:           %{goname}
ee9b079
Release:        %autorelease
4f32297
Summary:        Open and reliable container runtime
4f32297
527f298
License:        Apache-2.0
4f32297
URL:            %{gourl}
56f6890
Source0:        %{gosource}
1a26ec8
Source2:        containerd.toml
6d6c07f
# Carve out code requiring github.com/Microsoft/hcsshim
6d6c07f
Patch0:         0001-Revert-commit-for-Windows-metrics.patch
80bd17c
Patch1:         0002-Remove-windows-only-dep.patch
a7673f8
# Backport for github.com/containerd/typeurl update
a7673f8
Patch2:         0001-Use-typeurl.Any-instead-of-github.com-gogo-protobuf-.patch
87f8204
# To use with latest go-runc
87f8204
Patch3:         0001-Add-reaper-StartLocked.patch
95f7464
# To use with latest opencontainers/image-spec
95f7464
Patch4:         0001-opencontainers-image-spec-v1.1.0-rc3.patch
cd27dee
cd27dee
BuildRequires:  btrfs-progs-devel
cd27dee
BuildRequires:  go-md2man
4f32297
BuildRequires:  systemd-rpm-macros
4f32297
%if %{without bootstrap}
80bd17c
BuildRequires:  golang(github.com/containerd/aufs/plugin)
4f32297
%endif
4f32297
BuildRequires:  golang(github.com/containerd/btrfs)
4f32297
BuildRequires:  golang(github.com/containerd/cgroups)
5ba4fb2
BuildRequires:  golang(github.com/containerd/cgroups/stats/v1)
5ba4fb2
BuildRequires:  golang(github.com/containerd/cgroups/v2)
5ba4fb2
BuildRequires:  golang(github.com/containerd/cgroups/v2/stats)
4f32297
BuildRequires:  golang(github.com/containerd/console)
80bd17c
BuildRequires:  golang(github.com/containerd/continuity)
4f32297
BuildRequires:  golang(github.com/containerd/continuity/fs)
4f32297
BuildRequires:  golang(github.com/containerd/continuity/fs/fstest)
4f32297
BuildRequires:  golang(github.com/containerd/continuity/sysx)
4f32297
BuildRequires:  golang(github.com/containerd/fifo)
80bd17c
BuildRequires:  golang(github.com/containerd/go-cni)
4f32297
BuildRequires:  golang(github.com/containerd/go-runc)
80bd17c
BuildRequires:  golang(github.com/containerd/imgcrypt)
80bd17c
BuildRequires:  golang(github.com/containerd/imgcrypt/images/encryption)
80bd17c
BuildRequires:  golang(github.com/containerd/nri)
80bd17c
BuildRequires:  golang(github.com/containerd/nri/types/v1)
4f32297
BuildRequires:  golang(github.com/containerd/ttrpc)
4f32297
BuildRequires:  golang(github.com/containerd/ttrpc/plugin)
4f32297
BuildRequires:  golang(github.com/containerd/typeurl)
4f32297
%if %{without bootstrap}
80bd17c
BuildRequires:  golang(github.com/containerd/zfs/plugin)
4f32297
%endif
80bd17c
BuildRequires:  golang(github.com/containernetworking/plugins/pkg/ns)
5ba4fb2
BuildRequires:  golang(github.com/coreos/go-systemd/v22/daemon)
80bd17c
BuildRequires:  golang(github.com/davecgh/go-spew/spew)
4f32297
BuildRequires:  golang(github.com/docker/go-events)
4f32297
BuildRequires:  golang(github.com/docker/go-metrics)
4f32297
BuildRequires:  golang(github.com/docker/go-units)
80bd17c
BuildRequires:  golang(github.com/emicklei/go-restful)
80bd17c
BuildRequires:  golang(github.com/fsnotify/fsnotify)
4f32297
BuildRequires:  golang(github.com/gogo/googleapis/google/rpc)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/gogoproto)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/proto)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/protoc-gen-gogo/descriptor)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/protoc-gen-gogo/generator)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/sortkeys)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/types)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/vanity)
4f32297
BuildRequires:  golang(github.com/gogo/protobuf/vanity/command)
650fafe
BuildRequires:  golang(github.com/google/uuid)
41c62d2
BuildRequires:  golang(github.com/grpc-ecosystem/go-grpc-middleware)
4f32297
BuildRequires:  golang(github.com/grpc-ecosystem/go-grpc-prometheus)
650fafe
BuildRequires:  golang(github.com/hashicorp/go-multierror)
650fafe
BuildRequires:  golang(github.com/imdario/mergo)
41c62d2
BuildRequires:  golang(github.com/intel/goresctrl/pkg/rdt)
80bd17c
BuildRequires:  golang(github.com/klauspost/compress/zstd)
80bd17c
# BuildRequires:  golang(github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options)
5ba4fb2
# BuildRequires:  golang(github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/stats)
2ce27fb
BuildRequires:  golang(github.com/moby/locker)
80bd17c
BuildRequires:  golang(github.com/moby/sys/mountinfo)
41c62d2
BuildRequires:  golang(github.com/moby/sys/signal)
80bd17c
BuildRequires:  golang(github.com/moby/sys/symlink)
4f32297
BuildRequires:  golang(github.com/opencontainers/go-digest)
80bd17c
BuildRequires:  golang(github.com/opencontainers/go-digest/digestset)
4f32297
BuildRequires:  golang(github.com/opencontainers/image-spec/identity)
4f32297
BuildRequires:  golang(github.com/opencontainers/image-spec/specs-go)
4f32297
BuildRequires:  golang(github.com/opencontainers/image-spec/specs-go/v1)
4f32297
BuildRequires:  golang(github.com/opencontainers/runc/libcontainer/user)
4f32297
BuildRequires:  golang(github.com/opencontainers/runtime-spec/specs-go)
80bd17c
BuildRequires:  golang(github.com/opencontainers/selinux/go-selinux)
5ba4fb2
BuildRequires:  golang(github.com/opencontainers/selinux/go-selinux/label)
7bc88b8
BuildRequires:  golang(github.com/pelletier/go-toml)
4f32297
BuildRequires:  golang(github.com/prometheus/client_golang/prometheus)
4f32297
BuildRequires:  golang(github.com/sirupsen/logrus)
41c62d2
BuildRequires:  golang(github.com/stretchr/testify/require)
80bd17c
BuildRequires:  golang(github.com/tchap/go-patricia/patricia)
4f32297
BuildRequires:  golang(github.com/urfave/cli)
41c62d2
BuildRequires:  golang(github.com/vishvananda/netlink)
4f32297
BuildRequires:  golang(go.etcd.io/bbolt)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/attribute)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/propagation)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/sdk/resource)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/sdk/trace)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/semconv/v1.4.0)
41c62d2
BuildRequires:  golang(go.opentelemetry.io/otel/trace)
80bd17c
BuildRequires:  golang(golang.org/x/net/context)
4f32297
BuildRequires:  golang(golang.org/x/net/context/ctxhttp)
4f32297
BuildRequires:  golang(golang.org/x/sync/errgroup)
650fafe
BuildRequires:  golang(golang.org/x/sync/semaphore)
41c62d2
BuildRequires:  golang(golang.org/x/sys/execabs)
4f32297
BuildRequires:  golang(golang.org/x/sys/unix)
4f32297
BuildRequires:  golang(google.golang.org/grpc)
5ba4fb2
BuildRequires:  golang(google.golang.org/grpc/backoff)
4f32297
BuildRequires:  golang(google.golang.org/grpc/codes)
650fafe
BuildRequires:  golang(google.golang.org/grpc/credentials)
41c62d2
BuildRequires:  golang(google.golang.org/grpc/credentials/insecure)
4f32297
BuildRequires:  golang(google.golang.org/grpc/grpclog)
4f32297
BuildRequires:  golang(google.golang.org/grpc/health)
4f32297
BuildRequires:  golang(google.golang.org/grpc/health/grpc_health_v1)
4f32297
BuildRequires:  golang(google.golang.org/grpc/metadata)
4f32297
BuildRequires:  golang(google.golang.org/grpc/status)
5ba4fb2
BuildRequires:  golang(gotest.tools/v3/assert)
5ba4fb2
BuildRequires:  golang(gotest.tools/v3/assert/cmp)
80bd17c
BuildRequires:  golang(k8s.io/api/core/v1)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/api/errors)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/api/resource)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/apis/meta/v1)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/types)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/httpstream)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/httpstream/spdy)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/net)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/remotecommand)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/runtime)
80bd17c
BuildRequires:  golang(k8s.io/apimachinery/pkg/util/sets)
80bd17c
BuildRequires:  golang(k8s.io/apiserver/pkg/server/httplog)
80bd17c
BuildRequires:  golang(k8s.io/apiserver/pkg/util/wsstream)
80bd17c
BuildRequires:  golang(k8s.io/client-go/tools/remotecommand)
80bd17c
BuildRequires:  golang(k8s.io/client-go/util/cert)
80bd17c
BuildRequires:  golang(k8s.io/component-base/logs/logreduction)
41c62d2
BuildRequires:  golang(k8s.io/cri-api/pkg/apis/runtime/v1)
80bd17c
BuildRequires:  golang(k8s.io/cri-api/pkg/apis/runtime/v1alpha2)
80bd17c
BuildRequires:  golang(k8s.io/klog/v2)
41c62d2
BuildRequires:  golang(k8s.io/utils/clock)
80bd17c
BuildRequires:  golang(k8s.io/utils/exec)
4f32297
4f32297
%if %{with check}
4f32297
# Tests
4f32297
BuildRequires:  golang(github.com/containerd/continuity/testutil)
4f32297
BuildRequires:  golang(github.com/containerd/continuity/testutil/loopback)
4f32297
BuildRequires:  golang(github.com/google/go-cmp/cmp)
4f32297
BuildRequires:  golang(github.com/google/go-cmp/cmp/cmpopts)
80bd17c
BuildRequires:  golang(github.com/stretchr/testify/assert)
41c62d2
BuildRequires:  golang(google.golang.org/protobuf/proto)
41c62d2
BuildRequires:  golang(k8s.io/utils/clock/testing)
4f32297
%endif
78865e2
4f32297
Requires:       runc
78865e2
78865e2
%description
4f32297
%{common_description}
78865e2
4f32297
%gopkg
78865e2
78865e2
%prep
9fc9261
%goprep
80bd17c
%autopatch -p1
650fafe
# Used only for generation:
650fafe
rm -rf cmd/protoc-gen-gogoctrd
41c62d2
# Replace default bin directory
41c62d2
sed -i "s|/usr/local/bin/containerd|/usr/bin/containerd|" containerd.service
78865e2
4f32297
%if %{without bootstrap}
78865e2
%build
4f32297
export LDFLAGS="-X %{goipath}/version.Version=%{version} "
4f32297
for cmd in cmd/* ; do
4f32297
  %gobuild -o %{gobuilddir}/bin/$(basename $cmd) %{goipath}/$cmd
4f32297
done
56f6890
mkdir _man
5ba4fb2
go-md2man -in docs/man/containerd-config.8.md -out _man/containerd-config.8
56f6890
go-md2man -in docs/man/containerd-config.toml.5.md -out _man/containerd-config.toml.5
6d6c07f
%{gobuilddir}/bin/gen-manpages containerd.8 _man
5ba4fb2
%{gobuilddir}/bin/gen-manpages ctr.8 _man
650fafe
rm %{gobuilddir}/bin/gen-manpages
4f32297
%else
4f32297
rm -rf cmd
4f32297
%endif
78865e2
78865e2
%install
4f32297
%gopkginstall
4f32297
%if %{without bootstrap}
4f32297
install -m 0755 -vd                     %{buildroot}%{_bindir}
4f32297
install -m 0755 -vp %{gobuilddir}/bin/* %{buildroot}%{_bindir}/
ccfa609
install -D -p -m 0644 _man/containerd.8 %{buildroot}%{_mandir}/man8/containerd.8
ccfa609
install -D -p -m 0644 _man/containerd-config.8 %{buildroot}%{_mandir}/man8/containerd-config.8
ccfa609
install -D -p -m 0644 _man/ctr.8 %{buildroot}%{_mandir}/man8/ctr.8
56f6890
install -D -p -m 0644 _man/containerd-config.toml.5 %{buildroot}%{_mandir}/man5/containerd-config.toml.5
41c62d2
install -D -p -m 0644 containerd.service %{buildroot}%{_unitdir}/containerd.service
de1fd6f
install -D -p -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/containerd/config.toml
41c62d2
mkdir -p %{buildroot}%{_sharedstatedir}/containerd/opt
160facb
%endif
160facb
78865e2
%post
78865e2
%systemd_post containerd.service
78865e2
78865e2
%preun
78865e2
%systemd_preun containerd.service
78865e2
78865e2
%postun
78865e2
%systemd_postun_with_restart containerd.service
78865e2
4f32297
%if %{with check}
4f32297
%check
0d25305
%gocheck -d pkg/cri/server -t integration -d platforms
4f32297
%endif
78865e2
4f32297
%if %{without bootstrap}
78865e2
%files
4f32297
%license LICENSE NOTICE
5a9aaef
%doc docs ROADMAP.md SCOPE.md code-of-conduct.md BUILDING.md
4f32297
%doc README.md RELEASES.md
4f32297
%{_bindir}/*
ccfa609
%{_mandir}/man8/containerd.8*
ccfa609
%{_mandir}/man8/containerd-config.8*
ccfa609
%{_mandir}/man8/ctr.8*
bd2c7d3
%{_mandir}/man5/containerd-config.toml.5*
cd27dee
%{_unitdir}/containerd.service
5c60c14
%dir %{_sysconfdir}/containerd
78865e2
%config(noreplace) %{_sysconfdir}/containerd/config.toml
41c62d2
%dir %{_sharedstatedir}/containerd
41c62d2
%dir %{_sharedstatedir}/containerd/opt
4f32297
%endif
78865e2
4f32297
%gopkgfiles
78865e2
78865e2
%changelog
ee9b079
%autochangelog