diff --git a/components/packaging/.gitignore b/components/packaging/.gitignore index b17df620f3..abe1c339c4 100644 --- a/components/packaging/.gitignore +++ b/components/packaging/.gitignore @@ -1,3 +1,4 @@ build debbuild rpmbuild +tmp diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index a9fd0eb779..6cc849a09d 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -15,7 +15,12 @@ RPMBUILD_FLAGS=-ba\ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ - SPECS/docker-ce-cli.spec SPECS/docker-ce.spec + SPECS/docker-ce.spec SPECS/docker-ce-cli.spec + +SOURCE_TGZS=containerd-proxy.tgz cli.tgz +SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_TGZS)) + +CONTAINERD_PROXY_COMMIT=3337fb47f10892318361b58c8483f19b1ffa8203 .PHONY: help help: ## show make targets @@ -24,7 +29,8 @@ help: ## show make targets .PHONY: clean clean: ## remove build artifacts [ ! -d rpmbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild - rm -rf rpmbuild + $(RM) -r rpmbuild + $(RM) -r tmp/ .PHONY: rpm rpm: fedora centos ## build all rpm packages @@ -36,19 +42,22 @@ fedora: fedora-28 fedora-27 fedora-26 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages .PHONY: fedora-28 -fedora-28: rpmbuild/SOURCES/cli.tgz ## build fedora-28 rpm packages +fedora-28: ## build fedora-28 rpm packages +fedora-28: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: fedora-27 -fedora-27: rpmbuild/SOURCES/cli.tgz ## build fedora-27 rpm packages +fedora-27: ## build fedora-27 rpm packages +fedora-27: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild .PHONY: centos-7 -centos-7: rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages +centos-7: ## build centos-7 rpm packages +centos-7: $(SOURCES) docker build --build-arg GO_VERSION=$(GO_VERSION) -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) . $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -60,3 +69,14 @@ rpmbuild/SOURCES/cli.tgz: -v $(CURDIR)/rpmbuild/SOURCES:/v \ alpine \ tar -C / -c -z -f /v/cli.tgz --exclude .git cli + +rpmbuild/SOURCES/containerd-proxy.tgz: + mkdir -p tmp/ + curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT)/ours.tar.gz" + tar xzf tmp/containerd-proxy.tgz -C tmp/ + mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy + mkdir -p $(@D) + $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild + tar -zcf $@ -C tmp/ containerd-proxy + rm -rf tmp/ + $(CHOWN) -R root:root rpmbuild/SOURCES diff --git a/components/packaging/rpm/SPECS/docker-ce.spec b/components/packaging/rpm/SPECS/docker-ce.spec index a2e3d25b18..2bd53ba8e6 100644 --- a/components/packaging/rpm/SPECS/docker-ce.spec +++ b/components/packaging/rpm/SPECS/docker-ce.spec @@ -4,6 +4,7 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} Epoch: %{getenv:EPOCH} +Source0: containerd-proxy.tgz Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -35,17 +36,24 @@ language, framework or packaging system. That makes them great building blocks for deploying and scaling web apps, databases, and backend services without depending on a particular stack or provider. +%prep +%setup -q -c -n src + +%build +mkdir -p /go/src/github.com/crosbymichael/ +ls %{_topdir}/BUILD/src +ln -s %{_topdir}/BUILD/src/containerd-proxy /go/src/github.com/crosbymichael/containerd-proxy +go build -v -o /build/dockerd github.com/crosbymichael/containerd-proxy + %install +install -D -m 0755 /build/dockerd $RPM_BUILD_ROOT/%{_bindir}/dockerd %files +/%{_bindir}/dockerd %post if ! getent group docker > /dev/null; then groupadd --system docker fi -# TODO Needs upgrade vs. install logic handling here -if ctr --namespace docker container info dockerd > /dev/null 2>&1 ; then - docker engine init -fi %changelog