ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Спасём python3 вместе! (действительно) - Stable ABI
@ 2025-10-02 13:44 Anton Zhukharev
  2025-10-02 19:45 ` Grigory Ustinov
  0 siblings, 1 reply; 6+ messages in thread
From: Anton Zhukharev @ 2025-10-02 13:44 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 3523 bytes --]

Всем привет!

Последние таски по обновлению Python выглядят пугающее: объем
пересобираемых пакетов невероятно огромный и постоянно растет из-за чего
обновление самого Python в Sisyphus происходит дольше, чем в апстриме...

Я прошу обратить внимание на эту проблему куда большую часть сообщества
и принять хоть какое-нибудь решение, которое не оставит все как есть.

А под "хоть какое-нибудь решение" я имею ввиду единственное, на данный
момент предложенное. Читать тут:
https://bugzilla.altlinux.org/show_bug.cgi?id=55340#c5
https://bugzilla.altlinux.org/56201

Сейчас чуть подробнее введу в курс (небольшая, но важная выжимка из
https://docs.python.org/3/c-api/stable.html).

* Stable ABI — это набор символов в CPython, которые остаются бинарно-
  совместимыми для различных минорных версий Python 3.X. Экстеншн,
  собранный под Stable ABI (и правильно использующий Limited API),
  должен работать без пересборки на всех минорных версиях Python,
  начиная с той, для которой он был скомпилирован.
  Такие модули часто имеют в имени файла тег abi3
  (например, mymodule.abi3.so)

* Limited C API — это подмножество C API Python, использование
  которого гарантирует совместимость с Stable ABI.

* Интерпретатор Python не проверяет, действительно ли модуль с тегом
  abi3 соответствует Stable ABI. Ответственность за обеспечение
  корректности лежит на мейнтейнере.

В Sisyphus сейчас есть модули с тэгом abi3 (будем надеятся, что они
соблюдают Stable ABI) и собранные для конкретной минорной версии
Python. Текущая идея сборки компилируемых модулей заключается в том,
чтобы везде ставить зависимость на %python3_ABI_dep. Естественно, это
приводит к тому, что у нас сейчас при обновлении Python мучается один
бедный grenka, а все сидят и смотрят на это в ожидании окончания
(кто-то даже успевает продлять ему муки).

В общем, идея решения заключается в том, чтобы для модулей, собираемых
под Stable ABI эту зависимость не генерировать и как-нибудь проверять,
что там действительно Stable ABI. Для этого есть инструмент abi3audit,
собираемый в этом задании: https://packages.altlinux.org/tasks/396283

-- 
Anton Zhukharev
ALT Linux Team

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Спасём python3 вместе! (действительно) - Stable ABI
  2025-10-02 13:44 [devel] Спасём python3 вместе! (действительно) - Stable ABI Anton Zhukharev
@ 2025-10-02 19:45 ` Grigory Ustinov
  2025-10-03  6:18   ` Anton Zhukharev
  0 siblings, 1 reply; 6+ messages in thread
From: Grigory Ustinov @ 2025-10-02 19:45 UTC (permalink / raw)
  To: devel

02.10.2025 16:44, Anton Zhukharev пишет:
> Всем привет!
>
> Последние таски по обновлению Python выглядят пугающее: объем
> пересобираемых пакетов невероятно огромный и постоянно растет из-за чего
> обновление самого Python в Sisyphus происходит дольше, чем в апстриме...
Меня объём пересобираемых пакетов не пугает. Обновление самого Python в 
Sisyphus происходит дольше по абсолютно другим причинам.
> Я прошу обратить внимание на эту проблему куда большую часть сообщества
> и принять хоть какое-нибудь решение, которое не оставит все как есть.
>
> А под "хоть какое-нибудь решение" я имею ввиду единственное, на данный
> момент предложенное.
Вот из-за таких "хоть каких-нибудь решений" обновление Python и затянулось.
> В Sisyphus сейчас есть модули с тэгом abi3 (будем надеятся, что они
> соблюдают Stable ABI) и собранные для конкретной минорной версии
> Python. Текущая идея сборки компилируемых модулей заключается в том,
> чтобы везде ставить зависимость на %python3_ABI_dep. Естественно, это
> приводит к тому, что у нас сейчас при обновлении Python мучается один
> бедный grenka, а все сидят и смотрят на это в ожидании окончания
> (кто-то даже успевает продлять ему муки).
>
> В общем, идея решения заключается в том, чтобы для модулей, собираемых
> под Stable ABI эту зависимость не генерировать и как-нибудь проверять,
> что там действительно Stable ABI. Для этого есть инструмент abi3audit,
> собираемый в этом задании: https://packages.altlinux.org/tasks/396283
Я правильно понимаю, что всё что выше написано касается всего 38 пакетов?


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Спасём python3 вместе! (действительно) - Stable ABI
  2025-10-02 19:45 ` Grigory Ustinov
