Mailing List Archive

bpo-45866: pegen strips directory of "generated from" header (GH-29777) (GH-29792) (GH-29797)
https://github.com/python/cpython/commit/93a540d74c654819ad04d72fcdcf827d0e259999
commit: 93a540d74c654819ad04d72fcdcf827d0e259999
branch: 3.9
author: Victor Stinner <vstinner@python.org>
committer: vstinner <vstinner@python.org>
date: 2021-11-26T17:23:41+01:00
summary:

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)

files:
A Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst
M Parser/pegen/parse.c
M Tools/peg_generator/pegen/c_generator.py
M Tools/peg_generator/pegen/grammar_parser.py
M Tools/peg_generator/pegen/python_generator.py

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 0000000000000..efa046d91e08e
--- /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/pegen/parse.c b/Parser/pegen/parse.c
index 611257d67de42..b80e27f3c622a 100644
--- a/Parser/pegen/parse.c
+++ b/Parser/pegen/parse.c
@@ -1,4 +1,4 @@
-// @generated by pegen.py from ./Grammar/python.gram
+// @generated by pegen.py 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 b5836f62263ef..fe79717b79c01 100644
--- a/Tools/peg_generator/pegen/c_generator.py
+++ b/Tools/peg_generator/pegen/c_generator.py
@@ -1,5 +1,6 @@
import ast
from dataclasses import field, dataclass
+import os.path
import re
from typing import Any, Dict, IO, Optional, List, Text, Tuple, Set
from enum import Enum
@@ -379,7 +380,8 @@ def out_of_memory_goto(self, expr: str, goto_target: str) -> None:

def generate(self, filename: str) -> 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 c784cfdf3b266..50a2153d15e5c 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 b786de7fee5b4..530cf111023c7 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 @@ def __init__(
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))

_______________________________________________
Python-checkins mailing list
Python-checkins@python.org
https://mail.python.org/mailman/listinfo/python-checkins