nomad: add optional nvml support

This commit is contained in:
Phillip Cloud 2021-01-03 14:26:14 -05:00
parent bc1b117218
commit 2aabde2c52
5 changed files with 56 additions and 20 deletions

View file

@ -1,7 +1,11 @@
{ callPackage, buildGoPackage }:
{ callPackage
, buildGoPackage
, nvidia_x11
, nvidiaGpuSupport
}:
callPackage ./generic.nix {
inherit buildGoPackage;
inherit buildGoPackage nvidia_x11 nvidiaGpuSupport;
version = "0.11.8";
sha256 = "1dhh07bifr02jh2lls8fv1d9ra67ymgh8qxqvpvm0cd0qdd469z1";
}

View file

@ -1,7 +1,11 @@
{ callPackage, buildGoPackage }:
{ callPackage
, buildGoPackage
, nvidia_x11
, nvidiaGpuSupport
}:
callPackage ./generic.nix {
inherit buildGoPackage;
inherit buildGoPackage nvidia_x11 nvidiaGpuSupport;
version = "0.12.9";
sha256 = "1a0ig6pb0z3qp7zk4jgz3h241bifmjlyqsfikyy3sxdnzj7yha27";
}

View file

@ -1,7 +1,11 @@
{ callPackage, buildGoPackage }:
{ callPackage
, buildGoPackage
, nvidia_x11
, nvidiaGpuSupport
}:
callPackage ./generic.nix {
inherit buildGoPackage;
inherit buildGoPackage nvidia_x11 nvidiaGpuSupport;
version = "1.0.1";
sha256 = "07k81csyxhgc7bgn297zlqyvc55qb5fmiavi7dk81rdpg5m2zjvv";
}

View file

@ -1,4 +1,12 @@
{ stdenv, buildGoPackage, fetchFromGitHub, version, sha256 }:
{ lib
, buildGoPackage
, fetchFromGitHub
, version
, sha256
, nvidiaGpuSupport
, patchelf
, nvidia_x11
}:
buildGoPackage rec {
pname = "nomad";
@ -14,23 +22,33 @@ buildGoPackage rec {
inherit rev sha256;
};
nativeBuildInputs = lib.optionals nvidiaGpuSupport [
patchelf
];
# ui:
# Nomad release commits include the compiled version of the UI, but the file
# is only included if we build with the ui tag.
# nonvidia:
# We disable Nvidia GPU scheduling on Linux, as it doesn't work there:
# Ref: https://github.com/hashicorp/nomad/issues/5535
preBuild = let
tags = ["ui"]
++ stdenv.lib.optional stdenv.isLinux "nonvidia";
tagsString = stdenv.lib.concatStringsSep " " tags;
in ''
preBuild =
let
tags = [ "ui" ] ++ lib.optional (!nvidiaGpuSupport) "nonvidia";
tagsString = lib.concatStringsSep " " tags;
in
''
export buildFlagsArray=(
-tags="${tagsString}"
)
'';
meta = with stdenv.lib; {
# The dependency on NVML isn't explicit. We have to make it so otherwise the
# binary will not know where to look for the relevant symbols.
postFixup = lib.optionalString nvidiaGpuSupport ''
for bin in $out/bin/*; do
patchelf --add-needed "${nvidia_x11}/lib/libnvidia-ml.so" "$bin"
done
'';
meta = with lib; {
homepage = "https://www.nomadproject.io/";
description = "A Distributed, Highly Available, Datacenter-Aware Scheduler";
platforms = platforms.unix;

View file

@ -6129,12 +6129,18 @@ in
# with different versions we pin Go for all versions.
nomad_0_11 = callPackage ../applications/networking/cluster/nomad/0.11.nix {
buildGoPackage = buildGo114Package;
inherit (linuxPackages) nvidia_x11;
nvidiaGpuSupport = config.cudaSupport or (!stdenv.isLinux);
};
nomad_0_12 = callPackage ../applications/networking/cluster/nomad/0.12.nix {
buildGoPackage = buildGo114Package;
inherit (linuxPackages) nvidia_x11;
nvidiaGpuSupport = config.cudaSupport or (!stdenv.isLinux);
};
nomad_1_0 = callPackage ../applications/networking/cluster/nomad/1.0.nix {
buildGoPackage = buildGo115Package;
inherit (linuxPackages) nvidia_x11;
nvidiaGpuSupport = config.cudaSupport or (!stdenv.isLinux);
};
notable = callPackage ../applications/misc/notable { };