From 7b00ca46d3b0e19427e0d7f661868349b694172a Mon Sep 17 00:00:00 2001 From: "mark@chromium.org" Date: Wed, 10 Mar 2010 20:29:33 +0000 Subject: Support Xcode 3.2.2 (prerelease) for release-mode builds. The UUID format displayed by otool has changed. BUG=35162 TEST=Build in release mode with Xcode 3.2.2 (prerelease) Review URL: http://codereview.chromium.org/833001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41200 0039d316-1c4b-4281-b951-d872f2087c98 --- build/mac/strip_save_dsym | 51 ++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/build/mac/strip_save_dsym b/build/mac/strip_save_dsym index 42d16cf..3904c17 100755 --- a/build/mac/strip_save_dsym +++ b/build/mac/strip_save_dsym @@ -118,27 +118,42 @@ def macho_uuids(macho): else: state = 6 elif state == 3: - uuid_match = re.match("^ uuid 0x(..) 0x(..) 0x(..) 0x(..) " - "0x(..) 0x(..) 0x(..) 0x(..)$", - otool_line) - if uuid_match: - state = 4 - uuid = uuid_match.group(1) + uuid_match.group(2) + \ - uuid_match.group(3) + uuid_match.group(4) + "-" + \ - uuid_match.group(5) + uuid_match.group(6) + "-" + \ - uuid_match.group(7) + uuid_match.group(8) + "-" + # The UUID display format changed in the version of otool shipping + # with the Xcode 3.2.2 prerelease. The new format is traditional: + # uuid 4D7135B2-9C56-C5F5-5F49-A994258E0955 + # The old format, from cctools-750 and older's otool, breaks the UUID + # up into a sequence of bytes: + # uuid 0x4d 0x71 0x35 0xb2 0x9c 0x56 0xc5 0xf5 + # 0x5f 0x49 0xa9 0x94 0x25 0x8e 0x09 0x55 + new_uuid_match = re.match("^ uuid (.{8}-.{4}-.{4}-.{4}-.{12})$", + otool_line) + if new_uuid_match: + uuid = new_uuid_match.group(1) + + # Skip state 4, there is no second line to read. + state = 5 else: - state = 6 + old_uuid_match = re.match("^ uuid 0x(..) 0x(..) 0x(..) 0x(..) " + "0x(..) 0x(..) 0x(..) 0x(..)$", + otool_line) + if old_uuid_match: + state = 4 + uuid = old_uuid_match.group(1) + old_uuid_match.group(2) + \ + old_uuid_match.group(3) + old_uuid_match.group(4) + "-" + \ + old_uuid_match.group(5) + old_uuid_match.group(6) + "-" + \ + old_uuid_match.group(7) + old_uuid_match.group(8) + "-" + else: + state = 6 elif state == 4: - uuid_match = re.match("^ 0x(..) 0x(..) 0x(..) 0x(..) " - "0x(..) 0x(..) 0x(..) 0x(..)$", - otool_line) - if uuid_match: + old_uuid_match = re.match("^ 0x(..) 0x(..) 0x(..) 0x(..) " + "0x(..) 0x(..) 0x(..) 0x(..)$", + otool_line) + if old_uuid_match: state = 5 - uuid += uuid_match.group(1) + uuid_match.group(2) + "-" + \ - uuid_match.group(3) + uuid_match.group(4) + \ - uuid_match.group(5) + uuid_match.group(6) + \ - uuid_match.group(7) + uuid_match.group(8) + uuid += old_uuid_match.group(1) + old_uuid_match.group(2) + "-" + \ + old_uuid_match.group(3) + old_uuid_match.group(4) + \ + old_uuid_match.group(5) + old_uuid_match.group(6) + \ + old_uuid_match.group(7) + old_uuid_match.group(8) else: state = 6 -- cgit v1.1