Bug 2171875

Summary: find-{requires,provides}.ksyms: Eliminate unnecessary command calls in ksym/kernel check
Product: [Fedora] Fedora Reporter: Eugene Syromiatnikov <esyr>
Component: kernel-srpm-macrosAssignee: Eugene Syromiatnikov <esyr>
Status: ASSIGNED --- QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 39CC: dvlasenk, esyr, skozina, tdawson
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Eugene Syromiatnikov 2023-02-20 17:03:25 UTC
It is quite expensive to call grep, evenmoreso in a pipe, just to check the filename.

Comment 1 Denys Vlasenko 2023-03-15 15:19:31 UTC
find-provides.ksyms is invoked ~8000 times during rpmbuild of a kernel. This takes >10 minutes. It's beneficial to speed it up

This construct is slow (probably entails 2-3 forks, and one exec):

    dep_pfx="ksym"
    printf "%s" "$module" | grep -v "^${RPM_BUILD_ROOT}/\?lib/modules/[1-9][^/]*/kernel" > /dev/null \
        || dep_pfx="kernel"

What is seems to do is to set dep_pfx for "kernel" if path is /lib/modules/Nxxxxxx/kernel/yyyyyy. (well... what is that "\?" for?... anyway).

This can be achieved with shell string manipulations:

a=${module#${RPM_BUILD_ROOT}lib/modules/[0-9]*/kernel/}
a=${a#${RPM_BUILD_ROOT}/lib/modules/[0-9]*/kernel/}

If $a is not equal to $module, then the path was ${RPM_BUILD_ROOT}/lib/modules/Nxxxxxx/kernel/yyyyyy (or ${RPM_BUILD_ROOT}lib/modules/Nxxxxxx/kernel/yyyyyy, that is, there was a slash at the end of ${RPM_BUILD_ROOT} expansion)

Comment 2 Denys Vlasenko 2023-03-15 15:20:00 UTC
*** Bug 2172514 has been marked as a duplicate of this bug. ***

Comment 3 Fedora Release Engineering 2023-08-16 07:10:00 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 39 development cycle.
Changing version to 39.