Bug ID 1223967
Summary %suse_build_hwcaps_libs fails to generate -x86_64-v3 packages when shared library is an update-alternatives link
Classification openSUSE
Product openSUSE Tumbleweed
Version Current
Hardware x86-64
OS openSUSE Tumbleweed
Status NEW
Severity Normal
Priority P5 - None
Component Basesystem
Assignee screening-team-bugs@suse.de
Reporter badshah400@gmail.com
QA Contact qa-bugs@suse.de
Target Milestone ---
Found By ---
Blocker ---

## Originally reported on GitHub:
https://github.com/openSUSE/obs-build/issues/1001

This came up when trying to enable -v3 hwcaps enhanced libs for `lapack`. As it
turns out, `lapack` uses update-alternatives to create a symlink
`/usr/lib64/libblas.so.3` pointing to the real library
`/usr/lib64/blas/libblas.so.3` via `update-alternatives` called during `post`.
The file `/usr/lib64/libblas.so.3` does not exist a build-time, but created by
update-alternatives during `post` install. It is also marked as `%ghost` in the
package. 

Apparently `%{?suse_build_hwcaps_libs}` cannot handle this. It tries to copy
the non-existent — at build time — `/usr/lib64/libblas.so.3` and fails
catastrophically _after_ actually generating the hwaps libs. This is what I see
in the log. Note the error: `mv: cannot stat
'.cfiles/usr/lib64/liblapack.so.3': No such file or directory` which suggests
it is trying to move a non-existent file which will be created during `post`
install:


