From: Victor Stinner Date: Fri, 26 Nov 2021 16:23:41 +0000 (+0100) Subject: bpo-45866: pegen strips directory of "generated from" header (GH-29777) (GH-29792... X-Git-Tag: v3.9.10~101 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=93a540d74c654819ad04d72fcdcf827d0e259999;p=thirdparty%2FPython%2Fcpython.git bpo-45866: pegen strips directory of "generated from" header (GH-29777) (GH-29792) (GH-29797) "make regen-all" now produces the same output when run from a directory other than the source tree: when building Python out of the source tree. (cherry picked from commit 253b7a0a9fef1d72a4cb87b837885576e68e917c) (cherry picked from commit b6defde2afe656db830d6fedf74ca5f6225f5928) --- diff --git a/Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst b/Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst new file mode 100644 index 000000000000..efa046d91e08 --- /dev/null +++ b/Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst @@ -0,0 +1,4 @@ +``make regen-all`` now produces the same output when run from a directory +other than the source tree: when building Python out of the source tree. +pegen now strips directory of the "generated by pygen from None: self.collect_todo() - self.print(f"// @generated by pegen.py from {filename}") + basename = os.path.basename(filename) + self.print(f"// @generated by pegen.py from {basename}") header = self.grammar.metas.get("header", EXTENSION_PREFIX) if header: self.print(header.rstrip("\n")) diff --git a/Tools/peg_generator/pegen/grammar_parser.py b/Tools/peg_generator/pegen/grammar_parser.py index c784cfdf3b26..50a2153d15e5 100644 --- a/Tools/peg_generator/pegen/grammar_parser.py +++ b/Tools/peg_generator/pegen/grammar_parser.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3.8 -# @generated by pegen from ./Tools/peg_generator/pegen/metagrammar.gram +# @generated by pegen from metagrammar.gram import ast import sys diff --git a/Tools/peg_generator/pegen/python_generator.py b/Tools/peg_generator/pegen/python_generator.py index b786de7fee5b..530cf111023c 100644 --- a/Tools/peg_generator/pegen/python_generator.py +++ b/Tools/peg_generator/pegen/python_generator.py @@ -1,3 +1,4 @@ +import os.path import token from typing import Any, Dict, Optional, IO, Text, Tuple @@ -142,7 +143,8 @@ class PythonParserGenerator(ParserGenerator, GrammarVisitor): def generate(self, filename: str) -> None: header = self.grammar.metas.get("header", MODULE_PREFIX) if header is not None: - self.print(header.rstrip("\n").format(filename=filename)) + basename = os.path.basename(filename) + self.print(header.rstrip("\n").format(filename=basename)) subheader = self.grammar.metas.get("subheader", "") if subheader: self.print(subheader.format(filename=filename))