MSBuild: Improve reproducibility

Pin mtime of rcc timestamps.
This commit is contained in:
Stenzek
2026-10-10 21:47:44 +10:00
parent 73d4e3c75a
commit 29fe750fc9
2 changed files with 24 additions and 2 deletions
+4 -1
View File
@@ -41,7 +41,7 @@
<ExceptionHandling>false</ExceptionHandling>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<AdditionalOptions Condition="$(Configuration.Contains(Clang))">/clang:-fno-rtti %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="!$(Configuration.Contains(Clang)) And $(Configuration.Contains(ReleaseLTCG))">/d1trimfile:&quot;$(SolutionDir)\&quot; %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="!$(Configuration.Contains(Clang)) And $(Configuration.Contains(ReleaseLTCG))">/d1trimfile:&quot;$(SolutionDir)\&quot; /Brepro %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions Condition="$(Configuration.Contains(Clang)) And $(Configuration.Contains(ReleaseLTCG))">/clang:-ffile-prefix-map=&quot;$(SolutionDir)\&quot;= %(AdditionalOptions)</AdditionalOptions>
</ClCompile>
<Link>
@@ -49,6 +49,9 @@
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories);$(DepsLibDir)</AdditionalLibraryDirectories>
<AdditionalOptions Condition="$(Configuration.Contains(ReleaseLTCG))">/PDBALTPATH:%_PDB% /Brepro %(AdditionalOptions)</AdditionalOptions>
</Link>
<Lib>
<AdditionalOptions Condition="!$(Configuration.Contains(Clang)) And $(Configuration.Contains(ReleaseLTCG))">/Brepro %(AdditionalOptions)</AdditionalOptions>
</Lib>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="$(Configuration.Contains(Debug))">
+20 -1
View File
@@ -100,7 +100,26 @@
<Output TaskParameter="OutOfDateSources" ItemName="_QtResourceOutOfDate" />
</GetOutOfDateItems>
<Message Condition="'@(_QtResourceOutOfDate)'!=''" Text="rcc %(_QtResourceOutOfDate.Filename)" Importance="High" />
<Exec Condition="'@(_QtResourceOutOfDate)'!=''" Command="%(_QtResourceOutOfDate.Command)" />
<!-- rcc stamps every entry with the mtime of its source file, i.e. the checkout time. Pin it to the commit date instead. -->
<Exec
Condition="'@(_QtResourceOutOfDate)'!='' And '$(SOURCE_DATE_EPOCH)'==''"
Command="git -C &quot;$(SolutionDir).&quot; log -1 --format=%25%25ct"
ConsoleToMSBuild="true"
IgnoreExitCode="true"
IgnoreStandardErrorWarningFormat="true"
StandardOutputImportance="Low"
StandardErrorImportance="Low">
<Output TaskParameter="ConsoleOutput" PropertyName="_QtResourceCommitDate" />
<Output TaskParameter="ExitCode" PropertyName="_QtResourceCommitDateExitCode" />
</Exec>
<PropertyGroup>
<_QtResourceSourceDate>$(SOURCE_DATE_EPOCH)</_QtResourceSourceDate>
<_QtResourceSourceDate Condition="'$(_QtResourceSourceDate)'=='' And '$(_QtResourceCommitDateExitCode)'=='0'">$(_QtResourceCommitDate)</_QtResourceSourceDate>
</PropertyGroup>
<Exec
Condition="'@(_QtResourceOutOfDate)'!=''"
Command="%(_QtResourceOutOfDate.Command)"
EnvironmentVariables="SOURCE_DATE_EPOCH=$(_QtResourceSourceDate)" />
<ItemGroup>
<_QtResourceOutOfDate Remove="@(_QtResourceOutOfDate)" />
<_QtResourceDependency Remove="@(_QtResourceDependency)" />