@ -0,0 +1,49 @@ | |||||
# Maintainer: Adrià Cereto i Massagué <ssorgatem at gmail.com> | |||||
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" | |||||
} |
@ -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" | |||||
} |
@ -0,0 +1,20 @@ | |||||
<?xml version="1.0"?> | |||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> | |||||
<fontconfig> | |||||
<alias binding="same"> | |||||
<family>MS Shell Dlg</family> | |||||
<accept><family>Microsoft Sans Serif</family></accept> | |||||
<default><family>sans-serif</family></default> | |||||
</alias> | |||||
<alias binding="same"> | |||||
<family>MS Shell Dlg 2</family> | |||||
<accept><family>Tahoma</family></accept> | |||||
<default><family>sans-serif</family></default> | |||||
</alias> | |||||
<alias binding="same"> | |||||
<family>MS Sans Serif</family> | |||||
<prefer><family>Microsoft Sans Serif</family></prefer> | |||||
<default><family>sans-serif</family></default> | |||||
</alias> | |||||
</fontconfig> |
@ -0,0 +1,324 @@ | |||||
# Maintainer: Daniel Bermond < yahoo-com: danielbermond > | |||||
# Contributor: Pekka Helenius (~ Fincer) <fincer89@hotmail.com> | |||||
# 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') |
@ -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 <https://www.gnu.org/licenses/>. | |||||
########################################################### | |||||
# 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 |