Skip to content

Fix log filename generation and source path space escaping - #2

Merged
cameroncooke merged 1 commit into
cameroncooke:mainfrom
reallyseth:main
Jul 21, 2026
Merged

Fix log filename generation and source path space escaping#2
cameroncooke merged 1 commit into
cameroncooke:mainfrom
reallyseth:main

Conversation

@reallyseth

Copy link
Copy Markdown

Summary

Ports the fixes from getsentry/XcodeBuildMCP#467 directly into xcodemake, plus a follow-up correctness fix for space escaping.

Log filename generation

Previously the capture log was named xcodemake @original_ARGV.log, interpolating the raw xcodebuild arguments directly. When arguments contained absolute paths (e.g. -derivedDataPath /Users/.../DerivedData), the embedded slashes produced invalid filenames.

The log name is now derived from the arguments but:

  • sanitized to replace path separators (/, :) and other filesystem-unsafe characters with _
  • capped at 150 characters
  • suffixed with a short MD5 hash of the arguments (-<hash>.log) so distinct invocations stay unique even after truncation

As a side benefit, the find ... -newer '$log' freshness check is now safer, since the log name no longer contains spaces or slashes.

Source path space escaping

Source paths containing spaces were emitted unescaped in Makefile prerequisites for the SwiftDriver path (Xcode 16.3+), where sources come from the JSON output-file-map as raw paths. make then treated a single dependency as two, breaking builds for projects on paths with spaces.

Prerequisite source paths are now normalized (unescape any existing space escaping, then escape once) in all three dependency branches — CompileC, SwiftDriver, and SwiftCompile. The normalization keeps escaping idempotent, so paths that arrive already backslash-escaped from the build log (CompileC/SwiftCompile) are not double-escaped, while raw JSON paths (SwiftDriver) are escaped correctly.

Testing

  • perl -c xcodemake passes.
  • Verified all three branches emit a single \ escape for a path containing a space.

@cameroncooke
cameroncooke merged commit 7d20fab into cameroncooke:main Jul 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants