blob: f9420a6a437f4405e3a27e63f0a45503f02a7bf6 (
plain)
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
|
# Maintainer: Orion-zhen <https://github.com/Orion-zhen>
_gpuarch=gfx110X
pkgname="rocm-nightly-${_gpuarch,,}-bin"
pkgver=7.15.0a20260721
pkgrel=1
pkgdesc="AMD ROCm Nightly Release (${_gpuarch}) - Monolithic Install"
arch=('x86_64')
url="https://rocm.nightlies.amd.com"
license=('MIT' 'custom:LicenseRef-ROCm-EULA')
depends=('glibc' 'gcc-libs' 'python-pyelftools' 'python')
# 官方源冲突列表:涵盖了 Core, Compilers, HIP, Math Libs, ML, Tools 等
_rocm_packages=(
'amdsmi'
'rocm-core' 'rocm-cmake' 'rocm-llvm' 'rocm-device-libs'
'hsa-rocr' 'hsa-amd-aqlprofile' 'hsakmt-roct' 'comgr' 'rocminfo' 'rocwmma'
'hip-runtime-amd' 'hip-runtime-nvidia'
'rocm-smi-lib' 'rocm-gdb' 'rocm-dbgapi'
'rocprofiler' 'rocprofiler-register' 'roctracer' 'rocm-bandwidth-test' 'composable-kernel'
'opencl-rocm'
'hipblas' 'hipblas-common' 'hipblaslt' 'rocblas'
'hipfft' 'rocfft'
'hiprand' 'rocrand'
'hipsolver' 'rocsolver'
'hipsparse' 'hipsparselt' 'rocsparse'
'rccl' 'rocalution' 'rocprim' 'rocthrust' 'hipcub'
'miopen-hip' 'migraphx' 'mivisionx' 'rpp'
'hipfort' 'hipify-clang'
'rocm-hip-sdk' 'rocm-hip-libraries' 'rocm-hip-runtime' 'rocm-opencl-sdk' 'rocm-opencl-runtime' 'rocm-ml-sdk' # Meta packages
)
provides=("${_rocm_packages[@]}" "rocm=${pkgver}" "opencl-driver")
conflicts=("${_rocm_packages[@]}" "rocm")
options=('!strip' '!debug')
source=("${url}/tarball-multi-arch/therock-dist-linux-${_gpuarch}-all-${pkgver}.tar.gz")
sha256sums=('e63d6aa5413cda88770d601d85c993e0b85c94c5355d43404c3865ae333bcb7d')
package() {
local _tarball_name=$(basename "${source[0]}")
# 1. 创建安装目录 /opt/rocm
mkdir -p "${pkgdir}/opt/rocm"
# 2. 复制所有内容
# 源码是 tarbomb 结构(直接解压在 srcdir),因此复制当前目录下所有可见文件
# 使用 -d (preserve links) -r (recursive)
msg2 "Copying files to /opt/rocm..."
cp -dr --no-preserve=ownership * "${pkgdir}/opt/rocm/"
# 2.1 修复 amdgcn 目录结构
local _amdgcn_dir="${pkgdir}/opt/rocm/lib/llvm/amdgcn"
if [ -d "${_amdgcn_dir}" ]; then
msg2 "Symlinking amdgcn directory..."
ln -s "lib/llvm/amdgcn" "${pkgdir}/opt/rocm/amdgcn"
fi
# 删除可能误复制的 tarball 和 PKGBUILD 相关文件 (如果 source 在当前目录)
rm -f "${pkgdir}/opt/rocm/${_tarball_name}"
rm -f "${pkgdir}/opt/rocm/PKGBUILD"
# 3. 配置动态链接库路径 /etc/ld.so.conf.d/
install -Dm644 /dev/null "${pkgdir}/etc/ld.so.conf.d/rocm-nightly-${_gpuarch}.conf"
echo "/opt/rocm/lib" > "${pkgdir}/etc/ld.so.conf.d/rocm-nightly-${_gpuarch}.conf"
echo "/opt/rocm/lib64" >> "${pkgdir}/etc/ld.so.conf.d/rocm-nightly-${_gpuarch}.conf"
# 4. 配置环境变量 /etc/profile.d/
install -Dm755 /dev/null "${pkgdir}/etc/profile.d/rocm-nightly-${_gpuarch}.sh"
cat <<EOF > "${pkgdir}/etc/profile.d/rocm-nightly-${_gpuarch}.sh"
export ROCM_PATH=/opt/rocm
export ROCM_HOME=/opt/rocm
export HIP_PATH=/opt/rocm
export HIP_PLATFORM=amd
export PATH=\$ROCM_PATH/bin:\$PATH
export LD_LIBRARY_PATH=\$ROCM_PATH/lib:\$LD_LIBRARY_PATH
EOF
# 5. 配置 OpenCL ICD
install -Dm644 /dev/null "${pkgdir}/etc/OpenCL/vendors/amdocl64.icd"
echo "/opt/rocm/lib/opencl/libamdocl64.so" > "${pkgdir}/etc/OpenCL/vendors/amdocl64.icd"
# 6. 处理许可证
install -d "${pkgdir}/usr/share/licenses/${pkgname}"
if [ -f "${pkgdir}/opt/rocm/LICENSE" ]; then
ln -s "/opt/rocm/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
elif [ -f "${pkgdir}/opt/rocm/LICENSE.txt" ]; then
ln -s "/opt/rocm/LICENSE.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
fi
}
|