mirror of
https://github.com/NVIDIA/nvidia-container-toolkit
synced 2024-11-30 00:11:59 +00:00
78 lines
2.4 KiB
Makefile
78 lines
2.4 KiB
Makefile
|
# 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 packaging formats
|
||
|
FORMAT_TARGETS := deb rpm
|
||
|
|
||
|
# We add utility targets to support common os-arch combinations by mapping to the required format targets.
|
||
|
DEB_TARGETS := debian10-amd64 ubuntu18.04-amd64 ubuntu18.04-arm64 ubuntu18.04-ppc64le
|
||
|
RPM_TARGETS := amazonlinux2-aarch64 amazonlinux2-x86_64 centos7-x86_64 centos8-aarch64 centos8-ppc64le centos8-x86_64 opensuse-leap15.1-x86_64
|
||
|
|
||
|
$(DEB_TARGETS): %: deb
|
||
|
$(RPM_TARGETS): %: rpm
|
||
|
|
||
|
# Define top-level build targets
|
||
|
docker%: SHELL:=/bin/bash
|
||
|
|
||
|
$(FORMAT_TARGETS): %: --%
|
||
|
|
||
|
# Default variables for all private '--' targets below.
|
||
|
# One private target is defined for each OS we support.
|
||
|
--%: FORMAT = $(*)
|
||
|
--%: BUILDIMAGE = nvidia/$(LIB_NAME)/$(FORMAT)-all
|
||
|
--%: DOCKERFILE = $(CURDIR)/docker/Dockerfile.$(FORMAT)
|
||
|
--%: ARTIFACTS_DIR = $(DIST_DIR)/$(FORMAT)/all
|
||
|
--%: docker-build-%
|
||
|
@
|
||
|
|
||
|
PKG_VERS = $(LIB_VERSION)$(if $(LIB_TAG),~$(LIB_TAG))
|
||
|
PKG_REV = 1
|
||
|
MIN_TOOLKIT_PKG_VERSION = $(TOOLKIT_VERSION)$(if $(TOOLKIT_TAG),~$(TOOLKIT_TAG))-1
|
||
|
|
||
|
--deb: BASEIMAGE := ubuntu:18.04
|
||
|
|
||
|
--rpm: BASEIMAGE := quay.io/centos/centos:stream8
|
||
|
|
||
|
docker-build-%:
|
||
|
@echo "Building $(FORMAT) packages to $(ARTIFACTS_DIR)"
|
||
|
docker pull $(BASEIMAGE)
|
||
|
DOCKER_BUILDKIT=1 \
|
||
|
$(DOCKER) build \
|
||
|
--progress=plain \
|
||
|
--build-arg BASEIMAGE="$(BASEIMAGE)" \
|
||
|
--build-arg TOOLKIT_VERSION="$(MIN_TOOLKIT_PKG_VERSION)" \
|
||
|
--build-arg PKG_NAME="$(LIB_NAME)" \
|
||
|
--build-arg PKG_VERS="$(PKG_VERS)" \
|
||
|
--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)
|