summaryrefslogtreecommitdiffstats
path: root/PC/layout/support/catalog.py
diff options
context:
space:
mode:
authorSteve Dower <steve.dower@microsoft.com>2018-12-11 02:52:57 (GMT)
committerGitHub <noreply@github.com>2018-12-11 02:52:57 (GMT)
commit0cd6391fd890368ea1743dac50c366b42f2fd126 (patch)
tree1e2d8fd6c85a08477d3eb4082badd9a50386e63e /PC/layout/support/catalog.py
parent1c3de541e64f75046b20cdd27bada1557e550bcd (diff)
downloadcpython-0cd6391fd890368ea1743dac50c366b42f2fd126.zip
cpython-0cd6391fd890368ea1743dac50c366b42f2fd126.tar.gz
cpython-0cd6391fd890368ea1743dac50c366b42f2fd126.tar.bz2
bpo-34977: Add Windows App Store package (GH-11027)
Also adds the PC/layout script for generating layouts on Windows.
Diffstat (limited to 'PC/layout/support/catalog.py')
-rw-r--r--PC/layout/support/catalog.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/PC/layout/support/catalog.py b/PC/layout/support/catalog.py
new file mode 100644
index 0000000..4312118
--- /dev/null
+++ b/PC/layout/support/catalog.py
@@ -0,0 +1,44 @@
+"""
+File generation for catalog signing non-binary contents.
+"""
+
+__author__ = "Steve Dower <steve.dower@python.org>"
+__version__ = "3.8"
+
+
+import sys
+
+__all__ = ["PYTHON_CAT_NAME", "PYTHON_CDF_NAME"]
+
+
+def public(f):
+ __all__.append(f.__name__)
+ return f
+
+
+PYTHON_CAT_NAME = "python.cat"
+PYTHON_CDF_NAME = "python.cdf"
+
+
+CATALOG_TEMPLATE = r"""[CatalogHeader]
+Name={target.stem}.cat
+ResultDir={target.parent}
+PublicVersion=1
+CatalogVersion=2
+HashAlgorithms=SHA256
+PageHashes=false
+EncodingType=
+
+[CatalogFiles]
+"""
+
+
+def can_sign(file):
+ return file.is_file() and file.stat().st_size
+
+
+@public
+def write_catalog(target, files):
+ with target.open("w", encoding="utf-8") as cat:
+ cat.write(CATALOG_TEMPLATE.format(target=target))
+ cat.writelines("<HASH>{}={}\n".format(n, f) for n, f in files if can_sign(f))