]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45866: pegen strips directory of "generated from" header (GH-29777)
authorVictor Stinner <vstinner@python.org>
Fri, 26 Nov 2021 10:50:34 +0000 (11:50 +0100)
committerGitHub <noreply@github.com>
Fri, 26 Nov 2021 10:50:34 +0000 (11:50 +0100)
"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.

Misc/NEWS.d/next/Build/2021-11-25-13-53-36.bpo-45866.ZH1W8N.rst [new file with mode: 0644]
Parser/parser.c
Tools/peg_generator/pegen/c_generator.py
Tools/peg_generator/pegen/grammar_parser.py
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 (file)
index 0000000..efa046d
--- /dev/null
@@ -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.
index 1cf6e356ad4bf56c40633fc8907c1bb272ab0841..b139e55705250ec2326b8d8025735c57366882bf 100644 (file)
@@ -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)
index 10dc94b04fefd76189011709ab455e4308e6af6a..9cfbf38b40a7787b4fcad81186585bf7f40b0455 100644 (file)
@@ -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"))
index 6e9f7d3d11d29051a887e7aa75e1237ab3abe307..bf31fe5326364559ed4dea46962363459b6ed0cf 100644 (file)
@@ -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
index 25a48bfab5d6c9aa91df1df8d75a2e5cefb1a68f..5329d0ebe5e64c602bb2002989a3d867d3df9db2 100644 (file)
@@ -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)