Closed C0rn3j closed 4 years ago
Could you share the config.ini file beside movfs4l.py?
[general]
iodelay = True
link_inis = True
fake_inis = False
[game/SkyrimSE]
mo_gameroot = /home/c0rn3j/wine/skyrimMods/drive_c/MO2
game_type = Skyrim Special Edition
default_profile = Default
vfs_meta_log = {game_path}/movfs4l_log.json
wineprefix = /home/c0rn3j/.wine
game_datadir = {game_path}/Data
game_path = /home/c0rn3j/.wine/dosdevices/z:/home/c0rn3j/.local/share/Steam/steamapps/common/Skyrim Special Edition
plugins_txt = {gameappdata}/plugins.txt
gameappdata = {localappdata}/Skyrim Special Edition
localappdata = /home/c0rn3j/.wine/drive_c/users/c0rn3j/Local Settings/Application Data
mo_profile = {mo_gameroot}/profiles/{profile}
loadorder_txt = {gameappdata}/loadorder.txt
game_userdir = {mygames_root}/Skyrim Special Edition
Thanks, try:
./movfs4l.py --game SkyrimSE
(Same output with or without --mo_installroot defined)
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[130] % ./movfs4l.py --mo_installroot /home/c0rn3j/wine/skyrimMods/drive_c/MO2 --game SkyrimSE
* Parsing configuration file
* Using profile `Default'
Traceback (most recent call last):
File "./movfs4l.py", line 1220, in <module>
fill_variables(args)
File "./movfs4l.py", line 164, in fill_variables
value = apply_variables(variables[var], variables)
File "./movfs4l.py", line 127, in apply_variables
value = apply_variables(variables[variable], variables, processed)
KeyError: 'mygames_root'
Ah I see what the issue is, it used ~/.wine as the wine prefix, instead of ~/wine/skyrimMods.
Could you regenerate the configuration (remove/rename config.ini
to something else), but make sure to set WINEPREFIX=~/wine/skyrimMods before? For example:
WINEPREFIX=~/wine/skyrimMods ./movfs4l.py --mo_installroot ~/wine/skyrimMods/drive_c/MO2
Prefix in config changed, but the issue remains
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[0] % WINEPREFIX=~/wine/skyrimMods ./movfs4l.py --mo_installroot ~/wine/skyrimMods/drive_c/MO2
* Generating configuration file
-> Detected game 'SkyrimSE' at /home/c0rn3j/wine/skyrimMods/dosdevices/z:/home/c0rn3j/.local/share/Steam/steamapps/common/Skyrim Special Edition
* Written auto-generated configuration to `config.ini'. Please check the file, then run this script again.
* You can also re-run this for other installations by using `--generate_config'
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[0] % cat config.ini
───────┬───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
│ File: config.ini
───────┼───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
1 │ [general]
2 │ iodelay = True
3 │ link_inis = True
4 │ fake_inis = False
5 │
6 │ [game/SkyrimSE]
7 │ mo_gameroot = /home/c0rn3j/wine/skyrimMods/drive_c/MO2
8 │ game_type = Skyrim Special Edition
9 │ default_profile = Default
10 │ vfs_meta_log = {game_path}/movfs4l_log.json
11 │ wineprefix = /home/c0rn3j/wine/skyrimMods
12 │ game_datadir = {game_path}/Data
13 │ game_path = /home/c0rn3j/wine/skyrimMods/dosdevices/z:/home/c0rn3j/.local/share/Steam/steamapps/common/Skyrim Special Edition
14 │ plugins_txt = {gameappdata}/plugins.txt
15 │ gameappdata = {localappdata}/Skyrim Special Edition
16 │ localappdata = /home/c0rn3j/wine/skyrimMods/drive_c/users/c0rn3j/Local Settings/Application Data
17 │ mo_profile = {mo_gameroot}/profiles/{profile}
18 │ loadorder_txt = {gameappdata}/loadorder.txt
19 │ game_userdir = {mygames_root}/Skyrim Special Edition
20 │
───────┴───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[0] % WINEPREFIX=~/wine/skyrimMods ./movfs4l.py --mo_installroot ~/wine/skyrimMods/drive_c/MO2
* Parsing configuration file
* Unable to detect game (use `--game' to specify)
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[0] % WINEPREFIX=~/wine/skyrimMods ./movfs4l.py --mo_installroot ~/wine/skyrimMods/drive_c/MO2 --game SkyrimSE
* Parsing configuration file
* Using profile `Default'
Traceback (most recent call last):
File "./movfs4l.py", line 1220, in <module>
fill_variables(args)
File "./movfs4l.py", line 164, in fill_variables
value = apply_variables(variables[var], variables)
File "./movfs4l.py", line 127, in apply_variables
value = apply_variables(variables[variable], variables, processed)
KeyError: 'mygames_root'
Strange... does My Games exist in ~/wine/skyrimMods/drive_c/users/c0rn3j/ ? If not, have you already run Skyrim in that wine prefix before running movfs4l.py? If not, maybe run Skyrim first, and then regenerate the configuration and try it again.
does My Games exist in ~/wine/skyrimMods/drive_c/users/c0rn3j/
It does not, ~/wine/skyrimMods
has only LOOT and MO2, the game is installed via Proton, so the 'My Games' folder would be here - /home/c0rn3j/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/My Documents/My Games/Skyrim Special Edition
Alright, then set:
mygames_root = /home/c0rn3j/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/My Documents/My Games/
at the end of config.ini
That gets me further
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[0] % ./movfs4l.py --mo_installroot /home/c0rn3j/wine/skyrimMods/drive_c/MO2 --game SkyrimSE
* Parsing configuration file
* Using profile `Default'
* Removing VFS layer
* Parsing MO mods configuration
* Creating VFS index
* Linking mods
* Linking plugins list
Traceback (most recent call last):
File "./movfs4l.py", line 1312, in <module>
apply_game_vfs(args)
File "./movfs4l.py", line 1038, in apply_game_vfs
updatelink(entry["path"], entry["dest"], vfs_log)
File "./movfs4l.py", line 1062, in updatelink
os.symlink(src, dest)
FileNotFoundError: [Errno 2] No such file or directory: '/home/c0rn3j/wine/skyrimMods/drive_c/MO2/profiles/Default/plugins.txt' -> '/home/c0rn3j/wine/skyrimMods/drive_c/users/c0rn3j/Local Settings/Application Data/Skyrim Special Edition/plugins.txt'
c0rn3j@Luxuria : ~/Nextcloud2/Skyrim MODS
[1] % ls -lah /home/c0rn3j/wine/skyrimMods/drive_c/MO2/profiles/Default/plugins.txt
.rw-r--r-- c0rn3j c0rn3j 688 B Thu Oct 17 13:23:02 2019 plugins.txt
Ah right, modify /home/c0rn3j/.wine/drive_c/users/c0rn3j/Local Settings/Application Data
to /home/c0rn3j/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/Local Settings/Application Data
in the configuration as well
Aaand that works! Sadly I can't get LOOT(WINE) 0.11.0 to recognize the files.
I've set the game folder toZ:\home\c0rn3j\.local\share\Steam\steamapps\common\Skyrim Special Edition
in there and it only detects the original game files.
I suppose that is not the fault of this script since I tried the old version and LOOT behaved the same way, I'll take it to their discord.
Thanks a lot for very fast help!
Sorry, genuinely no idea what's causing that. The linux version worked for me last time I tried (minus the case-sensitivity problems that more or less broke my plugin setup). Never was able to get the windows version to even load though.
I suppose I'll have to compile that, was really trying to avoid it since I had a flawless setup with windows LOOT last time I was messing with skyrim.
Nowadays Linux filesystems are starting to support case insensitive folders, so for example on ext4 you could possibly eliminate the case issue.
@C0rn3j Right, as long as you formatted your hard disk sometime after 2018 (or more specifically, used formatting tools that are later than 2018), it should support it.
Should also mention, the next wine release should mostly support USVFS, so you might not need to use this script anymore. The most important of the two patches has been merged into wine's git, although the second (which will prevent some subtle failures) hasn't yet, and might not for a while unfortunately.
So for the next poor sucker that has to deal with this -
I couldn't get the native linux version to build on Arch, if someone cares issue is here: https://github.com/loot/libloot/issues/61
So I used the prebuilt version - download the latest .tar.xz from https://bintray.com/loot/snapshots/loot#files/
Seems like their build env is 16.04 Ubuntu, so try to run ./LOOT through the terminal and see missing deps. I was able to install all but one - had to steal /usr/lib/x86_64-linux-gnu/libhttp_parser.so.2.1
from an actual 16.04 ubuntu, as such ancient version isn't available even in the Arch archives.
Then you need to edit ~/.config/LOOT/settings.toml
and put the appdata and game folders in manually, so the result looks something like this -
[[games]]
registry = "Software\\Bethesda Softworks\\Skyrim Special Edition\\Installed Path"
path = "/home/c0rn3j/.local/share/Steam/steamapps/common/Skyrim Special Edition"
repo = "https://github.com/loot/skyrimse.git"
name = "TES V: Skyrim Special Edition"
folder = "Skyrim Special Edition"
local_path = "/home/c0rn3j/.local/share/Steam/steamapps/compatdata/489830/pfx/drive_c/users/steamuser/Local Settings/Application Data/Skyrim Special Edition"
branch = "v0.14"
type = "Skyrim Special Edition"
minimumHeaderVersion = 1.7000000476837158
master = "Skyrim.esm"
After this, LOOT works.
As a note of warning, something, most likely running an ancient version of the movfs script, renamed my base files to all lowercase(Skyrim.esm->skyrim.esm), making LOOT throw a really unhelpful "Cannot read property 'folder' of undefined" error. If this happens to you you can verify the filenames against https://steamdb.info/depot/489832/
If your using NTFS for your game and mod manager stuff you can possibly use mount option windows_names to resolve filename case issues. Not 100% sure it works tho.
Or it could be ignore_case, I dunno if that is safe
I'm using ext4 but having trouble figuring out how to apply +F (EXT4_CASEFOLD_FL) to a folder.
@C0rn3j I may be wrong here, but does setattr +F directory
work?
you meant chattr
. I just figured out you most likely need to create the FS with an option casefold
explicitly enabled, so am SOL unless I want to format my drive.
chattr +F folder
chattr: Operation not supported while setting flags on folder
mkfs.ext4 -O casefold
But the game seems to work fine without.
The problem:
I have SE installed via Proton, and MO2(portable)+LOOT in
~/wine/skyrimMods
bottle.MO2 seems to work just fine, here's a snippet from its .ini
Using
Python 3.7.4