Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enhance DLL search on Windows #1649

Merged
merged 7 commits into from
May 23, 2024
Merged

Conversation

heinezen
Copy link
Member

Fixes the import errors for the compiled libraries and Python modules on Windows by adding better default search paths. If you build openage from source with the documented instructions, there shouldn't be any Python errors after this PR.

The problem in #1644 was that the dependent libraries were no longer found automatically since Python 3.8 and you had to use --add-dll-search-path to avoid errors. However, it's not always obvious how this argument should be used. Therefore, openage now sets sane defaults to search for:

  • python.dll
  • openage.dll
  • nyan.dll

Furthermore, it fixes the errors in #1624 . These happened because the DLLs are only set per process, so subprocesses in multiprocessing were not aware about the DLL search paths. This problem is now solved by adding a DllDirectoryManager object that can be passed around and then used to add/remove DLL search paths.

@heinezen heinezen added os: windows Windows-specific issue lang: python Done in Python code area: assets Involved with assets (images, sounds, ...) labels May 17, 2024
@heinezen heinezen marked this pull request as ready for review May 17, 2024 22:59
@heinezen heinezen requested a review from TheJJ May 17, 2024 22:59
@heinezen heinezen force-pushed the fix/python-windows-dll branch 3 times, most recently from b4b4652 to 1ba66ab Compare May 18, 2024 02:37
openage/util/CMakeLists.txt Outdated Show resolved Hide resolved
@heinezen heinezen added the bugfix Restores intended behavior label May 18, 2024
@simonsan
Copy link
Contributor

Wow, what a clusterfuck, I remember when we discovered that. Didn't know it's still leaving its trail! Excellent idea with the DllManager, will probably make it much easier to react to Python's weirdness in that regard in the future. 👍🏽

@TheJJ TheJJ merged commit aff3f73 into SFTtech:master May 23, 2024
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: assets Involved with assets (images, sounds, ...) bugfix Restores intended behavior lang: python Done in Python code os: windows Windows-specific issue
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

Build failing, unable to find Python3 on Windows 10 Asset conversion stalls on media conversion
4 participants