Pekka Helenius 5 years ago
parent
commit
076e7b196a
13 changed files with 71 additions and 446 deletions
  1. +23
    -41
      README.md
  2. +0
    -98
      arch/0-d9vk-git/PKGBUILD
  3. +8
    -1
      arch/0-dxvk-git/PKGBUILD
  4. +6
    -38
      arch/updatewine_arch.sh
  5. +0
    -10
      d9vk_custom_patches/patch_remove_d3d10-11.patch
  6. +0
    -4
      d9vk_custom_patches/put_your_d9vk_patches_here
  7. +0
    -0
      d9vk_disabled_patches/put_disabled_d9vk_patches_here
  8. +0
    -175
      debian/dxvkroot/d9vk.debdata
  9. +2
    -2
      debian/dxvkroot/dxvk.debdata
  10. +11
    -24
      debian/dxvkroot/dxvkbuild.sh
  11. +9
    -13
      debian/updatewine_debian.sh
  12. +4
    -22
      debian_cleanup_devpkgs.sh
  13. +8
    -18
      updatewine.sh

+ 23
- 41
README.md View File

@ -1,30 +1,30 @@
# Wine/Wine Staging + DXVK & D9VK package builder & auto-installer
# Wine/Wine Staging + DXVK package builder & auto-installer
![](https://i.imgur.com/5WCPioZ.png)
Boost up your Wine experience with a taste of DXVK + D9VK and automate installation of [DXVK](https://github.com/doitsujin/dxvk), [D9VK](https://github.com/Joshua-Ashton/d9vk) + [Wine](https://www.winehq.org/)/[Wine Staging](https://github.com/wine-staging/wine-staging/) on Debian/Ubuntu/Mint/Arch Linux/Manjaro. Additionally, update your GPU drivers + PlayonLinux wineprefixes to use the latest Wine & DXVK + D9VK combination available.
Boost up your Wine experience with a taste of DXVK and automate installation of [DXVK](https://github.com/doitsujin/dxvk) + [Wine](https://www.winehq.org/)/[Wine Staging](https://github.com/wine-staging/wine-staging/) on Debian/Ubuntu/Mint/Arch Linux/Manjaro. Additionally, update your GPU drivers + PlayonLinux wineprefixes to use the latest Wine & DXVK combination available.
## About
One-click solution for accessing bleeding-edge Wine/Wine Staging, DXVK & D9VK packages _system-widely_ on Debian/Ubuntu/Mint and on Arch Linux/Manjaro. Alternatively, you can pick any version of Wine/Wine Staging, DXVK & D9VK to be used.
One-click solution for accessing bleeding-edge Wine/Wine Staging & DXVK packages _system-widely_ on Debian/Ubuntu/Mint and on Arch Linux/Manjaro. Alternatively, you can pick any version of Wine/Wine Staging & DXVK to be used.
![](https://i.imgur.com/Tqqi7pm.png)
_Wine Staging 3.20, DXVK and winetricks on Debian 9. Normally, no winetricks, DXVK or D9VK are available, and Wine is set to very old version 1.8.7 on Debian - leaving all the sweet candies out. Not anymore - let's end this misery and give user finally a choice._
_Wine Staging 3.20, DXVK and winetricks on Debian 9. Normally, no winetricks or DXVK are available, and Wine is set to very old version 1.8.7 on Debian - leaving all the sweet candies out. Not anymore - let's end this misery and give user finally a choice._
## Motivation
**Accessibility, lower the barrier.** Help people to get their hands on the latest (bleeding-edge) Wine/Wine Staging, DXVK & D9VK software on major Linux distribution platforms without hassle or headaches.
**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.
There is not an easy way to auto-install the latest Wine/Wine Staging, DXVK & D9VK, especially on Debian/Ubuntu/Mint. The newest Wine/Wine Staging is not easily accessible on Debian-based Linux distributions, and DXVK/D9VK 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 which is why system-wide Wine/Wine Staging, DXVK & D9VK auto-installation this script offers becomes quite handy.
There is not an easy way to auto-install the latest 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 which is why system-wide Wine/Wine Staging & DXVK auto-installation this script offers becomes quite handy.
The solution provided here _is independent from Steam client or any other Wine management platform_. The latest Wine/Wine Staging, DXVK & D9VK bundle will be accessible system-widely, not just via Steam, Lutris or PlayOnLinux. Provided PlayOnLinux prefix update is optional, as well.
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.
----------------
## Adapt system-wide Wine/DXVK to your Steam Windows games
If you want to easily use Wine/Wine Staging and DXVK + D9VK with your Steam Windows games on Linux, you may want to check out my helper script [steam-launchoptions](https://github.com/Fincer/steam-launchoptions).
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).
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.
@ -32,13 +32,13 @@ With the helper script, you can set launch options for a single game/selected gr
## Contents
- **Wine/Wine Staging, DXVK & D9VK:** Installation script for supported Linux distributions
- **Wine/Wine Staging & DXVK:** Installation script for supported Linux distributions
- **Nvidia drivers:** Installation script for supported Debian-based distributions. Independent script.
- **Winetricks install** Installation script for supported Debian-based distributions. Can be run independently.
- **Patches:** Possibility to use your custom patches with Wine, DXVK & D9VK
- **Patches:** Possibility to use your custom patches with Wine & DXVK
----------------
@ -48,7 +48,7 @@ With the helper script, you can set launch options for a single game/selected gr
- **RAM:** 4096 MB (DXVK build process may fail with less RAM available)
- **Not listed as a hard dependency, but recommended for DXVK & D9VK**: The latest Nvidia or AMD GPU drivers (Nvidia proprietary drivers // AMDGPU)
- **Not listed as a hard dependency, but recommended for DXVK**: The latest Nvidia or AMD GPU drivers (Nvidia proprietary drivers // AMDGPU)
- **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.
@ -56,7 +56,7 @@ With the helper script, you can set launch options for a single game/selected gr
## Why to compile from source?
Latest version of Wine/Wine Staging, DXVK & D9VK 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.
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.
**Advantages:**
@ -72,7 +72,7 @@ Latest version of Wine/Wine Staging, DXVK & D9VK are only available via git as s
- is unreliable in some cases, the script may break easily due to rapid DXVK development or distro changes
- may break working already-working versions of the packages (use `--no-install` parameter to avoid installation of DXVK/D9VK & Wine, just as precaution)
- may break working already-working versions of the packages (use `--no-install` parameter to avoid installation of DXVK & Wine, just as precaution)
----------------
@ -102,13 +102,11 @@ All supported arguments are:
- `--no-dxvk` = Do not compile or install DXVK
- `--no-d9vk` = Do not compile or install D9VK
- `--no-pol` = Do not update current user's PlayOnLinux Wine prefixes
### Force/Lock package versions
You can force/lock specific Wine, Wine Staging, DXVK, D9VK, meson & glslang versions.
You can force/lock specific Wine, Wine Staging, DXVK, meson & glslang versions.
There are two switches for that: Set a specific **1)** _commit_ **2)** _git branch_ you want to use
@ -116,11 +114,11 @@ This is handy if you encounter issues during package compilation (DXVK/glslang o
- Git commit:
- `git_commithash_dxvk`, `git_commithash_d9vk`, `git_commithash_wine`, `git_commithash_glslang`, `git_commithash_meson`
- `git_commithash_dxvk`, `git_commithash_wine`, `git_commithash_glslang`, `git_commithash_meson`
- Git branch:
- `git_branch_dxvk`, `git_branch_d9vk`, `git_branch_wine`, `git_branch_glslang`, `git_branch_meson`
- `git_branch_dxvk`, `git_branch_wine`, `git_branch_glslang`, `git_branch_meson`
**These settings apply only on Debian/Ubuntu/Mint:**
@ -140,7 +138,7 @@ Each variable applies values which must be match package git commit tree. The va
- **A)** 40 characters long commit hash. Use this if you want this commit to be the latest to be used in package compilation, not anything after it.
- defined in git commit tree: [DXVK commit tree](https://github.com/doitsujin/dxvk/commits/master), D9VK commit tree](https://github.com/Joshua-Ashton/d9vk/commits/master), [Wine commit tree](https://source.winehq.org/git/wine.git/) (or [GitHub mirror](https://github.com/wine-mirror/wine)), [glslang commit tree](https://github.com/KhronosGroup/glslang/commits/master), [meson commit tree](https://github.com/mesonbuild/meson/commits/master)
- defined in git commit tree: [DXVK commit tree](https://github.com/doitsujin/dxvk/commits/master), [Wine commit tree](https://source.winehq.org/git/wine.git/) (or [GitHub mirror](https://github.com/wine-mirror/wine)), [glslang commit tree](https://github.com/KhronosGroup/glslang/commits/master), [meson commit tree](https://github.com/mesonbuild/meson/commits/master)
- You can obtain proper hash by opening the commit. Hash syntax is: `654544e96bfcd1bbaf4a0fc639ef655299276a39` etc...
@ -174,9 +172,9 @@ Since Debian doesn't provide winetricks package on official repositories, it is
----------------
## Custom patches for Wine, DXVK & D9VK
## Custom patches for Wine & DXVK
You can apply your own patches for DXVK, D9VK & Wine by dropping valid `.patch` or `.diff` files into `dxvk_custom_patches` (DXVK), `d9vk_custom_patches` (D9VK) or `wine_custom_patches` (Wine) folder.
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.
Folders `dxvk_disabled_patches` and `wine_disabled_patches` are just for management purposes, they do not have a role in script logic at all.
@ -190,7 +188,7 @@ By using keywords `_staging` or `_nostaging` in your patch filename, you can qui
## Compiled packages are stored for later usage
Successfully compiled Wine, DXVK & D9VK packages are stored in separate subfolders. Their locations are as follows.
Successfully compiled Wine & DXVK packages are stored in separate subfolders. Their locations are as follows.
On Debian/Ubuntu/Mint:
@ -212,24 +210,12 @@ To enable DXVK on existing wineprefixes, just run
WINEPREFIX=/path/to/my/wineprefix setup_dxvk
```
## D9VK usage
**NOTE:** D9VK must be installed before applying these steps.
To enable D9VK on existing wineprefixes, just run
```
WINEPREFIX=/path/to/my/wineprefix setup_d9vk
```
## Add DXVK/D9VK to PlayOnLinux Wine prefixes
## Add DXVK to PlayOnLinux Wine prefixes
To install DXVK or D9VK on specific PlayOnLinux wineprefix which uses a different than `system` version of Wine, apply the following command syntax:
To install DXVK on specific PlayOnLinux wineprefix which uses a different than `system` version of Wine, apply the following command syntax:
```
WINEPREFIX="$HOME/.PlayOnLinux/wineprefix/myprefix" WINEPATH=$HOME/.PlayOnLinux/wine/{linux-amd64,linux-x86}/wineversion/bin" setup_dxvk
WINEPREFIX="$HOME/.PlayOnLinux/wineprefix/myprefix" WINEPATH=$HOME/.PlayOnLinux/wine/{linux-amd64,linux-x86}/wineversion/bin" setup_d9vk
```
where you need to set either `linux-amd64` or `linux-x86`, and `wineversion` + `myprefix` to match real ones, obviously.
@ -284,10 +270,6 @@ bash debian_cleanup_devpkgs.sh
`bash updatewine.sh --no-staging --no-dxvk --no-pol`
**9)** Compile D9VK, and make an installable package for it. Install the package, do not check PlayOnLinux wineprefixes:
`bash updatewine.sh --no-wine --no-dxvk --no-pol`
----------------
## GPU drivers
@ -320,7 +302,7 @@ The following section contains important notes about the script usage.
### Script runtime test
Runtime 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/D9VK) it handles.
Runtime 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.
**Latest test-run:** 30th May, 2019


+ 0
- 98
arch/0-d9vk-git/PKGBUILD View File

@ -1,98 +0,0 @@
# Maintainer: Pekka Helenius <fincer89 [at] hotmail [dot] com>
# Contributor: Adrià Cereto i Massagué <ssorgatem at gmail.com>
# Override /etc/makepkg.conf PKGDEST variable if it's enabled
PKGDEST="${PWD}"
pkgname=d9vk-git
pkgver=6125834
pkgrel=1
pkgdesc="A Vulkan-based compatibility layer for Direct3D 9 which allows running 3D applications on Linux using Wine"
url="https://github.com/Joshua-Ashton/d9vk"
license=('custom:zlib/libpng')
arch=('x86_64')
conflicts=(
'd9vk-bin'
'd9vk-mingw'
'd9vk-winelib'
'd9vk-mingw-git'
'd9vk-winelib-git'
)
depends=('wine' 'vulkan-icd-loader' 'lib32-vulkan-icd-loader')
makedepends=(
'ninja'
'meson>=0.43'
'glslang'
'git'
'wine'
)
provides=('d9vk')
source=(${pkgname}::"git+https://github.com/Joshua-Ashton/d9vk.git#commit=HEAD")
sha256sums=('SKIP')
_git_branch_d9vk=master
_d9vk_commit=HEAD
##############################
# Copy custom patches to correct location
if [[ $(find "${startdir}/d9vk-patches" -mindepth 1 -maxdepth 1 -regex ".*\.\(patch\|diff\)$") ]]; then
cp -r "${startdir}/d9vk-patches/"*.{patch,diff} "${startdir}"/
p=0
for patch in $(find . -mindepth 1 -maxdepth 1 -regex ".*\.\(patch\|diff\)$"); do
patches[$p]="$(basename ${patch})"
let p++
done
unset p
source+=(${source[@]} ${patches[@]})
fi
# Reset git tree and apply custom patches
prepare() {
cd "${srcdir}/${pkgname}"
git checkout ${_git_branch_d9vk}
git reset --hard ${_d9vk_commit} # Restore tracked files
git clean -d -x -f # Delete untracked files
# Apply patches, if present
if [[ $(ls "${srcdir}"/*.{patch,diff} 2>/dev/null | wc -w) -ne 0 ]]; then
# Apply all custom patches
msg2 "Applying custom patches..."
for i in "${srcdir}"/*.{patch,diff}; do
if [[ -f ${i} ]]; then
patch -Np1 < ${i}
fi
done
fi
}
##############################
pkgver() {
cd "$srcdir/${pkgname}"
git describe --long --tags --always | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g'
}
build() {
cd "$srcdir/${pkgname}"
./package-release.sh ${pkgver} build --no-package
}
package() {
mkdir -p "$pkgdir"/usr/share/dxvk/{x32,x64}
cd "$srcdir/${pkgname}"
install -m0644 build/dxvk-${pkgver}/x32/d3d9.dll "$pkgdir"/usr/share/dxvk/x32/d3d9.dll
install -m0644 build/dxvk-${pkgver}/x64/d3d9.dll "$pkgdir"/usr/share/dxvk/x64/d3d9.dll
install -m0755 build/dxvk-${pkgver}/setup_dxvk.sh "$pkgdir"/usr/share/dxvk/setup_d9vk.sh
mkdir "$pkgdir"/usr/bin
cd "$pkgdir"/usr/bin
ln -s /usr/share/dxvk/setup_d9vk.sh setup_d9vk
}

+ 8
- 1
arch/0-dxvk-git/PKGBUILD View File

@ -8,13 +8,20 @@ pkgname=dxvk-git
_pkgname=dxvk
pkgver=1.2.1.4
pkgrel=1
pkgdesc="A Vulkan-based compatibility layer for Direct3D 10/11 which allows running 3D applications on Linux using Wine."
pkgdesc="A Vulkan-based compatibility layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine."
url="https://github.com/doitsujin/dxvk"
license=('custom:zlib/libpng')
arch=('x86_64')
conflicts=(
'd9vk-bin'
'd9vk-mingw'
'd9vk-mingw-git'
'd9vk-winelib'
'd9vk-winelib-git'
'dxvk-bin'
'dxvk-winelib'
'dxvk-winelib-git'
'dxvk-legacy-git'
'dxvk-mingw-git'


+ 6
- 38
arch/updatewine_arch.sh View File

@ -1,6 +1,6 @@
#!/bin/env bash
# Set up Wine Staging + DXVK & D9VK on Arch Linux & Variants
# Set up Wine Staging + DXVK on Arch Linux & Variants
# Copyright (C) 2019 Pekka Helenius
#
# This program is free software: you can redistribute it and/or modify
@ -46,12 +46,10 @@ done
# variables!
#
git_commithash_dxvk=${params[0]}
git_commithash_d9vk=${params[1]}
git_commithash_wine=${params[4]}
git_commithash_wine=${params[3]}
git_branch_dxvk=${params[5]}
git_branch_d9vk=${params[6]}
git_branch_wine=${params[9]}
git_branch_dxvk=${params[4]}
git_branch_wine=${params[7]}
########################################################
@ -85,9 +83,6 @@ for check in ${args[@]}; do
--no-dxvk)
NO_DXVK=
;;
--no-d9vk)
NO_D9VK=
;;
--no-pol)
NO_POL=
;;
@ -105,7 +100,7 @@ function INFO_SEP() { printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' - ;
# If the script is interrupted (Ctrl+C/SIGINT), do the following
function Arch_intCleanup() {
rm -rf ${ARCH_BUILDROOT}/{0-wine-staging-git/{wine-patches,*.tar.xz},0-dxvk-git/{dxvk-git,*.tar.xz},0-d9vk-git/{d9vk-git,*.tar.xz}}
rm -rf ${ARCH_BUILDROOT}/{0-wine-staging-git/{wine-patches,*.tar.xz},0-dxvk-git/{dxvk-git,*.tar.xz}}
exit 0
}
@ -133,7 +128,6 @@ function checkFiles() {
local wine_files=('30-win32-aliases.conf' 'PKGBUILD')
local dxvk_files=('PKGBUILD')
local d9vk_files=('PKGBUILD')
function validatefiles() {
@ -158,10 +152,6 @@ function checkFiles() {
validatefiles "${dxvk_files[*]}" DXVK "${ARCH_BUILDROOT}/0-dxvk-git"
fi
if [[ ! -v NO_D9VK ]]; then
validatefiles "${d9vk_files[*]}" D9VK "${ARCH_BUILDROOT}/0-d9vk-git"
fi
}
###########################################################
@ -256,10 +246,9 @@ $(for o in ${ERRPKGS[@]}; do printf '%s\n' ${o}; done)\
function prepare_env() {
# Copy Wine, DXVK & D9VK patch files
# Copy Wine & DXVK patch files
cp -rf ${ARCH_BUILDROOT}/../wine_custom_patches ${ARCH_BUILDROOT}/0-wine-staging-git/wine-patches
cp -rf ${ARCH_BUILDROOT}/../dxvk_custom_patches ${ARCH_BUILDROOT}/0-dxvk-git/dxvk-patches
cp -rf ${ARCH_BUILDROOT}/../d9vk_custom_patches ${ARCH_BUILDROOT}/0-d9vk-git/d9vk-patches
# Create identifiable directory for this build
mkdir -p ${ARCH_BUILDROOT}/compiled_pkg/"${datedir}"
@ -433,13 +422,7 @@ function build_pkg() {
set_gitOverride "dxvk.git" "${git_commithash_dxvk}" ${pkgbuild_file}
sed -i "s/\(^_git_branch_dxvk=\).*/\1${git_branch_dxvk}/" ${pkgbuild_file}
sed -i "s/\(^_dxvk_commit=\).*/\1${git_commithash_dxvk}/" ${pkgbuild_file}
elif [[ ${pkgname} == d9vk ]]; then
set_gitOverride "d9vk.git" "${git_commithash_d9vk}" ${pkgbuild_file}
sed -i "s/\(^_git_branch_d9vk=\).*/\1${git_branch_d9vk}/" ${pkgbuild_file}
sed -i "s/\(^_d9vk_commit=\).*/\1${git_commithash_d9vk}/" ${pkgbuild_file}
fi
fi
if [[ $? -eq 0 ]]; then bash -c "updpkgsums && makepkg"; else exit 1; fi
@ -507,13 +490,6 @@ function updatePOL() {
fi
done
fi
if [[ ! -v NO_D9VK ]]; then
for wineprefix in $(find $HOME/.PlayOnLinux/wineprefix -mindepth 1 -maxdepth 1 -type d); do
if [[ -d ${wineprefix}/dosdevices ]]; then
WINEPREFIX=${wineprefix} setup_d9vk
fi
done
fi
}
##########################################################
@ -555,10 +531,6 @@ if [[ ! -v NO_DXVK ]]; then
checkDepends "0-dxvk-git" "dxvk-git" depends makedepends
fi
if [[ ! -v NO_D9VK ]]; then
checkDepends "0-d9vk-git" "d9vk-git" depends makedepends
fi
check_alldeps
#########################
@ -575,10 +547,6 @@ if [[ ! -v NO_DXVK ]]; then
build_pkg dxvk DXVK "0-dxvk-git" "${dxvk_wine_cleanlist[*]}" gitcheck
fi
if [[ ! -v NO_D9VK ]]; then
build_pkg d9vk D9VK "0-d9vk-git" "${dxvk_wine_cleanlist[*]}" gitcheck
fi
#########################
# Update user's PlayonLinux wine prefixes if needed


+ 0
- 10
d9vk_custom_patches/patch_remove_d3d10-11.patch View File

@ -1,10 +0,0 @@
--- a/setup_dxvk.sh
+++ b/setup_dxvk.sh
@@ -173,7 +173,3 @@
fi
$action d3d9
-$action d3d10
-$action d3d10_1
-$action d3d10core
-$action d3d11

+ 0
- 4
d9vk_custom_patches/put_your_d9vk_patches_here View File

@ -1,4 +0,0 @@
Put your custom D9VK patches here.
Valid file suffix formats are: .diff and .patch
These patches are applied during D9VK compilation

+ 0
- 0
d9vk_disabled_patches/put_disabled_d9vk_patches_here View File


+ 0
- 175
debian/dxvkroot/d9vk.debdata View File

@ -1,175 +0,0 @@
########################################################
# Common properties
pkg_name="d9vk-git"
pkg_license="custom --copyrightfile ../LICENSE"
pkg_maintainer="${USER} <${USER}@unknown>"
pkg_section="otherosfs"
pkg_priority="optional"
pkg_arch="all"
d9vk_relative_builddir="debian/source/dxvk-master"
pkg_commondesc="Vulkan-based D3D9 implementation for Linux / Wine"
pkg_longdesc="
A Vulkan-based translation layer for Direct3D 9 which
allows running 3D applications on Linux using Wine.
"
pkg_giturl="https://github.com/Joshua-Ashton/d9vk"
pkg_homeurl="https://github.com/Joshua-Ashton/d9vk"
pkg_gitbranch=${git_branch_d9vk}
git_commithash=${git_commithash_d9vk}
pkg_gitver="git describe --long --always | sed 's/\-[a-z].*//; s/\-/\./; s/[a-z]//g'"
pkg_installfile="./debian/install"
pkg_controlfile="./debian/control"
pkg_rulesfile="./debian/rules"
########################################################
# Debian rules file section
pkg_debrules="\
#!/usr/bin/make -f
%:
dh \$@
override_dh_auto_configure:
override_dh_usrlocal:
override_dh_install:
# Compile D9VK
bash ./package-release.sh master debian/source/ --no-package
# Tell deb builder to create D9VK x32 & x64 subfolders
for arch in 32 64; do mkdir -p ${d9vk_relative_builddir}/x${arch}; done
# Make a proper executable script folder for setup_d9vk.sh file
mkdir -p ${d9vk_relative_builddir}/bin
printf '%s\n%s' \"#!/bin/sh\" \"/usr/share/dxvk/setup_d9vk.sh\" > \"${d9vk_relative_builddir}/bin/setup_d9vk\"
chmod +x "${d9vk_relative_builddir}/bin/setup_d9vk"
mv ${d9vk_relative_builddir}/setup_dxvk.sh ${d9vk_relative_builddir}/setup_d9vk.sh
dh_install
"
########################################################
# Debian install file section
pkg_debinstall="\
${d9vk_relative_builddir}/setup_d9vk.sh usr/share/dxvk/
${d9vk_relative_builddir}/bin/* usr/bin/
$(for arch in 32 64; do echo -e ${d9vk_relative_builddir}/x${arch}/d3d9.dll usr/share/dxvk/x${arch}/; done)
"
########################################################
# Debian control file subfields
# Debian control file Overrides section
pkg_overrides=(
empty
)
# Debian control file Suggests section
pkg_suggests=(
empty
)
# Debian control file Conflicts section
pkg_conflicts=(
empty
)
# Debian control file Breaks section
pkg_breaks=(
empty
)
# Debian control file Replaces section
pkg_replaces=(
empty
)
# Debian control file Provides section
pkg_provides=(
empty
)
############################
# Build time dependencies
pkg_deps_build=(
#${_coredeps[*]}
'meson'
'glslang'
'gcc-mingw-w64-base'
#'binutils-common'
'mingw-w64-common'
'binutils-mingw-w64-x86-64'
'binutils-mingw-w64-i686'
'mingw-w64-x86-64-dev'
'gcc-mingw-w64-x86-64'
'g++-mingw-w64-x86-64'
'mingw-w64-i686-dev'
'gcc-mingw-w64-i686'
'g++-mingw-w64-i686'
)
# Runtime dependencies
pkg_deps_runtime=(
'wine'
)
# Extra fields for Debian control file Source section
pkg_extra_1=(
empty
)
# Extra fields for Debian control file Package section
pkg_extra_2=(
empty
)
############################
# Deb builder execution field
# Do not build either debug symbols or doc files
pkg_debbuilder="DEB_BUILD_OPTIONS=\"strip nodocs noddebs\" dpkg-buildpackage -us -uc -b -d --source-option=--include-binaries"
########################################################
# Contents of Debian control file
# This is a necessary variable setting for array loops below
IFS=$'\n'
pkg_debcontrol="\
Source: ${pkg_name}
Section: ${pkg_section}
Priority: ${pkg_priority}
Maintainer: ${pkg_maintainer}
Build-Depends: debhelper (>=9), $(if [[ ${pkg_deps_build[0]} != "empty" ]]; then \
for w in ${pkg_deps_build[@]}; do printf '%s, ' ${w}; done; fi)
Standards-Version: 4.1.3
Homepage: ${pkg_homeurl}
$(if [[ ${pkg_extra_1[0]} != "empty" ]]; then for w in ${pkg_extra_1[@]}; do echo ${w}; done ; fi)
Package: ${pkg_name}
Architecture: ${pkg_arch}
Depends: \${shlibs:Depends}, \${misc:Depends}, $(if [[ ${pkg_deps_runtime[0]} != "empty" ]]; then \
for w in ${pkg_deps_runtime[@]}; do printf '%s, ' ${w}; done; fi)
Description: ${pkg_commondesc}
$(echo -e ${pkg_longdesc} | sed 's/^/ /g; s/\n/\n /g')
$(if [[ ${pkg_extra_2[0]} != "empty" ]]; then for w in ${pkg_extra_2[@]}; do echo ${w}; done ; fi)
$(if [[ ${pkg_suggests[0]} != "empty" ]]; then echo "Suggests: $(echo ${_kg_suggests[*]} | sed 's/\s/, /g')"; fi)
$(if [[ ${pkg_conflicts[0]} != "empty" ]]; then echo "Conflicts: $(echo ${pkg_overrides[*]} | sed 's/\s/, /g')"; fi)
$(if [[ ${pkg_breaks[0]} != "empty" ]]; then echo "Breaks: $(echo ${pkg_overrides[*]} | sed 's/\s/, /g')"; fi)
$(if [[ ${pkg_replaces[0]} != "empty" ]]; then echo "Replaces: $(echo ${pkg_overrides[*]} | sed 's/\s/, /g')"; fi)
$(if [[ ${pkg_provides[0]} != "empty" ]]; then echo "Provides: $(echo ${pkg_overrides[*]} | sed 's/\s/, /g')"; fi)
"
unset IFS

+ 2
- 2
debian/dxvkroot/dxvk.debdata View File

@ -10,7 +10,7 @@ pkg_arch="all"
dxvk_relative_builddir="debian/source/dxvk-master"
pkg_commondesc="Vulkan-based D3D11 and D3D10 implementation for Linux / Wine"
pkg_commondesc="Vulkan-based D3D11, D3D10 & D3D9 implementation for Linux / Wine"
pkg_longdesc="
A Vulkan-based translation layer for Direct3D 10/11 which
allows running 3D applications on Linux using Wine.
@ -80,7 +80,7 @@ empty
# Debian control file Conflicts section
pkg_conflicts=(
empty
d9vk-git
)
# Debian control file Breaks section


+ 11
- 24
debian/dxvkroot/dxvkbuild.sh View File

@ -1,6 +1,6 @@
#!/bin/env bash
# Compile DXVK & D9VK git on Debian/Ubuntu/Mint and variants
# Compile DXVK git on Debian/Ubuntu/Mint and variants
# Copyright (C) 2019 Pekka Helenius
#
# This program is free software: you can redistribute it and/or modify
@ -46,14 +46,12 @@ done
# variables!
#
git_commithash_dxvk=${params[0]}
git_commithash_d9vk=${params[1]}
git_commithash_glslang=${params[2]}
git_commithash_meson=${params[3]}
git_commithash_glslang=${params[1]}
git_commithash_meson=${params[2]}
git_branch_dxvk=${params[5]}
git_branch_d9vk=${params[6]}
git_branch_glslang=${params[7]}
git_branch_meson=${params[8]}
git_branch_dxvk=${params[3]}
git_branch_glslang=${params[5]}
git_branch_meson=${params[6]}
########################################################
@ -85,9 +83,6 @@ for check in ${args[@]}; do
--no-dxvk)
NO_DXVK=
;;
--no-d9vk)
NO_D9VK=
;;
esac
done
@ -108,7 +103,7 @@ known_wines=(
'wine-staging-git'
)
# Alternative remote dependency packages for Debian distributions which offer too old packages for DXVK/D9VK
# Alternative remote dependency packages for Debian distributions which offer too old packages for DXVK
#
# Left side: <package name in repositories>,<version_number>
# Right side: package alternative source URL
@ -142,7 +137,7 @@ alternatives=(
[i686-w64-mingw32-g++]="i686-w64-mingw32-g++-posix"
)
# Temporary symbolic links for DXVK & D9VK compilation
# Temporary symbolic links for DXVK compilation
#
typeset -A tempLinks
tempLinks=(
@ -171,8 +166,8 @@ function runtimeCheck() {
done
if [[ -z ${pkglist[*]} ]]; then
echo -e "\e[1mWARNING:\e[0m Not installing DXVK/D9VK because \e[1m${pkgreq_name}\e[0m is missing on your system.\n\
${pkgreq_name} should be installed in order to use DXVK/D9VK. Just compiling DXVK/D9VK for later use.\n"
echo -e "\e[1mWARNING:\e[0m Not installing DXVK because \e[1m${pkgreq_name}\e[0m is missing on your system.\n\
${pkgreq_name} should be installed in order to use DXVK. Just compiling DXVK for later use.\n"
# Do this check separately so we can warn about all missing runtime dependencies above
if [[ ! -v NO_INSTALL ]]; then
@ -188,7 +183,7 @@ ${pkgreq_name} should be installed in order to use DXVK/D9VK. Just compiling DXV
# If the script is interrupted (Ctrl+C/SIGINT), do the following
function DXVK_intCleanup() {
rm -rf ${DXVKROOT}/{dxvk-git,d9vk-git,meson,glslang,*.deb}
rm -rf ${DXVKROOT}/{dxvk-git,meson,glslang,*.deb}
rm -rf ${DXVKROOT}/../compiled_deb/"${datedir}"
exit 0
}
@ -624,9 +619,6 @@ function compile_and_install_deb() {
if [[ "${_pkg_name}" == *"dxvk"* ]]; then
dxvk_install_custom "dxvk_custom_patches"
fi
if [[ "${_pkg_name}" == *"d9vk"* ]]; then
dxvk_install_custom "d9vk_custom_patches"
fi
pkg_debianbuild
@ -746,10 +738,5 @@ if [[ ! -v NO_DXVK ]]; then
pkg_install_main "${DXVKROOT}/dxvk.debdata"
fi
if [[ ! -v NO_D9VK ]]; then
# D9VK - compile (& install)
pkg_install_main "${DXVKROOT}/d9vk.debdata"
fi
# Clean buildtime dependencies
buildpkg_removal

+ 9
- 13
debian/updatewine_debian.sh View File

@ -75,9 +75,6 @@ for check in ${args[@]}; do
--no-dxvk)
NO_DXVK=
;;
--no-d9vk)
NO_D9VK=
;;
--no-pol)
NO_POL=
;;
@ -142,7 +139,7 @@ Using $(nproc --ignore 1) of $(nproc) available CPU cores for Wine source code c
function dxvk_install_main() {
echo -e "Starting compilation & installation of DXVK/D9VK\n\n\
echo -e "Starting compilation & installation of DXVK\n\n\
This can take up to 10-20 minutes depending on how many dependencies we need to build for it.\n"
bash -c "cd ${ROOTDIR}/dxvkroot && bash dxvkbuild.sh \"${datedir}\" \"${params[*]}\""
@ -176,8 +173,7 @@ function mainQuestions() {
installed and the following packages may be compiled from source (depending on your choises):\n\n\
\t- Wine/Wine Staging (latest git version)\n\
\t- DXVK (latest git version)\n\
\t- D9VK (latest git version)\n\
\t- meson & glslang (latest git versions; these are build time dependencies for DXVK & D9VK)\n\n\
\t- meson & glslang (latest git versions; these are build time dependencies for DXVK)\n\n\
Do you want to continue? [Y/n]"
questionresponse
@ -201,8 +197,8 @@ Do you want to continue? [Y/n]"
####################
# This question is relevant only if DXVK or D9VK stuff is compiled
if [[ ! -v NO_DXVK ]] || [[ ! -v NO_D9VK ]]; then
# This question is relevant only if DXVK stuff is compiled
if [[ ! -v NO_DXVK ]]; then
INFO_SEP
echo -e "\e[1mQUESTION:\e[0m Update existing dependencies?\n\nIn a case you have old build time dependencies on your system, do you want to update them?\n\
@ -245,8 +241,8 @@ function coredeps_check() {
########################################################
# If either Wine, DXVK or D9VK is to be compiled
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]] || [[ ! -v NO_D9VK ]]; then
# If either Wine, DXVK is to be compiled
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]]; then
mainQuestions
coredeps_check
fi
@ -262,11 +258,11 @@ fi
####################
# If DXVK or D9VK is going to be installed, then
if [[ ! -v NO_DXVK ]] || [[ ! -v NO_D9VK ]]; then
# If DXVK is going to be installed, then
if [[ ! -v NO_DXVK ]]; then
dxvk_install_main
else
echo -e "Skipping DXVK/D9VK build$(if [[ ! -v NO_INSTALL ]]; then printf " & installation"; fi) process.\n"
echo -e "Skipping DXVK build$(if [[ ! -v NO_INSTALL ]]; then printf " & installation"; fi) process.\n"
fi
####################


+ 4
- 22
debian_cleanup_devpkgs.sh View File

@ -1,4 +1,4 @@
# Uninstall Wine-Staging, DXVK, D9VK, meson & glslang buildtime deps on Debian
# Uninstall Wine-Staging, DXVK, meson & glslang buildtime deps on Debian
# Copyright (C) 2018 Pekka Helenius
#
# This program is free software: you can redistribute it and/or modify
@ -148,24 +148,6 @@ dxvk_deps=(
'g++-mingw-w64-i686'
)
d9vk_deps=(
'meson'
'glslang'
'gcc-mingw-w64-base'
#'binutils-common'
'mingw-w64-common'
'binutils-mingw-w64-x86-64'
'binutils-mingw-w64-i686'
'mingw-w64-x86-64-dev'
'gcc-mingw-w64-x86-64'
'g++-mingw-w64-x86-64'
'mingw-w64-i686-dev'
'gcc-mingw-w64-i686'
'g++-mingw-w64-i686'
)
wine_deps_noremove=(
'gcc-multilib'
'g++-multilib'
@ -194,10 +176,10 @@ core_deps_noremove=(
'make' 'cmake' 'gcc' 'git' 'build-essential' 'fakeroot'
)
removals_name=('Meson' 'Wine Staging' 'DXVK' 'D9VK')
removals=('${meson_deps[*]}' '${wine_deps[*]}' '${dxvk_deps[*]}' '${d9vk_deps[*]}')
removals_name=('Meson' 'Wine Staging' 'DXVK')
removals=('${meson_deps[*]}' '${wine_deps[*]}' '${dxvk_deps[*]}')
echo -e "This script removes any development/build time dependencies related to Wine, DXVK & D9VK\n"
echo -e "This script removes any development/build time dependencies related to Wine & DXVK\n"
i=0
for k in ${removals[*]}; do


+ 8
- 18
updatewine.sh View File

@ -1,6 +1,6 @@
#!/bin/env bash
# DXVK/D9VK/Wine-Staging scripts dispatcher for various Linux distributions
# DXVK/Wine-Staging scripts dispatcher for various Linux distributions
# Copyright (C) 2019 Pekka Helenius
#
# This program is free software: you can redistribute it and/or modify
@ -34,7 +34,7 @@ fi
# Just a title & author for this script, used in initialization and help page
SCRIPT_TITLE="\e[1mWine/Wine Staging, DXVK & D9VK package builder & auto-installer\e[0m"
SCRIPT_TITLE="\e[1mWine/Wine Staging & DXVK package builder & auto-installer\e[0m"
SCRIPT_AUTHOR="Pekka Helenius (~Fincer), 2019"
########################################################
@ -51,9 +51,6 @@ SCRIPT_AUTHOR="Pekka Helenius (~Fincer), 2019"
git_commithash_dxvk=HEAD
git_branch_dxvk=master
git_commithash_d9vk=HEAD
git_branch_d9vk=master
git_commithash_wine=HEAD
git_branch_wine=master
@ -157,10 +154,6 @@ for arg in ${@}; do
# Skip DXVK build & installation process all together
NO_DXVK=
;;
--no-d9vk)
# Skip D9VK build & installation process all together
NO_D9VK=
;;
--no-pol)
# Skip PlayOnLinux Wine prefixes update process
;;
@ -169,9 +162,8 @@ for arg in ${@}; do
\
${SCRIPT_TITLE} by ${SCRIPT_AUTHOR}\n\n\
Usage:\n\nbash updatewine.sh\n\nArguments:\n\n\
--no-install\tDo not install Wine, DXVK or D9VK. Just compile them. Wine, meson & glslang must be installed for DXVK & D9VK compilation.\n\
--no-install\tDo not install Wine or DXVK. Just compile them. Wine, meson & glslang must be installed for DXVK compilation.\n\
--no-dxvk\tDo not compile or install DXVK\n\
--no-d9vk\tDo not compile or install D9VK\n\
--no-pol\tDo not update PlayOnLinux Wine prefixes\n\n\
--no-staging\tCompile Wine instead of Wine Staging\n\
--no-wine\tDo not compile or install Wine/Wine Staging\n\n\
@ -200,7 +192,6 @@ datesuffix=$(echo $(date '+%Y-%m-%d-%H%M%S'))
githash_overrides=(
"${git_commithash_dxvk}"
"${git_commithash_d9vk}"
"${git_commithash_glslang}"
"${git_commithash_meson}"
"${git_commithash_wine}"
@ -211,7 +202,6 @@ githash_overrides=(
gitbranch_overrides=(
"${git_branch_dxvk}"
"${git_branch_d9vk}"
"${git_branch_glslang}"
"${git_branch_meson}"
"${git_branch_wine}"
@ -268,7 +258,7 @@ Do you really want to continue? [Y/n]"
local MSG_RAM="\e[1mWARNING:\e[0m Not sufficient RAM available\n\nCompilation processes will likely fail.\n\
The script strongly recommends ~\e[1m${REC_RAM} MB\e[0m at least to compile software successfully but you have only\n\
\e[1m${AVAIL_RAM} MB\e[0m left on the computer the script is currently placed at.\n\n\
Be aware that the script process may fail because of this, especially while compiling DXVK & D9VK.\n\n\
Be aware that the script process may fail because of this, especially while compiling DXVK.\n\n\
Do you really want to continue? [Y/n]"
function reqs_property() {
@ -300,7 +290,7 @@ Do you really want to continue? [Y/n]"
}
reqs_property "${AVAIL_SPACE}" "${REC_SPACE}" "${MSG_SPACE}" "NO_WINE"
reqs_property "${AVAIL_RAM}" "${REC_RAM}" "${MSG_RAM}" "NO_DXVK NO_D9VK"
reqs_property "${AVAIL_RAM}" "${REC_RAM}" "${MSG_RAM}" "NO_DXVK"
}
###########################################################
@ -371,7 +361,7 @@ function determineDistroFamily() {
esac
}
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]] || [[ ! -v NO_D9VK ]]; then
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]]; then
echo -e "\n${SCRIPT_TITLE}\n\nBuild identifier:\t${datesuffix}\n"
else
echo ""
@ -384,11 +374,11 @@ fi
determineDistroFamily
INFO_SEP
echo -e "\e[1mNOTE: \e[0mDXVK/D9VK requires very latest Nvidia/AMD drivers to work.\nMake sure these drivers are available on your Linux distribution.\n\
echo -e "\e[1mNOTE: \e[0mDXVK requires very latest Nvidia/AMD drivers to work.\nMake sure these drivers are available on your Linux distribution.\n\
This script comes with GPU driver installation scripts for Debian-based Linux distributions.\n"
INFO_SEP
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]] || [[ ! -v NO_D9VK ]]; then
if [[ ! -v NO_WINE ]] || [[ ! -v NO_DXVK ]]; then
reqsCheck
sudoQuestion
echo ""


Loading…
Cancel
Save