LINUX.ORG.RU

Haskell, Gentoo и профилирование приложений.

 , ,


0

1

Как я понял, для профилирования приложения необходимо профилировать все его библиотеки. Однако такой ход как

echo 'library-profiling: True' >> .cabal/config
cabal install --reinstall world
не увенчался успехом засыпав меня многочисленными сообщениями вида
Could not find module ‘$module_name’
    Perhaps you haven't installed the profiling libraries for package ‘$package_name’?
Как это можно исправить? Либо подскажите как установить ВСЕ необходимости в sandbox, т.к. по всей видимости cabal все же использует внешние библиотеки при компиляции зависимостей.

gentoo-way:

echo "*/*::haskell prof" >> /etc/portage/package.use

если используешь кабал в хомяке и так и собираешься, то убери тег gentoo, она тут ни при чем.

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

Уже добавил

dev-haskell/* profile
флага prof не видел. Он точно есть?

А тэга так вроде бы и нет.

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

Да так и собираюсь, но ведь cabal не ставит библиотеку локально, если она уже есть. Так что профилирование системных библиотек имеет смысл, разве нет?

Majesty911
() автор топика

Could not find module ‘$module_name’
Perhaps you haven't installed the profiling libraries for
package ‘$package_name’?

Чему равен module_name, package_name? С какими USE собран package_name?

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

флага prof не видел. Он точно есть?

туплю, profile конечно

А тэга так вроде бы и нет.

совсем не внимательный.

Да так и собираюсь, но ведь cabal не ставит библиотеку локально, если она уже есть.

если есть точно та же версия той библиотеки, что и ставишь, и кабалу не сказали --reinstall.

так что профилирование системных библиотек имеет смысл, разве нет?

имеет.. только логического перехода я не понял :(

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

имеет.. только логического перехода я не понял :(

имеет.. только логического перехода я не понял :(

Странно... я тоже связи не вижу. А ведь вчера она была.

Majesty911
() автор топика

Haskell
профилирование

Ты совершенно не понимаешь сути Haskell. Он не предназначен для этого, он работает по-другому.

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

Это плохой way, раз уж на то пошло. Во-первых, практически теряется возможность установки кабалом в хомяке — можно словить сообщения об ошибках, от которых гугл, и тот шарахается. И это очень печально, поскольку гента позиционируется как свобода выбора. Во-вторых, не все пакеты и не все их версии в оверлее, которые можно получить при cabal update. В-третьих, оверлей не осилил субслоты, невозможно установить пакеты, зависящие от разных версий других пакетов.

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

Во-первых, практически теряется возможность установки кабалом в хомяке

не теряется

можно словить сообщения об ошибках, от которых гугл, и тот шарахается.

пример можно?

И это очень печально, поскольку гента позиционируется как свобода выбора.

никто не запрещает использовать cabal install и sandbox и virtual-env и черта лысого в HOME, просто гента тут ни при чем.

Во-вторых, не все пакеты и не все их версии в оверлее, которые можно получить при cabal update.

hackport работает очень просто.

В-третьих, оверлей не осилил субслоты, невозможно установить пакеты, зависящие от разных версий других пакетов.

Автор не осилил что такое сабслоты :). А установка пакетов зависящих от разных версий других пакетов в одном окружении не осилена cabal-ом, и не будет то появления backpack.

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

пример можно?

Странная какая-то ошибка была, что гугл ничего не выдал, больше не помню. Но удаление глобальных пакетов и переустановка в хомяке кабалом ее решили.

А установка пакетов зависящих от разных версий других пакетов в одном окружении не осилена cabal-ом, и не будет то появления backpack.

Не совсем понял твою мысль, но у меня стоят haskell-src-exts (1.15.0.1 и 1.16.0.1). Наверное, нужны были разным пакетам, раз установились. При сборке Lambdabot были ошибки с 1.16, когда явно прописал в *.cabal использовать 1.15, всё собралось. Так что проблемы можно разрулить даже для нескольких версий.

hackport работает очень просто.

Как правило, апдейт нужного пакета тянет за собой апдейт кучи зависимостей, поэтому куда удобнее просто cabal update.

Но вообще, дело вкуса, кому что использовать. Но из-за невозможности оставить две версии одного пакета, любой синк с haskell-overlay превращался в борьбу с поломанными зависимостями. При том, что автор haskell-overlay любит удалять ебилды для предыдущих версий. Все это тупо надоело.

iVS ★★★★★
()

Ну вообще проблема решена таким образом:

$ emerge -avuDN world
$ echo "dev-haskell/* profile" >> /etc/portage/package.use
$ emerge -avuDN world --keep-going
#ну и несколько повторений
$ haskel-updater
$ emerge @preserved-rebuild
Но при этом network-uri не пересобрался с use profile, пришлось делать:
$ emerge -av --oneshot dev-haskell/network-uri

Majesty911
() автор топика

Также стоит упомянуть о

$ cat /etc/portage/package.keywords/dev-haskell
*/*::haskell

Majesty911
() автор топика
Ответ на: комментарий от iVS

Странная какая-то ошибка была, что гугл ничего не выдал, больше не помню. Но удаление глобальных пакетов и переустановка в хомяке кабалом ее решили.

