Is there a way to remove the authorization prompt from command-line instances of Instruments (Xcode)?
I am currently using Instruments via a bash script to initiate the command-line interface to start up runs of the Automation plug-in.
With 4.2, this worked well enough, however with the upgrade to Xcode 4.3, I am now being prompted for an authorized user to 'analyze other processes'. No user is ever actually authenticated, even if the correct credentials are granted. I get the following error:
Failed to authorize rights (0x20) with status: -60007.
2012-02-27 19:30:37.232 instruments[54151:1c03] Failed to connect to local pid watcher service: (os/kern) failure
Even with the authentication failure, the Automation plug-in executes, however this requires my script to have a physical babysitter enter credentials, which in many ways defeats the purpose of these command-line runs. Is it possible to add the user details as arguments? Or is there some other way to skip over this prompt without requiring a person at the keys?
-- EDIT --
This authorization dialog appears when you try to run UIAutomation tests from the GUI for the first time.
Filed a radar rdar://10945962.
-- EDIT --
Once the authorization dialog has been answered in the GUI, the prompts stop appearing on the command-line. This kind of work-around doesn't seem valid as an 'answer' though.
Solution 1:
Okay I think I got it working.
Here are some more details about how to remove xcode command line authorization prompt
What I did was the following:
- Mark jenkins user as admin (unfortunately it seems that there is no other way atm)
- Go to /etc/authorization
- search for key system.privilige.taskport
-
change value of allow-root to true
<key>system.privilege.taskport</key> <dict> <key>allow-root</key> <false/> // change to -> <true> <key>class</key> <string>user</string> <key>comment</key> <string>Used by task_for_pid(...). ... </dict>
Now I am being able to use jenkins to run my UIAutomation-Tests via Command Line Script
Solution 2:
Here's a wonderful command that may work for you:
security unlock-keychain -p [password] "${HOME}/Library/Keychains/login.keychain"
It's the command-line way to gain access to a keychain on the Mac. I haven't tested it with Automation, but it's how I've integrated my iOS builds with Jenkins.
(Replace [password] with the password)