summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-11-26 10:50:34 (GMT)
committerGitHub <noreply@github.com>2021-11-26 10:50:34 (GMT)
commit253b7a0a9fef1d72a4cb87b837885576e68e917c (patch)
treedc5f8a45dcd4830ef1ca6504fb4fb0d4b77f52a5
parentee1e2c604c8a66a407116d9c3e589ab0b9580c54 (diff)
downloadcpython-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.rst4
-rw-r--r--Parser/parser.c2
-rw-r--r--Tools/peg_generator/pegen/c_generator.py4
-rw-r--r--Tools/peg_generator/pegen/grammar_parser.py2
-rw-r--r--Tools/peg_generator/pegen/python_generator.py4
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)