[devel] Обновление GHC

Evgeny Sinelnikov sin на altlinux.org
Вт Апр 2 22:47:51 MSK 2019


вт, 2 апр. 2019 г. в 12:26, Eugine Kosenko <eugine.kosenko at gmail.com>:
>
> пт, 15 бер. 2019 о 12:07 Evgeny Sinelnikov <sin at altlinux.org> пише:
>>
>> 8.6.4 (cabal-install + зависимости)
>> - генерация и сборка модулей под бинарники pandoc, shellcheck, xmonad*, ztail
>
>
> От cabal сейчас отказываются. Нужно выходить на stack, это сейчас принятая инфраструктура.

Ну, это сильно сказано, мне кажется. Это же немного разные
инструменты, хотя и дублирующие какие-то свои функции. Stack - это для
разработки. Я бы не сказал, что это для деплоя подходящий инструмент.
С ним получается набор контейнеров. Даже не под приложение, а под
экземпляр разрабатываемого проекта.

>>
>> Для обновления модулей у нас предусмотрен инструмент cabal2rpm, с
>> помощью него удобно получить полный набор gear-репозиториев под все
>> новые модули. С ходу я от него не добился двух вещей - правильной
>> генерации сборочных зависимостей и обновления уже собраных модулей.
>> Кроме того cabal2rpm предполагает, что ему передают тарболы с
>> модулями, а это уже не рабочий вариант, как оказалось.
>
>
> У меня есть комплект самописных скриптов на fish, которые позволяют выстраивать нужные зависимости и собирать массово нужные пакеты. Правда, все это "на коленке". Если интересно, постараюсь на выходные привести все в порядок и выложить "как есть".
>
>> Дело в том, что тарболы, которые качают вручную из
>> http://hackage.haskell.org/ неполноценны, в них лежит нулевая ревизия
>> cabal-файла. Правильную ревизию умеет подкладывать cabal get, поэтому
>> я рассчитываю научить cabal2rpm брать не траболы, сразу распакованные
>> с помощью cabal get каталоги и делать уже с них gear-update.
>
>
> По ходу cabal2rpm иногда глючит не по детски, я где-то пяток пакетов руками правил. Но в рамках моей обертки она стреляет неплохо.

А как, конкретно? Давайте исправлять.


>>
>> Я на низком старте жду отмашки, что мы готовы к этому сценарию.
>
>
> Если не торопимся, то могу помочь с модулями. Но это не раньше выходных --- я сейчас сильно загружен. А самая большая проблема у меня была именно со сборкой "ядер" --- ghc нужной версии. На моем ноуте собирается примерно 15-20 часов, цикл отладки дикий. Надеюсь, правда, на этой неделе нарастить память. Опять же, модули собираются достаточно быстро, у меня весь комплект собирается за 4-5 часов.

Процесс мы начали. Меня приостановил неочевидный момент. А именно,
поломка сборки 8.2.2 под mipsel. Особенность там похожая, что и на
aarch64 - сборка via gcc, unregistered архитектуры. Для aarch64 - это,
возможно, исправимая ошибка. А вот под mipsel не хватает памяти, как у
32-битной платформы, в которой в пространстве пользователя доступна не
более 2Гб виртуальной памяти.

В общем, 8.2.2 уже в сизифе. 8.6.4 протестиован. Я им уже пользуюсь:
#225531 TESTED #4 [test-only] sisyphus ghc.git=8.2.2-alt2 ghc.git=8.6.4-alt1

Первый этап после его приезда завершается. Начинается сборка модулей.
Из ключевой момент, который хочется поправить - это автоматическая
генерация сборочных зависимостей в cabal2gear. На первом шаге я
планирую использовать связку
- cabal install --dry-run для поиска зависимостей;
- cabal get - для загрузки исходников с правильным релизом.


Подробная информация о списке рассылки Devel