DotNetBuild.props 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <!-- When altering this file, please include @dotnet/product-construction as a reviewer. -->
  2. <Project>
  3. <PropertyGroup>
  4. <GitHubRepositoryName>aspnetcore</GitHubRepositoryName>
  5. <SourceBuildManagedOnly>true</SourceBuildManagedOnly>
  6. <SourceBuildTargetFrameworkFilter>netstandard2.0%3bnetstandard2.1%3bnetcoreapp2.1%3bnetcoreapp3.1%3bnet5.0%3bnet6.0%3bnet7.0%3bnet8.0%3bnet9.0%3bnet10.0</SourceBuildTargetFrameworkFilter>
  7. </PropertyGroup>
  8. <!--
  9. Remove inner source .globalconfig file as both the inner and outer config files get loaded and cause a conflict.
  10. Leaving the inner will cause all conflicting settings to be ignored.
  11. https://learn.microsoft.com/dotnet/fundamentals/code-analysis/configuration-files#general-options.
  12. This only needs to be done if there is an inner clone.
  13. -->
  14. <Target Name="RemoveInnerGlobalConfig"
  15. DependsOnTargets="PrepareInnerSourceBuildRepoRoot"
  16. BeforeTargets="RunInnerSourceBuildCommand"
  17. Condition="'$(DotNetBuildOrchestrator)' != 'true'">
  18. <Delete Files="$(InnerSourceBuildRepoRoot).globalconfig" />
  19. </Target>
  20. <!-- Build RepoTasks - this is normally triggered via the build script but the inner ArPow source-build is run via msbuild.
  21. https://github.com/dotnet/source-build/issues/3807 -->
  22. <Target Name="BuildRepoTasks"
  23. DependsOnTargets="GetSourceBuildCommandConfiguration"
  24. Condition="'$(DotNetBuildInnerRepo)' == 'true' and '$(DotNetBuildSourceOnly)' == 'true'"
  25. BeforeTargets="Execute">
  26. <!-- If the alternative runtime location and key are present, pass those through -->
  27. <PropertyGroup>
  28. <_AdditionalRepoTaskBuildArgs />
  29. <_AdditionalRepoTaskBuildArgs Condition="'$(DotNetRuntimeSourceFeed)' != ''" >$(_AdditionalRepoTaskBuildArgs) --runtimesourcefeed $(DotNetRuntimeSourceFeed)</_AdditionalRepoTaskBuildArgs>
  30. <_AdditionalRepoTaskBuildArgs Condition="'$(DotNetRuntimeSourceFeedKey)' != ''" >$(_AdditionalRepoTaskBuildArgs) --runtimesourcefeedkey $(DotNetRuntimeSourceFeedKey)</_AdditionalRepoTaskBuildArgs>
  31. <_AdditionalRepoTaskBuildArgs Condition="'$(RestoreConfigFile)' != ''" >$(_AdditionalRepoTaskBuildArgs) /p:RestoreConfigFile=$(RestoreConfigFile)</_AdditionalRepoTaskBuildArgs>
  32. </PropertyGroup>
  33. <ItemGroup>
  34. <!-- We need to flow FullAssemblySigningSupported even when building repo tasks because they use full signing -->
  35. <InnerBuildEnv Condition="'$(FullAssemblySigningSupported)' != ''" Include="FullAssemblySigningSupported=$(FullAssemblySigningSupported)" />
  36. </ItemGroup>
  37. <!-- Call the build.sh script to build the repo tasks. Set IgnoreStandardErrorWarningFormat
  38. to true. This avoids fatal errors, because in internal builds there are usually a few failed installation
  39. attempts as the install script walks through potential locations for a runtime.
  40. The overall build script will return a proper exit code, but we don't want to pick up the printed error messages. -->
  41. <Exec
  42. Command="./eng/build.sh --only-build-repo-tasks -bl $(_AdditionalRepoTaskBuildArgs) $(InnerBuildArgs)"
  43. IgnoreStandardErrorWarningFormat="true"
  44. WorkingDirectory="$(InnerSourceBuildRepoRoot)"
  45. EnvironmentVariables="@(InnerBuildEnv)"
  46. Condition="'$(OS)' != 'Windows_NT'" />
  47. <Exec
  48. Command=".\eng\build.cmd -OnlyBuildRepoTasks -bl $(_AdditionalRepoTaskBuildArgs) $(InnerBuildArgs)"
  49. IgnoreStandardErrorWarningFormat="true"
  50. WorkingDirectory="$(InnerSourceBuildRepoRoot)"
  51. EnvironmentVariables="@(InnerBuildEnv)"
  52. Condition="'$(OS)' == 'Windows_NT'" />
  53. </Target>
  54. <Target Name="CustomizeInnerBuildArgs"
  55. BeforeTargets="GetSourceBuildCommandConfiguration">
  56. <PropertyGroup>
  57. <InnerBuildArgs Condition="'$(DotNetBuildUseMonoRuntime)' == 'true'">$(InnerBuildArgs) /p:CrossgenOutput=false</InnerBuildArgs>
  58. </PropertyGroup>
  59. </Target>
  60. <Target Name="GetAspnetcoreCategorizedIntermediateNupkgContents"
  61. BeforeTargets="GetCategorizedIntermediateNupkgContents">
  62. <PropertyGroup>
  63. <InstallersArtifactsDir>$(CurrentRepoSourceBuildArtifactsDir)\installers\$(Configuration)\</InstallersArtifactsDir>
  64. </PropertyGroup>
  65. <ItemGroup>
  66. <!--
  67. Add the internal installers artifacts required by dotnet/installer.
  68. -->
  69. <IntermediateNupkgArtifactFile Include="$(InstallersArtifactsDir)aspnetcore_base_runtime.version" />
  70. <IntermediateNupkgArtifactFile Include="$(InstallersArtifactsDir)aspnetcore-runtime-*.msi" />
  71. <IntermediateNupkgArtifactFile Include="$(InstallersArtifactsDir)aspnetcore-runtime-*.pkg" />
  72. </ItemGroup>
  73. </Target>
  74. <Target Name="RestoreNpmPackages"
  75. Condition="'$(BuildNodeJS)' == 'true' and '$(DotNetBuildSourceOnly)' == 'true'"
  76. BeforeTargets="RunInnerSourceBuildCommand">
  77. <Message Text="Checking node version..." Importance="high" />
  78. <Exec
  79. Command="node --version"
  80. WorkingDirectory="$(InnerSourceBuildRepoRoot)" />
  81. <Message Text="Checking npm version..." Importance="high" />
  82. <Exec
  83. Command="npm --version"
  84. WorkingDirectory="$(InnerSourceBuildRepoRoot)" />
  85. <PropertyGroup>
  86. <!-- Disable installing puppeteer browsers when running in source build -->
  87. <_AdditionalEnvironmentVariable Condition="$(DotNetBuildSourceOnly) == 'true'">PUPPETEER_SKIP_DOWNLOAD=1</_AdditionalEnvironmentVariable>
  88. </PropertyGroup>
  89. <Exec
  90. Command="npm ci"
  91. WorkingDirectory="$(InnerSourceBuildRepoRoot)"
  92. EnvironmentVariables="$(_AdditionalEnvironmentVariable)" />
  93. </Target>
  94. <Target Name="BuildNpmFiles"
  95. Condition="'$(BuildNodeJS)' == 'true' and '$(DotNetBuildSourceOnly)' == 'true'"
  96. DependsOnTargets="RestoreNpmPackages"
  97. BeforeTargets="RunInnerSourceBuildCommand">
  98. <Message Text="Building Node JS files..." Importance="high" />
  99. <Exec
  100. Command="npm run build"
  101. WorkingDirectory="$(InnerSourceBuildRepoRoot)" />
  102. </Target>
  103. </Project>