diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2024-05-13 11:56:26 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-13 11:56:26 (GMT) |
commit | 44995aab499b09a550de26fd2927d481d4695e44 (patch) | |
tree | 1d18cf4ce5d9c32ef269511537349eb1f44f8f85 | |
parent | 941883208cdae6972c04228e5dc8626429e0ae27 (diff) | |
download | cpython-44995aab499b09a550de26fd2927d481d4695e44.zip cpython-44995aab499b09a550de26fd2927d481d4695e44.tar.gz cpython-44995aab499b09a550de26fd2927d481d4695e44.tar.bz2 |
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 <i-shenl@activestate.com>
-rw-r--r-- | PC/layout/main.py | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/PC/layout/main.py b/PC/layout/main.py index d176b27..1c4842f 100644 --- a/PC/layout/main.py +++ b/PC/layout/main.py @@ -599,6 +599,15 @@ def main(): ns.source = ns.source or (Path(__file__).resolve().parent.parent.parent) ns.build = ns.build or Path(sys.executable).parent 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(): @@ -617,21 +626,11 @@ def main(): else: ns.arch = "amd64" - 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(): ns.catalog = (Path.cwd() / ns.catalog).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()) - configure_logger(ns) log_info( |