rsvg-convert error on Steam Deck (read-only file system)
Hello everyone,
I'm currently building LibreSplit on my Steam Deck within distrobox (Ubuntu 22-04). I already got urn working, but during the sudo make install I get the following error:
xxd --include ./src/main.css > ./src/main.h || (rm -f ./src/main.h; false)
install -Dm755 libresplit /usr/local/bin/libresplit
install -Dm644 libresplit.desktop /usr/local/share/applications/libresplit.desktop
for size in 16 22 24 32 36 48 64 72 96 128 256 512; do \
mkdir -p /usr/local/share/icons/hicolor/"$size"x"$size"/apps ; \
rsvg-convert -w "$size" -h "$size" -f png -o /usr/local/share/icons/hicolor/"$size"x"$size"/apps/libresplit.png libresplit.svg ; \
done
Error opening output "/usr/local/share/icons/hicolor/16x16/apps/libresplit.png": Error opening file “/usr/local/share/icons/hicolor/16x16/apps/libresplit.png”: Read-only file system
Well, it already states the reason: because of the Read-only file system the icons cannot be created, then the build exits. So I was thinking maybe I can edit some files to not create the icons on the read-only part of the system. I won't need icons anyways. Would you be so kind to point out what I'd have to edit? I'm not very proficient in coding.
BR happycamper
PS: I now realize I could unlock the system, build, then lock it again. But in this case I'd like to know which & how many files are created outside the build directory?
Im surprised it didnt fail before when installing the binaries to /usr/local/, but anyways, if you just want it to install you can comment out the lines inside the for loop (mkdir and rsvg-convert) but the .desktop wont have icons
A solution would be to instead being inside /usr/local/icons to be inside ~/.local/share/icons, so the icons end up in your home r/w filesystem instead of root which may get reverted on updates.
You can do this with a simple find and replace
Thanks, that worked! And I'm fine starting it from the command line.
But another more critical issue popped up. Libresplit has no permissions to check the memory of the game. I think this is the outcome of Libresplit running within distrobox, which is technically a virtual system. While the game (in this case SW Battlefront 2) is running on Steam OS.
I'm not really sure if I should continue tinkering to make that work. There are probably good (security) reasons why the processes within a virtual system don't have access to the main system.
Or maybe my guess is wrong. Do you know what is going on?
Not really, but your thought makes sense, you can also install libresplit on the deck os to make it work, you can change the binary output path to something inside .local/share/bin or something like that and change where the .desktop is, and that way libresplit is installed only in the home partition which is not read-only on the deck
Thanks, that worked! And I'm fine starting it from the command line.
But another more critical issue popped up. Libresplit has no permissions to check the memory of the game. I think this is the outcome of Libresplit running within distrobox, which is technically a virtual system. While the game (in this case SW Battlefront 2) is running on Steam OS. I'm not really sure if I should continue tinkering to make that work. There are probably good (security) reasons why the processes within a virtual system don't have access to the main system. Or maybe my guess is wrong. Do you know what is going on?
Pretty much having the same exact issue on NixOS. Unsure if it has to do with it not being FHS or something along those lines, even using steam-run won't help
Any news on this? I assume the main issue comes from make install using /usr as the DESTDIR by default, this will be fixed in the future when appimage releases are implemented and/or another build system is used that supports user installation more easily
DESTDIR is only used for packaging, not user installs. To install in $HOME/.local you would do PREFIX=$HOME/.local make install
Bit more info on https://github.com/LibreSplitDev/LibreSplit/issues/6 TLDR: We need to get rid of gsettings and use the JSON config file instead as you cant use gschemas from AppImages and no one likes gsettings