integ/kubernetes/containerd/centos/containerd.spec
Scott Little 6c2e809c92 Modify go package to be compatible with golang 1.16.6
Most packages will compile using the new default golang version (1.16.6).
For some packages it is a transparent change, but those reliant on
the old GOPATH method require the addition of  ...

    go env -w GO111MODULE=auto

... to their build instruction to restore GOPATH compatibility.

For Kubernetes version 1.18.1, I explicitly set to compile using
golang version 1.13.9 as this is the version recommended by Kubernetes.

Story: 2008972
Task: 42655
Depends-On: https://review.opendev.org/c/starlingx/compile/+/804123
Signed-off-by: Scott Little <scott.little@windriver.com>
Change-Id: I0d813cd245cb46932bf2096b641c4972f8a49efc
2021-08-16 09:45:48 -04:00

110 lines
3.3 KiB
RPMSpec

# SPDX-License-Identifier: Apache-2.0
#
# Copyright (C) 2019 Intel Corporation
#
Name: containerd
Version: 1.4.6
Release: %{tis_patch_ver}%{?_tis_dist}
Summary: Open and reliable container runtime
Group: Kubernetes
License: ASL 2.0
Source0: containerd-%{version}.tar.gz
Source1: runc-1.0.0-rc95.tar.gz
Source2: crictl-v1.21.0-linux-amd64.tar.gz
Source3: crictl.yaml
Patch1: 0001-customize-containerd-for-StarlingX.patch
URL: https://www.starlingx.io
Vendor: StarlingX
Packager: StarlingX
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(libseccomp)
BuildRequires: pkgconfig(libsystemd-journal)
# Build with our own prefered golang
# BuildRequires: golang >= 1.12.16
BuildRequires: golang >= 1.13
BuildRequires: systemd
BuildRequires: rsync
BuildRequires: go-md2man
BuildRequires: go-bindata
BuildRequires: rpm-devel >= 4.14.0
BuildRequires: rpm-libs >= 4.14.0
# required packages on install
Requires: /bin/sh
Requires: systemd
Provides: containerd
Provides: runc
Provides: containerd.io
%global _missing_build_ids_terminate_build 0
%define CONTAINERD_DIR ${HOME}/go/src/github.com/containerd/containerd
%define RUNC_DIR ${HOME}/go/src/github.com/opencontainers/runc
%description
Containerd is an industry-standard container runtime with an emphasis on
simplicity, robustness and portability. It is available as a daemon for Linux
and Windows, which can manage the complete container lifecycle of its host
system: image transfer and storage, container execution and supervision,
low-level storage and network attachments, etc.
%prep
%setup -q -c -n src -a 1
%setup -q -c -T -D -n src -a 2
%patch1 -p1
%build
# build containerd
rm -rf %{CONTAINERD_DIR}
mkdir -p %{CONTAINERD_DIR}
cp -a %{_builddir}/src/containerd/* %{CONTAINERD_DIR}/
pushd %{CONTAINERD_DIR}
go env -w GO111MODULE=auto
make
popd
# build runc
rm -rf %{RUNC_DIR}
mkdir -p %{RUNC_DIR}
cp -a %{_builddir}/src/runc/* %{RUNC_DIR}/
pushd %{RUNC_DIR}
make
popd
%install
# install containerd
install -d %{buildroot}%{_bindir}
install -p -m 755 %{CONTAINERD_DIR}/bin/containerd %{buildroot}%{_bindir}/containerd
install -d %{buildroot}%{_prefix}/local/bin
ln -s %{_bindir}/containerd %{buildroot}%{_prefix}/local/bin/containerd
install -p -m 755 %{CONTAINERD_DIR}/bin/containerd-shim %{buildroot}%{_bindir}/containerd-shim
install -p -m 755 %{CONTAINERD_DIR}/bin/containerd-shim-runc-v1 %{buildroot}%{_bindir}/containerd-shim-runc-v1
install -p -m 755 %{CONTAINERD_DIR}/bin/containerd-shim-runc-v2 %{buildroot}%{_bindir}/containerd-shim-runc-v2
install -p -m 755 %{CONTAINERD_DIR}/bin/containerd-stress %{buildroot}%{_bindir}/containerd-stress
install -p -m 755 %{CONTAINERD_DIR}/bin/ctr %{buildroot}%{_bindir}/ctr
install -p -m 755 %{RUNC_DIR}/runc %{buildroot}%{_bindir}/runc
install -p -m 755 %{_builddir}/src/crictl %{buildroot}%{_bindir}/crictl
install -d %{buildroot}%{_sysconfdir}
install -m 644 %{_sourcedir}/crictl.yaml %{buildroot}%{_sysconfdir}/crictl.yaml
install -d %{buildroot}%{_unitdir}
install -p -m 644 %{CONTAINERD_DIR}/containerd.service %{buildroot}%{_unitdir}/containerd.service
# list files owned by the package here
%files
%{_prefix}/local/bin/containerd
%{_bindir}/containerd
%{_bindir}/containerd-shim
%{_bindir}/containerd-shim-runc-v1
%{_bindir}/containerd-shim-runc-v2
%{_bindir}/containerd-stress
%{_bindir}/ctr
%{_bindir}/runc
%{_bindir}/crictl
%{_sysconfdir}/crictl.yaml
%{_unitdir}/containerd.service