Bug 34421 - Функция "platform.linux_distribution()" из python3 возвращает "fedora" вместо "altlinux".
Summary: Функция "platform.linux_distribution()" из python3 возвращает "fedora" вместо...
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: python3 (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P3 normal
Assignee: darktemplar@altlinux.org
QA Contact: qa-sisyphus
URL: https://forum.altlinux.org/index.php?...
Keywords:
Depends on:
Blocks: 34266
  Show dependency tree
 
Reported: 2018-01-06 01:56 MSK by bliser
Modified: 2018-05-25 22:08 MSK (History)
12 users (show)

See Also:


Attachments
platform os-release patch (2.55 KB, patch)
2018-04-24 10:40 MSK, Andrey
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description bliser 2018-01-06 01:56:50 MSK
Внести исправление в дистрибутив (репозитория Sisyphus), чтобы функция "platform.linux_distribution()" из python3 возвращала "altlinux" вместо "fedora".
К сведению: функция "platform.linux_distribution()" из python возвращает "altlinux".
Comment 1 Andrey Cherepanov 2018-01-09 18:23:23 MSK
На правильный пакет.

У меня на Sisyphus не воспроизводится:
c253 ~ # python3
Python 3.5.1 (default, Sep  4 2017, 09:48:01) 
[GCC 6.3.1 20170118 (ALT 6.3.1-alt2)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import platform
>>> platform.linux_distribution()
('BaseALT ', '8.0', '')
>>>
Comment 2 Andrey Cherepanov 2018-01-09 18:43:38 MSK
# rpm -qf /etc/redhat-release 
branding-basealt-server-release-8.0-alt0.8.M80P.1.noarch

На образе с брендингом Regular:
>>> platform.linux_distribution()
('fedora', 'ALT', 'Sisyphus')
Comment 3 Lenar Shakirov 2018-01-10 13:28:47 MSK
Тоже страдаем из-за разлома брендингов:

https://bugzilla.altlinux.org/show_bug.cgi?id=34266#c10
Comment 4 Ivan Zakharyaschev 2018-01-10 14:48:02 MSK
Я не знаю, кому вообще (каким клиентам python3 или внутренностям) эти значения важны, на что влияют? Что тут правильно исправить -- есть ли идеи?

Добавил ещё в Cc: готовивших последние релизы пакета python3 :)
Comment 5 Ivan Zakharyaschev 2018-01-10 14:54:30 MSK
(In reply to comment #4)

> Добавил ещё в Cc: готовивших последние релизы пакета python3 :)

Спасибо за обновления antohami@ и darktemplar@! Но там какое-то заметное количество патчей поотключали (насколько я помню из git), а объяснений, почему они не нужны, я не видел или пропустил. (Это немного offtopic, просто вдруг поведение в этом вопросе тоже было затронуто.)

Да, и ведь последний релиз пакета -- это не версия 3.5.1, а 3.5.4. С ней то же самое воспризводится?
Comment 6 Антон Мидюков 2018-01-10 16:42:16 MSK
(In reply to comment #5)
> (In reply to comment #4)
> 
> Спасибо за обновления antohami@ и darktemplar@! Но там какое-то заметное
> количество патчей поотключали (насколько я помню из git), а объяснений, почему
> они не нужны, я не видел или пропустил. 

Мной были отключены:
00184-ctypes-should-build-with-libffi-multilib-wrapper.patch
00207-math-once.patch
python-3.5.1-glibc-2.25-getentropy.patch
python-3.5.1-upstream-expat-compat.patch

так как они содержатся уже в версии 3.5.4

Проверил, установленную регулярку, у которой python 3.5.1 ещё, очень давно не обновлял:
platform.linux_distribution()
('fedora', 'ALT', 'Sisyphus')
Comment 7 bliser 2018-01-10 20:03:10 MSK
(In reply to comment #4)
> Я не знаю, кому вообще (каким клиентам python3 или внутренностям) эти значения
> важны, на что влияют? 

К примеру Cura при запуске проверяла на каком она дистрибутиве и принимала решение о запуске некоторой обработки (костыля).

Подробнее: https://forum.altlinux.org/index.php?topic=40708.msg322505#msg322505
Comment 8 bliser 2018-01-10 20:24:45 MSK
(In reply to comment #4)
> ... Что тут правильно исправить -- есть ли идеи?

Есть, например: Если в файл "/usr/lib64/python3.5/platform.py" внести в конец перечисления <, 'altlinux'>, получим следующее:
 _supported_dists = (
    'SuSE', 'debian', 'fedora', 'redhat', 'centos',
    'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo',
    'UnitedLinux', 'turbolinux', 'arch', 'mageia', 'altlinux')

В результате:
     python3 -c 'import platform; print (platform.linux_distribution())'
возвращает:  ('altlinux', 'ALT', 'Linux') 
А без исправления - результат: ('fedora', 'ALT', 'Linux')

К сведению:
$ python3
Python 3.5.4 (default, Dec 27 2017, 10:44:11) 
[GCC 6.3.1 20170118 (ALT 6.3.1-alt2)] on linux

Может кто пояснит - зачем в /etc/ лежат ссылки: fedora-release, redhat-release?
Может их можно удалить?
Comment 9 Andrey 2018-04-24 10:40:19 MSK
Created attachment 7515 [details]
platform os-release patch
Comment 10 Andrey 2018-04-24 10:41:37 MSK
Пофиксил. Но поскольку не нахожусь в acl пакета, не могу залить.
http://git.altlinux.org/tasks/205194/logs/events.3.1.log
Comment 11 Anton Farygin 2018-04-24 10:42:22 MSK
На python3 и на ментейнера
Comment 12 Anton Farygin 2018-04-24 10:42:56 MSK
На более правильного ментейнера
Comment 13 Repository Robot 2018-05-24 12:19:17 MSK
python3-3.6.4-alt2 -> sisyphus:

Tue May 08 2018 Andrey Bychkov <mrdrew@altlinux> 3.6.4-alt2
- Fixed incorrect detection of information of some distributions (Closes: #34421)
Comment 14 bliser 2018-05-25 22:08:35 MSK
Подтверждаю исправление:
python -c 'import platform; print platform.linux_distribution()'
возвращает: ('altlinux', 'ALT', 'Sisyphus')
python3 -c 'import platform; print (platform.linux_distribution())' 
возвращает: ('"Sisyphus"', '20170925', 'altlinux')