Aetheria/Directory.Build.targets
Meta Vens 4f4beb0fe4 Pin CultLib for headless builds
Directory.Build.props names CultLibRoot (CULTLIB_ROOT, else the sibling
checkout) and pins CultLibRevision to f0605367 (CultMath 0.2.1 on main).
Directory.Build.targets carries Delvehold's VerifyCultLibRevision guard,
checking for CultMath.csproj: HEAD must equal the pin and the worktree must
be clean.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-14 17:38:20 +02:00

22 lines
1.3 KiB
XML

<Project>
<Target Name="VerifyCultLibRevision"
BeforeTargets="ResolveProjectReferences"
Condition="'$(SkipCultLibRevisionCheck)' != 'true'">
<Error Condition="!Exists('$(CultLibRoot)\packages\cultmath\src\CultMath\CultMath.csproj')"
Text="CultLibRoot '$(CultLibRoot)' does not contain the required CultMath project." />
<Exec Command="&quot;$(GitExecutable)&quot; -C &quot;$(CultLibRoot)&quot; rev-parse HEAD"
ConsoleToMSBuild="true"
StandardOutputImportance="Low">
<Output TaskParameter="ConsoleOutput" PropertyName="ActualCultLibRevision" />
</Exec>
<Error Condition="'$([System.String]::Copy($(ActualCultLibRevision)).Trim())' != '$(CultLibRevision)'"
Text="CultLib must be revision $(CultLibRevision); found $([System.String]::Copy($(ActualCultLibRevision)).Trim()). Set CultLibRoot to the admitted clean worktree." />
<Exec Command="&quot;$(GitExecutable)&quot; -C &quot;$(CultLibRoot)&quot; status --porcelain --untracked-files=normal"
ConsoleToMSBuild="true"
StandardOutputImportance="Low">
<Output TaskParameter="ConsoleOutput" PropertyName="CultLibStatus" />
</Exec>
<Error Condition="'$([System.String]::Copy($(CultLibStatus)).Trim())' != ''"
Text="CultLibRoot must be clean before Aetheria consumes it." />
</Target>
</Project>