From 1e6ba42f1212a7973eb5baa5e5745704968c8086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 4 Feb 2025 12:36:21 +0100 Subject: [PATCH] cmake: Find Apple ID via IDEProvisioningTeamByIdentifier for Xcode 16.2 The format of the Xcode preferences has changed, so we need to account for the new format when looking up the default development team. Pick-to: 6.5 Change-Id: Ib34c2e5245c13db4d81218a5a2460417e4fc6347 Reviewed-by: Alexey Edelev (cherry picked from commit 469e4237cf32d27609661132727555490086750b) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit 8f837f6e6f4a9d5c118514dcc80894406e9b5dcb) --- cmake/QtPublicAppleHelpers.cmake | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/cmake/QtPublicAppleHelpers.cmake b/cmake/QtPublicAppleHelpers.cmake index 3df15d6608..7786fed8c6 100644 --- a/cmake/QtPublicAppleHelpers.cmake +++ b/cmake/QtPublicAppleHelpers.cmake @@ -116,10 +116,24 @@ function(_qt_internal_find_apple_development_team_id out_var) # Extract the first account name (email) from the user's Xcode preferences message(DEBUG "Trying to extract an Xcode development team id from '${xcode_preferences_path}'") - execute_process(COMMAND "/usr/libexec/PlistBuddy" - -x -c "print IDEProvisioningTeams" "${xcode_preferences_path}" - OUTPUT_VARIABLE teams_xml - ERROR_VARIABLE plist_error) + + # Try Xcode 16.2 format first + _qt_internal_plist_buddy("${xcode_preferences_path}" + COMMANDS "print IDEProvisioningTeamByIdentifier" + EXTRA_ARGS -x + OUTPUT_VARIABLE teams_xml + ERROR_VARIABLE plist_error + ) + + # Then fall back to older format + if(plist_error OR NOT teams_xml) + _qt_internal_plist_buddy("${xcode_preferences_path}" + COMMANDS "print IDEProvisioningTeams" + EXTRA_ARGS -x + OUTPUT_VARIABLE teams_xml + ERROR_VARIABLE plist_error + ) + endif() # Parsing state. set(is_free "") @@ -152,6 +166,16 @@ function(_qt_internal_find_apple_development_team_id out_var) # ... # # + # AAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE + # + # + # isFreeProvisioningTeam + # + # teamID + # CCC + # ... + # + # # # if(teams_xml AND NOT plist_error)