Skip to content

Commit 6ebf12a

Browse files
committed
Add text-only package into tarball as source
Loosely based on reverting 444483c, but simplified for text-only packages and updated to new tarball generation infra.
1 parent 0985785 commit 6ebf12a

File tree

5 files changed

+128
-6
lines changed

5 files changed

+128
-6
lines changed

Directory.Build.props

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
<OfflinePrebuiltBurndownDataFile>$(PackageReportDir)PrebuiltBurndownData-offline.csv</OfflinePrebuiltBurndownDataFile>
156156
<OnlinePrebuiltBurndownDataFile>$(PackageReportDir)PrebuiltBurndownData-online.csv</OnlinePrebuiltBurndownDataFile>
157157
<ReferencePackagesBaseDir>$(IntermediatePath)reference-packages/</ReferencePackagesBaseDir>
158+
<TextOnlyPackageBaseDir>$(IntermediatePath)text-only-packages/</TextOnlyPackageBaseDir>
158159
<ExternalTarballsDir>$(IntermediatePath)external-tarballs/</ExternalTarballsDir>
159160
<!--
160161
Change ReferencePackagesBaseDir & ExternalTarballsDir conditionally in offline build.
@@ -163,6 +164,7 @@
163164
-->
164165
<ExternalTarballsDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/archive/</ExternalTarballsDir>
165166
<ReferencePackagesBaseDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/reference/</ReferencePackagesBaseDir>
167+
<TextOnlyPackageBaseDir Condition="'$(OfflineBuild)' == 'true'">$(ProjectDir)packages/text-only/</TextOnlyPackageBaseDir>
166168
<ReferencePackagesDir>$(ReferencePackagesBaseDir)packages/</ReferencePackagesDir>
167169
<ReferencePackagesDir Condition="'$(CustomReferencePackagesPath)' != ''">$(CustomReferencePackagesPath)/</ReferencePackagesDir>
168170
<SourceBuiltArtifactsTarballName>Private.SourceBuilt.Artifacts</SourceBuiltArtifactsTarballName>

eng/SourceBuild.Tarball.AllowedPrebuilts.targets

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,8 @@
33
<Target Name="AllowWorkInProgressPrebuilts"
44
BeforeTargets="ForbidPrebuilts">
55
<ItemGroup>
6-
<AllowedPrebuiltPackageFile Include="
7-
$(TarballPrebuiltPackageDir)microsoft.dotnet.web.itemtemplates.5.0.2.nupkg;
8-
$(TarballPrebuiltPackageDir)microsoft.dotnet.web.projecttemplates.5.0.5.0.2.nupkg;
9-
$(TarballPrebuiltPackageDir)microsoft.dotnet.web.spa.projecttemplates.5.0.5.0.2.nupkg;
10-
" />
6+
<!-- Example: $(TarballPrebuiltPackageDir)microsoft.dotnet.web.itemtemplates.5.0.2.nupkg -->
7+
<AllowedPrebuiltPackageFile />
118
</ItemGroup>
129
</Target>
1310

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<Project>
2+
3+
<UsingTask AssemblyFile="$(XPlatSourceBuildTasksAssembly)" TaskName="ReplaceTextInFile" />
4+
5+
<!--
6+
Find text-only nupkgs and decompose them into text files to include in the tarball as source
7+
code. This simplifies maintenance by removing the need to put a new version of these files in
8+
dotnet/source-build-reference-packages for potentially every single servicing release.
9+
10+
'dotnet new' template packages are a prominent example of text-only packages that change often.
11+
-->
12+
<Target Name="AddAllUnpackedTextOnlyPackageSource"
13+
DependsOnTargets="GetTarballDirProps"
14+
BeforeTargets="AddTarballPackages">
15+
<PropertyGroup>
16+
<TarballUnpackedTextOnlyPackageSourceDir>$([MSBuild]::NormalizeDirectory('$(TarballRootDir)', 'packages', 'text-only'))</TarballUnpackedTextOnlyPackageSourceDir>
17+
</PropertyGroup>
18+
19+
<!--
20+
Find .nupkg files in package cache in order to locate the extraction directory, then filter
21+
which files are copied to the tarball to exclude the nupkg itself and unnecessary metadata.
22+
-->
23+
<ItemGroup>
24+
<TextOnlyPrebuiltNupkgFile Include="
25+
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.itemtemplates.5.0.*.nupkg;
26+
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.projecttemplates.5.0.5.0.*.nupkg;
27+
$(ProjectDir)packages\restored\**\microsoft.dotnet.web.spa.projecttemplates.5.0.5.0.*.nupkg;
28+
" />
29+
30+
<!-- Make prebuilt nupkg copy logic ignore these text-only nupkgs. -->
31+
<RefOnlyPackageFilename Include="@(TextOnlyPrebuiltNupkgFile->'%(Filename)')" />
32+
33+
<TextOnlyPrebuiltNupkgProject
34+
Include="$(MSBuildProjectFullPath)"
35+
Properties="
36+
TextOnlyPackageRootDir=%(TextOnlyPrebuiltNupkgFile.RootDir)%(TextOnlyPrebuiltNupkgFile.Directory)" />
37+
</ItemGroup>
38+
39+
<MSBuild
40+
Projects="@(TextOnlyPrebuiltNupkgProject)"
41+
Targets="AddUnpackedTextOnlyPackageSource">
42+
<Output TaskParameter="TargetOutputs" ItemName="TarballCopyFile" />
43+
</MSBuild>
44+
</Target>
45+
46+
<Target Name="AddUnpackedTextOnlyPackageSource"
47+
DependsOnTargets="GetTarballDirProps"
48+
Returns="@(TarballCopyFile)">
49+
<PropertyGroup>
50+
<PackageVersionDirFile>$([System.IO.Path]::GetDirectoryName('$(TextOnlyPackageRootDir)'))</PackageVersionDirFile>
51+
<PackageIdDirFile>$([System.IO.Path]::GetDirectoryName('$(PackageVersionDirFile)'))</PackageIdDirFile>
52+
<PackageVersion>$([System.IO.Path]::GetFileName('$(PackageVersionDirFile)'))</PackageVersion>
53+
<PackageId>$([System.IO.Path]::GetFileName('$(PackageIdDirFile)'))</PackageId>
54+
55+
<PackageIntermediateDir>$([MSBuild]::NormalizeDirectory('$(TextOnlyPackageBaseDir)', '$(PackageId)', '$(PackageVersion)'))</PackageIntermediateDir>
56+
</PropertyGroup>
57+
58+
<MakeDir Directories="$(PackageIntermediateDir)" />
59+
60+
<ItemGroup>
61+
<NuspecFile Include="$(TextOnlyPackageRootDir)*.nuspec" />
62+
<PackableNuspecFile Include="@(NuspecFile->'$(PackageIntermediateDir)%(Filename)%(Extension)')" />
63+
</ItemGroup>
64+
65+
<Error Condition="@(NuspecFile->Count()) != 1" Text="Expected exactly one nuspec file in $(TextOnlyPackageRootDir)" />
66+
67+
<Copy SourceFiles="@(NuspecFile)" DestinationFiles="@(PackableNuspecFile)" />
68+
69+
<ReplaceTextInFile
70+
InputFile="@(PackableNuspecFile)"
71+
OldText="&lt;/package&gt;"
72+
NewText="&lt;files&gt;&lt;file src=&quot;.\**\*&quot;/&gt;&lt;/files&gt;&lt;/package&gt;" />
73+
74+
<ItemGroup>
75+
<TextOnlyPackageContentFile
76+
Include="
77+
$(TextOnlyPackageRootDir)**;
78+
$(PackageIntermediateDir)**"
79+
Exclude="
80+
@(NuspecFile);
81+
$(TextOnlyPackageRootDir)**\.nupkg.metadata;
82+
$(TextOnlyPackageRootDir)**\.signature.p7s;
83+
$(TextOnlyPackageRootDir)**\*.nupkg;
84+
$(TextOnlyPackageRootDir)**\*.nupkg.sha512" />
85+
86+
<TarballCopyFile
87+
Include="@(TextOnlyPackageContentFile)"
88+
RelativeDestination="packages\text-only\$(PackageId)\$(PackageVersion)\%(RecursiveDir)%(Filename)%(Extension)" />
89+
</ItemGroup>
90+
</Target>
91+
92+
</Project>

