Bug 39171

Summary: Собрать DSR с python3
Product: Sisyphus Reporter: Vitaly Lipatov <lav>
Component: DSRAssignee: ogion <ogion>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: d.g.samsonenko, ogion
Version: unstable   
Hardware: x86_64   
OS: Linux   
Bug Depends on:    
Bug Blocks: 37313    

Description Vitaly Lipatov 2020-10-31 14:06:34 MSK
Просьба собрать DSR с python3, очень хочется избавиться от 
  Требует: <python2.7(networkx)>
    python-module-networkx-core-2:2.2-alt4:sisyphus+256150.300.2.1@1597136252
Comment 1 Denis G. Samsonenko 2020-11-01 20:55:51 MSK
Я пробовал собирать его с python3. Он даже собирается, но у меня не работает, сыпит ошибками при попытке использования. Я не специалист в питоне. Собирал то, что использую сам, а потому мне важнее, чтобы оно работало, а не чтобы было собрано на с python3.

Собрал с идущим в комплекте networkx, теперь не должен требовать тот, что в репозитории.
Comment 2 Vitaly Lipatov 2020-11-01 21:12:32 MSK
(Ответ для Denis G. Samsonenko на комментарий #1)
> Я пробовал собирать его с python3. Он даже собирается, но у меня не
> работает, сыпит ошибками при попытке использования. Я не специалист в
Если ещё раз будете пробовать, можете записать сюда ошибки, может быть, удасться понять.
...

> Собрал с идущим в комплекте networkx, теперь не должен требовать тот, что в
> репозитории.
Спасибо!
Comment 3 Vitaly Lipatov 2021-07-05 21:20:38 MSK
Также он позволит отказаться от python-module-mpmath
  DSR-233-alt1:sisyphus+270999.100.2.1@1619770575
    Требует: <python2.7(mpmath)>
Comment 4 Denis G. Samsonenko 2021-07-07 20:38:09 MSK
Попробовал ещё раз собрать с python3 (task #277549), воспользовавшись наработаками Andrey Bychkov для более старой версии (task #249166).

Собрал без упаковки идущего с ним mpmath и networkx и без зависимости на них вообще. Вроде даже работает, по крайней мере на p9, если вызывать из gui shelxle. 

Однако вызов из консоли при некоторых параметрах (-u, попытка апдейта) приводит к ошибке:

Traceback (most recent call last):
  File "/usr/share/DSR/dsr.py", line 486, in <module>
    dsr = DSR(options)
  File "/usr/share/DSR/dsr.py", line 97, in __init__
    selfupdate.update_dsr()
  File "/usr/share/DSR/selfupdate.py", line 121, in update_dsr
    if (int(VERSION) >= int(version)) and version > 0:
TypeError: '>' not supported between instances of 'str' and 'int'

Работать это не мешает, т.к. вряд ли будет кто вызывать 'dsr -u' в консоли, но всё равно как-то неаккуратно. 

Предыдущий вариант, собранный с python2.7, отрабатывает без ошибок -- сообщает, что и так уже последняя версия стоит.
Comment 5 Vitaly Lipatov 2021-07-09 12:36:38 MSK
(Ответ для Denis G. Samsonenko на комментарий #4)
> Попробовал ещё раз собрать с python3 (task #277549), воспользовавшись
> наработаками Andrey Bychkov для более старой версии (task #249166).
> 
> Собрал без упаковки идущего с ним mpmath и networkx и без зависимости на них
> вообще. Вроде даже работает, по крайней мере на p9, если вызывать из gui
> shelxle. 
Это хорошая новость!

> Однако вызов из консоли при некоторых параметрах (-u, попытка апдейта)
> приводит к ошибке:
> 
> Traceback (most recent call last):
>   File "/usr/share/DSR/dsr.py", line 486, in <module>
>     dsr = DSR(options)
>   File "/usr/share/DSR/dsr.py", line 97, in __init__
>     selfupdate.update_dsr()
>   File "/usr/share/DSR/selfupdate.py", line 121, in update_dsr
>     if (int(VERSION) >= int(version)) and version > 0:
> TypeError: '>' not supported between instances of 'str' and 'int'


> version > 0:
ну тут сделать int(version)
Comment 6 Denis G. Samsonenko 2021-07-09 19:47:29 MSK
(Ответ для Vitaly Lipatov на комментарий #5)
> > version > 0:
> ну тут сделать int(version)

ОК, исправил это. Доработал spec, заменил %add_python3_compile_include на %add_python3_path. Зависимостей стало больше. Ненужные provides погасил при помощи %add_findprov_skiplist.

Не знаю, на сколько это правильно, но вроде работает на рабочей машине на p9.

Task #277857
Comment 7 Vitaly Lipatov 2021-07-10 20:32:50 MSK
(Ответ для Denis G. Samsonenko на комментарий #6)
> (Ответ для Vitaly Lipatov на комментарий #5)
> > > version > 0:
> > ну тут сделать int(version)
> 
> ОК, исправил это. Доработал spec, заменил %add_python3_compile_include на
Отлично!

> %add_python3_path. Зависимостей стало больше. Ненужные provides погасил при
> помощи %add_findprov_skiplist.
Я предлагаю гасить provides у программ с помощью
AutoProv:yes,nopython
это как-то конкретнее.
Comment 8 Vitaly Lipatov 2021-08-14 15:20:44 MSK
Исправлено в
* Пт июл 09 2021 Denis G. Samsonenko <ogion@altlinux.org> 233-alt3
- final fix #39171

(лучше писать ALT bug 39171, чтобы закрылось автоматом)

$ epm policy DSR ; epm req DSR ; epm prov DSR
 $ apt-cache policy DSR
DSR:
  Установлен: 233-alt3:sisyphus+277857.100.1.1@1625848786
  Кандидат: 233-alt3:sisyphus+277857.100.1.1@1625848786
  Таблица версий:
 *** 233-alt3:sisyphus+277857.100.1.1@1625848786 0
        500 file: ALTLinux/Sisyphus/noarch/classic pkglist
        100 RPM Database
 $ rpm -q --requires DSR
/bin/sh
python3(__future__) < 0
python3(argparse) < 0
python3(collections) < 0
python3(copy) < 0
python3(datetime) < 0
python3(fnmatch) < 0
python3(hashlib) < 0
python3(math) < 0
python3(mpmath) < 0
python3(os) < 0
python3(platform) < 0
python3(random) < 0
python3(re) < 0
python3(shlex) < 0
python3(shutil) < 0
python3(string) < 0
python3(struct) < 0
python3(subprocess) < 0
python3(tarfile) < 0
python3(tempfile) < 0
rpmlib(PayloadIsLzma)
 $ rpm -q --provides DSR
DSR = 233-alt3:sisyphus+277857.100.1.1