Update Makefile to also generate ppc packages

Signed-off-by: Renaud Gaubert <rgaubert@nvidia.com>
This commit is contained in:
Renaud Gaubert 2020-02-06 16:27:29 -08:00
parent 8d5755fc59
commit be71170540
8 changed files with 124 additions and 49 deletions

View file

@ -12,108 +12,101 @@ DIST_DIR := $(CURDIR)/dist
.NOTPARALLEL:
.PHONY: all
all: ubuntu18.04 ubuntu16.04 debian10 debian9 centos7 amzn2 amzn1 opensuse-leap15.1
all: ubuntu18.04-amd64 ubuntu16.04-amd64 debian10-amd64 debian9-amd64 centos7-x86_64 amzn2-x86_64 amzn1-x86_64 opensuse-leap15.1-x86_64 \
ubuntu16.04-ppc64le ubuntu18.04-ppc64le centos7-ppc64le
ubuntu18.04: ARCH := amd64
ubuntu18.04:
ubuntu18.04-%:
$(DOCKER) build --build-arg VERSION_ID="18.04" \
--build-arg DOCKER_VERSION="docker-ce (>= 18.06.0~ce~3-0~ubuntu) | docker-ee (>= 18.06.0~ce~3-0~ubuntu) | docker.io (>= 18.06.0)" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/ubuntu:18.04" -f Dockerfile.ubuntu .
$(MKDIR) -p $(DIST_DIR)/ubuntu18.04/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/ubuntu:18.04"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/ubuntu18.04/$(ARCH)
-t "nvidia/nvidia-docker2/ubuntu:18.04-$*" -f docker/$*/Dockerfile.ubuntu .
$(MKDIR) -p $(DIST_DIR)/ubuntu18.04/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/ubuntu:18.04-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/ubuntu18.04/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
ubuntu16.04: ARCH := amd64
ubuntu16.04:
ubuntu16.04-%:
$(DOCKER) build --build-arg VERSION_ID="16.04" \
--build-arg DOCKER_VERSION="docker-ce (>= 18.06.0~ce~3-0~ubuntu) | docker-ee (>= 18.06.0~ce~3-0~ubuntu) | docker.io (>= 18.06.0)" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/ubuntu:16.04" -f Dockerfile.ubuntu .
$(MKDIR) -p $(DIST_DIR)/ubuntu16.04/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/ubuntu:16.04"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/ubuntu16.04/$(ARCH)
-t "nvidia/nvidia-docker2/ubuntu:16.04-$*" -f docker/$*/Dockerfile.ubuntu .
$(MKDIR) -p $(DIST_DIR)/ubuntu16.04/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/ubuntu:16.04-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/ubuntu16.04/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
debian10: ARCH := amd64
debian10:
debian10-%:
$(DOCKER) build --build-arg VERSION_ID="10" \
--build-arg DOCKER_VERSION="docker-ce (>= 18.06.0~ce~3-0~debian) | docker-ee (>= 18.06.0~ce~3-0~debian) | docker.io (>= 18.06.0)" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/debian:10" -f Dockerfile.debian .
$(MKDIR) -p $(DIST_DIR)/debian10/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/debian:10"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/debian10/$(ARCH)
-t "nvidia/nvidia-docker2/debian:10-$*" -f docker/$*/Dockerfile.debian .
$(MKDIR) -p $(DIST_DIR)/debian10/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/debian:10-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/debian10/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
debian9: ARCH := amd64
debian9:
debian9-%:
$(DOCKER) build --build-arg VERSION_ID="9" \
--build-arg DOCKER_VERSION="docker-ce (>= 18.06.0~ce~3-0~debian) | docker-ee (>= 18.06.0~ce~3-0~debian) | docker.io (>= 18.06.0)" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/debian:9" -f Dockerfile.debian .
$(MKDIR) -p $(DIST_DIR)/debian9/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/debian:9"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/debian9/$(ARCH)
-t "nvidia/nvidia-docker2/debian:9-$*" -f docker/$*/Dockerfile.debian .
$(MKDIR) -p $(DIST_DIR)/debian9/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/debian:9-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/debian9/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
centos7: ARCH := x86_64
centos7:
centos7-%:
$(DOCKER) build --build-arg VERSION_ID="7" \
--build-arg DOCKER_VERSION="docker-ce >= 18.06.3.ce-3.el7" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/centos:7" -f Dockerfile.centos .
$(MKDIR) -p $(DIST_DIR)/centos7/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/centos:7"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/centos7/$(ARCH)
-t "nvidia/nvidia-docker2/centos:7-$*" -f docker/$*/Dockerfile.centos .
$(MKDIR) -p $(DIST_DIR)/centos7/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/centos:7-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/centos7/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
amzn2: ARCH := x86_64
amzn2:
amzn2-%:
$(DOCKER) build --build-arg VERSION_ID="2" \
--build-arg DOCKER_VERSION="docker >= 18.06.1ce-2.amzn2" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/amzn:2-docker" -f Dockerfile.amzn .
$(MKDIR) -p $(DIST_DIR)/amzn2/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/amzn:2-docker"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/amzn2/$(ARCH)
-t "nvidia/nvidia-docker2/amzn:2-docker-$*" -f docker/$*/Dockerfile.amzn .
$(MKDIR) -p $(DIST_DIR)/amzn2/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/amzn:2-docker-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/amzn2/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
amzn1: ARCH := x86_64
amzn1:
amzn1-%:
$(DOCKER) build --build-arg VERSION_ID="1" \
--build-arg DOCKER_VERSION="docker >= 18.06.1ce-2.16.amzn1" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/amzn:1" -f Dockerfile.amzn .
$(MKDIR) -p $(DIST_DIR)/amzn1/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/amzn:1"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/amzn1/$(ARCH)
-t "nvidia/nvidia-docker2/amzn:1-$*" -f docker/$*/Dockerfile.amzn .
$(MKDIR) -p $(DIST_DIR)/amzn1/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/amzn:1-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/amzn1/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid
opensuse-leap15.1: ARCH := x86_64
opensuse-leap15.1:
opensuse-leap15.1-%:
$(DOCKER) build --build-arg VERSION_ID="15.1" \
--build-arg DOCKER_VERSION="docker >= 18.09.1_ce" \
--build-arg RUNTIME_VERSION="$(RUNTIME_VERSION)" \
--build-arg PKG_VERS="$(VERSION)" \
--build-arg PKG_REV="$(PKG_REV)" \
-t "nvidia/nvidia-docker2/opensuse-leap:15.1" -f Dockerfile.opensuse-leap .
$(MKDIR) -p $(DIST_DIR)/opensuse-leap15.1/$(ARCH)
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/opensuse-leap:15.1"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/opensuse-leap15.1/$(ARCH)
-t "nvidia/nvidia-docker2/opensuse-leap:15.1-$*" -f docker/$*/Dockerfile.opensuse-leap .
$(MKDIR) -p $(DIST_DIR)/opensuse-leap15.1/$*
$(DOCKER) run --cidfile $@.cid "nvidia/nvidia-docker2/opensuse-leap:15.1-$*"
$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/opensuse-leap15.1/$*
$(DOCKER) rm $$(cat $@.cid) && rm $@.cid

