Есть ли способ компилировать пакеты параллельно при использовании cabal install
аналогично флагу -jN
GNU make?
Параллельные построения клики
Ответы (2)
Да, начиная с версии 1.16, cabal поддерживает это, используя опцию -j
для установки, например:
cabal install -j mypackage
person
user239558
schedule
15.12.2012
н.б. Эта версия Cabal НЕ включена в текущую версию платформы Haskell (2012.4.0.0), но ожидается, что она будет включена в следующую версию. платформы Haskell (2013.2.0.0) (см. комментарии).
- person dave4420; 24.12.2012
Однако вы можете просто
cabal install cabal-install
даже на текущей платформе Haskell, чтобы получить эту функциональность. Это даже ничего не ломает (для меня).
- person nh2; 18.04.2013
Возможно, вы захотите добавить к своему ответу, что это не ускоряет установку одного пакета — он просто устанавливает несколько пакетов одновременно. Поэтому
cabal install -j mypackage
пользы не принесет, только cabal install -j package1 package2
принесет.
- person nh2; 18.04.2013
@ nh2 nh2, а что, если в моем пакете несколько зависимостей, они не будут компилироваться параллельно? (если зависимости позволяют это, конечно)
- person Alois Cochard; 04.10.2013
@AloisCochard Вы правы, зависимости будут установлены параллельно. По упоминанию
make -j
в вопросе я предположил, что вопрос касается этапа сборки самого пакета.
- person nh2; 16.10.2013
Почему эта опция не включена по умолчанию?
- person The_Ghost; 17.08.2014
Нет. Это было открытым вопросом в течение некоторого времени. Была попытка заставить ghc --make
строить необходимые модули параллельно, но, очевидно, это столкнулось с проблемами. С тех пор выполнение этого на уровне клики было всем обсуждением, которое я слышал, но еще не стало реальностью.
См. этот повторяющийся вопрос для некоторых ссылок и что такое все еще современное состояние.
person
Thomas M. DuBuisson
schedule
21.10.2011
Боже, ребята, полегче с отрицательными голосами. Это было правильно, когда это было написано, но более новый ответ (написанный год спустя) содержит обновленную информацию, которую вы ищете.
- person Thomas M. DuBuisson; 30.12.2012