@ 2025-10-03  6:18   ` Anton Zhukharev
  2025-10-03 13:51     ` Anton Zhukharev
  2025-10-05 10:46     ` [devel] Затянувшийся фриз сборочницы Grigory Ustinov
  0 siblings, 2 replies; 6+ messages in thread
From: Anton Zhukharev @ 2025-10-03  6:18 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 3682 bytes --]

On Thu, Oct 02, 2025 at 10:45:34PM +0300, Grigory Ustinov wrote:
> 02.10.2025 16:44, Anton Zhukharev пишет:
> > Всем привет!
> >
> > Последние таски по обновлению Python выглядят пугающее: объем
> > пересобираемых пакетов невероятно огромный и постоянно растет из-за чего
> > обновление самого Python в Sisyphus происходит дольше, чем в апстриме...
> Меня объём пересобираемых пакетов не пугает. Обновление самого Python в 
> Sisyphus происходит дольше по абсолютно другим причинам.
Не всем нравится сидеть и ждать (уже) годами, пока вы обновите Python до
следующей минорной версии, поскольку текущему образу сборки обязательно
требуется фриз сборочницы.

Перечислите все причины, которые, по вашему утверждению, затягивают
обновление.
> > Я прошу обратить внимание на эту проблему куда большую часть сообщества
> > и принять хоть какое-нибудь решение, которое не оставит все как есть.
> >
> > А под "хоть какое-нибудь решение" я имею ввиду единственное, на данный
> > момент предложенное.
> Вот из-за таких "хоть каких-нибудь решений" обновление Python и затянулось.
Да, поэтому текущее подобное решение в Sisyphus и предлагается изменить.
> > В Sisyphus сейчас есть модули с тэгом abi3 (будем надеятся, что они
> > соблюдают Stable ABI) и собранные для конкретной минорной версии
> > Python. Текущая идея сборки компилируемых модулей заключается в том,
> > чтобы везде ставить зависимость на %python3_ABI_dep. Естественно, это
> > приводит к тому, что у нас сейчас при обновлении Python мучается один
> > бедный grenka, а все сидят и смотрят на это в ожидании окончания
> > (кто-то даже успевает продлять ему муки).
> >
> > В общем, идея решения заключается в том, чтобы для модулей, собираемых
> > под Stable ABI эту зависимость не генерировать и как-нибудь проверять,
> > что там действительно Stable ABI. Для этого есть инструмент abi3audit,
> > собираемый в этом задании: https://packages.altlinux.org/tasks/396283
> Я правильно понимаю, что всё что выше написано касается всего 38 пакетов?
38 пакетов в текущий момент собраны под Stable ABI.

Это количество можно попробовать увеличить, просто передав
-DPy_LIMITED_API=0x03000000 компилятору во время сборки экстеншена.

-- 
Anton Zhukharev
ALT Linux Team

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Спасём python3 вместе! (действительно) - Stable ABI
  2025-10-03  6:18   ` Anton Zhukharev
@ 2025-10-03 13:51     ` Anton Zhukharev
  2025-10-05 10:46     ` [devel] Затянувшийся фриз сборочницы Grigory Ustinov
  1 sibling, 0 replies; 6+ messages in thread
From: Anton Zhukharev @ 2025-10-03 13:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 4306 bytes --]

