Bug 38013

Summary: libnumpy-py3-devel не работоспособен без libnumpy-devel
Product: Sisyphus Reporter: Aleksei Nikiforov <darktemplaralt>
Component: libnumpy-py3-develAssignee: Aleksei Nikiforov <darktemplaralt>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: antohami, asy, cas, cow, evg, george, grenka, imz, kotopesutility, lav, nbr, qa_viy, rider, sem, shaba, sin, slev, toni, vitty, viy
Version: unstable   
Hardware: x86_64   
OS: Linux   
See Also: https://bugzilla.altlinux.org/show_bug.cgi?id=38807
https://bugzilla.altlinux.org/show_bug.cgi?id=39216

Description Aleksei Nikiforov 2020-02-04 16:18:28 MSK
libnumpy-py3-devel не работоспособен, если пакет libnumpy-devel отсутствует. Пакеты на python-3, которым требуется numpy, не могут быть собраны, если numpy для python-2 не присутствует в момент сборки в дополнение к версии для python-3.

Воспроизведение:
1) взять пакет на python-3, которому для сборки требуется libnumpy-py3-devel.
Примером такого пакета может быть python3-module-pandas или blender.
2) удалить из сборочных зависимостей libnumpy-devel, но оставить libnumpy-py3-devel.
3) пересобрать пакет.

Ожидаемый результат:
Успешная пересборка пакета

Результат:
Пакет не пересобирается, ошибки из-за отсутствующих файлов "numpy/$something", например:

pandas/_libs/algos.c:643:10: fatal error: numpy/arrayobject.h: No such file or directory
  643 | #include "numpy/arrayobject.h"


Дополнительные данные:
Хотя имеющиеся исходные файлы пакета можно изменить, чтобы заголовки искались в директории "numpy-py3" вместо "numpy", это проблему полностью не решает, поскольку некоторые файлы генерируются во время сборки с помощью cython, и в таких сгенерированных файлах указана директория "numpy", а не "numpy-py3". Такое, например, происходит при сборке пакета python3-module-pandas.
Comment 1 Grigory Ustinov 2020-02-04 17:22:24 MSK
Подтверждаю. Та же фигня с pytables. Требует libnumpy-devel, как ни крути.
Comment 2 Aleksei Nikiforov 2020-03-12 11:32:11 MSK
Предлагаю переделать libnumpy-devel и libnumpy-py3-devel следующим образом:

Перенести заголовки libnumpy-devel в директорию /usr/include/python2.7/numpy
Перенести заголовки libnumpy-py3-devel в директорию /usr/include/python3.8/numpy/
Причём, соответствующие цифры в именах директорий будут зависеть от текущих версий питона.

При этом в стандартных директориях для include файлов больше не будет директории numpy, и соответственно для сборки с numpy для python2 или python3 потребуется явно указывать дополнительные директории для поиска этих файлов. В .pc файлах также всё для этого присутствует.

Таким образом, больше не будет необходимости переделывать пути с "numpy/$something.h" на "numpy-py3/$something.h", в том числе у сгенерированных файлов, и всегда при сборке будут находится только заголовки для указанной версии numpy.

Если бы не ошибка 34619, можно было бы и вообще оставить заголовки в их директории по-умолчанию, в поддиректории %python_sitelibdir или %python3_sitelibdir.

