LINUX.ORG.RU

cabal-dev ghci не работает

 ,


0

1

Я люблю хаскель, но кабал со всеми его костылями так портит мне кровь...

# cabal-dev ghci --verbose=3

cabal-dev 0.9.1
built with Cabal 1.14.0
searching for cabal in path.
found cabal at /home/razor/.cabal/bin/cabal
("/home/razor/.cabal/bin/cabal",["--numeric-version"])
/home/razor/.cabal/bin/cabal is version 0.14.0
Using cabal-install 0.14.0 at FoundOnSystem {locationPath =
"/home/razor/.cabal/bin/cabal"}
No sandbox specified. Using cabal-dev
Using cabal-dev as the relative cabal-dev sandbox
Using /home/razor/teststorage/cabal-dev as the cabal-dev sandbox
Creating local repo /home/razor/teststorage/cabal-dev/packages
searching for ghc-pkg in path.
found ghc-pkg at /usr/bin/ghc-pkg
("/usr/bin/ghc-pkg",["--version"])
/usr/bin/ghc-pkg is version 7.4.2
Using ghc-pkg 7.4.2
("/home/razor/.cabal/bin/cabal",["--version"])
Complete arguments to cabal-install:
["--config-file=/home/razor/teststorage/cabal-dev/cabal.config","build","--verbose=3"]
("/home/razor/.cabal/bin/cabal",["--config-file=/home/razor/teststorage/cabal-dev/cabal.config","build","--verbose=3","--with-ghc=fake-ghc-cabal-dev"])
searching for ghc in path.
found ghc at /usr/bin/ghc
("/usr/bin/ghc",["--numeric-version"])
/usr/bin/ghc is version 7.4.2
("/usr/bin/ghc",["--interactive","-o","dist/build/PostTest/PostTest","-v","-hide-all-packages","-fbuilding-cabal-package","-no-user-package-conf","-package-conf","/home/razor/teststorage/cabal-dev/packages-7.4.2.conf","-package-conf","dist/package.conf.inplace","-i","-idist/build/PostTest/PostTest-tmp","-i.","-idist/build/autogen","-Idist/build/autogen","-Idist/build/PostTest/PostTest-tmp","-optP-include","-optPdist/build/autogen/cabal_macros.h","-odir","dist/build/PostTest/PostTest-tmp","-hidir","dist/build/PostTest/PostTest-tmp","-stubdir","dist/build/PostTest/PostTest-tmp","-package-id","base-4.5.1.0-6e4c9bdc36eeb9121f27ccbbcb62e3f3","-package-id","deepseq-1.3.0.0-c26e15897417ecd448742528253d68f6","-package-id","monad-control-0.3.1.4-83560fedcd54bda582bc1867a61c5f8a","-package-id","mtl-2.1.2-02e701f9b1590ee88a0b5b0bd5d93a29","-package-id","postgresql-simple-0.2.4.1-bfaa85df0b0baaf7906c16a11e5a00cd","-package-id","random-1.0.1.1-a214067181e8a7676a1be5e452419444","-package-id","safe-0.3.3-2e88224aa98500bc4dcbbdfb58ba6a17","-package-id","text-0.11.2.3-db61832d0c4660614c4ceff234ed4abb","-package-id","time-1.4-d61e2caaa0486655b4e141dc277ed49f","-package-id","transformers-0.3.0.0-8e66ecc7d4dae2b07b2b5406908c70e4","-O","-main-is","PostTest","-rtsopts","-XHaskell98","./PostTest.hs","-prof","-hisuf","p_hi","-osuf","p_o"])

on the commandline:
    Warning: -O conflicts with --interactive; -O ignored.
