tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
rocmPackages.rocm-core: fix find_package(rocm-core)
Luna Nova
5 months ago
6c1a925c
ef205d1b
+68
-5
2 changed files
expand all
collapse all
unified
split
pkgs
development
rocm-modules
6
rocm-core
default.nix
env-rocm-path.patch
+46
-5
pkgs/development/rocm-modules/6/rocm-core/default.nix
···
7
7
writeText,
8
8
}:
9
9
10
10
+
# rocm-core is used by most distros for a few purposes:
11
11
+
# - meta package that all rocm packages depend so `apt-get remove rocm-core` removes all rocm packages
12
12
+
# - provide overall ROCM_PATH
13
13
+
# - provide rocm version info and path to rocm version headers
14
14
+
# only the last usage makes sense in nixpkgs
15
15
+
let
16
16
+
padIfSingle = s: if lib.stringLength s == 1 then "0${s}" else s;
17
17
+
in
10
18
stdenv.mkDerivation (finalAttrs: {
11
19
pname = "rocm-core";
12
20
version = "6.3.3";
···
18
26
hash = "sha256-UDnPGvgwzwv49CzF+Kt0v95CsxS33BZeqNcKw1K6jRI=";
19
27
};
20
28
29
29
+
patches = [
30
30
+
./env-rocm-path.patch
31
31
+
];
32
32
+
21
33
nativeBuildInputs = [ cmake ];
22
22
-
# FIXME: What's the correct way to set this?
23
23
-
env.ROCM_LIBPATCH_VERSION = "${lib.versions.major finalAttrs.version}0${lib.versions.minor finalAttrs.version}0${lib.versions.patch finalAttrs.version}";
24
24
-
env.BUILD_ID = "nixos-${finalAttrs.env.ROCM_LIBPATCH_VERSION}";
25
25
-
env.ROCM_BUILD_ID = "release-${finalAttrs.env.BUILD_ID}";
34
34
+
env = {
35
35
+
ROCM_LIBPATCH_VERSION = "${lib.versions.major finalAttrs.version}${padIfSingle (lib.versions.minor finalAttrs.version)}${padIfSingle (lib.versions.patch finalAttrs.version)}";
36
36
+
BUILD_ID = "nixpkgs-${finalAttrs.env.ROCM_LIBPATCH_VERSION}";
37
37
+
ROCM_BUILD_ID = "${finalAttrs.env.BUILD_ID}";
38
38
+
};
26
39
cmakeFlags = [
27
40
"-DROCM_LIBPATCH_VERSION=${finalAttrs.env.ROCM_LIBPATCH_VERSION}"
28
41
"-DROCM_VERSION=${finalAttrs.version}"
29
42
"-DBUILD_ID=${finalAttrs.env.BUILD_ID}"
43
43
+
"-DCMAKE_INSTALL_LIBDIR=lib"
44
44
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
45
45
+
"-DCMAKE_INSTALL_BINDIR=bin"
30
46
];
31
47
32
48
setupHook = writeText "setupHook.sh" ''
49
49
+
export ROCM_VERSION="${finalAttrs.version}"
33
50
export ROCM_LIBPATCH_VERSION="${finalAttrs.env.ROCM_LIBPATCH_VERSION}"
34
34
-
export BUILD_ID="${finalAttrs.env.BUILD_ID}"
35
51
export ROCM_BUILD_ID="${finalAttrs.env.ROCM_BUILD_ID}"
36
52
'';
53
53
+
54
54
+
doInstallCheck = true;
55
55
+
preInstallCheck =
56
56
+
# Test that the CMake config file can be included and sets expected vars
57
57
+
''
58
58
+
mkdir test_project
59
59
+
cd test_project
60
60
+
61
61
+
echo '
62
62
+
cmake_minimum_required(VERSION 3.16)
63
63
+
project(test_rocm_core)
64
64
+
find_package(rocm-core REQUIRED)
65
65
+
if(NOT DEFINED ROCM_CORE_INCLUDE_DIR)
66
66
+
message(FATAL_ERROR "ROCM_CORE_INCLUDE_DIR not set")
67
67
+
endif()
68
68
+
message(STATUS "Found ROCM_CORE_INCLUDE_DIR: ''${ROCM_CORE_INCLUDE_DIR}")
69
69
+
message(STATUS "Found ROCM_PATH: ''${ROCM_PATH}")
70
70
+
' > CMakeLists.txt
71
71
+
72
72
+
CMAKE_PREFIX_PATH="$out" cmake .
73
73
+
cd ..
74
74
+
75
75
+
. $out/nix-support/setup-hook
76
76
+
env | grep '^ROCM'
77
77
+
'';
37
78
38
79
passthru.ROCM_LIBPATCH_VERSION = finalAttrs.env.ROCM_LIBPATCH_VERSION;
39
80
passthru.updateScript = rocmUpdateScript {
+22
pkgs/development/rocm-modules/6/rocm-core/env-rocm-path.patch
···
1
1
+
In FHS distros rocm-core expects to be installed colocated with a full set of ROCM packages.
2
2
+
In nixpkgs contexts, we don't want rocm-core to be a ROCM_PATH root.
3
3
+
diff --git a/cmake_modules/rocm-core-config.cmake.in b/cmake_modules/rocm-core-config.cmake.in
4
4
+
index f5fe07c..9d72c9c 100644
5
5
+
--- a/cmake_modules/rocm-core-config.cmake.in
6
6
+
+++ b/cmake_modules/rocm-core-config.cmake.in
7
7
+
@@ -11,7 +11,14 @@ set_and_check(rocm_core_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
8
8
+
set_and_check(ROCM_CORE_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
9
9
+
set_and_check(rocm_core_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
10
10
+
set_and_check(ROCM_CORE_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
11
11
+
-set_and_check(ROCM_PATH "${PACKAGE_PREFIX_DIR}")
12
12
+
+# Set ROCM_PATH with priority: existing value > environment variable > package prefix
13
13
+
+if(NOT DEFINED ROCM_PATH)
14
14
+
+ if(DEFINED ENV{ROCM_PATH})
15
15
+
+ set(ROCM_PATH "$ENV{ROCM_PATH}")
16
16
+
+ else()
17
17
+
+ set_and_check(ROCM_PATH "${PACKAGE_PREFIX_DIR}")
18
18
+
+ endif()
19
19
+
+endif()
20
20
+
21
21
+
get_filename_component(ROCM_CORE_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
22
22
+
include("${ROCM_CORE_CMAKE_DIR}/rocmCoreTargets.cmake")