Bug 44642 - Optimize /usr/lib/rpm/qml.prov.files
Summary: Optimize /usr/lib/rpm/qml.prov.files
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-qml (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Sergey V Turchin
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-12-15 14:28 MSK by Ivan A. Melnikov
Modified: 2022-12-15 16:47 MSK (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Ivan A. Melnikov 2022-12-15 14:28:44 MSK
Некоторые пакеты, свои и чужие, я собираю вне хешера, на системе, где есть и сборочные зависимости других пакетов. Иногда я замечаю, что FindRequires/FindProvides как-то непривычно тормозит, и вот сегодня я обнаружил такое:

$ time sh -c  'rpm -ql boost-devel-headers | /usr/lib/rpm/qml.prov.files'
101.29user 45.46system 2:27.10elapsed 99%CPU (0avgtext+0avgdata 13152maxresident)k
0inputs+1864outputs (1major+5896857minor)pagefaults 0swaps

Да, в boost-devel-headers сейчас 13258 файлов и каталогов, поэтому не удевительно, что shell не очень быстро это пережёввывает. Однако можно внести в usr/lib/rpm/qml.prov.files простое изменение, которое приведёт к быстрому ответу "нет" для тех файлов, которые к qml явно не имеют никакого отношения:

@@ -1,6 +1,6 @@
 #!/bin/sh -efu

-while IFS=$'\t' read -r f t; do
+grep -F '/qt5/' | while IFS=$'\t' read -r f t; do
        # skip all that cannot be provided due to rpmbuild restrictions
        case "${f##*/}" in
                [^_[:alnum:]]*)

и, без видимых изменений логики работы, мы получим серьёзное ускорение:

$ time sh -c  'rpm -ql boost-devel-headers | /usr/lib/rpm/qml.prov.files'
0.04user 0.01system 0:00.05elapsed 114%CPU (0avgtext+0avgdata 13200maxresident)k
0inputs+0outputs (0major+3141minor)pagefaults 0swaps

Нельзя ли сделать такое изменение в пакете? И в /usr/lib/rpm/qml.req.files пофильтровать по 'qml' заодно?
Comment 1 Sergey V Turchin 2022-12-15 15:05:37 MSK
(In reply to Ivan A. Melnikov from comment #0)
> grep -F '/qt5/'
Наверное, можно.

P.S.
Только не устанавливайте rpm-build-ruby. ;-)
Comment 2 Repository Robot 2022-12-15 16:47:05 MSK
qt5-declarative-5.15.7-alt4 -> sisyphus:

 Thu Dec 15 2022 Sergey V Turchin <zerg@altlinux> 5.15.7-alt4
 - optimize provides generator (thanks iv@alt) (closes: 44642)