Недавно я обновил свое приложение до GHC 8.4 и пытаюсь развернуть приложение в производственной среде. К сожалению, когда я пытаюсь скомпилировать приложение на сервере непрерывной интеграции, ему каждый раз не хватает памяти. (Это приложение уже много лет компилируется на том же сервисе без проблем.) Есть ли способ настроить GHC / Stack, чтобы компиляция использовала меньше ресурсов? Ничего страшного, если это замедлит компиляцию.
Для контекста вот где происходит сбой компилятора:
Progress 171/271: aeson-1.2.4.0 aeson-1.2.4.0: copy/register
Progress 171/271: aeson-1.2.4.0 Progress 172/271
-- While building custom Setup.hs for package Cabal-2.2.0.1 using:
/root/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-2.2.0.1 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
Process exited with code: ExitFailure (-9) (THIS MAY INDICATE OUT OF MEMORY)
ETA: Этот вопрос был помечен как дубликат Критерий установки Cabal: нехватка памяти, но, к сожалению, это решение мне не помогает. Если я заменю stack build
на stack build --ghc-options '+RTS -M1500M -RTS'
, это только приведет к тому, что сбой произойдет немного раньше:
Cabal-2.2.0.1: copy/register
Progress 171/271: Cabal-2.2.0.1 Progress 172/271
-- While building custom Setup.hs for package tzdata-0.1.20180501.0 using:
/root/.stack/setup-exe-cache/x86_64-linux/Cabal-simple_mPHDZzAJ_2.2.0.1_ghc-8.4.3 --builddir=.stack-work/dist/x86_64-linux/Cabal-2.2.0.1 build --ghc-options " -ddump-hi -ddump-to-file -fdiagnostics-color=always"
Process exited with code: ExitFailure (-9) (THIS MAY INDICATE OUT OF MEMORY)
@bergey нет, просто stack build
@bergey omg stack build -j1
работал. СПАСИБО
Так как насчет того, чтобы ответить самому себе и принять вопрос?
Что ж, оказывается, что было является дубликатом того другого вопроса, и я просто пропустил часть -j1
... Так что вместо этого я отмечу себя. XD
Вы уже передаете аргумент
-j1
(илиstack.yaml
jobs: 1
)?