mirror of
				https://github.com/NVIDIA/nvidia-container-toolkit
				synced 2025-06-26 18:18:24 +00:00 
			
		
		
		
	Update build system to match libnvidia-container
Signed-off-by: Kevin Klues <kklues@nvidia.com>
This commit is contained in:
		
							parent
							
								
									f7a19bb301
								
							
						
					
					
						commit
						3353d7530c
					
				
							
								
								
									
										19
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								Makefile
									
									
									
									
									
								
							| @ -2,20 +2,17 @@ | ||||
| 
 | ||||
| DOCKER   ?= docker | ||||
| MKDIR    ?= mkdir | ||||
| REGISTRY ?= nvidia/container-toolkit | ||||
| DIST_DIR ?= $(CURDIR)/dist | ||||
| 
 | ||||
| LIB_NAME := nvidia-container-toolkit | ||||
| LIB_VERSION := 1.0.5 | ||||
| 
 | ||||
| GOLANG_VERSION := 1.14.2 | ||||
| VERSION        := 1.0.5 | ||||
| DIST_DIR       := $(CURDIR)/dist | ||||
| 
 | ||||
| TOOLKIT=nvidia-container-toolkit | ||||
| GOLANG_PKG_PATH := github.com/NVIDIA/container-toolkit/pkg | ||||
| 
 | ||||
| # By default run all native docker-based targets
 | ||||
| docker-native: | ||||
| include $(CURDIR)/docker.mk | ||||
| 
 | ||||
| .PHONY: all | ||||
| 
 | ||||
| all: ubuntu18.04 ubuntu16.04 debian10 debian9 centos7 amzn2 amzn1 opensuse-leap15.1 | ||||
| 
 | ||||
| binary: | ||||
| 	go build -ldflags "-s -w" -o "$(TOOLKIT)" github.com/NVIDIA/container-toolkit/pkg | ||||
| 
 | ||||
| 	go build -ldflags "-s -w" -o "$(LIB_NAME)" $(GOLANG_PKG_PATH) | ||||
|  | ||||
							
								
								
									
										188
									
								
								docker.mk
									
									
									
									
									
								
							
							
						
						
									
										188
									
								
								docker.mk
									
									
									
									
									
								
							| @ -1,74 +1,128 @@ | ||||
| # Copyright (c) 2017-2020, NVIDIA CORPORATION. All rights reserved.
 | ||||
| 
 | ||||
| push%: | ||||
| 	docker push "$(REGISTRY)/$*" | ||||
| # 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 | ||||
| 
 | ||||
| ubuntu%: ARCH := amd64 | ||||
| ubuntu%: | ||||
| 	$(DOCKER) build --pull \
 | ||||
| 		--build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \
 | ||||
| 		--build-arg VERSION_ID="$*" \
 | ||||
| 		--build-arg PKG_VERS="$(VERSION)" \
 | ||||
| 		--build-arg PKG_REV="1" \
 | ||||
| 		--tag "$(REGISTRY)/ubuntu$*" \
 | ||||
| 		--file docker/Dockerfile.ubuntu . | ||||
| 	$(MKDIR) -p $(DIST_DIR)/$@/$(ARCH) | ||||
| 	$(DOCKER) run --cidfile $@.cid "$(REGISTRY)/ubuntu$*" | ||||
| 	$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/$@/$(ARCH)/ | ||||
| 	$(DOCKER) rm $$(cat $@.cid) && rm $@.cid | ||||
| # Define top-level build targets
 | ||||
| docker%: SHELL:=/bin/bash | ||||
| 
 | ||||
| debian%: ARCH := amd64 | ||||
| debian%: | ||||
| 	$(DOCKER) build --pull \
 | ||||
| 		--build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \
 | ||||
| 		--build-arg VERSION_ID="$*" \
 | ||||
| 		--build-arg PKG_VERS="$(VERSION)" \
 | ||||
| 		--build-arg PKG_REV="1" \
 | ||||
| 		--tag "$(REGISTRY)/debian$*" \
 | ||||
| 		--file docker/Dockerfile.debian . | ||||
| 	$(MKDIR) -p $(DIST_DIR)/$@/$(ARCH) | ||||
| 	$(DOCKER) run --cidfile $@.cid "$(REGISTRY)/debian$*" | ||||
| 	$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/$@/$(ARCH)/ | ||||
| 	$(DOCKER) rm $$(cat $@.cid) && rm $@.cid | ||||
| # 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) | ||||
| 
 | ||||
| centos%: ARCH := x86_64 | ||||
| centos%: | ||||
| 	$(DOCKER) build --pull \
 | ||||
| 		--build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \
 | ||||
| 		--build-arg VERSION_ID="$*" \
 | ||||
| 		--build-arg PKG_VERS="$(VERSION)" \
 | ||||
| 		--build-arg PKG_REV="2" \
 | ||||
| 		--tag "$(REGISTRY)/centos$*" \
 | ||||
| 		--file docker/Dockerfile.centos . | ||||
| 	$(MKDIR) -p $(DIST_DIR)/$@/$(ARCH) | ||||
| 	$(DOCKER) run --cidfile $@.cid "$(REGISTRY)/centos$*" | ||||
| 	$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/$@/$(ARCH)/ | ||||
| 	$(DOCKER) rm $$(cat $@.cid) && rm $@.cid | ||||
| # amd64 targets
 | ||||
