tkashkin / GameHub

All your games in one place
https://tkashkin.github.io/projects/gamehub
GNU General Public License v3.0
2.25k stars 128 forks source link

DLC content (GOG) (usually) creating empty overlays / installing into base game directory. #351

Open v-evets opened 4 years ago

v-evets commented 4 years ago

As cool as the overlays feature appears (and that's pretty darn cool), I seem to be having some rather frustrating problems with it. I did have it work properly once, for one game, only to have it break again when I installed another. Now I can't get it to work at all, and my situation is as follows:

When installing GOG DLC, the DLC overlay remains empty and content is installed to the base game directory. In this situation it is not possible to enable/disable/remove overlays.

Probably related: Overlay mounts do not appear to be reliably mounted/unmounted, and such mounts persist after the application is closed.

My chosen test-case here is "Don't Starve" and one of it's two DLCs (native), on account of being both small and cheap. I'll gift you these on GOG if you need something to test with. I'm seeing the same behaviour with "Overload" (native), and "Grim Dawn" (wine) as well, and I likely have others I could try.


Expected behavior:

When installing DLC content, said content lands in $root/$game/_gamehub/overlays/dlc_$identifier

Actual behavior:

DLC content ends up in $root/$game/_gamehub/overlays/base, while $root/$game/_gamehub/overlays/dlc_$identifier is an empty directory.

Steps to reproduce:

Install "Don't Starve" from GOG. Install DLC "Reign of Giants".

Version info:

tree -L2 of $game_dir after installing base game:

├── docs
│   ├── End User License Agreement.txt
│   └── installer_readme.txt
├── game
│   ├── dontstarve32
│   └── dontstarve64
├── _gamehub
│   └── version
├── gameinfo
├── start.sh
├── support
│   ├── gog_com.shlib
│   ├── gog-system-report.sh
│   ├── icon.png
│   ├── postinst.sh
│   ├── preuninst.sh
│   ├── support_notice.txt
│   ├── xdg-utils
│   └── yad
└── uninstall-Dont Starve.sh

tree -L4 of $game_dir after installing DLC:

└── _gamehub
    ├── _overlay
    │   ├── merged
    │   │   ├── docs
    │   │   ├── game
    │   │   ├── _gamehub
    │   │   ├── gameinfo
    │   │   ├── start.sh
    │   │   ├── support
    │   │   └── uninstall-Dont Starve.sh
    │   ├── persist
    │   │   ├── docs
    │   │   ├── game
    │   │   └── _gamehub
    │   └── workdir
    │       └── work
    ├── overlays
    │   ├── base
    │   │   ├── docs
    │   │   ├── game
    │   │   ├── gameinfo
    │   │   ├── start.sh
    │   │   ├── support
    │   │   └── uninstall-Dont Starve.sh
    │   ├── dlc_1207664293
    │   └── overlays.json
    └── version

mount | grep overlay after installing DLC, (this remains after closing gamehub):

com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b on /home/steve/Games/Dont_Starve/_gamehub/_overlay/merged type overlay (rw,relatime,lowerdir=/home/steve/Games/Dont_Starve/_gamehub/overlays/dlc_1207664293:/home/steve/Games/Dont_Starve/_gamehub/overlays/base,upperdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/persist,workdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/workdir)

output from above run with -d --verbose:

(gamehub:16153): Gtk-WARNING **: 02:12:05.464: Error setting gtk-xft-antialias in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-antialias” in group “Settings” which has a value that cannot be interpreted.

(gamehub:16153): Gtk-WARNING **: 02:12:05.464: Error setting gtk-xft-hinting in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-hinting” in group “Settings” which has a value that cannot be interpreted.
[DEBUG]  [Database.migrate] Latest db version: 11, current: 11
[DEBUG]  [WineWrap] Updating index
[DEBUG]  [DOSBox.init] Config directory: '/usr/share/com.github.tkashkin.gamehub/compat/dosbox'
[DEBUG]  [DOSBox.init] Config: '/usr/share/com.github.tkashkin.gamehub/compat/dosbox/windowed.conf'; description: 'Disable fullscreen'; enabled: true
[DEBUG]  [DOSBox.init] Config directory: '/home/steve/.local/share/com.github.tkashkin.gamehub/compat/dosbox'
[DEBUG]  [DOSBox.init] Config directory: '/home/steve/.config/com.github.tkashkin.gamehub/compat/dosbox'
[WARN]   [FSUtils.find_case_insensitive] Error opening directory '/home/steve/.steam': No such file or directory
[WARN]   [FSUtils.find_case_insensitive] Error opening directory '/home/steve/.steam': No such file or directory
[INFO]   - GameHub
[INFO]       Version: 0.15.0-0071dca-dev
[INFO]       Branch:  dev
[INFO]       Commit:  0071dca7325cebd5f19dd962a610c51858fcd0bd
[INFO]   - Environment
[INFO]       Distro:  Gentoo Base System release 2.6
[INFO]       DE:      KDE
[INFO]       GTK:     3.24.13
[INFO]       Themes:  Breeze | breeze

(WebKitWebProcess:16194): Gtk-WARNING **: 02:12:07.227: Error setting gtk-xft-antialias in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-antialias” in group “Settings” which has a value that cannot be interpreted.

(WebKitWebProcess:16194): Gtk-WARNING **: 02:12:07.227: Error setting gtk-xft-hinting in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-hinting” in group “Settings” which has a value that cannot be interpreted.

(WebKitWebProcess:16221): Gtk-WARNING **: 02:12:13.036: Error setting gtk-xft-antialias in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-antialias” in group “Settings” which has a value that cannot be interpreted.

(WebKitWebProcess:16221): Gtk-WARNING **: 02:12:13.036: Error setting gtk-xft-hinting in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-hinting” in group “Settings” which has a value that cannot be interpreted.
Verifying archive integrity... All good.
Uncompressing Don't Starve (GOG.com)  100%  
Collecting info for this system...
Operating system: linux
CPU Arch: x86_64
trying mojosetup in bin/linux/x86_64
USING en_US

(mojosetup:16348): Gtk-WARNING **: 02:12:18.216: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.216: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.216: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.216: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.217: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16348): Gtk-WARNING **: 02:12:18.218: Unable to locate theme engine in module_path: "murrine",

