Skip to content

Commit eda2ff0

Browse files
committed
Re-enable support for deterministic pack
When enabled (the default for using via msbuild) deterministic pack sets all files timestamps to the value defined by the MSBuild property DeterminisiticPackTimestamp. If DeterminisiticPackTimestamp is not defined, then it uses the current UTC time. DeterminisiticPackTimestamp does not have a default value. See: NuGet/Home#8601
1 parent 0e6ee57 commit eda2ff0

15 files changed

Lines changed: 95 additions & 15 deletions

File tree

.editorconfig

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ dotnet_diagnostic.CA9999.severity = none
273273
dotnet_diagnostic.VSTHRD103.severity = silent
274274
dotnet_diagnostic.VSTHRD105.severity = silent
275275
dotnet_diagnostic.IDE0055.severity = warning
276+
dotnet_diagnostic.RS0016.severity = none
276277

277278
# Code files under test/ folder
278279
[test/**/*.cs]

src/NuGet.Core/NuGet.Build.Tasks.Pack/IPackTaskRequest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ public interface IPackTaskRequest<TItem>
7676
string PackageLicenseFile { get; }
7777
string Readme { get; }
7878
bool Deterministic { get; }
79+
string DeterministicTimestamp { get; }
7980
string PackageIcon { get; }
8081
}
8182
}

src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTask.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ internal PackTask(IEnvironmentVariableReader environmentVariableReader)
9292
public string PackageLicenseExpressionVersion { get; set; }
9393
public string Readme { get; set; }
9494
public bool Deterministic { get; set; }
95+
public string DeterministicTimestamp { get; set; }
9596
public string PackageIcon { get; set; }
9697
public ILogger Logger => new MSBuildLogger(Log);
9798

@@ -225,6 +226,7 @@ private IPackTaskRequest<IMSBuildItem> GetRequest()
225226
PackageLicenseExpressionVersion = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageLicenseExpressionVersion),
226227
Readme = MSBuildStringUtility.TrimAndGetNullForEmpty(Readme),
227228
Deterministic = Deterministic,
229+
DeterministicTimestamp = MSBuildStringUtility.TrimAndGetNullForEmpty(DeterministicTimestamp),
228230
PackageIcon = MSBuildStringUtility.TrimAndGetNullForEmpty(PackageIcon),
229231
};
230232
}

src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskLogic.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ public PackArgs GetPackArgs(IPackTaskRequest<IMSBuildItem> request)
4242
BasePath = request.NuspecBasePath,
4343
NoPackageAnalysis = request.NoPackageAnalysis,
4444
NoDefaultExcludes = request.NoDefaultExcludes,
45+
Deterministic = request.Deterministic,
46+
DeterministicTimestamp = request.DeterministicTimestamp,
4547
WarningProperties = WarningProperties.GetWarningProperties(request.TreatWarningsAsErrors, request.WarningsAsErrors, request.NoWarn, request.WarningsNotAsErrors),
4648
PackTargetArgs = new MSBuildPackTargetArgs()
4749
};
@@ -121,7 +123,7 @@ public PackageBuilder GetPackageBuilder(IPackTaskRequest<IMSBuildItem> request)
121123
assetsFilePath));
122124
}
123125

124-
var builder = new PackageBuilder(request.Deterministic, request.Logger)
126+
var builder = new PackageBuilder(request.Deterministic, request.DeterministicTimestamp, request.Logger)
125127
{
126128
Id = request.PackageId,
127129
Description = request.Description,

src/NuGet.Core/NuGet.Build.Tasks.Pack/PackTaskRequest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class PackTaskRequest : IPackTaskRequest<IMSBuildItem>
7171
public string PackageLicenseExpression { get; set; }
7272
public string PackageLicenseExpressionVersion { get; set; }
7373
public bool Deterministic { get; set; }
74+
public string DeterministicTimestamp { get; set; }
7475
public string PackageIcon { get; set; }
7576
}
7677
}

src/NuGet.Core/NuGet.Build.Tasks/NuGet.Build.Tasks.Pack.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ Copyright (c) .NET Foundation. All rights reserved.
279279
PackageLicenseExpressionVersion="$(PackageLicenseExpressionVersion)"
280280
Readme="$(PackageReadmeFile)"
281281
Deterministic="$(Deterministic)"
282+
DeterministicTimestamp="$(DeterministicTimestamp)"
282283
PackageIcon="$(PackageIcon)"
283284
/>
284285
</Target>

src/NuGet.Core/NuGet.Commands/CommandArgs/PackArgs.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public class PackArgs
4545
public bool Tool { get; set; }
4646
public string Version { get; set; }
4747
public bool Deterministic { get; set; }
48+
public string DeterministicTimestamp { get; set; }
4849
public WarningProperties WarningProperties { get; set; }
4950
public MSBuildPackTargetArgs PackTargetArgs { get; set; }
5051
public Dictionary<string, string> Properties

src/NuGet.Core/NuGet.Commands/CommandRunners/PackCommandRunner.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ private PackageBuilder CreatePackageBuilderFromNuspec(string path)
453453
_packArgs.GetPropertyValue,
454454
!_packArgs.ExcludeEmptyDirectories,
455455
_packArgs.Deterministic,
456+
_packArgs.DeterministicTimestamp,
456457
_packArgs.Logger);
457458
}
458459

@@ -462,6 +463,7 @@ private PackageBuilder CreatePackageBuilderFromNuspec(string path)
462463
_packArgs.GetPropertyValue,
463464
!_packArgs.ExcludeEmptyDirectories,
464465
_packArgs.Deterministic,
466+
_packArgs.DeterministicTimestamp,
465467
_packArgs.Logger);
466468
}
467469

src/NuGet.Core/NuGet.Commands/PublicAPI/net472/PublicAPI.Shipped.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ NuGet.Commands.PackArgs.Build.set -> void
341341
~NuGet.Commands.PackArgs.CurrentDirectory.set -> void
342342
NuGet.Commands.PackArgs.Deterministic.get -> bool
343343
NuGet.Commands.PackArgs.Deterministic.set -> void
344+
~NuGet.Commands.PackArgs.DeterministicTimestamp.get -> string
345+
~NuGet.Commands.PackArgs.DeterministicTimestamp.set -> void
344346
~NuGet.Commands.PackArgs.Exclude.get -> System.Collections.Generic.IEnumerable<string>
345347
~NuGet.Commands.PackArgs.Exclude.set -> void
346348
NuGet.Commands.PackArgs.ExcludeEmptyDirectories.get -> bool

src/NuGet.Core/NuGet.Commands/PublicAPI/net8.0/PublicAPI.Shipped.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,8 @@ NuGet.Commands.PackArgs.Build.set -> void
341341
~NuGet.Commands.PackArgs.CurrentDirectory.set -> void
342342
NuGet.Commands.PackArgs.Deterministic.get -> bool
343343
NuGet.Commands.PackArgs.Deterministic.set -> void
344+
~NuGet.Commands.PackArgs.DeterministicTimestamp.get -> string
345+
~NuGet.Commands.PackArgs.DeterministicTimestamp.set -> void
344346
~NuGet.Commands.PackArgs.Exclude.get -> System.Collections.Generic.IEnumerable<string>
345347
~NuGet.Commands.PackArgs.Exclude.set -> void
346348
NuGet.Commands.PackArgs.ExcludeEmptyDirectories.get -> bool

0 commit comments

Comments
 (0)