| AMD64_TARGETS := $(patsubst %, %-amd64, $(AMD64_TARGETS)) | ||||
| $(AMD64_TARGETS): ARCH := amd64 | ||||
| $(AMD64_TARGETS): %: --% | ||||
| docker-amd64: $(AMD64_TARGETS) | ||||
| 
 | ||||
| amzn%: ARCH := x86_64 | ||||
| amzn%: | ||||
| 	$(DOCKER) build --pull \
 | ||||
| 		--build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \
 | ||||
| 		--build-arg VERSION_ID="$*" \
 | ||||
| 		--build-arg PKG_VERS="$(VERSION)" \
 | ||||
| 		--build-arg PKG_REV="2.amzn$*" \
 | ||||
| 		--tag "$(REGISTRY)/amzn$*" \
 | ||||
| 		--file docker/Dockerfile.amzn . | ||||
| 	$(MKDIR) -p $(DIST_DIR)/$@/$(ARCH) | ||||
| 	$(DOCKER) run --cidfile $@.cid "$(REGISTRY)/amzn$*" | ||||
| 	$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/$@/$(ARCH)/ | ||||
| 	$(DOCKER) rm $$(cat $@.cid) && rm $@.cid | ||||
| # 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) | ||||
| 
 | ||||
| opensuse-leap%: ARCH := x86_64 | ||||
| opensuse-leap%: | ||||
| 	$(DOCKER) build --pull \
 | ||||
| 		--build-arg GOLANG_VERSION="$(GOLANG_VERSION)" \
 | ||||
| 		--build-arg VERSION_ID="$*" \
 | ||||
| 		--build-arg PKG_VERS="$(VERSION)" \
 | ||||
| 		--build-arg PKG_REV="1" \
 | ||||
| 		--tag "$(REGISTRY)/opensuse-leap$*" \
 | ||||
| 		--file docker/Dockerfile.opensuse-leap . | ||||
| 	$(MKDIR) -p $(DIST_DIR)/$@/$(ARCH) | ||||
| 	$(DOCKER) run --cidfile $@.cid "$(REGISTRY)/opensuse-leap$*" | ||||
| 	$(DOCKER) cp $$(cat $@.cid):/dist/. $(DIST_DIR)/$@/$(ARCH)/ | ||||
| 	$(DOCKER) rm $$(cat $@.cid) && rm $@.cid | ||||
| # 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 ubuntu target
 | ||||
| --ubuntu%: OS := ubuntu | ||||
| --ubuntu%: PKG_REV := 1 | ||||
| 
 | ||||
| # private debian target
 | ||||
| --debian%: OS := debian | ||||
| --debian%: PKG_REV := 1 | ||||
| 
 | ||||
| # private centos target
 | ||||
| --centos%: OS := centos | ||||
| --centos%: PKG_REV := 2 | ||||
| 
 | ||||
| # private amazonlinux target
 | ||||
| --amazonlinux%: OS := amazonlinux | ||||
| --amazonlinux%: PKG_REV = 2.amzn$(VERSION) | ||||
| 
 | ||||
| # private opensuse-leap target
 | ||||
| --opensuse-leap%: OS = opensuse-leap | ||||
| --opensuse-leap%: BASEIMAGE = opensuse/leap:$(VERSION) | ||||
| --opensuse-leap%: PKG_REV := 1 | ||||
| 
 | ||||
| # private rhel target (actually built on centos)
 | ||||
| --rhel%: OS := centos | ||||
| --rhel%: PKG_REV := 2 | ||||
| --rhel%: VERSION = $(patsubst rhel%-$(ARCH),%,$(TARGET_PLATFORM)) | ||||
| --rhel%: ARTIFACTS_DIR = $(DIST_DIR)/rhel$(VERSION)/$(ARCH) | ||||
| 
 | ||||
| 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 GOLANG_VERSION="$(GOLANG_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) | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| ARG VERSION_ID | ||||
| FROM amazonlinux:${VERSION_ID} | ||||
| ARG BASEIMAGE | ||||
| FROM ${BASEIMAGE} | ||||
| 
 | ||||
| RUN yum install -y \ | ||||
|         ca-certificates \ | ||||
| @ -1,5 +1,5 @@ | ||||
| ARG VERSION_ID | ||||
| FROM centos:${VERSION_ID} | ||||
| ARG BASEIMAGE | ||||
| FROM ${BASEIMAGE} | ||||
| 
 | ||||
| RUN yum install -y \ | ||||
|         ca-certificates \ | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| ARG VERSION_ID | ||||
| FROM debian:${VERSION_ID} | ||||
| ARG BASEIMAGE | ||||
| FROM ${BASEIMAGE} | ||||
| 
 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|         wget \ | ||||
|         ca-certificates \ | ||||
|  | ||||
| @ -1,5 +1,5 @@ | ||||
| ARG VERSION_ID | ||||
| FROM opensuse/leap:${VERSION_ID} | ||||
| ARG BASEIMAGE | ||||
| FROM ${BASEIMAGE} | ||||
| 
 | ||||
| RUN zypper install -y \ | ||||
|     ca-certificates \ | ||||
|  | ||||
| @ -1,6 +1,7 @@ | ||||
| ARG VERSION_ID | ||||
| FROM ubuntu:${VERSION_ID} | ||||
| ARG BASEIMAGE | ||||
| FROM ${BASEIMAGE} | ||||
| 
 | ||||
| ENV DEBIAN_FRONTEND=noninteractive | ||||
| RUN apt-get update && apt-get install -y --no-install-recommends \ | ||||
|         wget \ | ||||
|         ca-certificates \ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user