-
-
Notifications
You must be signed in to change notification settings - Fork 29.9k
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
regen.vcxproj cannot regenerate some necessary files #87733
Comments
I tried to modify Grammar/python.gram, Grammar/Tokens, Parser/Python.asdl, to add a new token to the grammar. And when using |
Steve: let's talk about this in person today. |
Hummmm, that file should handle the peg parser already: Lines 156 to 163 in 09b90a0
|
By the way, it would be nice if someone could review my change in this project related to pycore_ast.h ;-) (commit 94faa07) I mean checking if pycore_ast.h is updated as expected. |
I've found build.bat --regen unreliable myself. I went over it with Steve and one issue that came up is that it uses the python.exe that is built to run the code generation scripts; OTOH on Linux/Mac these scripts are run using a suitable pre-existing Python binary, e.g. a recent enough system Python. (However, the frozen files require a binary (_freeze_importlib). It will take some time to refactor things so that this is more usable. Perhaps instead of (or in addition to) doing everything via .vcxproj files, we could have a simple(r) regen.bat script that runs all the regen scripts (or at least the non-freeze ones) using the system Python? FWIW my own issues weren't with the parser, they were with regenerating opcode.h and opcode_targets.h. |
Workaround: For opcode.py changes, I can probably use the following strategy:
For the parser perhaps you can adopt a similar strategy, where you first |
I did:
I agree that a regen.bat that using a system python is better solution. regen.vcxproj is confusing. |
Can you past the full output from your command? Also, try making a dummy change (e.g. add a blank line) to each of the input files -- this will trigger the rebuild. PS. Please don't remove nosy folks unless they request so. |
@Steve, Anthony: I am now in a state where I have *no* changes anywhere, build.bat completes without errors, but build.bat --regen produces this error (after first doing a regular build): C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Platform.targets(67,5): error MSB8020: The build to Help! |
|
So is there a bug in regen.vcxproj, or in https://devguide.python.org/setup/#windows-compiling ? The latter says VS 2017. @pjx206: please stop clearing out the nosy list. You've done that twice now. If you do it again, I'll close this issue. |
The regen.vcxproj was modified but not test well. In the first version of regen.vcxproj there were such build targets: _RegenGrammar(BeforeTargets="Build") -> _RegenAST_H -> _RegenAST_C -> _RegenOpcodes -> _RegenTokens -> _RegenKeywords -> _RegenSymbols In commit 1ed83ad: bpo-40939: Remove the old parser (GH-20768), @gvanrossum sorry about removing nosy folks, This website displays in my language so I did not realize what is "nosy list". |
FYI Include/Python-ast.h was renamed to Include/internal/pycore_ast.h. |
Anthony, can you help us out here? Is there a problem with regen.vcsproj, either by depending on VS 2019 (which we don't officially support yet) or by missing the changes in the names of some generated files? |
I've attached my PR that streamlines this, it should be good (as in, reliable/fast) to do the regen on every build, but the "build.bat --regen" command is retained to force it. |
@jiaxin Please test steve's PR. |
Guido, regen.vcxproj targets 142 as the SDK version, which is most likely a mistake. If you need to change it quickly, you can either open it in VS and right click on the project and change the properties to an older SDK, or edit the vcxproj file itself. I can make this change in a patch, but because its a standalone project, it doesn't share the base SDK version with the others. I've reviewed Steve's patch and it would fix this because it changes regen into a build target instead of a build project, so it doesn't specify the SDK version at all. |
Steve's PR zooba:bpo-43567 works as expected. Really clean implementation! |
Jiaxin: "Resolution: works for me" is meant for the triager to indicate that there is no bug, or at least that the repro given in the bug report doesn't trigger the bug in the triager's environment. It does *not* mean that a patch works for the submitter of the issue. But thanks for letting us know that Steve's patch works for you! :-) |
We're updating all files now, and doing it automatically on build (or manually with --regen). |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: