]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-97669: Create Tools/build/ directory (#97963)
authorVictor Stinner <vstinner@python.org>
Mon, 17 Oct 2022 10:01:00 +0000 (12:01 +0200)
committerGitHub <noreply@github.com>
Mon, 17 Oct 2022 10:01:00 +0000 (12:01 +0200)
Create Tools/build/ directory. Move the following scripts from
Tools/scripts/ to Tools/build/:

* check_extension_modules.py
* deepfreeze.py
* freeze_modules.py
* generate_global_objects.py
* generate_levenshtein_examples.py
* generate_opcode_h.py
* generate_re_casefix.py
* generate_sre_constants.py
* generate_stdlib_module_names.py
* generate_token.py
* parse_html5_entities.py
* smelly.py
* stable_abi.py
* umarshal.py
* update_file.py
* verify_ensurepip_wheels.py

Update references to these scripts.

41 files changed:
.github/CODEOWNERS
.github/workflows/verify-ensurepip-wheels.yml
.gitignore
Doc/library/token-list.inc
Include/internal/pycore_global_strings.h
Include/internal/pycore_opcode.h
Include/internal/pycore_runtime_init_generated.h
Include/internal/pycore_token.h
Include/opcode.h
Lib/html/entities.py
Lib/token.py
Makefile.pre.in
Misc/stable_abi.toml
Modules/_sre/sre_constants.h
Modules/_sre/sre_targets.h
PC/python3dll.c
PCbuild/_freeze_module.vcxproj
PCbuild/regen.targets
Parser/token.c
Programs/_bootstrap_python.c
Programs/_freeze_module.c
Python/deepfreeze/README.txt
Python/frozen.c
Python/frozen_modules/README.txt
Python/stdlib_module_names.h
Tools/build/check_extension_modules.py [moved from Tools/scripts/check_extension_modules.py with 100% similarity]
Tools/build/deepfreeze.py [moved from Tools/scripts/deepfreeze.py with 100% similarity]
Tools/build/freeze_modules.py [moved from Tools/scripts/freeze_modules.py with 99% similarity]
Tools/build/generate_global_objects.py [moved from Tools/scripts/generate_global_objects.py with 99% similarity]
Tools/build/generate_levenshtein_examples.py [moved from Tools/scripts/generate_levenshtein_examples.py with 100% similarity]
Tools/build/generate_opcode_h.py [moved from Tools/scripts/generate_opcode_h.py with 99% similarity]
Tools/build/generate_re_casefix.py [moved from Tools/scripts/generate_re_casefix.py with 95% similarity]
Tools/build/generate_sre_constants.py [moved from Tools/scripts/generate_sre_constants.py with 94% similarity]
Tools/build/generate_stdlib_module_names.py [moved from Tools/scripts/generate_stdlib_module_names.py with 96% similarity]
Tools/build/generate_token.py [moved from Tools/scripts/generate_token.py with 94% similarity]
Tools/build/parse_html5_entities.py [moved from Tools/scripts/parse_html5_entities.py with 97% similarity]
Tools/build/smelly.py [moved from Tools/scripts/smelly.py with 100% similarity]
Tools/build/stable_abi.py [moved from Tools/scripts/stable_abi.py with 99% similarity, mode: 0644]
Tools/build/umarshal.py [moved from Tools/scripts/umarshal.py with 100% similarity]
Tools/build/update_file.py [moved from Tools/scripts/update_file.py with 100% similarity]
Tools/build/verify_ensurepip_wheels.py [moved from Tools/scripts/verify_ensurepip_wheels.py with 100% similarity]

index 585589d6ce3bf7ad4c17375a924cc63898e3f9dc..2fd933a22f3caa6cb5dd36de33530d6a53bbc5ba 100644 (file)
@@ -55,7 +55,7 @@ Python/traceback.c            @iritkatriel
 /Lib/html/                    @ezio-melotti
 /Lib/_markupbase.py           @ezio-melotti
 /Lib/test/test_html*.py       @ezio-melotti
-/Tools/scripts/*html5*        @ezio-melotti
+/Tools/build/parse_html5_entities.py   @ezio-melotti
 
 # Import (including importlib).
 # Ignoring importlib.h so as to not get flagged on
index 9f4754f912b09f6257caac0a9bb2093752b5e952..969515ed287b55cb029b6c82634cb77abce86c80 100644 (file)
@@ -6,12 +6,12 @@ on:
     paths:
       - 'Lib/ensurepip/_bundled/**'
       - '.github/workflows/verify-ensurepip-wheels.yml'
-      - 'Tools/scripts/verify_ensurepip_wheels.py'
+      - 'Tools/build/verify_ensurepip_wheels.py'
   pull_request:
     paths:
       - 'Lib/ensurepip/_bundled/**'
       - '.github/workflows/verify-ensurepip-wheels.yml'
-      - 'Tools/scripts/verify_ensurepip_wheels.py'
+      - 'Tools/build/verify_ensurepip_wheels.py'
 
 permissions:
   contents: read
@@ -29,4 +29,4 @@ jobs:
         with:
           python-version: '3'
       - name: Compare checksums of bundled pip and setuptools to ones published on PyPI
-        run: ./Tools/scripts/verify_ensurepip_wheels.py
+        run: ./Tools/build/verify_ensurepip_wheels.py
index 924c136ba9aa05a9b915513197578e80f22538cb..6934faa91e987454164c72142bf119bdf17fd40e 100644 (file)
@@ -143,7 +143,7 @@ Tools/ssl/win32
 Tools/freeze/test/outdir
 
 # The frozen modules are always generated by the build so we don't
-# keep them in the repo.  Also see Tools/scripts/freeze_modules.py.
+# keep them in the repo.  Also see Tools/build/freeze_modules.py.
 Python/frozen_modules/*.h
 # The manifest can be generated at any time with "make regen-frozen".
 Python/frozen_modules/MANIFEST
index 1a99f0518d1b47876cfde15f996eb7d27e73f66b..2739d5bfc1dfa205405c22316097306932872d4d 100644 (file)
@@ -1,4 +1,4 @@
-.. Auto-generated by Tools/scripts/generate_token.py
+.. Auto-generated by Tools/build/generate_token.py
 .. data:: ENDMARKER
 
 .. data:: NAME
index f646979910c887f00f85ac1038c58e064912557e..811cfc147fcf6b47f62b6cb6422bbe10df993dfb 100644 (file)
@@ -8,7 +8,7 @@ extern "C" {
 #  error "this header requires Py_BUILD_CORE define"
 #endif
 
-// The data structure & init here are inspired by Tools/scripts/deepfreeze.py.
+// The data structure & init here are inspired by Tools/build/deepfreeze.py.
 
 // All field names generated by ASCII_STR() have a common prefix,
 // to help avoid collisions with keywords, etc.
@@ -25,7 +25,7 @@ extern "C" {
 
 // XXX Order by frequency of use?
 
-/* The following is auto-generated by Tools/scripts/generate_global_objects.py. */
+/* The following is auto-generated by Tools/build/generate_global_objects.py. */
 struct _Py_global_strings {
     struct {
         STRUCT_FOR_STR(anon_dictcomp, "<dictcomp>")
index 15925511cc1f413a7b57f2c82f7c92df8e007fe8..c8ef5dd7352518a377efe7ac7693ee9e510df98e 100644 (file)
@@ -1,4 +1,4 @@
-// Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py
+// Auto-generated by Tools/build/generate_opcode_h.py from Lib/opcode.py
 
 #ifndef Py_INTERNAL_OPCODE_H
 #define Py_INTERNAL_OPCODE_H
index bd1fedebd65cf562bd140b0737ef21dc6a78eff6..8ce95884ccdd4175123a636253ab4cdd4e5bf4ce 100644 (file)
@@ -8,7 +8,7 @@ extern "C" {
 #  error "this header requires Py_BUILD_CORE define"
 #endif
 
-/* The following is auto-generated by Tools/scripts/generate_global_objects.py. */
+/* The following is auto-generated by Tools/build/generate_global_objects.py. */
 #define _Py_global_objects_INIT { \
     .singletons = { \
         .small_ints = { \
index f9b8240e2168f26e0d596cf923dbb22282bbc0bb..95459ab9f7d004bb20a1b69cbb5821e8f2f81537 100644 (file)
@@ -1,4 +1,4 @@
-/* Auto-generated by Tools/scripts/generate_token.py */
+/* Auto-generated by Tools/build/generate_token.py */
 
 /* Token types */
 #ifndef Py_INTERNAL_TOKEN_H
index 42825df6217b4639f7b6fc5712857d698c9aba35..0871eb1bfe0a8b4ef6a53e74db28f9c75a250a78 100644 (file)
@@ -1,4 +1,4 @@
-// Auto-generated by Tools/scripts/generate_opcode_h.py from Lib/opcode.py
+// Auto-generated by Tools/build/generate_opcode_h.py from Lib/opcode.py
 
 #ifndef Py_OPCODE_H
 #define Py_OPCODE_H
index cc59bc314499ad418890c7432fb6ccddd0782a4b..eb6dc12190586d90d8e8070e9065a6f6f243e260 100644 (file)
@@ -261,7 +261,7 @@ name2codepoint = {
 
 
 # HTML5 named character references
-# Generated by 'Tools/scripts/parse_html5_entities.py'
+# Generated by Tools/build/parse_html5_entities.py
 # from https://html.spec.whatwg.org/entities.json and
 # https://html.spec.whatwg.org/multipage/named-characters.html.
 # Map HTML5 named character references to the equivalent Unicode character(s).
index 9d0c0bf0fb0368e15170336a0c60b17f5fa4da40..95b107c6643b3f3b17ab5bf38ecbe820080bfd18 100644 (file)
@@ -1,5 +1,5 @@
 """Token constants."""
-# Auto-generated by Tools/scripts/generate_token.py
+# Auto-generated by Tools/build/generate_token.py
 
 __all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF']
 
index 7e2567173bc2ce989c7883dda74d2b4d5ad6591e..5b4bf15eb8aa58445d2f7c794646d8026337fa0c 100644 (file)
@@ -285,7 +285,7 @@ BUILDPYTHON=        python$(BUILDEXE)
 HOSTRUNNER= @HOSTRUNNER@
 
 PYTHON_FOR_REGEN?=@PYTHON_FOR_REGEN@
-UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/update_file.py
+UPDATE_FILE=$(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/update_file.py
 PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@
 # Single-platform builds depend on $(BUILDPYTHON). Cross builds use an
 # external "build Python" and have an empty PYTHON_FOR_BUILD_DEPS.
@@ -705,7 +705,7 @@ coverage-report: regen-token regen-frozen
 .PHONY=clinic
 clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
        $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
 
 # Build the interpreter
 $(BUILDPYTHON):        Programs/python.o $(LINK_PYTHON_DEPS)
@@ -907,7 +907,7 @@ sharedmods: $(SHAREDMODS) pybuilddir.txt
 
 # dependency on BUILDPYTHON ensures that the target is run last
 checksharedmods: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
-       @$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/check_extension_modules.py
+       @$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/build/check_extension_modules.py
 
 rundsymutil: sharedmods $(PYTHON_FOR_BUILD_DEPS) $(BUILDPYTHON)
        @if [ ! -z $(DSYMUTIL) ] ; then \
@@ -961,13 +961,13 @@ regen-test-frozenmain: $(BUILDPYTHON)
 .PHONY: regen-test-levenshtein
 regen-test-levenshtein:
        # Regenerate Lib/test/levenshtein_examples.json
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_levenshtein_examples.py Lib/test/levenshtein_examples.json
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_levenshtein_examples.py Lib/test/levenshtein_examples.json
 
 .PHONY: regen-re
 regen-re: $(BUILDPYTHON)
        # Regenerate Lib/re/_casefix.py
-       # using Tools/scripts/generate_re_casefix.py
-       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
+       # using Tools/build/generate_re_casefix.py
+       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/generate_re_casefix.py $(srcdir)/Lib/re/_casefix.py
 
 Programs/_testembed: Programs/_testembed.o $(LINK_PYTHON_DEPS)
        $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(LINK_PYTHON_OBJS) $(LIBS) $(MODLIBS) $(SYSLIBS)
@@ -1013,7 +1013,7 @@ _bootstrap_python: $(LIBRARY_OBJS_OMIT_FROZEN) Programs/_bootstrap_python.o Modu
 # 2) deepfreeze modules with external build Python.
 #
 
-# FROZEN_FILES_* are auto-generated by Tools/scripts/freeze_modules.py.
+# FROZEN_FILES_* are auto-generated by Tools/build/freeze_modules.py.
 FROZEN_FILES_IN = \
                Lib/importlib/_bootstrap.py \
                Lib/importlib/_bootstrap_external.py \
@@ -1149,11 +1149,11 @@ Python/frozen_modules/frozen_only.h: Tools/freeze/flag.py $(FREEZE_MODULE_DEPS)
 
 # END: freezing modules
 
-Tools/scripts/freeze_modules.py: $(FREEZE_MODULE)
+Tools/build/freeze_modules.py: $(FREEZE_MODULE)
 
 .PHONY: regen-frozen
-regen-frozen: Tools/scripts/freeze_modules.py $(FROZEN_FILES_IN)
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/freeze_modules.py
+regen-frozen: Tools/build/freeze_modules.py $(FROZEN_FILES_IN)
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/freeze_modules.py
        @echo "The Makefile was updated, you may need to re-run make."
 
 ############################################################################
@@ -1162,11 +1162,11 @@ regen-frozen: Tools/scripts/freeze_modules.py $(FROZEN_FILES_IN)
 .PHONY: regen-deepfreeze
 regen-deepfreeze: $(DEEPFREEZE_OBJS)
 
-DEEPFREEZE_DEPS=$(srcdir)/Tools/scripts/deepfreeze.py $(FREEZE_MODULE_DEPS) $(FROZEN_FILES_OUT)
+DEEPFREEZE_DEPS=$(srcdir)/Tools/build/deepfreeze.py $(FREEZE_MODULE_DEPS) $(FROZEN_FILES_OUT)
 
 # BEGIN: deepfreeze modules
 Python/deepfreeze/deepfreeze.c: $(DEEPFREEZE_DEPS)
-       $(PYTHON_FOR_FREEZE) $(srcdir)/Tools/scripts/deepfreeze.py \
+       $(PYTHON_FOR_FREEZE) $(srcdir)/Tools/build/deepfreeze.py \
        Python/frozen_modules/importlib._bootstrap.h:importlib._bootstrap \
        Python/frozen_modules/importlib._bootstrap_external.h:importlib._bootstrap_external \
        Python/frozen_modules/zipimport.h:zipimport \
@@ -1203,8 +1203,8 @@ regen-importlib: regen-frozen
 # Global objects
 
 .PHONY: regen-global-objects
-regen-global-objects: $(srcdir)/Tools/scripts/generate_global_objects.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_global_objects.py
+regen-global-objects: $(srcdir)/Tools/build/generate_global_objects.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_global_objects.py
        @echo "Note: Global objects can be added or removed by other tools (e.g. deepfreeze), "
        @echo "      so be sure to re-run regen-global-objects after those tools."
 
@@ -1220,7 +1220,7 @@ check-abidump: all
        abidiff $(srcdir)/Doc/data/python$(LDVERSION).abi "libpython$(LDVERSION).so" --drop-private-types --no-architecture --no-added-syms
 
 regen-limited-abi: all
-       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
+       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --generate-all $(srcdir)/Misc/stable_abi.toml
 
 ############################################################################
 # Regenerate all generated files
@@ -1331,8 +1331,8 @@ regen-ast:
 .PHONY: regen-opcode
 regen-opcode:
        # Regenerate Include/opcode.h from Lib/opcode.py
-       # using Tools/scripts/generate_opcode_h.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_opcode_h.py \
+       # using Tools/build/generate_opcode_h.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_opcode_h.py \
                $(srcdir)/Lib/opcode.py \
                $(srcdir)/Include/opcode.h.new \
                $(srcdir)/Include/internal/pycore_opcode.h.new
@@ -1342,23 +1342,23 @@ regen-opcode:
 .PHONY: regen-token
 regen-token:
        # Regenerate Doc/library/token-list.inc from Grammar/Tokens
-       # using Tools/scripts/generate_token.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py rst \
+       # using Tools/build/generate_token.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py rst \
                $(srcdir)/Grammar/Tokens \
                $(srcdir)/Doc/library/token-list.inc
        # Regenerate Include/internal/pycore_token.h from Grammar/Tokens
-       # using Tools/scripts/generate_token.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py h \
+       # using Tools/build/generate_token.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py h \
                $(srcdir)/Grammar/Tokens \
                $(srcdir)/Include/internal/pycore_token.h
        # Regenerate Parser/token.c from Grammar/Tokens
-       # using Tools/scripts/generate_token.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py c \
+       # using Tools/build/generate_token.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py c \
                $(srcdir)/Grammar/Tokens \
                $(srcdir)/Parser/token.c
        # Regenerate Lib/token.py from Grammar/Tokens
-       # using Tools/scripts/generate_token.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py py \
+       # using Tools/build/generate_token.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_token.py py \
                $(srcdir)/Grammar/Tokens \
                $(srcdir)/Lib/token.py
 
@@ -1375,16 +1375,16 @@ regen-keyword:
 .PHONY: regen-stdlib-module-names
 regen-stdlib-module-names: all Programs/_testembed
        # Regenerate Python/stdlib_module_names.h
-       # using Tools/scripts/generate_stdlib_module_names.py
+       # using Tools/build/generate_stdlib_module_names.py
        $(RUNSHARED) ./$(BUILDPYTHON) \
-               $(srcdir)/Tools/scripts/generate_stdlib_module_names.py \
+               $(srcdir)/Tools/build/generate_stdlib_module_names.py \
                > $(srcdir)/Python/stdlib_module_names.h.new
        $(UPDATE_FILE) $(srcdir)/Python/stdlib_module_names.h $(srcdir)/Python/stdlib_module_names.h.new
 
 regen-sre:
        # Regenerate Modules/_sre/sre_constants.h and Modules/_sre/sre_targets.h
-       # from Lib/re/_constants.py using Tools/scripts/generate_sre_constants.py
-       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_sre_constants.py \
+       # from Lib/re/_constants.py using Tools/build/generate_sre_constants.py
+       $(PYTHON_FOR_REGEN) $(srcdir)/Tools/build/generate_sre_constants.py \
                $(srcdir)/Lib/re/_constants.py \
                $(srcdir)/Modules/_sre/sre_constants.h \
                $(srcdir)/Modules/_sre/sre_targets.h
@@ -2511,7 +2511,7 @@ distclean: clobber docclean
 
 # Check that all symbols exported by libpython start with "Py" or "_Py"
 smelly: all
-       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/smelly.py
+       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/smelly.py
 
 # Find files with funny names
 funny:
@@ -2549,7 +2549,7 @@ patchcheck: all
        $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/patchcheck/patchcheck.py
 
 check-limited-abi: all
-       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
+       $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/build/stable_abi.py --all $(srcdir)/Misc/stable_abi.toml
 
 .PHONY: update-config
 update-config:
index a8920d999e818fcec114c27a457446fbcd509ef0..e78646fdea59cfbe62a5d16ec7c2f8c7dffcbb8d 100644 (file)
@@ -2,7 +2,7 @@
 # Please append new items at the end.
 
 # The syntax of this file is not fixed.
-# It is designed to be read only by Tools/stable_abi.py, which can change
+# It is designed to be read only by Tools/build/stable_abi.py, which can change
 # without notice.
 
 # For the history of the stable ABI prior to this file,
index c63351473686262a9436aff8a0f2f93357414f91..f030815c6c008da3a895d7355da2be0e1636905c 100644 (file)
@@ -3,7 +3,7 @@
  *
  * regular expression matching engine
  *
- * Auto-generated by Tools/scripts/generate_sre_constants.py from
+ * Auto-generated by Tools/build/generate_sre_constants.py from
  * Lib/re/_constants.py.
  *
  * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
index 25b6edd436bb7349ee0accc94b62fd0ba1fc908b..62761a0000d8368f8c4f41ad32c2b5851a74dec7 100644 (file)
@@ -3,7 +3,7 @@
  *
  * regular expression matching engine
  *
- * Auto-generated by Tools/scripts/generate_sre_constants.py from
+ * Auto-generated by Tools/build/generate_sre_constants.py from
  * Lib/re/_constants.py.
  *
  * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
index 89bbd05932b853d4f1af620af3f02038994a83ab..c1b88c66903b101abbafa334f9d8553f6ef71f9d 100755 (executable)
@@ -1,7 +1,7 @@
 
 /* Re-export stable Python ABI */
 
-/* Generated by Tools/scripts/stable_abi.py */
+/* Generated by Tools/build/stable_abi.py */
 
 #ifdef _M_IX86
 #define DECORATE "_"
index 39939a7ba9834503fc9869247eeb6dbd2c1f9a89..49e5cc89a26122ef8bbbc4a4c9f771ccc80ae258 100644 (file)
           DependsOnTargets="FindPythonForBuild"
           Condition="$(Configuration) != 'PGUpdate'">
     <!-- BEGIN deepfreeze rule -->
-       <Exec Command='$(PythonForBuild) "$(PySourcePath)Tools\scripts\deepfreeze.py" ^
+       <Exec Command='$(PythonForBuild) "$(PySourcePath)Tools\build\deepfreeze.py" ^
                 "$(PySourcePath)Python\frozen_modules\importlib._bootstrap.h:importlib._bootstrap" ^
                 "$(PySourcePath)Python\frozen_modules\importlib._bootstrap_external.h:importlib._bootstrap_external" ^
                 "$(PySourcePath)Python\frozen_modules\zipimport.h:zipimport" ^
index 3938b66678eee05f2bd2198d43356ab086acea0e..aeb7e2e185d9f88c16ad063c2ca79481edff0e7b 100644 (file)
@@ -13,7 +13,7 @@
     <_ASTOutputs Include="$(PySourcePath)Python\Python-ast.c">
       <Argument>-C</Argument>
     </_ASTOutputs>
-    <_OpcodeSources Include="$(PySourcePath)Tools\scripts\generate_opcode_h.py;$(PySourcePath)Lib\opcode.py" />
+    <_OpcodeSources Include="$(PySourcePath)Tools\build\generate_opcode_h.py;$(PySourcePath)Lib\opcode.py" />
     <_OpcodeOutputs Include="$(PySourcePath)Include\opcode.h;$(PySourcePath)Include\internal\pycore_opcode.h;$(PySourcePath)Python\opcode_targets.h" />
     <_TokenSources Include="$(PySourcePath)Grammar\Tokens" />
     <_TokenOutputs Include="$(PySourcePath)Doc\library\token-list.inc">
@@ -59,7 +59,7 @@
           Inputs="@(_OpcodeSources)" Outputs="@(_OpcodeOutputs)"
           DependsOnTargets="FindPythonForBuild">
     <Message Text="Regenerate @(_OpcodeOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
-    <Exec Command="$(PythonForBuild) Tools\scripts\generate_opcode_h.py Lib\opcode.py Include\opcode.h Include\internal\pycore_opcode.h"
+    <Exec Command="$(PythonForBuild) Tools\build\generate_opcode_h.py Lib\opcode.py Include\opcode.h Include\internal\pycore_opcode.h"
           WorkingDirectory="$(PySourcePath)" />
     <Exec Command="$(PythonForBuild) Python\makeopcodetargets.py Python\opcode_targets.h"
           WorkingDirectory="$(PySourcePath)" />
@@ -69,7 +69,7 @@
           Inputs="@(_TokenSources)" Outputs="@(_TokenOutputs)"
           DependsOnTargets="FindPythonForBuild">
     <Message Text="Regenerate @(_TokenOutputs->'%(Filename)%(Extension)',' ')" Importance="high" />
-    <Exec Command="$(PythonForBuild) Tools\scripts\generate_token.py %(_TokenOutputs.Format) Grammar\Tokens &quot;%(_TokenOutputs.Identity)&quot;"
+    <Exec Command="$(PythonForBuild) Tools\build\generate_token.py %(_TokenOutputs.Format) Grammar\Tokens &quot;%(_TokenOutputs.Identity)&quot;"
           WorkingDirectory="$(PySourcePath)" />
     <Touch Files="@(_TokenOutputs)" />
   </Target>
@@ -85,7 +85,7 @@
   <Target Name="_RegenGlobalObjects"
           DependsOnTargets="FindPythonForBuild">
     <Message Text="Regenerate Global Objects" Importance="high" />
-    <Exec Command="$(PythonForBuild) Tools\scripts\generate_global_objects.py"
+    <Exec Command="$(PythonForBuild) Tools\build\generate_global_objects.py"
           WorkingDirectory="$(PySourcePath)" />
   </Target>
 
index fa03fbc450b2bcc1e2601d05a518392064a25fd8..6299ad2f5631448b8e68fdfbd30cbd080870222e 100644 (file)
@@ -1,4 +1,4 @@
-/* Auto-generated by Tools/scripts/generate_token.py */
+/* Auto-generated by Tools/build/generate_token.py */
 
 #include "Python.h"
 #include "pycore_token.h"
index 6ecbf0c72b5ff44c84c7c21050cea7916de730da..bbac0c4e1a8a450c33ae166f71354bd29ab91c75 100644 (file)
@@ -2,7 +2,7 @@
 /* Frozen modules bootstrap
  *
  * Limited and restricted Python interpreter to run
- * "Tools/scripts/deepfreeze.py" on systems with no or older Python
+ * "Tools/build/deepfreeze.py" on systems with no or older Python
  * interpreter.
  */
 
index 3d27b79c237c364b8647bdf3c9611b57c8bcaaa8..d6d737d48d6070467d97a7ea785a61c08eadffdf 100644 (file)
@@ -2,7 +2,7 @@
    modules into frozen modules (like Lib/importlib/_bootstrap.py
    into Python/importlib.h).
 
-   This is used directly by Tools/scripts/freeze_modules.py, and indirectly by "make regen-frozen".
+   This is used directly by Tools/build/freeze_modules.py, and indirectly by "make regen-frozen".
 
    See Python/frozen.c for more info.
 
index da55d4e7c7469e950bb0d1c5f0fee2a84f480e9b..276ab51143ab33e40b47d534f8ce820668c9f34e 100644 (file)
@@ -3,4 +3,4 @@ modules.  Python/frozen.c depends on these files.
 
 None of these files are committed into the repo.
 
-See Tools/scripts/freeze_modules.py for more info.
+See Tools/build/freeze_modules.py for more info.
index 8a2a7243537cc545149d00a61ad6d7739f13a474..48b429519b66068e37fc38effebcc5712776c4a8 100644 (file)
@@ -8,7 +8,7 @@
  * These files must be regenerated any time the corresponding .pyc
  * file would change (including with changes to the compiler, bytecode
  * format, marshal format).  This can be done with "make regen-frozen".
- * That make target just runs Tools/scripts/freeze_modules.py.
+ * That make target just runs Tools/build/freeze_modules.py.
  *
  * The freeze_modules.py script also determines which modules get
  * frozen.  Update the list at the top of the script to add, remove,
index 444167cc496af345d313e9109609728d4aaa11b4..795bb0efad34df5a7e9393f0d700c9e7bc49740b 100644 (file)
@@ -4,4 +4,4 @@ modules.  Python/frozen.c depends on these files.
 Note that, other than the required frozen modules, none of these files
 are committed into the repo.
 
-See Tools/scripts/freeze_modules.py for more info.
+See Tools/build/freeze_modules.py for more info.
index b28156608d1b80d1c8bfee06bd169f2bee18562f..12827e775754f724b2c15bf9222a6e96d0525779 100644 (file)
@@ -1,4 +1,4 @@
-// Auto-generated by Tools/scripts/generate_stdlib_module_names.py.
+// Auto-generated by Tools/build/generate_stdlib_module_names.py.
 // List used to create sys.stdlib_module_names.
 
 static const char* _Py_stdlib_module_names[] = {
similarity index 99%
rename from Tools/scripts/freeze_modules.py
rename to Tools/build/freeze_modules.py
index aa1e4fe2ea0f4428c5cb1ab015c8b1cd912ec587..810224b28f2faad52e663831681876020a0cccbf 100644 (file)
@@ -581,7 +581,7 @@ def regen_makefile(modules):
     frozenfiles = []
     rules = ['']
     deepfreezerules = ["Python/deepfreeze/deepfreeze.c: $(DEEPFREEZE_DEPS)",
-                       "\t$(PYTHON_FOR_FREEZE) $(srcdir)/Tools/scripts/deepfreeze.py \\"]
+                       "\t$(PYTHON_FOR_FREEZE) $(srcdir)/Tools/build/deepfreeze.py \\"]
     for src in _iter_sources(modules):
         frozen_header = relpath_for_posix_display(src.frozenfile, ROOT_DIR)
         frozenfiles.append(f'\t\t{frozen_header} \\')
@@ -646,7 +646,7 @@ def regen_pcbuild(modules):
     projlines = []
     filterlines = []
     corelines = []
-    deepfreezerules = ['\t<Exec Command=\'$(PythonForBuild) "$(PySourcePath)Tools\\scripts\\deepfreeze.py" ^']
+    deepfreezerules = ['\t<Exec Command=\'$(PythonForBuild) "$(PySourcePath)Tools\\build\\deepfreeze.py" ^']
     for src in _iter_sources(modules):
         pyfile = relpath_for_windows_display(src.pyfile, ROOT_DIR)
         header = relpath_for_windows_display(src.frozenfile, ROOT_DIR)
similarity index 99%
rename from Tools/scripts/generate_global_objects.py
rename to Tools/build/generate_global_objects.py
index 0432bf50cf9483af816130d8765af676134e223d..dd67cfedaddd26ba497cff15680182ad438a3d49 100644 (file)
@@ -3,6 +3,7 @@ import io
 import os.path
 import re
 
+SCRIPT_NAME = 'Tools/build/generate_global_objects.py'
 __file__ = os.path.abspath(__file__)
 ROOT = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 INTERNAL = os.path.join(ROOT, 'Include', 'internal')
@@ -213,7 +214,7 @@ def open_for_changes(filename, orig):
 #######################################
 # the global objects
 
-START = '/* The following is auto-generated by Tools/scripts/generate_global_objects.py. */'
+START = f'/* The following is auto-generated by {SCRIPT_NAME}. */'
 END = '/* End auto-generated code */'
 
 
similarity index 99%
rename from Tools/scripts/generate_opcode_h.py
rename to Tools/build/generate_opcode_h.py
index 9ff264af9cdc2b1f2e4da7fafd39e82a135513ce..372221a14d07e1190c10d84f4d68a803d0a21205 100644 (file)
@@ -3,7 +3,7 @@
 import sys
 import tokenize
 
-SCRIPT_NAME = "Tools/scripts/generate_opcode_h.py"
+SCRIPT_NAME = "Tools/build/generate_opcode_h.py"
 PYTHON_OPCODE = "Lib/opcode.py"
 
 header = f"""
similarity index 95%
rename from Tools/scripts/generate_re_casefix.py
rename to Tools/build/generate_re_casefix.py
index 625b0658d97d1b6e9bb706414769bfe373aef499..b57ac07426c27c016d9fa05681439f4797f8144b 100755 (executable)
@@ -5,6 +5,8 @@ import collections
 import sys
 import unicodedata
 
+SCRIPT_NAME = 'Tools/build/generate_re_casefix.py'
+
 def update_file(file, content):
     try:
         with open(file, 'r', encoding='utf-8') as fobj:
@@ -16,8 +18,8 @@ def update_file(file, content):
         fobj.write(content)
     return True
 
-re_casefix_template = """\
-# Auto-generated by Tools/scripts/generate_re_casefix.py.
+re_casefix_template = f"""\
+# Auto-generated by {SCRIPT_NAME}.
 
 # Maps the code of lowercased character to codes of different lowercased
 # characters which have the same uppercase.
similarity index 94%
rename from Tools/scripts/generate_sre_constants.py
rename to Tools/build/generate_sre_constants.py
index 72715076d29ab63d0a96b3bdf8fd745cf725694d..abea069c8bc0c5ee808b9c33b261ef871e790d9f 100755 (executable)
@@ -1,6 +1,8 @@
 #! /usr/bin/env python3
 # This script generates Modules/_sre/sre_constants.h from Lib/re/_constants.py.
 
+SCRIPT_NAME = 'Tools/build/generate_sre_constants.py'
+
 
 def update_file(file, content):
     try:
@@ -13,13 +15,13 @@ def update_file(file, content):
         fobj.write(content)
     return True
 
-sre_constants_header = """\
+sre_constants_header = f"""\
 /*
  * Secret Labs' Regular Expression Engine
  *
  * regular expression matching engine
  *
- * Auto-generated by Tools/scripts/generate_sre_constants.py from
+ * Auto-generated by {SCRIPT_NAME} from
  * Lib/re/_constants.py.
  *
  * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
similarity index 96%
rename from Tools/scripts/generate_stdlib_module_names.py
rename to Tools/build/generate_stdlib_module_names.py
index 92100bd06509a5b0c9a691efe81a03ddbd5618a4..e4f09f88d0a32a58c0f84fa125c7920a93b44b93 100644 (file)
@@ -10,6 +10,8 @@ import sysconfig
 from check_extension_modules import ModuleChecker
 
 
+SCRIPT_NAME = 'Tools/build/generate_stdlib_module_names.py'
+
 SRC_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
 STDLIB_PATH = os.path.join(SRC_DIR, 'Lib')
 
@@ -112,7 +114,7 @@ def list_modules():
 
 
 def write_modules(fp, names):
-    print("// Auto-generated by Tools/scripts/generate_stdlib_module_names.py.",
+    print(f"// Auto-generated by {SCRIPT_NAME}.",
           file=fp)
     print("// List used to create sys.stdlib_module_names.", file=fp)
     print(file=fp)
similarity index 94%
rename from Tools/scripts/generate_token.py
rename to Tools/build/generate_token.py
index d8be8b93de1416f5095c9f08be870251a66a0f69..fc12835b7762ad5f57eb4548cc363ce9d3b17b7e 100755 (executable)
@@ -7,6 +7,8 @@
 #   Lib/token.py
 
 
+SCRIPT_NAME = 'Tools/build/generate_token.py'
+AUTO_GENERATED_BY_SCRIPT = f'Auto-generated by {SCRIPT_NAME}'
 NT_OFFSET = 256
 
 def load_tokens(path):
@@ -47,8 +49,10 @@ def update_file(file, content):
     return True
 
 
-token_h_template = """\
-/* Auto-generated by Tools/scripts/generate_token.py */
+token_h_template = f"""\
+/* {AUTO_GENERATED_BY_SCRIPT} */
+"""
+token_h_template += """\
 
 /* Token types */
 #ifndef Py_INTERNAL_TOKEN_H
@@ -105,8 +109,10 @@ def make_h(infile, outfile='Include/internal/pycore_token.h'):
         print("%s regenerated from %s" % (outfile, infile))
 
 
-token_c_template = """\
-/* Auto-generated by Tools/scripts/generate_token.py */
+token_c_template = f"""\
+/* {AUTO_GENERATED_BY_SCRIPT} */
+"""
+token_c_template += """\
 
 #include "Python.h"
 #include "pycore_token.h"
@@ -189,8 +195,8 @@ def make_c(infile, outfile='Parser/token.c'):
         print("%s regenerated from %s" % (outfile, infile))
 
 
-token_inc_template = """\
-.. Auto-generated by Tools/scripts/generate_token.py
+token_inc_template = f"""\
+.. {AUTO_GENERATED_BY_SCRIPT}
 %s
 .. data:: N_TOKENS
 
@@ -213,10 +219,11 @@ def make_rst(infile, outfile='Doc/library/token-list.inc'):
         print("%s regenerated from %s" % (outfile, infile))
 
 
-token_py_template = '''\
+token_py_template = f'''\
 """Token constants."""
-# Auto-generated by Tools/scripts/generate_token.py
-
+# {AUTO_GENERATED_BY_SCRIPT}
+'''
+token_py_template += '''
 __all__ = ['tok_name', 'ISTERMINAL', 'ISNONTERMINAL', 'ISEOF']
 
 %s
similarity index 97%
rename from Tools/scripts/parse_html5_entities.py
rename to Tools/build/parse_html5_entities.py
index 1e5bdad216554873af09346000dac9ae69b4f05a..d2bf29091030a5769c67e289b6471a7aea02348c 100755 (executable)
@@ -18,6 +18,7 @@ import json
 from urllib.request import urlopen
 from html.entities import html5
 
+SCRIPT_NAME = 'Tools/build/parse_html5_entities.py'
 PAGE_URL = 'https://html.spec.whatwg.org/multipage/named-characters.html'
 ENTITIES_URL = 'https://html.spec.whatwg.org/entities.json'
 HTML5_SECTION_START = '# HTML5 named character references'
@@ -69,7 +70,7 @@ def write_items(entities, file=sys.stdout):
     keys = sorted(entities.keys())
     keys = sorted(keys, key=str.lower)
     print(HTML5_SECTION_START, file=file)
-    print(f'# Generated by {sys.argv[0]!r}\n'
+    print(f'# Generated by {SCRIPT_NAME}\n'
           f'# from {ENTITIES_URL} and\n'
           f'# {PAGE_URL}.\n'
           f'# Map HTML5 named character references to the '
old mode 100755 (executable)
new mode 100644 (file)
similarity index 99%
rename from Tools/scripts/stable_abi.py
rename to Tools/build/stable_abi.py
index d557e10..88db93e
@@ -24,6 +24,7 @@ import io
 import re
 import csv
 
+SCRIPT_NAME = 'Tools/build/stable_abi.py'
 MISSING = object()
 
 EXCLUDED_HEADERS = {
@@ -182,11 +183,12 @@ def generator(var_name, default_path):
 def gen_python3dll(manifest, args, outfile):
     """Generate/check the source for the Windows stable ABI library"""
     write = partial(print, file=outfile)
-    write(textwrap.dedent(r"""
+    content = f"""
         /* Re-export stable Python ABI */
 
-        /* Generated by Tools/scripts/stable_abi.py */
-
+        /* Generated by {SCRIPT_NAME} */
+    """
+    content += r"""
         #ifdef _M_IX86
         #define DECORATE "_"
         #else
@@ -197,7 +199,8 @@ def gen_python3dll(manifest, args, outfile):
             __pragma(comment(linker, "/EXPORT:" DECORATE #name "=" PYTHON_DLL_NAME "." #name))
         #define EXPORT_DATA(name) \
             __pragma(comment(linker, "/EXPORT:" DECORATE #name "=" PYTHON_DLL_NAME "." #name ",DATA"))
-    """))
+    """
+    write(textwrap.dedent(content))
 
     def sort_key(item):
         return item.name.lower()