$ git diff --patch-with-stat --summary f86da194b0e609b307619963174707174e6111ea..fb10e7ca61f9e790415821ede9261727f2aaa6a9
.abf.yml | 2 +-
containerd.service | 13 +++
containerd.spec | 299 +++++++++++++++++++----------------------------------
containerd.toml | 15 +++
4 files changed, 135 insertions(+), 194 deletions(-)
create mode 100644 containerd.service
create mode 100644 containerd.toml
diff --git a/.abf.yml b/.abf.yml
index 3159e5f..4330df9 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,2 @@
sources:
- v0.2.5.tar.gz: aaf6fd1c5176b8575af1d8edf82af3d733528451
+ containerd-1.0.2.tar.gz: 125dd7699fa9e86a8b2d76f63044db55638e024d
diff --git a/containerd.service b/containerd.service
new file mode 100644
index 0000000..08c6a2e
--- /dev/null
+++ b/containerd.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=containerd container runtime
+Documentation=https://containerd.io
+After=network.target
+
+[Service]
+ExecStartPre=/sbin/modprobe overlay
+ExecStart=/usr/bin/containerd
+Delegate=yes
+KillMode=process
+
+[Install]
+WantedBy=multi-user.target
diff --git a/containerd.spec b/containerd.spec
index e449751..f87f731 100644
--- a/containerd.spec
+++ b/containerd.spec
@@ -1,214 +1,127 @@
-%define _libexecdir /usr/libexec
-%define debugcflags %nil
+%bcond_without ctr
+%bcond_with debug
-# modifying the dockerinit binary breaks the SHA1 sum check by docker
-#global __os_install_post %{_usrlibrpm}/brp-compress
-
-#debuginfo not supported with Go
+%if %{with debug}
+%global _dwz_low_mem_die_limit 0
+%else
%global debug_package %{nil}
-%global import_path github.com/docker/containerd
-%global go_dir %{_libdir}/go
-%define gosrc %{go_dir}/src/%{import_path}
-%define provider github
-%define provider_tld com
-%define project %{name}
-%define shortcommit 4dc5990
-
-Name: containerd
-Version: 0.2.5
-Release: 1
-Summary: Daemon to control runC
-License: ASL 2.0
-Group: System/Base
-URL: http://containerd.tools
-Source0: https://%{import_path}/archive/v%{version}.tar.gz
-BuildRequires: glibc-static-devel
-
-BuildRequires: golang
-BuildRequires: pkgconfig(sqlite3)
-
-BuildRequires: go-md2man
-BuildRequires: pkgconfig(systemd)
-BuildRequires: pkgconfig(devmapper)
-BuildRequires: btrfs-devel
-Requires: systemd
+%endif
+
+%define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x %{?**};
+
+%global import_path github.com/containerd/containerd
+
+Name: containerd
+Version: 1.0.2
+%global commit 9b55aab90508bd389d7654c4baf173a981477d55
+%global tag v%{version}
+Release: 1%{?dist}
+Summary: An industry-standard container runtime
+License: ASL 2.0
+URL: https://containerd.io
+Source0: https://%{import_path}/archive/%{tag}/containerd-%{version}.tar.gz
+Source1: containerd.service
+Source2: containerd.toml
+%{?go_compiler:BuildRequires: compiler(go-compiler)}
+BuildRequires: golang >= 1.8
+BuildRequires: systemd
+BuildRequires: btrfs-devel
+%{?systemd_requires}
+# https://github.com/containerd/containerd/issues/1508#issuecomment-335566293
+Requires: runc >= 1.0.0
+# vendored libraries
+# awk '{print "Provides: bundled(golang("$1")) = "$2}' containerd-*/vendor.conf | sort
+Provides: bundled(golang(github.com/beorn7/perks)) = 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9
+Provides: bundled(golang(github.com/boltdb/bolt)) = e9cf4fae01b5a8ff89d0ec6b32f0d9c9f79aefdd
+Provides: bundled(golang(github.com/BurntSushi/toml)) = 99064174e013895bbd9b025c31100bd1d9b590ca
+Provides: bundled(golang(github.com/containerd/btrfs)) = cc52c4dea2ce11a44e6639e561bb5c2af9ada9e3
+Provides: bundled(golang(github.com/containerd/cgroups)) = 29da22c6171a4316169f9205ab6c49f59b5b852f
+Provides: bundled(golang(github.com/containerd/console)) = 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e
+Provides: bundled(golang(github.com/containerd/continuity)) = cf279e6ac893682272b4479d4c67fd3abf878b4e
+Provides: bundled(golang(github.com/containerd/fifo)) = fbfb6a11ec671efbe94ad1c12c2e98773f19e1e6
+Provides: bundled(golang(github.com/containerd/go-runc)) = ed1cbe1fc31f5fb2359d3a54b6330d1a097858b7
+Provides: bundled(golang(github.com/containerd/typeurl)) = f6943554a7e7e88b3c14aad190bf05932da84788
+Provides: bundled(golang(github.com/coreos/go-systemd)) = 48702e0da86bd25e76cfef347e2adeb434a0d0a6
+Provides: bundled(golang(github.com/davecgh/go-spew)) = v1.1.0
+Provides: bundled(golang(github.com/dmcgowan/go-tar)) = go1.10
+Provides: bundled(golang(github.com/docker/go-events)) = 9461782956ad83b30282bf90e31fa6a70c255ba9
+Provides: bundled(golang(github.com/docker/go-metrics)) = 8fd5772bf1584597834c6f7961a530f06cbfbb87
+Provides: bundled(golang(github.com/docker/go-units)) = v0.3.1
+Provides: bundled(golang(github.com/godbus/dbus)) = c7fdd8b5cd55e87b4e1f4e372cdb1db61dd6c66f
+Provides: bundled(golang(github.com/gogo/protobuf)) = v0.5
+Provides: bundled(golang(github.com/golang/protobuf)) = 1643683e1b54a9e88ad26d98f81400c8c9d9f4f9
+Provides: bundled(golang(github.com/grpc-ecosystem/go-grpc-prometheus)) = 6b7015e65d366bf3f19b2b2a000a831940f0f7e0
+Provides: bundled(golang(github.com/matttproud/golang_protobuf_extensions)) = v1.0.0
+Provides: bundled(golang(github.com/Microsoft/go-winio)) = v0.4.4
+Provides: bundled(golang(github.com/Microsoft/hcsshim)) = v0.6.7
+Provides: bundled(golang(github.com/Microsoft/opengcs)) = v0.3.2
+Provides: bundled(golang(github.com/opencontainers/go-digest)) = 21dfd564fd89c944783d00d069f33e3e7123c448
+Provides: bundled(golang(github.com/opencontainers/image-spec)) = v1.0.0
+Provides: bundled(golang(github.com/opencontainers/runc)) = 7f24b40cc5423969b4554ef04ba0b00e2b4ba010
+Provides: bundled(golang(github.com/opencontainers/runtime-spec)) = v1.0.0
+Provides: bundled(golang(github.com/pkg/errors)) = v0.8.0
+Provides: bundled(golang(github.com/pmezard/go-difflib)) = v1.0.0
+Provides: bundled(golang(github.com/prometheus/client_golang)) = v0.8.0
+Provides: bundled(golang(github.com/prometheus/client_model)) = fa8ad6fec33561be4280a8f0514318c79d7f6cb6
+Provides: bundled(golang(github.com/prometheus/common)) = 195bde7883f7c39ea62b0d92ab7359b5327065cb
+Provides: bundled(golang(github.com/prometheus/procfs)) = fcdb11ccb4389efb1b210b7ffb623ab71c5fdd60
+Provides: bundled(golang(github.com/sirupsen/logrus)) = v1.0.0
+Provides: bundled(golang(github.com/stevvooe/ttrpc)) = d2710463e497617f16f26d1e715a3308609e7982
+Provides: bundled(golang(github.com/stretchr/testify)) = v1.1.4
+Provides: bundled(golang(github.com/urfave/cli)) = 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
+Provides: bundled(golang(golang.org/x/net)) = 7dcfb8076726a3fdd9353b6b8a1f1b6be6811bd6
+Provides: bundled(golang(golang.org/x/sync)) = 450f422ab23cf9881c94e2db30cac0eb1b7cf80c
+Provides: bundled(golang(golang.org/x/sys)) = 314a259e304ff91bd6985da2a7149bbf91237993
+Provides: bundled(golang(golang.org/x/text)) = 19e51611da83d6be54ddafce4a4af510cb3e9ea4
+Provides: bundled(golang(google.golang.org/genproto)) = d80a6e20e776b0b17a324d0ba1ab50a39c8e8944
+Provides: bundled(golang(google.golang.org/grpc)) = v1.7.2
-# need xz to work with ubuntu images
-# https://bugzilla.redhat.com/show_bug.cgi?id=1045220
-Requires: xz
-# https://bugzilla.redhat.com/show_bug.cgi?id=1034919
-# No longer needed in Fedora because of libcontainer
-Requires: libcgroup
-Requires: e2fsprogs
-Requires: iptables
-
-Requires: runc
%description
-Containerd is a daemon with an API and a command line client, to manage
-containers on one machine.
-
-It uses runC to run containers according to the OCI specification.
-Containerd has advanced features such as seccomp and user namespace
-support as well as checkpoint and restore for cloning and live migration
-of containers.
+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.
-%package devel
-BuildRequires: golang >= 1.3.3
-Requires: golang >= 1.3.3
-Summary: A golang registry for global request variables (source libraries)
-Provides: golang(%{import_path}) = %{version}-%{release}
-Provides: golang(%{import_path}/api) = %{version}-%{release}
-Provides: golang(%{import_path}/api/client) = %{version}-%{release}
-Provides: golang(%{import_path}/api/server) = %{version}-%{release}
-Provides: golang(%{import_path}/api/types) = %{version}-%{release}
-Provides: golang(%{import_path}/archive) = %{version}-%{release}
-Provides: golang(%{import_path}/builtins) = %{version}-%{release}
-Provides: golang(%{import_path}/contrib) = %{version}-%{release}
-Provides: golang(%{import_path}/contrib/docker-device-tool) = %{version}-%{release}
-Provides: golang(%{import_path}/contrib/host-integration) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/execdriver) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/execdriver/execdrivers) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/execdriver/lxc) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/execdriver/native) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/execdriver/native/template) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/aufs) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/btrfs) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/devmapper) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/overlay) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/graphtest) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/graphdriver/vfs) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/logger) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/logger/jsonfilelog) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/logger/syslog) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/networkdriver) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/networkdriver/bridge) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/networkdriver/ipallocator) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/networkdriver/portallocator) = %{version}-%{release}
-Provides: golang(%{import_path}/daemon/networkdriver/portmapper) = %{version}-%{release}
-Provides: golang(%{import_path}/dockerversion) = %{version}-%{release}
-Provides: golang(%{import_path}/engine) = %{version}-%{release}
-Provides: golang(%{import_path}/graph) = %{version}-%{release}
-Provides: golang(%{import_path}/image) = %{version}-%{release}
-Provides: golang(%{import_path}/integration) = %{version}-%{release}
-Provides: golang(%{import_path}/integration-cli) = %{version}-%{release}
-Provides: golang(%{import_path}/links) = %{version}-%{release}
-Provides: golang(%{import_path}/nat) = %{version}-%{release}
-Provides: golang(%{import_path}/opts) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/term) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/term/winconsole) = %{version}-%{release}
-Provides: golang(%{import_path}/registry) = %{version}-%{release}
-Provides: golang(%{import_path}/registry/v2) = %{version}-%{release}
-Provides: golang(%{import_path}/runconfig) = %{version}-%{release}
-Provides: golang(%{import_path}/utils) = %{version}-%{release}
-Provides: golang(%{import_path}/utils/broadcastwriter) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/graphdb) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/iptables) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/listenbuffer) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/mflag) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/mflag/example) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/mount) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/namesgenerator) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/networkfs/etchosts) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/networkfs/resolvconf) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/signal) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/symlink) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/sysinfo) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/system) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/systemd) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/tailfile) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/term) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/testutils) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/truncindex) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/units) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/user) = %{version}-%{release}
-Provides: golang(%{import_path}/pkg/version) = %{version}-%{release}
-
-%description devel
-This is the source libraries for docker.
%prep
-%setup -q
-%apply_patches
-#rm -rf vendor/src/code.google.com vendor/src/github.com/{coreos,docker/libtrust,godbus,gorilla,kr,syndtr,tchap}
-#for f in `find . -name '*.go'`; do
- #perl -pi -e 's|github.com/docker/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar|archive/tar|' $f
-#done
+%setup -qn containerd-%{version}
%build
-#export CC=gcc
-#export CXX=g++
-#sed -i 's!external!internal!g' hack/make.sh
-#mkdir -p bfd
-#ln -s %{_bindir}/ld.bfd bfd/ld
-#export PATH=$PWD/bfd:$PATH
-#export DOCKER_GITCOMMIT="%{shortcommit}"
-#export CGO_CFLAGS="-I%{_includedir}"
-#export CGO_LDFLAGS="-L%{_libdir}"
-#export AUTO_GOPATH=1
-
-# FIXME there must be a better way to make go see those?!
-mkdir -p vendor/src/github.com/docker/containerd
-for i in *; do
- [ -d $i ] && ln -s `pwd`/$i vendor/src/github.com/docker/containerd/
-done
-cat >vendor/src/github.com/docker/containerd/version.go <<'EOF'
-package containerd;
-const Version = "%{version}";
-const GitCommit = "%{version}";
-const VersionMajor = 0;
-const VersionMinor = 2;
-const VersionPatch = 3;
-EOF
-
-GOPATH=`pwd` make
+export CC=gcc
+export CXX=g++
+mkdir -p src/%(dirname %{import_path})
+ln -s ../../.. src/%{import_path}
+export GOPATH=$(pwd):%{gopath}
+export LDFLAGS="-X %{import_path}/version.Package=%{import_path} -X %{import_path}/version.Version=%{tag} -X %{import_path}/version.Revision=%{commit}"
+%gobuild -o bin/containerd %{import_path}/cmd/containerd
+%gobuild -o bin/containerd-shim %{import_path}/cmd/containerd-shim
+%{?with_ctr:%gobuild -o bin/ctr %{import_path}/cmd/ctr}
%install
-# install binary
-install -d %{buildroot}%{_bindir}
-install -p -m 755 bin/* %{buildroot}%{_bindir}/
-
-# install systemd/init scripts
-install -d %{buildroot}%{_unitdir}
-sed -e 's,/usr/local,%{_prefix},g' hack/containerd.service >%{buildroot}%{_unitdir}/containerd.service
-
-# sources
-install -d -p %{buildroot}/%{gosrc}
-
-for dir in api containerd containerd-shim ctr osutils runtime specs supervisor
-do
- cp -rpav $dir %{buildroot}/%{gosrc}
-done
+install -D -m 0755 bin/containerd %{buildroot}%{_bindir}/containerd
+install -D -m 0755 bin/containerd-shim %{buildroot}%{_bindir}/containerd-shim
+%{?with_ctr:install -D -m 0755 bin/ctr %{buildroot}%{_bindir}/ctr}
+install -D -m 0644 %{S:1} %{buildroot}%{_unitdir}/containerd.service
+install -D -m 0644 %{S:2} %{buildroot}%{_sysconfdir}/containerd/config.toml
+ln -s containerd %{buildroot}%{_bindir}/docker-containerd
+ln -s containerd-shim %{buildroot}%{_bindir}/docker-containerd-shim
-find %{buildroot} -name "*~" -exec rm -rf {} \;
-find %{buildroot}%{go_dir}/src/github.com/ -type d -exec chmod 0755 {} \;
+%post
+%systemd_post containerd.service
-# Docker expects stuff to be named its way...
-cd %{buildroot}%{_bindir}
-for i in *; do
- ln -s $i docker-$i
-done
+%preun
+%systemd_preun containerd.service
-install -d %{buildroot}%{_presetdir}
-cat > %{buildroot}%{_presetdir}/86-containerd.preset << EOF
-enable containerd.service
-EOF
+%postun
+%systemd_postun_with_restart containerd.service
%files
-%doc MAINTAINERS NOTICE README.md
%{_bindir}/containerd
-%{_bindir}/containerd-shim
-%{_bindir}/ctr
%{_bindir}/docker-containerd
%{_bindir}/docker-containerd-shim
-%{_bindir}/docker-ctr
-%{_presetdir}/86-containerd.preset
+%{_bindir}/containerd-shim
+%{?with_ctr:%{_bindir}/ctr}
%{_unitdir}/containerd.service
-
-%files devel
-%doc MAINTAINERS NOTICE README.md
-%{go_dir}/src/github.com
+%config(noreplace) %{_sysconfdir}/containerd/config.toml
diff --git a/containerd.toml b/containerd.toml
new file mode 100644
index 0000000..fc3f9f7
--- /dev/null
+++ b/containerd.toml
@@ -0,0 +1,15 @@
+#root = "/var/lib/containerd"
+#state = "/run/containerd"
+#subreaper = true
+#oom_score = 0
+
+#[grpc]
+# address = "/run/containerd/containerd.sock"
+# uid = 0
+# gid = 0
+
+#[debug]
+# address = "/run/containerd/debug.sock"
+# uid = 0
+# gid = 0
+# level = "info"