Bug 56619 - Breaking changes in 5.x.x
Summary: Breaking changes in 5.x.x
Status: NEW
Alias: None
Product: Sisyphus
Classification: Development
Component: eigen3 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Andrey Cherepanov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-25 23:36 MSK by Konstantin A Lepikhov (L.A. Kostis)
Modified: 2025-12-05 09:48 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Konstantin A Lepikhov (L.A. Kostis) 2025-10-25 23:36:05 MSK
Привет!

В настоящий момент сломан bcd, причем сломан он после обновления на версию 5.0.0. Почему мантейнер eigen3 это не проверил, мне не ведомо.

Обычно в таких случаях хотя бы собирают compat library и переименовывают новый пакет в eigen3->eigen35. Если следовать логике разработчиков eigen[1], пакет с версией 3.x должен называться eigen34 (и провайдить eigen3), а новый eigen35.

<sarcasm>Но видимо, для сотрудников ООО shared library policy[2] это бумажка на подтереться, и служит только для того, чтобы блокировать задания "неугодных" ООО людей</sarcasm>

1. https://gitlab.com/libeigen/eigen/-/releases/5.0.0
2. https://www.altlinux.org/Shared_Libs_Policy
Comment 1 Konstantin A Lepikhov (L.A. Kostis) 2025-10-26 21:10:56 MSK
bcd я починил, вопрос со сборкой отдельного пакета с новой версией и правильного provides остается открытым.
Comment 3 Ulysses Apokin 2025-11-10 11:12:46 MSK
Принял к рассмотрению.
По поводу regard3d. Он же сломался по причине отсутствия -devel пакет у libexGTK3.0 (https://git.altlinux.org/gears/w/wxGTK3.0.git?p=wxGTK3.0.git;a=commitdiff;h=ae5f821896bdd1ee6bacc4f3fc5f0e5d3acbfa91).
Или я что-то упустил?
Comment 4 Konstantin A Lepikhov (L.A. Kostis) 2025-11-10 12:08:58 MSK
(In reply to Ulysses Apokin from comment #3)
> Принял к рассмотрению.
> По поводу regard3d. Он же сломался по причине отсутствия -devel пакет у
> libexGTK3.0
> (https://git.altlinux.org/gears/w/wxGTK3.0.git?p=wxGTK3.0.git;a=commitdiff;
> h=ae5f821896bdd1ee6bacc4f3fc5f0e5d3acbfa91).
> Или я что-то упустил?

wxGTK тоже, там поломано в нескольких местах.
Comment 5 Konstantin A Lepikhov (L.A. Kostis) 2025-11-10 12:12:36 MSK
(In reply to Konstantin A Lepikhov (L.A. Kostis) from comment #4)
> (In reply to Ulysses Apokin from comment #3)
> > Принял к рассмотрению.
> > По поводу regard3d. Он же сломался по причине отсутствия -devel пакет у
> > libexGTK3.0
> > (https://git.altlinux.org/gears/w/wxGTK3.0.git?p=wxGTK3.0.git;a=commitdiff;
> > h=ae5f821896bdd1ee6bacc4f3fc5f0e5d3acbfa91).
> > Или я что-то упустил?
> 
> wxGTK тоже, там поломано в нескольких местах.

я честно пытался починить и это, но там уже вылазит несовместимость на уровне кода нового wxGTK, поэтому оставляю на усмотрение мантейнера.
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2025-11-18 17:49:00 MSK
Привет!

Если https://packages.altlinux.org/en/tasks/399910/ это попытка посмотреть, то прошу принять к сведению, что для blender исправление стоит брать отсюда https://git.altlinux.org/people/lakostis/packages/?p=blender.git&a=commit&h=cc0125788957df9adf0bd0c3bd44844139fe2832

К сожалению, пакет blender все так же захвачен неадекватными людьми, поэтому приходится поддерживать его отдельно.
Comment 7 Ulysses Apokin 2025-11-19 07:54:12 MSK
Привет. Сборка блендер вроде прошла успешна, но я попробую взять из твоего репозитория. А что не так с блендер? Я не в курсе  ЛОРа, но судя по списку изменений, твои таски принимают регулярно. Также хочу сказать, что у меня нету доступа на отправку тасков в репозиторий, я сам  запрашиваю и ожидаю аппрувы. Тем не менее, я думаю, что с этим таском больших проблем не будет.
Comment 8 Ulysses Apokin 2025-11-19 07:55:44 MSK
> Сборка блендер вроде прошла успешна
А, извиняюсь, невнимательно посмотрел.
Спасбо за патч :)
Comment 9 Anton Farygin 2025-11-19 09:15:31 MSK
blender готовится обновление, ничего с ним делать не надо.
Comment 10 Ulysses Apokin 2025-11-19 09:18:45 MSK
(In reply to Anton Farygin from comment #9)
> blender готовится обновление, ничего с ним делать не надо.

Хорошо, тогда пока исключю его из таска. Но потом все равно потребуется его ребилд, потому что в eigen3 будет переименованы библиотеки из *.so в *so.X.Y.Z, чтобы соответсвовать SLibsPolicy. И таким образом все пакеты, зависящие от eigen3 будут слинкованы неправильно. На *.so, а не на *.so.X.
Comment 11 Konstantin A Lepikhov (L.A. Kostis) 2025-11-19 11:21:25 MSK
(In reply to Anton Farygin from comment #9)
> blender готовится обновление, ничего с ним делать не надо.

Потырите патчи как обычно из моей сборки? В 4.5 все равно эти патчи нужны, никаких движений в upstream от вас лично я не видел.
Comment 12 Anton Farygin 2025-11-19 11:40:16 MSK
(In reply to Ulysses Apokin from comment #10)
> (In reply to Anton Farygin from comment #9)
> > blender готовится обновление, ничего с ним делать не надо.
> 
> Хорошо, тогда пока исключю его из таска. Но потом все равно потребуется его
> ребилд, потому что в eigen3 будет переименованы библиотеки из *.so в
> *so.X.Y.Z, чтобы соответсвовать SLibsPolicy. И таким образом все пакеты,
> зависящие от eigen3 будут слинкованы неправильно. На *.so, а не на *.so.X.

Пришлите мне задание на review, я посмотрю. Вот из этого описания непонятно что происходит.
Comment 13 Ulysses Apokin 2025-11-19 11:59:44 MSK
(In reply to Anton Farygin from comment #12)
> (In reply to Ulysses Apokin from comment #10)
> > (In reply to Anton Farygin from comment #9)
> > > blender готовится обновление, ничего с ним делать не надо.
> > 
> > Хорошо, тогда пока исключю его из таска. Но потом все равно потребуется его
> > ребилд, потому что в eigen3 будет переименованы библиотеки из *.so в
> > *so.X.Y.Z, чтобы соответсвовать SLibsPolicy. И таким образом все пакеты,
> > зависящие от eigen3 будут слинкованы неправильно. На *.so, а не на *.so.X.
> 
> Пришлите мне задание на review, я посмотрю. Вот из этого описания непонятно
> что происходит.

https://git.altlinux.org/tasks/399910/gears/40/git
Comment 14 Anton Farygin 2025-11-19 12:18:25 MSK
(In reply to Ulysses Apokin from comment #13)
> (In reply to Anton Farygin from comment #12)
> > (In reply to Ulysses Apokin from comment #10)
> > > (In reply to Anton Farygin from comment #9)
> > > > blender готовится обновление, ничего с ним делать не надо.
> > > 
> > > Хорошо, тогда пока исключю его из таска. Но потом все равно потребуется его
> > > ребилд, потому что в eigen3 будет переименованы библиотеки из *.so в
> > > *so.X.Y.Z, чтобы соответсвовать SLibsPolicy. И таким образом все пакеты,
> > > зависящие от eigen3 будут слинкованы неправильно. На *.so, а не на *.so.X.
> > 
> > Пришлите мне задание на review, я посмотрю. Вот из этого описания непонятно
> > что происходит.
> 
> https://git.altlinux.org/tasks/399910/gears/40/git

в пакете, судя по всему, сделано что-то не то. 
Вы на 100% уверены что то, к чему вы добавляете soname - это SharedLibrary  а не плагин ?
Если раскрыть все зависимости тут:
https://packages.altlinux.org/ru/sisyphus/srpms/eigen3/what_depends/by_binary
то можно убедиться что кроме как для сборки этот пакет никому не нужен.
Comment 15 Anton Farygin 2025-11-19 12:30:11 MSK
И да, автор ошибки сам не понял что написал - желчь и эмоциональные фрустрации мешают думать. Так бывает. Ментейнеру пакета надо внимательнее анализировать поступающие в его сторону ошибки, тщательно фильтруя и анализируя все сообщения на предмет разумности и при этом фильтровать троллинг, провокации и агрессию.
Comment 16 Konstantin A Lepikhov (L.A. Kostis) 2025-11-19 12:59:54 MSK
(In reply to Anton Farygin from comment #15)
> И да, автор ошибки сам не понял что написал - желчь и эмоциональные
> фрустрации мешают думать. Так бывает. Ментейнеру пакета надо внимательнее
> анализировать поступающие в его сторону ошибки, тщательно фильтруя и
> анализируя все сообщения на предмет разумности и при этом фильтровать
> троллинг, провокации и агрессию.

Вы что то путаете - все вышесказанное это стиль общения ООО, поздно одевать пенсне. Да, eigen это не shared library, а template library, как например stb. И ее обновление хорошо бы согласовать со всеми зависимыми пакетами, а не тупо собрать новую версию и убежать. SharedLibrary Policy тут бы пригодилась, если это обновление нужно провести максимально неинвазивно (т.е. сохранив старые и новые -devel пакеты). Т.е. все что написано в ошибке верно, а уж как это понято, это ваши проблемы.

PS жду новую версию blender, наверное, это будет пакет года, который затмит, все что собирали в сизифе за прошедшее время.
Comment 17 Ulysses Apokin 2025-11-19 15:20:14 MSK
(In reply to Anton Farygin from comment #15)
> И да, автор ошибки сам не понял что написал - желчь и эмоциональные
> фрустрации мешают думать. Так бывает. Ментейнеру пакета надо внимательнее
> анализировать поступающие в его сторону ошибки, тщательно фильтруя и
> анализируя все сообщения на предмет разумности и при этом фильтровать
> троллинг, провокации и агрессию.
(In reply to Anton Farygin from comment #14)
> (In reply to Ulysses Apokin from comment #13)
> > (In reply to Anton Farygin from comment #12)
> > > (In reply to Ulysses Apokin from comment #10)
> > > > (In reply to Anton Farygin from comment #9)
> > > > > blender готовится обновление, ничего с ним делать не надо.
> > > > 
> > > > Хорошо, тогда пока исключю его из таска. Но потом все равно потребуется его
> > > > ребилд, потому что в eigen3 будет переименованы библиотеки из *.so в
> > > > *so.X.Y.Z, чтобы соответсвовать SLibsPolicy. И таким образом все пакеты,
> > > > зависящие от eigen3 будут слинкованы неправильно. На *.so, а не на *.so.X.
> > > 
> > > Пришлите мне задание на review, я посмотрю. Вот из этого описания непонятно
> > > что происходит.
> > 
> > https://git.altlinux.org/tasks/399910/gears/40/git
> 
> в пакете, судя по всему, сделано что-то не то. 
> Вы на 100% уверены что то, к чему вы добавляете soname - это SharedLibrary 
> а не плагин ?
> Если раскрыть все зависимости тут:
> https://packages.altlinux.org/ru/sisyphus/srpms/eigen3/what_depends/by_binary
> то можно убедиться что кроме как для сборки этот пакет никому не нужен.


Да, вы правы. В таком случае закрыть багу?
Или нужно будет подговить пакет -devel к тому, что его может быть два в случае ломки API - с новой и старой версией.
Comment 18 Ulysses Apokin 2025-11-19 15:25:22 MSK
Изучу более дотошно для чего нужны еще eigen3_blas и _lapack. Глянул, что в suse их сборка вообще отключена.
Comment 19 Ulysses Apokin 2025-11-20 14:06:20 MSK
(In reply to Anton Farygin from comment #14)
> в пакете, судя по всему, сделано что-то не то. 
> Вы на 100% уверены что то, к чему вы добавляете soname - это SharedLibrary 
> а не плагин ?

Думаю, что это не плагины, а библиотекио.

Документация по этой теме скудная, но вот на чем я сделал такие выводы:

LAPACK и BLAS - это стандарты API для библиотек, выполняющих операции линейной алгебры.
https://en.wikipedia.org/wiki/LAPACK 
https://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms

Соответственно, eigen3 предоставляет одну из реализаций этих библиотек. (При этом это не часть именно eigen3 - библиотеки шаблонов).
В CMakeLists.txt:
 62 # Determine if we should build BLAS/LAPACK implementations.
 63 option(EIGEN_BUILD_BLAS "Toggles the building of the Eigen Blas library" ${PROJECT_IS_TOP_LEVEL})
 64 option(EIGEN_BUILD_LAPACK "Toggles the building of the included Eigen LAPACK library" ${PROJECT_IS_TOP_LEVEL})

И можно взять какие-нибудь функции из спецификации и посмотреть, что они реализованы:
[builder@localhost .in]$ readelf -s /usr/lib64/libeigen_blas.so.5.0.1 | grep gemm
    28: 0000000000016a30  1693 FUNC    GLOBAL DEFAULT   12 sgemm_
    46: 000000000003e7b0  1677 FUNC    GLOBAL DEFAULT   12 dgemm_
   102: 00000000000bddd0  2784 FUNC    GLOBAL DEFAULT   12 zgemmtr_
   105: 00000000000170d0  1787 FUNC    GLOBAL DEFAULT   12 sgemmtr_
   163: 000000000003ee40  1803 FUNC    GLOBAL DEFAULT   12 dgemmtr_
   169: 0000000000069020  1913 FUNC    GLOBAL DEFAULT   12 cgemm_
   183: 00000000000bd860  1391 FUNC    GLOBAL DEFAULT   12 zgemm_
   184: 00000000000697a0  2911 FUNC    GLOBAL DEFAULT   12 cgemmtr_

В документации eigen3 есть упоминание, как использовать сторонние BLAS и LAPACK https://libeigen.gitlab.io/eigen/docs-nightly/TopicUsingBlasLapack.html

В Сизифе программы слинкованы на другие реализации, вроде OpenBLAS и т.д., если им это нужно.
В suse эти библиотеки от eigen3 тоже не используются, и сборка этих библиотек отключена.
А в fedora они собираются.

Соответственно, вопрос о упаковке eigen3 согласно SLibsPolicy можно свести к следующему:

1. Нужна ли сборка BLAS и LAPACK от eigen3?
2. Нужна ли поддержка нескольких -devel пакетов для eigen3?
Comment 20 Anton Farygin 2025-11-20 14:13:29 MSK
а попробуйте пообщаться по этому поводу с апстримом ?
Comment 21 Ulysses Apokin 2025-11-21 11:28:11 MSK
Следить за развитием ситуации можно по ссылке:
https://gitlab.com/libeigen/eigen/-/merge_requests/2080
Comment 22 Sergey V Turchin 2025-12-03 13:42:10 MSK
"lib" в имена devel-подпакетов не пихайте, пожалуйста. Это не библиотеки.
Comment 23 Ulysses Apokin 2025-12-03 13:46:48 MSK
(In reply to Sergey V Turchin from comment #22)
> "lib" в имена devel-подпакетов не пихайте, пожалуйста. Это не библиотеки.

Это предложили в [devel]-рассылки. На данный момент такого изменения нет. Или я что-то упустил?
Comment 24 Ulysses Apokin 2025-12-03 13:49:15 MSK
Апстрим принял изменение, которое я подготовил, в основной состав.
https://gitlab.com/libeigen/eigen/-/commit/a73501cc76371c1e5ba649070275158a3b01d031
Таск с заданием:
https://git.altlinux.org/tasks/401479/logs/events.7.1.log

Сборка происходит из новой версии 5.0.1+git<commit> с нашим изменением.
Comment 25 Ulysses Apokin 2025-12-03 13:55:59 MSK
На данный момент поступило несколько предложений.

- Переименовать eigen3-devel в libeigen3-devel.
   Исходя из обсуждения в списке рассылки, я думаю, что от этого изменения мы отказываемся.


- Отказ от сборки нескольких версий -devel подпакетов в случае обратно-несовместимых изменений.
  Я думаю, если мы хотим плавной миграции на новые обратно-несовместимые версии, что и было причиной появления данной баги, стоит собирать несколько версий -devel пакетов. Потому что eigen3 - это библиотека шаблонов.
Comment 26 Sergey V Turchin 2025-12-03 13:57:48 MSK
(Ответ для Ulysses Apokin на комментарий #23)
> > "lib" в имена devel-подпакетов не пихайте, пожалуйста. Это не библиотеки.
> На данный момент такого изменения нет.
> Или я что-то упустил?
Ааа, ок. Это я перебздел.
Comment 27 Sergey V Turchin 2025-12-03 14:01:18 MSK
> Provides: %name-blas = %EVR
> Obsoletes: %name-blas < %EVR
и подобные. Эти имена пакетов _никогда_ не поменяются, зато могут поменяться в вашем spec и станут ошибкой. Надо
Provides: eigen3-blas = %EVR
Obsoletes: eigen3-blas < %EVR
Comment 28 Ulysses Apokin 2025-12-03 14:03:21 MSK
(In reply to Sergey V Turchin from comment #27)
> > Provides: %name-blas = %EVR
> > Obsoletes: %name-blas < %EVR
> и подобные. Эти имена пакетов _никогда_ не поменяются, зато могут поменяться
> в вашем spec и станут ошибкой. Надо
> Provides: eigen3-blas = %EVR
> Obsoletes: eigen3-blas < %EVR

Спасибо за замечание. Обязательно исправлю.
Comment 29 Sergey V Turchin 2025-12-03 14:31:18 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #0)
> shared library policy
Не вижу, чтобы вы там предлагали не подтереться. https://lists.altlinux.org/pipermail/devel/2025-August/219461.html
Comment 30 protvin@altlinux.org 2025-12-03 18:36:32 MSK
(In reply to Ulysses Apokin from comment #28)
Собирайте в исходном пакете eigen пятую версию со всеми адаптированными зависимостями, в соответствии с Shared Libs Policy.

ITK одобряют 5 версию:
https://github.com/InsightSoftwareConsortium/ITK/pull/5590

FreeCAD:
https://github.com/FreeCAD/FreeCAD/pull/24099

Третья версия получает обновления и требуется как минимум для fcl:
https://gitlab.com/libeigen/eigen/-/tree/3.4

Подготовкой пакета для третьей версии занимался silverducks@, вы можете скооперироваться для разрешения проблемы.
Comment 31 Anton Farygin 2025-12-03 18:44:35 MSK
у fcl в master ветке есть патчи для поддержки пятой версии - просто приложите их и не надо плодить дубли пакетов.
Comment 32 Ulysses Apokin 2025-12-04 08:47:45 MSK
Всем доброе утро.
Не очень удобно читать и отвечать в рассылке. Письма некоторых участников у меня попадают в спам, а от некоторых даже реджектятся и я могу их прочитать, только если их процитировали в ответе.

Я видел возражение, что у нас eigen3, а не eigen5, несмотря на смену мажорной версии.
Согласно информации, которую предоставил апстрим, текущая версия библиотеки 3.5.0.1, до обратно-несовместимого изменения она была 3.3.4.0. См. https://gitlab.com/libeigen/eigen/-/releases#versioning
В связи с этим, название пакета соответствует действительности.

Замечание, которое сделал Сергей в https://bugzilla.altlinux.org/show_bug.cgi?id=56619#c27 я исправил.

По поводу переименования пакетов eigen3-blas и eigen3-lapack в libeigen3_blas%soversioin и libeigen3_lapack%soversion вместо eigen3-blas%soversion и eigen3-lapack%soversion. Я не против такого переименования. Тем не менее должен заметить, что такое наименование eigen3-blas и eigen3-lapack используется в RHEL, и в случае текущего варианта наименования, мы будем менее оринигальными в позитивном смысле по сравнению с RHEL. Предлагаю прийти к консенсусу.

По поводу сборки eigen3.3.4.1. Я думал, что ее вопрос сборки уже не обсуждается. И в этой баге идет работа по поводу того, как подготовить пакет для плавной миграции на новую версию в случае обратно-несовместимых изменений. И в качестве побочного эффекта обновление 5.0.0->5.0.1. Мне необходимы пояснения и указания по этому вопросу.
Comment 33 Sergey V Turchin 2025-12-04 09:36:38 MSK
(Ответ для Ulysses Apokin на комментарий #32)
> Замечание, которое сделал Сергей в
> https://bugzilla.altlinux.org/show_bug.cgi?id=56619#c27 я исправил.
Туда же:
Provides: %name = %EVR
Obsoletes: %name < %EVR
тоже неоднозначно. Возможно, корректнее будет к нему добавить
Provides: eigen3 = %EVR
Obsoletes: eigen3 < %EVR

P.S.
Requires: подпакет = %EVR
можно писать, как 
Requires: подпакет
Comment 34 Ulysses Apokin 2025-12-05 09:48:16 MSK
Исправил. Таск тот же.
Если других замечаний/предложений нет, можете выдать аппрув.
Или можно подождать Антона, поскольку он мой рецензент.