Почему он показал мне флаги?
A.cabal
library
...
executable test-stuff
build-depends: B
B.cabal
library
build-depends: A
т.е. в пакете A есть библиотека, и исполняемый файл зависящий от пакета B, зависящего от билиотеки A.
Думаю, а попробую.
Собираю проект с stack.
stack init --solver # честно выкачивает 7.10.1
stack build
Два часа проходит, и не справляется.
Качаю 7.10.2.
rm -rf stack
Пересобираю stack.
Пересобираю проект cabal + ghc-7.10.2.
Думаю, а попробую.
Собираю проект с stack.
stack init --solver
stack build
Два часа проходит, и не справляется.
COPY my-project.cabal /opt/server
RUN cd /opt/server && cabal install --dependencies-only
что позволяет мне в случае если зависимости не изменились, а код изменился не пересобирать layer.
Теперь я хочу разбить проект на куски и радостно собирать его stack-ом, но тут возникает засада, ту же самую фишку я уже провернуть не могу, т.к. просто install --dependencies-only там уже нету.
Что делать?
Включил/выключил в ~/.cabal/config размер бинаря не поменялся.
strip бинарю срезает 10Мб
gist.github.com билд файлик для сборки хаскельного проекта. С созданием шаренного сендбокса и его автообновлением в случе изменения cabal файлов.
Делался для сборки из bamboo.
Может кому ещё пригодится. BTW исправления, дополнения приветствуются.
Делался для сборки из bamboo.
Может кому ещё пригодится. BTW исправления, дополнения приветствуются.
github.com случилась из-за этой херни ghc.haskell.org ?
Я так понимаю вот эта херня cabal install --dependencies-only не подходит
сам пакет не установлен, но имеется cabal.config сделанный через cabal freeze --enable-tests
Зачем надо: с поставляемого образа пакет будет ставиться в сетке, где не будет доступа к hackage, соотвественно нужно гарантировать, чтобы сборка не обращалась к hackage.
Вариант: склонировать cabal, собрать его при помощи ghc Setup.hs .. и т.д. установить его, потом с помощью утановленного cabal сделать песочницу и установить кабал в песочницу, котом удалить ~/.cabal и ~/.ghc выглядит каким-то адом.
Убунтуспецифичный вариант принимается, т.к. в нормальных системах проблема решается проще.
и куда бы тогда запихнуть дополнительные всякие тесты, типа проверки лицензий изменяемых файлов и прочую дребедень, которую в проекте бы хорошо иметь, но при этом пускать не всегда
rm -rf ~/.cabal ~/.ghc && cabal update
github.com
для тех кто не читает roche в твиторе.
для тех кто не читает roche в твиторе.
hackage.haskell.org
осталось сложить это в кабал и ...
осталось сложить это в кабал и ...
Warning: This package indirectly depends on multiple versions of the same
package. This is highly likely to cause a compile failure.
package distributed-process-tests-0.4 requires network-transport-0.3.0.1
package distributed-process-0.4.2 requires network-transport-0.3.0.1
package network-transport-tcp-0.3.1 requires network-transport-0.3.0.1
#2522513 , но не в виртуалке. Не хочет собираться, как залипло. Кажет ошибку :
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
cabal-meta:
log of commands saved to: /home/yuriy-shelyag/sandboxes/axxoncloud/.shelly/4.txt
Exception: error running: cabal install hashable -fsse41 /home/yuriy-shelyag/sandboxes/axxoncloud/ vendor/starling
exit status: 1
stderr: cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
блин какая-то магия. Делаю всё то же что и в Resolving dependencies...
cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.
cabal-meta:
log of commands saved to: /home/yuriy-shelyag/sandboxes/axxoncloud/.shelly/4.txt
Exception: error running: cabal install hashable -fsse41 /home/yuriy-shelyag/sandboxes/axxoncloud/ vendor/starling
exit status: 1
stderr: cabal: Could not resolve dependencies:
trying: AxxonCloud-0.0.1 (user goal)
trying: asn1-types-0.2.1 (dependency of AxxonCloud-0.0.1)
next goal: yesod-platform (dependency of AxxonCloud-0.0.1)
rejecting: yesod-platform-1.2.4.2, 1.2.4.1, 1.2.4 (conflict:
asn1-types==0.2.1, yesod-platform => asn1-types==0.2.0)
rejecting: yesod-platform-1.2.3, 1.2.2, 1.2.1, 1.2.0.1, 1.2.0, 1.1.9.1, 1.1.9,
1.1.8, 1.1.7.2, 1.1.7.1, 1.1.7, 1.1.6.1, 1.1.6, 1.1.5, 1.1.4.1, 1.1.4, 1.1.3,
1.1.2, 1.1.1, 1.1.0, 1.0.6.1, 1.0.6, 1.0.5, 1.0.4.2, 1.0.4.1, 1.0.4, 1.0.3.4,
1.0.3.3, 1.0.3.2, 1.0.2, 1.0.1, 1.0.0, 0.10.3, 0.10.2 (conflict: AxxonCloud =>
yesod-platform>=1.2.4 && <1.3)
Backjump limit reached (change with --max-backjumps).
Note: when using a sandbox, all packages are required to have consistent
dependencies. Try reinstalling/unregistering the offending packages or
recreating the sandbox.