On Fri, Oct 03, 2025 at 09:18:39AM +0300, Anton Zhukharev wrote:
> On Thu, Oct 02, 2025 at 10:45:34PM +0300, Grigory Ustinov wrote:
> > 02.10.2025 16:44, Anton Zhukharev пишет:
> > > Всем привет!
> > >
> > > Последние таски по обновлению Python выглядят пугающее: объем
> > > пересобираемых пакетов невероятно огромный и постоянно растет из-за чего
> > > обновление самого Python в Sisyphus происходит дольше, чем в апстриме...
> > Меня объём пересобираемых пакетов не пугает. Обновление самого Python в 
> > Sisyphus происходит дольше по абсолютно другим причинам.
> Не всем нравится сидеть и ждать (уже) годами, пока вы обновите Python до
> следующей минорной версии, поскольку текущему образу сборки обязательно
> требуется фриз сборочницы.
Извиняюсь за такую формулировку: фриз происходит на последнем этапе
сборки таска, а не на протяжении всего существования таска с обновлением
Python. 
> Перечислите все причины, которые, по вашему утверждению, затягивают
> обновление.
> > > Я прошу обратить внимание на эту проблему куда большую часть сообщества
> > > и принять хоть какое-нибудь решение, которое не оставит все как есть.
> > >
> > > А под "хоть какое-нибудь решение" я имею ввиду единственное, на данный
> > > момент предложенное.
> > Вот из-за таких "хоть каких-нибудь решений" обновление Python и затянулось.
> Да, поэтому текущее подобное решение в Sisyphus и предлагается изменить.
> > > В Sisyphus сейчас есть модули с тэгом abi3 (будем надеятся, что они
> > > соблюдают Stable ABI) и собранные для конкретной минорной версии
> > > Python. Текущая идея сборки компилируемых модулей заключается в том,
> > > чтобы везде ставить зависимость на %python3_ABI_dep. Естественно, это
> > > приводит к тому, что у нас сейчас при обновлении Python мучается один
> > > бедный grenka, а все сидят и смотрят на это в ожидании окончания
> > > (кто-то даже успевает продлять ему муки).
> > >
> > > В общем, идея решения заключается в том, чтобы для модулей, собираемых
> > > под Stable ABI эту зависимость не генерировать и как-нибудь проверять,
> > > что там действительно Stable ABI. Для этого есть инструмент abi3audit,
> > > собираемый в этом задании: https://packages.altlinux.org/tasks/396283
> > Я правильно понимаю, что всё что выше написано касается всего 38 пакетов?
> 38 пакетов в текущий момент собраны под Stable ABI.
> 
> Это количество можно попробовать увеличить, просто передав
> -DPy_LIMITED_API=0x03000000 компилятору во время сборки экстеншена.
Здесь, если что, место, которое нужно обсуждать.
Просто воткнуть 0x0300000 (то есть версию 3.0) и радоваться не
получится.

-- 
Anton Zhukharev
ALT Linux Team

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Затянувшийся фриз сборочницы
  2025-10-03  6:18   ` Anton Zhukharev
  2025-10-03 13:51     ` Anton Zhukharev
@ 2025-10-05 10:46     ` Grigory Ustinov
  2025-10-05 12:49       ` Leonid Krivoshein
  1 sibling, 1 reply; 6+ messages in thread
From: Grigory Ustinov @ 2025-10-05 10:46 UTC (permalink / raw)
  To: devel

03.10.2025 9:18, Anton Zhukharev пишет:
> On Thu, Oct 02, 2025 at 10:45:34PM +0300, Grigory Ustinov wrote:
>> 02.10.2025 16:44, Anton Zhukharev пишет:
>>> Всем привет!
>>>
>>> Последние таски по обновлению Python выглядят пугающее: объем
>>> пересобираемых пакетов невероятно огромный и постоянно растет из-за чего
>>> обновление самого Python в Sisyphus происходит дольше, чем в апстриме...
>> Меня объём пересобираемых пакетов не пугает. Обновление самого Python в
>> Sisyphus происходит дольше по абсолютно другим причинам.
> Не всем нравится сидеть и ждать (уже) годами, пока вы обновите Python до
> следующей минорной версии, поскольку текущему образу сборки обязательно
> требуется фриз сборочницы.
>
> Перечислите все причины, которые, по вашему утверждению, затягивают
> обновление.

Пожалуй всё-таки имеет смысл вкратце зарезюмировать текущую ситуацию. В 
этом году фриз сборочницы действительно затянулся на неприлично 
длительное время. У всех ожидающих прошу прощения и немного понимания. Я 
жду его окончания не меньше вашего и почти в круглосуточном режиме слежу 
за таском, делая всё, что в моих силах для его скорейшего прохождения.

Сначала таск был сломан очень несвоевременным обновлением libfmt. Только 
всё разрулили, и тут с двух ног влетел Cython. Решили проблемы и с ним. 
Сейчас таск уже почти неделю в полностью готовом состоянии не может 
пройти из-за нехватки ресурсов на архитектурах i586 и aarch64. Проблема 
не в количестве пакетов, а в том, что крупные пакеты типа llvm, blender, 
vtk и тому подобные собираются вероятностно. Учитывая, что сборка идёт 
на коммит, кэширования результатов нет и имеем что имеем. 3 дня таск 
собирается, потом падает со словами
[aarch64] hasher-privd: parent: handle_io: idle time limit (3600 
seconds) exceeded

