[Python-checkins] Add props file for nuget packages (#3410) (#3413)

Steve Dower webhook-mailer at python.org
Wed Sep 6 23:41:36 EDT 2017


https://github.com/python/cpython/commit/cb44b626da0295e64a34360475201e672df2467a
commit: cb44b626da0295e64a34360475201e672df2467a
branch: 3.6
author: Steve Dower <steve.dower at microsoft.com>
committer: GitHub <noreply at github.com>
date: 2017-09-06T20:41:32-07:00
summary:

Add props file for nuget packages (#3410) (#3413)

files:
A Tools/nuget/python.props
M Tools/nuget/make_pkg.proj
M Tools/nuget/python.nuspec
M Tools/nuget/pythondaily.nuspec
M Tools/nuget/pythonx86.nuspec

diff --git a/Tools/nuget/make_pkg.proj b/Tools/nuget/make_pkg.proj
index 3750d8dcc86..9843bc97ccd 100644
--- a/Tools/nuget/make_pkg.proj
+++ b/Tools/nuget/make_pkg.proj
@@ -30,8 +30,8 @@
         <PipArguments>"$(IntermediateOutputPath)\python.exe" -B -c "import sys; sys.path.append(r'$(PySourcePath)\Lib'); import ensurepip; ensurepip._main()"</PipArguments>
         <PackageArguments Condition="$(Packages) != ''">"$(IntermediateOutputPath)\python.exe" -B -m pip install -U $(Packages)</PackageArguments>
         
-        <NugetArguments>"$(Nuget)" pack "$(MSBuildThisFileDirectory)\$(OutputName).nuspec"</NugetArguments>
-        <NugetArguments>$(NugetArguments) -BasePath "$(IntermediateOutputPath)"</NugetArguments>
+        <NugetPackCommand>"$(Nuget)" pack "$(MSBuildThisFileDirectory)\$(OutputName).nuspec" -BasePath "$(IntermediateOutputPath)"</NugetPackCommand>
+        <NugetPackSymbolsCommand Condition="Exists('$(MSBuildThisFileDirectory)\$(OutputName).symbols.nuspec')">"$(Nuget)" pack "$(MSBuildThisFileDirectory)\$(OutputName).symbols.nuspec" -BasePath "$(BuildPath.TrimEnd(`\`))"</NugetPackSymbolsCommand>
         <NugetArguments>$(NugetArguments) -OutputDirectory "$(OutputPath.Trim(`\`))"</NugetArguments>
         <NugetArguments>$(NugetArguments) -Version "$(NuspecVersion)"</NugetArguments>
         <NugetArguments>$(NugetArguments) -NoPackageAnalysis -NonInteractive</NugetArguments>
@@ -51,7 +51,22 @@
         <Exec Command="setlocal%0D%0A$(Environment)%0D%0A$(PythonArguments)" />
         <Exec Command="$(PipArguments)" />
         <Exec Command="$(PackageArguments)" Condition="$(PackageArguments) != ''" />
-        <Exec Command="$(NugetArguments)" />
+
+        <PropertyGroup>
+            <_PropsContents>$([System.IO.File]::ReadAllText('python.props'))</_PropsContents>
+            <_PropsContents>$(_PropsContents.Replace('$$PYTHON_TAG$$', '$(MajorVersionNumber).$(MinorVersionNumber)'))</_PropsContents>
+            <_PropsContents>$(_PropsContents.Replace('$$PYTHON_VERSION$$', '$(NuspecVersion)'))</_PropsContents>
+            <_PropsContents Condition="$(Platform) == 'x86'">$(_PropsContents.Replace('$$PYTHON_PLATFORM$$', 'Win32'))</_PropsContents>
+            <_PropsContents Condition="$(Platform) != 'x86'">$(_PropsContents.Replace('$$PYTHON_PLATFORM$$', '$(Platform)'))</_PropsContents>
+            <_PropsContents>$(_PropsContents.Replace('$$PYTHON_TARGET$$', '_GetPythonRuntimeFilesDependsOn$(MajorVersionNumber)$(MinorVersionNumber)_$(Platform)'))</_PropsContents>
+            <_ExistingContents Condition="Exists('$(IntermediateOutputPath)\python.props')">$([System.IO.File]::ReadAllText('$(IntermediateOutputPath)\python.props'))</_ExistingContents>
+        </PropertyGroup>
+        <WriteLinesToFile File="$(IntermediateOutputPath)\python.props"
+                          Lines="$(_PropsContents)"
+                          Condition="$(_PropsContents) != $(_ExistingContents)" />
+
+        <Exec Command="$(NugetPackCommand) $(NugetArguments)" />
+        <Exec Command="$(NugetPackSymbolsCommand) $(NugetArguments)" Condition="$(NugetPackSymbolsCommand) != ''" />
     </Target>
 
     <Target Name="AfterBuild" />
diff --git a/Tools/nuget/python.nuspec b/Tools/nuget/python.nuspec
index b3c5c3487ad..d5f3e632423 100644
--- a/Tools/nuget/python.nuspec
+++ b/Tools/nuget/python.nuspec
@@ -13,6 +13,7 @@
     <tags>python</tags>
   </metadata>
   <files>
-    <file src="**\*" target="tools" />
+    <file src="**\*" exclude="python.props" target="tools" />
+    <file src="python.props" target="build\native" />
   </files>
 </package>
diff --git a/Tools/nuget/python.props b/Tools/nuget/python.props
new file mode 100644
index 00000000000..4cc70083ebe
--- /dev/null
+++ b/Tools/nuget/python.props
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="$(Platform) == '$$PYTHON_PLATFORM$$'">
+    <PythonHome>$(MSBuildThisFileDirectory)\..\..\tools</PythonHome>
+    <PythonInclude>$(PythonHome)\include</PythonInclude>
+    <PythonLibs>$(PythonHome)\libs</PythonLibs>
+    <PythonTag>$$PYTHON_TAG$$</PythonTag>
+    <PythonVersion>$$PYTHON_VERSION$$</PythonVersion>
+    
+    <IncludePythonExe Condition="$(IncludePythonExe) == ''">true</IncludePythonExe>
+    <IncludeDistutils Condition="$(IncludeDistutils) == ''">false</IncludeDistutils>
+    <IncludeLib2To3 Condition="$(IncludeLib2To3) == ''">false</IncludeLib2To3>
+    <IncludeVEnv Condition="$(IncludeVEnv) == ''">false</IncludeVEnv>
+
+    <GetPythonRuntimeFilesDependsOn>$$PYTHON_TARGET$$;$(GetPythonRuntimeFilesDependsOn)</GetPythonRuntimeFilesDependsOn>
+  </PropertyGroup>
+
+  <ItemDefinitionGroup Condition="$(Platform) == '$$PYTHON_PLATFORM$$'">
+    <ClCompile>
+      <AdditionalIncludeDirectories>$(PythonInclude);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <AdditionalLibraryDirectories>$(PythonLibs);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+    </Link>
+  </ItemDefinitionGroup>
+
+  <Target Name="GetPythonRuntimeFiles" Returns="@(PythonRuntime)" DependsOnTargets="$(GetPythonRuntimeFilesDependsOn)" />
+
+  <Target Name="$$PYTHON_TARGET$$" Returns="@(PythonRuntime)">
+    <ItemGroup>
+      <_PythonRuntimeExe Include="$(PythonHome)\python*.dll" />
+      <_PythonRuntimeExe Include="$(PythonHome)\vcruntime140.dll" />
+      <_PythonRuntimeExe Include="$(PythonHome)\python*.exe" Condition="$(IncludePythonExe) == 'true'" />
+      <_PythonRuntimeExe>
+        <Link>%(Filename)%(Extension)</Link>
+      </_PythonRuntimeExe>
+      <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.pyd" />
+      <_PythonRuntimeDlls Include="$(PythonHome)\DLLs\*.dll" />
+      <_PythonRuntimeDlls>
+        <Link>DLLs\%(Filename)%(Extension)</Link>
+      </_PythonRuntimeDlls>
+      <_PythonRuntimeLib Include="$(PythonHome)\Lib\**\*" Exclude="$(PythonHome)\Lib\**\*.pyc;$(PythonHome)\Lib\site-packages\**\*" />
+      <_PythonRuntimeLib Remove="$(PythonHome)\Lib\distutils\**\*" Condition="$(IncludeDistutils) != 'true'" />
+      <_PythonRuntimeLib Remove="$(PythonHome)\Lib\lib2to3\**\*" Condition="$(IncludeLib2To3) != 'true'" />
+      <_PythonRuntimeLib Remove="$(PythonHome)\Lib\ensurepip\**\*" Condition="$(IncludeVEnv) != 'true'" />
+      <_PythonRuntimeLib Remove="$(PythonHome)\Lib\venv\**\*" Condition="$(IncludeVEnv) != 'true'" />
+      <_PythonRuntimeLib>
+        <Link>Lib\%(RecursiveDir)%(Filename)%(Extension)</Link>
+      </_PythonRuntimeLib>
+      <PythonRuntime Include="@(_PythonRuntimeExe);@(_PythonRuntimeDlls);@(_PythonRuntimeLib)" />
+    </ItemGroup>
+    
+    <Message Importance="low" Text="Collected Python runtime from $(PythonHome):%0D%0A@(PythonRuntime->'  %(Link)','%0D%0A')" />
+  </Target>
+</Project>
diff --git a/Tools/nuget/pythondaily.nuspec b/Tools/nuget/pythondaily.nuspec
index 2634ed14a88..ee3343bbb7b 100644
--- a/Tools/nuget/pythondaily.nuspec
+++ b/Tools/nuget/pythondaily.nuspec
@@ -13,6 +13,7 @@
     <tags>python</tags>
   </metadata>
   <files>
-    <file src="**\*" target="tools" />
+    <file src="**\*" exclude="python.props" target="tools" />
+    <file src="python.props" target="build\native" />
   </files>
 </package>
diff --git a/Tools/nuget/pythonx86.nuspec b/Tools/nuget/pythonx86.nuspec
index b55c8799c0f..ebfcd6c92a4 100644
--- a/Tools/nuget/pythonx86.nuspec
+++ b/Tools/nuget/pythonx86.nuspec
@@ -13,6 +13,7 @@
     <tags>python</tags>
   </metadata>
   <files>
-    <file src="**\*" target="tools" />
+    <file src="**\*" exclude="python.props" target="tools" />
+    <file src="python.props" target="build\native" />
   </files>
 </package>



More information about the Python-checkins mailing list