Skip to content

Fix log filename generation and source path space escaping#2

Open
reallyseth wants to merge 1 commit into
cameroncooke:mainfrom
reallyseth:main
Open

Fix log filename generation and source path space escaping#2
reallyseth wants to merge 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.

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.

1 participant