@@ -76,6 +76,8 @@ docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \
7676
7777# Default variables for all private '--' targets below.
7878# One private target is defined for each OS we support.
79+ --% : CFLAGS :=
80+ --% : LDLIBS :=
7981--% : TARGET_PLATFORM = $(* )
8082--% : VERSION = $(patsubst $(OS ) % -$(ARCH ) ,% ,$(TARGET_PLATFORM ) )
8183--% : BASEIMAGE = $(OS ) :$(VERSION )
@@ -85,12 +87,29 @@ docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \
8587--% : docker-build-%
8688 @
8789
90+ # Define verify targets to run a minimal sanity check that everything has built
91+ # and runs correctly for a given OS on amd64/x86_64. Requires a working NVIDIA
92+ # driver installation on a native amd64/x86_64 machine.
93+ $(patsubst % , % -verify, $(AMD64_TARGETS ) ) : ARCH := amd64
94+ $(patsubst % , % -verify, $(AMD64_TARGETS ) ) : % -verify: --verify-%
95+ $(patsubst % , % -verify, $(X86_64_TARGETS ) ) : ARCH := x86_64
96+ $(patsubst % , % -verify, $(X86_64_TARGETS ) ) : % -verify: --verify-%
97+ docker-amd64-verify : $(patsubst % , % -verify, $(AMD64_TARGETS ) ) \
98+ $(patsubst %, %-verify, $(X86_64_TARGETS))
99+
100+ --verify-% : docker-verify-%
101+ @
102+
88103# private OS targets with defaults
89104--ubuntu% : OS := ubuntu
90105--debian% : OS := debian
91- --centos% : OS := centos
92106--amazonlinux% : OS := amazonlinux
93107
108+ # private centos target with overrides
109+ --centos% : OS := centos
110+ --centos8% : CFLAGS := -I/usr/include/tirpc
111+ --centos8% : LDLIBS := -ltirpc
112+
94113# private opensuse-leap target with overrides
95114--opensuse-leap% : OS := opensuse-leap
96115--opensuse-leap% : BASEIMAGE = opensuse/leap:$(VERSION )
@@ -99,6 +118,11 @@ docker-all: $(AMD64_TARGETS) $(X86_64_TARGETS) \
99118--rhel% : OS := centos
100119--rhel% : VERSION = $(patsubst rhel% -$(ARCH ) ,% ,$(TARGET_PLATFORM ) )
101120--rhel% : ARTIFACTS_DIR = $(DIST_DIR ) /rhel$(VERSION ) /$(ARCH )
121+ --rhel8% : CFLAGS := -I/usr/include/tirpc
122+ --rhel8% : LDLIBS := -ltirpc
123+
124+ --verify-rhel% : OS := centos
125+ --verify-rhel% : VERSION = $(patsubst rhel% -$(ARCH ) ,% ,$(TARGET_PLATFORM ) )
102126
103127docker-build-% :
104128 @echo " Building for $( TARGET_PLATFORM) "
@@ -112,6 +136,8 @@ docker-build-%:
112136 --build-arg WITH_LIBELF=$(WITH_LIBELF ) \
113137 --build-arg WITH_TIRPC=$(WITH_TIRPC ) \
114138 --build-arg WITH_SECCOMP=$(WITH_SECCOMP ) \
139+ --build-arg CFLAGS=$(CFLAGS ) \
140+ --build-arg LDLIBS=$(LDLIBS ) \
115141 $(EXTRA_BUILD_ARGS ) \
116142 --tag $(BUILDIMAGE ) \
117143 --file $(DOCKERFILE ) .
@@ -121,6 +147,15 @@ docker-build-%:
121147 -v $(ARTIFACTS_DIR ) :/dist \
122148 $(BUILDIMAGE )
123149
150+ docker-verify-% : %
151+ @echo " Verifying for $( TARGET_PLATFORM) "
152+ $(DOCKER ) run \
153+ --privileged \
154+ --runtime=nvidia \
155+ -e NVIDIA_VISIBLE_DEVICES=all \
156+ --rm $(BUILDIMAGE ) \
157+ bash -c " make install; LD_LIBRARY_PATH=/usr/local/lib/ nvidia-container-cli -k -d /dev/tty info"
158+
124159docker-clean :
125160 IMAGES=$$(docker images "nvidia/$(LIB_NAME ) /*" --format="{{.ID}}" ) ; \
126161 if [ " $$ {IMAGES}" != " " ]; then \
0 commit comments