What changed
- Bump
MobileNativeFoundation.XCLogParser to 0.2.48 in the root package and the xcactivitylog_nif Swift package.
- Add an Xcode 27 failed-build
.xcactivitylog fixture.
- Add a regression test that proves Tuist can parse the fixture successfully.
- Pass
--force-resolved-versions on GitHub Actions tuist install steps so CI bootstrap uses the committed Package.resolved pins while local installs keep the default project behavior.
- Run CI dependency install/resolve steps even after
.build cache restores so stale registry downloads are verified before lint/build/test commands use them.
Why
Xcode 27 activity log sections can include an extra integer token before section text. With XCLogParser 0.2.47, Tuist build processing interpreted that integer as the text token and failed with Unexpected token parsing String: [type: int, value: 0].
XCLogParser 0.2.48 contains the upstream parser tolerance for that token. The fixture keeps Tuist covered against the Sentry failure mode.
After the dependency bump, macOS CI jobs also failed in tuist install because the released Tuist 4.197.0 bootstrap path uses swifterpm 0.7.0, which was floating package versions instead of honoring the committed lockfile. That selected newer gRPC/OpenAPI dependencies and then reported empty version sets for the locked protobuf/collections constraints. In CI we want deterministic installs from Package.resolved, so the workflow commands pass --force-resolved-versions directly.
A follow-up CI run exposed a second bootstrap edge case: when .build restored from cache, the install step was skipped and later commands failed on a missing registry download for 1024jp/gzipswift. Running dependency setup after restore lets CI keep the cache speed-up while still repairing or validating the restored package registry state.
Impact
Build Insights processing can parse Xcode 27 activity logs instead of failing the build-processing job. GitHub Actions installs keep using the dependency versions reviewed in Package.resolved, while local tuist install is not forced into lockfile-only mode.
Validation
- Synced
MobileNativeFoundation/XCLogParser@v0.2.48 into Tuist Swift package registry.
- Confirmed
TUIST_USE_SWIFTERPM=1 tuist install fails without --force-resolved-versions on swifterpm 0.7.0 with no versions found for apple.swift-protobuf matching constraints.
TUIST_USE_SWIFTERPM=1 tuist install --force-resolved-versions
cd server/native/xcactivitylog_nif && swift test --replace-scm-with-registry --security-path /private/tmp/swiftpm-security-xclogparser-ci-fix
git diff --check