NickHugi / PyKotor

A Python library that can read and modify most file formats used by the game Knights of the Old Republic and its sequel.
GNU Lesser General Public License v3.0
11 stars 3 forks source link

v1.6.0 beta releases do not launch on Linux #98

Closed ProjectSynchro closed 4 months ago

ProjectSynchro commented 4 months ago

When launching these HoloPatcher releases on Linux I get the following error:

[81862] Module object for struct is NULL!
Traceback (most recent call last):
  File "struct.py", line 13, in <module>
ModuleNotFoundError: No module named '_struct'

To my ignorant self it looks like there is a missing python module during your packaging process, but I am not all too familiar with the packaging process for python apps.

This is reproducable for all of the 1.6.0 beta releases of holopatcher so far.

th3w1zard1 commented 4 months ago

Thanks for the bug report - and the stack trace is appreciated

th3w1zard1 commented 4 months ago

Attempting to support Linux has been like trying to find a needle in a haystack. It's possible you're missing a dependency or there's a bug in the release workflow.

If you're able to build the patcher from source from the compile scripts on this repo, that would narrow down the problem

ProjectSynchro commented 4 months ago

Attempting to support Linux has been like trying to find a needle in a haystack. It's possible you're missing a dependency or there's a bug in the release workflow.

I know what you mean, you may want to look into AppImage packaging to avoid as many headaches as possible, just build it on your infrastructure and it will package everything library related within a single 'binary'

If you're able to build the patcher from source from the compile scripts on this repo, that would narrow down the problem

I can try that out and see what is falling over, I'm going to guess it's workflow related as Github Actions is also the devil incarnate 9/10 times.

th3w1zard1 commented 4 months ago

Building from src can be done in about 3 commands, see the readme.md for information. You'll just need to run three powershell scripts.

th3w1zard1 commented 4 months ago

AppImage looks promising, if it can help omit 20 elseif statements per distro perhaps it's worth investing more time into

ProjectSynchro commented 4 months ago

Okay.. after a bit of experimenting with Powershell I have a working environment.

Looking into some of the setup scripts I can see why supporting Linux currently is a nightmare for you. You may want to focus on targeting package managers as opposed to distros to avoid a dozen elif statements (still would be around 5 or 6 though)

Not quite in scope for this issue though, maybe I can open a PR to help simplify your setup.

AppImage looks promising, if it can help omit 20 elseif statements per distro perhaps it's worth investing more time into

AppImage is mainly useful for deployment of packages, PyInstaller currently builds them when deploying an application to Linux, so it looks like you're covered there.

To build a working binary I had to install pyinstaller and ply (not added to the venv), from there I was able to get something working: image

So I think it's fair to say this is most likely a workflow issue.

th3w1zard1 commented 4 months ago

Apparently writing Potentially fix <issue number> will automatically close issues... Thanks GitHub!

This appears to be a new issue directly related to a naive attempt to fix #44 awhile back. PyInstaller needs to statically link the binaries/libs to create a fully self-contained executable. Since I don't know how to fix #44 at this time I might as well go back to the original code that worked. Will continue testing on my end.

th3w1zard1 commented 4 months ago

This issue is fixed in beta3. You may still run into problems due to #44 . If your issue is not caused by #44 please open a new issue or comment here and I'll reopen. v1.6.0b3 ran correctly on a few WSL2 distros I have installed (tested Fedora/Ubuntu/Arch).

LMK

ProjectSynchro commented 4 months ago

This issue is fixed in beta3. You may still run into problems due to #44 . If your issue is not caused by #44 please open a new issue or comment here and I'll reopen. v1.6.0b3 ran correctly on a few WSL2 distros I have installed (tested Fedora/Ubuntu/Arch).

LMK

Looks good on my end