about summary refs log tree commit diff
path: root/pkgs/applications/virtualization
diff options
context:
space:
mode:
authorPhillip Cloud <417981+cpcloud@users.noreply.github.com>2020-11-03 07:17:06 -0500
committerGitHub <noreply@github.com>2020-11-03 13:17:06 +0100
commitea270c00b0b9085305cef180b4c8322362c02e16 (patch)
tree516c67a68a897a60c8d04b36dc9ae4d57cb48607 /pkgs/applications/virtualization
parent4e116914ccab9f816a9bf03116e99e0fa1d638af (diff)
bug: fix libnvidia-container build (#101665)
Diffstat (limited to 'pkgs/applications/virtualization')
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch21
-rw-r--r--pkgs/applications/virtualization/nvidia-docker/libnvc.nix54
2 files changed, 59 insertions, 16 deletions
diff --git a/pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch b/pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch
new file mode 100644
index 0000000000000..d3f207de00b29
--- /dev/null
+++ b/pkgs/applications/virtualization/nvidia-docker/avoid-static-libtirpc-build.patch
@@ -0,0 +1,21 @@
+diff --git a/Makefile b/Makefile
+index 0070ada..802cef0 100644
+--- a/Makefile
++++ b/Makefile
+@@ -202,7 +202,7 @@ $(BIN_NAME): $(BIN_OBJS)
+ ##### Public rules #####
+ 
+ all: CPPFLAGS += -DNDEBUG
+-all: shared static tools
++all: shared tools
+ 
+ # Run with ASAN_OPTIONS="protect_shadow_gap=0" to avoid CUDA OOM errors
+ debug: CFLAGS += -pedantic -fsanitize=undefined -fno-omit-frame-pointer -fno-common -fsanitize=address
+@@ -232,7 +232,6 @@ install: all
+ 	# Install header files
+ 	$(INSTALL) -m 644 $(LIB_INCS) $(DESTDIR)$(includedir)
+ 	# Install library files
+-	$(INSTALL) -m 644 $(LIB_STATIC) $(DESTDIR)$(libdir)
+ 	$(INSTALL) -m 755 $(LIB_SHARED) $(DESTDIR)$(libdir)
+ 	$(LN) -sf $(LIB_SONAME) $(DESTDIR)$(libdir)/$(LIB_SYMLINK)
+ 	$(LDCONFIG) -n $(DESTDIR)$(libdir)
diff --git a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix b/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
index 5b97d7fffa299..6079f215ec801 100644
--- a/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
+++ b/pkgs/applications/virtualization/nvidia-docker/libnvc.nix
@@ -1,17 +1,23 @@
-{ stdenv, lib, fetchFromGitHub, pkgconfig, libelf, libcap, libseccomp }:
-
-with lib; let
-
+{ stdenv
+, lib
+, fetchFromGitHub
+, pkgconfig
+, libelf
+, libcap
+, libseccomp
+, rpcsvc-proto
+, libtirpc
+}:
+let
   modp-ver = "396.51";
-
   nvidia-modprobe = fetchFromGitHub {
     owner = "NVIDIA";
     repo = "nvidia-modprobe";
     rev = modp-ver;
     sha256 = "1fw2qwc84k64agw6fx2v0mjf88aggph9c6qhs4cv7l3gmflv8qbk";
   };
-
-in stdenv.mkDerivation rec {
+in
+stdenv.mkDerivation rec {
   pname = "libnvidia-container";
   version = "1.0.6";
 
@@ -22,19 +28,32 @@ in stdenv.mkDerivation rec {
     sha256 = "1pnpc9knwh8d1zqb28zc3spkjc00w0z10vd3jna8ksvpl35jl7w3";
   };
 
-  # locations of nvidia-driver libraries are not resolved via ldconfig which
-  # doesn't get used on NixOS. Additional support binaries like nvidia-smi are
-  # not resolved via the environment PATH but via the derivation output path.
-  patches = [ ./libnvc-ldconfig-and-path-fixes.patch ];
+  patches = [
+    # locations of nvidia-driver libraries are not resolved via ldconfig which
+    # doesn't get used on NixOS. Additional support binaries like nvidia-smi
+    # are not resolved via the environment PATH but via the derivation output
+    # path.
+    ./libnvc-ldconfig-and-path-fixes.patch
+
+    # the libnvidia-container Makefile wants to build and install static
+    # libtirpc libraries; this patch prevents that from happening
+    ./avoid-static-libtirpc-build.patch
+  ];
 
   makeFlags = [
     "WITH_LIBELF=yes"
     "prefix=$(out)"
+    # we can't use the WITH_TIRPC=yes flag that exists in the Makefile for the
+    # same reason we patch out the static library use of libtirpc so we set the
+    # define in CFLAGS
+    "CFLAGS=-DWITH_TIRPC"
   ];
 
   postPatch = ''
-    sed -i 's/^REVISION :=.*/REVISION = ${src.rev}/' mk/common.mk
-    sed -i 's/^COMPILER :=.*/COMPILER = $(CC)/' mk/common.mk
+    sed -i \
+      -e 's/^REVISION :=.*/REVISION = ${src.rev}/' \
+      -e 's/^COMPILER :=.*/COMPILER = $(CC)/' \
+      mk/common.mk
 
     mkdir -p deps/src/nvidia-modprobe-${modp-ver}
     cp -r ${nvidia-modprobe}/* deps/src/nvidia-modprobe-${modp-ver}
@@ -42,11 +61,14 @@ in stdenv.mkDerivation rec {
     touch deps/src/nvidia-modprobe-${modp-ver}/.download_stamp
   '';
 
-  nativeBuildInputs = [ pkgconfig ];
+  NIX_CFLAGS_COMPILE = [ "-I${libtirpc.dev}/include/tirpc" ];
+  NIX_LDFLAGS = [ "-L${libtirpc.dev}/lib" "-ltirpc" ];
+
+  nativeBuildInputs = [ pkgconfig rpcsvc-proto ];
 
-  buildInputs = [ libelf libcap libseccomp ];
+  buildInputs = [ libelf libcap libseccomp libtirpc ];
 
-  meta = {
+  meta = with lib; {
     homepage = "https://github.com/NVIDIA/libnvidia-container";
     description = "NVIDIA container runtime library";
     license = licenses.bsd3;