[devel] Q: time to wave rpm-build-python off

Aleksei Nikiforov darktemplar на altlinux.org
Пт Апр 30 10:16:32 MSK 2021


29.04.2021 18:55, Dmitry V. Levin пишет:
> On Thu, Apr 29, 2021 at 03:04:24PM +0300, Dmitry V. Levin wrote:
>> On Thu, Apr 29, 2021 at 10:49:39AM +0300, Aleksei Nikiforov wrote:
>>> 29.04.2021 05:35, Dmitry V. Levin пишет:
>>>> On Mon, Mar 01, 2021 at 04:11:28PM +0300, Dmitry V. Levin wrote:
>>>>> Hi,
>>>>>
>>>>> В связи с тем, что пользователи python2 в Сизифе наконец-то массово
>>>>> переходят на python3, возникает вопрос, не пора ли нам уже распрощаться
>>>>> с пакетом rpm-build-python в составе базовой сборочной среды?
>>>>>
>>>>> Просьба тем, кто занимается массовой миграцией пакетов с python2
>>>>> на python3, подготовить ответ на этот вопрос.
>>>>
>>>> Никто не ответил?  Ну что же, тогда уберём rpm-build-python и узнаем.
>>>
>>> Здравствуйте.
>>>
>>> После этого изменения вылезла вот такая ошибка:
>>>
>>> http://git.altlinux.org/tasks/270927/logs/events.1.1.log
>>>
>>> [x86_64] find-requires: running scripts
>>> (cpp,debuginfo,files,lib,pam,perl,pkgconfig,pkgconfiglib,python,rpmlib,shebang,shell,static,symlinks,systemd-services)
>>> [x86_64] /usr/lib/rpm/python.req: line 2: /usr/bin/python2.7: No such
>>> file or directory
>>> [x86_64] find-requires: ERROR: /usr/lib/rpm/python.req failed
>>> [x86_64] error: /bin/sh failed
>>> [x86_64] error: Failed to find Requires
>>> [x86_64] RPM build errors:
>>
>> Идея была в том, что если в пакете есть что-то на python2, но пакет
>> rpm-build-python не установлен, то сборка упадёт с такой диагностикой.
>> Однако ...
>>
>>> В пакете нет ни python-2, ни python-3.
>>
>> ... где-то что-то зачем-то вызвало /usr/lib/rpm/python.req с пустым
>> списком аргументов.  Вставил объезд в python.req и python.prov, чтобы
>> "skip python invocation when invoked without arguments".
>>
>> [#270943] DONE rpm-build-python.git=0.40.1-alt1
> 
> Это было поспешное изменение, я его откатил.
> Cписок файлов для обработки поступают к python.req и python.prov
> через stdin.
> 
> По какой-то причине /usr/lib/rpm/python.req.files считает нужным все ELF
> shared objects по шаблону /usr/lib*/*/*.so отправлять python.req'у на
> обработку.  В пакете cepstral-pitchtracker таким файлом оказался
> /usr/lib64/vamp/cepstral-pitchtracker.so, очевидно, к питону он отношения
> не имеет.
> 
> Почему /usr/lib/rpm/python.req.files скармливает ELF shared objects
> python.req'у, пусть лучше расскажут те, кто это придумали.
> 
> Пока что я просто выключил это скармливание в случае, когда скармливать
> некуда.
> 
> Кроме того, в
> [#270972] DONE rpm-build-python.git=0.42.1-alt1
> была добавлена диагностика того, какие именно файлы не удалось обработать
> из-за отсутствия пакета rpm-build-python.
> 
> 

Здравствуйте.

Подозреваю, что сделано это поскольку модули питона могут быть в виде 
.so-файлов. Думаю, стоит такие файлы искать не везде, а в 
%python_sitelibdir и в %python_sitelibdir_noarch, как минимум если 
rpm-build-python нет. В теории такие файлы конечно могут быть и вне этих 
директорий.

С уважением,
Алексей Никифоров


Подробная информация о списке рассылки Devel