1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
{
lib,
stdenv,
fetchFromGitHub,
rocmUpdateScript,
cmake,
rocm-smi,
rocm-runtime,
libcap,
grpc,
protobuf,
openssl,
doxygen,
graphviz,
texliveSmall,
gtest,
buildDocs ? true,
buildTests ? false,
}:
let
latex = lib.optionalAttrs buildDocs (
texliveSmall.withPackages (
ps: with ps; [
changepage
latexmk
varwidth
multirow
hanging
adjustbox
collectbox
stackengine
enumitem
alphalph
wasysym
sectsty
tocloft
newunicodechar
etoc
helvetic
wasy
courier
]
)
);
in
stdenv.mkDerivation (finalAttrs: {
pname = "rdc";
version = "6.0.2";
outputs =
[
"out"
]
++ lib.optionals buildDocs [
"doc"
]
++ lib.optionals buildTests [
"test"
];
src = fetchFromGitHub {
owner = "ROCm";
repo = "rdc";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-QugcajxILmDeQiWG5uAUO41Wut45irg2Ynufgn1bmps=";
};
nativeBuildInputs =
[
cmake
protobuf
]
++ lib.optionals buildDocs [
doxygen
graphviz
latex
];
buildInputs =
[
rocm-smi
rocm-runtime
libcap
grpc
openssl
]
++ lib.optionals buildTests [
gtest
];
cmakeFlags =
[
"-DCMAKE_VERBOSE_MAKEFILE=OFF"
"-DRDC_INSTALL_PREFIX=${placeholder "out"}"
"-DBUILD_ROCRTEST=ON"
"-DRSMI_INC_DIR=${rocm-smi}/include"
"-DRSMI_LIB_DIR=${rocm-smi}/lib"
"-DGRPC_ROOT=${grpc}"
# Manually define CMAKE_INSTALL_<DIR>
# See: https://github.com/NixOS/nixpkgs/pull/197838
"-DCMAKE_INSTALL_BINDIR=bin"
"-DCMAKE_INSTALL_LIBDIR=lib"
"-DCMAKE_INSTALL_INCLUDEDIR=include"
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
"-DCMAKE_INSTALL_DOCDIR=doc"
]
++ lib.optionals buildTests [
"-DBUILD_TESTS=ON"
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX \"NAME=\")" "set(LINUX_DISTRO \"NixOS\")"
'';
postInstall =
''
find $out/bin -executable -type f -exec \
patchelf {} --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" \;
''
+ lib.optionalString buildTests ''
mkdir -p $test
mv $out/bin/rdctst_tests $test/bin
'';
passthru.updateScript = rocmUpdateScript {
name = finalAttrs.pname;
owner = finalAttrs.src.owner;
repo = finalAttrs.src.repo;
};
meta = with lib; {
description = "Simplifies administration and addresses infrastructure challenges in cluster and datacenter environments";
homepage = "https://github.com/ROCm/rdc";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
platforms = platforms.linux;
# broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version || versionAtLeast finalAttrs.version "7.0.0";
broken = true; # Too many errors, unsure how to fix
};
})
|