dependencies
dependencies copied to clipboard
[Bug]: Installing directplay has no effect, immediately resets
Describe the bug
Installing the directplay dependency seems to work at first, but every time your start the game (e.g. Stronghold HD or Stronghold Crusader HD) it is missing again. Also it won't be detected by the game.
Expected behaviour: Installing directplay should work, it should still be installed after restarting Bottles. The game should be able to detect directplay.
To Reproduce
- install Stronghold Crusader HD on Steam
- open the Steam Proton prefix for Stronghold Crusader in Bottles
- go to "Dependencies"
- install
directplay - (optional step) start Stronghold Crusader HD via Bottles or Steam)
- observe
directplaynot being installed again after restarting Bottles, also see that multiplayer is not working in Stronghold Crusader
Step 5 is optional, directplay seems to be missing even after just restarting Bottles immediately after the installation.
Package
Flatpak from Flathub
Distribution
Fedora 37
Troubleshooting Logs
Official Package: true
Version: 2022.12.14.1
Display:
X.org: true
X.org (port): :0
Wayland: true
Graphics:
vendors:
nvidia:
vendor: nvidia
envs:
__NV_PRIME_RENDER_OFFLOAD: '1'
__GLX_VENDOR_LIBRARY_NAME: nvidia
__VK_LAYER_NV_optimus: NVIDIA_only
icd: /usr/lib/x86_64-linux-gnu/GL/vulkan/icd.d/nvidia_icd.json:/usr/lib/i386-linux-gnu/GL/vulkan/icd.d/nvidia_icd.json
prime:
integrated: null
discrete: null
Kernel:
Type: Linux
Version: 6.0.14-300.fc37.x86_64
Distro:
Name: GNOME
Version: '43'
Disk:
Total: 16782127104
Free: 16781963264
RAM:
MemTotal: 31.3GiB
MemAvailable: 25.4GiB
Bottles_envs: null
Additional context
(side-note: installing directplay worked in an earlier version of Bottles months ago, the game didn't receive any update in that time period)
I tried different runners. I tried reinstalling the game.
Something to do with the archive_extract step. This issue is also affecting several other dependencies that use dxnt.tar.xz: devenum, dmband, dmcompos, dmime, dmloader, dmscript, dmstyle, dsdmo, dsound, dswave, l3codecx. Changing the steps in the manifest got it to work for me. I tried changing the destination only, but this was seemingly the easiest option. Rename the file:
Change this
- action: archive_extract
file_name: dxnt.tar.xz
url: https://proxy.usebottles.com/redistributable/dependencies/dxnt.tar.xz
file_checksum: 53a21ef097296da1762727e5b04e3372
file_size: 100275120
dest: temp/dxnt/
To this:
- action: archive_extract
file_name: dxnt.tar.xz
rename: dxnt.tar
url: https://proxy.usebottles.com/redistributable/dependencies/dxnt.tar.xz
file_checksum: 53a21ef097296da1762727e5b04e3372
file_size: 100275120
dest: temp/dxnt/
You'd also have to go through each step that refers to the temp location and change that.
Change this
- action: copy_dll
url: temp/dxnt.tar/dxnt/win32/
file_name: dplaysvr.exe
dest: win32
To this:
- action: copy_dll
url: temp/dxnt/dxnt/win32/
file_name: dplaysvr.exe
dest: win32
Would it be better to see what would have changed with the dependency action 'archive_extract', or go through each manifest and change those?
Here's a log of the current behavior without any changes.
12:47:46 (INFO) Installing dependency [directplay] in bottle [saerth].
dxnt.tar.xz (100%) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ (2.4 MB/2.4 MB - 5.8 MB)
patool: Extracting /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz ...
patool: running /usr/bin/tar --extract --use-compress-program xz --file /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz --directory /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar
patool: ... /home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar.xz extracted to `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar'.
12:47:47 (ERROR) Something wrong happened during extraction.
12:47:47 (ERROR) file `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar/dxnt.tar' was not found
12:47:47 (ERROR) Traceback (most recent call last):
File "/app/share/bottles/bottles/backend/managers/dependency.py", line 514, in __step_archive_extract
patoolib.extract_archive(tar_path, outdir=archive_path)
File "/app/lib/python3.10/site-packages/patoolib/__init__.py", line 681, in extract_archive
util.check_existing_filename(archive)
File "/app/lib/python3.10/site-packages/patoolib/util.py", line 398, in check_existing_filename
raise PatoolError("file `%s' was not found" % filename)
patoolib.util.PatoolError: file `/home/keenan/.var/app/com.usebottles.bottles/data/bottles/temp/dxnt.tar/dxnt.tar' was not found
