Параллельные построения клики

Есть ли способ компилировать пакеты параллельно при использовании cabal install аналогично флагу -jN GNU make?


person Nordlöw    schedule 21.10.2011    source источник


Ответы (2)


Да, начиная с версии 1.16, cabal поддерживает это, используя опцию -j для установки, например:

cabal install -j mypackage

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

Нет. Это было открытым вопросом в течение некоторого времени. Была попытка заставить ghc --make строить необходимые модули параллельно, но, очевидно, это столкнулось с проблемами. С тех пор выполнение этого на уровне клики было всем обсуждением, которое я слышал, но еще не стало реальностью.

См. этот повторяющийся вопрос для некоторых ссылок и что такое все еще современное состояние.

person Thomas M. DuBuisson    schedule 21.10.2011
comment
Боже, ребята, полегче с отрицательными голосами. Это было правильно, когда это было написано, но более новый ответ (написанный год спустя) содержит обновленную информацию, которую вы ищете. - person Thomas M. DuBuisson; 30.12.2012