mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """
 | |
| Provides .props file.
 | |
| """
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| 
 | |
| 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="**\*" exclude="python.png" target="tools" />',
 | |
|     "GIT": sys._git,
 | |
| }
 | |
| 
 | |
| 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.png;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>
 | |
|     <icon>images\python.png</icon>
 | |
|     <iconUrl>https://www.python.org/static/favicon.ico</iconUrl>
 | |
|     <tags>python</tags>
 | |
|     <repository type="git" url="https://github.com/Python/CPython.git" commit="{GIT[2]}" />
 | |
|   </metadata>
 | |
|   <files>
 | |
|     <file src="python.png" target="images" />
 | |
| {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"))
 | |
|         yield "python.png", ns.source / "PC" / "icons" / "logox128.png"
 | 