GHCi, version 7.4.2: http://www.haskell.org/ghc/  :? for help
Glasgow Haskell Compiler, Version 7.4.2, stage 2 booted by GHC version 7.4.1
Using binary package database: /usr/lib64/ghc-7.4.2/package.conf.d/package.cache
Using binary package database: /home/razor/teststorage/cabal-dev/packages-7.4.2.conf/package.cache
Using package config file: dist/package.conf.inplace
wired-in package ghc-prim mapped to ghc-prim-0.2.0.0-7d3c2c69a5e8257a04b2c679c40e2fa7
wired-in package integer-gmp mapped to integer-gmp-0.4.0.0-af3a28fdc4138858e0c7c5ecc2a64f43
wired-in package base mapped to base-4.5.1.0-6e4c9bdc36eeb9121f27ccbbcb62e3f3
wired-in package rts mapped to builtin_rts
wired-in package template-haskell mapped to template-haskell-2.7.0.0-2bd128e15c2d50997ec26a1eaf8b23bf
wired-in package dph-seq not found.
wired-in package dph-par not found.
Hsc static flags: -fscc-profiling -static
*** Deleting temp files:
Deleting: 
*** Deleting temp dirs:
Deleting: 
ghc: --interactive can't be used with -prof or -unreg.
Usage: For basic information, try the `--help' option.
/usr/bin/ghc returned ExitFailure 1

Так я и не понял в чем дело. Почему ghc передается флаг -prof вместе с --interactive ? ЧЯДНТ ? Установил в песочницу зависимости для своего проекта с флагом -prof для отладки кучи, теперь не могу запустить в ней ghci. Ну как так то ?

1). кабал-дев это не кабал

2). Где ссылка на багепорт? :)

в последнее время кабал-дев как-то бессовестно глючит, и там всё фиксят, то багрепорт действительно не помешает.

P.S. ушёл проверять на чем cabal-dev у нас валится.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

2). Где ссылка на багепорт? :)

https://github.com/creswick/cabal-dev/issues/50

уже открыт давно, по ссылке намек на то что проблема решается новым cabal-install. Пробую как раз.

И все таки cabal какой то принципиально не правильный. Я конеш понимаю что это холивар, но вот gem's которыми я пользуюсь в рубях очень хороши. И кто сказал, что cabal не должен быть пакетным менеджером и пусть, мол, эту проблему решают дистрибутивы, каждый по своему ?

s9gf4ult ★★ ()
Ответ на: комментарий от s9gf4ult

И все таки cabal какой то принципиально не правильный.

при чем тут кабал я так и не понял..

И кто сказал, что cabal не должен быть пакетным менеджером и пусть, мол, эту проблему решают дистрибутивы, каждый по своему ?

самая известаня статья от Ивана Лазаревича, но я, например, скажу тоже самое даже не помня её, что и кабал и гем обладают абсолютно одинаковыми проблемами и не могут являются хорошим пакетным менеджером. Это минимум добавляет один промежуточный уровень, в котором можно фиксить проблемы если меинтейнеры пакетов умерли/спят/тупят/имеют-своё-личное-мнение-о-пути-языка, а это _очень_ частая ситуация.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

при чем тут кабал я так и не понял.

Ну при том что cabal-dev - это костыль для cabal, так как последний не может нормально обновлять пакеты и разрешать зависимости.

Это минимум добавляет один промежуточный уровень, в котором можно фиксить проблемы

Что «это» ? Как влияет наличие в кабале таких вещей, как обновление дерева пакетов с учетом всех зависимостей и пересборка сломанных пакетов на то что ты написал ? Сейчас кабал - что-то среднее между autotools и пакетным менеджером: со сборкой пакета справляется хорошо, а набором пакетов управлять нормально не может.

И, да,

12:34 razor@localhost /home/razor/teststorage % cabal-dev ghci
cabal-dev: user error (cabal: Run the 'configure' command first.
)
12:40 razor@localhost /home/razor/teststorage % cabal-dev configure
Resolving dependencies...
Configuring teststorage-0.1.0.0...
12:41 razor@localhost /home/razor/teststorage % cabal-dev ghci     
cabal-dev: user error (Warning: cannot determine version of /home/razor/.cabal/bin/fake-ghc-cabal-dev
:
"== GHC Arguments: Start ==\n--numeric-version\n== GHC Arguments: End ==\n"
cabal: ghcInvocation: the programVersion must not be Nothing
)

Это с новым cabal-install

Благодаря угребищной инфраструктуре пакетов я трачу время и нервы и у меня падает желание дальше программировать. Как с таким подходом можно привлечь разработчиков в Haskell ? Чем то смахивает на типичную реакцию большинства линуксоидов на чужие проблемы - УМВР.

PS. сори за эмоциональность, просто злит нереально.

s9gf4ult ★★ ()
Ответ на: комментарий от s9gf4ult

Ну при том что cabal-dev - это костыль для cabal, так как последний не может нормально обновлять пакеты и разрешать зависимости.

нет, cabal-dev это одно из неофициальных средств создания песочницы, ещё есть hs-env, и возможность создания песочницы под пакет в cabal запиленная в рамках GSC (пока я не трогал), и пакет от Сноймана.

Что «это» ? Как влияет наличие в кабале таких вещей, как обновление дерева пакетов с учетом всех зависимостей и пересборка сломанных пакетов на то что ты написал ? Сейчас кабал - что-то среднее между autotools и пакетным менеджером: со сборкой пакета справляется хорошо, а набором пакетов управлять нормально не может.

это = использование средств нормального пакетного менеджера. Сейчас кабал это autotools-done-right с возможностью загрузки кода из репозитория большего от него не надо. Во всяком случае сейчас адекватный пакетный менеджер справится с этим лучше и ограничней, чем cabal, я честно не понимаю, зачем это может быть надо.

Это с новым cabal-install

https://github.com/gentoo-haskell/gentoo-haskell/blob/master/dev-haskell/caba...

pull-request в cabal-dev пошлю чуть позже. А вот если бы кабал был пакетным менеджером, то этот патч было бы гораздо сложнее протестить и я бы забил.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

Дак а мне то сейчас что делать ? Есть вообще возможность настроить относительно стабильное окружение для Haskell с песочницами ?

s9gf4ult ★★ ()
Ответ на: комментарий от s9gf4ult

Благодаря угребищной инфраструктуре пакетов я трачу время и нервы и у меня падает желание дальше программировать.

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

Как с таким подходом можно привлечь разработчиков в Haskell ?

вот как-то УМВР, а что не ВР то идёшь и репортишь в багтреккер своего дистра или апстрим, а лучше и туда и туда сразу.

qnikst ★★★★★ ()
Ответ на: комментарий от s9gf4ult

я бы посоветовал использовать gentoo :), т.к. там я могу подсказать, что-то исправить, или пнуть тех кто умнее меня, чтобы они исправили или помогли, но скорее всего это не прокатит.

Решение: ты можешь поставить cabal-dev из репозитория и в нём всё будет хорошо.

git clone git://github.com/creswick/cabal-dev.git
cabal configure --user; cabal build; cabal install

насчёт --user, я не помню, но оно делается как-то так.

qnikst ★★★★★ ()
Ответ на: комментарий от qnikst

cabal configure по дефолту --user runhaskell Setup.hs configure по дефолту --global

Не надо спрашивать, почему.

anonymous ()

У меня cabal-dev ghci вообще ни на одной из машин не стартует. Просто запускаю ghci скриптом, который инклюдит все директории песочницы.

proofit404 ()
Ответ на: комментарий от dmitry_malikov

А если haskell-platform заюзать, там все норм будет ? Или он не ставит cabal-dev ?

s9gf4ult ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.