(WebKitWebProcess:16495): Gtk-WARNING **: 02:16:03.963: Error setting gtk-xft-antialias in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-antialias” in group “Settings” which has a value that cannot be interpreted.

(WebKitWebProcess:16495): Gtk-WARNING **: 02:16:03.963: Error setting gtk-xft-hinting in /home/steve/.config/gtk-3.0/settings.ini: Key file contains key “gtk-xft-hinting” in group “Settings” which has a value that cannot be interpreted.
Verifying archive integrity... All good.
Uncompressing Don't Starve Reign of Giants DLC (GOG.com)  100%  
Collecting info for this system...
Operating system: linux
CPU Arch: x86_64
trying mojosetup in bin/linux/x86_64
USING en_US

(mojosetup:16647): Gtk-WARNING **: 02:16:08.956: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.956: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.957: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",

(mojosetup:16647): Gtk-WARNING **: 02:16:08.958: Unable to locate theme engine in module_path: "murrine",
[DEBUG]  [WineWrap] Index updated
[DEBUG]  [GOG] Loading games: page 1 of 2
[DEBUG]  [GOG] Imported tag: COMPLETED (159086654)
[DEBUG]  [GOG] Imported tag: NEXT TO PLAY (111246104)
[DEBUG]  [GOG] Imported tag: BACKLOG (63405554)
[DEBUG]  [GOG] Imported tag: FAVORITE (15565004)
[DEBUG]  [GOG] Loading games: page 2 of 2
[DEBUG]  [RunTask] {'chmod' '+x' '/mnt/tank/Staging/Games/Installers/don_t_starve_en_222215_22450.sh'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync()
[DEBUG]  [RunTask] {'/mnt/tank/Staging/Games/Installers/don_t_starve_en_222215_22450.sh' '--' '--i-agree-to-all-licenses' '--noreadme' '--nooptions' '--noprompt' '--destination' '/home/steve/Games/Dont_Starve'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_async()
[DEBUG]  [RunTask] {'pkexec' '/usr/bin/com.github.tkashkin.gamehub-overlayfs-helper' 'mount' 'com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b' 'index=off,lowerdir=/home/steve/Games/Dont_Starve/_gamehub/overlays/base,upperdir=/home/steve/Games/Dont_Starve/_gamehub/overlays/dlc_1207664293,workdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/workdir' '/home/steve/Games/Dont_Starve/_gamehub/_overlay/merged'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync_thread()
[DEBUG]  [RunTask] {'pkexec' '/usr/bin/com.github.tkashkin.gamehub-overlayfs-helper' 'umount' 'com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync_thread()
[DEBUG]  [RunTask] {'pkexec' '/usr/bin/com.github.tkashkin.gamehub-overlayfs-helper' 'mount' 'com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b' 'index=off,lowerdir=/home/steve/Games/Dont_Starve/_gamehub/overlays/base,upperdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/persist,workdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/workdir' '/home/steve/Games/Dont_Starve/_gamehub/_overlay/merged'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync_thread()
[DEBUG]  [RunTask] {'chmod' '+x' '/mnt/tank/Staging/Games/Installers/don_t_starve_reign_of_giants_dlc_en_20171215_17628.sh'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync()
[DEBUG]  [RunTask] {'/mnt/tank/Staging/Games/Installers/don_t_starve_reign_of_giants_dlc_en_20171215_17628.sh' '--' '--i-agree-to-all-licenses' '--noreadme' '--nooptions' '--noprompt' '--destination' '/home/steve/Games/Dont_Starve/_gamehub/_overlay/merged'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_async()
[DEBUG]  [RunTask] {'pkexec' '/usr/bin/com.github.tkashkin.gamehub-overlayfs-helper' 'umount' 'com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync_thread()
[DEBUG]  [RunTask] {'pkexec' '/usr/bin/com.github.tkashkin.gamehub-overlayfs-helper' 'mount' 'com.github.tkashkin.gamehub_overlay_1b2966ec60971bc3e85d1ca954881d7b' 'index=off,lowerdir=/home/steve/Games/Dont_Starve/_gamehub/overlays/dlc_1207664293:/home/steve/Games/Dont_Starve/_gamehub/overlays/base,upperdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/persist,workdir=/home/steve/Games/Dont_Starve/_gamehub/_overlay/workdir' '/home/steve/Games/Dont_Starve/_gamehub/_overlay/merged'}
[DEBUG]       dir: '/home/steve'
[DEBUG]       .run_sync_thread()

Aside, how in the name of doG do I completely eradicate all of gamehubs settings? I don't really do this dconf/gnome stuff, and removing the obvious config files doesn't hit the spot. Owing to that one time I got things to function, I'd really like to at least try a "clean-slate" test.

Please excuse the formatting, this is my very first interaction with github, I have been studiously avoiding opening an account here for many years. Gamehub is too good to not submit bugs for though. :)

tkashkin commented 4 years ago

I'm currently refactoring large part of code including installation, so this issue will likely be fixed after refactoring. No ETA as there's still some work to do.

how do I completely eradicate all of gamehubs settings?

dconf reset -f /com/github/tkashkin/gamehub/ and rm -rf ~/.cache/com.github.tkashkin.gamehub should remove settings and caches.

v-evets commented 4 years ago

Sweet, I await your non-ETA with restrained enthusiasm. Let me know if you need anything tested.