diff options
author | Victor Stinner <vstinner@python.org> | 2021-11-26 10:50:34 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-26 10:50:34 (GMT) |
commit | 253b7a0a9fef1d72a4cb87b837885576e68e917c (patch) | |
tree | dc5f8a45dcd4830ef1ca6504fb4fb0d4b77f52a5 | |
parent | ee1e2c604c8a66a407116d9c3e589ab0b9580c54 (diff) | |
download | cpython-253b7a0a9fef1d72a4cb87b837885576e68e917c.zip cpython-253b7a0a9fef1d72a4cb87b837885576e68e917c.tar.gz cpython-253b7a0a9fef1d72a4cb87b837885576e68e917c.tar.bz2 |
bpo-45866: pegen strips directory of "generated from" header (GH-29777)
"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.
-rw-r--r-- | Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst | 4 | ||||
-rw-r--r-- | Parser/parser.c | 2 | ||||
-rw-r--r-- | Tools/peg_generator/pegen/c_generator.py | 4 | ||||
-rw-r--r-- | Tools/peg_generator/pegen/grammar_parser.py | 2 | ||||
-rw-r--r-- | Tools/peg_generator/pegen/python_generator.py | 4 |
5 files changed, 12 insertions, 4 deletions
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 0000000..efa046d --- /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 <FILENAME" header +Patch by Victor Stinner. diff --git a/Parser/parser.c b/Parser/parser.c index 1cf6e35..b139e55 100644 --- a/Parser/parser.c +++ b/Parser/parser.c @@ -1,4 +1,4 @@ -// @generated by pegen from ./Grammar/python.gram +// @generated by pegen from python.gram #include "pegen.h" #if defined(Py_DEBUG) && defined(Py_BUILD_CORE) diff --git a/Tools/peg_generator/pegen/c_generator.py b/Tools/peg_generator/pegen/c_generator.py index 10dc94b..9cfbf38 100644 --- a/Tools/peg_generator/pegen/c_generator.py +++ b/Tools/peg_generator/pegen/c_generator.py @@ -1,4 +1,5 @@ import ast +import os.path import re from dataclasses import dataclass, field from enum import Enum @@ -416,7 +417,8 @@ class CParserGenerator(ParserGenerator, GrammarVisitor): def generate(self, filename: str) -> None: self.collect_rules() - self.print(f"// @generated by pegen from {filename}") + basename = os.path.basename(filename) + self.print(f"// @generated by pegen 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 6e9f7d3..bf31fe5 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 25a48bf..5329d0e 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 IO, Any, Dict, Optional, Sequence, Set, Text, Tuple @@ -212,7 +213,8 @@ class PythonParserGenerator(ParserGenerator, GrammarVisitor): self.collect_rules() 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) |