Loading pkgs/applications/virtualization/libnvidia-container/libnvc-ldconfig-and-path-fixes.patch→pkgs/by-name/li/libnvidia-container/fix-library-resolving.patch +47 −30 Original line number Diff line number Diff line From 8799541f99785d2bd881561386676fb0985e939e Mon Sep 17 00:00:00 2001 From: Moritz Sanft <58110325+msanft@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:32:42 +0200 Subject: [PATCH] fix library resolving Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> --- src/ldcache.c | 46 +++++++++++++++++----------------------------- src/ldcache.h | 2 +- src/nvc_info.c | 10 +++------- src/nvc_ldcache.c | 2 +- 4 files changed, 22 insertions(+), 38 deletions(-) diff --git a/src/ldcache.c b/src/ldcache.c index 38bab05..e1abc89 100644 index 38bab055..8cd30a0f 100644 --- a/src/ldcache.c +++ b/src/ldcache.c @@ -108,40 +108,27 @@ ldcache_close(struct ldcache *ctx) @@ -108,40 +108,28 @@ ldcache_close(struct ldcache *ctx) int ldcache_resolve(struct ldcache *ctx, uint32_t arch, const char *root, const char * const libs[], Loading @@ -24,16 +37,7 @@ index 38bab05..e1abc89 100644 - char *value = (char *)ctx->ptr + h->libs[i].value; - - if (!(flags & LD_ELF) || (flags & LD_ARCH_MASK) != arch) + for (size_t j = 0; j < size; ++j) { + snprintf(dir, 100, "/run/opengl-driver%s/lib", + arch == LD_I386_LIB32 ? "-32" : ""); + if (!strncmp(libs[j], "libvdpau_nvidia.so", 100)) + strcat(dir, "/vdpau"); + snprintf(lib, 100, "%s/%s.%s", dir, libs[j], version); + if (path_resolve_full(ctx->err, path, "/", lib) < 0) + return (-1); + if (!file_exists(ctx->err, path)) continue; - continue; - - for (size_t j = 0; j < size; ++j) { - if (!str_has_prefix(key, libs[j])) Loading @@ -52,6 +56,17 @@ index 38bab05..e1abc89 100644 - } - break; - } + for (size_t j = 0; j < size; ++j) { + snprintf(dir, 100, "@driverLink@/lib"); + + if (!strncmp(libs[j], "libvdpau_nvidia.so", 100)) + strcat(dir, "/vdpau"); + snprintf(lib, 100, "%s/%s.%s", dir, libs[j], version); + if (path_resolve_full(ctx->err, path, "/", lib) < 0) + return (-1); + if (!file_exists(ctx->err, path)) + continue; + + paths[j] = xstrdup(ctx->err, path); + if (paths[j] == NULL) + return (-1); Loading @@ -59,7 +74,7 @@ index 38bab05..e1abc89 100644 return (0); } diff --git a/src/ldcache.h b/src/ldcache.h index 33d78dd..2b087db 100644 index 33d78dd7..2b087dbc 100644 --- a/src/ldcache.h +++ b/src/ldcache.h @@ -50,6 +50,6 @@ void ldcache_init(struct ldcache *, struct error *, const char *); Loading @@ -71,10 +86,10 @@ index 33d78dd..2b087db 100644 #endif /* HEADER_LDCACHE_H */ diff --git a/src/nvc_info.c b/src/nvc_info.c index 30e3cfd..6d12a50 100644 index b7b8adfa..d42f2beb 100644 --- a/src/nvc_info.c +++ b/src/nvc_info.c @@ -167,15 +167,13 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char * @@ -217,15 +217,13 @@ find_library_paths(struct error *err, struct dxcore_context *dxcore, struct nvc_ if (path_resolve_full(err, path, root, ldcache) < 0) return (-1); ldcache_init(&ld, err, path); Loading @@ -91,7 +106,7 @@ index 30e3cfd..6d12a50 100644 goto fail; info->nlibs32 = size; @@ -183,13 +181,11 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char * @@ -233,13 +231,11 @@ find_library_paths(struct error *err, struct dxcore_context *dxcore, struct nvc_ if (info->libs32 == NULL) goto fail; if (ldcache_resolve(&ld, LIB32_ARCH, root, libs, Loading @@ -106,7 +121,7 @@ index 30e3cfd..6d12a50 100644 return (rv); } @@ -203,7 +199,7 @@ find_binary_paths(struct error *err, struct nvc_driver_info *info, const char *r @@ -253,7 +249,7 @@ find_binary_paths(struct error *err, struct dxcore_context* dxcore, struct nvc_d char path[PATH_MAX]; int rv = -1; Loading @@ -116,15 +131,17 @@ index 30e3cfd..6d12a50 100644 return (-1); } diff --git a/src/nvc_ldcache.c b/src/nvc_ldcache.c index 6ff380f..cbe6a69 100644 index db3b2f69..ae5def43 100644 --- a/src/nvc_ldcache.c +++ b/src/nvc_ldcache.c @@ -340,7 +340,7 @@ nvc_ldcache_update(struct nvc_context *ctx, const struct nvc_container *cnt) @@ -367,7 +367,7 @@ nvc_ldcache_update(struct nvc_context *ctx, const struct nvc_container *cnt) if (validate_args(ctx, cnt != NULL) < 0) return (-1); - argv = (char * []){cnt->cfg.ldconfig, cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; - argv = (char * []){cnt->cfg.ldconfig, "-f", "/etc/ld.so.conf", "-C", "/etc/ld.so.cache", cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; + argv = (char * []){cnt->cfg.ldconfig, "-f", "/tmp/ld.so.conf.nvidia-host", "-C", "/tmp/ld.so.cache.nvidia-host", cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; if (*argv[0] == '@') { /* * We treat this path specially to be relative to the host filesystem. -- 2.46.0 pkgs/applications/virtualization/libnvidia-container/inline-c-struct.patch→pkgs/by-name/li/libnvidia-container/inline-c-struct.patch +0 −0 File moved. View file pkgs/applications/virtualization/libnvidia-container/modprobe.patch→pkgs/by-name/li/libnvidia-container/modprobe.patch +9 −8 Original line number Diff line number Diff line diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2020-07-09 17:06:05.000000000 +0000 +++ nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2020-08-18 12:43:03.223871514 +0000 @@ -840,10 +840,10 @@ --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2021-11-13 14:36:58.096684602 +0000 +++ nvidia-modprobe-@modprobeVersion@-patched/modprobe-utils/nvidia-modprobe-utils.c 2021-11-13 14:43:40.965146390 +0000 @@ -959,10 +959,10 @@ return mknod_helper(major, minor_num, vgpu_dev_name, NV_PROC_REGISTRY_PATH); } Loading @@ -17,13 +17,14 @@ diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils char field[32]; FILE *fp; diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2020-07-09 17:06:05.000000000 +0000 +++ nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2020-08-18 12:43:44.227745050 +0000 @@ -81,6 +81,7 @@ --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2021-11-13 14:36:58.096684602 +0000 +++ nvidia-modprobe-@modprobeVersion@-patched/modprobe-utils/nvidia-modprobe-utils.h 2021-11-13 14:38:34.078700961 +0000 @@ -87,6 +87,7 @@ int nvidia_nvswitch_get_file_state(int minor); int nvidia_cap_mknod(const char* cap_file_path, int *minor); int nvidia_cap_get_file_state(const char* cap_file_path); +int nvidia_cap_get_device_file_attrs(const char* cap_file_path, int *major, int *minor, char *name); int nvidia_cap_imex_channel_mknod(int minor); int nvidia_cap_imex_channel_file_state(int minor); int nvidia_get_chardev_major(const char *name); #endif /* NV_LINUX */ int nvidia_msr_modprobe(void); pkgs/applications/virtualization/libnvidia-container/default.nix→pkgs/by-name/li/libnvidia-container/package.nix +57 −28 Original line number Diff line number Diff line { stdenv , lib , addDriverRunpath , fetchFromGitHub , pkg-config , elfutils , libcap , libseccomp , rpcsvc-proto , libtirpc , makeWrapper , substituteAll , removeReferencesTo , go { stdenv, lib, addDriverRunpath, fetchFromGitHub, pkg-config, elfutils, libcap, libseccomp, rpcsvc-proto, libtirpc, makeWrapper, substituteAll, removeReferencesTo, replaceVars, go, }: let modprobeVersion = "495.44"; modprobeVersion = "550.54.14"; nvidia-modprobe = fetchFromGitHub { owner = "NVIDIA"; repo = "nvidia-modprobe"; rev = modprobeVersion; sha256 = "sha256-Y3ZOfge/EcmhqI19yWO7UfPqkvY1CHHvFC5l9vYyGuU="; sha256 = "sha256-iBRMkvOXacs/llTtvc/ZC5i/q9gc8lMuUHxMbu8A+Kg="; }; modprobePatch = substituteAll { src = ./modprobe.patch; Loading @@ -28,21 +30,25 @@ let in stdenv.mkDerivation rec { pname = "libnvidia-container"; version = "1.9.0"; version = "1.16.2"; src = fetchFromGitHub { owner = "NVIDIA"; repo = pname; repo = "libnvidia-container"; rev = "v${version}"; sha256 = "sha256-7OTawWwjeKU8wIa8I/+aSvAJli4kEua94nJSNyCajpE="; sha256 = "sha256-hX+2B+0kHiAC2lyo6kwe7DctPLJWgRdbhlc316OO3r8="; }; patches = [ # locations of nvidia-driver libraries are not resolved via ldconfig which # doesn't get used on NixOS. Additional support binaries like nvidia-smi # Locations of nvidia driver libraries are not resolved via ldconfig which # doesn't get used on NixOS. # TODO: The latter doesn't really apply anymore. # 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 (replaceVars ./fix-library-resolving.patch { inherit (addDriverRunpath) driverLink; }) # fix bogus struct declaration ./inline-c-struct.patch Loading @@ -54,6 +60,11 @@ stdenv.mkDerivation rec { -e 's/^COMPILER :=.*/COMPILER = $(CC)/' \ mk/common.mk sed -i \ -e 's/^GIT_TAG ?=.*/GIT_TAG = ${version}/' \ -e 's/^GIT_COMMIT ?=.*/GIT_COMMIT = ${src.rev}/' \ versions.mk mkdir -p deps/src/nvidia-modprobe-${modprobeVersion} cp -r ${nvidia-modprobe}/* deps/src/nvidia-modprobe-${modprobeVersion} chmod -R u+w deps/src Loading Loading @@ -84,12 +95,26 @@ stdenv.mkDerivation rec { HOME="$(mktemp -d)" ''; env.NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ]; NIX_LDFLAGS = [ "-L${libtirpc.dev}/lib" "-ltirpc" ]; env.NIX_CFLAGS_COMPILE = toString [ "-I${lib.getInclude libtirpc}/include/tirpc" ]; NIX_LDFLAGS = [ "-L${lib.getLib libtirpc}/lib" "-ltirpc" ]; nativeBuildInputs = [ pkg-config go rpcsvc-proto makeWrapper removeReferencesTo ]; nativeBuildInputs = [ pkg-config go rpcsvc-proto makeWrapper removeReferencesTo ]; buildInputs = [ elfutils libcap libseccomp libtirpc ]; buildInputs = [ elfutils libcap libseccomp libtirpc ]; makeFlags = [ "WITH_LIBELF=yes" Loading @@ -103,10 +128,14 @@ stdenv.mkDerivation rec { postInstall = let inherit (addDriverRunpath) driverLink; libraryPath = lib.makeLibraryPath [ "$out" driverLink "${driverLink}-32" ]; libraryPath = lib.makeLibraryPath [ "$out" driverLink "${driverLink}-32" ]; in '' remove-references-to -t "${go}" $out/lib/libnvidia-container-go.so.1.9.0 remove-references-to -t "${go}" $out/lib/libnvidia-container-go.so.${version} wrapProgram $out/bin/nvidia-container-cli --prefix LD_LIBRARY_PATH : ${libraryPath} ''; disallowedReferences = [ go ]; Loading pkgs/top-level/all-packages.nix +0 −2 Original line number Diff line number Diff line Loading @@ -5357,8 +5357,6 @@ with pkgs; libnvme = callPackage ../os-specific/linux/libnvme { }; libnvidia-container = callPackage ../applications/virtualization/libnvidia-container { }; librenms = callPackage ../servers/monitoring/librenms { }; libxnd = callPackage ../development/libraries/libxnd { }; Loading
pkgs/applications/virtualization/libnvidia-container/libnvc-ldconfig-and-path-fixes.patch→pkgs/by-name/li/libnvidia-container/fix-library-resolving.patch +47 −30 Original line number Diff line number Diff line From 8799541f99785d2bd881561386676fb0985e939e Mon Sep 17 00:00:00 2001 From: Moritz Sanft <58110325+msanft@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:32:42 +0200 Subject: [PATCH] fix library resolving Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> --- src/ldcache.c | 46 +++++++++++++++++----------------------------- src/ldcache.h | 2 +- src/nvc_info.c | 10 +++------- src/nvc_ldcache.c | 2 +- 4 files changed, 22 insertions(+), 38 deletions(-) diff --git a/src/ldcache.c b/src/ldcache.c index 38bab05..e1abc89 100644 index 38bab055..8cd30a0f 100644 --- a/src/ldcache.c +++ b/src/ldcache.c @@ -108,40 +108,27 @@ ldcache_close(struct ldcache *ctx) @@ -108,40 +108,28 @@ ldcache_close(struct ldcache *ctx) int ldcache_resolve(struct ldcache *ctx, uint32_t arch, const char *root, const char * const libs[], Loading @@ -24,16 +37,7 @@ index 38bab05..e1abc89 100644 - char *value = (char *)ctx->ptr + h->libs[i].value; - - if (!(flags & LD_ELF) || (flags & LD_ARCH_MASK) != arch) + for (size_t j = 0; j < size; ++j) { + snprintf(dir, 100, "/run/opengl-driver%s/lib", + arch == LD_I386_LIB32 ? "-32" : ""); + if (!strncmp(libs[j], "libvdpau_nvidia.so", 100)) + strcat(dir, "/vdpau"); + snprintf(lib, 100, "%s/%s.%s", dir, libs[j], version); + if (path_resolve_full(ctx->err, path, "/", lib) < 0) + return (-1); + if (!file_exists(ctx->err, path)) continue; - continue; - - for (size_t j = 0; j < size; ++j) { - if (!str_has_prefix(key, libs[j])) Loading @@ -52,6 +56,17 @@ index 38bab05..e1abc89 100644 - } - break; - } + for (size_t j = 0; j < size; ++j) { + snprintf(dir, 100, "@driverLink@/lib"); + + if (!strncmp(libs[j], "libvdpau_nvidia.so", 100)) + strcat(dir, "/vdpau"); + snprintf(lib, 100, "%s/%s.%s", dir, libs[j], version); + if (path_resolve_full(ctx->err, path, "/", lib) < 0) + return (-1); + if (!file_exists(ctx->err, path)) + continue; + + paths[j] = xstrdup(ctx->err, path); + if (paths[j] == NULL) + return (-1); Loading @@ -59,7 +74,7 @@ index 38bab05..e1abc89 100644 return (0); } diff --git a/src/ldcache.h b/src/ldcache.h index 33d78dd..2b087db 100644 index 33d78dd7..2b087dbc 100644 --- a/src/ldcache.h +++ b/src/ldcache.h @@ -50,6 +50,6 @@ void ldcache_init(struct ldcache *, struct error *, const char *); Loading @@ -71,10 +86,10 @@ index 33d78dd..2b087db 100644 #endif /* HEADER_LDCACHE_H */ diff --git a/src/nvc_info.c b/src/nvc_info.c index 30e3cfd..6d12a50 100644 index b7b8adfa..d42f2beb 100644 --- a/src/nvc_info.c +++ b/src/nvc_info.c @@ -167,15 +167,13 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char * @@ -217,15 +217,13 @@ find_library_paths(struct error *err, struct dxcore_context *dxcore, struct nvc_ if (path_resolve_full(err, path, root, ldcache) < 0) return (-1); ldcache_init(&ld, err, path); Loading @@ -91,7 +106,7 @@ index 30e3cfd..6d12a50 100644 goto fail; info->nlibs32 = size; @@ -183,13 +181,11 @@ find_library_paths(struct error *err, struct nvc_driver_info *info, const char * @@ -233,13 +231,11 @@ find_library_paths(struct error *err, struct dxcore_context *dxcore, struct nvc_ if (info->libs32 == NULL) goto fail; if (ldcache_resolve(&ld, LIB32_ARCH, root, libs, Loading @@ -106,7 +121,7 @@ index 30e3cfd..6d12a50 100644 return (rv); } @@ -203,7 +199,7 @@ find_binary_paths(struct error *err, struct nvc_driver_info *info, const char *r @@ -253,7 +249,7 @@ find_binary_paths(struct error *err, struct dxcore_context* dxcore, struct nvc_d char path[PATH_MAX]; int rv = -1; Loading @@ -116,15 +131,17 @@ index 30e3cfd..6d12a50 100644 return (-1); } diff --git a/src/nvc_ldcache.c b/src/nvc_ldcache.c index 6ff380f..cbe6a69 100644 index db3b2f69..ae5def43 100644 --- a/src/nvc_ldcache.c +++ b/src/nvc_ldcache.c @@ -340,7 +340,7 @@ nvc_ldcache_update(struct nvc_context *ctx, const struct nvc_container *cnt) @@ -367,7 +367,7 @@ nvc_ldcache_update(struct nvc_context *ctx, const struct nvc_container *cnt) if (validate_args(ctx, cnt != NULL) < 0) return (-1); - argv = (char * []){cnt->cfg.ldconfig, cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; - argv = (char * []){cnt->cfg.ldconfig, "-f", "/etc/ld.so.conf", "-C", "/etc/ld.so.cache", cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; + argv = (char * []){cnt->cfg.ldconfig, "-f", "/tmp/ld.so.conf.nvidia-host", "-C", "/tmp/ld.so.cache.nvidia-host", cnt->cfg.libs_dir, cnt->cfg.libs32_dir, NULL}; if (*argv[0] == '@') { /* * We treat this path specially to be relative to the host filesystem. -- 2.46.0
pkgs/applications/virtualization/libnvidia-container/inline-c-struct.patch→pkgs/by-name/li/libnvidia-container/inline-c-struct.patch +0 −0 File moved. View file
pkgs/applications/virtualization/libnvidia-container/modprobe.patch→pkgs/by-name/li/libnvidia-container/modprobe.patch +9 −8 Original line number Diff line number Diff line diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2020-07-09 17:06:05.000000000 +0000 +++ nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2020-08-18 12:43:03.223871514 +0000 @@ -840,10 +840,10 @@ --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.c 2021-11-13 14:36:58.096684602 +0000 +++ nvidia-modprobe-@modprobeVersion@-patched/modprobe-utils/nvidia-modprobe-utils.c 2021-11-13 14:43:40.965146390 +0000 @@ -959,10 +959,10 @@ return mknod_helper(major, minor_num, vgpu_dev_name, NV_PROC_REGISTRY_PATH); } Loading @@ -17,13 +17,14 @@ diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils char field[32]; FILE *fp; diff -ruN nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2020-07-09 17:06:05.000000000 +0000 +++ nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2020-08-18 12:43:44.227745050 +0000 @@ -81,6 +81,7 @@ --- nvidia-modprobe-@modprobeVersion@/modprobe-utils/nvidia-modprobe-utils.h 2021-11-13 14:36:58.096684602 +0000 +++ nvidia-modprobe-@modprobeVersion@-patched/modprobe-utils/nvidia-modprobe-utils.h 2021-11-13 14:38:34.078700961 +0000 @@ -87,6 +87,7 @@ int nvidia_nvswitch_get_file_state(int minor); int nvidia_cap_mknod(const char* cap_file_path, int *minor); int nvidia_cap_get_file_state(const char* cap_file_path); +int nvidia_cap_get_device_file_attrs(const char* cap_file_path, int *major, int *minor, char *name); int nvidia_cap_imex_channel_mknod(int minor); int nvidia_cap_imex_channel_file_state(int minor); int nvidia_get_chardev_major(const char *name); #endif /* NV_LINUX */ int nvidia_msr_modprobe(void);
pkgs/applications/virtualization/libnvidia-container/default.nix→pkgs/by-name/li/libnvidia-container/package.nix +57 −28 Original line number Diff line number Diff line { stdenv , lib , addDriverRunpath , fetchFromGitHub , pkg-config , elfutils , libcap , libseccomp , rpcsvc-proto , libtirpc , makeWrapper , substituteAll , removeReferencesTo , go { stdenv, lib, addDriverRunpath, fetchFromGitHub, pkg-config, elfutils, libcap, libseccomp, rpcsvc-proto, libtirpc, makeWrapper, substituteAll, removeReferencesTo, replaceVars, go, }: let modprobeVersion = "495.44"; modprobeVersion = "550.54.14"; nvidia-modprobe = fetchFromGitHub { owner = "NVIDIA"; repo = "nvidia-modprobe"; rev = modprobeVersion; sha256 = "sha256-Y3ZOfge/EcmhqI19yWO7UfPqkvY1CHHvFC5l9vYyGuU="; sha256 = "sha256-iBRMkvOXacs/llTtvc/ZC5i/q9gc8lMuUHxMbu8A+Kg="; }; modprobePatch = substituteAll { src = ./modprobe.patch; Loading @@ -28,21 +30,25 @@ let in stdenv.mkDerivation rec { pname = "libnvidia-container"; version = "1.9.0"; version = "1.16.2"; src = fetchFromGitHub { owner = "NVIDIA"; repo = pname; repo = "libnvidia-container"; rev = "v${version}"; sha256 = "sha256-7OTawWwjeKU8wIa8I/+aSvAJli4kEua94nJSNyCajpE="; sha256 = "sha256-hX+2B+0kHiAC2lyo6kwe7DctPLJWgRdbhlc316OO3r8="; }; patches = [ # locations of nvidia-driver libraries are not resolved via ldconfig which # doesn't get used on NixOS. Additional support binaries like nvidia-smi # Locations of nvidia driver libraries are not resolved via ldconfig which # doesn't get used on NixOS. # TODO: The latter doesn't really apply anymore. # 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 (replaceVars ./fix-library-resolving.patch { inherit (addDriverRunpath) driverLink; }) # fix bogus struct declaration ./inline-c-struct.patch Loading @@ -54,6 +60,11 @@ stdenv.mkDerivation rec { -e 's/^COMPILER :=.*/COMPILER = $(CC)/' \ mk/common.mk sed -i \ -e 's/^GIT_TAG ?=.*/GIT_TAG = ${version}/' \ -e 's/^GIT_COMMIT ?=.*/GIT_COMMIT = ${src.rev}/' \ versions.mk mkdir -p deps/src/nvidia-modprobe-${modprobeVersion} cp -r ${nvidia-modprobe}/* deps/src/nvidia-modprobe-${modprobeVersion} chmod -R u+w deps/src Loading Loading @@ -84,12 +95,26 @@ stdenv.mkDerivation rec { HOME="$(mktemp -d)" ''; env.NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ]; NIX_LDFLAGS = [ "-L${libtirpc.dev}/lib" "-ltirpc" ]; env.NIX_CFLAGS_COMPILE = toString [ "-I${lib.getInclude libtirpc}/include/tirpc" ]; NIX_LDFLAGS = [ "-L${lib.getLib libtirpc}/lib" "-ltirpc" ]; nativeBuildInputs = [ pkg-config go rpcsvc-proto makeWrapper removeReferencesTo ]; nativeBuildInputs = [ pkg-config go rpcsvc-proto makeWrapper removeReferencesTo ]; buildInputs = [ elfutils libcap libseccomp libtirpc ]; buildInputs = [ elfutils libcap libseccomp libtirpc ]; makeFlags = [ "WITH_LIBELF=yes" Loading @@ -103,10 +128,14 @@ stdenv.mkDerivation rec { postInstall = let inherit (addDriverRunpath) driverLink; libraryPath = lib.makeLibraryPath [ "$out" driverLink "${driverLink}-32" ]; libraryPath = lib.makeLibraryPath [ "$out" driverLink "${driverLink}-32" ]; in '' remove-references-to -t "${go}" $out/lib/libnvidia-container-go.so.1.9.0 remove-references-to -t "${go}" $out/lib/libnvidia-container-go.so.${version} wrapProgram $out/bin/nvidia-container-cli --prefix LD_LIBRARY_PATH : ${libraryPath} ''; disallowedReferences = [ go ]; Loading
pkgs/top-level/all-packages.nix +0 −2 Original line number Diff line number Diff line Loading @@ -5357,8 +5357,6 @@ with pkgs; libnvme = callPackage ../os-specific/linux/libnvme { }; libnvidia-container = callPackage ../applications/virtualization/libnvidia-container { }; librenms = callPackage ../servers/monitoring/librenms { }; libxnd = callPackage ../development/libraries/libxnd { };