Unzip fails with error code 256 (e.g. Hyper Light Drifter, Kingdoms and Castles)

Hi!

I have a problem with unzip on Arch Linux. Lutris wants to use unzip.tar.gz, but this fails with error code 256. Any ideas how to solve this?

Details:

Both installers for Hyper Light Drifter and Kingdoms and Castles want to install a Linux native game using unzip.tar.gz

Unzip is in my path, I run an Arch Linux 5.15.5-arch1-1 and tried it with these unzip variants:

  • UnZip 6.00 of 20 April 2009, by ALT Linux Team. Original by Info-ZIP.
  • UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Send bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

In any case Lutris downloads unzip.tar.gz which fails the installation with error code 256:

lutris-wrapper: /home/gaming/.cache/lutris/installer/hyper-light-drifter/unzip
Started initial process 196039 from /home/gaming/.cache/lutris/installer/hyper-light-drifter/unzip /home/gaming/.cache/lutris/installer/hyper-light-drifter/gog/gog_hyper_light_drifter_2.8.0.9.sh -d /home/gaming/Games/gog/hyper-light-drifter data/noarch/*
Start monitoring process.
Archive:  /home/gaming/.cache/lutris/installer/hyper-light-drifter/gog/gog_hyper_light_drifter_2.8.0.9.sh
warning [/home/gaming/.cache/lutris/installer/hyper-light-drifter/gog/gog_hyper_light_drifter_2.8.0.9.sh]:  668456 extra bytes at beginning or within zipfile
  (attempting to process anyway)
   creating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/
  inflating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/start.sh  
...
  inflating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/support/icon.png  
   creating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/support/xdg-utils/
  inflating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/support/xdg-utils/xdg-open  
  inflating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/support/xdg-utils/xdg-desktop-icon  
  inflating: /home/gaming/Games/gog/hyper-light-drifter/data/noarch/support/xdg-utils/xdg-desktop-menu  
Monitored process exited.
Initial process has exited (return code: 256)
All processes have quit
Exit with return code 256

TIA

It must be zip data, or it wouldn’t have gotten that far inflating.

It’s really pretty risky, forcibly downloading binaries that may or may not run correctly on someone’s system.

I had some asshattery with cabextract last night (nothing to do with Lutris, just an example) because Proton-GE has taken to including its own cabextract binary in the bin directory, and it has a shared library (libmspack.so.0) that isn’t present. How clever… I’ve never built a cabextract that has shared linkage to anything but glibc. When that bin directory is in the path… fail (for example when executing commands with the wine interpreter that extract from microsoft cab files). In that case I just replaced it with my cabextract but that’s not applicable here.

What if you download the files from GoG and just run the game installer (.sh) outside of Lutris, does your installed infozip also barf on the archives? This would rule out the archive itself as being the problem. The “extra bytes” may or may not be an actual problem.

I’ve never actually used a lutris installer script for a game, I’ve always set up my lutris wine prefixes manually (and never used it for a native game) but you could probably edit the script so it doesn’t download unzip.tar.gz

It sets a $unzip variable

exe: Game/start.sh
files:
- game: N/A:Select the Linux installer downloaded from GOG
- unzip: http://lutris.net/files/tools/unzip.tar.gz
installer:
- extract:
    dst: $CACHE
    file: $unzip
- execute:
    args: $game -d "$GAMEDIR" "data/noarch/*"
    file: $CACHE/unzip
- rename:
    dst: $GAMEDIR/Game
    src: $GAMEDIR/data/noarch

Download the full script locally and remove it from the files line (so it won’t download) and set file: $CACHE/unzip to /usr/bin/unzip instead?

I’m just guessing, that sounds like it should work, logically.

Thanks for having a look at it!

The installers are fine, unzipping manually on the command line using the lutris unzip (~/.cache/lutris/installer/hyper-light-drifter/gog) results in a perfectly usable game. Also invoking the installer itself works fine, so these do not appear to be the source for the error.

Generally I really wonder why unzip is used for a native game at all since the gog installer works fine.

For Kingoms and Castles I did write a custom installer script for lutris without unzip and it works fine, too. But somehow this seems pointless to me. I was expecting games to simply work (well, as good as the community can make them to) just like they do in minigalaxy.

But I am new to lutris, so I might simply miss a point (like the fact that it integrates many runners etc.)