commit: 842402ffd6f107b9ad0784431b3d3d2b4fa7ed8d
Author: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Aug 15 20:10:10 2023 +0000
Commit: Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Aug 15 20:20:30 2023 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=842402ff
app-emulation/dxvk: fix setup script with wine[wow64]
Currently it will try to install both 32bit and 64bit dlls
in system32. Very few likely use wow64 so far, but this could
come biting later without a revbump.
Ideally do not want to use these scripts anymore and write
something new that could be packaged separately and shared
between dxvk, vkd3d-proton, and potential new packages.
Albeit haven't explored the cleanest way to do this yet,
so just do a dirty sanity check + fallback for now (wish
could just use these directly from system paths, but wine
really does not seem to offer a way to do this).
Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>
.../dxvk/{dxvk-1.10.3.ebuild => dxvk-1.10.3-r1.ebuild} | 1 +
app-emulation/dxvk/{dxvk-2.2.ebuild => dxvk-2.2-r1.ebuild} | 8 ++++++--
app-emulation/dxvk/dxvk-9999.ebuild | 8 ++++++--
app-emulation/dxvk/files/dxvk-1.10.3-wow64-setup.patch | 14 ++++++++++++++
4 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/app-emulation/dxvk/dxvk-1.10.3.ebuild
b/app-emulation/dxvk/dxvk-1.10.3-r1.ebuild
similarity index 99%
rename from app-emulation/dxvk/dxvk-1.10.3.ebuild
rename to app-emulation/dxvk/dxvk-1.10.3-r1.ebuild
index 378c0c51c184..3a56e2fdd338 100644
--- a/app-emulation/dxvk/dxvk-1.10.3.ebuild
+++ b/app-emulation/dxvk/dxvk-1.10.3-r1.ebuild
@@ -35,6 +35,7 @@ BDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-1.10.3-gcc13.patch
+ "${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
)
pkg_pretend() {
diff --git a/app-emulation/dxvk/dxvk-2.2.ebuild
b/app-emulation/dxvk/dxvk-2.2-r1.ebuild
similarity index 97%
rename from app-emulation/dxvk/dxvk-2.2.ebuild
rename to app-emulation/dxvk/dxvk-2.2-r1.ebuild
index cc5675a641c1..21905a3981fb 100644
--- a/app-emulation/dxvk/dxvk-2.2.ebuild
+++ b/app-emulation/dxvk/dxvk-2.2-r1.ebuild
@@ -49,6 +49,10 @@ BDEPEND="
dev-util/glslang
!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
+)
+
pkg_pretend() {
[[ ${MERGE_TYPE} == binary ]] && return
@@ -77,11 +81,11 @@ src_prepare() {
mv ../Vulkan-Headers-${HASH_VULKAN} include/vulkan || die
mv ../libdisplay-info-${HASH_DISPLAYINFO}
subprojects/libdisplay-info || die
fi
+ cp -p -- "${DISTDIR}"/setup_dxvk.sh . || die
default
- sed "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" \
- "${DISTDIR}"/setup_dxvk.sh > setup_dxvk.sh || die
+ sed -i "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" setup_dxvk.sh ||
die
}
src_configure() {
diff --git a/app-emulation/dxvk/dxvk-9999.ebuild
b/app-emulation/dxvk/dxvk-9999.ebuild
index 062d70604759..b4b07947ffeb 100644
--- a/app-emulation/dxvk/dxvk-9999.ebuild
+++ b/app-emulation/dxvk/dxvk-9999.ebuild
@@ -49,6 +49,10 @@ BDEPEND="
dev-util/glslang
!crossdev-mingw? ( dev-util/mingw64-toolchain[${MULTILIB_USEDEP}] )"
+PATCHES=(
+ "${FILESDIR}"/${PN}-1.10.3-wow64-setup.patch
+)
+
pkg_pretend() {
[[ ${MERGE_TYPE} == binary ]] && return
@@ -77,11 +81,11 @@ src_prepare() {
mv ../Vulkan-Headers-${HASH_VULKAN} include/vulkan || die
mv ../libdisplay-info-${HASH_DISPLAYINFO}
subprojects/libdisplay-info || die
fi
+ cp -p -- "${DISTDIR}"/setup_dxvk.sh . || die
default
- sed "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" \
- "${DISTDIR}"/setup_dxvk.sh > setup_dxvk.sh || die
+ sed -i "/^basedir=/s|=.*|=${EPREFIX}/usr/lib/${PN}|" setup_dxvk.sh ||
die
}
src_configure() {
diff --git a/app-emulation/dxvk/files/dxvk-1.10.3-wow64-setup.patch
b/app-emulation/dxvk/files/dxvk-1.10.3-wow64-setup.patch
new file mode 100644
index 000000000000..707eba19b24b
--- /dev/null
+++ b/app-emulation/dxvk/files/dxvk-1.10.3-wow64-setup.patch
@@ -0,0 +1,14 @@
+Dirty workaround to try syswow64 if paths are the same. This can happen
+with USE=wow64 on wine where wine64 is a symlink to wine.
+
+TODO: dxvk's and vkd3d-proton's setup script should be rewritten and packaged
+separately (shared) as upstream hardly support these (dxvk dropped altogether).
+--- a/setup_dxvk.sh
++++ b/setup_dxvk.sh
+@@ -89,2 +89,6 @@
+ win32_sys_path="${win32_sys_path/$'\r'/}"
++ if [ "$win32_sys_path" = "$win64_sys_path" ]; then
++ win32_sys_path=$($wine winepath -u 'C:\windows\syswow64' 2> /dev/null)
++ win32_sys_path="${win32_sys_path/$'\r'/}"
++ fi
+ fi