protonscr

Wine Assumptions Result in Build Failure

dxvkclosed
doitsujin/dxvk#309 · opened 2018-04-20 by Enverex · updated 2018-04-20 · 3 comments · github
EEnverex 2018-04-20 github

Spent the last hour or so trying to track down why this wouldn't build. It would make the 32bit libraries fine, but not the 64bit libraries.

Turns out, the build process appears to just use the user's default Wine prefix (so ~/.wine). The problem with this is that it could be configured in any way. In my case, my default prefix was a 32bit prefix which meant it couldn't run the 64bit test binary (as a 32bit Wine prefix cannot run 64bit binaries, but vice versa can). Thus it resulted in this error...

[02:28:58] arcade@arcade /var/tmp/makepkg/dxvk-git/src/dxvk-git $ ./package-release.sh master ../built --no-package
The Meson build system
Version: 0.45.1
Source dir: /var/tmp/makepkg/dxvk-git/src/dxvk-git
Build dir: /var/tmp/makepkg/dxvk-git/src/built/dxvk-master/build.64
Build type: cross build
Project name: dxvk
wine: Bad EXE format for Z:\var\tmp\makepkg\dxvk-git\src\built\dxvk-master\build.64\meson-private\sanitycheckc_cross.exe.

meson.build:1:0: ERROR: Executables created by c compiler /usr/bin/x86_64-w64-mingw32-gcc are not runnable.

A full log can be found at /var/tmp/makepkg/dxvk-git/src/built/dxvk-master/build.64/meson-logs/meson-log.txt
ninja: error: loading 'build.ninja': No such file or directory
cp: cannot stat '/var/tmp/makepkg/dxvk-git/src/built/dxvk-master/install.64/bin/d3d11.dll': No such file or directory
cp: cannot stat '/var/tmp/makepkg/dxvk-git/src/built/dxvk-master/install.64/bin/dxgi.dll': No such file or directory
cp: cannot stat '/var/tmp/makepkg/dxvk-git/src/built/dxvk-master/install.64/bin/setup_dxvk.sh': No such file or directory
rm: cannot remove '/var/tmp/makepkg/dxvk-git/src/built/dxvk-master/install.64': No such file or directory

Forcing a new prefix (which will be 64bit by default) allowed the process to complete:

[03:54:23] arcade@arcade /var/tmp/makepkg/dxvk-git/src/dxvk-git $ WINEPREFIX=~/wintest ./package-release.sh master ../built --no-package
The Meson build system
Version: 0.45.1
Source dir: /var/tmp/makepkg/dxvk-git/src/dxvk-git
Build dir: /var/tmp/makepkg/dxvk-git/src/built/dxvk-master/build.64
Build type: cross build
Project name: dxvk
wine: created the configuration directory '/home/arcade/wintest'
wine: configuration in '/home/arcade/wintest' has been updated.
Native C compiler: ccache cc (gcc 7.3.1 "cc (GCC) 7.3.1 20180312")
Cross C compiler: /usr/bin/x86_64-w64-mingw32-gcc (gcc 7.3.0)
Native C++ compiler: ccache c++ (gcc 7.3.1 "c++ (GCC) 7.3.1 20180312")
Cross C++ compiler: /usr/bin/x86_64-w64-mingw32-g++ (gcc 7.3.0)
Host machine cpu family: x86_64
Host machine cpu: x86_64
Target machine cpu family: x86_64
Target machine cpu: x86_64
Build machine cpu family: x86_64
Build machine cpu: x86_64
Library vulkan-1 found: YES
Library d3d11 found: YES
Library dxgi found: YES
Library d3dcompiler_47 found: YES
Program glslangValidator found: YES (/usr/bin/glslangValidator)
Dependency threads found: YES
Configuring setup_dxvk.sh using configuration
Build targets in project: 13
Found ninja-1.8.2 at /usr/bin/ninja

I recommend modifying the build script so that it uses a temporary Wine prefix in the build directory and sets the relevant other core options as well (e.g. "WINEARCH=win64") so that we know the build process will work, rather than assuming the user's default prefix is suitable for the build process.

I can do a pull request to fix this if you'd like.

EEnverex 2018-04-20 github
Ddoitsujin maintainer 2018-04-20 github

Unfortunate timing with that PR, sorry - f52cc3859b4d77fe3a1477ca4c512e134db26c33 should fix this.

EEnverex 2018-04-20 github

Doh. At least it's fixed.

Launch options

Upstream links

DLLs