Fix auto soname requires on non-versioned targets

RPM's macro engine itself understands backslash escapes so we need to
double-escape these, otherwise we may accidentally match symlink targets
that contain the substring "so" in their names, such as:

    libechosounder.so -> libechosounder2.so
                                ~~
                                 ^ this is currently matched

Whereas we only want these to be processed:

    libechosounder.so -> libechosounder.so.2
                                       ~~~~~
                                           ^ this should be matched

Resolves: RHEL-28767
This commit is contained in:
Michal Domonkos 2024-07-19 14:15:33 +02:00
parent 0cd67ff078
commit 1323c4d6de
2 changed files with 4 additions and 3 deletions

View File

@ -1,5 +1,5 @@
# Make libfoo.so symlinks require the soname-provide of the target library
%__libsymlink_requires %{_rpmconfigdir}/elfdeps --provides --soname-only
%__libsymlink_magic ^symbolic link to .*lib.*\.so\..*$
%__libsymlink_path ^.*\.so$
%__libsymlink_magic ^symbolic link to .*lib.*\\.so\\..*$
%__libsymlink_path ^.*\\.so$
%__libsymlink_flags magic_and_path

View File

@ -254,8 +254,9 @@ install -p -m 644 -t %{buildroot}%{_rpmluadir}/fedora/srpm forge.lua
%doc buildflags.md
%changelog
* Fri Jul 12 2024 Michal Domonkos <mdomonko@redhat.com> - 208-1
* Fri Jul 19 2024 Michal Domonkos <mdomonko@redhat.com> - 208-1
- brp-mangle-shebangs: Strip env flags when mangling shebangs (RHEL-26961)
- Fix automatic soname requires on non-versioned symlink targets (RHEL-28767)
* Thu Jan 18 2024 Miro Hrončok <mhroncok@redhat.com> - 207-1
- brp-python-bytecompile: Pass --invalidation-mode=timestamp to compileall