From cbbf970261099e55245463ee1543dafdd692c7e0 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 19 Sep 2018 11:02:30 -0700 Subject: [PATCH 1/2] Rework debian packaging to build binaries directly No more image based dockerd Signed-off-by: Eli Uriegas --- ce.mk | 2 ++ deb/Makefile | 40 ++++++++++++--------------------- deb/common/control | 14 ++++++++++-- deb/common/rules | 14 +++++++----- deb/debian-buster/Dockerfile | 6 ++--- deb/debian-jessie/Dockerfile | 6 ++--- deb/debian-stretch/Dockerfile | 6 ++--- deb/raspbian-jessie/Dockerfile | 6 ++--- deb/raspbian-stretch/Dockerfile | 6 ++--- deb/ubuntu-bionic/Dockerfile | 6 ++--- deb/ubuntu-trusty/Dockerfile | 6 ++--- deb/ubuntu-xenial/Dockerfile | 6 ++--- systemd/docker.service | 2 +- 13 files changed, 53 insertions(+), 67 deletions(-) create mode 100644 ce.mk diff --git a/ce.mk b/ce.mk new file mode 100644 index 0000000000..98bfd2f375 --- /dev/null +++ b/ce.mk @@ -0,0 +1,2 @@ +DEFAULT_PRODUCT_LICENSE?=Community Engine +PLATFORM?=Docker Engine - Community diff --git a/deb/Makefile b/deb/Makefile index e11b5cc3ee..49cdb85bc4 100644 --- a/deb/Makefile +++ b/deb/Makefile @@ -1,8 +1,9 @@ -include ../containerd.mk +include ../ce.mk SHELL:=/bin/bash ARCH:=$(shell uname -m) CLI_DIR:=$(CURDIR)/../../cli +ENGINE_DIR:=$(CURDIR)/../../engine GITCOMMIT?=$(shell cd $(CLI_DIR) && git rev-parse --short HEAD) VERSION?=0.0.0-dev GO_BASE_IMAGE=golang @@ -21,21 +22,21 @@ BUILD?=docker build \ $(BUILD_IMAGE_FLAG) \ --build-arg GO_IMAGE=$(GO_IMAGE) \ --build-arg COMMON_FILES=$(COMMON_FILES) \ - --build-arg CONTAINERD_SHIM_PROCESS_IMAGE=$(CONTAINERD_SHIM_PROCESS_IMAGE) \ -t debbuild-$@/$(ARCH) \ -f $(CURDIR)/$@/Dockerfile . -RUN=docker run --rm -i \ +RUN?=docker run --rm -i \ -e EPOCH='$(EPOCH)' \ -e DEB_VERSION=$(word 1, $(DEB_VERSION)) \ -e VERSION=$(word 2, $(DEB_VERSION)) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLATFORM="$(PLATFORM)" \ + -e PRODUCT="$(PRODUCT)" \ + -e DEFAULT_PRODUCT_LICENSE="$(DEFAULT_PRODUCT_LICENSE)" \ -v $(CURDIR)/debbuild/$@:/build \ debbuild-$@/$(ARCH) -SOURCE_FILES=containerd-proxy.tgz cli.tgz docker.service dockerd.json engine.tar +SOURCE_FILES=cli.tgz engine.tgz docker.service SOURCES=$(addprefix sources/, $(SOURCE_FILES)) -ENGINE_IMAGE=docker/engine-community -ENGINE_SCOPE=ce IMAGE_TAG=nightly @@ -133,29 +134,16 @@ sources/cli.tgz: alpine \ tar -C / -c -z -f /v/cli.tgz --exclude .git cli -sources/containerd-proxy.tgz: - mkdir -p tmp/ - curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT).tar.gz" - tar xzf tmp/containerd-proxy.tgz -C tmp/ - mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy +sources/engine.tgz: mkdir -p $(@D) - $(CHOWN) -R $(shell id -u):$(shell id -g) $$(dirname $(@D)) - tar -zcf $@ -C tmp/ containerd-proxy - rm -rf tmp/ + docker run --rm -i -w /v \ + -v $(ENGINE_DIR):/docker \ + -v $(CURDIR)/$(@D):/v \ + alpine \ + tar -C / -c -z -f /v/engine.tgz --exclude .git docker sources/docker.service: ../systemd/docker.service mkdir -p $(@D) cp $< $@ -sources/dockerd.json: ../common/dockerd.json - mkdir -p $(@D) - sed \ - -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' \ - -e 's!$${ENGINE_SCOPE}!$(ENGINE_SCOPE)!' \ - -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' \ - $< > $@ - -# offline bundle -sources/engine.tar: - $(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) ENGINE_SCOPE=$(ENGINE_SCOPE) engine-$(ARCH).tar - mv ../image/engine-$(ARCH).tar $@ +-include ../ee.mk diff --git a/deb/common/control b/deb/common/control index a9a544c22d..c95a7f0e29 100644 --- a/deb/common/control +++ b/deb/common/control @@ -2,12 +2,22 @@ Source: docker-ce Section: admin Priority: optional Maintainer: Docker -Build-Depends: bash-completion, +Build-Depends: bash, + bash-completion, + btrfs-tools | libbtrfs-dev, + ca-certificates, + cmake, dh-apparmor, dh-systemd, + gcc, + git, + libc-dev, + libdevmapper-dev, libltdl-dev, + libseccomp-dev, + libtool, make, - gcc + pkg-config Standards-Version: 3.9.6 Homepage: https://docker.com Vcs-Browser: https://github.com/docker/docker diff --git a/deb/common/rules b/deb/common/rules index 3d16bd5c6f..f73c12d0a1 100644 --- a/deb/common/rules +++ b/deb/common/rules @@ -10,8 +10,11 @@ override_dh_gencontrol: override_dh_auto_build: cd /go/src/github.com/docker/cli && \ LDFLAGS='' DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages - cd /go/src/github.com/crosbymichael/containerd-proxy && \ - make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy + cd /go/src/github.com/docker/docker && \ + ./hack/make.sh dynbinary + for component in tini "proxy dynamic";do \ + cd /go/src/github.com/docker/docker; TMP_GOPATH="/go" hack/dockerfile/install/install.sh $$component; \ + done override_dh_strip: # Go has lots of problems with stripping, so just don't @@ -22,11 +25,10 @@ override_dh_auto_install: install -D -m 0644 /go/src/github.com/docker/cli/contrib/completion/zsh/_docker debian/docker-ce-cli/usr/share/zsh/vendor-completions/_docker install -D -m 0755 /go/src/github.com/docker/cli/build/docker debian/docker-ce-cli/usr/bin/docker # docker-ce install - install -D -m 0755 /go/src/github.com/crosbymichael/containerd-proxy/bin/containerd-proxy debian/docker-ce/usr/bin/dockerd - install -D -m 0644 /containerd-shim-process-v1 debian/docker-ce/usr/sbin/containerd-shim-process-v1 - install -D -m 0644 /sources/engine.tar debian/docker-ce/var/lib/docker-engine/engine.tar install -D -m 0644 /sources/docker.service debian/docker-ce/lib/systemd/system/docker.service - install -D -m 0644 /sources/dockerd.json debian/docker-ce/etc/containerd-proxy/dockerd.json + install -D -m 0755 /go/src/github.com/docker/docker/bundles/dynbinary-daemon/dockerd debian/docker-ce/usr/bin/dockerd + install -D -m 0755 /usr/local/bin/docker-init debian/docker-ce/usr/bin/docker-init + install -D -m 0755 /usr/local/bin/docker-proxy debian/docker-ce/usr/bin/docker-proxy override_dh_install: diff --git a/deb/debian-buster/Dockerfile b/deb/debian-buster/Dockerfile index 69a3a63103..09035481c3 100644 --- a/deb/debian-buster/Dockerfile +++ b/deb/debian-buster/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=debian:buster FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO debian ENV SUITE buster COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/debian-jessie/Dockerfile b/deb/debian-jessie/Dockerfile index 0469f1cd4a..506935fac3 100644 --- a/deb/debian-jessie/Dockerfile +++ b/deb/debian-jessie/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=debian:jessie FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO debian ENV SUITE jessie COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/debian-stretch/Dockerfile b/deb/debian-stretch/Dockerfile index 7cbb2dd4a4..5f5a868781 100644 --- a/deb/debian-stretch/Dockerfile +++ b/deb/debian-stretch/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=debian:stretch FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO debian ENV SUITE stretch COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/raspbian-jessie/Dockerfile b/deb/raspbian-jessie/Dockerfile index c45a37158d..061ca59f0a 100644 --- a/deb/raspbian-jessie/Dockerfile +++ b/deb/raspbian-jessie/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=resin/rpi-raspbian:jessie FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO raspbian ENV SUITE jessie COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/raspbian-stretch/Dockerfile b/deb/raspbian-stretch/Dockerfile index 607086660f..6a3e205476 100644 --- a/deb/raspbian-stretch/Dockerfile +++ b/deb/raspbian-stretch/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=resin/rpi-raspbian:stretch FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO raspbian ENV SUITE stretch COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/ubuntu-bionic/Dockerfile b/deb/ubuntu-bionic/Dockerfile index 638af8db73..7870c01bda 100644 --- a/deb/ubuntu-bionic/Dockerfile +++ b/deb/ubuntu-bionic/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=ubuntu:bionic FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO ubuntu ENV SUITE bionic COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/ubuntu-trusty/Dockerfile b/deb/ubuntu-trusty/Dockerfile index 43b681bca7..88470ea02f 100644 --- a/deb/ubuntu-trusty/Dockerfile +++ b/deb/ubuntu-trusty/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=ubuntu:trusty FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO ubuntu ENV SUITE trusty COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/deb/ubuntu-xenial/Dockerfile b/deb/ubuntu-xenial/Dockerfile index aeb2e88921..fe0de43829 100644 --- a/deb/ubuntu-xenial/Dockerfile +++ b/deb/ubuntu-xenial/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=ubuntu:xenial FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} @@ -21,15 +19,15 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco # Copy our sources and untar them COPY sources/ /sources RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/ -RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael +RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/engine.tgz -C /go/src/github.com/docker/ RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli +RUN ln -snf /go/src/github.com/docker/engine /root/build-deb/engine ENV DISTRO ubuntu ENV SUITE xenial COPY --from=golang /usr/local/go /usr/local/go -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 WORKDIR /root/build-deb COPY build-deb /root/build-deb/build-deb diff --git a/systemd/docker.service b/systemd/docker.service index be1617069f..8dcf1977bb 100644 --- a/systemd/docker.service +++ b/systemd/docker.service @@ -9,7 +9,7 @@ Wants=network-online.target # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker -ExecStart=/usr/bin/dockerd +ExecStart=/usr/bin/dockerd -H unix:// --containerd /run/containerd/containerd.sock --default-runtime containerd --add-runtime containerd=runc ExecReload=/bin/kill -s HUP $MAINPID ExecStopPost=/usr/bin/dockerd post-stop TimeoutSec=0 From 6661cb0094a534f8a6b9407a3eae1f27fc60fb80 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Wed, 19 Sep 2018 13:04:52 -0700 Subject: [PATCH 2/2] Make it work for RPM based distros Signed-off-by: Eli Uriegas --- rpm/Makefile | 44 +++---- rpm/SPECS/docker-ce.spec | 45 ++++--- rpm/centos-7/Dockerfile | 4 +- rpm/centos-7/docker-ce.spec | 217 ---------------------------------- rpm/fedora-27/Dockerfile | 4 +- rpm/fedora-27/docker-ce.spec | 221 ----------------------------------- rpm/fedora-28/Dockerfile | 4 +- rpm/fedora-28/docker-ce.spec | 221 ----------------------------------- 8 files changed, 48 insertions(+), 712 deletions(-) delete mode 100644 rpm/centos-7/docker-ce.spec delete mode 100644 rpm/fedora-27/docker-ce.spec delete mode 100644 rpm/fedora-28/docker-ce.spec diff --git a/rpm/Makefile b/rpm/Makefile index 18ab44f7fb..63e66b6f8e 100644 --- a/rpm/Makefile +++ b/rpm/Makefile @@ -1,4 +1,5 @@ include ../containerd.mk +include ../ce.mk ARCH=$(shell uname -m) ENGINE_DIR:=$(CURDIR)/../../engine @@ -38,11 +39,16 @@ RPMBUILD_FLAGS?=-ba\ --define '_version $(word 1,$(GEN_RPM_VER))' \ --define '_origversion $(word 4, $(GEN_RPM_VER))' \ $(SPECS) -RUN?=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) -ENGINE_IMAGE=docker/engine-community -ENGINE_SCOPE=ce - -SOURCE_FILES=containerd-proxy.tgz cli.tgz docker.service dockerd.json engine.tar +RUN?=$(RPMBUILD) \ + -e VERSION=$(VERSION) \ + -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLATFORM="$(PLATFORM)" \ + -e PRODUCT="$(PRODUCT)" \ + -e DEFAULT_PRODUCT_LICENSE="$(DEFAULT_PRODUCT_LICENSE)" \ + rpmbuild-$@/$(ARCH) \ + $(RPMBUILD_FLAGS) + +SOURCE_FILES=engine.tgz cli.tgz docker.service SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES)) @@ -101,28 +107,14 @@ rpmbuild/SOURCES/cli.tgz: 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).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/ +rpmbuild/SOURCES/engine.tgz: + mkdir -p rpmbuild/SOURCES + docker run --rm -i -w /v \ + -v $(ENGINE_DIR):/docker \ + -v $(CURDIR)/rpmbuild/SOURCES:/v \ + alpine \ + tar -C / -c -z -f /v/engine.tgz --exclude .git docker rpmbuild/SOURCES/docker.service: ../systemd/docker.service mkdir -p $(@D) cp $< $@ - -rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json - mkdir -p $(@D) - sed \ - -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' \ - -e 's!$${ENGINE_SCOPE}!$(ENGINE_SCOPE)!' \ - -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' \ - $< > $@ - -rpmbuild/SOURCES/engine.tar: - $(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) ENGINE_SCOPE=$(ENGINE_SCOPE) engine-$(ARCH)-dm.tar - mv ../image/engine-$(ARCH)-dm.tar $@ diff --git a/rpm/SPECS/docker-ce.spec b/rpm/SPECS/docker-ce.spec index 74d06ec685..0eff689da8 100644 --- a/rpm/SPECS/docker-ce.spec +++ b/rpm/SPECS/docker-ce.spec @@ -4,9 +4,8 @@ Name: docker-ce Version: %{_version} Release: %{_release}%{?dist} Epoch: 3 -Source0: containerd-proxy.tgz +Source0: engine.tgz Source1: docker.service -Source2: engine.tar Summary: The open-source application container engine Group: Tools/Docker License: ASL 2.0 @@ -21,10 +20,21 @@ Requires: iptables # Should be required as well by docker-ce-cli but let's just be thorough Requires: containerd.io -BuildRequires: which -BuildRequires: make +BuildRequires: bash +BuildRequires: btrfs-progs-devel +BuildRequires: ca-certificates +BuildRequires: cmake +BuildRequires: device-mapper-devel BuildRequires: gcc +BuildRequires: git +BuildRequires: glibc-static +BuildRequires: libseccomp-devel +BuildRequires: libtool +BuildRequires: make BuildRequires: pkgconfig(systemd) +BuildRequires: selinux-policy-devel +BuildRequires: systemd-devel +BuildRequires: which # conflicting packages Conflicts: docker @@ -52,28 +62,27 @@ depending on a particular stack or provider. %setup -q -c -n src %build -# dockerd proxy compilation -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 -pushd /go/src/github.com/crosbymichael/containerd-proxy -make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy +pushd docker +for component in tini "proxy dynamic";do + TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component +done +hack/make.sh dynbinary popd +%check +docker/bundles/dynbinary-daemon/dockerd -v + %install -# Install containerd-proxy as dockerd -install -D -m 0755 %{_topdir}/BUILD/src/containerd-proxy/bin/containerd-proxy $RPM_BUILD_ROOT/%{_bindir}/dockerd -install -D -m 0644 %{_topdir}/SOURCES/engine.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/docker-engine/engine.tar +install -D -m 0755 $(readlink -f docker/bundles/dynbinary-daemon/dockerd) $RPM_BUILD_ROOT/%{_bindir}/dockerd +install -D -m 0755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy +install -D -m 0755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init install -D -m 0644 %{_topdir}/SOURCES/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service -install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/containerd-proxy/dockerd.json -install -D -m 0755 /containerd-shim-process-v1 $RPM_BUILD_ROOT/%{_sbindir}/containerd-shim-process-v1 %files /%{_bindir}/dockerd -/%{_sbindir}/containerd-shim-process-v1 -/%{_sharedstatedir}/docker-engine/engine.tar +/%{_bindir}/docker-proxy +/%{_bindir}/docker-init /%{_unitdir}/docker.service -/etc/containerd-proxy/dockerd.json %pre if [ $1 -gt 0 ] ; then diff --git a/rpm/centos-7/Dockerfile b/rpm/centos-7/Dockerfile index 15dfb1ec92..9ca3307080 100644 --- a/rpm/centos-7/Dockerfile +++ b/rpm/centos-7/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=centos:7 FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} ENV DISTRO centos @@ -18,6 +16,6 @@ COPY SPECS /root/rpmbuild/SPECS RUN sed -i 's/altarch/centos/g' /etc/yum.repos.d/CentOS-Sources.repo RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 +COPY rpmbuild/SOURCES /root/rpmbuild/SOURCES WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/rpm/centos-7/docker-ce.spec b/rpm/centos-7/docker-ce.spec deleted file mode 100644 index e9762f3be3..0000000000 --- a/rpm/centos-7/docker-ce.spec +++ /dev/null @@ -1,217 +0,0 @@ -Name: docker-ce -Version: %{_version} -Release: %{_release}%{?dist} -Epoch: 3 -Summary: The open-source application container engine -Group: Tools/Docker -License: ASL 2.0 -Source0: engine.tgz -Source1: cli.tgz -URL: https://www.docker.com -Vendor: Docker -Packager: Docker - -# DWZ problem with multiple golang binary, see bug -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%global is_systemd 1 -%global with_selinux 1 - -BuildRequires: make -BuildRequires: cmake -BuildRequires: gcc -BuildRequires: git -BuildRequires: glibc-static -BuildRequires: libtool-ltdl-devel -BuildRequires: libseccomp-devel -BuildRequires: device-mapper-devel -BuildRequires: btrfs-progs-devel -BuildRequires: pkgconfig(systemd) -BuildRequires: pkgconfig(libsystemd-journal) - -# required packages on install -Requires: /bin/sh -Requires: container-selinux >= 2.9 -Requires: libseccomp >= 2.3 -Requires: iptables -Requires: libcgroup -Requires: systemd-units -Requires: tar -Requires: xz - -# Resolves: rhbz#1165615 -Requires: device-mapper-libs >= 1.02.90-1 - -# conflicting packages -Conflicts: docker -Conflicts: docker-io -Conflicts: docker-engine-cs -Conflicts: docker-ee - -# Obsolete packages -Obsoletes: docker-ce-selinux -Obsoletes: docker-engine-selinux -Obsoletes: docker-engine - -%description -Docker is an open source project to build, ship and run any application as a -lightweight container. - -Docker containers are both hardware-agnostic and platform-agnostic. This means -they can run anywhere, from your laptop to the largest EC2 compute instance and -everything in between - and they don't require you to use a particular -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 -a 1 - -%build -export DOCKER_GITCOMMIT=%{_gitcommit} -mkdir -p /go/src/github.com/docker -rm -f /go/src/github.com/docker/cli -ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli -pushd /go/src/github.com/docker/cli -DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli -popd -pushd engine -for component in tini "proxy dynamic" "runc all" "containerd dynamic";do - TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component -done -VERSION=%{_origversion} hack/make.sh dynbinary -popd - -%check -cli/build/docker -v -engine/bundles/dynbinary-daemon/dockerd -v - -%install -# install binary -install -d $RPM_BUILD_ROOT/%{_bindir} -install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker -install -p -m 755 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $RPM_BUILD_ROOT/%{_bindir}/dockerd - -# install proxy -install -p -m 755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy - -# install containerd -install -p -m 755 /usr/local/bin/docker-containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd -install -p -m 755 /usr/local/bin/docker-containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim -install -p -m 755 /usr/local/bin/docker-containerd-ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr - -# install runc -install -p -m 755 /usr/local/bin/docker-runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc - -# install tini -install -p -m 755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init - -# install udev rules -install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d -install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules - -# add init scripts -install -d $RPM_BUILD_ROOT/etc/sysconfig -install -d $RPM_BUILD_ROOT/%{_initddir} -install -d $RPM_BUILD_ROOT/%{_unitdir} -install -p -m 644 /systemd/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service -# add bash, zsh, and fish completions -install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions -install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions -install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d -install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker -install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker -install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 -install -d %{buildroot}%{_mandir}/man5 -install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 -install -d %{buildroot}%{_mandir}/man8 -install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 - -# add vimfiles -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax -install -p -m 644 engine/contrib/syntax/vim/doc/dockerfile.txt $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc/dockerfile.txt -install -p -m 644 engine/contrib/syntax/vim/ftdetect/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax/dockerfile.vim - -# add nano -install -d $RPM_BUILD_ROOT/usr/share/nano -install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc - -mkdir -p build-docs -for engine_file in AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md; do - cp "engine/$engine_file" "build-docs/engine-$engine_file" -done -for cli_file in LICENSE MAINTAINERS NOTICE README.md; do - cp "cli/$cli_file" "build-docs/cli-$cli_file" -done - -# list files owned by the package here -%files -%doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md -%doc build-docs/cli-LICENSE build-docs/cli-MAINTAINERS build-docs/cli-NOTICE build-docs/cli-README.md -/%{_bindir}/docker -/%{_bindir}/dockerd -/%{_bindir}/docker-containerd -/%{_bindir}/docker-containerd-shim -/%{_bindir}/docker-containerd-ctr -/%{_bindir}/docker-proxy -/%{_bindir}/docker-runc -/%{_bindir}/docker-init -/%{_sysconfdir}/udev/rules.d/80-docker.rules -/%{_unitdir}/docker.service -/usr/share/bash-completion/completions/docker -/usr/share/zsh/vendor-completions/_docker -/usr/share/fish/vendor_completions.d/docker.fish -%doc -/%{_mandir}/man1/* -/%{_mandir}/man5/* -/%{_mandir}/man8/* -/usr/share/vim/vimfiles/doc/dockerfile.txt -/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -/usr/share/vim/vimfiles/syntax/dockerfile.vim -/usr/share/nano/Dockerfile.nanorc - -%pre -if [ $1 -gt 0 ] ; then - # package upgrade scenario, before new files are installed - - # clear any old state - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - - # check if docker service is running - if systemctl is-active docker > /dev/null 2>&1; then - systemctl stop docker > /dev/null 2>&1 || : - touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%post -%systemd_post docker -if ! getent group docker > /dev/null; then - groupadd --system docker -fi - -%preun -%systemd_preun docker - -%postun -%systemd_postun_with_restart docker - -%posttrans -if [ $1 -ge 0 ] ; then - # package upgrade scenario, after new files are installed - - # check if docker was running before upgrade - if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then - systemctl start docker > /dev/null 2>&1 || : - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%changelog diff --git a/rpm/fedora-27/Dockerfile b/rpm/fedora-27/Dockerfile index 64fa7428f8..9f1a86d37a 100644 --- a/rpm/fedora-27/Dockerfile +++ b/rpm/fedora-27/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=fedora:27 FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} ENV DISTRO fedora @@ -16,6 +14,6 @@ RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 +COPY rpmbuild/SOURCES /root/rpmbuild/SOURCES WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/rpm/fedora-27/docker-ce.spec b/rpm/fedora-27/docker-ce.spec deleted file mode 100644 index 712a4ca508..0000000000 --- a/rpm/fedora-27/docker-ce.spec +++ /dev/null @@ -1,221 +0,0 @@ -Name: docker-ce -Version: %{_version} -Release: %{_release}%{?dist} -Epoch: 3 -Summary: The open-source application container engine -Group: Tools/Docker -License: ASL 2.0 -Source0: engine.tgz -Source1: cli.tgz -URL: https://www.docker.com -Vendor: Docker -Packager: Docker - -# DWZ problem with multiple golang binary, see bug -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%global is_systemd 1 -%global with_selinux 1 -%global _missing_build_ids_terminate_build 0 - -BuildRequires: make -BuildRequires: cmake -BuildRequires: gcc -BuildRequires: git -BuildRequires: glibc-static -BuildRequires: libtool-ltdl-devel -BuildRequires: libseccomp-devel -BuildRequires: device-mapper-devel -BuildRequires: btrfs-progs-devel -BuildRequires: pkgconfig(systemd) - -# required packages on install -Requires: /bin/sh -Requires: container-selinux >= 2.9 -Requires: iptables -Requires: libcgroup -Requires: systemd-units -Requires: tar -Requires: xz -Requires: pigz - -# Resolves: rhbz#1165615 -Requires: device-mapper-libs >= 1.02.90-1 - -# conflicting packages -Conflicts: docker -Conflicts: docker-io -Conflicts: docker-engine-cs -Conflicts: docker-ee - -# Obsolete packages -Obsoletes: docker-ce-selinux -Obsoletes: docker-engine-selinux -Obsoletes: docker-engine - -%description -Docker is an open source project to build, ship and run any application as a -lightweight container. - -Docker containers are both hardware-agnostic and platform-agnostic. This means -they can run anywhere, from your laptop to the largest EC2 compute instance and -everything in between - and they don't require you to use a particular -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 -a 1 - -%build -export DOCKER_GITCOMMIT=%{_gitcommit} -mkdir -p /go/src/github.com/docker -rm -f /go/src/github.com/docker/cli -ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli -pushd /go/src/github.com/docker/cli -DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli -popd -pushd engine -for component in tini "proxy dynamic" "runc all" "containerd dynamic";do - TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component -done -VERSION=%{_origversion} hack/make.sh dynbinary -popd -mkdir -p plugin -printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata - -%check -cli/build/docker -v -engine/bundles/dynbinary-daemon/dockerd -v - -%install -# install binary -install -d $RPM_BUILD_ROOT/%{_bindir} -install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker -install -p -m 755 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $RPM_BUILD_ROOT/%{_bindir}/dockerd - -# install proxy -install -p -m 755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy - -# install containerd -install -p -m 755 /usr/local/bin/docker-containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd -install -p -m 755 /usr/local/bin/docker-containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim -install -p -m 755 /usr/local/bin/docker-containerd-ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr - -# install runc -install -p -m 755 /usr/local/bin/docker-runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc - -# install tini -install -p -m 755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init - -# install udev rules -install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d -install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules - -# add init scripts -install -d $RPM_BUILD_ROOT/etc/sysconfig -install -d $RPM_BUILD_ROOT/%{_initddir} -install -d $RPM_BUILD_ROOT/%{_unitdir} -# Fedora 25+ supports (and needs) TasksMax -sed -i 's/^#TasksMax=/TasksMax=/' /systemd/docker.service -install -p -m 644 /systemd/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service -# add bash, zsh, and fish completions -install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions -install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions -install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d -install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker -install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker -install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 -install -d %{buildroot}%{_mandir}/man5 -install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 -install -d %{buildroot}%{_mandir}/man8 -install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 - -# add vimfiles -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax -install -p -m 644 engine/contrib/syntax/vim/doc/dockerfile.txt $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc/dockerfile.txt -install -p -m 644 engine/contrib/syntax/vim/ftdetect/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax/dockerfile.vim - -# add nano -install -d $RPM_BUILD_ROOT/usr/share/nano -install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc - -mkdir -p build-docs -for engine_file in AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md; do - cp "engine/$engine_file" "build-docs/engine-$engine_file" -done -for cli_file in LICENSE MAINTAINERS NOTICE README.md; do - cp "cli/$cli_file" "build-docs/cli-$cli_file" -done - -# list files owned by the package here -%files -%doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md -%doc build-docs/cli-LICENSE build-docs/cli-MAINTAINERS build-docs/cli-NOTICE build-docs/cli-README.md -/%{_bindir}/docker -/%{_bindir}/dockerd -/%{_bindir}/docker-containerd -/%{_bindir}/docker-containerd-shim -/%{_bindir}/docker-containerd-ctr -/%{_bindir}/docker-proxy -/%{_bindir}/docker-runc -/%{_bindir}/docker-init -/%{_sysconfdir}/udev/rules.d/80-docker.rules -/%{_unitdir}/docker.service -/usr/share/bash-completion/completions/docker -/usr/share/zsh/vendor-completions/_docker -/usr/share/fish/vendor_completions.d/docker.fish -%doc -/%{_mandir}/man1/* -/%{_mandir}/man5/* -/%{_mandir}/man8/* -/usr/share/vim/vimfiles/doc/dockerfile.txt -/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -/usr/share/vim/vimfiles/syntax/dockerfile.vim -/usr/share/nano/Dockerfile.nanorc - -%pre -if [ $1 -gt 0 ] ; then - # package upgrade scenario, before new files are installed - - # clear any old state - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - - # check if docker service is running - if systemctl is-active docker > /dev/null 2>&1; then - systemctl stop docker > /dev/null 2>&1 || : - touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%post -%systemd_post docker -if ! getent group docker > /dev/null; then - groupadd --system docker -fi - -%preun -%systemd_preun docker - -%postun -%systemd_postun_with_restart docker - -%posttrans -if [ $1 -ge 0 ] ; then - # package upgrade scenario, after new files are installed - - # check if docker was running before upgrade - if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then - systemctl start docker > /dev/null 2>&1 || : - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%changelog diff --git a/rpm/fedora-28/Dockerfile b/rpm/fedora-28/Dockerfile index bb163731b7..98f093cede 100644 --- a/rpm/fedora-28/Dockerfile +++ b/rpm/fedora-28/Dockerfile @@ -1,8 +1,6 @@ ARG GO_IMAGE -ARG CONTAINERD_SHIM_PROCESS_IMAGE ARG BUILD_IMAGE=fedora:28 FROM ${GO_IMAGE} as golang -FROM ${CONTAINERD_SHIM_PROCESS_IMAGE} as shim-process FROM ${BUILD_IMAGE} ENV DISTRO fedora @@ -16,6 +14,6 @@ RUN dnf install -y rpm-build rpmlint dnf-plugins-core COPY SPECS /root/rpmbuild/SPECS RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec COPY --from=golang /usr/local/go /usr/local/go/ -COPY --from=shim-process /bin/containerd-shim-process-v1 /containerd-shim-process-v1 +COPY rpmbuild/SOURCES /root/rpmbuild/SOURCES WORKDIR /root/rpmbuild ENTRYPOINT ["/bin/rpmbuild"] diff --git a/rpm/fedora-28/docker-ce.spec b/rpm/fedora-28/docker-ce.spec deleted file mode 100644 index 712a4ca508..0000000000 --- a/rpm/fedora-28/docker-ce.spec +++ /dev/null @@ -1,221 +0,0 @@ -Name: docker-ce -Version: %{_version} -Release: %{_release}%{?dist} -Epoch: 3 -Summary: The open-source application container engine -Group: Tools/Docker -License: ASL 2.0 -Source0: engine.tgz -Source1: cli.tgz -URL: https://www.docker.com -Vendor: Docker -Packager: Docker - -# DWZ problem with multiple golang binary, see bug -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%global is_systemd 1 -%global with_selinux 1 -%global _missing_build_ids_terminate_build 0 - -BuildRequires: make -BuildRequires: cmake -BuildRequires: gcc -BuildRequires: git -BuildRequires: glibc-static -BuildRequires: libtool-ltdl-devel -BuildRequires: libseccomp-devel -BuildRequires: device-mapper-devel -BuildRequires: btrfs-progs-devel -BuildRequires: pkgconfig(systemd) - -# required packages on install -Requires: /bin/sh -Requires: container-selinux >= 2.9 -Requires: iptables -Requires: libcgroup -Requires: systemd-units -Requires: tar -Requires: xz -Requires: pigz - -# Resolves: rhbz#1165615 -Requires: device-mapper-libs >= 1.02.90-1 - -# conflicting packages -Conflicts: docker -Conflicts: docker-io -Conflicts: docker-engine-cs -Conflicts: docker-ee - -# Obsolete packages -Obsoletes: docker-ce-selinux -Obsoletes: docker-engine-selinux -Obsoletes: docker-engine - -%description -Docker is an open source project to build, ship and run any application as a -lightweight container. - -Docker containers are both hardware-agnostic and platform-agnostic. This means -they can run anywhere, from your laptop to the largest EC2 compute instance and -everything in between - and they don't require you to use a particular -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 -a 1 - -%build -export DOCKER_GITCOMMIT=%{_gitcommit} -mkdir -p /go/src/github.com/docker -rm -f /go/src/github.com/docker/cli -ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli -pushd /go/src/github.com/docker/cli -DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli -popd -pushd engine -for component in tini "proxy dynamic" "runc all" "containerd dynamic";do - TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component -done -VERSION=%{_origversion} hack/make.sh dynbinary -popd -mkdir -p plugin -printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata - -%check -cli/build/docker -v -engine/bundles/dynbinary-daemon/dockerd -v - -%install -# install binary -install -d $RPM_BUILD_ROOT/%{_bindir} -install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker -install -p -m 755 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $RPM_BUILD_ROOT/%{_bindir}/dockerd - -# install proxy -install -p -m 755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy - -# install containerd -install -p -m 755 /usr/local/bin/docker-containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd -install -p -m 755 /usr/local/bin/docker-containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim -install -p -m 755 /usr/local/bin/docker-containerd-ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr - -# install runc -install -p -m 755 /usr/local/bin/docker-runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc - -# install tini -install -p -m 755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init - -# install udev rules -install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d -install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules - -# add init scripts -install -d $RPM_BUILD_ROOT/etc/sysconfig -install -d $RPM_BUILD_ROOT/%{_initddir} -install -d $RPM_BUILD_ROOT/%{_unitdir} -# Fedora 25+ supports (and needs) TasksMax -sed -i 's/^#TasksMax=/TasksMax=/' /systemd/docker.service -install -p -m 644 /systemd/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service -# add bash, zsh, and fish completions -install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions -install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions -install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d -install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker -install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker -install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 -install -d %{buildroot}%{_mandir}/man5 -install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 -install -d %{buildroot}%{_mandir}/man8 -install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 - -# add vimfiles -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect -install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax -install -p -m 644 engine/contrib/syntax/vim/doc/dockerfile.txt $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc/dockerfile.txt -install -p -m 644 engine/contrib/syntax/vim/ftdetect/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax/dockerfile.vim - -# add nano -install -d $RPM_BUILD_ROOT/usr/share/nano -install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc - -mkdir -p build-docs -for engine_file in AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md; do - cp "engine/$engine_file" "build-docs/engine-$engine_file" -done -for cli_file in LICENSE MAINTAINERS NOTICE README.md; do - cp "cli/$cli_file" "build-docs/cli-$cli_file" -done - -# list files owned by the package here -%files -%doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md -%doc build-docs/cli-LICENSE build-docs/cli-MAINTAINERS build-docs/cli-NOTICE build-docs/cli-README.md -/%{_bindir}/docker -/%{_bindir}/dockerd -/%{_bindir}/docker-containerd -/%{_bindir}/docker-containerd-shim -/%{_bindir}/docker-containerd-ctr -/%{_bindir}/docker-proxy -/%{_bindir}/docker-runc -/%{_bindir}/docker-init -/%{_sysconfdir}/udev/rules.d/80-docker.rules -/%{_unitdir}/docker.service -/usr/share/bash-completion/completions/docker -/usr/share/zsh/vendor-completions/_docker -/usr/share/fish/vendor_completions.d/docker.fish -%doc -/%{_mandir}/man1/* -/%{_mandir}/man5/* -/%{_mandir}/man8/* -/usr/share/vim/vimfiles/doc/dockerfile.txt -/usr/share/vim/vimfiles/ftdetect/dockerfile.vim -/usr/share/vim/vimfiles/syntax/dockerfile.vim -/usr/share/nano/Dockerfile.nanorc - -%pre -if [ $1 -gt 0 ] ; then - # package upgrade scenario, before new files are installed - - # clear any old state - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - - # check if docker service is running - if systemctl is-active docker > /dev/null 2>&1; then - systemctl stop docker > /dev/null 2>&1 || : - touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%post -%systemd_post docker -if ! getent group docker > /dev/null; then - groupadd --system docker -fi - -%preun -%systemd_preun docker - -%postun -%systemd_postun_with_restart docker - -%posttrans -if [ $1 -ge 0 ] ; then - # package upgrade scenario, after new files are installed - - # check if docker was running before upgrade - if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then - systemctl start docker > /dev/null 2>&1 || : - rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : - fi -fi - -%changelog