Commit 163da284 authored by Vitaly Lipatov's avatar Vitaly Lipatov

epm requires: add ELF support

parent d0d4b954
......@@ -35,6 +35,45 @@ __epm_alt_rpm_requires()
fi
}
get_linked_shared_libs()
{
assure_exists readelf binutils
#is_command readelf || fatal "Can't get required shared library: readelf is missed. Try install binutils package."
#ldd "$exe" | sed -e 's|[[:space:]]*||' | grep "^lib.*[[:space:]]=>[[:space:]]\(/usr/lib\|/lib\)" | sed -e 's|[[:space:]].*||'
LANG=C readelf -d "$1" | grep "(NEEDED)" | grep "Shared library:" | sed -e 's|.*Shared library: \[||' -e 's|\]$||' | grep "^lib"
}
__epm_elf32_requires()
{
get_linked_shared_libs "$1"
}
__epm_elf64_requires()
{
get_linked_shared_libs "$1" | sed -e 's|$|()(64bit)|'
}
__epm_elf_requires()
{
local i
if [ -n "$direct" ] ; then
for i in $* ; do
get_linked_shared_libs $i
done
return
fi
for i in $* ; do
if file "$i" | grep -q " ELF 32-bit " ; then
__epm_elf32_requires "$i"
elif file "$i" | grep -q " ELF 64-bit " ; then
__epm_elf64_requires "$i"
else
warning "Unknown ELF binary"
fi
done
}
epm_requires_files()
{
local pkg_files="$*"
......@@ -55,6 +94,9 @@ epm_requires_files()
showcmd eopkg info $pkg_files
a= eopkg info $pkg_files | grep "^Dependencies" | head -n1 | sed -e "s|Dependencies[[:space:]]*: ||"
;;
ELF)
__epm_elf_requires $pkg_files
;;
*)
fatal "Have no suitable command for $PKGTYPE"
;;
......
......@@ -761,6 +761,10 @@ get_package_type()
return
;;
*)
if file "$1" | grep -q " ELF " ; then
echo "ELF"
return
fi
# print extension by default
echo "$1" | sed -e 's|.*\.||'
return 1
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment