Commit cb424c3
fix: ignore stale substep timestamps when computing target compilation duration
For incremental builds, Xcode reuses substep entries from previous build
sessions for files that don't need recompilation. Those substeps keep
their original (older) timestamps and are not flagged
`wasFetchedFromCache`. The previous logic in `addCompilationTimesToTarget`
took the latest substep `compilationEndTimestamp` regardless of whether
it actually ran in this build session, which produced a negative
`compilationDuration` whenever the chosen substep predated the target's
`startTimestamp`.
Filter out such stale substeps by requiring
`compilationEndTimestamp >= parent.startTimestamp` in both
`addCompilationTimesToTarget` and `addCompilationTimesToApp`.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent ff2bb9b commit cb424c3
2 files changed
Lines changed: 39 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
373 | 373 | | |
374 | 374 | | |
375 | 375 | | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
376 | 380 | | |
377 | | - | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
378 | 386 | | |
379 | 387 | | |
380 | 388 | | |
| |||
385 | 393 | | |
386 | 394 | | |
387 | 395 | | |
388 | | - | |
| 396 | + | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
389 | 401 | | |
390 | 402 | | |
391 | 403 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
346 | 346 | | |
347 | 347 | | |
348 | 348 | | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
349 | 374 | | |
350 | 375 | | |
351 | 376 | | |
| |||
0 commit comments