[Python-checkins] bpo-36509: Add iot layout for Windows IoT containers (GH-12663)

Steve Dower webhook-mailer at python.org
Fri Apr 12 12:56:01 EDT 2019


https://github.com/python/cpython/commit/f4e5661e85ac41c987165246d2b33f363cd01e34
commit: f4e5661e85ac41c987165246d2b33f363cd01e34
branch: master
author: Paul Monson <paulmon at users.noreply.github.com>
committer: Steve Dower <steve.dower at microsoft.com>
date: 2019-04-12T09:55:57-07:00
summary:

bpo-36509: Add iot layout for Windows IoT containers (GH-12663)

This enables using the `--preset-iot` option with the PC/layout script, but does not enable IoT builds as part of any normal release.

files:
A Misc/NEWS.d/next/Windows/2019-04-02-10-11-18.bpo-36509.DdaM67.rst
M PC/layout/main.py
M PC/layout/support/options.py

diff --git a/Misc/NEWS.d/next/Windows/2019-04-02-10-11-18.bpo-36509.DdaM67.rst b/Misc/NEWS.d/next/Windows/2019-04-02-10-11-18.bpo-36509.DdaM67.rst
new file mode 100644
index 000000000000..722f7638a144
--- /dev/null
+++ b/Misc/NEWS.d/next/Windows/2019-04-02-10-11-18.bpo-36509.DdaM67.rst
@@ -0,0 +1,4 @@
+Added preset-iot layout for Windows IoT ARM containers. This layout doesn't
+contain UI components like tkinter or IDLE. It also doesn't contain files to
+support on-target builds since Windows ARM32 builds must be cross-compiled
+when using MSVC.
diff --git a/PC/layout/main.py b/PC/layout/main.py
index 185e6498e1bc..624033e721b7 100644
--- a/PC/layout/main.py
+++ b/PC/layout/main.py
@@ -66,6 +66,18 @@
 TOOLS_DIRS = FileNameSet("scripts", "i18n", "pynche", "demo", "parser")
 TOOLS_FILES = FileSuffixSet(".py", ".pyw", ".txt")
 
+def copy_if_modified(src, dest):
+    try:
+        dest_stat = os.stat(dest)
+    except FileNotFoundError:
+        do_copy = True
+    else:
+        src_stat = os.stat(src)
+        do_copy = (src_stat.st_mtime != dest_stat.st_mtime or
+                   src_stat.st_size != dest_stat.st_size)
+
+    if do_copy:
+        shutil.copy2(src, dest)
 
 def get_lib_layout(ns):
     def _c(f):
@@ -426,7 +438,7 @@ def copy_files(files, ns):
                     need_compile.append((dest, ns.copy / dest))
                 else:
                     (ns.temp / "Lib" / dest).parent.mkdir(parents=True, exist_ok=True)
-                    shutil.copy2(src, ns.temp / "Lib" / dest)
+                    copy_if_modified(src, ns.temp / "Lib" / dest)
                     need_compile.append((dest, ns.temp / "Lib" / dest))
 
             if src not in EXCLUDE_FROM_CATALOG:
@@ -436,7 +448,7 @@ def copy_files(files, ns):
                 log_debug("Copy {} -> {}", src, ns.copy / dest)
                 (ns.copy / dest).parent.mkdir(parents=True, exist_ok=True)
                 try:
-                    shutil.copy2(src, ns.copy / dest)
+                    copy_if_modified(src, ns.copy / dest)
                 except shutil.SameFileError:
                     pass
 
diff --git a/PC/layout/support/options.py b/PC/layout/support/options.py
index 22492f220d60..00f05667ebb7 100644
--- a/PC/layout/support/options.py
+++ b/PC/layout/support/options.py
@@ -63,6 +63,10 @@ def public(f):
             "props"
         ],
     },
+    "iot": {
+        "help": "Windows IoT Core",
+        "options": ["stable", "pip"],
+    },
     "default": {
         "help": "development kit package",
         "options": [



More information about the Python-checkins mailing list