eng/SourceBuild.Tarball.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
<Import Project="SourceBuild.Tarball.KnownExtraPrebuilts.targets" />
2121
<Import Project="SourceBuild.Tarball.AllowedPrebuilts.targets" />
22+
<Import Project="SourceBuild.Tarball.TextOnlyPrebuilts.targets" />
2223

2324
<Import
2425
Project="SourceBuild.Tarball.DestructiveCleanup.targets"

tools-local/init-build.proj

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,17 @@
1919
</PropertyGroup>
2020

2121
<Target Name="Build">
22-
<CallTarget Targets="UnpackTarballs;BuildXPlatTasks;AcquireDarc;FetchSources;WriteSourceLinkMetadata;ExtractToolPackage;GenerateRootFs;ApplyPatches;PoisonPrebuiltPackages" />
22+
<CallTarget Targets="
23+
UnpackTarballs;
24+
BuildXPlatTasks;
25+
AcquireDarc;
26+
FetchSources;
27+
WriteSourceLinkMetadata;
28+
ExtractToolPackage;
29+
GenerateRootFs;
30+
BuildTextOnlyPackages;
31+
ApplyPatches;
32+
PoisonPrebuiltPackages" />
2333
</Target>
2434

2535
<Target Name="PrepareOfflineLocalTools"
@@ -83,6 +93,26 @@
8393
<Exec Condition="'$(Platform)' == 'armel'" Command="$(ArmEnvironmentVariables) $(ProjectDir)cross/armel/tizen-build-rootfs.sh" />
8494
</Target>
8595

96+
<Target Name="BuildTextOnlyPackages"
97+
Condition="'$(OfflineBuild)' == 'true'"
98+
Inputs="$(MSBuildProjectFullPath)"
99+
Outputs="$(CompletedSemaphorePath)BuildTextOnlyPackages.complete">
100+
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Packing text-only packages." />
101+
102+
<ItemGroup>
103+
<TextOnlyPackageNuspecFile Include="$(TextOnlyPackageBaseDir)/**/*.nuspec" />
104+
</ItemGroup>
105+
106+
<NugetPack
107+
Nuspecs="%(TextOnlyPackageNuspecFile.Identity)"
108+
OutputDirectory="$(SourceBuiltPackagesPath)"
109+
ExcludeEmptyDirectories="false"
110+
CreateSymbolPackage="false" />
111+
112+
<Message Importance="High" Text="[$([System.DateTime]::Now.ToString('HH:mm:ss.ff'))] Done packing text-only packages." />
113+
<WriteLinesToFile File="$(CompletedSemaphorePath)BuildTextOnlyPackages.complete" Overwrite="true" />
114+
</Target>
115+
86116
<Target Name="ExtractToolPackage"
87117
DependsOnTargets="UnpackTarballs;BuildXPlatTasks"
88118
Condition="'$(OfflineBuild)' == 'true'"

0 commit comments

Comments
 (0)