[DAEMON-144] iOS Plugin: Pointing xcode-select to a different xcode install causes the daemon to become unstable
| GitHub Issue | n/a |
| Type | Bug |
| Priority | Critical |
| Status | Resolved |
| Resolution | Fixed |
| Resolution Date | 2017-11-17T15:58:28.000+0000 |
| Affected Version/s | Appc Daemon 1.0.0 |
| Fix Version/s | Appc Daemon 1.0.0 |
| Components | appcd-plugin-ios, ioslib |
| Labels | n/a |
| Reporter | Ewan Harris |
| Assignee | Chris Barber |
| Created | 2017-11-15T11:52:48.000+0000 |
| Updated | 2017-11-17T15:58:28.000+0000 |
Description
Description
I have two Xcodes on my machine one at /Applications and the other at /Users/eharris/Desktop/Xcode.app/Contents/Developer, pointing xcode-select at the version in Desktop causes the daemon to become unstable (spawning process multiple times, freezes etc)
Steps to repro
Run sudo xcode-select -s <new path>, then appcd start && appcd exec /ios/latest/info
Attachments
| File | Date | Size |
| dump.txt | 2017-11-15T21:15:04.000+0000 | 61036 |
| output.txt | 2017-11-15T21:15:01.000+0000 | 463351 |
[~cbarber] Attached dump.txt which is an appc dump, and output which is an appcd logcat during reproducing this
Adding some more information for fun. I have 3 xcodes on my system - 8.3.2:8E2002 located in Desktop/Xcode8.3.2 - 8.3.3:8E3004b located in Applications/Xcode (Daemon will always find this, so it is our constant variable) - 9.0.1:9A1004 located in Desktop/Xcode If I set xcode-select to 9.0.1:9A1004 then I get this problem. If I set xcode-select to 8.3.2:8E2002 then this doesn't happen, trying to download some more 9.X xcodes to test Edit: -Download 9.1:9B55, setting xcode-select to that causes no issues.- Ignore, xcode eulas... Awaiting my xcode beta 9.2 beta to unzip It looks like this issue lies with having an xcode 8 and 9 install detected at the same time. The code below (run with
node test.js && diff before2 after2shows that the xcode 8 instance is modified when it is passed into the getSimulators callconst ioslib = require('./dist'); const fs = require('fs'); const xcode = new ioslib.xcode.Xcode('/Users/eharris/Downloads/Xcode-beta.app/Contents/Developer/'); const xcode2 = new ioslib.xcode.Xcode('/Applications/Xcode.app/'); fs.writeFile('before1', JSON.stringify(xcode, null, 2), () => { }); fs.writeFile('before2', JSON.stringify(xcode2, null, 2), () => { }); // 8.3.2 /Users/eharris/Desktop/Xcode8.3.2/Contents/Developer/ // 8.3.3:8E3004b /Applications/Xcode.app/ // 9.0.1:9A1004 /Users/eharris/Desktop/Xcode/Contents/Developer/ // 9.1:9B55 /Users/eharris/Downloads/Xcode.app/Contents/Developer/ // 9.2:9C34b /Users/eharris/Downloads/Xcode-beta.app/Contents/Developer/ ioslib.simulator.getSimulators({ '9.2:9C34b': xcode, '8.3.3:8E3004b': xcode2 }) .then(foo => { fs.writeFile('after1', JSON.stringify(xcode, null, 2), () => { }); fs.writeFile('after2', JSON.stringify(xcode2, null, 2), () => { }); // console.log(foo); return ioslib.simulator.getSimulators({ '9.2:9C34b': xcode, '8.3.3:8E3004b': xcode2 }) .then(foo => { console.log(foo); }); })[~cbarber] I was able to stop this issue with the following commit https://github.com/ewanharris/ioslib/commit/5c7a8e105677b904bee25643d098aad9f73c9953 which really just proves what we knew and is disguising the real bug where the xcode 8 instance is being modified
Latest changes to ioslib and appc-daemon fix this issue for me. Would like to test a successful cli build before closing out