From 2301651b8c56e00e4683001226214d27a7f42678 Mon Sep 17 00:00:00 2001 From: Emily Date: Tue, 19 Nov 2024 18:31:39 +0000 Subject: [PATCH] dcgm: patch for modern GCC Just a few missing includes, really nothing too bad at all. --- pkgs/by-name/dc/dcgm/fix-includes.patch | 110 ++++++++++++++++++++++++ pkgs/by-name/dc/dcgm/package.nix | 13 +-- 2 files changed, 117 insertions(+), 6 deletions(-) create mode 100644 pkgs/by-name/dc/dcgm/fix-includes.patch diff --git a/pkgs/by-name/dc/dcgm/fix-includes.patch b/pkgs/by-name/dc/dcgm/fix-includes.patch new file mode 100644 index 000000000000..2f15ddca1f7e --- /dev/null +++ b/pkgs/by-name/dc/dcgm/fix-includes.patch @@ -0,0 +1,110 @@ +diff --git a/common/CudaWorker/DcgmDgemm.cpp b/common/CudaWorker/DcgmDgemm.cpp +index 8d33a3256e..6b3284258d 100644 +--- a/common/CudaWorker/DcgmDgemm.cpp ++++ b/common/CudaWorker/DcgmDgemm.cpp +@@ -17,6 +17,7 @@ + + #include + #include ++#include + + #define CU_CHK(op) \ + if (auto const status = op; status != CUBLAS_STATUS_SUCCESS) \ +@@ -122,4 +123,4 @@ + return CUBLAS_STATUS_SUCCESS; + } + +-} // namespace DcgmNs +\ No newline at end of file ++} // namespace DcgmNs +diff --git a/common/DcgmError.h b/common/DcgmError.h +index 8638cdceb1..e8d817c0d4 100644 +--- a/common/DcgmError.h ++++ b/common/DcgmError.h +@@ -17,6 +17,7 @@ + + #include + #include ++#include + + #include + #include +diff --git a/common/DcgmStringHelpers.cpp b/common/DcgmStringHelpers.cpp +index b41917e3b7..1fe63980c7 100644 +--- a/common/DcgmStringHelpers.cpp ++++ b/common/DcgmStringHelpers.cpp +@@ -17,6 +17,7 @@ + + #include + #include ++#include + + /*****************************************************************************/ + void dcgmTokenizeString(const std::string &src, const std::string &delimiter, std::vector &tokens) +diff --git a/dcgmi/CommandOutputController.cpp b/dcgmi/CommandOutputController.cpp +index 5057205564..8520171efa 100644 +--- a/dcgmi/CommandOutputController.cpp ++++ b/dcgmi/CommandOutputController.cpp +@@ -24,6 +24,7 @@ + #include "dcgm_agent.h" + #include + #include ++#include + #include + #include + #include +diff --git a/dcgmi/Diag.h b/dcgmi/Diag.h +index a326f7b949..563fb3c9c0 100755 +--- a/dcgmi/Diag.h ++++ b/dcgmi/Diag.h +@@ -24,6 +24,7 @@ + #define DIAG_H_ + + #include ++#include + + #include "Command.h" + #include "CommandOutputController.h" +diff --git a/hostengine/src/HostEngineOutput.cpp b/hostengine/src/HostEngineOutput.cpp +index 23c6ca9f54..798b83b3e4 100644 +--- a/hostengine/src/HostEngineOutput.cpp ++++ b/hostengine/src/HostEngineOutput.cpp +@@ -20,6 +20,7 @@ + #include + #include + #include ++#include + + namespace + { +@@ -365,4 +366,4 @@ + } + } + os << std::endl; +-} +\ No newline at end of file ++} +diff --git a/nvvs/src/NvvsCommon.cpp b/nvvs/src/NvvsCommon.cpp +index 8f7888649b..1604d9dabe 100644 +--- a/nvvs/src/NvvsCommon.cpp ++++ b/nvvs/src/NvvsCommon.cpp +@@ -15,6 +15,7 @@ + */ + #include + #include ++#include + #include + #include + +diff --git a/sdk/nvidia/nvml/nvml_loader/nvml_loader.cpp b/sdk/nvidia/nvml/nvml_loader/nvml_loader.cpp +index 9eebeaf1c4..6e21201229 100644 +--- a/sdk/nvidia/nvml/nvml_loader/nvml_loader.cpp ++++ b/sdk/nvidia/nvml/nvml_loader/nvml_loader.cpp +@@ -20,6 +20,7 @@ + + #include + #include ++#include + + static void *g_nvmlLib = 0; + static std::atomic_uint32_t g_nvmlStaticLibResetHooksCount = 1; diff --git a/pkgs/by-name/dc/dcgm/package.nix b/pkgs/by-name/dc/dcgm/package.nix index 58ac8f2f4599..ef7b1a70a324 100644 --- a/pkgs/by-name/dc/dcgm/package.nix +++ b/pkgs/by-name/dc/dcgm/package.nix @@ -1,5 +1,5 @@ { lib -, gcc11Stdenv +, stdenv , fetchFromGitHub , autoAddDriverRunpath , catch2 @@ -58,10 +58,7 @@ let "${lib.getLib cudaPackages.libcublas}/lib/libcublasLt.so" ])) ]; - -# gcc11 is required by DCGM's very particular build system -# C.f. https://github.com/NVIDIA/DCGM/blob/7e1012302679e4bb7496483b32dcffb56e528c92/dcgmbuild/build.sh#L22 -in gcc11Stdenv.mkDerivation rec { +in stdenv.mkDerivation rec { pname = "dcgm"; version = "3.3.9"; # N.B: If you change this, be sure prometheus-dcgm-exporter supports this version. @@ -73,6 +70,7 @@ in gcc11Stdenv.mkDerivation rec { }; patches = [ + ./fix-includes.patch ./dynamic-libs.patch ]; @@ -100,7 +98,7 @@ in gcc11Stdenv.mkDerivation rec { tclap_1_4 fmt_9 - (yaml-cpp.override { stdenv = gcc11Stdenv; }) + yaml-cpp jsoncpp libevent ]; @@ -108,6 +106,9 @@ in gcc11Stdenv.mkDerivation rec { # Add our paths to the CMake flags so FindCuda.cmake can find them. cmakeFlags = lib.concatMap mkCudaFlags cudaPackageSets; + # Lots of dodgy C++. + env.NIX_CFLAGS_COMPILE = "-Wno-error"; + disallowedReferences = lib.concatMap getCudaPackages cudaPackageSets; meta = with lib; {