Cabal / Stack игнорирует параметры ghc для пользовательских сценариев установки - PullRequest
2 голосов
/ 25 октября 2019

Я пытаюсь заставить Стек работать в системе Arch. Я сделал обычное:

pacman -S ghc stack cabal-install

И затем поместил следующее в ~/.stack/config.yaml, чтобы использовать системный GHC и динамические библиотеки (пакеты выше не )включают статические библиотеки):

system-ghc: true
ghc-options:
  "$everything": -dynamic
configure-options:
  "$everything":
  - -dynamic

Но когда я пытаюсь что-то установить (например, stack install wai), я вижу, что он пытается создать собственный сценарий установки:

/usr/bin/ghc-8.6.5 -rtsopts -threaded -clear-package-db -global-package-db -hide-all-packages -package base -main-is StackSetupShim.mainOverride -package Cabal-2.4.0.1 /home/alba/.stack/setup-exe-src/setup-mPHDZzAJ.hs /home/alba/.stack/setup-exe-src/setup-shim-mPHDZzAJ.hs -o /home/alba/.stack/setup-exe-cache/x86_64-linux/tmp-Cabal-simple_mPHDZzAJ_2.4.0.1_ghc-8.6.5

ИМои параметры не соблюдаются, поэтому сборка пытается использовать статические библиотеки (и терпит неудачу). Есть ли способ заставить Стек / Кабал использовать определенные опции при сборке Setup.hs?

1 Ответ

0 голосов
/ 25 октября 2019

РЕДАКТИРОВАТЬ: Я нашел соответствующие проблемы;кажется невозможным:

стек: вообще не могу использовать системный GHC без статических библиотек (# 3409)
cabal: executable-dynamic: True должен применяться к build-type: Custom setup # 1720

Связанный: Кажется, что в некоторых случаях cabal всегда будет пытаться построить статический + динамический, даже если вы скажетев противном случае.


Пока что частичное решение, которое я в итоге использовал, заключается в форсировании опции с помощью обертки.

В ~ / .local / bin / ghc-8.6.5положить:

#!/bin/sh
exec /usr/bin/ghc-8.6.5 -dynamic "$@"

Затем:

cd ~/.local/bin
chmod +x ghc-8.6.5
ln -s ghc{-8.6.5,}

ln -s {/usr/bin,.}/ghc-pkg-8.6.5
ln -s {/usr/bin,.}/runghc-8.6.5
ln -s {/usr/bin,.}/haddock-ghc-8.6.5

Убедитесь, что это в вашем ПУТИ, и вы готовы идти.

...