cpython/PC/layout/support/nuspec.py

67 lines
2.0 KiB
Python

"""
Provides .props file.
"""
import os
from .constants import *
__all__ = ["get_nuspec_layout"]
PYTHON_NUSPEC_NAME = "python.nuspec"
NUSPEC_DATA = {
"PYTHON_TAG": VER_DOT,
"PYTHON_VERSION": os.getenv("PYTHON_NUSPEC_VERSION"),
"PYTHON_BITNESS": "64-bit" if IS_X64 else "32-bit",
"PACKAGENAME": os.getenv("PYTHON_NUSPEC_PACKAGENAME"),
"PACKAGETITLE": os.getenv("PYTHON_NUSPEC_PACKAGETITLE"),
"FILELIST": r' <file src="**\*" target="tools" />',
}
if not NUSPEC_DATA["PYTHON_VERSION"]:
if VER_NAME:
NUSPEC_DATA["PYTHON_VERSION"] = "{}.{}-{}{}".format(
VER_DOT, VER_MICRO, VER_NAME, VER_SERIAL
)
else:
NUSPEC_DATA["PYTHON_VERSION"] = "{}.{}".format(VER_DOT, VER_MICRO)
if not NUSPEC_DATA["PACKAGETITLE"]:
NUSPEC_DATA["PACKAGETITLE"] = "Python" if IS_X64 else "Python (32-bit)"
if not NUSPEC_DATA["PACKAGENAME"]:
NUSPEC_DATA["PACKAGENAME"] = "python" if IS_X64 else "pythonx86"
FILELIST_WITH_PROPS = r""" <file src="**\*" exclude="python.props" target="tools" />
<file src="python.props" target="build\native" />"""
NUSPEC_TEMPLATE = r"""<?xml version="1.0"?>
<package>
<metadata>
<id>{PACKAGENAME}</id>
<title>{PACKAGETITLE}</title>
<version>{PYTHON_VERSION}</version>
<authors>Python Software Foundation</authors>
<license type="file">tools\LICENSE.txt</license>
<projectUrl>https://www.python.org/</projectUrl>
<description>Installs {PYTHON_BITNESS} Python for use in build scenarios.</description>
<iconUrl>https://www.python.org/static/favicon.ico</iconUrl>
<tags>python</tags>
</metadata>
<files>
{FILELIST}
</files>
</package>
"""
def get_nuspec_layout(ns):
if ns.include_all or ns.include_nuspec:
data = NUSPEC_DATA
if ns.include_all or ns.include_props:
data = dict(data)
data["FILELIST"] = FILELIST_WITH_PROPS
nuspec = NUSPEC_TEMPLATE.format_map(data)
yield "python.nuspec", ("python.nuspec", nuspec.encode("utf-8"))