commit 232a79f278b9e783dfdc55c1079b6fb5e4879a5f Author: Fincer Date: Wed Aug 15 02:14:57 2018 +0300 Initial commit diff --git a/0-dxvk-git/PKGBUILD b/0-dxvk-git/PKGBUILD new file mode 100644 index 0000000..7b4f5a3 --- /dev/null +++ b/0-dxvk-git/PKGBUILD @@ -0,0 +1,49 @@ +# Maintainer: AdriƠ Cereto i MassaguƩ + +pkgname=dxvk-git +pkgver=20180814.e5eb155 +pkgrel=1 +pkgdesc="A Vulkan-based compatibility layer for Direct3D 11 which allows running 3D applications on Linux using Wine." +arch=('x86_64') +url="https://github.com/doitsujin/dxvk" +license=('zlib/libpng') +depends=('vulkan-icd-loader') +makedepends=('ninja' 'meson>=0.43' 'glslang' 'mingw-w64-gcc' 'git') +provides=("dxvk") +conflicts=("dxvk-bin") +options=(!strip !buildflags staticlibs) +source=($pkgname::"git+https://github.com/doitsujin/dxvk.git" +patch_nowine.patch) +#patch_revert-attribute_divisor.patch) +md5sums=('SKIP' + 'e44502b2fc7e2db2db0090f779531189') + +pkgver() { + cd "$pkgname" + git log -1 --format=%cd.%h --date=short|tr -d - +} + +prepare() { + cd "$pkgname" + patch -p1 < ../patch_nowine.patch + #patch -p1 -R < ../patch_revert-attribute_divisor.patch +} + +build() { + "$pkgname"/package-release.sh $pkgver $PWD --no-package +} + +package() { + mkdir -p "$pkgdir/usr/share/dxvk" + cp -rv dxvk-$pkgver/* "$pkgdir/usr/share/dxvk" + if [ ! -f "$pkgdir"/usr/share/dxvk/x64/d3d11.dll ] ||\ + [ ! -f "$pkgdir"/usr/share/dxvk/x64/dxgi.dll ] ||\ + [ ! -f "$pkgdir"/usr/share/dxvk/x32/d3d11.dll ] ||\ + [ ! -f "$pkgdir"/usr/share/dxvk/x32/dxgi.dll ]; then + echo "Missing files, build was unsuccessful" + return 1 + fi + mkdir -p "$pkgdir/usr/bin" + ln -s "/usr/share/dxvk/x32/setup_dxvk.sh" "$pkgdir/usr/bin/setup_dxvk32" + ln -s "/usr/share/dxvk/x64/setup_dxvk.sh" "$pkgdir/usr/bin/setup_dxvk64" +} diff --git a/0-dxvk-git/patch_nowine.patch b/0-dxvk-git/patch_nowine.patch new file mode 100644 index 0000000..33fea96 --- /dev/null +++ b/0-dxvk-git/patch_nowine.patch @@ -0,0 +1,42 @@ +--- a/build-win32.txt ++++ b/build-win32.txt +@@ -3,7 +3,6 @@ + cpp = 'i686-w64-mingw32-g++' + ar = 'i686-w64-mingw32-ar' + strip = 'i686-w64-mingw32-strip' +-exe_wrapper = 'wine' + + [properties] + c_link_args = ['-static', '-static-libgcc'] +--- a/build-win64.txt ++++ b/build-win64.txt +@@ -3,7 +3,6 @@ + cpp = 'x86_64-w64-mingw32-g++' + ar = 'x86_64-w64-mingw32-ar' + strip = 'x86_64-w64-mingw32-strip' +-exe_wrapper = 'wine' + + [properties] + c_link_args = ['-static', '-static-libgcc'] +--- a/package-release.sh ++++ b/package-release.sh +@@ -11,9 +11,6 @@ + DXVK_ARCHIVE_PATH=$(realpath "$2")"/dxvk-$DXVK_VERSION.tar.gz" + + function build_arch { +- export WINEARCH="win$1" +- export WINEPREFIX="$DXVK_BUILD_DIR/wine.$1" +- + cd "$DXVK_SRC_DIR" + + meson --cross-file "$DXVK_SRC_DIR/build-win$1.txt" \ +@@ -31,8 +28,7 @@ + cp "$DXVK_BUILD_DIR/install.$1/bin/d3d11.dll" "$DXVK_BUILD_DIR/x$1/d3d11.dll" + cp "$DXVK_BUILD_DIR/install.$1/bin/dxgi.dll" "$DXVK_BUILD_DIR/x$1/dxgi.dll" + cp "$DXVK_BUILD_DIR/install.$1/bin/setup_dxvk.sh" "$DXVK_BUILD_DIR/x$1/setup_dxvk.sh" +- +- rm -R "$DXVK_BUILD_DIR/wine.$1" ++ + rm -R "$DXVK_BUILD_DIR/build.$1" + rm -R "$DXVK_BUILD_DIR/install.$1" + } diff --git a/0-wine-staging-git/30-win32-aliases.conf b/0-wine-staging-git/30-win32-aliases.conf new file mode 100644 index 0000000..99ae1f7 --- /dev/null +++ b/0-wine-staging-git/30-win32-aliases.conf @@ -0,0 +1,20 @@ + + + + + MS Shell Dlg + Microsoft Sans Serif + sans-serif + + + MS Shell Dlg 2 + Tahoma + sans-serif + + + + MS Sans Serif + Microsoft Sans Serif + sans-serif + + diff --git a/0-wine-staging-git/PKGBUILD b/0-wine-staging-git/PKGBUILD new file mode 100644 index 0000000..60bf1af --- /dev/null +++ b/0-wine-staging-git/PKGBUILD @@ -0,0 +1,324 @@ +# Maintainer: Daniel Bermond < yahoo-com: danielbermond > +# Contributor: Pekka Helenius (~ Fincer) + +# Enable Wine Staging? 1 = yes +enable_staging=1 + +# Staging patchsets. Default: all patchsets. Please see Wine Staging patchinstall.sh file for individual patchset names. +staging_patchsets=(--all) # In order to disable all patchsets, use #(--all) and add desired patchsets individually here + +# Enable 32-bit compilation? 1 = yes +enable_32=1 + +# Enable 64-bit compilation? 1 = yes +enable_64=1 + +provides=('wine' 'wine-git' 'wine-staging' 'wine-staging-git' 'wine-staging-dxvk-git') + +if [[ enable_staging -eq 1 ]]; then + pkgname=wine-staging-git + pkgdesc="A compatibility layer for running Windows programs (staging branch, Git version)" + url="https://github.com/wine-staging/wine-staging/" + conflicts=('wine' 'wine-git' 'wine-staging') +else + pkgname=wine-git + pkgdesc="A compatibility layer for running Windows programs (Git version)" + url="https://source.winehq.org/git/wine.git/" + conflicts=('wine' 'wine-staging' 'wine-staging-git') + +fi + +pkgver=stg.3.13.1.r11.g39cafb1d+wine.wine.3.13.r0.g25cc380b8e +pkgrel=1 +arch=('i686' 'x86_64') + +license=('LGPL') +_depends=( + 'attr' 'lib32-attr' + 'fontconfig' 'lib32-fontconfig' + 'lcms2' 'lib32-lcms2' + 'libxml2' 'lib32-libxml2' + 'libxcursor' 'lib32-libxcursor' + 'libxrandr' 'lib32-libxrandr' + 'libxdamage' 'lib32-libxdamage' + 'libxi' 'lib32-libxi' + 'gettext' 'lib32-gettext' + 'freetype2' 'lib32-freetype2' + 'glu' 'lib32-glu' + 'libsm' 'lib32-libsm' + 'gcc-libs' 'lib32-gcc-libs' + 'libpcap' 'lib32-libpcap' + 'desktop-file-utils' + 'vulkan-icd-loader' 'lib32-vulkan-icd-loader' +) +makedepends=( + 'git' + 'autoconf' + 'ncurses' + 'bison' + 'perl' + #'fontforge' + 'flex' + 'gcc>=4.5.0-2' + 'giflib' 'lib32-giflib' + 'libpng' 'lib32-libpng' + 'gnutls' 'lib32-gnutls' + 'libxinerama' 'lib32-libxinerama' + 'libxcomposite' 'lib32-libxcomposite' + 'libxmu' 'lib32-libxmu' + 'libxxf86vm' 'lib32-libxxf86vm' + 'libldap' 'lib32-libldap' + 'mpg123' 'lib32-mpg123' + 'openal' 'lib32-openal' + 'v4l-utils' 'lib32-v4l-utils' + 'alsa-lib' 'lib32-alsa-lib' + 'libxcomposite' 'lib32-libxcomposite' + 'mesa' 'lib32-mesa' + 'libgl' 'lib32-libgl' + 'opencl-icd-loader' 'lib32-opencl-icd-loader' + 'libxslt' 'lib32-libxslt' + 'libpulse' 'lib32-libpulse' + 'libva' 'lib32-libva' + 'gst-plugins-base-libs' 'lib32-gst-plugins-base-libs' + 'samba' + #'opencl-headers' + #'gcc-multilib>=4.5.0-2' +) +optdepends=( + 'giflib' 'lib32-giflib' + 'libpng' 'lib32-libpng' + 'libldap' 'lib32-libldap' + 'gnutls' 'lib32-gnutls' + 'mpg123' 'lib32-mpg123' + 'openal' 'lib32-openal' + 'v4l-utils' 'lib32-v4l-utils' + 'libpulse' 'lib32-libpulse' + 'alsa-plugins' 'lib32-alsa-plugins' + 'alsa-lib' 'lib32-alsa-lib' + 'libjpeg-turbo' 'lib32-libjpeg-turbo' + 'libxcomposite' 'lib32-libxcomposite' + 'libxinerama' 'lib32-libxinerama' + 'ncurses' 'lib32-ncurses' + 'opencl-icd-loader' 'lib32-opencl-icd-loader' + 'libxslt' 'lib32-libxslt' + 'libtxc_dxtn' 'lib32-libtxc_dxtn' + 'libva' 'lib32-libva' + 'gst-plugins-base-libs' 'lib32-gst-plugins-base-libs' + 'vulkan-icd-loader' 'lib32-vulkan-icd-loader' + 'cups' + 'samba' + 'dosbox' +) +# lib32-libtxc_dxtn +# 'gtk3' 'lib32-gtk3' +options=('staticlibs') + +source=(wine-git::'git://source.winehq.org/git/wine.git' + '30-win32-aliases.conf' + ) + +if [[ $(find ./custom_patches -mindepth 1 -maxdepth 1 -name "*.patch") ]]; then + cp ./custom_patches/*.patch ./ + let p=0 + for patch in $(find . -mindepth 1 -maxdepth 1 -name "*.patch"); do + patches[$p]="$(basename ${patch})" + let p++ + done + unset p + source+=(${source[@]} ${patches[@]}) +fi + +if [[ enable_staging -eq 1 ]]; then + stagingsrc=wine-staging-git::'git://github.com/wine-staging/wine-staging.git' + source+=($stagingsrc) +fi + +if [[ "$CARCH" == "i686" ]]; then + # Strip lib32 etc. on i686 + _depends=(${_depends[@]/*32-*/}) + makedepends=(${makedepends[@]/*32-*/} ${_depends[@]}) + makedepends=(${makedepends[@]/*-multilib*/}) + optdepends=(${optdepends[@]/*32-*/}) +else + makedepends=(${makedepends[@]} ${_depends[@]}) +fi + +pkgver() { + + msg2 "Setting Wine versions..." + if [[ enable_staging -eq 1 ]]; then + cd "${srcdir}/wine-staging-git" + _staging_tag="$(git tag | sort -Vr | head -n1 | sed 's/-/./g;s/^v//')" + _staging_version="stg.$(git describe --long \ + | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/^v//' \ + | sed "s/^latest.release/${_staging_tag}/")" + fi + + cd "${srcdir}/wine-git" + _wine_version="wine.$(git describe --long | sed 's/\([^-]*-g\)/r\1/;s/-/./g')" + + if [[ enable_staging -eq 1 ]]; then + printf "%s+%s" "$_staging_version" "$_wine_version" + else + printf "%s" "$_wine_version" + fi +} + +prepare() { + + if [[ enable_staging -eq 1 ]]; then + cd "$srcdir"/wine-git + + msg2 "Cleaning the wine source code tree..." + + # Restore the wine tree to its git origin state, without wine-staging patches + #+(necessary for reapllying wine-staging patches in succedent builds, + #+otherwise the patches will fail to be reapplied) + git reset --hard HEAD # Restore tracked files + git clean -d -x -f # Delete untracked files + + # Change back to the wine upstream commit that this version of wine-staging is based in + git checkout $(../"$pkgname"/patches/patchinstall.sh --upstream-commit) + fi +} + +build() { + cd "${srcdir}" + + # Delete old build dirs (from previous builds) and make new ones + rm -rf "$pkgname"-{32,64}-build + mkdir --parents "$pkgname"-32-build + + if [[ enable_staging -eq 1 ]]; then + # Apply all wine-staging patches + msg2 "Applying wine-staging patches..." + ./wine-staging-git/patches/patchinstall.sh DESTDIR="${srcdir}/wine-git" \ + ${staging_patchsets[*]} + fi + + # Apply all custom patches + msg2 "Applying custom patches..." + + cd "${srcdir}"/wine-git + for i in $srcdir/*.patch + do + patch -Np1 < $i + done + + cd "${srcdir}" + + # Build wine 64-bit + #+(according to the wine wiki this 64-bit/32-bit building order is mandatory) + + if [[ "$CARCH" = "x86_64" ]] && [[ enable_64 -eq 1 ]]; then + msg2 "Building Wine-64..." + + mkdir --parents "$pkgname"-64-build + cd "$pkgname"-64-build + + ../wine-git/configure \ + --with-x \ + --with-gstreamer \ + --enable-win64 \ + --with-xattr \ + --disable-mscoree \ + --with-vulkan \ + --prefix=/usr \ + --libdir=/usr/lib + make + + _wine32opts=( + --libdir=/usr/lib32 + --with-wine64="${srcdir}/${pkgname}-64-build" + ) + + export PKG_CONFIG_PATH="/usr/lib32/pkgconfig" + fi + + # Build wine 32-bit + + if [[ enable_32 -eq 1 ]]; then + msg2 "Building Wine-32..." + + cd "$srcdir"/"$pkgname"-32-build + + ../wine-git/configure \ + --with-x \ + --with-gstreamer \ + --with-xattr \ + --disable-mscoree \ + --with-vulkan \ + "${_wine32opts[@]}" \ + --prefix=/usr + make + fi + + if [[ ! enable_32 -eq 1 ]] && [[ ! enable_64 -eq 1 ]]; then + msg2 "You must define at least one architecture in PKGBUILD! Aborting" + exit 1 + fi +} + +package() { + depends=(${_depends[@]}) + + # Package wine 32-bit + #+(according to the wine wiki this reverse 32-bit/64-bit packaging order is important) + + if [[ $enable_32 -eq 1 ]]; then + + msg2 "Packaging Wine-32..." + + cd "$srcdir"/"$pkgname"-32-build + + if [ "$CARCH" = "i686" ]; then + + make prefix="$pkgdir/usr" install + + else + make prefix="${pkgdir}/usr" \ + libdir="${pkgdir}/usr/lib32" \ + dlldir="${pkgdir}/usr/lib32/wine" install + fi + fi + + # Package wine 64-bit + + if [[ "$CARCH" == "x86_64" ]] && [[ enable_64 -eq 1 ]]; then + msg2 "Packaging Wine-64..." + + cd "$srcdir"/"$pkgname"-64-build + + make prefix="${pkgdir}/usr" \ + libdir="${pkgdir}/usr/lib" \ + dlldir="${pkgdir}/usr/lib/wine" install + + if [[ enable_dxvk -eq 1 ]]; then + mv "$srcdir"/dxvk-compiled/x64/{d3d11.dll,dxgi.dll} "${pkgdir}/usr/lib/wine/fakedlls/" + chmod 644 "${pkgdir}/usr/lib/wine/fakedlls/"{d3d11.dll,dxgi.dll} + mv "$srcdir"/dxvk-compiled/x32/{d3d11.dll,dxgi.dll} "${pkgdir}/usr/lib32/wine/fakedlls/" + chmod 644 "${pkgdir}/usr/lib32/wine/fakedlls/"{d3d11.dll,dxgi.dll} + fi + + fi + + # Font aliasing settings for Win32 applications + install -d "$pkgdir"/etc/fonts/conf.{avail,d} + install -m644 "${srcdir}/30-win32-aliases.conf" "${pkgdir}/etc/fonts/conf.avail" + ln -s ../conf.avail/30-win32-aliases.conf "${pkgdir}/etc/fonts/conf.d/30-win32-aliases.conf" +} +md5sums=('SKIP' + '1ff4e467f59409272088d92173a0f801' + 'SKIP' + '1ff4e467f59409272088d92173a0f801' + '4228291253f5e94b793e5b0e6acab6a1' + '16f24605c2f46404e4db1c89dbf307a6' + '69169c9d32f51ec7af98570061261a2d' + 'c11dfdfda50dc4c05d2f7ef8eef01e70' + '958fcdea1a455786a22e09a6afc0adaf' + '711c39eeb131ff30e2bfb68ea27d4040' + '3474c0d9e65cefc223c0a43cd5b21ce1' + 'f58a4e17b33bd96ce0d6e8325cad7f76' + '18e99ddef0c5ae3bd1b03781ffb1d614' + 'e833694fa978a26ad3254d43ca6127e1' + 'SKIP') diff --git a/0-wine-staging-git/custom_patches/put_your_wine_patches_here b/0-wine-staging-git/custom_patches/put_your_wine_patches_here new file mode 100644 index 0000000..e69de29 diff --git a/0-wine-staging-git/disabled_patches/put_disabled_wine_patches_here b/0-wine-staging-git/disabled_patches/put_disabled_wine_patches_here new file mode 100644 index 0000000..e69de29 diff --git a/updatewine.sh b/updatewine.sh new file mode 100755 index 0000000..89c50f4 --- /dev/null +++ b/updatewine.sh @@ -0,0 +1,305 @@ +#!/bin/bash + +# getsource - Simple script to set up Wine Staging + DXVK for PoL wineprefixes +# Copyright (C) 2018 Pekka Helenius +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +########################################################### + +# Your system username (who has PoL profile // existing Wine prefixes) +# Get it by running 'whoami' +USER=fincer + +########################################################### + +# REQUIREMENTS: + +# - Arch Linux or equivalent (uses pacman) +# +# - Existing PlayonLinux package installation and $HOME/.PlayOnLinux folder +# with all relevant subfolders +# +# - git, sudo, pwd...etc. +# +# - dxvk-git and wine-staging-git package dependencies installed +# (see PKGBUILD files ./PKGBUILD and ./0-dxvk-git/PKGBUILD for details) +# +# - Internet connection +# +# - GPU Vulkan support and the most recent Nvidia/AMD drivers + +########################################################### + +# Usage + +# Run with sudo +# +# # sudo bash ./updatewine.sh +# +# NOTE: All commands are executed as user (defined above). +# Only commands which require root permissions are ones +# which install packages wine-staging-git and dxvk into +# your system + +# All regular user commands have prefix 'cmd' below + +# Switches: +# +# --refresh +# +# Check for new Staging/DXVK releases, update PoL Wine prefixes if needed +# Does a comparison between local & remote git repos +# +# --check +# +# Check for new Staging/DXVK releases +# Does a comparison between local & remote git repos +# +# --force +# +# Force Wine Staging & DXVK installation +# + +########################################################### + +# Get current date +CURDATE=$(date "+%d-%m-%Y %H:%M:%S") + +# This variable value is automatically generated. DO NOT CHANGE. +LASTUPDATE= + +# This variable value is automatically generated. DO NOT CHANGE. +WINE_VERSION= + +########################################################### + +# Switches + +if [[ "${1}" == "--refresh" ]]; then + WINE_INSTALL= + CHECK= +fi + +if [[ "${1}" == "--check" ]]; then + CHECK= +fi + +if [[ "${1}" == "--force" ]] || [[ $WINE_VERSION == "" ]] || [[ $LASTUPDATE == "" ]]; then + WINE_INSTALL= + FORCE_INSTALL= +fi + +########################################################### + +if [[ $UID -ne 0 ]]; then + echo "Run as root or sudo" + exit 1 +fi + +echo -e "\nLast update: $LASTUPDATE\n" + +ORG_CURDIR=$(pwd) + +cmd() { + sudo -u $USER bash -c "${*}" +} + +########################################################### +# Check for existing PoL user folder + +if [[ ! -d /home/$USER/.PlayOnLinux ]]; then + echo "No existing PlayonLinux profiles in $USER's home folder. Aborting" + exit 1 +fi + +########################################################### +# Check internet connection + +function netCheck() { + if [[ $(echo $(wget --delete-after -q -T 5 github.com -o -)$?) -ne 0 ]]; then + echo -e "\nInternet connection failed (GitHub). Please check your connection and try again.\n" + exit 1 + fi +} + +########################################################### +# Local/Remote git comparisons + +function gitCheck() { + + netCheck + + if [[ -v $FORCE_INSTALL ]]; then + NEEDSBUILD=1 + return 0 + fi + + if [[ ! -d "${1}" ]]; then + NEEDSBUILD=1 + return 1 + fi + + echo -e "=> Checking ${2} GIT for changes\n" + + local CURDIR="${PWD}" + cd "${1}" + local LOCAL_GIT=$(git rev-parse @) + local REMOTE_GIT=$(git ls-remote origin -h refs/heads/master | awk '{print $1}') + + echo -e "\t${2}:\n\tlocal git: $LOCAL_GIT\n\tremote git: $REMOTE_GIT" + + if [[ $LOCAL_GIT != $REMOTE_GIT ]]; then + # true + echo -e "\e[91m\n\t${2} needs to be updated\e[0m\n" + NEEDSBUILD=1 + else + # false + echo -e "\e[92m\n\t${2} is updated\e[0m\n" + NEEDSBUILD=0 + fi + + cd "${CURDIR}" +} + +########################################################### + +# Remove any existing pkg,src or tar.xz packages left by previous pacman commands + +cmd "rm -rf ./*/{pkg,src,*.tar.xz}" +cmd "rm -f ./0-wine-staging-git/*.patch" + +if [[ $? -ne 0 ]]; then + echo "Could not remove previous pacman-generated Wine source folders" + exit 1 +fi + +########################################################### + +# Do git check for Wine Staging +gitCheck ./wine-staging-git Wine + +# If needs build and --check switch is not used +if [[ $NEEDSBUILD -eq 1 ]] && [[ ! -v CHECK ]]; then + + # Create wine-staging-git package and install it to the system + cd "${ORG_CURDIR}"/0-wine-staging-git + cmd "updpkgsums && makepkg" + + if [[ $? -eq 0 ]]; then + pacman -U --noconfirm wine-*.tar.xz + else + exit 1 + fi + + if [[ $? -eq 0 ]]; then + cmd "rm -rf ./{*.patch,pkg,src,*.tar.xz}" + WINE_INSTALL= + WINE_VERSION_UPDATE=$(pacman -Qi wine-staging-git | grep 'Version' | awk '{print $NF}') + else + exit 1 + fi + + cd .. + +fi + +############################# + +# Create dxvk-git package and install it to the system +gitCheck ./0-dxvk-git/dxvk-git DXVK + +# If needs build and --check switch is not used +if [[ $NEEDSBUILD -eq 1 ]] && [[ ! -v CHECK ]]; then + + # Create dxvk-git package and install it to the system + cd "${ORG_CURDIR}"/0-dxvk-git + cmd "updpkgsums && makepkg" + + if [[ $? -eq 0 ]]; then + pacman -U --noconfirm dxvk-git*.tar.xz + else + exit 1 + fi + + if [[ $? -eq 0 ]]; then + cmd "rm -rf ./{pkg,src,dxvk-git*.tar.xz}" + else + exit 1 + fi + +fi + +cd .. + +# If a new Wine Staging version was installed and 'System' version of Wine has been used in +# PoL wineprefix configurations, update those existing PoL wineprefixes +if [[ -v WINE_INSTALL ]]; then + for wineprefix in $(find /home/$USER/.PlayOnLinux/wineprefix -mindepth 1 -maxdepth 1 -type d); do + if [[ -d ${wineprefix}/dosdevices ]]; then + + # If VERSION string exists, skip updating that prefix. + if [[ $(printf $(grep -ril "VERSION" ${wineprefix}/playonlinux.cfg &> /dev/null)$?) -ne 0 ]]; then + + # If currently installed Wine version is not same than we just built. + if [[ -v WINE_VERSION_UPDATE ]]; then + if [[ "${WINE_VERSION}" != "${WINE_VERSION_UPDATE}" ]]; then + cmd "WINEPREFIX=${wineprefix} wineboot -u" + fi + fi + fi + fi + done + + # If a new Wine Staging version was installed, update WINE_VERSION string variable in this script file + if [[ -v WINE_VERSION_UPDATE ]]; then + cmd "sed -i 's/^WINE_VERSION=.*/WINE_VERSION=\"${WINE_VERSION_UPDATE}\"/' $ORG_CURDIR/updatewine.sh" + fi + +fi + +# Install dxvk-git to every PlayOnLinux wineprefix +if [[ $? -eq 0 ]]; then + + for wineprefix in $(find /home/$USER/.PlayOnLinux/wineprefix -mindepth 1 -maxdepth 1 -type d); do + + if [[ -d ${wineprefix}/dosdevices ]]; then + + if [[ $(printf $(grep -ril "\"d3d11\"=\"native\"" ${wineprefix}/user.reg &> /dev/null)$?) -ne 0 ]]; then + cmd "WINEPREFIX=${wineprefix} setup_dxvk32" + cmd "WINEPREFIX=${wineprefix} setup_dxvk64" + fi + + # For D3D10 DXVK support + if [[ $(printf $(grep -ril "\"\*d3dcompiler_43\"=\"native\"" ${wineprefix}/user.reg &> /dev/null)$?) -ne 0 ]]; then + cmd "WINEPREFIX=${wineprefix} winetricks d3dcompiler_43" + fi + + fi + + done + +fi + +# Update LASTUPDATE variable string, if --check switch is not used + a new Wine Staging version is used or NEEDSBUILD variable is set to 1 +if [[ ! -v CHECK ]]; then + if [[ -v WINE_INSTALL ]] || [[ $NEEDSBUILD -eq 1 ]]; then + cmd "sed -i 's/^LASTUPDATE=.*/LASTUPDATE=\"$CURDATE\"/' $ORG_CURDIR/updatewine.sh" + fi +fi + +# Unset various env vars +unset CHECK +unset WINE_INSTALL +unset FORCE_INSTALL