[LU-16095] lbuild: sles build should not require kernel-default-devel installed Created: 15/Aug/22  Updated: 09/Nov/22

Status: Open
Project: Lustre
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Major
Reporter: Minh Diep Assignee: Minh Diep
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Duplicate
Related
is related to LU-16093 kernel update [SLES12 SP5 4.12.14-122... Resolved
Severity: 3
Rank (Obsolete): 9223372036854775807

 Description   

/lib/modules/<version>/build is symlinked to /usr/src/<version>, and since lbuild extracts the rpm to put in 'reused' directory, it has to take care of the symlink too to prevent requiring the rpm to be installed. Otherwise we see some errors like this

error: cannot determine ksym provides of /tmp/rpmbuild-lustre-jenkins-LkKoPYLF/BUILDROOT/lustre-2.15.51_9_g8ab411e-1.x86_64/lib/modules/4.12.14-122.116-default/updates/lustre-client-tests/fs/llog_test.ko - missing ksym-povides tool.



 Comments   
Comment by Gerrit Updater [ 15/Aug/22 ]

"Minh Diep <mdiep@whamcloud.com>" uploaded a new patch: https://review.whamcloud.com/48221
Subject: LU-16095 build: fix lbuild not depending on installed kernel-devel
Project: fs/lustre-release
Branch: master
Current Patch Set: 1
Commit: 2e4ba32467358af5a5498e49e64b66126d74b6c9

Comment by Minh Diep [ 15/Aug/22 ]

self note:

++ readlink /lib/modules/4.12.14-122.116-default/build
+ objdir=
++ readlink /tmp/rpmbuild-lustre-jenkins-vfmwHzbm/BUILDROOT/lustre-2.15.51_1_g2e4ba32-1.x86_64/lib/modules/4.12.14-122.116-default/build
+ objdir_build=/tmp/rpmbuild-lustre-jenkins-vfmwHzbm/BUILDROOT/lustre-2.15.51_1_g2e4ba32-1.x86_64
+ for i in '$objdir_build' '$objdir'
+ ksym_provides=/tmp/rpmbuild-lustre-jenkins-vfmwHzbm/BUILDROOT/lustre-2.15.51_1_g2e4ba32-1.x86_64/scripts/mod/ksym-provides
+ '[' -x /tmp/rpmbuild-lustre-jenkins-vfmwHzbm/BUILDROOT/lustre-2.15.51_1_g2e4ba32-1.x86_64/scripts/mod/ksym-provides ']'
+ '[' -x /tmp/rpmbuild-lustre-jenkins-vfmwHzbm/BUILDROOT/lustre-2.15.51_1_g2e4ba32-1.x86_64/scripts/mod/ksym-provides ']'

/usr/lib/rpm/find-provides.ksyms actually looks for installed /lib/modules/4.12.14-122.116-default/build first then BUILDROOT/lustre.../scripts/mod to find ksym-provides. but we don't have that in lustre!?

here is the snippet

    objdir=$(readlink /lib/modules/$version/build)
    objdir_build=$RPM_BUILD_ROOT$(readlink $RPM_BUILD_ROOT/lib/modules/$version/build)
    for i in $objdir_build $objdir ; do
            ksym_provides=$i/scripts/mod/ksym-provides
            [ -x $ksym_provides ] && break
    done
    if [ -x $ksym_provides ] ; then
            $ksym_provides $flavor $f
    else
            major=${version%%.*}
            sub=${version#*.}
            sub=${sub%%.*}
            if [ "$major" -ge 4 -a "$sub" -ge 10 ] ; then
                    echo "error: cannot determine ksym provides of $f - missing ksym-povides tool." >&2
            else
                    nm "$f" \
                            | sed -r -ne "s/^0*([0-9a-f]+) A __crc_(.+)/ksym($flavor:\\2) = \\1/p"
            fi
    fi
Comment by Jian Yu [ 09/Nov/22 ]

In https://review.whamcloud.com/48974, SLES15 SP3 client build failed:

lbuild: Could not find the Linux tree in /data/lbuild-data/kernelrpm/5.3/sles15/x86_64/kernel-default-devel-5.3.18-150300.59.98.1.x86_64.rpm
Generated at Sat Feb 10 03:23:58 UTC 2024 using Jira 9.4.14#940014-sha1:734e6822bbf0d45eff9af51f82432957f73aa32c.