Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

cblrepo: прибиваем версии библиотек гвоздями

Открыл для себя сборку хаскельных библиотек с помощью cblrepo. Если отбросить специфику Арча, то основное отличие от cabal sandbox в том, что прибивание делегируется, ака разделение труда.

Специально обученные люди консистентно прибили гвоздями 315 наиболее важных пекеджей.Другие люди прибили ещё 90 интересных им пекеджей (в-основном happstack, но неожиданно fay).  Я за 2 дня поприбивал ещё 141 популярных, измеряя популярность путем голосования арчепользователей и количества обратных зависимостей на hackage. Всего 546. Разумеется, есть средства сдвигания прибивки по мере выхода обновлений, и вышеперечисленные 2 группы людей умудряются годами консистентно друг с другом мейнтейнить прибивки.

Более того, поверх базы прибивок сделаны генераторы скриптов сборки в чистых чрутах, и они по сути обеспечивают непрерывно зелёные билды всех этих пекеджей в 32- и 64-битном виде и установку из бинарников. Я по-быстрому написал на говне и палках себе альтернативные инструментики для добавления пекеджей, поэтому и получилось так быстро. Те товарищи были ориентированы в-основном на долгосрочный мейнтенанс фиксированного набора.

Обнаружил экзотические пекеджи: есть пекеджи, не содержащие `Setup.hs`, есть  пекеджи-бандлы, не содержащие смысловых исходников. Зафайлил ишшуи. Но интересно, что поддерживается индивидуальное допатчивание, если в апстриме тормозят. Впрочем, допатчивание им нужно в 10% случаев: исходники понадобилось всего 1 раз патчить, 8 раз .cabal, и 25 раз не справился скрипт генерации скриптов сборки, в основном недоопределил FFI-библиотеки в зависимостях.

Теперь, если мне надо посмотреть какую-нибудь либхуй, я максимально её удовлетворяю прибитыми бинарными общесистемными либами (в т.ч. `--constraint libfoo installed`), а конфликты дорешиваю сендбоксом.

Имеет смысл прибивать послойно, стратифицируя по степени важности, чтобы какая-нибудь мало нужная либа не насрала в кашу сразу всем, а также делать пару-тройку альтернативных прибивок, потому что одной прибивкой всем не угодишь. Условно, есть пекеджи-ретрограды вроде dph, требующего вообще 7.4, так что кому-то нужно прибивать, начиная с dph. Или c hare. HaLVM вот оказывается уже догнала до 7.8, идет в ногу с платформой.

Кстати, платформа нынче прибивает аж 55 пекеджей, так что кому-то имеет смысл не сидеть на bleeding edge (сам факт того, что хватает сил следить за bleeding edge на 300 пекеджах, вызывает уважение), а прибивать вокруг платформы.
Tags: fp, programming
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments