DyCI / dyci-main

Dynamic Code Injection Tool for Objective-C
MIT License
1.12k stars 121 forks source link

dyci failing on Xcode 7.1 #102

Closed aure closed 9 years ago

aure commented 9 years ago

I use dyci via KZPlaygrounds for AudioKit's playgrounds (http://audiokit.io/playgrounds/) and recently I've been getting this error on Xcode 7.1. Can someone point me in the right direction to tracking down the problem?

Failed (1) Playground: Recompiled AudioKitPlayground/AudioKitPlayground/Playground.m Executing: /usr/bin/python /Users/aure/.dyci/scripts/dyci-recompile.py /Users/aure/Developer/AudioKit/Playgrounds/AudioKitPlayground/AudioKitPlayground/Playground.m

Traceback (most recent call last): File "/Users/aure/.dyci/scripts/dyci-recompile.py", line 177, in runAndFailOnError(compileString) File "/Users/aure/.dyci/scripts/dyci-recompile.py", line 19, in runAndFailOnError stderr=subprocess.PIPE) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in init errread, errwrite) File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1335, in _execute_child raise child_exception OSError: [Errno 2] No such file or directory

Failed (1) Playground: Recompiled AudioKitPlayground/AudioKitPlayground/Playground.m

PaulTaykalo commented 9 years ago

First of all check if xcode-select is pointing to correct Xcode (in case if you have more than one) https://github.com/DyCI/dyci-main/blob/master/Scripts/dyci-recompile.py#L167-L177 Secondly, make sure that clang-real is really there. clang-real can be removed upon Xcode reinstallation, so you'll need to reinstall dyci again. Hope this helps.

aure commented 9 years ago

clang-real is not there, and when I reinstall dyci it doesn't error but doesn't create that file.

PaulTaykalo commented 9 years ago

before running install.sh please, make a copy of clang that is about to be replaced:) @aure check the latest version of the dyci install.sh and make sure that you're using this one https://github.com/DyCI/dyci-main/commit/db2b9df366adcc4a6c5e23c6803b3cbc85a2df9b

aure commented 9 years ago

I always use the latest because the install script I use downloads the newest dyci as part of the script:

https://github.com/audiokit/AudioKit/blob/master/Playgrounds/install.sh

I've already run this a few times without making a backup of clang.

PaulTaykalo commented 9 years ago

@aure can you try to install dyci manually and turn on verbose mode in ./install.sh -v?

aure commented 9 years ago

Sure...

└─➤ ./install.sh -v

== Backing up clang : grep -Fq == CLANG_PROXY == /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup cp: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup: Permission denied

echo Backup is at : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup Done. == Faking up clang : cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-real cp: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup: No such file or directory

cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-real++ cp: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup: No such file or directory

sudo cp Scripts/dyci-clang.py /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

sudo cp Scripts/clangParams.py /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Password: Done.

USER_HOME = /Users/aure

DYCI_ROOT_DIR='/Users/aure/.dyci' == Preparing dyci-recompile directories: if [[ ! -d /Users/aure/.dyci/index ]]; then Skipped. (Already prepared). == Copying scripts : cp: /Users/aure/.dyci/scripts/dyci-recompile.py: Permission denied cp: /Users/aure/.dyci/scripts/clangParams.py: Permission denied Done. == Installing Xcode DYCI plugin : Cloning into 'dyci-xcode-plugin'... remote: Counting objects: 159, done. remote: Total 159 (delta 0), reused 0 (delta 0), pack-reused 159 Receiving objects: 100% (159/159), 195.94 KiB | 0 bytes/s, done. Resolving deltas: 100% (55/55), done. Checking connectivity... done. Done. Now you can use DYCI from the Xcode :P

DYCI was successfully installed! Use (^X) hot key in your IDE to perform code injections. Have fun.

PaulTaykalo commented 9 years ago

Permission denied when script is trying to backup a clang

aure commented 9 years ago

sudo cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup

aure commented 9 years ago

or even └─➤ sudo ./install.sh -v

== Backing up clang : Skipped. Seems dyci-clang has already been installed

Backup is at : /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup == Faking up clang : cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-real

cp /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang.backup /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-real++

sudo cp Scripts/dyci-clang.py /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang

sudo cp Scripts/clangParams.py /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin Done.

USER_HOME = /Users/aure

DYCI_ROOT_DIR='/Users/aure/.dyci' == Preparing dyci-recompile directories: if [[ ! -d /Users/aure/.dyci/index ]]; then Skipped. (Already prepared). == Copying scripts : Done. == Installing Xcode DYCI plugin : Cloning into 'dyci-xcode-plugin'... remote: Counting objects: 159, done. remote: Total 159 (delta 0), reused 0 (delta 0), pack-reused 159 Receiving objects: 100% (159/159), 195.94 KiB | 0 bytes/s, done. Resolving deltas: 100% (55/55), done. Checking connectivity... done. Done. Now you can use DYCI from the Xcode :P

DYCI was successfully installed! Use (^X) hot key in your IDE to perform code injections. Have fun.

aure commented 9 years ago

still get the same error though. Maybe I need to do this all again on a fresh xcode?

Traceback (most recent call last): File "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang-real", line 62, in stderr=subprocess.PIPE) File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 710, in init errread, errwrite) File "/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1231, in _execute_child self.pid = os.fork() OSError: [Errno 35] Resource temporarily unavailable

PaulTaykalo commented 9 years ago

Well it's sad, but probably, we just broke Xcode :) Can you compile anything wth Xcode now?

aure commented 9 years ago

Thanks for all your help Paul, after a fresh install of Xcode, everything works perfectly.