https://github.com/python/cpython/commit/2430729afea18073ca11f18f641c07ae8ad2504d
commit: 2430729afea18073ca11f18f641c07ae8ad2504d
branch: 3.12
author: Miss Islington (bot) <[email protected]>
committer: zooba <[email protected]>
date: 2024-05-13T11:48:39Z
summary:

gh-118876: Ensure PC/layout sets ns.temp before using it (GH-118880)

Fixes an AttributeError that occurs when checking if ns.temp is an absolute 
path during building from source on Windows.
(cherry picked from commit d8a82cca12e12a6b22bfe6691e9b222f6d276f0a)

Co-authored-by: I-Shen Leong <[email protected]>

files:
M PC/layout/main.py

diff --git a/PC/layout/main.py b/PC/layout/main.py
index c9246007d47d18..e836caf1167ba5 100644
--- a/PC/layout/main.py
+++ b/PC/layout/main.py
@@ -575,6 +575,15 @@ def main():
     ns.build = ns.build or Path(sys.executable).parent
     ns.temp = ns.temp or Path(tempfile.mkdtemp())
     ns.doc_build = ns.doc_build or (ns.source / "Doc" / "build")
+    if ns.copy and not ns.copy.is_absolute():
+        ns.copy = (Path.cwd() / ns.copy).resolve()
+    if not ns.temp:
+        # Put temp on a Dev Drive for speed if we're copying to one.
+        # If not, the regular temp dir will have to do.
+        if ns.copy and getattr(os.path, "isdevdrive", lambda d: 
False)(ns.copy):
+            ns.temp = ns.copy.with_name(ns.copy.name + "_temp")
+        else:
+            ns.temp = Path(tempfile.mkdtemp())
     if not ns.source.is_absolute():
         ns.source = (Path.cwd() / ns.source).resolve()
     if not ns.build.is_absolute():
@@ -588,8 +597,6 @@ def main():
     if not ns.arch:
         ns.arch = "amd64" if sys.maxsize > 2 ** 32 else "win32"
 
-    if ns.copy and not ns.copy.is_absolute():
-        ns.copy = (Path.cwd() / ns.copy).resolve()
     if ns.zip and not ns.zip.is_absolute():
         ns.zip = (Path.cwd() / ns.zip).resolve()
     if ns.catalog and not ns.catalog.is_absolute():

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to