mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00

Note that the support is not actually enabled yet, and so we won't be publishing these packages. However, for those who want to build it themselves (even by reusing the Azure Pipelines definition), it's now relatively easy to enable.
72 lines
2.1 KiB
Python
72 lines
2.1 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"),
|
|
"FILELIST": r' <file src="**\*" target="tools" />',
|
|
}
|
|
|
|
NUSPEC_PLATFORM_DATA = dict(
|
|
_keys=("PYTHON_BITNESS", "PACKAGENAME", "PACKAGETITLE"),
|
|
win32=("32-bit", "pythonx86", "Python (32-bit)"),
|
|
amd64=("64-bit", "python", "Python"),
|
|
arm32=("ARM", "pythonarm", "Python (ARM)"),
|
|
arm64=("ARM64", "pythonarm64", "Python (ARM64)"),
|
|
)
|
|
|
|
if not NUSPEC_DATA["PYTHON_VERSION"]:
|
|
NUSPEC_DATA["PYTHON_VERSION"] = "{}.{}{}{}".format(
|
|
VER_DOT, VER_MICRO, "-" if VER_SUFFIX else "", VER_SUFFIX
|
|
)
|
|
|
|
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_data_overrides(ns):
|
|
for k, v in zip(NUSPEC_PLATFORM_DATA["_keys"], NUSPEC_PLATFORM_DATA[ns.arch]):
|
|
ev = os.getenv("PYTHON_NUSPEC_" + k)
|
|
if ev:
|
|
yield k, ev
|
|
yield k, v
|
|
|
|
|
|
def get_nuspec_layout(ns):
|
|
if ns.include_all or ns.include_nuspec:
|
|
data = dict(NUSPEC_DATA)
|
|
for k, v in _get_nuspec_data_overrides(ns):
|
|
if not data.get(k):
|
|
data[k] = v
|
|
if ns.include_all or ns.include_props:
|
|
data["FILELIST"] = FILELIST_WITH_PROPS
|
|
nuspec = NUSPEC_TEMPLATE.format_map(data)
|
|
yield "python.nuspec", ("python.nuspec", nuspec.encode("utf-8"))
|