Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.31 KB | None | 0 0
  1. #!/bin/bash
  2. # Made by Andrew Shark, The author of LinuxComp Tutorial Youtube channel
  3.  
  4. # To install amdgpu-pro on ubuntu 19.04 we want to use the following:
  5. # ./amdgpu-install --pro --opencl=lagacy,pal
  6. # But there are several problems in 19.30-855429 release:
  7. # 1-19.10-785425) amdgpu-dkms fails to build in 19.10 (probably could be fixed, I did not explored it yet). I checked that this driver actually works without dkms version of amdgpu kernel modules, so solution is omitting it.
  8. # 1-19.30-855429) There is no such problem, it builds ok, so we can ignore problem 3
  9. # 2) amdgpu-core checks ubuntu version before installation and refuses to continue if ubuntu version is not 18.04. Solution is to remove this check. It is in preinst script.
  10. # 3) amdgpu-pro(-hwe) and amdgpu-pro-lib32 depends on amdgpu(-hwe), however they should depend on amdgpu-lib(-hwe) instead. amdgpu(-hwe) itself depends on amdgpu-dkms and amdgpu-lib(-hwe). Because of this issue, amdgpu-dkms package is still in installation list when we use --no-dkms. So solution is to modify depends array of amdgpu-pro(-hwe) and amdgpu-pro-lib32. Or just use a fake empty amdgpu-dkms package.
  11. # 4) Then we need to edit packages hashsums and filesizes of modified packages in Packages file and hashsums of Packages file in Release file.
  12. # 5) And we need to edit amdgpu-install script to use hwe packages (they are more recent versions of non-hwe ones).
  13. # After that we could install amdgpu-pro 19.30-855429 in ubuntu 19.04.
  14. # Ok, lets start!
  15.  
  16. # remove installation if it was done previously
  17. if [ -f uninstall-force.sh ]; then
  18. bash uninstall-force.sh
  19. fi
  20.  
  21. major=19.30
  22. minor=855429
  23.  
  24. # Solving problem 1:
  25. # There is no problem currently.
  26. # But we will not install amdgpu-dkms, because we will skip most of the open components installation.
  27.  
  28. # Solving problem 2:
  29. # removing checking ubuntu version
  30. DEBFILE=amdgpu-core_"$major"-"$minor"_all.deb
  31. TMPDIR=`mktemp -d /tmp/deb.XXXXXXXXXX` || exit 1
  32. OUTPUT=`basename "$DEBFILE" .deb`.no_ub_ver_chk.deb
  33. dpkg-deb -x "$DEBFILE" "$TMPDIR"
  34. dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN
  35. rm "$TMPDIR"/DEBIAN/preinst
  36. rm -f $OUTPUT # remove modded deb if already exist
  37. dpkg -b "$TMPDIR" "$OUTPUT"
  38. rm -r "$TMPDIR"
  39.  
  40. # for some reason hashsum is different after every build. Not explored why yet. So I will get it in this script dinamically
  41. ag_core_mod_md5=$(md5sum $OUTPUT | cut -f1 -d" ")
  42. ag_core_mod_sha1=$(sha1sum $OUTPUT | cut -f1 -d" ")
  43. ag_core_mod_sha256=$(sha256sum $OUTPUT | cut -f1 -d" ")
  44. ag_core_mod_size=$(wc -c < $OUTPUT)
  45.  
  46.  
  47. # Solving problem 3:
  48. # # making fake amdgpu-dkms
  49. # rm -rf amdgpu-dkms-fake
  50. # mkdir -p amdgpu-dkms-fake/DEBIAN
  51. # echo -e "
  52. # Package: amdgpu-dkms
  53. # Version: $major-$minor
  54. # Architecture: all
  55. # Maintainer: Unreal Person <you@email.com>
  56. # Section: misc
  57. # Priority: optional
  58. # Description: Fake empty package to workaround amdgpu-pro stack dependcy on dkms" > amdgpu-dkms-fake/DEBIAN/control
  59. # dpkg-deb --build amdgpu-dkms-fake
  60. # rm -rf amdgpu-dkms-fake
  61. #
  62. # ag_dkms_mod_md5=$(md5sum amdgpu-dkms-fake.deb | cut -f1 -d" ")
  63. # ag_dkms_mod_sha1=$(sha1sum amdgpu-dkms-fake.deb | cut -f1 -d" ")
  64. # ag_dkms_mod_sha256=$(sha256sum amdgpu-dkms-fake.deb | cut -f1 -d" ")
  65. # ag_dkms_mod_size=$(wc -c < amdgpu-dkms-fake.deb)
  66.  
  67.  
  68. # Making modded amdgpu-pro-hwe for avoiding installation of amdgpu-hwe
  69. rm -rf amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep
  70. mkdir -p amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep/DEBIAN
  71. echo -e "
  72. Package: amdgpu-pro-hwe
  73. Version: $major-$minor
  74. Architecture: amd64
  75. Maintainer: Unreal Person <you@email.com>
  76. Installed-Size: 17
  77. Depends: amdgpu-pro-core (= 19.30-855429), libgl1-amdgpu-pro-glx (= 19.30-855429), libegl1-amdgpu-pro (= 19.30-855429), libgles2-amdgpu-pro (= 19.30-855429), libglapi1-amdgpu-pro (= 19.30-855429), libgl1-amdgpu-pro-ext-hwe (= 19.30-855429), libgl1-amdgpu-pro-dri (= 19.30-855429), libgl1-amdgpu-pro-appprofiles (= 19.30-855429), libgbm1-amdgpu-pro (= 19.30-855429), libgbm1-amdgpu-pro-base (= 19.30-855429)
  78. Section: metapackages
  79. Priority: optional
  80. Description: Removed dependency on amdgpu-hwe to avoid installation of most open components" > amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep/DEBIAN/control
  81. dpkg-deb --build amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep
  82. rm -rf amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep
  83.  
  84. ag_prohwe_mod_md5=$(md5sum amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep.deb | cut -f1 -d" ")
  85. ag_prohwe_mod_sha1=$(sha1sum amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep.deb | cut -f1 -d" ")
  86. ag_prohwe_mod_sha256=$(sha256sum amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep.deb | cut -f1 -d" ")
  87. ag_prohwe_mod_size=$(wc -c < amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep.deb)
  88.  
  89. # # Making modded amdgpu-pro-hwe:i386 for avoiding installation of amdgpu-hwe:i386
  90. # rm -rf amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep
  91. # mkdir -p amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep/DEBIAN
  92. # echo -e "
  93. # Package: amdgpu-pro-hwe
  94. # Version: $major-$minor
  95. # Architecture: i386
  96. # Maintainer: Unreal Person <you@email.com>
  97. # Installed-Size: 17
  98. # Depends: amdgpu-pro-core (= 19.30-855429), libgl1-amdgpu-pro-glx (= 19.30-855429), libegl1-amdgpu-pro (= 19.30-855429), libgles2-amdgpu-pro (= 19.30-855429), libglapi1-amdgpu-pro (= 19.30-855429), libgl1-amdgpu-pro-ext-hwe (= 19.30-855429), libgl1-amdgpu-pro-dri (= 19.30-855429), libgl1-amdgpu-pro-appprofiles (= 19.30-855429), libgbm1-amdgpu-pro (= 19.30-855429), libgbm1-amdgpu-pro-base (= 19.30-855429)
  99. # Section: metapackages
  100. # Priority: optional
  101. # Description: Removed dependency on amdgpu-hwe:i386 to avoid installation of most open components" > amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep/DEBIAN/control
  102. # dpkg-deb --build amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep
  103. # rm -rf amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep
  104. #
  105. # ag_prohwe32_mod_md5=$(md5sum amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep.deb | cut -f1 -d" ")
  106. # ag_prohwe32_mod_sha1=$(sha1sum amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep.deb | cut -f1 -d" ")
  107. # ag_prohwe32_mod_sha256=$(sha256sum amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep.deb | cut -f1 -d" ")
  108. # ag_prohwe32_mod_size=$(wc -c < amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep.deb)
  109.  
  110.  
  111. # Making modded amdgpu-pro-lib32 for skipping of installation of ag|ag-hwe and amdgpu-lib32
  112. rm -rf amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep
  113. mkdir -p amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep/DEBIAN
  114. echo -e "
  115. Package: amdgpu-pro-lib32
  116. Version: $major-$minor
  117. Architecture: amd64
  118. Maintainer: Unreal Person <you@email.com>
  119. Installed-Size: 17
  120. Depends: amdgpu-pro (= 19.30-855429) | amdgpu-pro-hwe (= 19.30-855429), libgl1-amdgpu-pro-glx:i386 (= 19.30-855429), libegl1-amdgpu-pro:i386 (= 19.30-855429), libgles2-amdgpu-pro:i386 (= 19.30-855429), libglapi1-amdgpu-pro:i386 (= 19.30-855429), libgl1-amdgpu-pro-dri:i386 (= 19.30-855429), libgbm1-amdgpu-pro:i386 (= 19.30-855429)
  121. Priority: optional
  122. Description: Removed dependency on ag|ag-hwe and amdgpu-lib32 to avoid installation of most open components" > amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep/DEBIAN/control
  123. dpkg-deb --build amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep
  124. rm -rf amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep
  125.  
  126. ag_prolib32_mod_md5=$(md5sum amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep.deb | cut -f1 -d" ")
  127. ag_prolib32_mod_sha1=$(sha1sum amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep.deb | cut -f1 -d" ")
  128. ag_prolib32_mod_sha256=$(sha256sum amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep.deb | cut -f1 -d" ")
  129. ag_prolib32_mod_size=$(wc -c < amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep.deb)
  130.  
  131.  
  132. # Solving problem 4:
  133. # filling new checksums to Packages and Release
  134.  
  135. # for ag-core:
  136. sed -i "36{s/.*/Filename: .\/amdgpu-core_"$major"-"$minor"_all.no_ub_ver_chk.deb/}" Packages
  137. sed -i "37{s/.*/Size: $ag_core_mod_size/}" Packages
  138. sed -i "38{s/.*/MD5sum: $ag_core_mod_md5/}" Packages
  139. sed -i "39{s/.*/SHA1: $ag_core_mod_sha1/}" Packages
  140. sed -i "40{s/.*/SHA256: $ag_core_mod_sha256/}" Packages
  141. # # for ag-dkms:
  142. # sed -i "51{s/.*/Depends: amdgpu-doc/}" Packages
  143. # sed -i "52{s/.*/Filename: .\/amdgpu-dkms-fake.deb/}" Packages
  144. # sed -i "53{s/.*/Size: $ag_dkms_mod_size/}" Packages
  145. # sed -i "54{s/.*/MD5sum: $ag_dkms_mod_md5/}" Packages
  146. # sed -i "55{s/.*/SHA1: $ag_dkms_mod_sha1/}" Packages
  147. # sed -i "56{s/.*/SHA256: $ag_dkms_mod_sha256/}" Packages
  148.  
  149.  
  150. # for ag-pro-hwe:
  151. sed -i "252{s/.*/Depends: amdgpu-pro-core (= 19.30-855429), libgl1-amdgpu-pro-glx (= 19.30-855429), libegl1-amdgpu-pro (= 19.30-855429), libgles2-amdgpu-pro (= 19.30-855429), libglapi1-amdgpu-pro (= 19.30-855429), libgl1-amdgpu-pro-ext-hwe (= 19.30-855429), libgl1-amdgpu-pro-dri (= 19.30-855429), libgl1-amdgpu-pro-appprofiles (= 19.30-855429), libgbm1-amdgpu-pro (= 19.30-855429), libgbm1-amdgpu-pro-base (= 19.30-855429)/}" Packages # Its needed to also replace Depends in Packages.
  152. sed -i "253{s/.*/Filename: .\/amdgpu-pro-hwe_"$major"-"$minor"_amd64.no_ag-hwe_dep.deb/}" Packages
  153. sed -i "254{s/.*/Size: $ag_prohwe_mod_size/}" Packages
  154. sed -i "255{s/.*/MD5sum: $ag_prohwe_mod_md5/}" Packages
  155. sed -i "256{s/.*/SHA1: $ag_prohwe_mod_sha1/}" Packages
  156. sed -i "257{s/.*/SHA256: $ag_prohwe_mod_sha256/}" Packages
  157.  
  158. # # for ag-pro-hwe:i386:
  159. # sed -i "237{s/.*/Depends: amdgpu-pro-core (= 19.30-855429), libgl1-amdgpu-pro-glx (= 19.30-855429), libegl1-amdgpu-pro (= 19.30-855429), libgles2-amdgpu-pro (= 19.30-855429), libglapi1-amdgpu-pro (= 19.30-855429), libgl1-amdgpu-pro-ext-hwe (= 19.30-855429), libgl1-amdgpu-pro-dri (= 19.30-855429), libgl1-amdgpu-pro-appprofiles (= 19.30-855429), libgbm1-amdgpu-pro (= 19.30-855429), libgbm1-amdgpu-pro-base (= 19.30-855429)/}" Packages # Its needed to also replace Depends in Packages.
  160. # sed -i "238{s/.*/Filename: .\/amdgpu-pro-hwe_"$major"-"$minor"_i386.no_ag-hwe_dep.deb/}" Packages
  161. # sed -i "239{s/.*/Size: $ag_prohwe32_mod_size/}" Packages
  162. # sed -i "240{s/.*/MD5sum: $ag_prohwe32_mod_md5/}" Packages
  163. # sed -i "241{s/.*/SHA1: $ag_prohwe32_mod_sha1/}" Packages
  164. # sed -i "242{s/.*/SHA256: $ag_prohwe32_mod_sha256/}" Packages
  165.  
  166. # for ag-pro-lib32:
  167. sed -i "268{s/.*/Depends: amdgpu-pro (= 19.30-855429) | amdgpu-pro-hwe (= 19.30-855429), libgl1-amdgpu-pro-glx:i386 (= 19.30-855429), libegl1-amdgpu-pro:i386 (= 19.30-855429), libgles2-amdgpu-pro:i386 (= 19.30-855429), libglapi1-amdgpu-pro:i386 (= 19.30-855429), libgl1-amdgpu-pro-dri:i386 (= 19.30-855429), libgbm1-amdgpu-pro:i386 (= 19.30-855429)/}" Packages # Its needed to also replace Depends in Packages.
  168. sed -i "269{s/.*/Filename: .\/amdgpu-pro-lib32_"$major"-"$minor"_amd64.no_ag-hwe_and_ag-lib32_dep.deb/}" Packages
  169. sed -i "270{s/.*/Size: $ag_prolib32_mod_size/}" Packages
  170. sed -i "271{s/.*/MD5sum: $ag_prolib32_mod_md5/}" Packages
  171. sed -i "272{s/.*/SHA1: $ag_prolib32_mod_sha1/}" Packages
  172. sed -i "273{s/.*/SHA256: $ag_prolib32_mod_sha256/}" Packages
  173.  
  174. packages_mod_sha256=$(sha256sum Packages | cut -f1 -d" ")
  175. packages_mod_size=$(wc -c < Packages)
  176.  
  177. echo -e "Date: `date -R -u`
  178. SHA256:
  179. $packages_mod_sha256 $packages_mod_size Packages" > Release
  180.  
  181. # Solving problem 5:
  182. # choose hwe variant in amdgpu-install script
  183. sed -i '147{s/^\t/#/}' amdgpu-install # commenting out this condition: if dpkg -s "xserver-xorg-hwe-18.04"
  184. sed -i '151{s/^\t/#/}' amdgpu-install # and its closing fi
  185.  
  186.  
  187. # Finally, we are ready to install:
  188. # ./amdgpu-install --pro --opencl=legacy,pal --no-dkms
  189. echo "Creating local repository..."
  190. ./amdgpu-install --assume-no &> /dev/null
  191. echo -e "\e[32mInstalling OpenGL PRO...\e[0m"
  192. sudo apt install amdgpu-pro-hwe amdgpu-pro-lib32 --assume-yes
  193. echo -e "\e[32mInstalling OpenCL PRO...\e[0m"
  194. # opencl-amdgpu-pro metapackage does not handle opencl-orca-amdgpu-pro-icd:i386 and depends on dkms, so I just pointed to packages manually
  195. sudo apt install clinfo-amdgpu-pro opencl-orca-amdgpu-pro-icd opencl-orca-amdgpu-pro-icd:i386 opencl-amdgpu-pro-icd --assume-yes
  196. # I do not know about new packages opencl-amdgpu-{comgr, hip}, roct.
  197. echo -e "\e[32mInstalling Vulkan PRO...\e[0m"
  198. sudo apt install vulkan-amdgpu-pro vulkan-amdgpu-pro:i386 --assume-yes
  199. echo -e "\e[32mAll done, enjoy!\nThis script was prepared for you by Andrew Shark, the author of LinuxComp Tutorial youtube channel. If you liked it, please let me know =)\e[0m"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement