bpo-45866: pegen strips directory of "generated from" header (GH-29777) (GH-29792)

"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 253b7a0a9f)
This commit is contained in:
Victor Stinner 2021-11-26 16:38:50 +01:00 committed by GitHub
parent 3f024e27c2
commit b6defde2af
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 12 additions and 4 deletions

View file

@ -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.

View file

@ -1,4 +1,4 @@
// @generated by pegen.py from ./Grammar/python.gram // @generated by pegen.py from python.gram
#include "pegen.h" #include "pegen.h"
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE) #if defined(Py_DEBUG) && defined(Py_BUILD_CORE)

View file

@ -1,5 +1,6 @@
import ast import ast
from dataclasses import field, dataclass from dataclasses import field, dataclass
import os.path
import re import re
from typing import Any, Dict, IO, Optional, List, Text, Tuple, Set from typing import Any, Dict, IO, Optional, List, Text, Tuple, Set
from enum import Enum from enum import Enum
@ -405,7 +406,8 @@ def out_of_memory_goto(self, expr: str, goto_target: str) -> None:
def generate(self, filename: str) -> None: def generate(self, filename: str) -> None:
self.collect_todo() 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) header = self.grammar.metas.get("header", EXTENSION_PREFIX)
if header: if header:
self.print(header.rstrip("\n")) self.print(header.rstrip("\n"))

View file

@ -1,5 +1,5 @@
#!/usr/bin/env python3.8 #!/usr/bin/env python3.8
# @generated by pegen from ./Tools/peg_generator/pegen/metagrammar.gram # @generated by pegen from metagrammar.gram
import ast import ast
from typing import Optional, Any from typing import Optional, Any

View file

@ -1,3 +1,4 @@
import os.path
import token import token
from typing import Any, Dict, Optional, IO, Text, Tuple from typing import Any, Dict, Optional, IO, Text, Tuple
@ -139,7 +140,8 @@ def __init__(
def generate(self, filename: str) -> None: def generate(self, filename: str) -> None:
header = self.grammar.metas.get("header", MODULE_PREFIX) header = self.grammar.metas.get("header", MODULE_PREFIX)
if header is not None: 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", "") subheader = self.grammar.metas.get("subheader", "")
if subheader: if subheader:
self.print(subheader.format(filename=filename)) self.print(subheader.format(filename=filename))