Чтобы добавлять сообщения и комментарии, .

@Macil:
Macil

Ы? Я не понял, а у нас, что, cabal-hell официально ликвидирован с 1.24.0?

@ndtimofeev:
ndtimofeev

Яй! cabal-install 1.24.0.0 при помощи cabal init делает самый настоящий Hello, World^WHaskell. Это вроде бы должно снизить порог вхождения для новичков, верно?

@ocmanv:
ocmanv

Автодополнение в cabal у меня работало лучше.
Почему он показал мне флаги?

@qnikst:
qnikst

а это cabal-library или stack не умеет работать с файлами, у меня периодически VM-ка прибивается OOM-киллером пока stack там что-то собирает (при кабал-инсталл такого не было), так вот с вероятностью практически 1, он убивает свою базу пакетов, что меня очень печалит.

@qnikst:
qnikst

а вот stack или cabal осилят сбилдить следующие зависимости:

A.cabal
library
...
executable test-stuff
build-depends: B

B.cabal
library
build-depends: A

т.е. в пакете A есть библиотека, и исполняемый файл зависящий от пакета B, зависящего от билиотеки A.

@agr:
agr

Запиливал проект на ghc-7.10.1.
Думаю, а попробую.
Собираю проект с 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
Два часа проходит, и не справляется.

@agr:
agr

У кого-нибудь получалось поставить пакет text-icu под Windows 7 x64?

@Zert:
Zert

Вот чем-то мне не нравится stack, а чем — не могу сформулировать. Cabal нравится, а stack нет.

@qnikst:
qnikst

Есть докер файл, в нём:

COPY my-project.cabal /opt/server
RUN cd /opt/server && cabal install --dependencies-only

что позволяет мне в случае если зависимости не изменились, а код изменился не пересобирать layer.

Теперь я хочу разбить проект на куски и радостно собирать его stack-ом, но тут возникает засада, ту же самую фишку я уже провернуть не могу, т.к. просто install --dependencies-only там уже нету.

Что делать?

@dr-Chaos:
dr-Chaos

А только у меня не работает --enable-executable-stripping опция?
Включил/выключил в ~/.cabal/config размер бинаря не поменялся.
strip бинарю срезает 10Мб

@PineappleZombie:
PineappleZombie

Подумал. А ведь нет ни одной причины по которой у кабала не может быть бинарного кеша пакетов.

@dr-Chaos:
dr-Chaos

gist.github.com билд файлик для сборки хаскельного проекта. С созданием шаренного сендбокса и его автообновлением в случе изменения cabal файлов.
Делался для сборки из bamboo.
Может кому ещё пригодится. BTW исправления, дополнения приветствуются.

@dr-Chaos:
dr-Chaos

Я так понимаю вот эта херня github.com случилась из-за этой херни ghc.haskell.org ?

@dr-Chaos:
dr-Chaos

Мда... cabal нормально не работает без прописанных в PATH путей. Даже если cabal-у указать путь к gcc в конфиге, пакет network не соберется т.к. использует autoconf, а он уже не может без gcc в PATH. Пичаль какая-то :(

@qnikst:
qnikst

как бы скачать все зависимости пакета автоматом?

cabal install --dependencies-only не подходит
сам пакет не установлен, но имеется cabal.config сделанный через cabal freeze --enable-tests

Зачем надо: с поставляемого образа пакет будет ставиться в сетке, где не будет доступа к hackage, соотвественно нужно гарантировать, чтобы сборка не обращалась к hackage.

@segfault:
segfault

Правильно ли я понял, что с появлением песочниц cabal-meta больше не нужен?
yesodweb.com

@dr-Chaos:
dr-Chaos

Я вот не очень понял зачем other-extensions ... Ведь {-# LANGUAGE ExtensionName #-} всё равно надо указывать... Типа чтоб по кабалу определить что в проекте используется?

@qnikst:
qnikst

как получить cabal-1.22 на системе с ghc-7.6 не поломав базу?
Вариант: склонировать cabal, собрать его при помощи ghc Setup.hs .. и т.д. установить его, потом с помощью утановленного cabal сделать песочницу и установить кабал в песочницу, котом удалить ~/.cabal и ~/.ghc выглядит каким-то адом.

Убунтуспецифичный вариант принимается, т.к. в нормальных системах проблема решается проще.

@qnikst:
qnikst

А что хуков для cabal check не бывает?

и куда бы тогда запихнуть дополнительные всякие тесты, типа проверки лицензий изменяемых файлов и прочую дребедень, которую в проекте бы хорошо иметь, но при этом пускать не всегда

@segfault:
segfault

А можно как нибудь запросить у кабала строку опций, которую он передает компилятору при компиляции ?

@segfault:
segfault

А cabal-1.22 с ghc-7.8.3 больше не дружит?

@segfault:
segfault

Когда пакет не установлен, а кабал считает, что установлен:
rm -rf ~/.cabal ~/.ghc && cabal update

@segfault:
segfault

Хочу хранить `cabal.config` с констрейнами, полученными с помощью `cabal freeze` вне корня проекта. Можно ли подсунуть `cabal install`-у конфиг?

@qnikst:
qnikst

а как при cabal install foo делать разным задать разные флаги разным пакетам?

@IPShuvaev:
IPShuvaev

С каким уровнем оптимизации cabal собирает пакеты по умолчанию? И как его поменять в .cabal?

@dr-Chaos:
dr-Chaos

github.com
для тех кто не читает roche в твиторе.

@qnikst:
qnikst

а хаддок билдит же либу чтобы сгенерить документацию, т.е. документация с ffi либой на хакадже не сгенерится и надо самому заливать?

@qnikst:
qnikst

а как --enable-library-coverage у cabal работает, оно мержит результаты собранные со всех тестов или нет? если нет, то как автоматизировать? и можно ли summary в .txt получить?

@qnikst:
qnikst

А кабал оказывается не видит измений в .hs-boot файлах, и нужно cabal clean делать.. репорт чтоли отослать..

@qnikst:
qnikst

Такое ощущение что sandbox-ы и вообще половина реализации cabal принадлежит знатному извращенцу, возможно конечно были причины именно такого подхода. Но это что-то.. кто не верит попробуйте сделать мегапроект содержащий в себе подпроекты с зависимостями др. на друга, которые нужно пересобирать и запускать их тесты, всё это усложняется тем, что нужно собирать в двух вариантах (с разными настройками окружения и флагами).

@segfault:
segfault

hackage.haskell.org
осталось сложить это в кабал и ...

@Zert:
Zert

А как передавать компилятору разные флаги в зависимости от того, компилится на линуксе или макоси?

@qnikst:
qnikst

такие дела..

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

@PineappleZombie:
PineappleZombie

Кабалу в надо выставлять флаг shared в True, иначе не собирается vector. (Подозреваю что и TH работать не будет)

@qnikst:
qnikst

как нынче модно делать coverage репорты, через --enable-hpc и прогонку тестов, или кустарными скриптами?

@qnikst:
qnikst

а кто-нить в курсе можно ли при установке в cabal выдернуть переменные из pkg-config и сложить их в константу?

@qnikst:
qnikst

а как принято простым образом добавить патч к программе ставящейся во время cabal install --only-dependencies?

@dr-Chaos:
dr-Chaos

блин какая-то магия. Делаю всё то же что и в #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.

@trapdoor:
trapdoor

beta.hackage.haskell.org

"Package changelogs" ооооуйессс

@trapdoor:
trapdoor

Релиз! groups.google.com