diff options
author | Steve Dower <steve.dower@microsoft.com> | 2018-12-11 02:52:57 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-11 02:52:57 (GMT) |
commit | 0cd6391fd890368ea1743dac50c366b42f2fd126 (patch) | |
tree | 1e2d8fd6c85a08477d3eb4082badd9a50386e63e /PC/layout/support/catalog.py | |
parent | 1c3de541e64f75046b20cdd27bada1557e550bcd (diff) | |
download | cpython-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.py | 44 |
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)) |