[pacman-dev] [PATCH 1/2] makepkg: fix extraction of soname in find_libdepends

Allan McRae allan at archlinux.org
Fri Mar 9 20:43:46 EST 2012


On 05/03/12 06:19, Florian Pritz wrote:
> libperl.so results in soname="libperl.so.so" which is wrong.
> 
> This returns the correct string: "libperl.so"
> 
> Fix-by: Dave Reisner <dreisner at archlinux.org>
> Signed-off-by: Florian Pritz <bluewind at xinu.at>
> ---
> This should be applied to both master and maint.

Ugh..  I didn't review this but the patch is entirely broken on the
first file I tried it on.

>  scripts/makepkg.sh.in |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> index 6e7a556..9301730 100644
> --- a/scripts/makepkg.sh.in
> +++ b/scripts/makepkg.sh.in
> @@ -1071,7 +1071,7 @@ find_libdepends() {
>  		for sofile in $(LC_ALL=C readelf -d "$filename" 2>/dev/null | sed -nr 's/.*Shared library: \[(.*)\].*/\1/p')
>  		do
>  			# extract the library name: libfoo.so
> -			soname="${sofile%%\.so\.*}.so"
> +			soname="${sofile%.so?(+(.+([0-9])))}".so


Broken:

> LC_ALL=C readelf -d /usr/lib/libalpm.so.7.0.2 2>/dev/null | sed -nr
's/.*Shared library: \[(.*)\].*/\1/p'
libcurl.so.4
libarchive.so.12
libcrypto.so.1.0.0
libgpgme.so.11
libc.so.6

> sofile="libcrypto.so.1.0.0"

> echo "${sofile%.so?(+(.+([0-9])))}".so
libcrypto.so.1.0.0.so



Why not just:
soname="${sofile%%\.so*}.so"

I suppose that would not correctly work for...
foo.so.bar.so.9

Allan


More information about the pacman-dev mailing list