[devel] Обновление GHC
Evgeny Sinelnikov
sin на altlinux.org
Пт Мар 15 13:07:32 MSK 2019
Здравствуйте,
план бутстрапа следующий:
- 4 шага на сборку самого ghc (четыре таски):
+ 7.10.3 собираем с помощью 7.6.1
+ пересобираем 7.10.3 собираем с помощью 7.10.3; 8.2.2 собираем с
помощью 7.10.3
+ пересобираем 8.2.2 собираем с помощью 8.2.2; 8.6.4 собираем с помощью 8.2.2
+ пересобираем 8.6.4 собираем с помощью 8.6.4; основные модули для
8.6.4 (cabal-install + зависимости)
- генерация и сборка модулей под бинарники pandoc, shellcheck, xmonad*, ztail
С модулями 7.6.1 на протяжении всего этого процесса ничего не
происходит, они продолжают ставиться и работать, по зависимостям
ничего не должно разъехаться до момента пересечения по предоставляемым
бинарникам в /usr/bin. А если их явно никто не требует, то и с ними
проблем быть не должно. То есть, если бинарник /usr/bin/cabal
предоставляется пакетом ghc7.6.1-cabal-install и начнёт
предоставляться пакетом ghc8.6.3-cabal-install, то критично это,
насколько я понимаю, только если apt-cache whatdepends /usr/bin/cabal
выкатит список зависимостей:
$ apt-cache whatdepends /usr/bin/cabal
W: Невозможно найти пакет /usr/bin/cabal
Модули для 7.10.3 и 8.2.2 мне было собирать некогда, как пакеты я бы
их оставил, с добавлением минимального набора модулей (cabal-install +
зависимости).
Для обновления модулей у нас предусмотрен инструмент cabal2rpm, с
помощью него удобно получить полный набор gear-репозиториев под все
новые модули. С ходу я от него не добился двух вещей - правильной
генерации сборочных зависимостей и обновления уже собраных модулей.
Кроме того cabal2rpm предполагает, что ему передают тарболы с
модулями, а это уже не рабочий вариант, как оказалось.
Дело в том, что тарболы, которые качают вручную из
http://hackage.haskell.org/ неполноценны, в них лежит нулевая ревизия
cabal-файла. Правильную ревизию умеет подкладывать cabal get, поэтому
я рассчитываю научить cabal2rpm брать не траболы, сразу распакованные
с помощью cabal get каталоги и делать уже с них gear-update.
Я на низком старте жду отмашки, что мы готовы к этому сценарию.
чт, 14 мар. 2019 г. в 19:33, Dmitry V. Levin <ldv at altlinux.org>:
>
> On Tue, Mar 12, 2019 at 09:48:07PM +0400, Evgeny Sinelnikov wrote:
> > Здравствуйте,
> >
> > хочу снова поднять вопрос по обновлению компилятора Haskell:
> >
> > Для истории:
> > https://lists.altlinux.org/pipermail/devel/2018-November/205967.html
> > https://lists.altlinux.org/pipermail/sisyphus/2018-May/366749.html
> > https://lists.altlinux.org/pipermail/devel/2018-May/204407.html
> > https://bugzilla.altlinux.org/show_bug.cgi?id=31193
> > https://bugzilla.altlinux.org/show_bug.cgi?id=34731
> >
> > У меня готов бутстрап 7.6.1 -> 7.10.3 -> 7.10.3 -> 8.6.3.
> >
> > Пакеты успешно пересбораны хешере. Сборка 7.10.3 в сборочнице прошла
> > успешно, большая часть патчей по поддержке aarch64 отпилена, потому
> > что больше не нужна.
> >
> > Из интересного, с haskell теперь идут динамические модули, которые
> > требуются во время работы, но кладутся в
> > /usr/{lib,lib64}/ghc-X.Y.Z/package-version/libHSpackage-version.soname
> >
> > Из-за этого новый ghc не запускается без смонтированного /proc. Я это
> > поправил переложив динамичческие либы в отдельный
> > /usr/{lib,lib64}/ghc-X.Y.Z/lib каталог и прописав его в
> > /etc/ld.so.conf.d/ghc-version.conf
> >
> > Далее, в rpm-build-haskell исправлена генерация зависимостей, а также
> > при сборке модулей для динамических библиотек прописана опция
> > --dynlibdir to %_libdir/$compiler/lib/
> >
> > Готов рассмотреть более уданые варианты, если есть предложения.
> >
> > Поскольку ничего критичного новые сборки ghc не провайдят, предлагаю
> > начать постепенный бустрап этих сборок в сизиф. Когда новый ghc будет
> > готов по количеству модулей к сборке зависимых от него приложений,
> > пересборать их на новом ghc.
>
> Я не понял из этого плана, сколько версий ghc будет в репозитории во время
> этого бутстрапа, и что в это время будет происходить с модулями?
>
>
> --
> ldv
> -----BEGIN PGP SIGNATURE-----
>
> iQIcBAEBCAAGBQJcinQ8AAoJEAVFT+BVnCUIQaQP/112Bx35zxPBN4b/C5pNr/bA
> 1+aYAi82IXML0AQlrF7tddUEg/Roq2Sz12dvrYr1zEWxZW4e8kkFTs/7ZcWeZEDF
> IJSZ8sODlzuBk7K4Y1XSkkz2/kU4c72RKNAuvR1b+P7K31c2RPXfD+m0Gs287q3E
> S0oAZSfJcMxsO98YBmPBAT6kto9zwhd3bFdNUfaYowwHcJu4dJS/h4pFHH92fRKI
> pAeYzx8duAcNS49UmD1idqKrACKBD8Iv/LNTRwh/wQ31WeMl3bEiKRckNBiSgOuM
> PSw1VkRnEYDb3vxyaRFSsmE2bYbqaZC6eoa7Wqv0TpqGOw5oU4saqu2iugHfBqAh
> J0RcD9V7XzkWp3byzY4neP58UawiLvMZgSc94x+B6Z+WzVtcfCmP5jopBFjt9O3f
> YR0+/O4ulEWVL+1RPXfJWQuzuKdbE+wkWyMQCTmxQs05BZ6CiUvwLfTS5WBZXVMx
> tMgLBzKRFbWdP4u7PGi/iXtqwoxNGdBZIbhk9106PNwJhn2aqUvAks2RR2NZkkuS
> SqU6duBbcEt5bv7/Qm37U89Azac3maUpTQxvYdqceUaDz5JaKMIP5xnGFj3NoMF7
> Iwg7yYGH45+tnWSzJFVn5JwfQeycfyRwfW2S/Ga5groaboWXGTun915z801qfy+F
> Hbx+sJEzA1Cy076stqQA
> =7FWR
> -----END PGP SIGNATURE-----
> _______________________________________________
> Devel mailing list
> Devel at lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel
--
Sin (Sinelnikov Evgeny)
Подробная информация о списке рассылки Devel