diff --git a/Makefile b/Makefile index fec5522..66816c6 100644 --- a/Makefile +++ b/Makefile @@ -1,152 +1,25 @@ -# Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. - -DOCKER ?= docker -MKDIR ?= mkdir -DIST_DIR ?= $(CURDIR)/dist +# Copyright (c) 2017-2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. LIB_NAME := nvidia-docker2 -LIB_VERSION := 2.6.1 +LIB_VERSION := 2.7.0 LIB_TAG := rc.1 # Note: This should be the previous full release of nvidia-container-toolkit to ensure # that release candidate (e.g. rc.1) work as expected. TOOLKIT_VERSION := 1.5.1 -# Supported OSs by architecture -AMD64_TARGETS := ubuntu20.04 ubuntu18.04 ubuntu16.04 debian10 debian9 -X86_64_TARGETS := centos7 centos8 rhel7 rhel8 amazonlinux1 amazonlinux2 opensuse-leap15.1 -PPC64LE_TARGETS := ubuntu18.04 ubuntu16.04 centos7 centos8 rhel7 rhel8 -ARM64_TARGETS := ubuntu20.04 ubuntu18.04 -AARCH64_TARGETS := centos8 rhel8 - # By default run all native docker-based targets docker-native: - -# Define top-level build targets -docker%: SHELL:=/bin/bash - -# Native targets -PLATFORM ?= $(shell uname -m) -ifeq ($(PLATFORM),x86_64) -NATIVE_TARGETS := $(AMD64_TARGETS) $(X86_64_TARGETS) -$(AMD64_TARGETS): %: %-amd64 -$(X86_64_TARGETS): %: %-x86_64 -else ifeq ($(PLATFORM),ppc64le) -NATIVE_TARGETS := $(PPC64LE_TARGETS) -$(PPC64LE_TARGETS): %: %-ppc64le -else ifeq ($(PLATFORM),aarch64) -NATIVE_TARGETS := $(ARM64_TARGETS) $(AARCH64_TARGETS) -$(ARM64_TARGETS): %: %-arm64 -$(AARCH64_TARGETS): %: %-aarch64 -endif -docker-native: $(NATIVE_TARGETS) - -# amd64 targets -AMD64_TARGETS := $(patsubst %, %-amd64, $(AMD64_TARGETS)) -$(AMD64_TARGETS): ARCH := amd64 -$(AMD64_TARGETS): %: --% -docker-amd64: $(AMD64_TARGETS) - -# x86_64 targets -X86_64_TARGETS := $(patsubst %, %-x86_64, $(X86_64_TARGETS)) -$(X86_64_TARGETS): ARCH := x86_64 -$(X86_64_TARGETS): %: --% -docker-x86_64: $(X86_64_TARGETS) - -# arm64 targets -ARM64_TARGETS := $(patsubst %, %-arm64, $(ARM64_TARGETS)) -$(ARM64_TARGETS): ARCH := arm64 -$(ARM64_TARGETS): %: --% -docker-arm64: $(ARM64_TARGETS) - -# aarch64 targets -AARCH64_TARGETS := $(patsubst %, %-aarch64, $(AARCH64_TARGETS)) -$(AARCH64_TARGETS): ARCH := aarch64 -$(AARCH64_TARGETS): %: --% -docker-aarch64: $(AARCH64_TARGETS) - -# ppc64le targets -PPC64LE_TARGETS := $(patsubst %, %-ppc64le, $(PPC64LE_TARGETS)) -$(PPC64LE_TARGETS): ARCH := ppc64le -$(PPC64LE_TARGETS): WITH_LIBELF := yes -$(PPC64LE_TARGETS): %: --% -docker-ppc64le: $(PPC64LE_TARGETS) - -# docker target to build for all os/arch combinations -docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \ - $(ARM64_TARGETS) $(AARCH64_TARGETS) \ - $(PPC64LE_TARGETS) - -# Default variables for all private '--' targets below. -# One private target is defined for each OS we support. ---%: PKG_REV = 1 ---%: TARGET_PLATFORM = $(*) ---%: VERSION = $(patsubst $(OS)%-$(ARCH),%,$(TARGET_PLATFORM)) ---%: BASEIMAGE = $(OS):$(VERSION) ---%: BUILDIMAGE = nvidia/$(LIB_NAME)/$(OS)$(VERSION)-$(ARCH) ---%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.$(OS) ---%: ARTIFACTS_DIR = $(DIST_DIR)/$(OS)$(VERSION)/$(ARCH) ---%: docker-build-% - @ - -# private ubuntu target ---ubuntu%: OS := ubuntu ---ubuntu%: LIB_VERSION := $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG)) ---ubuntu%: 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) - -# private debian target ---debian%: OS := debian ---debian%: LIB_VERSION := $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG)) ---debian%: 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) - -# private centos target ---centos%: OS := centos ---centos%: DOCKER_VERSION := docker-ce >= 18.06.3.ce-3.el7 ---centos%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) - -# private amazonlinuxtarget ---amazonlinux%: OS := amazonlinux ---amazonlinux2%: DOCKER_VERSION := docker >= 18.06.1ce-2.amzn2 ---amazonlinux1%: DOCKER_VERSION := docker >= 18.06.1ce-2.16.amzn1 ---amazonlinux%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) - -# private opensuse-leap target ---opensuse-leap%: OS := opensuse-leap ---opensuse-leap%: BASEIMAGE = opensuse/leap:$(VERSION) ---opensuse-leap%: DOCKER_VERSION := docker >= 18.09.1_ce ---opensuse-leap%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) - -# private rhel target (actually built on centos) ---rhel%: OS := centos ---rhel%: VERSION = $(patsubst rhel%-$(ARCH),%,$(TARGET_PLATFORM)) ---rhel%: ARTIFACTS_DIR = $(DIST_DIR)/rhel$(VERSION)/$(ARCH) ---rhel%: DOCKER_VERSION := docker-ce >= 18.06.3.ce-3.el7 ---rhel%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) - -docker-build-%: - @echo "Building for $(TARGET_PLATFORM)" - docker pull --platform=linux/$(ARCH) $(BASEIMAGE) - DOCKER_BUILDKIT=1 \ - $(DOCKER) build \ - --progress=plain \ - --build-arg BASEIMAGE="$(BASEIMAGE)" \ - --build-arg DOCKER_VERSION="$(DOCKER_VERSION)" \ - --build-arg TOOLKIT_VERSION="$(TOOLKIT_VERSION)" \ - --build-arg PKG_VERS="$(LIB_VERSION)" \ - --build-arg PKG_REV="$(PKG_REV)" \ - --tag $(BUILDIMAGE) \ - --file $(DOCKERFILE) . - $(DOCKER) run \ - -e DISTRIB \ - -e SECTION \ - -v $(ARTIFACTS_DIR):/dist \ - $(BUILDIMAGE) - -docker-clean: - IMAGES=$$(docker images "nvidia/$(LIB_NAME)/*" --format="{{.ID}}"); \ - if [ "$${IMAGES}" != "" ]; then \ - docker rmi -f $${IMAGES}; \ - fi - -distclean: - rm -rf $(DIST_DIR) +include $(CURDIR)/docker/docker.mk diff --git a/debian/changelog b/debian/changelog index 4956ab7..ffb81c2 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,7 @@ -nvidia-docker2 (2.6.1~rc.1-1) UNRELEASED; urgency=medium +nvidia-docker2 (2.7.0~rc.1-1) UNRELEASED; urgency=medium * [BUILD] Allow for TAG to be specified in Makfile to match other projects - * Replace nvidia-container-runtime dependece with nvidia-container-toolit >= 1.5.2 - + * Replace nvidia-container-runtime dependece with nvidia-container-toolit > 1.5.1 -- NVIDIA CORPORATION Thu, 29 Apr 2021 05:25:25 +0000 diff --git a/docker/docker.mk b/docker/docker.mk new file mode 100644 index 0000000..f2a49f9 --- /dev/null +++ b/docker/docker.mk @@ -0,0 +1,158 @@ +# Copyright (c) 2021, NVIDIA CORPORATION. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +DOCKER ?= docker +MKDIR ?= mkdir +DIST_DIR ?= $(CURDIR)/dist + +# Supported OSs by architecture +AMD64_TARGETS := ubuntu20.04 ubuntu18.04 ubuntu16.04 debian10 debian9 +X86_64_TARGETS := centos7 centos8 rhel7 rhel8 amazonlinux1 amazonlinux2 opensuse-leap15.1 +PPC64LE_TARGETS := ubuntu18.04 ubuntu16.04 centos7 centos8 rhel7 rhel8 +ARM64_TARGETS := ubuntu20.04 ubuntu18.04 +AARCH64_TARGETS := centos8 rhel8 + +# By default run all native docker-based targets +docker-native: + +# Define top-level build targets +docker%: SHELL:=/bin/bash + +# Native targets +PLATFORM ?= $(shell uname -m) +ifeq ($(PLATFORM),x86_64) +NATIVE_TARGETS := $(AMD64_TARGETS) $(X86_64_TARGETS) +$(AMD64_TARGETS): %: %-amd64 +$(X86_64_TARGETS): %: %-x86_64 +else ifeq ($(PLATFORM),ppc64le) +NATIVE_TARGETS := $(PPC64LE_TARGETS) +$(PPC64LE_TARGETS): %: %-ppc64le +else ifeq ($(PLATFORM),aarch64) +NATIVE_TARGETS := $(ARM64_TARGETS) $(AARCH64_TARGETS) +$(ARM64_TARGETS): %: %-arm64 +$(AARCH64_TARGETS): %: %-aarch64 +endif +docker-native: $(NATIVE_TARGETS) + +# amd64 targets +AMD64_TARGETS := $(patsubst %, %-amd64, $(AMD64_TARGETS)) +$(AMD64_TARGETS): ARCH := amd64 +$(AMD64_TARGETS): %: --% +docker-amd64: $(AMD64_TARGETS) + +# x86_64 targets +X86_64_TARGETS := $(patsubst %, %-x86_64, $(X86_64_TARGETS)) +$(X86_64_TARGETS): ARCH := x86_64 +$(X86_64_TARGETS): %: --% +docker-x86_64: $(X86_64_TARGETS) + +# arm64 targets +ARM64_TARGETS := $(patsubst %, %-arm64, $(ARM64_TARGETS)) +$(ARM64_TARGETS): ARCH := arm64 +$(ARM64_TARGETS): %: --% +docker-arm64: $(ARM64_TARGETS) + +# aarch64 targets +AARCH64_TARGETS := $(patsubst %, %-aarch64, $(AARCH64_TARGETS)) +$(AARCH64_TARGETS): ARCH := aarch64 +$(AARCH64_TARGETS): %: --% +docker-aarch64: $(AARCH64_TARGETS) + +# ppc64le targets +PPC64LE_TARGETS := $(patsubst %, %-ppc64le, $(PPC64LE_TARGETS)) +$(PPC64LE_TARGETS): ARCH := ppc64le +$(PPC64LE_TARGETS): WITH_LIBELF := yes +$(PPC64LE_TARGETS): %: --% +docker-ppc64le: $(PPC64LE_TARGETS) + +# docker target to build for all os/arch combinations +docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \ + $(ARM64_TARGETS) $(AARCH64_TARGETS) \ + $(PPC64LE_TARGETS) + +# Default variables for all private '--' targets below. +# One private target is defined for each OS we support. +--%: TARGET_PLATFORM = $(*) +--%: VERSION = $(patsubst $(OS)%-$(ARCH),%,$(TARGET_PLATFORM)) +--%: BASEIMAGE = $(OS):$(VERSION) +--%: BUILDIMAGE = nvidia/$(LIB_NAME)/$(OS)$(VERSION)-$(ARCH) +--%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.$(OS) +--%: ARTIFACTS_DIR = $(DIST_DIR)/$(OS)$(VERSION)/$(ARCH) +--%: docker-build-% + @ + +# private OS targets with defaults +# private ubuntu target +--ubuntu%: OS := ubuntu +--ubuntu%: LIB_VERSION := $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG)) +--ubuntu%: 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) +--ubuntu%: PKG_REV := 1 + +# private debian target +--debian%: OS := debian +--debian%: LIB_VERSION := $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG)) +--debian%: 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) +--debian%: PKG_REV := 1 + +# private centos target +--centos%: OS := centos +--centos%: DOCKER_VERSION := docker-ce >= 18.06.3.ce-3.el7 +--centos%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) + +# private amazonlinux target +--amazonlinux%: OS := amazonlinux +--amazonlinux2%: DOCKER_VERSION := docker >= 18.06.1ce-2.amzn2 +--amazonlinux1%: DOCKER_VERSION := docker >= 18.06.1ce-2.16.amzn1 +--amazonlinux%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) + +# private opensuse-leap target with overrides +--opensuse-leap%: OS := opensuse-leap +--opensuse-leap%: BASEIMAGE = opensuse/leap:$(VERSION) +--opensuse-leap%: DOCKER_VERSION := docker >= 18.09.1_ce +--opensuse-leap%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) + +# private rhel target (actually built on centos) +--rhel%: OS := centos +--rhel%: PKG_REV := $(if $(LIB_TAG),0.1.$(LIB_TAG),1) +--rhel%: VERSION = $(patsubst rhel%-$(ARCH),%,$(TARGET_PLATFORM)) +--rhel%: ARTIFACTS_DIR = $(DIST_DIR)/rhel$(VERSION)/$(ARCH) +--rhel%: DOCKER_VERSION := docker-ce >= 18.06.3.ce-3.el7 + +docker-build-%: + @echo "Building for $(TARGET_PLATFORM)" + docker pull --platform=linux/$(ARCH) $(BASEIMAGE) + DOCKER_BUILDKIT=1 \ + $(DOCKER) build \ + --progress=plain \ + --build-arg BASEIMAGE="$(BASEIMAGE)" \ + --build-arg DOCKER_VERSION="$(DOCKER_VERSION)" \ + --build-arg TOOLKIT_VERSION="$(TOOLKIT_VERSION)" \ + --build-arg PKG_VERS="$(LIB_VERSION)" \ + --build-arg PKG_REV="$(PKG_REV)" \ + --tag $(BUILDIMAGE) \ + --file $(DOCKERFILE) . + $(DOCKER) run \ + -e DISTRIB \ + -e SECTION \ + -v $(ARTIFACTS_DIR):/dist \ + $(BUILDIMAGE) + +docker-clean: + IMAGES=$$(docker images "nvidia/$(LIB_NAME)/*" --format="{{.ID}}"); \ + if [ "$${IMAGES}" != "" ]; then \ + docker rmi -f $${IMAGES}; \ + fi + +distclean: + rm -rf $(DIST_DIR) diff --git a/rpm/SPECS/nvidia-docker2.spec b/rpm/SPECS/nvidia-docker2.spec index f7fa2ce..acedeb4 100644 --- a/rpm/SPECS/nvidia-docker2.spec +++ b/rpm/SPECS/nvidia-docker2.spec @@ -39,9 +39,9 @@ install -m 644 -t %{buildroot}/etc/docker daemon.json %config /etc/docker/daemon.json %changelog -* Mon Sep 06 2021 NVIDIA CORPORATION 2.6.1-0.1.rc.1 +* Mon Sep 06 2021 NVIDIA CORPORATION 2.7.0-0.1.rc.1 - [BUILD] Allow for TAG to be specified in Makfile to match other projects -- Replace nvidia-container-runtime dependece with nvidia-container-toolit >= 1.5.2 +- Replace nvidia-container-runtime dependece with nvidia-container-toolit > 1.5.1 * Thu Apr 29 2021 NVIDIA CORPORATION 2.6.0-1 - Add dependence on nvidia-container-runtime >= 3.5.0