Сделал тестовое задание #247694. Пока что с ним успешно пересобрались boost и blender. Попробую ещё другие пакеты. Планирую через несколько дней отправить это задание в Сизиф.
Comment 3 Repository Robot 2020-03-16 23:28:25 MSK
python-module-numpy-1:1.15.4-alt5 -> sisyphus:

 Wed Mar 11 2020 Aleksei Nikiforov <darktemplar@altlinux> 1:1.15.4-alt5
 - Moved include directories (Closes: #38013).
Comment 4 Sergey Y. Afonin 2020-04-28 15:14:49 MSK
А что-нибудь мешает 1.15.4-alt5 и в p9 собрать?
Comment 5 Andrey Cherepanov 2020-04-28 15:52:01 MSK
(Ответ для Sergey Y. Afonin на комментарий #4)
> А что-нибудь мешает 1.15.4-alt5 и в p9 собрать?
250765 AWAITING #1 p9 python-module-numpy.git=1.15.4-alt5
Comment 6 Andrey Cherepanov 2020-04-30 08:32:00 MSK
(Ответ для Sergey Y. Afonin на комментарий #4)
> А что-нибудь мешает 1.15.4-alt5 и в p9 собрать?

Мешает.
Задание ломает пересборку следующих пакетов:

btrack-1.0.0-alt1.hg20140708
ffc-1.6.0-alt1.dev.git20150430.1
gdal-2.2.3-alt3.1
h5py-2.9.0-alt1
pybind11-2.2.4-alt1
python-module-Scientific-2.9.3-alt2
python-module-arrayfns-24.2-alt7
python-module-bottleneck-1.2.1-alt1
python-module-cyrand-0.3-alt1.git20150228.1.1.1
python-module-geo-1.0.0-alt1.svn20080909.5
python-module-gnuplot-1.8-alt4.1
python-module-gts-0.3.1-alt2.svn20090606
python-module-jsonpickle-0.9.5-alt1.1
python-module-lmoments3-0.3.1-alt1.git20140925.1
python-module-matplotlib-2.2.3-alt3
python-module-mdp-3.4-alt2.git20140427
python-module-nifti-0.20090303.2-alt3.git20090924
python-module-pyamg-2.2.1-alt2
python-module-pyannote.core-0.3.4-alt1.git20150304.1.1
python-module-pycdf-0.6_0-alt7
python-module-pygsl-2.2.0-alt1
python-module-pyhacrf-0.1.2-alt1.1.1
python-module-pylbfgs-0.2.0.12-alt1
python-module-pysparse-1.3-alt1.git20130305
python-module-scikits.bootstrap-1.0.0-alt1.1
python-module-scikits.vectorplot-0.2-alt2.git20150130.1.1.1
python-module-seqlearn-0.2-alt2.1
python-module-shapely-1.5.17-alt1.post1.1.1.1
python3-module-scikit-image-0.15.0-alt1
python3-module-wavelets-1.0.2-alt2
uhd-3.14.1.1-alt1.1

Удаляю задание.
Comment 7 Sergey Y. Afonin 2020-04-30 10:20:11 MSK
(In reply to Andrey Cherepanov from comment #6)

> > А что-нибудь мешает 1.15.4-alt5 и в p9 собрать?
> 
> Мешает.
> Задание ломает пересборку следующих пакетов:

Да, что-то много.

> uhd-3.14.1.1-alt1.1

Как раз вот его хотелось обновить для обновления gpsd. А если все ломающиеся пакеты тоже обновить?
Comment 8 Andrey Cherepanov 2020-04-30 15:13:47 MSK
(Ответ для Sergey Y. Afonin на комментарий #7)
> (In reply to Andrey Cherepanov from comment #6)
> 
> > > А что-нибудь мешает 1.15.4-alt5 и в p9 собрать?
> > 
> > Мешает.
> > Задание ломает пересборку следующих пакетов:
> 
> Да, что-то много.
> 
> > uhd-3.14.1.1-alt1.1
> 
> Как раз вот его хотелось обновить для обновления gpsd. А если все ломающиеся
> пакеты тоже обновить?

Обновляйте.
Comment 9 Sergey Y. Afonin 2020-05-09 12:56:13 MSK
15 из них удалены из Sisyphus, в основном модули питона:

btrack-1.0.0-alt1.hg20140708
python-module-Scientific-2.9.3-alt2
python-module-cyrand-0.3-alt1.git20150228.1.1.1
python-module-gts-0.3.1-alt2.svn20090606
python-module-lmoments3-0.3.1-alt1.git20140925.1
python-module-mdp-3.4-alt2.git20140427
python-module-nifti-0.20090303.2-alt3.git20090924
python-module-pyamg-2.2.1-alt2
python-module-pyannote.core-0.3.4-alt1.git20150304.1.1
python-module-pycdf-0.6_0-alt7
python-module-pygsl-2.2.0-alt1
python-module-scikits.bootstrap-1.0.0-alt1.1
python-module-scikits.vectorplot-0.2-alt2.git20150130.1.1.1
python-module-seqlearn-0.2-alt2.1

Из них 4 есть в виде python3-*:

python3-module-mdp
python3-module-pyamg
python3-module-pyannote.core
python3-module-pygsl

Что-то пока не знаю, может правильнее uhd по старому собрать.
Comment 10 Vitaly Lipatov 2020-05-09 18:08:20 MSK
(In reply to Sergey Y. Afonin from comment #9)
> 15 из них удалены из Sisyphus, в основном модули питона:
> Из них 4 есть в виде python3-*:
> 
> python3-module-mdp
> python3-module-pyamg
> python3-module-pyannote.core
> python3-module-pygsl
> 
> Что-то пока не знаю, может правильнее uhd по старому собрать.
А может быть уже пора обсуждать план выкидывания ненужных модулей python2 из p9?