В предыдущих обновлениях python3 эта проблема была не так сильно 
выражена. Возможно имеет смысл в следующем обновлении сформировать 
список пересборки таким образом, чтобы "тяжёлые" пакеты шли поближе к 
началу, но это не всегда возможно, поскольку обычно они требуют немалые 
деревья пакетов.



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Затянувшийся фриз сборочницы
  2025-10-05 10:46     ` [devel] Затянувшийся фриз сборочницы Grigory Ustinov
@ 2025-10-05 12:49       ` Leonid Krivoshein
  0 siblings, 0 replies; 6+ messages in thread
From: Leonid Krivoshein @ 2025-10-05 12:49 UTC (permalink / raw)
  To: devel

Всем привет!


On 10/5/25 13:46, Grigory Ustinov wrote:
> 03.10.2025 9:18, Anton Zhukharev пишет:
>> On Thu, Oct 02, 2025 at 10:45:34PM +0300, Grigory Ustinov wrote:
>>> 02.10.2025 16:44, Anton Zhukharev пишет:
>>>> Всем привет!
>>>>
>>>> Последние таски по обновлению Python выглядят пугающее: объем
>>>> пересобираемых пакетов невероятно огромный и постоянно растет из-за 
>>>> чего
>>>> обновление самого Python в Sisyphus происходит дольше, чем в 
>>>> апстриме...
>>> Меня объём пересобираемых пакетов не пугает. Обновление самого Python в
>>> Sisyphus происходит дольше по абсолютно другим причинам.
>> Не всем нравится сидеть и ждать (уже) годами, пока вы обновите Python до
>> следующей минорной версии, поскольку текущему образу сборки обязательно
>> требуется фриз сборочницы.
>>
>> Перечислите все причины, которые, по вашему утверждению, затягивают
>> обновление.
>
> Пожалуй всё-таки имеет смысл вкратце зарезюмировать текущую ситуацию. 
> В этом году фриз сборочницы действительно затянулся на неприлично 
> длительное время.

Как я понимаю, "фриз" -- это перевод всех собираемых тасков без 
test-only в состояние POSTPONED, когда третья попытка закоммитить 
успешно собравшийся большой таск провалилась, этот "фриз" нужен для 
прохождения в репозиторий одного большого таска, верно?


> У всех ожидающих прошу прощения и немного понимания. Я жду его 
> окончания не меньше вашего и почти в круглосуточном режиме слежу за 
> таском, делая всё, что в моих силах для его скорейшего прохождения.
>
> Сначала таск был сломан очень несвоевременным обновлением libfmt. 
> Только всё разрулили, и тут с двух ног влетел Cython. Решили проблемы 
> и с ним. Сейчас таск уже почти неделю в полностью готовом состоянии не 
> может пройти из-за нехватки ресурсов на архитектурах i586 и aarch64. 
> Проблема не в количестве пакетов, а в том, что крупные пакеты типа 
> llvm, blender, vtk и тому подобные собираются вероятностно. Учитывая, 
> что сборка идёт на коммит, кэширования результатов нет и имеем что 
> имеем. 3 дня таск собирается, потом падает со словами
> [aarch64] hasher-privd: parent: handle_io: idle time limit (3600 
> seconds) exceeded
>
> В предыдущих обновлениях python3 эта проблема была не так сильно 
> выражена. Возможно имеет смысл в следующем обновлении сформировать 
> список пересборки таким образом, чтобы "тяжёлые" пакеты шли поближе к 
> началу, но это не всегда возможно, поскольку обычно они требуют 
> немалые деревья пакетов.
>

Можно внести пару усовершенствований:

1. Поменять приоритет. Он должен быть не у того таска, который *первым 
успешно собрался*, а у того, кто будучи успешно собранным *первым начал 
сборку*. Тогда будет достаточно пересобрать на новом состоянии 
репозитория менее ёмкие таски, уже успешно собравшиеся, и даже попавшие 
в архив. В этом случае их можно удалить из архива. Ёмкость таска можно 
определить по суммарному времени его сборки.

2. Разрешить создание субтасков внутри таска не с последовательной, а с 
параллельной собираемостью. Когда маинтейнеру точно известна группа 
пакетов, от которых есть зависимость, но друг на друга никакого влияния 
они не оказывают.


-- 
WBR, Leonid Krivoshein.



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-10-05 12:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-10-02 13:44 [devel] Спасём python3 вместе! (действительно) - Stable ABI Anton Zhukharev
2025-10-02 19:45 ` Grigory Ustinov
2025-10-03  6:18   ` Anton Zhukharev
2025-10-03 13:51     ` Anton Zhukharev
2025-10-05 10:46     ` [devel] Затянувшийся фриз сборочницы Grigory Ustinov
2025-10-05 12:49       ` Leonid Krivoshein

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git