Bug 46170

Summary: python3: поддержка архитектуры LoongArch
Product: Sisyphus Reporter: Alexey Sheplyakov <asheplyakov>
Component: python3Assignee: Grigory Ustinov <grenka>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: asheplyakov, george, glebfm, grenka, imz, iv, nir, sin, vitty
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 45802    

Description Alexey Sheplyakov 2023-05-17 07:32:20 MSK
configure скрипт python (версии 3.10) пытается собрать сведения о платформе для модуля sysconfig, и на LoongArch это у него не получается. В результате ломается сборка модулей расширения, написанных на C, C++ (и прочих компилируемых языках).
Comment 1 Alexey Sheplyakov 2023-05-17 07:42:56 MSK
(Ответ для Alexey Sheplyakov на комментарий #0)
> configure скрипт python (версии 3.10) пытается собрать сведения о платформе
> для модуля sysconfig, и на LoongArch это у него не получается. В результате
> ломается сборка модулей расширения, написанных на C, C++ (и прочих
> компилируемых языках).

А также в python3 зависит от nis (libnsl2), а на "новых" архитектурах этого отголоска 80-х нет
Comment 2 Alexey Sheplyakov 2023-05-17 07:49:06 MSK
The following changes since commit 5258f22e54659a329155fb8ef3b44c15f169629a:

  3.10.8-alt1.1 (2022-12-17 18:34:54 +0700)

are available in the Git repository at:

  http://git.altlinux.org/people/asheplyakov/packages/python3.git loongarch64

for you to fetch changes up to fa13b5177a9da313203b58f465dd59a057dfd302:

  3.10.8-alt1.2 (2023-05-17 08:41:20 +0400)

----------------------------------------------------------------
Alexey Sheplyakov (4):
      spec: a few tweaks for loongarch64
      spec: fixed build without tk
      spec: simplified the initial build
      3.10.8-alt1.2

Zhang Na (1):
      bpo-46498: Add Platform triplets for LoongArch64

 python3.spec         | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++------
 python3/configure    | 14 ++++++++++++++
 python3/configure.ac | 14 ++++++++++++++
 3 files changed, 79 insertions(+), 6 deletions(-)
Comment 3 Alexey Sheplyakov 2023-05-17 08:53:29 MSK
(Ответ для Alexey Sheplyakov на комментарий #2)
> The following changes since commit 5258f22e54659a329155fb8ef3b44c15f169629a:
> 
>   3.10.8-alt1.1 (2022-12-17 18:34:54 +0700)
> 
> are available in the Git repository at:
> 
>   http://git.altlinux.org/people/asheplyakov/packages/python3.git loongarch64
> 
> for you to fetch changes up to fa13b5177a9da313203b58f465dd59a057dfd302:
> 
>   3.10.8-alt1.2 (2023-05-17 08:41:20 +0400)
> 
> ----------------------------------------------------------------
> Alexey Sheplyakov (4):
>       spec: a few tweaks for loongarch64
>       spec: fixed build without tk
>       spec: simplified the initial build
>       3.10.8-alt1.2
> 
> Zhang Na (1):
>       bpo-46498: Add Platform triplets for LoongArch64
> 
>  python3.spec         | 57
> +++++++++++++++++++++++++++++++++++++++++++++++++++------
>  python3/configure    | 14 ++++++++++++++
>  python3/configure.ac | 14 ++++++++++++++
>  3 files changed, 79 insertions(+), 6 deletions(-)

Или

#320644 TESTED #1 [test-only] sisyphus python3.git=3.10.8-alt1.2
Comment 4 Gleb F-Malinovskiy 2023-05-17 09:11:48 MSK
(In reply to Alexey Sheplyakov from comment #1)
> А также в python3 зависит от nis (libnsl2), а на "новых" архитектурах этого
> отголоска 80-х нет

Речь о libnsl1 или о libnsl2?  Второй должно быть можно просто собрать, это отдельный пакет.
Вопрос актуальности этого в python ортогонален, кончено.
Comment 5 Alexey Sheplyakov 2023-05-18 17:07:01 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #4)
> (In reply to Alexey Sheplyakov from comment #1)
> > А также в python3 зависит от nis (libnsl2), а на "новых" архитектурах этого
> > отголоска 80-х нет
> 
> Речь о libnsl1 или о libnsl2?

О libnsl2. И она таки не является частью glibc. 

> Второй должно быть можно просто собрать, это отдельный пакет.

Но сборочные зависимости у libnsl2 несколько разбухшие:
libtirpc -> krb5 -> linux-pam

Можно, конечно, собрать для начала libtirpc без kerberos, но проще оторвать libnsl2 от python3,
и идти собирать systemd (libudev), glib2, Mesa и прочие полезные штуки, которым нужны meson и/или gtk-doc.

> Вопрос актуальности этого в python ортогонален, кончено.

В начальной сборке точно не нужен.
А дальше всё равно придётся ещё раз пересобрать python3 (когда будут собраны X11 клиентские библиотеки и tk).

> The text of disapproval follows:

> libnsl2-devel is not a part of glibc.

Комментарий исправлю. Кроме этого есть замечания?
Comment 6 Gleb F-Malinovskiy 2023-05-18 17:31:37 MSK
(In reply to Alexey Sheplyakov from comment #5)
> Комментарий исправлю.
Ну там и %ifnarch получается в этой ситуации неправильным.  Если как-то зависимость на nsl и оборачивать, то это изменение про бутстрап, а совсем не про loongarch.

> Кроме этого есть замечания?
Мне не целом не очень нравится rm -f в spec потому что в итоге неизвестно, делает такая команда что-то или нет потому что это значит «удалить если есть, иначе ничего не делать».  Но я надеюсь, что про эту часть изменений выскажется grenka@,  он всё же является мейнтейнером этого пакета последние много лет.
Comment 7 Grigory Ustinov 2023-05-18 18:27:06 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #6)
> (In reply to Alexey Sheplyakov from comment #5)
> > Комментарий исправлю.
> Ну там и %ifnarch получается в этой ситуации неправильным.  Если как-то
> зависимость на nsl и оборачивать, то это изменение про бутстрап, а совсем не
> про loongarch.
> 
> > Кроме этого есть замечания?
> Мне не целом не очень нравится rm -f в spec потому что в итоге неизвестно,
> делает такая команда что-то или нет потому что это значит «удалить если
> есть, иначе ничего не делать».  Но я надеюсь, что про эту часть изменений
> выскажется grenka@,  он всё же является мейнтейнером этого пакета последние
> много лет.

Мне там много что не нравилось, особенно черрипик коммита, который прям в исходниках добавляет поддержку новой архитектуры. Я решил отложить этот вопрос до выхода 3.11.
Comment 8 Alexey Sheplyakov 2023-05-18 18:57:54 MSK
(Ответ для Grigory Ustinov на комментарий #7)
> (Ответ для Gleb F-Malinovskiy на комментарий #6)
> > (In reply to Alexey Sheplyakov from comment #5)
> > > Комментарий исправлю.
> > Ну там и %ifnarch получается в этой ситуации неправильным.  Если как-то
> > зависимость на nsl и оборачивать, то это изменение про бутстрап, а совсем не
> > про loongarch.
> > 
> > > Кроме этого есть замечания?
> > Мне не целом не очень нравится rm -f в spec потому что в итоге неизвестно,
> > делает такая команда что-то или нет потому что это значит «удалить если
> > есть, иначе ничего не делать».  Но я надеюсь, что про эту часть изменений
> > выскажется grenka@,  он всё же является мейнтейнером этого пакета последние
> > много лет.
> 
> Мне там много что не нравилось, особенно черрипик коммита, который прям в
> исходниках добавляет поддержку новой архитектуры.

А откуда ещё может взяться поддержка новой архитектуры, кроме как "прям в исходниках"?

> Я решил отложить этот вопрос до выхода 3.11.

1) python 3.11.3 выпущен 5-го апреля.
2) В нём нет этого коммита
3) Сколько (и самое главное - чего) ещё надо ждать?
Comment 9 Igor Chudov 2023-05-18 19:06:33 MSK
Добрый день.

А в чём проблема коммита с поддержкой архитектуры? Оно написано корректно и в рамках задумки проекта. Я бы хотел больше конструктива чем "много чего не понравилось".

(Ответ для Grigory Ustinov на комментарий #7)
> (Ответ для Gleb F-Malinovskiy на комментарий #6)
> > (In reply to Alexey Sheplyakov from comment #5)
> > > Комментарий исправлю.
> > Ну там и %ifnarch получается в этой ситуации неправильным.  Если как-то
> > зависимость на nsl и оборачивать, то это изменение про бутстрап, а совсем не
> > про loongarch.
> > 
> > > Кроме этого есть замечания?
> > Мне не целом не очень нравится rm -f в spec потому что в итоге неизвестно,
> > делает такая команда что-то или нет потому что это значит «удалить если
> > есть, иначе ничего не делать».  Но я надеюсь, что про эту часть изменений
> > выскажется grenka@,  он всё же является мейнтейнером этого пакета последние
> > много лет.
> 
> Мне там много что не нравилось, особенно черрипик коммита, который прям в
> исходниках добавляет поддержку новой архитектуры. Я решил отложить этот
> вопрос до выхода 3.11.
Comment 10 Grigory Ustinov 2023-05-18 19:42:36 MSK
(Ответ для Alexey Sheplyakov на комментарий #8)
> А откуда ещё может взяться поддержка новой архитектуры, кроме как "прям в
> исходниках"?

Из патча. Ваш коммит перезатрётся ближайшим же обновлением.

> 1) python 3.11.3 выпущен 5-го апреля.
> 2) В нём нет этого коммита

Тем более вы сами так говорите.

> 3) Сколько (и самое главное - чего) ещё надо ждать?

Я жду, когда починят сборку rpm. Так-то у меня всё готово.
Comment 11 Alexey Sheplyakov 2023-05-18 21:55:23 MSK
(Ответ для Grigory Ustinov на комментарий #10)
> (Ответ для Alexey Sheplyakov на комментарий #8)
> > А откуда ещё может взяться поддержка новой архитектуры, кроме как "прям в
> > исходниках"?
> 
> Из патча. Ваш коммит перезатрётся ближайшим же обновлением.

Я правильно понял, что Ваш запрос звучит так: "добавьте нужный код отдельно стоящим патчем, по образу и подобию тех, что уже есть"?


> > 1) python 3.11.3 выпущен 5-го апреля.
> > 2) В нём нет этого коммита
> 
> Тем более вы сами так говорите.

Я ожидал, что люди делают merge осознанно. Теперь вижу, что ошибся (не стоило судить по себе).

> > 3) Сколько (и самое главное - чего) ещё надо ждать?
> 
> Я жду, когда починят сборку rpm.

Каковы критерии того, что сборка rpm починена?
Кто именно будет её чинить?
Могу ли я чем-то помочь?
Comment 12 Grigory Ustinov 2023-05-18 22:39:26 MSK
(Ответ для Alexey Sheplyakov на комментарий #11)
> (Ответ для Grigory Ustinov на комментарий #10)
> > (Ответ для Alexey Sheplyakov на комментарий #8)
> > > А откуда ещё может взяться поддержка новой архитектуры, кроме как "прям в
> > > исходниках"?
> > 
> > Из патча. Ваш коммит перезатрётся ближайшим же обновлением.
> 
> Я правильно понял, что Ваш запрос звучит так: "добавьте нужный код отдельно
> стоящим патчем, по образу и подобию тех, что уже есть"?
Да. git format-patch @^ например. Причём номер у него будет 1013 я полагаю.
> 
> 
> > > 1) python 3.11.3 выпущен 5-го апреля.
> > > 2) В нём нет этого коммита
> > 
> > Тем более вы сами так говорите.
> 
> Я ожидал, что люди делают merge осознанно. Теперь вижу, что ошибся (не
> стоило судить по себе).
Вам бы неплохо было бы пройти джойн, прежде чем строчить пулреквесты. У нас в альте есть несколько общепринятых схем сборки пакетов. Изменения в пакет вносятся либо патчами, либо коммитами из которых формируется кумулятивный патч. Можете почитать man gear-rules. Мне и без вашего изменения каждый мердж приходится делать крайне осознанно. Зачем же усложнять мне жизнь ещё больше?
> 
> > > 3) Сколько (и самое главное - чего) ещё надо ждать?
> > 
> > Я жду, когда починят сборку rpm.
> 
> Каковы критерии того, что сборка rpm починена?
Пакет rpm успешно собирается.
> Кто именно будет её чинить?
Я не знаю. Пока очереди желающих не видно. Предположительно мейнтейнер данного пакета.
> Могу ли я чем-то помочь?
Вряд ли.
Comment 13 Alexey Sheplyakov 2023-05-20 09:54:02 MSK
(Ответ для Grigory Ustinov на комментарий #12)
> (Ответ для Alexey Sheplyakov на комментарий #11)
> > (Ответ для Grigory Ustinov на комментарий #10)
> > > (Ответ для Alexey Sheplyakov на комментарий #8)
> > > > А откуда ещё может взяться поддержка новой архитектуры, кроме как "прям в
> > > > исходниках"?
> > > 
> > > Из патча. Ваш коммит перезатрётся ближайшим же обновлением.
> > 
> > Я правильно понял, что Ваш запрос звучит так: "добавьте нужный код отдельно
> > стоящим патчем, по образу и подобию тех, что уже есть"?
> Да. git format-patch @^ например. Причём номер у него будет 1013 я полагаю.
> > 
> > 
> > > > 1) python 3.11.3 выпущен 5-го апреля.
> > > > 2) В нём нет этого коммита
> > > 
> > > Тем более вы сами так говорите.
> > 
> > Я ожидал, что люди делают merge осознанно. Теперь вижу, что ошибся (не
> > стоило судить по себе).
> Вам бы неплохо было бы пройти джойн, прежде чем строчить пулреквесты.

Вам бы неплохо научиться общаться с людьми. Могу и я научить. Совершенно бесплатно, хотя и немного больно.

> У нас в альте есть несколько общепринятых схем сборки пакетов.

Патч для поддержки архитектуры loongarch64 у Вас есть.
Дальше действуйте сами, раз Вам не понравился "патч в код".
Comment 14 Grigory Ustinov 2023-05-20 17:10:00 MSK
(Ответ для Alexey Sheplyakov на комментарий #13) 
> Вам бы неплохо научиться общаться с людьми. Могу и я научить. Совершенно
> бесплатно, хотя и немного больно.

Я ни в коем случае не хотел вас задеть или обидеть.
 
> Патч для поддержки архитектуры loongarch64 у Вас есть.
> Дальше действуйте сами, раз Вам не понравился "патч в код".

Да. В принципе именно так я и хотел поступить. Постараюсь приложить как можно скорее!
Comment 15 Repository Robot 2023-06-17 10:30:04 MSK
python3-3.11.4-alt1 -> sisyphus:

 Fri Jun 09 2023 Grigory Ustinov <grenka@altlinux> 3.11.4-alt1
 - Updated to upstream version 3.11.4.
 - Fixed build on Elbrus (thx to ilyakurdyukov@).
 - Added support for LoongArch64 (thx to asheplyakov@) (Closes: #46170).
 - Simplified the initial build (thx to asheplyakov@) (Closes: #46171).
Comment 16 Gleb F-Malinovskiy 2023-06-20 11:48:43 MSK
В итоге это неправильное изменение и неправильный комментарий про libnsl2 попали в python:
https://git.altlinux.org/gears/p/python3.git?p=python3.git;a=commitdiff;h=0702381d4b615f751fda4c01f612fba242adccdd

libnsl2 не имеет отношения к glibc и должен быть собран под loongarch64 так же как и под остальные архитектуры.  Это изменение нужно откатить.

По поводу части про valgrind я считаю, что лучше делать список архитектур, на которых он есть.  Тем более, такой список даже уже есть в виде пакета с макросом 
https://git.altlinux.org/gears/r/rpm-macros-valgrind.git .
Comment 17 Grigory Ustinov 2023-06-20 12:12:22 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #16)
> libnsl2 не имеет отношения к glibc и должен быть собран под loongarch64 так
> же как и под остальные архитектуры.  Это изменение нужно откатить.

Вешай баги. Я в этом даже не пытался разбираться, поскольку мне неинтересна судьба пользователей отстающих архитектур.
Comment 18 Alexey Sheplyakov 2023-06-20 12:32:05 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #16)
> В итоге это неправильное изменение и неправильный комментарий про libnsl2
> попали в python:
> https://git.altlinux.org/gears/p/python3.git?p=python3.git;a=commitdiff;
> h=0702381d4b615f751fda4c01f612fba242adccdd
> 
> libnsl2 не имеет отношения к glibc и должен быть собран под loongarch64 так
> же как и под остальные архитектуры. 

Кому сильно нужны технологии 80-х годов прошлого века - пусть собирает.
Правда, для сборки libnsl2 понадобится python3 (libnsl2 -> libtirpc -> krb5 -> libverto -> libevent -> python3). 

> Это изменение нужно откатить.

Нет, не нужно. Скорее нужно выпилить libnsl2, она только топливо жрёт.

> По поводу части про valgrind я считаю, что лучше делать список архитектур,
> на которых он есть.  Тем более, такой список даже уже есть в виде пакета с
> макросом 
> https://git.altlinux.org/gears/r/rpm-macros-valgrind.git .
Comment 19 Gleb F-Malinovskiy 2023-06-20 12:49:33 MSK
(In reply to Alexey Sheplyakov from comment #18)
> Нет, не нужно. Скорее нужно выпилить libnsl2, она только топливо жрёт.

Такие вещи не делаются под %ifarch, если убирать библиотеку то на всех архитектурах.
Comment 20 Alexey Sheplyakov 2023-06-20 13:24:10 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #19)
> (In reply to Alexey Sheplyakov from comment #18)
> > Нет, не нужно. Скорее нужно выпилить libnsl2, она только топливо жрёт.
> 
> Такие вещи не делаются под %ifarch, если убирать библиотеку то на всех
> архитектурах.

Спорное утверждение. Как раз на x86 у кого-то и может оказаться работающий NIS (с серверной частью на Solaris или ещё чем-то вымершем).

Но да, в этом месте лучше сделать %if_enabled bootstrap
Comment 21 Gleb F-Malinovskiy 2023-06-20 14:14:02 MSK
(In reply to Alexey Sheplyakov from comment #20)
> (Ответ для Gleb F-Malinovskiy на комментарий #19)
> > (In reply to Alexey Sheplyakov from comment #18)
> > > Нет, не нужно. Скорее нужно выпилить libnsl2, она только топливо жрёт.
> > 
> > Такие вещи не делаются под %ifarch, если убирать библиотеку то на всех
> > архитектурах.
> 
> Спорное утверждение. Как раз на x86 у кого-то и может оказаться работающий
> NIS (с серверной частью на Solaris или ещё чем-то вымершем).

Но я имею в виду, что такое решение не может приниматься на разных архитектурах по-разному.