View file

@ -0,0 +1,39 @@
ARG VERSION_ID
FROM ppc64le/centos:${VERSION_ID}
# packaging dependencies
RUN yum install -y \
rpm-build && \
rm -rf /var/cache/yum/*
# packaging
ARG PKG_VERS
ARG PKG_REV
ARG RUNTIME_VERSION
ARG DOCKER_VERSION
ENV VERSION $PKG_VERS
ENV RELEASE $PKG_REV
ENV DOCKER_VERSION $DOCKER_VERSION
ENV RUNTIME_VERSION $RUNTIME_VERSION
# output directory
ENV DIST_DIR=/tmp/nvidia-container-runtime-$PKG_VERS/SOURCES
RUN mkdir -p $DIST_DIR /dist
COPY nvidia-docker $DIST_DIR
COPY daemon.json $DIST_DIR
WORKDIR $DIST_DIR/..
COPY rpm .
RUN sed -i "s;@VERSION@;${PKG_VERS};" $DIST_DIR/nvidia-docker
CMD rpmbuild --clean -bb \
-D "_topdir $PWD" \
-D "version $VERSION" \
-D "release $RELEASE" \
-D "docker_version $DOCKER_VERSION" \
-D "runtime_version $RUNTIME_VERSION" \
SPECS/nvidia-docker2.spec && \
mv RPMS/noarch/*.rpm /dist

View file

@ -0,0 +1,43 @@
ARG VERSION_ID
FROM ppc64le/ubuntu:${VERSION_ID}
# packaging dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
dh-make \
fakeroot \
build-essential \
devscripts \
lsb-release && \
rm -rf /var/lib/apt/lists/*
# packaging
ARG PKG_VERS
ARG PKG_REV
ARG RUNTIME_VERSION
ARG DOCKER_VERSION
ENV DEBFULLNAME "NVIDIA CORPORATION"
ENV DEBEMAIL "cudatools@nvidia.com"
ENV REVISION "$PKG_VERS-$PKG_REV"
ENV DOCKER_VERSION $DOCKER_VERSION
ENV RUNTIME_VERSION $RUNTIME_VERSION
ENV SECTION ""
# output directory
ENV DIST_DIR=/tmp/nvidia-docker2-$PKG_VERS
RUN mkdir -p $DIST_DIR /dist
# nvidia-docker 2.0
COPY nvidia-docker $DIST_DIR/nvidia-docker
COPY daemon.json $DIST_DIR/daemon.json
WORKDIR $DIST_DIR
COPY debian ./debian
RUN sed -i "s;@VERSION@;${REVISION};" debian/changelog && \
sed -i "s;@VERSION@;${PKG_VERS};" $DIST_DIR/nvidia-docker && \
if [ "$REVISION" != "$(dpkg-parsechangelog --show-field=Version)" ]; then echo "$(dpkg-parsechangelog --show-field=Version)" && exit 1; fi
CMD export DISTRIB="$(lsb_release -cs)" && \
debuild --preserve-env --dpkg-buildpackage-hook='sh debian/prepare' -i -us -uc -b && \
mv /tmp/*.deb /dist