protonscr

Build Issue on Ubuntu [Blocks bisecting process]

protonopen
ValveSoftware/Proton#6574 · opened 2023-02-26 by wanlizhu · updated 2023-03-04 · 3 comments · github
1 matching comments, n / p to jump
Wwanlizhu 2023-02-26 github

The purpose of fixing this experimental build
From NVIDIA's internal benchmark report, we found out there is 10% performance regression by upgrading experimental-6.3-20220119 to experimental-7.0-20221012. So, I'm bisecting between the 2 tags to find what commit caused this regression on NVIDIA GPU.

Is there a way I can find the commit caused this regression from 6.3 to 7.0 without compiling experimental-6.3-20220119?

Steps to reproduce:

  1. Checkout to detached HEAD experimental-6.3-20220119
  2. update submodule: git submodule update --init --recursive
  3. make and cd to building folder mkdir xxx && cd xxx
  4. configure: ../configure.sh --container-engine=podman --enable-ccache --build-name=my_build
  5. run make, then I got the following errors. This error only happens on proton 6.3
make[1]: Leaving directory '/root/proton/xxx/obj-wine32'
touch /root/proton/xxx/.wine-build32
make: Leaving directory '/root/proton/xxx'
make[1]: *** [../build/makefile_base.mak:117: container-build] Error 2
make[1]: Leaving directory '/root/proton/xxx'
make: *** [../build/makefile_base.mak:32: nested_make] Error 2
Wwanlizhu 2023-03-01 github

The whole compile logs are attached as follow:
compile_log.stderr.txt
compile_log.stdout.txt

Rrbernon 2023-03-01 github

Looks like there's some problem with Cargo, I have no idea where that comes from.

(Note that you shouldn't need to be root to build Proton and it's even probably not great to build as root. When using docker you need to have your user added to the docker group, when using podman it should work OOTB.)

Also, because of the way Proton source works, I think bisecting between 6.3 and 7.0 will probably be very difficult. The versions aren't based on each other, and Wine changes for instance are completely rebased, so bisecting the submodule won't work.

Maybe you can try figuring first if the regression comes from Wine or DXVK / vkd3d-proton, by replacing the D3D dlls from Proton 7.0 prefix with those from Proton 6.3, or the other way around.

  • If that has an effect then the regression likely comes from a DXVK / VKD3D change, and you might be able to run the bisection within the project submodule only (while keeping the same Proton 7.0 base for building, or just building the DXVK / VKD3D DLLs separately and dropping them alongside the game executable).

  • If it doesn't have any effect then the problem probably comes from Wine changes, and things gets trickier here, because as I said bisection won't be possible OOTB.

Ww-flo 2023-03-04 github

this version of Cargo is older than the `2021` edition, and only supports `2015` and `2018` editions.

The Proton 6.3 build environment / docker image probably bundles an old version of cargo? once_cell bumped the Rust edition from 2018 to 2021 in version 1.15, and the build process attempts to build once_cell 1.17.1. So when using the old cargo version, it's impossible to build that.

The Cargo.lock file of media-converter asks for once_cell 1.7.2 though, so that should work. Clearly, cargo does not respect Cargo.lock in this build process and updates dependencies to a newer (semver-compatible to Cargo.toml) version than specified in Cargo.lock before building.

I'm not sure in which situations exactly cargo respects the Cargo.lock file, but sometimes (I think for library builds) a "--locked" param is needed. I guess this might start working when using "cargo build --locked" in the media-converter Makefile.

Proton versions