-
-
Notifications
You must be signed in to change notification settings - Fork 11.7k
CI: add windows free-threaded CI #27819
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
Conversation
|
Darn looks like this breaks 32-bit 3.10 on windows. I'll try to fix that on Monday. |
rgommers
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks Nathan. Overall this looks good. I would prefer to not add two new jobs, that's a bit too heavyweight. Why not just switch one job over? E.g., use MSVC for 3.11 and Clang-cl for 3.13t. There shouldn't be much (if any) cross-talk between compilers and Python versions.
|
Last push adds |
This comment was marked as outdated.
This comment was marked as outdated.
|
@rgommers I think this is ready now. |
a351955 to
cc8350a
Compare
rgommers
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks quite good overall - a few small comments/questions.
| if sys.platform == 'win32': | ||
| compile_extra = ["/we4013"] | ||
| link_extra = ["/LIBPATH:" + os.path.join(sys.base_prefix, 'libs')] | ||
| link_extra.append('/DEBUG') # generate .pdb file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure this will be robust, but I don't mind adding it if CI is happy
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is just keeping the behavior we had before, there's another sys.platform == 'win32' block below I merged with this one.
I did delete the LIBPATH stuff because meson handles this now.
| and os.path.exists(s + 'include')): | ||
| include_dirs.append(s + 'include') | ||
| if s + 'lib' not in library_dirs and os.path.exists(s + 'lib'): | ||
| library_dirs.append(s + 'lib') |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This mess can indeed go now I think.
rgommers
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM now, let's give this a go. Thanks Nathan!
This enables CI for the free-threaded build on Windows. The CI config follows what I did for Linux and MacOS.
It adds two new CI jobs to our Github Actions config.
This also fixes a number of issues with the
extbuildhelper for testing C extensions, both on the free-threaded build and in general.While I was here, I fixed some questionable software engineering choices like using mutables as the default value for keyword arguments and an unnecessary try/except I found annoying for debugging.
It also fixes the way libpython is linked against on the free-threaded build. Meson's
link_argscan use unix-style-L/path -lname_of_librarysyntax on all platforms, so I used it here even if it looks weird in Windows-specific configuration.Also fixes issues caused by
python.hnot settingPy_GIL_DISABLEDon Windows, so we need to do that ourselves.