Haskell, FreeBSD, Stack, happy: Что можно сделать, если инструмент сборки (в моем случае `happy-1.19.5`) не проходит установку?
Вот ошибки компоновщика, которые я получаю:
happy-1.19.5: configure
cpphs-1.20.2: download
th-reify-many-0.1.6: download
time-qq-0.0.1.0: download
th-reify-many-0.1.6: configure
th-reify-many-0.1.6: build
time-qq-0.0.1.0: configure
time-qq-0.0.1.0: build
cpphs-1.20.2: configure
th-reify-many-0.1.6: copy/register
time-qq-0.0.1.0: copy/register
cpphs-1.20.2: build
cpphs-1.20.2: copy/register
Progress: 4/9
-- While building package happy-1.19.5 using:
/usr/local/bin/ghc --make -odir /tmp/stack1466/happy-1.19.5/.stack-work/dist/x86_64-freebsd/Cabal-1.22.4.0/setup -hidir /tmp/stack1466/happy-1.19.5/.stack-work/dist/x86_64-freebsd/Cabal-1.22.4.0/setup
-i -i. -package=Cabal-1.22.4.0 -clear-package-db -global-package-db -package-db=/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/pkgdb /tmp/stack1466/happy-1.19.5/Setup.lhs -o /tmp/stack1466/happy-1.1
9.5/.stack-work/dist/x86_64-freebsd/Cabal-1.22.4.0/setup/setup
Process exited with code: ExitFailure 1
Logs have been written to: /root/project-name/.stack-work/logs/happy-1.19.5.log
[1 of 1] Compiling Main ( /tmp/stack1466/happy-1.19.5/Setup.lhs, /tmp/stack1466/happy-1.19.5/.stack-work/dist/x86_64-freebsd/Cabal-1.22.4.0/setup/Main.o )
/tmp/stack1466/happy-1.19.5/Setup.lhs:20:1: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:21:1: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:22:1: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:68:1: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:74:1: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:81:19: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:82:23: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:83:26: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:84:26: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:85:30: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:86:33: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:87:32: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:88:36: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:89:39: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:94:14: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:99:13: Warning: Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:100:17: Warning:
Tab character
/tmp/stack1466/happy-1.19.5/Setup.lhs:101:23: Warning:
Tab character
Linking /tmp/stack1466/happy-1.19.5/.stack-work/dist/x86_64-freebsd/Cabal-1.22.4.0/setup/setup ...
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_rtldNext':
HsUnix.c:(.text+0x80): multiple definition of `__hsunix_rtldNext'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x0): first defined here
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_rtldDefault':
HsUnix.c:(.text+0x90): multiple definition of `__hsunix_rtldDefault'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x10): first defined here
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_ptsname':
HsUnix.c:(.text+0x130): multiple definition of `__hsunix_ptsname'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x20): first defined here
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_grantpt':
HsUnix.c:(.text+0x140): multiple definition of `__hsunix_grantpt'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x30): first defined here
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_unlockpt':
HsUnix.c:(.text+0x150): multiple definition of `__hsunix_unlockpt'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x40): first defined here
/usr/local/lib/ghc-7.10.2/unix_A3WgcI5QiHK4PDo4jSYdwQ/libHSunix-2.7.1.0-A3WgcI5QiHK4PDo4jSYdwQ.a(HsUnix.o): In function `__hsunix_push_module':
HsUnix.c:(.text+0x160): multiple definition of `__hsunix_push_module'
/root/.stack/snapshots/x86_64-freebsd/lts-7.14/7.10.2/lib/x86_64-freebsd-ghc-7.10.2/unix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS/libHSunix-2.7.2.0-3psvMyG1UoBJLXj9bF7fFS.a(HsUnix.o):(.text+0x50): first defined here
collect2: error: ld returned 1 exit status
Разное
- GHC-7.10.2
- FreeBSD 10.3-RELEASE-p18 в виртуальной машине
- хеппи-1.19.5
- Версия стека 1.0.1, версия Git e1c8e2c (3065 коммитов) x86_64
Варианты, которые я рассматриваю:
Выясните, в чем заключается ошибка компоновщика. Может быть, это легко исправить. Возможно, спросите об этом на Stackru.;) Есть идеи, о чем речь?
Попробуйте выяснить, какая зависимость моего проекта использует Happy, и посмотреть, смогу ли я обойтись без него. Я пытался сделать это через
stack list-dependencies --depth=100
а такжеstack dot --external
но ни один из них не помог мне, к сожалению.
Как я могу узнать, какие из моих прямых зависимостей зависят от этого (вероятно, косвенно)?Попробуй убедить
stack
использовать общесистемный доступныйhappy
двоичный файл, который я смог пройти черезpkg install hs-happy
, Как я мог пойти об этом?Кросс-компиляция для FreeBSD из Linux. Правильно ли я подозреваю, что это не будет проблемой, если у меня будет кросс-компилятор? И в любом случае, будет ли трудно установить кросс-компилятор linux->FreeBSD? Как я мог сделать это?
Попробуйте отойти от необходимости FreeBSD. К сожалению, мой хостинг-провайдер на данный момент поддерживает только FreeBSD, и мне они действительно нравятся по другим причинам (соотношение цены и их философия). Возможно, если все остальное не поможет, вы можете сказать мне, какой хостинг Linux является вашим любимым для ваших проектов на Haskell?
Я подозреваю, что вариант № 1 или № 3 может быть самым безболезненным.
Или у кого-нибудь из вас есть другие идеи?
1 ответ
Благодаря указателям в @user2407038 и комментариям @Sibi мне удалось обновить систему до стека 1.4.0 с версии 1.0.1 и stack setup
изолированный GHC.
happy
впоследствии установлен как шарм, и теперь все хорошо.