Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

GH-113464: Get LLVM fromcpython-bin-deps on Windows#133278

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
brandtbucher merged 2 commits intopython:mainfrombrandtbucher:jit-windows-build
May 2, 2025

Conversation

brandtbucher
Copy link
Member

@brandtbucherbrandtbucher commentedMay 2, 2025
edited by bedevere-appbot
Loading

This makes LLVM easier to acquire for Windows JIT builds (like the one@zooba is going to do next week). We can now get it fromhttps://github.com/python/cpython-bin-deps/tree/llvm.

I also cleaned up a couple things I tripped over while working on this:

  • Fix the regen target to work better with recent changes to howjit_stencils.h is built (and clean up after itself).
  • Don't touchjit_stencils.h unless it's actually changing, to avoid triggering a rebuild.

@brandtbucherbrandtbucher added OS-windows buildThe build process and cross-build topic-JIT labelsMay 2, 2025
@brandtbucherbrandtbucher requested a review fromzoobaMay 2, 2025 00:27
@brandtbucherbrandtbucher self-assigned thisMay 2, 2025
@bedevere-appbedevere-appbot mentioned this pull requestMay 2, 2025
@zooba
Copy link
Member

Looks great! Though so far, this is the part that makes me sad (watch the timestamps). I guess it's unavoidable though.

Fri, 02 May 2025 00:38:42 GMT Fetching external libraries...Fri, 02 May 2025 00:38:42 GMT Fetching bzip2-1.0.8...Fri, 02 May 2025 00:38:46 GMT Fetching mpdecimal-4.0.0...Fri, 02 May 2025 00:38:47 GMT Fetching sqlite-3.49.1.0...Fri, 02 May 2025 00:38:48 GMT Fetching xz-5.2.5...Fri, 02 May 2025 00:38:49 GMT Fetching zlib-ng-2.2.4...Fri, 02 May 2025 00:38:50 GMT Fetching external binaries...Fri, 02 May 2025 00:38:50 GMT Fetching libffi-3.4.4...Fri, 02 May 2025 00:38:51 GMT Fetching openssl-bin-3.0.16.2...Fri, 02 May 2025 00:38:53 GMT Fetching tcltk-8.6.[15](https://github.com/python/cpython/actions/runs/14786163251/job/41515167379?pr=133278#step:4:16).0...Fri, 02 May 2025 00:38:55 GMT Fetching llvm-19.1.7.0...Fri, 02 May 2025 00:42:13 GMT Finished.

Just to confirm, these lines in the build output mean that it's working, yes? (I think the last one isn't from your script, but it's not an error, so that implies success)

    =============================================================  JIT support for x86_64-pc-windows-msvc is still experimental!             Please report any issues you encounter.             =============================================================    Regenerate cases  Generated sources are up to date

@zooba
Copy link
Member

Another possibility is to integrate the LLVM fetch into the script itself, so that we can check whether the files are up to date first and only download LLVM if it's needed (using/ignoring a separate install, as appropriate - I could see this being a case where we'd prefer to ignore it when we don't know which version it is)

@Wulian233
Copy link
Contributor

Do we need to change 18 to 19 here to unify the build?

You can also use a specific version of clang-cl downloaded from
https://github.com/llvm/llvm-project/releases, e.g.
clang+llvm-18.1.8-x86_64-pc-windows-msvc.tar.xz.
Given you have extracted that to <my-clang-dir>, you can use it like so
build.bat --pgo "/p:PlatformToolset=ClangCL" "/p:LLVMInstallDir=<my-clang-dir>" "/p:LLVMToolsVersion=18"
Setting LLVMToolsVersion to the major version is enough, although you
can be specific and use 18.1.8 in the above example, too.

zooba reacted with thumbs up emoji

@brandtbucher
Copy link
MemberAuthor

brandtbucher commentedMay 2, 2025
edited
Loading

Do we need to change 18 to 19 here to unify the build?

Not sure what you mean by "unify the build", but that LLVM version is unrelated. That's for if you want to build all of CPython with LLVM; this change is just for generating the templates the JIT compiler uses, which has stricter version requirements and can be different than the compiler or version used to build the interpreter itself.

@brandtbucher
Copy link
MemberAuthor

Looks great! Though so far, this is the part that makes me sad (watch the timestamps). I guess it's unavoidable though.

Yeah, it's a bummer that it takes a few minutes (maybe we could trim stuff we don't need from the hosted install, but I imagine most of the size is in the parts that we depend on). But if I understand correctly, it should download only once per machine that's doing Windows builds and remain cached, so it's not like Windows JIT core devs' daily build times just went up or anything.

Plus, we don't actually download it unless you're building the JIT, so most people should be unaffected (for now).

@zooba
Copy link
Member

Plus, we don't actually download it unless you're building the JIT, so most people should be unaffected (for now).

Ah, yeah, I didn't catch that first time through.

And yeah, it'll be once per machine. I was mostly thinking about CI, which uses a fresh machine each time, and also CI that bypassesbuild.bat (msbuild pcbuild.proj is the typical way, and it's not unreasonable to do it when building releases).

@brandtbucher
Copy link
MemberAuthor

brandtbucher commentedMay 2, 2025
edited
Loading

And yeah, it'll be once per machine. I was mostly thinking about CI, which uses a fresh machine each time, and also CI that bypassesbuild.bat (msbuild pcbuild.proj is the typical way, and it's not unreasonable to do it when building releases).

Yeah. For the former we need to install it anyways. For the latter, they'll just need to make sure to set the right options to omit the LLVM install when it's not needed if they want to avoid waiting.

(Another option could be to make the LLVM install default to "false" inget_externals.bat, and havebuild.bat enable it when needed. Not sure if that makes things better, or just more confusing.)

@brandtbucherbrandtbucher merged commitbfcbb28 intopython:mainMay 2, 2025
64 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@zoobazoobaAwaiting requested review from zooba

@savannahostrowskisavannahostrowskiAwaiting requested review from savannahostrowskisavannahostrowski is a code owner

Assignees

@brandtbucherbrandtbucher

Labels
buildThe build process and cross-buildOS-windowstopic-JIT
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@brandtbucher@zooba@Wulian233

[8]ページ先頭

©2009-2025 Movatter.jp