ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.44k stars 1.07k forks source link

Unable to compile Proton correctly #8012

Open baikaishiuc opened 2 months ago

baikaishiuc commented 2 months ago

Proton Version: experminental_9.0

How to reproduce this problem:

git clone --recurse-submodules https://github.com/ValveSoftware/Proton.git proton
git checkout experimental_9.0
git submodule update --init --recursive
mkdir ../build && cd ../build
../proton/configure.sh --enable-ccache --build-name=my_build
make

error info:

-- Installing: /home/zhengxianwei/source/Proton/build/dst-glslang32/lib/glslang/glslang-config.cmake
-- Installing: /home/zhengxianwei/source/Proton/build/dst-glslang32/lib/glslang/glslang-config-version.cmake
make[1]: Leaving directory '/home/zhengxianwei/source/Proton/build/obj-glslang32'
touch /home/zhengxianwei/source/Proton/build/.glslang-build32
rm obj-fonts/LiberationMono-Regular.sfd obj-fonts/LiberationSerif-Regular.sfd obj-fonts/LiberationSans-Bold.sfd obj-fonts/LiberationSans-Regular.sfd obj-fonts/LiberationMono-Bold.sfd
make: *** [../Makefile.in:1263: all] Error 2
Jaskowicz1 commented 2 months ago

Same here.

Jaskowicz1 commented 2 months ago

I want to add, I can't compile on the proton_9.0 branch either. I'm on Debian 12, gcc12.2.0.

I've tried make install (like the guide says for an easy install) and i've tried make redist. Both throw Error 2.

make install will do:

/home/archie/proton/build/build-proton_9.0-local/src-wine/include/zmouse.h /home/archie/proton/build/build-proton_9.0-local/dst-wine32/include/wine/windows/zmouse.h
make[1]: Leaving directory '/home/archie/proton/build/build-proton_9.0-local/obj-wine32'
touch /home/archie/proton/build/build-proton_9.0-local/.wine-build32
make: Leaving directory '/home/archie/proton/build/build-proton_9.0-local'
make[1]: *** [../../Makefile.in:1172: all] Error 2
make[1]: Leaving directory '/home/archie/proton/build/build-proton_9.0-local'
make: *** [Makefile:133: install] Error 2

make redist will do:

/home/archie/build/src-wine/tools/install-sh -m 644  include/xpsobjectmodel_1.h /home/archie/build/dst-wine32/include/wine/windows/xpsobjectmodel_1.h
/home/archie/build/src-wine/tools/install-sh -m 644  /home/archie/build/src-wine/include/zmouse.h /home/archie/build/dst-wine32/include/wine/windows/zmouse.h
make[1]: Leaving directory '/home/archie/build/obj-wine32'
touch /home/archie/build/.wine-build32
rm obj-fonts/LiberationMono-Bold.sfd obj-fonts/LiberationMono-Regular.sfd obj-fonts/LiberationSerif-Regular.sfd obj-fonts/LiberationSans-Bold.sfd obj-fonts/LiberationSans-Regular.sfd
make: *** [../proton/Makefile.in:1172: redist] Error 2
Athanasius commented 2 months ago

I think perhaps you're both running into the issue I'm seeing.

A problem is that the error spat out by the normal build process is actually only reporting that 'something' went wrong with the docker-run build process. That's what that Error 2 comes from.

If you save the entire build output to a log file then you might see what I'm seeing which is a problem relating to openfst:

rsync --filter=:C --exclude '*~' --exclude .git --exclude compile_commands.json --include src/include/fst/config.h.in --exclude aclocal.m4 --exclude ar-lib --exclude autom4te.cache --exclude compile --exclude config.guess --exclude config.h.in --exclude config.sub --exclude configure --exclude depcomp --exclude install-sh --exclude ltmain.sh --exclude m4/libtool.m4 --exclude m4/ltoptions.m4 --exclude m4/ltsugar.m4 --exclude m4/ltversion.m4 --exclude m4/lt~obsolete.m4 --exclude Makefile.in --exclude missing --exclude test-driver  --info=name -Oarx --delete "/mnt/tuesday/data0/git-clones/Proton.git/openfst/" "/mnt/tuesday/data0/git-clones/proton-builds/e-9.0-20240808/src-openfst" 
include/private/
make: *** No rule to make target '/mnt/tuesday/data0/git-clones/Proton.git/openfst/configure.ac', needed by '/mnt/tuesday/data0/git-clones/proton-builds/e-9.0-20240808/src-openfst/configure'.  Stop.
make: *** Waiting for unfinished jobs....

This will then eventually lead to a build failure on any subsequent attempt to build using the same build directory, but first it will work its way through everything else that it did manage to rsync and configure properly.

So, what's up with the openfst rsync/configure ?

My "/mnt/tuesday/data0/git-clones/Proton.git/openfst/" (as the name implies, this is the checkout of this repo), as per the rsync cited above currently is entirely empty. I'd assume something earlier in the build process is meant to populate it.

Earlier build output relating to openfst:

syncing openfst... done, dirty
../../Proton.git/Makefile.in:425: warning: overriding recipe for target '/mnt/tuesday/data0/git-clones/proton-builds/e-9.0-20240808/src-openfst/configure'
../../Proton.git/Makefile.in:424: warning: ignoring old recipe for target '/mnt/tuesday/data0/git-clones/proton-builds/e-9.0-20240808/src-openfst/configure'

but there's similar for other modules, so this may be a red herring.

From scratch:

athan@emilia:/mnt/tuesday/data0/git-clones/proton-builds/e-9.0-20240808;
11:21:52 0$ ../../Proton.git/configure.sh --enable-ccache --build-name=e-9.0-20240808
...
nice -10 make -j16 -l16 2>&1 | tee make-manual.log

And the output of that make was: make-manual.log.gz

FuzzyQuils commented 1 month ago

I ran into this issue today trying to build Proton to test a DXVK branch; my suspicion is that the Proton repo wasn't properly cloned with submodules as running git submodule update --remote --recursive or just git submodule update openfst fixed the empty folder issue for me.

Always cloning the repository as per Valve's instructions (git clone --recursive <URL here>) usually prevents this issue but my end also had an empty folder so idk what causes this to happen in the first place.

Athanasius commented 1 month ago

I'm guessing forcing the submodule updates on checkout using a hook isn't done in case someone is wanting to just switch quickly between branches/other refs to check something ?