Automate installation of DXVK, D9VK + Wine/Wine Staging & update GPU drivers + PlayonLinux wineprefixes (Debian/Ubuntu/Mint/Arch Linux/Manjaro)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

300 lines
12 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. # Wine/Wine Staging + DXVK package builder & auto-installer
  2. Automate installation of [DXVK](https://github.com/doitsujin/dxvk) + [Wine](https://www.winehq.org/)/[Wine Staging](https://github.com/wine-staging/wine-staging/) & update GPU drivers + PlayonLinux wineprefixes (Debian/Ubuntu/Mint/Arch Linux/Manjaro)
  3. ## About
  4. One-click solution for accessing bleeding-edge Wine/Wine Staging & DXVK packages _system-widely_ on Debian/Ubuntu/Mint and on Arch Linux/Manjaro.
  5. ## Motivation
  6. **Accessibility, lower the barrier.** Help people to get their hands on the latest bleeding-edge Wine/Wine Staging & DXVK software on major Linux distribution platforms without hassle or headaches.
  7. There is not an easy way to auto-install bleeding-edge Wine/Wine Staging & DXVK, especially on Debian/Ubuntu/Mint. The newest Wine/Wine Staging is not easily accessible on Debian-based Linux distributions, and DXVK is practically bundled to Lutris or Steam gaming platform as a form of Proton. However, not all Windows programs, like MS Office or Adobe Photoshop, could run under Linux Steam client: Many Windows programs actually rely on system-wide Wine installation either possibly via common third-party management software such as PlayOnLinux or Crossover which is why system-wide Wine/Wine Staging & DXVK auto-installation this script offers becomes quite handy.
  8. The solution provided here _is independent from Steam client or any other Wine management platform_. The latest Wine/Wine Staging & DXVK bundle will be accessible system-widely, not just via Steam, Lutris or PlayOnLinux. Provided PlayOnLinux prefix update is optional, as well.
  9. ----------------
  10. ## Adapt system-wide Wine/DXVK to your Steam Windows games
  11. If you want to easily use Wine/Wine Staging and DXVK with your Steam Windows games on Linux, you may want to check out my helper script [steam-launchoptions](https://github.com/Fincer/steam-launchoptions).
  12. With the helper script, you can set launch options for a single game/selected group of games/all games you have on your Steam account. You can customize the launch options for both Windows and Linux games and clean all existing launch options, too.
  13. ----------------
  14. ## Contents
  15. - **Wine/Wine Staging & DXVK:** Install script for supported Linux distributions
  16. - **Nvidia drivers:** Install script for supported Debian-based distributions
  17. - **Patches:** Possibility to use your custom patches with Wine & DXVK
  18. ----------------
  19. ## Requirements
  20. - **Time:** it can take between 0.5-2 hours for the script to run. Compiling Wine takes a lot of time. You have been warned.
  21. - Debian, Ubuntu, Mint or any other Linux distribution which uses `dpkg` and `àpt` for package management
  22. - Arch Linux, Manjaro or any other Linux distribution which uses `pacman` for package management
  23. - **Not listed as a hard dependency, but recommended for DXVK**: The latest Nvidia or AMD GPU drivers (Nvidia proprietary drivers // AMDGPU)
  24. ----------------
  25. ## Why to compile from source?
  26. Latest version of Wine/Wine Staging & DXVK are only available via git as source code which must be compiled before usage. Note that compiling Wine takes a lot of time. Compiling from source has its advantages and disadvantages, some of them listed below.
  27. **Advantages:**
  28. - packages are directly adapted to your system
  29. - packages do not rely on PPAs which may be abandoned in time
  30. - using Git sources provide the latest packages available publicly
  31. **Disadvantages:**
  32. - takes time & CPU processing power
  33. - is unreliable in some cases, the script may break easily due to rapid DXVK development or distro changes
  34. - may break working already-working versions of the packages (use `--no-install` parameter to avoid installation of DXVK & Wine, just as precaution)
  35. ----------------
  36. ## Script usage
  37. For short help instructions, run:
  38. ```
  39. bash updatewine.sh --help
  40. ```
  41. on the main script folder.
  42. You can pass arguments like:
  43. ```
  44. bash updatewine.sh --no-staging --no-install
  45. ```
  46. All supported arguments are:
  47. - `--no-staging` = Compile Wine instead of Wine Staging
  48. - `--no-install` = Do not install Wine or DXVK, just compile them. Note that Wine must be installed for DXVK compilation.
  49. - `--no-wine` = Do not compile or install Wine/Wine Staging
  50. - `--no-dxvk` = Do not compile or install DXVK
  51. - `--no-pol` = Do not update current user's PlayOnLinux Wine prefixes
  52. ----------------
  53. ## Custom patches for Wine & DXVK
  54. You can apply your own patches for DXVK & Wine by dropping valid `.patch` or `.diff` files into `dxvk_custom_patches` (DXVK) or `wine_custom_patches` (Wine) folder.
  55. Folders `dxvk_disabled_patches` and `wine_disabled_patches` are just for management purposes, they do not have a role in script logic at all.
  56. Wine patches are not related to Wine Staging patchset. You can use your custom Wine patches either with Wine Staging or vanilla Wine.
  57. ----------------
  58. ## Compiled packages are stored for later usage
  59. Successfully compiled Wine & DXVK packages are stored in separate subfolders. Their locations are as follows.
  60. On Debian/Ubuntu/Mint:
  61. - `main-script-folder/debian/compiled_deb/`
  62. On Arch Linux:
  63. - `main-script-folder/arch/compiled_pkg/`
  64. The actual subfolders which hold compiled programs are generated according to buildtime timestamp, known as `build identifier`.
  65. ## DXVK usage
  66. **NOTE:** DXVK must be installed before applying these steps.
  67. To enable DXVK on existing wineprefixes, just run
  68. ```
  69. WINEPREFIX=/path/to/my/wineprefix setup_dxvk
  70. ```
  71. `winetricks` is required for this command.
  72. ## Add DXVK to PlayOnLinux Wine prefixes
  73. To install DXVK on specific PlayOnLinux wineprefix which uses a different than `system` version of Wine, apply the following command syntax:
  74. ```
  75. WINEPREFIX="$HOME/.PlayOnLinux/wineprefix/myprefix" WINEPATH=$HOME/.PlayOnLinux/wine/{linux-amd64,linux-x86}/wineversion/bin" setup_dxvk
  76. ```
  77. where you need to set either `linux-amd64` or `linux-x86` and set `wineversion` to match a real one, obviously.
  78. system-wide `winetricks` executable (`/usr/bin/winetricks`) is required for this command.
  79. ### Uninstall temporary development packages (Debian/Ubuntu/Mint):
  80. Development packages can take extra space on your system so you may find useful to uninstall them. This package comes with `debian_devpkgremoval.sh` script which is targeted for that purpose. It uninstalls majority of Wine-Staging (Git), meson & glslang buildtime dependencies which may not be longer required.
  81. To use `debian_devpkgremoval.sh`, simply run:
  82. ```
  83. bash debian_devpkgremoval.sh
  84. ```
  85. ---------------------------
  86. ### EXAMPLES:
  87. **NOTE:** If `--no-install` option is given, the script doesn't check for PlayOnLinux Wine prefixes.
  88. **NOTE:** PlayOnLinux Wine prefixes are checked for current user only.
  89. **1)** Compile Wine Staging & DXVK, and make installable packages for them. Install the packages:
  90. `bash updatewine.sh`
  91. **2)** Compile DXVK and make an installable package for it. Do not install:
  92. `bash updatewine.sh --no-wine --no-install`
  93. **3)** Compile Wine Staging and make an installable package for it. Do not install:
  94. `bash updatewine.sh --no-dxvk --no-install`
  95. **4)** Compile Wine and make an installable package for it. Do not install:
  96. `bash updatewine.sh --no-staging --no-dxvk --no-install`
  97. **5)** Compile Wine & DXVK, and make installable packages for them. Do not install:
  98. `bash updatewine.sh --no-staging --no-install`
  99. **6)** Compile Wine Staging & DXVK, and make installable packages for them. Do not install:
  100. `bash updatewine.sh --no-install`
  101. **7)** Compile Wine & DXVK, and make installable packages for them. Install the packages:
  102. `bash updatewine.sh --no-staging`
  103. **8)** Compile Wine, and make an installable package for it. Install the package, do not check PlayOnLinux wineprefixes:
  104. `bash updatewine.sh --no-staging --no-dxvk --no-pol`
  105. ----------------
  106. ## GPU drivers
  107. For DXVK, it is strongly recommended that you install the latest Nvidia/AMDGPU drivers on your Linux distribution. For that purpose, Arch Linux/Manjaro users can use Arch/AUR package database. Debian/Ubuntu/Mint users should use provided scripts files
  108. ### GPU drivers on Debian/Ubuntu/Mint
  109. **Nvidia users**
  110. Use `debian_install_nvidia.sh` by running `bash debian_install_nvidia.sh`
  111. **AMD users**
  112. Not a solution provided yet.
  113. **NOTE:** The latest GPU drivers are usually NOT available on official Debian/Ubuntu/Mint package repositories, thus these helper scripts are provided.
  114. **NOTE:** Nvidia & AMD driver installer shell script can be run individually, as well. It is not bundled to the rest of the scripts in this repository, so feel free to grab them for other purposes, as well.
  115. ---------------------------
  116. ### NOTES
  117. The following section contains important notes about the script usage.
  118. **Do not pause a virtual machine**. It is not recommended to run this script in a virtualized environment (Oracle VirtualBox, for instance) if you plan to `Pause` the virtual machine during script runtime. This causes an internal sudo validate loop to get nuts. In normal environments and in normal runtime cases, this doesn't happen. Validate loop is required to keep sudo permissions alive for the script since the execution time exceeds default system-wide sudo timeout limit (which is a normal case).
  119. ---------------------------
  120. ### Script validation test
  121. Validation test done for the script to ensure it works as expected. Occasional test-runs are mandatory due to rapid development of the packages (Wine/DXVK) it handles.
  122. **Latest test-run:** 13th November, 2018
  123. **Linux Distributions:**
  124. - Success: Arch Linux, Linux Mint 19
  125. - Partial failure: Debian 9 (DXVK), Ubuntu 18.04 (DXVK)
  126. #### Failure reasons:
  127. Debian:
  128. - DXVK uninstallable: no winetricks package available
  129. Ubuntu 18.04:
  130. - DXVK uninstallable: during compilation, the following error appears:
  131. ```
  132. ...
  133. [162/192] Compiling C++ object 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_swapchain.cpp.obj'.
  134. FAILED: src/d3d11/src@d3d11@@d3d11@sha/d3d11_swapchain.cpp.obj
  135. x86_64-w64-mingw32-g++ -Isrc/d3d11/src@d3d11@@d3d11@sha -Isrc/d3d11 -I../../../../src/d3d11 -I../../../.././include -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -O3 -DNOMINMAX -MD -MQ 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_swapchain.cpp.obj' -MF 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_swapchain.cpp.obj.d' -o 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_swapchain.cpp.obj' -c ../../../../src/d3d11/d3d11_swapchain.cpp
  136. {standard input}: Assembler messages:
  137. {standard input}:3269: Warning: end of file not at end of a line; newline inserted
  138. {standard input}: Error: open SEH entry at end of file (missing .seh_endproc)
  139. x86_64-w64-mingw32-g++: internal compiler error: Killed (program cc1plus)
  140. ...
  141. ```
  142. or
  143. ```
  144. ...
  145. [137/192] Compiling C++ object 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_view_uav.cpp.obj'.
  146. FAILED: src/d3d11/src@d3d11@@d3d11@sha/d3d11_view_uav.cpp.obj
  147. x86_64-w64-mingw32-g++ -Isrc/d3d11/src@d3d11@@d3d11@sha -Isrc/d3d11 -I../../../../src/d3d11 -I../../../.././include -fdiagnostics-color=always -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++1z -O3 -DNOMINMAX -MD -MQ 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_view_uav.cpp.obj' -MF 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_view_uav.cpp.obj.d' -o 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_view_uav.cpp.obj' -c ../../../../src/d3d11/d3d11_view_uav.cpp
  148. x86_64-w64-mingw32-g++: internal compiler error: Killed (program cc1plus)
  149. Please submit a full bug report,
  150. with preprocessed source if appropriate.
  151. See <https://gcc.gnu.org/bugs/> for instructions.
  152. [144/192] Compiling C++ object 'src/d3d11/src@d3d11@@d3d11@sha/d3d11_context.cpp.obj'.
  153. ninja: build stopped: subcommand failed.
  154. ...
  155. ```
  156. ---------------------------
  157. ### TODO
  158. - Provide winetricks package for pure Debian users (DXVK runtime dependency)
  159. - Add compilation/installation script for the latest AMDGPU on Debian/Ubuntu/Mint
  160. - Remove temp folders in case of failure (meson/glslang/dxvk-git/wine... temp build folders)
  161. - Better handling for sudo validation loop function
  162. - may cause the terminal output to get nuts
  163. - when interrupting the script, the exit functionality may not be handled correctly?
  164. ---------------------------
  165. ### LICENSE
  166. This repository uses GPLv3 license. See [LICENSE](LICENSE) for details.