From c57a9070f27ad10f507f36a88b01ab6f019b46cd Mon Sep 17 00:00:00 2001 From: Natanael Copa Date: Sat, 8 Sep 2012 13:45:34 +0000 Subject: [PATCH] abuild: dont add .so files with mismatching soname version Skip .so files without version number in filename when soname has version number. This solves issue with libgcj/gcc-java who ships both libgcj_bc.so and libgcj_bc.so.1.0.0 which both has soname libgcj_bc.so.1 --- abuild.in | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/abuild.in b/abuild.in index 889fa75..60cb91c 100755 --- a/abuild.in +++ b/abuild.in @@ -952,17 +952,29 @@ scan_shared_objects() { # lets tell all the .so files this package provides in .provides-so scanelf --nobanner --soname "$@" | while read etype soname file; do # if soname field is missing, soname will be the filepath - # we only want shared libs sover=0 - case $soname in - *.so|*.so.[0-9]*) + if [ -z "$file" ]; then + file="$soname" soname=${soname##*/} - case "$file" in - *.so.[0-9]*) sover=${file##*.so.};; + fi + + # we only want shared libs + case $soname in + *.so|*.so.[0-9]*);; + *) continue;; + esac + + case "$file" in + *.so.[0-9]*) sover=${file##*.so.};; + *.so) + # filter out sonames with version when file does not + # have version + case "$soname" in + *.so.[0-9]*) continue;; esac - echo "$soname $sover" ;; esac + echo "$soname $sover" done > "$controldir"/.provides-so # now find the so dependencies