Ответ 1
Мы также обнаружили, что Xcode 3.2.5 не распространяет сборки устройств, тогда как сборки Simulator правильно распределяются с помощью distcc, несмотря на установку всех необходимых параметров в Предпочтения Xcode → Распределенные сборки.
Однако возможно обойти ограничение Xcode и заставить его также распространять сборки устройств. Похоже на надзор (ошибка!) На части Apple, что они по умолчанию не включили распределенные сборки устройств.
Действия, которые вам нужно предпринять, следующие:
-
Увеличьте значение по умолчанию пользователя Xcode PBXNumberOfParallelBuildSubtasks. Это ограничивает максимальное количество задач параллельной сборки и значений по умолчанию для количества ядер ЦП (подробности см. В собственном справочном документе пользователя по умолчанию для Xcode). Я увеличил его с 2 до 16, следующим образом:
write com.apple.Xcode PBXNumberOfParallelBuildSubtasks 16
или для Xcode 4.2defaults write com.apple.dt.Xcode IDEBuildOperationMaxNumberOfConcurrentCompileTasks 16
-
Обязательно заново запустите Xcode для того, чтобы вышеупомянутое изменение вступило в силу.
-
Вам нужно будет установить собственное значение переменной DISTCC_HOSTS, как описано в man-странице
distcc
. -
Чтобы сделать это, вам нужно установить DISTCC_HOSTS из своего собственного
/Developer/usr/bin/distcc
script (который затем вызывает исходный/Developer/usr/bin/distcc
двоичный код, который вы переименовываете в нечто еще). Обратите внимание, что Xcode вызывает/Developer/usr/bin/distcc
для каждого блока компиляции и устанавливает перед каждым вызовом DISTCC_HOSTS, поэтому вам нужно использовать этот маскарад script для переопределения Xcode. -
Мой собственный
distcc
script выглядит следующим образом (и я переименовал исходный двоичный кодdistcc
вdistcc.orig
):#!/bin/sh export DISTCC_HOSTS="--randomize your list of hosts, each followed by ',cpp,lzo'" /Developer/usr/bin/distcc.orig "[email protected]" exit $?
Существует множество опций для настройки в DISTCC_HOSTS, особенно в отношении использования вашего собственного локального хоста, чтобы также выполнить некоторую компиляцию вместо того, чтобы обрабатывать все, но выше, по крайней мере, вы должны начать. Что лучше всего подходит для вас, очевидно, будет зависеть от вашего собственного оборудования Mac и производительности сети.
В моем собственном опыте, используя распределенную конфигурацию сервера сборки, состоящую из пары четырехъядерных компьютеров Mac вместе с моим двухъядерным Mac на относительно медленной сети, сокращено полное время восстановления устройства примерно с 15 минут до около 5.