summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--autodeps/linux.prov10
-rw-r--r--autodeps/linux.req14
3 files changed, 25 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index f562d07b5..a87b7116d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,7 @@
- added rpmtransSetScriptFd()
- fixed config file problems during chroot upgrades
- fixed %attr brokenness for directories
+ - augment linux provides/requires for glibc 2.1 backward compatibility.
2.5.x -> 2.90
- added --excludepath
diff --git a/autodeps/linux.prov b/autodeps/linux.prov
index fd2f98748..472d786f8 100644
--- a/autodeps/linux.prov
+++ b/autodeps/linux.prov
@@ -11,6 +11,16 @@ for f in $filelist; do
if [ "$soname" != "" ]; then
if [ ! -L $f ]; then
echo $soname
+ objdump -p $f | awk '
+ BEGIN { START=0 ; }
+ /Version definitions:/ { START=1; }
+ /^[0-9]/ && (START==1) { print $4; }
+ /^$/ { START=0; }
+ ' | \
+ grep -v $soname | \
+ while read symbol ; do
+ echo "$soname($symbol)"
+ done
fi
else
echo ${f##*/}
diff --git a/autodeps/linux.req b/autodeps/linux.req
index cde32666e..9c69e11c2 100644
--- a/autodeps/linux.req
+++ b/autodeps/linux.req
@@ -25,3 +25,17 @@ for f in $scriptlist; do
head -1 $f | sed -e 's/^\#\![ ]*//' | cut -d" " -f1
fi
done | sort -u
+
+for f in $liblist $exelist ; do
+ objdump -p $f | awk '
+ BEGIN { START=0; LIBNAME=""; }
+ /Version References:/ { START=1; }
+ /required from/ && (START==1) {
+ sub(/:/, "", $3);
+ LIBNAME=$3;
+ }
+ (START==1) && (LIBNAME!="") && ($4!="") { print LIBNAME "(" $4 ")"; }
+ /^$/ { START=0; }
+ '
+done
+