summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2021-09-17 18:20:43 (GMT)
committerGitHub <noreply@github.com>2021-09-17 18:20:43 (GMT)
commit41551ee7e24fb6c58846836d3655dbb212281206 (patch)
treee8a91d7618bd697cb83607a78abb3b13832502ef /Tools
parentc5a677da9e7b2b2aa43b0b6dfb3813c0212379c0 (diff)
downloadcpython-41551ee7e24fb6c58846836d3655dbb212281206.zip
cpython-41551ee7e24fb6c58846836d3655dbb212281206.tar.gz
cpython-41551ee7e24fb6c58846836d3655dbb212281206.tar.bz2
bpo-45020: Fix build out of source tree (GH-28410)
* Makefile.pre.in: Add $(srcdir) when needed, remove it when it was used by mistake. * freeze_modules.py tool uses ./Programs/_freeze_module if the executable doesn't exist in the source tree.
Diffstat (limited to 'Tools')
-rw-r--r--Tools/scripts/freeze_modules.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/Tools/scripts/freeze_modules.py b/Tools/scripts/freeze_modules.py
index 35849c9..bfbea5d 100644
--- a/Tools/scripts/freeze_modules.py
+++ b/Tools/scripts/freeze_modules.py
@@ -15,9 +15,8 @@ import textwrap
from update_file import updating_file_with_tmpfile
-SCRIPTS_DIR = os.path.abspath(os.path.dirname(__file__))
-TOOLS_DIR = os.path.dirname(SCRIPTS_DIR)
-ROOT_DIR = os.path.dirname(TOOLS_DIR)
+ROOT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
+ROOT_DIR = os.path.abspath(ROOT_DIR)
STDLIB_DIR = os.path.join(ROOT_DIR, 'Lib')
# If MODULES_DIR is changed then the .gitattributes and .gitignore files
@@ -26,6 +25,13 @@ MODULES_DIR = os.path.join(ROOT_DIR, 'Python', 'frozen_modules')
if sys.platform != "win32":
TOOL = os.path.join(ROOT_DIR, 'Programs', '_freeze_module')
+ if not os.path.isfile(TOOL):
+ # When building out of the source tree, get the tool from the current
+ # directory
+ TOOL = os.path.join('Programs', '_freeze_module')
+ TOOL = os.path.abspath(TOOL)
+ if not os.path.isfile(TOOL):
+ sys.exit("ERROR: missing _freeze_module")
else:
def find_tool():
for arch in ['amd64', 'win32']:
@@ -547,7 +553,7 @@ def regen_makefile(modules):
# instead of going through an intermediate file like we used to.
rules.append(f'{header}: Programs/_freeze_module {pyfile}')
rules.append(
- (f'\t$(srcdir)/Programs/_freeze_module {src.frozenid} '
+ (f'\tPrograms/_freeze_module {src.frozenid} '
f'$(srcdir)/{pyfile} $(srcdir)/{header}'))
rules.append('')