tests/test01_pkgquality: check for libraries with undefined symbols after relocation
Signed-off-by: Davide Madrisan <davide.madrisan@gmail.com>
This commit is contained in:
parent
fc5e47711d
commit
1f2bd2cf03
@ -33,6 +33,10 @@ Changes in version 1.12.0
|
||||
+ bugfix
|
||||
* templates/{library,standard,standard-daemon} - Davide Madrisan:
|
||||
Missing requirement: "Requires(preun): %{__install_info}"
|
||||
|
||||
+ improvement
|
||||
* tests/test01_pkgquality - Davide Madrisan:
|
||||
New test: check for libraries with undefined symbols after relocation.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
|
@ -22,6 +22,9 @@ msgstr "questo script richiede bash versione 2 o superiore"
|
||||
msgid "library not found"
|
||||
msgstr "libreria non trovata"
|
||||
|
||||
msgid "utility not found"
|
||||
msgstr "programma non trovato"
|
||||
|
||||
msgid "performing quality checks"
|
||||
msgstr "esecuzione dei test di qualità"
|
||||
|
||||
@ -73,6 +76,9 @@ msgstr "file sospetto"
|
||||
msgid "Hint"
|
||||
msgstr "Suggerimento"
|
||||
|
||||
msgid "checking for libraries with undefined symbols after relocation"
|
||||
msgstr "ricerca di librerie con simboli indefiniti dopo rilocazione"
|
||||
|
||||
msgid "checking for binary files installed in /etc (see FHS)"
|
||||
msgstr "ricerca di file binari installati in /etc (vedi FHS)"
|
||||
|
||||
|
@ -17,6 +17,13 @@ if [[ -z "$LANG" && -r /etc/sysconfig/i18n ]]; then
|
||||
fi
|
||||
TEXTDOMAIN="test01_pkgquality"; export TEXTDOMAIN
|
||||
|
||||
# check if all the needed tools are available
|
||||
for tool in cat chmod cpio date file find fold ftp getopt grep \
|
||||
mktemp ldd objdump; do
|
||||
[ "$(type -p $tool)" ] ||
|
||||
notify.error $"utility not found"": \`$tool'"
|
||||
done
|
||||
|
||||
function alltests() {
|
||||
# FIXME: add to 'po' file
|
||||
notify.note " * ${NOTE}"$"performing quality checks""${NORM}""..."
|
||||
@ -217,6 +224,36 @@ ${NOTE}"$"Hint"":${NORM}
|
||||
%attr(0755,root,root) %{_bindir}/<program>
|
||||
-----------------------------"
|
||||
|
||||
# check for libraries with undefined symbols
|
||||
notify.note " * ${NOTE}"$"\
|
||||
checking for libraries with undefined symbols after relocation""${NORM}..."
|
||||
|
||||
let "i = 0"
|
||||
local undefsyms
|
||||
for pck in ${rpmpkg_name[@]}; do
|
||||
# skip debug packages
|
||||
[[ "${pck##*/}" =~ -debug- ]] && { let "i += 1"; continue; }
|
||||
|
||||
pushd $tmpextractdir/$i >/dev/null
|
||||
# find *.so.* files that are not symlinks to dynamic libraries
|
||||
for f in `find -mindepth 1 -type f \
|
||||
\( -name *\.so\.* -not -name *.debug \) -exec file {} \; | \
|
||||
grep 'shared object' | sed -n 's/.\([^:]*\):.*/\1/p'`; do
|
||||
undefsyms="\
|
||||
$(LC_ALL=C ldd -d -r "$f" 2>/dev/null |& grep "undefined symbol")"
|
||||
if [ "$undefsyms" ]; then
|
||||
notify.warning "${NOTE}${pck##*/}${NORM}"
|
||||
echo -n "${CRIT}"
|
||||
LC_ALL=C ldd -d -r "$f" 2>/dev/null |& \
|
||||
grep "undefined symbol" | sed "s,.*, - &,"
|
||||
echo -n "${NORM}"
|
||||
let "total_issues += 1"
|
||||
fi
|
||||
done
|
||||
popd >/dev/null
|
||||
let "i += 1"
|
||||
done
|
||||
|
||||
# check for binary files in etc (see FHS-2.2)
|
||||
notify.note " * ${NOTE}"$"\
|
||||
checking for binary files installed in /etc (see FHS)""${NORM}..."
|
||||
|
Loading…
Reference in New Issue
Block a user