если спросить про ошибку здесь, на #gentoo-haskell или в juick например, то шанс её решения повышается очень сильно. Так же шанс того, что если это действительно ошибка со стороны генты, то и исправление.

Не совсем понял твою мысль,

кабал не умеет ставить несколько пакетов одной версии с разными зависимостями. Что уже действительно является проблемой.

Наверное, нужны были разным пакетам, раз установились.

смысл дистра зачастую в том, чтобы такого не случалось.

Как правило, апдейт нужного пакета тянет за собой апдейт кучи зависимостей, поэтому куда удобнее просто cabal update.

ну ещё есть волшебный способ попросить собрать пакет.

При том, что автор haskell-overlay любит удалять ебилды для предыдущих версий. Все это тупо надоело.

предыдущие минорные версии удаляются сразу, мажорные стараемся не сразу (не у всех разработчиков такой взгляд), но когда весь оверлей с ними собирается - добавляй интересующие пакеты в оверлей и за ними следить будем - бонусом патчи на совместимность.

Вообще иметь одновременно основные пакеты за которыми следит emerge и haskell-updater и для некоторых своих песочницы достаточно просто, причем одно другому не мешает, а сильно помогает.

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

Но при этом network-uri не пересобрался с use profile, пришлось делать:

[code]
$ emerge -av --oneshot dev-haskell/network-uri
[/code]

ошибки не сохранилось? должен собираться.

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

Ошибка была типа

Couldn't match expected type ‘Scientific’ with actual type ‘attoparsec-0.11.3.4:Data.Attoparsec.Number.Number’

Видимо, пакет scientific был установлен через оверлей, а тут пытался собрать пакет, зависящий от него, в хомяке.

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

Как правило, нужны несколько пакетов разных версий с разными зависимостями, а эта проблема решаема.

Наверное, нужны были разным пакетам, раз установились.

смысл дистра зачастую в том, чтобы такого не случалось.

Если бы не API пакетов, которое ломают от версии к версии.

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

Почти мистика, вообще там есть пакеты хотящие network<2.6 или network>2.6 и network-uri. И рулится это юзфлагом, что не очень удобно.

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

Видимо, пакет scientific был установлен через оверлей, а тут пытался собрать пакет, зависящий от него, в хомяке.

Это результат установки двух разных версий аттопарсека. Scientific тут ни при чем, ну кроме того что новый аттопарсека на него перешёл.

Как правило, нужны несколько пакетов разных версий с разными зависимостями, а эта проблема решаема.

Разные версии нужны в разных окружениях, если тебе они нужны в одном окружении, то ты что-то делаешь не так.

Если бы не API пакетов, которое ломают от версии к версии.

Я про минорные и мадорные релизы зачем писал? Если ломают в минорном, то вперёд писать багрепорт, но как я уже говорил, старые удаляются когда весь оверлей с ними собирается (за исключаением тупиковых веток).

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

Если ломают в минорном, то вперёд писать багрепорт, но как я уже говорил, старые удаляются когда весь оверлей с ними собирается (за исключаением тупиковых веток).

haskell-src-exts с каждым минорным обновлением меняются, что собирается с 1.15, не собирается с 1.16. И этот пример далеко не исключение. Туда же, что многие пакеты идут с 0.*, и пока не достигнута версия 1, там постоянно приключения.

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

X.Y - это мажорное обновление, минорное это X.Y.Z. несмнотря на то, что за пвп следят не идеально, но это верно почти всегда.

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

Впрочем в Генте идеально все не всегда, когда я бампаю пакеты иногда могу и упустить, что, когда sf все в порядке.

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

Накину тогда еще: многое еще зависит от версии GHC :) Даже в 7.8.4 (stable!) есть баги, из-за которых не собираются отдельные пакеты, а с другой версией — всё ОК.

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

Ну я тестирую обновления на всех версиях ghc, правда за деревом не так внимательно смотрю. Потом, как более менее синхронизируем дерево с оверлеем, что нибуедь придумаем.

Так что отправка багрепортов сильно улучшает ситуацию.

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Ответ на: комментарий от iVS

Накину тогда еще: многое еще зависит от версии GHC :) Даже в 7.8.4 (stable!) есть баги

stable по чьёй классификации?

из-за которых не собираются отдельные пакеты

какие пакеты, и из-за багов ли ghc?

а с другой версией — всё ОК.

С какой?

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

stable по чьёй классификации?

Тыц! — Current Stable Release (7.8.4).

какие пакеты, и из-за багов ли ghc?

Тыц!, у меня те же проблемы были с ghc 7.8.4.

С какой?

7.6.3

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

> stable по чьёй классификации?
Тыц! — Current Stable Release (7.8.4).

Там вообще нет unstable releases :] (но 7.2.x можно было бы таковыми назвать)

> > какие пакеты, и из-за багов ли ghc?
> Тыц!, у меня те же проблемы были с ghc 7.8.4.

Я суть бага выделю:

only on parallel rebuilds on a dev tree though, not for clean cabal builds

Хоть и неприятный, но на сборку пакета в дистрибутивах (например, в gentoo) это не влияет. Они чистят временные каталоги.

Другие парящие баги есть? :]

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