If libprovide file's realpath is not of the scheme "$libprovide.ver",
  add the real library name used to provides.

  The real name is needed to find version/arch info. And it is the one
  actually used by binaries as a dependency.

Signed-off-by: Mohammad Alsaleh <[email protected]>
---
 scripts/makepkg.sh.in | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
index b85b87e..7f4ee25 100644
--- a/scripts/makepkg.sh.in
+++ b/scripts/makepkg.sh.in
@@ -1744,6 +1744,23 @@ find_libdepends() {
        printf '%s\n' "${libdepends[@]}"
 }
 
+extra_libprovides() {
+       local p pfile extra_p extra_pfile
+
+       # If libprovide's realpath has a different library name, add that name 
to provides
+       for p in "${provides[@]}"; do
+               if [[ $p = *.so ]]; then
+                       while read pfile; do
+                               extra_pfile="$(basename "$(realpath "$pfile")")"
+                               if [[ "$extra_pfile" =~ \.so &&  
"${extra_pfile%.so*}.so" != "$p"  ]]; then
+                                       extra_p="${extra_pfile%.so*}.so"
+                                       provides+=("$extra_p")
+                                       warning "$(gettext "Library %s added to 
%s")" "$extra_p" "'provides'"
+                               fi
+                       done < <(find "$pkgdir" -type l -name "$p" 2>/dev/null)
+               fi
+       done
+}
 
 find_libprovides() {
        local p libprovides missing
@@ -1829,6 +1846,7 @@ write_pkginfo() {
        printf "size = %s\n" "$size"
        printf "arch = %s\n" "$pkgarch"
 
+       extra_libprovides
        mapfile -t provides < <(find_libprovides)
        mapfile -t depends < <(find_libdepends)
 
-- 
1.8.2.2


Reply via email to