-
-
Save oneblackcrayon/d2221f5fb134a0347ddd937a1a815c04 to your computer and use it in GitHub Desktop.
bash implementation of opencl-amd AUR package, Install opencl amdgpu amdgpu-pro opencl only. Supports ubuntu and others with standard prefix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# DO NOT run the line 167 standalone. It will remove the necessary files besides the junk! | |
if echo $@|grep -q "\-\-help\|\-help\|\-h\|help\|\-\-h\|\-\-no\-deb\|\-\-no\-install\|\-\-no\-cleaning\|\-\-assume\-debian" | |
then : | |
else echo wrong entry\(ies\) ! | |
help=yes | |
fi | |
if echo $@|grep -q "\-\-help\|\-help\|\-h\|help\|\-\-h" || [ "$help" = yes ] | |
then echo "--no-deb : don't build the debian package on debian based systems | |
--no-install : don't install anything | |
--no-cleaning : skip cleaning on direct installs | |
--assume-debian : assumes system to be debian based | |
For example to build .deb package on non-debian systems use --no-install and --assume-debian together (still requires \"dpkg\" command)" | |
exit | |
fi | |
prefix='amdgpu-pro-' | |
postfix='-ubuntu-20.04' | |
major='21.30' | |
minor='1290604' | |
amdver='2.4.106' | |
shared="opt/amdgpu-pro/lib/x86_64-linux-gnu" | |
shared2="opt/amdgpu/lib/x86_64-linux-gnu" | |
tarname="${prefix}${major}-${minor}${postfix}" | |
cstdir=opencl-amd_aur_ubuntu_dir | |
srcdir="$(pwd)/${cstdir}" | |
pkgdir="${srcdir}/pkgdir" | |
eval $(grep ID /etc/os-release) | |
if echo $@|grep -q \\-\\-assume\\-debian | |
then ID_LIKE=debian | |
fi | |
if ls -d "${srcdir}"&> /dev/null | |
then echo Warning: existing \""${srcdir}"\" found, deleting it in five seconds! | |
sleep 5 | |
if rm -rf "${srcdir}" | |
then : | |
else echo Warning: couldn\'t removed the folder, will try with sudo again! | |
sudo rm -rf "${srcdir}" | |
fi | |
fi | |
mkdir -p "${pkgdir}" | |
cd "${srcdir}" | |
echo "Downloading archive and extracting" | |
if wget --referer https://www.amd.com/en/support/kb/release-notes/rn-amdgpu-unified-linux-21-30 -N -O - "https://drivers.amd.com/drivers/linux/$tarname.tar.xz"|tar -xJ | |
then echo "Extraction complete, creating the files" | |
else echo "Extraction or downloading failed, please ping me at the gist page. You can also try running the script with a random argument" | |
exit | |
fi | |
mkdir -p "${srcdir}/opencl" | |
cd "${srcdir}/opencl" | |
# roc* | |
ar x "${srcdir}/$tarname/opencl-rocr-amdgpu-pro_${major}-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
ar x "${srcdir}/$tarname/rocm-device-libs-amdgpu-pro_1.0.0-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
ar x "${srcdir}/$tarname/hsa-runtime-rocr-amdgpu_1.3.0-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
ar x "${srcdir}/$tarname/hsakmt-roct-amdgpu_1.0.9-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
ar x "${srcdir}/$tarname/hip-rocr-amdgpu-pro_${major}-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
# comgr | |
ar x "${srcdir}/$tarname/comgr-amdgpu-pro_2.1.0-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
# orca | |
ar x "${srcdir}/$tarname/opencl-orca-amdgpu-pro-icd_${major}-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
cd ${shared} | |
sed -i "s|libdrm_amdgpu|libdrm_amdgpo|g" libamdocl-orca64.so | |
mkdir -p "${srcdir}/libdrm" | |
cd "${srcdir}/libdrm" | |
ar x "${srcdir}/$tarname/libdrm-amdgpu-amdgpu1_${amdver}-${minor}_amd64.deb" | |
tar xJf data.tar.xz | |
cd ${shared2} | |
rm "libdrm_amdgpu.so.1" | |
mv "libdrm_amdgpu.so.1.0.0" "libdrm_amdgpo.so.1.0.0" | |
ln -s "libdrm_amdgpo.so.1.0.0" "libdrm_amdgpo.so.1" | |
mv "${srcdir}/opencl/etc" "${pkgdir}/" | |
mkdir -p ${pkgdir}/usr/lib | |
# roc* | |
mv "${srcdir}/opencl/${shared}/libamdocl64.so" "${pkgdir}/usr/lib/" | |
mv "${srcdir}/opencl/${shared}/libamd_comgr.so.2.1.0" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared}/libamdhip64.so.4.2.21303-" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared}/libamdhip64.so" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared}/libamdhip64.so.4" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared}/libhsa-runtime64.so.1.3.0" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared}/libhsa-runtime64.so.1" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared2}/libhsakmt.so.1.0.6" "${pkgdir}/usr/lib" | |
mv "${srcdir}/opencl/${shared2}/libhsakmt.so.1" "${pkgdir}/usr/lib" | |
# comgr | |
cd ${srcdir}/opencl/${shared} | |
ln -s "libamd_comgr.so.2.0.0" "libamd_comgr.so" | |
mv "${srcdir}/opencl/${shared}/libamd_comgr.so" "${pkgdir}/usr/lib/" | |
mv "${srcdir}/opencl/${shared}/libamd_comgr.so.2" "${pkgdir}/usr/lib/libamd_comgr.so" | |
# orca | |
mv "${srcdir}/opencl/${shared}/libamdocl-orca64.so" "${pkgdir}/usr/lib/" | |
mv "${srcdir}/libdrm/${shared2}/libdrm_amdgpo.so.1.0.0" "${pkgdir}/usr/lib/" | |
mv "${srcdir}/libdrm/${shared2}/libdrm_amdgpo.so.1" "${pkgdir}/usr/lib/" | |
mkdir -p "${pkgdir}/opt/amdgpu/share/libdrm" | |
cd "${pkgdir}/opt/amdgpu/share/libdrm" | |
ln -s /usr/share/libdrm/amdgpu.ids amdgpu.ids | |
mv "${srcdir}/opencl/opt/amdgpu-pro" "${pkgdir}/opt" | |
rm -r "${srcdir}/opencl" | |
rm -r "${srcdir}/libdrm" | |
cd "${pkgdir}" | |
if type md5sum&> /dev/null | |
then if echo -e 3dba553d1fcfeddaa252de13860d7531 ./opt/amdgpu-pro/share/amd_comgr/README.md\\n4000cbaa3eecf22be59c8cea7229ca6a ./opt/amdgpu-pro/share/amd_comgr/NOTICES.txt\\n7754f2a8be21dce24fec9d1e7972a68b ./opt/amdgpu-pro/share/amd_comgr/LICENSE.txt\\ne91050c15b7262e21d55077274d1a0ba ./opt/amdgpu-pro/bin/roc-obj-ls\\n467574e9dbf38f603352d6e70d7ae819 ./opt/amdgpu-pro/bin/roc-obj-extract\\n9eea3d2de3a0335f014f9a3f83e4212c ./opt/amdgpu-pro/bin/hipvars.pm\\n77a2b371ee24f2309bfa8e5dfa06a0ab ./opt/amdgpu-pro/bin/hipify-perl\\n35dec57990df0a33afc41c9f67cbcdb0 ./opt/amdgpu-pro/bin/hipify-cmakefile\\n7def981db985f53f8fc8263a3b3f32b1 ./opt/amdgpu-pro/bin/hipexamine.sh\\ne2710bcee657cf61e5d791b66c0aff6f ./opt/amdgpu-pro/bin/hipexamine-perl.sh\\n0ee195639b292e6c043bfca0ad716585 ./opt/amdgpu-pro/bin/hipdemangleatp\\n144dbd8b9a80c360076bf87ed7c8455b ./opt/amdgpu-pro/bin/hipconvertinplace.sh\\n9b023318378593cd5f7ea5d59f625883 ./opt/amdgpu-pro/bin/hipconvertinplace-perl.sh\\nfcabd42ea6fcede0ff1cd3ae545f7f00 ./opt/amdgpu-pro/bin/hipconfig\\n15d7380c3b56e5a576f425d133b5e416 ./opt/amdgpu-pro/bin/hipcc_cmake_linker_helper\\n0e13a3d69fd5c103427f125491948e43 ./opt/amdgpu-pro/bin/hipcc\\nd9e5aadea0e923f2d292f616d6529059 ./opt/amdgpu-pro/bin/hip_embed_pch.sh\\n99274d27be5d5925c5569c4691395f5e ./opt/amdgpu-pro/bin/finduncodep.sh\\n474244f0c760037fef8f9141c5f1739b ./opt/amdgpu-pro/bin/findcode.sh\\nf0dc40e0af3ec42dd5fb393200042a90 ./opt/amdgpu-pro/bin/.hipVersion\\n1c98781ee06133b16e40d505ac9b49b2 ./opt/amdgpu-pro/amdgcn/bitcode/opencl.bc\\n0d9e53c87d76e76d3a6cff2ce3a4a8bb ./opt/amdgpu-pro/amdgcn/bitcode/ocml.bc\\ndd2f6ff3cb26c1ac605d685667057cfd ./opt/amdgpu-pro/amdgcn/bitcode/oclc_wavefrontsize64_on.bc\\n0277e77cafad2699fc5a5e0bbf709be2 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_wavefrontsize64_off.bc\\n9270dab6d99bb3f92f3cabfa7733b80c ./opt/amdgpu-pro/amdgcn/bitcode/oclc_unsafe_math_on.bc\\n946949d7f013c2c1fe2934adf14cc3d5 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_unsafe_math_off.bc\\n24578350ab27c1ac528ad6636b22a437 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_90c.bc\\n44a05937fcc3792b7f6831e56ccf00ba ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_90a.bc\\nab77d8f122f8fd3a745c8b0b92388a23 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_909.bc\\ne93b243cbe488ab6504ba1a5edec2267 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_908.bc\\n48400385ca8d369d8ea9c745b5b7f694 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_906.bc\\n95613b7e4d759c9f3b725e3a5d5d9465 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_904.bc\\n53e38d463e83c4922b1a214c1274273f ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_902.bc\\n7f716b3a1784f98cf29c1cef444247f7 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_900.bc\\nad7bea62601463242dd30e30f2f0e5d5 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_810.bc\\n7bb5bb3bc16dcb0824f0feefc0f6e4f2 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_805.bc\\n72f013270fb0de6abf944fe3a35f0b67 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_803.bc\\n405c4b17e94c0b97c43a24a6f168ea6c ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_802.bc\\nccacbfe4355e685fb4386055a657269f ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_801.bc\\n31af1ab2966684167f9dd131da195017 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_705.bc\\n920a745d5a54d73df7b8190de7572a5d ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_704.bc\\n2067ab053f1b72479c436904a6fceab5 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_703.bc\\n0fa783e0e74cf3c3ef7c1c7939e2f4f9 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_702.bc\\nd6b8bab0a83e2a37f469f7e9720a6bc3 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_701.bc\\ncfc51b7c9b841b39ce7fef9698715d1b ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_700.bc\\nbc916ec6362ffe7fbb4a4453f9707bb9 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_602.bc\\nb144a23933525a3a9cb5809e0472ffd6 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_601.bc\\ne83d726ae08df78f09c2727e9d3ecf69 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_600.bc\\n5043c1c11ad9727cec4b517f04720224 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1034.bc\\nc9a849b4883bfd98970d2e43e8521191 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1033.bc\\n77a08437e4dfe3b1b58ae59a8b68868d ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1032.bc\\n7cbaeb8e514acffd8c987b8998bd68ca ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1031.bc\\n3db0e8d47a7d694a8c9437a681515a11 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1030.bc\\na3aed269cfbc415d22548d803c966663 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1012.bc\\nb88b229cdad0f7e42a2a3505dd5a2c11 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1011.bc\\n29592e6944367f4b5d7c5a774497cb37 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_isa_version_1010.bc\\n39b6324e34f42b08f1b7cac0fa3a562a ./opt/amdgpu-pro/amdgcn/bitcode/oclc_finite_only_on.bc\\ne8849c60abdfafb40b4e69c0a45881ef ./opt/amdgpu-pro/amdgcn/bitcode/oclc_finite_only_off.bc\\n734d59729fc961ef86ec28b8a07a3753 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_daz_opt_on.bc\\n201f43462f251847a4f24e45f13d873c ./opt/amdgpu-pro/amdgcn/bitcode/oclc_daz_opt_off.bc\\n4d7b29e1b8c0dce0c985f309b299f41d ./opt/amdgpu-pro/amdgcn/bitcode/oclc_correctly_rounded_sqrt_on.bc\\ne659a0ad6cd96708d307ebec73dbc1c4 ./opt/amdgpu-pro/amdgcn/bitcode/oclc_correctly_rounded_sqrt_off.bc\\n3a9ebf5f408a0260ee4c904afaa0a8cb ./opt/amdgpu-pro/amdgcn/bitcode/ockl.bc\\nc28dc2a95d9d805a39c29bbe157261af ./opt/amdgpu-pro/amdgcn/bitcode/hip.bc\\ndfe3cce71d8dd70d2c63151247f367ca ./opt/amdgpu-pro/amdgcn/bitcode/hc.bc\\n218cce187f7dd9f28fbeb110e11c57fe ./opt/amdgpu-pro/amdgcn/bitcode/asanrtl.bc\\n24098ed774d6803942b48650c95ac626 ./opt/amdgpu-pro/lib/.hipInfo\\nd0d6ea1297113dfb839ae456ecdadec7 ./opt/amdgpu-pro/lib/cmake/AMDDeviceLibs/AMDDeviceLibsConfig.cmake\\n46bcce3d87ed51f0b3fbb8a09e4b9d4d ./opt/amdgpu-pro/lib/x86_64-linux-gnu/libhiprtc-builtins.so.4.2\\n743746e682860ad9cbfe232b79811fb0 ./opt/amdgpu-pro/lib/x86_64-linux-gnu/libcltrace.so\\nbb234ca12828d9f96a03c9460d116596 ./usr/lib/libdrm_amdgpo.so.1.0.0\\n265a629dceb9d5e4d1057b35091f18de ./usr/lib/libamdocl-orca64.so\\n8f6f6e4277c4275acadbdf15ea190ec9 ./usr/lib/libhsakmt.so.1.0.6\\n63c804c9bbce52f7ece516dc7cf589ef ./usr/lib/libhsa-runtime64.so.1.3.0\\n3249872a8ad0cf51fd75bcc7e4bbd74f ./usr/lib/libamdhip64.so.4.2.21303-\\nad96187089aba4988723e3f1e67673df ./usr/lib/libamd_comgr.so.2.1.0\\nc69178d7ac3e989939ccffdbb8a3f87e ./usr/lib/libamdocl64.so\\nd4c720fa080a71b8c960582d9a4857d7 ./etc/OpenCL/vendors/amdocl-orca64.icd\\n45a4b6c5182d693554c287765b369dfe ./etc/OpenCL/vendors/amdocl64.icd|md5sum -c | |
then echo All files are ok! | |
else echo File corruption found! Terminating! | |
exit | |
fi | |
else echo Warning: You don\'t have \"md5sum\" installed, skipping sum checking! | |
fi | |
mkdir DEBIAN | |
echo -e \#\!/bin/bash\\nif [ \$\(whoami\) = root ]\\nthen :\\nelse user=\$USER\\nfi\\n\\nn=0\\nfor i in video render\\ndo if getent group \$i \&\> /dev/null\\nthen if getent group \$i\|grep -q \$user\$SUDO_USER\\nthen :\\nelse echo Warning: \$user\$SUDO_USER isn\\\\\'t in the \\\\\"\$i\\\\\" group, will add the user\\ng[\$n]=\$i\\nfi\\nelse echo Warning: group \\\\\"\$i\\\\\" does not exist\\nc[\$n]=\$i\\nfi\\nn=\$\(\(\$n+1\)\)\\ndone\\n\\nif [ \"\${#c[@]}\" -eq 0 ]\\nthen :\\nelse if echo \"\${c[*]}\"\|grep -q video\\nthen echo ERROR: important group \\\\\"video\\\\\" is missing, without that group opencl won\\\\\'t work\!\\nelse echo Warning: non-important group is missing, you can ignore the warning messages\\nfi\\nfi\\n\\nif [ \"\${#g[@]}\" -eq 0 ]\\nthen :\\nelse echo Warning: adding \$user\$SUDO_USER to \\\\\"\$\(echo \${g[*]}\|tr \' \' ,\)\\\\\" group\\\\\(s\\\\\) in five seconds\!\\nsleep 5\\nsudo usermod -a -G \$\(echo \${g[*]}\|tr \' \' ,\) \$user\$SUDO_USER \&\& echo Warning: you\\\\\'ve been added to group\\\\\(s\\\\\), you should login-logback for installation to complete\! \|\| echo ERROR: you\\\\\'ve failed to enter group\\\\\(s\\\\\)\!\\nfi\\n\\necho Warning: remeber to remove \\\\\'mesa-opencl-icd\\\\\' \\\\\!, otherwise you will have each device in both opencl 1.1 and 1.2 modes as seperate devices . clpeak for example will report each gpu twice \\\\\! This is problematic for BOINC > DEBIAN/postinst | |
if [ "$ID_LIKE" = debian ] | |
then if echo $@|grep -q \\-\\-no\\-deb | |
then : | |
else echo -e Package: amdgpu-pro-opencl\\nVersion: $major.$minor\\nSection: Libraries \(universe\)\\nPriority: extra\\nMaintainer: [email protected]\\nDescription: implementation of opencl-amd AUR package: https://aur.archlinux.org/packages/opencl-amd\\n script hosted on: https://gist.github.com/tuxutku/79daa2edca131c1525a136b650cdbe0a\\nWebsite: https://gist.github.com/tuxutku/79daa2edca131c1525a136b650cdbe0a\\nInstalled-Size: $(du -s .|cut -f -1)\\nArchitecture: amd64 > DEBIAN/control | |
find . -type f ! -regex '.*.hg.*' ! -regex '.*?debian-binary.*' ! -regex '.*?DEBIAN.*' -printf '%P ' | xargs md5sum > DEBIAN/md5sums | |
chmod -R 755 . | |
dpkg -b . ../$tarname-opencl.deb | |
if echo $@|grep -q \\-\\-no\\-install | |
then : | |
else echo 'installing package' | |
sudo apt install ../$tarname-opencl.deb | |
exit | |
fi | |
fi | |
fi | |
if echo $@|grep -q \\-\\-no\\-install | |
then exit | |
fi | |
echo "will be doing direct installation. Enter sudo password when needed" | |
sleep 5 | |
if echo $@|grep -q \\-\\-no\\-cleaning | |
then echo skipping cleaning | |
else echo | |
sudo rm -vf /opt/amdgpu-pro/bin/ca /opt/amdgpu-pro/bin/extractkernel /opt/amdgpu-pro/bin/lpl /opt/amdgpu/share/libdrm/amdgpu.ids /usr/lib/libamd_comgr.so /usr/lib/libamd_comgr.so.1.7.0 /usr/lib/libamd_comgr.so.1.9.0 /usr/lib/libamd_comgr.so.2.0.0 /usr/lib/libamdhip64.so /usr/lib/libamdhip64.so.1 /usr/lib/libamdhip64.so.1.5.19245 /usr/lib/libamdhip64.so.4 /usr/lib/libamdhip64.so.4.0.21115- /usr/lib/libamdhip64.so.4.0.21154- /usr/lib/libamdocl12cl64.so /usr/lib/libdrm_amdgpo.so.1 /usr/lib/libhsakmt.so.1 /usr/lib/libhsa-runtime64.so.1 /usr/lib/libhsa-runtime64.so.1.2.0 | |
# DO NOT run the line above standalone. It will remove the necessary files besides the junk! | |
fi | |
sudo cp -rv * / | |
bash DEBIAN/postinst |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment