Bug 44643 - Optimize /usr/lib/rpm/tex.req.files
Summary: Optimize /usr/lib/rpm/tex.req.files
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: rpm-build-tex (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: viy
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-12-15 14:54 MSK by Ivan A. Melnikov
Modified: 2022-12-20 17:06 MSK (History)
1 user (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:54:35 MSK
Некоторые пакеты, свои и чужие, я собираю вне хешера, на системе, где есть и сборочные зависимости других пакетов. Иногда я замечаю, что FindRequires/FindProvides как-то непривычно тормозит, а вот сегодня завершения работы /usr/lib/rpm/tex.req.files над boost-devel-headers я вообще не дождался.  Простое

 rpm -ql boost-devel-headers | /usr/lib/rpm/tex.prov.files

заняло больше 5 минут.

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

@@ -44,7 +44,7 @@ CheckPath()
         test ${1#${RPM_BUILD_ROOT-}${RPM_TEXMFMAIN:-/usr/share/texmf}-dist/tex/} != "$1"
 }

-while IFS=$'\t' read -r f t; do
+grep -F '/tex/' | while IFS=$'\t' read -r f t; do
     if CheckExt "$f" && CheckPath "$f"; then
        echo "$f"
     fi


И, без наблюдаемых изменений в логике пакета, мы получим:

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

и я смогу дождаться завершения сборки буста. Нельзя ли внести какое-нибудь такое изменение в /usr/lib/rpm/tex.prov.files?
Comment 1 Repository Robot 2022-12-20 17:00:52 MSK
rpm-build-tex-0.4.5-alt1 -> sisyphus:

 Tue Dec 20 2022 Igor Vlasenko <viy@altlinux> 0.4.5-alt1
 - optimized tex.(req/prov).files (closes: #44643)
Comment 2 viy 2022-12-20 17:06:07 MSK
Добавил grep.
В принципе, если все равно достаточно долго, можно на C написать простой
универсальный helper для rpm/*prov.files и rpm/*req.files
опции --prefix (colon separated prefix) --ext (colon separated extencions)
такое пригодится и для других rpm-build-*.