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

gh-103963: fix 'make regen-opcode' in out-of-tree builds #104177

Merged
merged 3 commits into from
May 4, 2023

Conversation

carljm
Copy link
Member

@carljm carljm commented May 4, 2023

#104029 added a new file generated by make regen-opcode, but unlike the existing path arguments to generate_opcode_h.py, the new intrinsicoutfile argument was not wired in as an explicitly-provided argument from the Makefile. The result is that the default relative path is always used, which only works for in-tree builds. (The Makefile always uses a path relative to $srcdir which is set correctly in out-of-tree builds to find the source tree.)

This PR handles intrinsicoutfile in the same way that outfile and internaloutfile were already handled, which allows make regen-opcode to work again in out-of-tree builds.

This also makes the update of the file use Tools/build/update_file.py, which avoids replacing the file if the contents haven't changed. This can avoid needless rebuilds.

Copy link
Member

@JelleZijlstra JelleZijlstra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching this!

@carljm carljm requested a review from a team as a code owner May 4, 2023 17:18
@carljm carljm enabled auto-merge (squash) May 4, 2023 17:19
@@ -233,4 +233,4 @@ def main(opcode_py, outfile='Include/opcode.h',


if __name__ == '__main__':
main(sys.argv[1], sys.argv[2], sys.argv[3])
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
main(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])
main(*sys.argv[1:])

?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ugh, sorry, enabled auto-merge and then went into a meeting and didn't see this until after it landed.

This is a good suggestion, but given that almost nobody (AFAIK) runs generate_opcode_h.py by hand, it's probably not a super high priority one? So I may not file a separate PR just to do this. If the requirement to provide all arguments is bothering someone in practice sufficiently to motivate the change at some point, that's great.

Let me know if you disagree and you'd like a follow-up PR for this change.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, not a big deal, just a pattern that I see periodically. Looks like in this case it's a fixed number of optional args anyway, rather than a list of files as I first guessed, so it makes less sense anyway.

@carljm carljm merged commit f5c3838 into python:main May 4, 2023
@carljm carljm deleted the fixintrinsics branch May 4, 2023 18:09
carljm added a commit to carljm/cpython that referenced this pull request May 5, 2023
* main: (61 commits)
  pythongh-64595: Argument Clinic: Touch source file if any output file changed (python#104152)
  pythongh-64631: Test exception messages in cloned Argument Clinic funcs (python#104167)
  pythongh-68395: Avoid naming conflicts by mangling variable names in Argument Clinic (python#104065)
  pythongh-64658: Expand Argument Clinic return converter docs (python#104175)
  pythonGH-103092: port `_asyncio` freelist to module state (python#104196)
  pythongh-104051: fix crash in test_xxtestfuzz with -We (python#104052)
  pythongh-104190: fix ubsan crash (python#104191)
  pythongh-104106: Add gcc fallback of mkfifoat/mknodat for macOS (pythongh-104129)
  pythonGH-104142: Fix _Py_RefcntAdd to respect immortality (pythonGH-104143)
  pythongh-104112: link from cached_property docs to method-caching FAQ (python#104113)
  pythongh-68968: Correcting message display issue with assertEqual (python#103937)
  pythonGH-103899: Provide a hint when accidentally calling a module (pythonGH-103900)
  pythongh-103963: fix 'make regen-opcode' in out-of-tree builds (python#104177)
  pythongh-102500: Add PEP 688 and 698 to the 3.12 release highlights (python#104174)
  pythonGH-81079: Add case_sensitive argument to `pathlib.Path.glob()` (pythonGH-102710)
  pythongh-91896: Deprecate collections.abc.ByteString (python#102096)
  pythongh-99593: Add tests for Unicode C API (part 2) (python#99868)
  pythongh-102500: Document PEP 688 (python#102571)
  pythongh-102500: Implement PEP 688 (python#102521)
  pythongh-96534: socketmodule: support FreeBSD divert(4) socket (python#96536)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants