Open DarkStarSword opened 11 years ago
Had two users in group chat have this problem so far after copying Team Fortress 2 from their Windows library to their Linux one, its a case issue so verification didn’t highlight the problem. Though, like Issue #123 it might just be labelled unsupported.
13:44 - Krywk: solved
13:44 - Krywk: my team fortress 2 folder was called 'team fortress 2'
13:44 - Krywk: Steam was looking for 'Team Fortress 2'
13:44 - Krywk: renamed the folder
13:44 - Krywk: there you go
I've noticed some oddities when downloading Half-Life (Beta) and Psychonauts in the Linux client where the case of some directories that Steam creates does not match that in the manifest files.
I'm not sure if this is a mismatch within the manifest files or something else, but it certainly makes things... interesting. Let me know if any of this belongs in a new bug report.
Left side is the filename on disk, right side is the capitalisation from 3840_3963299974783782956.manifest:
Psychonauts/documents - Documents Psychonauts/workresource - WorkResources Psychonauts/workresource/fonts - WorkResource/Fonts Psychonauts/workresource/localization - WorkResource/Localization Psychonauts/workresource/pclevelpackfiles - WorkResource/PCLevelPackFiles Psychonauts/workresource/pixelshaders - WorkResource/PixelShaders Psychonauts/workresource/savedgames - WorkResource/SAVEDGAMES Psychonauts/workresource/scripts - WorkResource/Scripts Psychonauts/workresource/sounds - WorkResource/Sounds Psychonauts/workresource/textures - WorkResource/Textures Psychonauts/workresource/textures/icons - WorkResource/Icons Psychonauts/workresource/vertexshaders - WorkResource/VertexShaders Psychonauts/workresource/vertexshaders/modules - WorkResource/Modules
Half Life is a bit more interesting since it has multiple manifest files with contradicting capitalisation:
Half-Life/platform/Resource 3_252432840369628186.manifest lists resource with a lower case r 8_3125558230937844363.manifest lists Resource with a capital R Half-Life/platform/Steam 3_252432840369628186.manifest lists steam with a lower case s 8_3125558230937844363.manifest lists Steam with a capital S
My script isn't explicitly looking for these kind of contradictions, so there may be others that it didn't pick up.
Bumping this as steam cloud also seems to remove capitalization which obviously on other operating systems doesn't matter. Cloud saving on Dust : An Elysian Tail is broken as a result.
This seems to also seems to be an issue when receiving updates to games. Within the past 6 months or so, I've had two games (Crypt of the NecroDancer and Grim Fandango Remastered) have filename case changes which weren't propagated to my Linux game cache. In both of these cases, it resulted in game breaking behaviour.
I see that this issue was marked as assigned over a year ago. Has there been any progress with getting it fixed in the client?
Filesystem space issues due to this bug. Dual booting and sharing game library folder creates duplicated files with different case in Linux even though they were updated in Windows. Windows sees only the one file but the file system knows the other case mismatched file exists. Storage space is being mishandled and used when it shouldn't be. Dual boot SteamOS likely will have similar issues.
@CoolSilver sharing a library between Windows and Linux is not recommended - for some games it works OK, but others had issues if the same files exist in both Windows and Linux depots with differing content causing them to require updates whenever switching OS.
It is reasonable to copy the Windows install to a separate Linux library (or vice versa) to reduce redownloading identical files though, with the caveat that the filenames from Windows may not have the correct case (hence my check_acf.py script to fix them).
It's a bit late to mention it, but this bug wreaked havoc with Firewatch's launch. It allowed a filename case change to the binary to slip under the radar, and resulted in users being unable to play for several hours while we tried to work out a nice solution that wouldn't trigger an entire re-download of the game for Linux users ( we couldn't find one ).
The Living Dungeon also hit this issue during Linux testing. The developer also claims that at some point, the case of files in the depot unexpectedly changed between build uploads.
Is this addressed by yesterday's client update?
I don't have anything that I can specifically test to confirm with.
That change only had to do with launch configurations, not SteamPipe depots, sorry.
No probs! Hope this can still get addressed at some point in the future.
Just hit this when upgrading from the Proton version of Lethal League Blaze to the native port. steamapps/common/LLBlaze/LLBLAZE_Data/
was incorrectly named steamapps/common/LLBlaze/LLBlaze_Data/
causing the application to crash immediately failing to load libmono.so. Uninstalling and reinstalling was the necessary fix.
Hey, developer of Dicey Dungeons chiming in here just to say that this affected us on our last update too. (I searched the issues list and this looks like the right place to post this, apologies if not)
The exact thing that happened was:
ui/gamepad/A_button.png
.ui/gamepad/a_button.png
, lowercase a, doh.a_button.png
, lowercase.Hope this can get fixed!
I just hit this one with Starward Rogue. I noticed when the game complained File Images/Tilesets/GoldShip/SubTilesets/ElegantTechnology/FloorDecorations/Lights2_Dict does not exist
.
I had a look at the installed files and found RuntimeData/Images/Tilesets/GoldShip/SubTilesets/ElegantTechnology/FloorDecorations/Lights2_dict.png
. One letter different, and it's a case error.
SteamDB's page for its game data depot lists that file as Lights2_Dict.png
, so I did a quick verification of the installed files; no errors found despite the filename error.
I ended up renaming the file.
I then put the full file list for that depot into the X11 primary selection then did this:
$ xclip -o|cut -d' ' -f1|xargs -d\\n ls -d >/dev/null
ls: cannot access 'RuntimeData/Images/Achievements/PerfectClearBoss_Battleswarm.png': No such file or directory
ls: cannot access 'RuntimeData/Images/Achievements/PerfectClearBoss_Battleswarm_Disabled.png': No such file or directory
ls: cannot access 'RuntimeData/Images/Achievements/PerfectClearBoss_WallMaster.png': No such file or directory
ls: cannot access 'RuntimeData/Images/Achievements/PerfectClearBoss_WallMaster_Disabled.png': No such file or directory
$ ls RuntimeData/Images/Achievements/PerfectClearBoss_{Battle,Wall}*
RuntimeData/Images/Achievements/PerfectClearBoss_BattleSwarm.png
RuntimeData/Images/Achievements/PerfectClearBoss_BattleSwarm_Disabled.png
RuntimeData/Images/Achievements/PerfectClearBoss_Wallmaster.png
RuntimeData/Images/Achievements/PerfectClearBoss_Wallmaster_Disabled.png
I expect that those four names as listed on SteamDB are correct, but I've not (yet) seen anything here which indicates either way.
These case errors should be reported when verifying.
Ideally, Steam would list the replaced/new files, and also list any unexpected files so that the user can clean them up if needed. But if it can detect names which differ only in case from what's expected (and, evidently, it can), it should be fixing that automatically.
Verify Integrity of Game Cache will claim that all files successfully verify even if some of the filenames have the incorrect case. This may happen under certain circumstances when copying the files off a filesystem that is not case sensitive, such as ntfs or vfat, or when those filesystems have been mounted with certain options (e.g. lowntfs).
For testing, this script can be used to recursively rename all files in a directory to lower case: https://raw.github.com/DarkStarSword/junk/master/steam/breakcase.py
I also have written a script that can rename all the files to the correct case listed in the .manifest files, announcement here: http://steamcommunity.com/app/221410/discussions/0/846941710185740762/
For example:
After running the above breakcase.py script on the Osmos directory, I get the following error when trying to launch it:
Yet running verify integrity of game cache still reports "All files successfully validated"
If I then rename osmos to Osmos and osmos.bin32 to Osmos.bin32 and launch the game it does launch, but all the graphics are messed up - lots of quadrilateral shapes are drawn on the screen, but no text is drawn and it is impossible to work out what is going on - essentially Osmos can't find it's textures. Running my abovementioned check_acf.py script with --rename then allows Osmos to work properly again.
I would propose that the verify integrity of game cache feature is extended to rename files to correct any capitalisation issues in a similar manner to my check_acf.py script.
There may still be some edge cases if the filesystem that SteamApps is mounted on is case insensitive (such as using mount -t lowntfs instead of mount -t ntfs3g).