[pacman-dev] [PATCH 1/2] makepkg: Search/Add real library names libprovide link to
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 <msal@tormail.org> --- 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
participants (1)
-
Mohammad Alsaleh