> [  218s] RPMLINT report:
> [  218s] ===============
> [  220s] ============================ rpmlint session starts ============================
> [  220s] rpmlint: 2.5.0
> [  220s] configuration:
> [  220s]     /opt/testing/lib64/python3.11/rpmlint/configdefaults.toml
> [  220s]     /opt/testing/share/rpmlint/cron-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/dbus-services.toml
> [  220s]     /opt/testing/share/rpmlint/device-files-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/licenses.toml
> [  220s]     /opt/testing/share/rpmlint/opensuse.toml
> [  220s]     /opt/testing/share/rpmlint/pam-modules.toml
> [  220s]     /opt/testing/share/rpmlint/permissions-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/pie-executables.toml
> [  220s]     /opt/testing/share/rpmlint/polkit-rules-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/scoring.toml
> [  220s]     /opt/testing/share/rpmlint/security.toml
> [  220s]     /opt/testing/share/rpmlint/sudoers-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/sysctl-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/systemd-tmpfiles.toml
> [  220s]     /opt/testing/share/rpmlint/users-groups.toml
> [  220s]     /opt/testing/share/rpmlint/world-writable-whitelist.toml
> [  220s]     /opt/testing/share/rpmlint/zypper-plugins.toml
> [  220s] rpmlintrc:
> [  220s]     /home/abuild/rpmbuild/SOURCES/lapack.rpmlintrc
> [  220s] checks: 41, packages: 21
> [  220s] 
> [  220s] libblas3.x86_64: I: package-supports-update-alternatives
> [  220s] libcblas3.x86_64: I: package-supports-update-alternatives
> [  220s] liblapack3.x86_64: I: package-supports-update-alternatives
> [  220s] liblapacke3.x86_64: I: package-supports-update-alternatives
> [  220s] libblas3.x86_64_v3: I: package-supports-update-alternatives
> [  220s] libcblas3.x86_64_v3: I: package-supports-update-alternatives
> [  220s] liblapack3.x86_64_v3: I: package-supports-update-alternatives
> [  220s] liblapacke3.x86_64_v3: I: package-supports-update-alternatives
> [  220s] Check time report (>1% & >0.1s):
> [  220s]     Check                            Duration (in s)   Fraction (in %)  Checked files
> [  220s]     ExtractRpm                                   0.3              30.3               
> [  220s]     SignatureCheck                               0.2              19.6               
> [  220s]     BinariesCheck                                0.2              19.2               
> [  220s]     SharedLibraryPolicyCheck                     0.2              16.2               
> [  220s]     TOTAL                                        1.0             100.0               
> [  220s] 
> [  220s]  21 packages and 0 specfiles checked; 0 errors, 0 warnings, 131 filtered, 0 badness; has taken 1.1 s 
> [  220s] 
> [  220s] ... cleaning ccache
> [  220s] setting SOURCE_DATE_EPOCH_MTIME to 1714856125
> [  220s] 1
> [  220s] ... saving ccache archive
> [  220s] ... creating baselibs
> [  220s] setting SOURCE_DATE_EPOCH_MTIME to 1714856125
> [  220s] no targets for arch x86_64, skipping lapack-devel
> [  220s] no targets for arch x86_64, skipping liblapack3
> [  220s] no targets for arch x86_64, skipping lapacke-devel
> [  220s] no targets for arch x86_64, skipping libblas3
> [  220s] no targets for arch x86_64, skipping liblapacke3
> [  220s] no targets for arch x86_64, skipping libcblas3
> [  220s] no targets for arch x86_64, skipping cblas-devel
> [  220s] no targets for arch x86_64, skipping blas-devel
> [  220s] liblapack3(x86_64:x86-64-v3): writing specfile...
> [  220s] liblapack3(x86_64:x86-64-v3): running build...
> [  220s] rpmbuild failed: 256
> [  220s] re-running in verbose mode:
> [  220s] using SOURCE_DATE_EPOCH with value 1714856124 as build time
> [  220s] Executing(%prep): /usr/bin/bash -e /var/tmp/rpm-tmp.r51odx
> [  220s] + umask 022
> [  220s] + cd /home/abuild/rpmbuild/BUILD
> [  220s] + RPM_EC=0
> [  220s] ++ jobs -p
> [  220s] + exit 0
> [  220s] Executing(%build): /usr/bin/bash -e /var/tmp/rpm-tmp.dHOH58
> [  220s] + umask 022
> [  220s] + cd /home/abuild/rpmbuild/BUILD
> [  220s] + /usr/bin/rm -rf /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] ++ dirname /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + /usr/bin/mkdir -p /home/abuild/rpmbuild/BUILDROOT
> [  220s] + /usr/bin/mkdir /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + RPM_EC=0
> [  220s] ++ jobs -p
> [  220s] + exit 0
> [  220s] Executing(%install): /usr/bin/bash -e /var/tmp/rpm-tmp.Aiq5Zt
> [  220s] + umask 022
> [  220s] + cd /home/abuild/rpmbuild/BUILD
> [  220s] + /usr/bin/rm -rf /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + /usr/bin/mkdir -p /home/abuild/rpmbuild/BUILDROOT
> [  220s] + /usr/bin/mkdir /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + rm -rf /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + mkdir /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + cd /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + mkdir -p .cfiles
> [  220s] + pushd .cfiles
> [  220s] ~/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/.cfiles ~/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  220s] + cat
> [  220s] + rpm2cpio //home/abuild/rpmbuild/RPMS/x86_64_v3/liblapack3-3.12.0-94.1.x86_64_v3.rpm
> [  220s] + cpio -i -d -v -E .filelist
> [  220s] ./usr/lib64/lapack/liblapack.so.3
> [  221s] ./usr/lib64/lapack/liblapack.so.3.12.0
> [  221s] 15311 blocks
> [  221s] + popd
> [  221s] ~/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64
> [  221s] + mkdir -p /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3/lapack
> [  221s] + mv .cfiles/usr/lib64/lapack/liblapack.so.3 /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3/lapack/liblapack.so.3
> [  221s] + mkdir -p /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3/lapack
> [  221s] + mv .cfiles/usr/lib64/lapack/liblapack.so.3.12.0 /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3/lapack/liblapack.so.3.12.0
> [  221s] + mkdir -p /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3
> [  221s] + mv .cfiles/usr/lib64/liblapack.so.3 /home/abuild/rpmbuild/BUILDROOT/lapack-3.12.0-94.1.x86_64/usr/lib64/glibc-hwcaps/x86-64-v3/liblapack.so.3
> [  221s] mv: cannot stat '.cfiles/usr/lib64/liblapack.so.3': No such file or directory
> [  221s] error: Bad exit status from /var/tmp/rpm-tmp.Aiq5Zt (%install)
> [  221s] 
> [  221s] RPM build errors:
> [  221s]     Bad exit status from /var/tmp/rpm-tmp.Aiq5Zt (%install)
> [  221s] ### VM INTERACTION START ###
> [  221s] [  217.139930][    T1] sysrq: Power Off
> [  221s] [  217.141087][   T10] reboot: Power down
> [  221s] ### VM INTERACTION END ###
> [  221s] 
> [  221s] i01-ch1d failed "build lapack.spec" at Mon May  6 11:51:16 UTC 2024.
> [  221s] 



FWIW, here is the baselibs.conf:

> ...
> 
> liblapack3
>   -/usr/lib(64)?/liblapack.so.3
>   requires "update-alternatives"
>   postin "ln -sf /etc/alternatives/liblapack.so.3_<targettype> /usr/%_lib/liblapack.so.3"
>   postin "/usr/sbin/update-alternatives --force --install /usr/%_lib/liblapack.so.3 liblapack.so.3_<targettype> /usr/%_lib/lapack/liblapack.so.3  50"
>   postun "/usr/sbin/update-alternatives --remove liblapack.so.3_<targettype> /usr/%_lib/lapack/liblapack.so.3"
> 
> ...


And attached is the full build log if it helps (from
https://build.opensuse.org/package/show/home:badshah400:lapackv3/lapack).


You are receiving this mail because: