From: Waldemar Kozaczuk <jwkozac...@gmail.com>
Committer: Waldemar Kozaczuk <jwkozac...@gmail.com>
Branch: master
scripts: Enhanced manifest_from_host.sh to better support regular
expressions and filter x86_64 ELF files
Signed-off-by: Waldemar Kozaczuk <jwkozac...@gmail.com>
---
diff --git a/scripts/manifest_from_host.sh b/scripts/manifest_from_host.sh
--- a/scripts/manifest_from_host.sh
+++ b/scripts/manifest_from_host.sh
@@ -36,18 +36,18 @@ usage() {
find_library()
{
- local pattern=$1
- local count=$(ldconfig -p | grep $pattern | wc -l)
+ local pattern="$1"
+ local count=$(ldconfig -p | grep -P "$pattern" | grep 'x86-64' | wc -l)
if [[ $count == 0 ]]; then
echo "Could not find any so file matching $pattern"
return -1
elif [[ $count > 1 ]]; then
echo 'Found more than one alternative:'
- ldconfig -p | grep $pattern
+ ldconfig -p | grep -P "$pattern"
return -1
else
- local so_name_path=$(ldconfig -p | grep $pattern)
+ local so_name_path=$(ldconfig -p | grep -P "$pattern" | grep
'x86-64')
so_name=$(echo $so_name_path | grep -Po 'lib[^ ]+.+?(?= \()')
so_path=$(echo $so_name_path | grep -Po '(?<=> )/[^ ]+')
return 0
@@ -56,20 +56,20 @@ find_library()
output_manifest()
{
- local so_path=$1
+ local so_path="$1"
echo "# --------------------" | tee -a $OUTPUT
echo "# Dependencies" | tee -a $OUTPUT
echo "# --------------------" | tee -a $OUTPUT
- lddtree $so_path | grep -v "$so_path" | grep -v 'ld-linux-x86-64' | \
+ lddtree $so_path | grep -v "not found" | grep -v "$so_path" | grep
-v 'ld-linux-x86-64' | \
grep -Pv 'lib(gcc_s|resolv|c|m|pthread|dl|rt|stdc\+\+|aio|xenstore|crypt|
selinux)\.so([\d.]+)?' | \
sed 's/ =>/:/' | sed 's/^\s*lib/\/usr\/lib\/lib/' | sort | uniq | tee -a
$OUTPUT
}
detect_elf()
{
- local file_path=$1
+ local file_path="$1"
local file_desc=$(file -L $file_path)
- local elf_filter=$(echo $file_desc | grep -P 'LSB shared object|
LSB.*executable' | wc -l)
+ local elf_filter=$(echo $file_desc | grep -P 'LSB shared object|
LSB.*executable' | grep 'x86-64' | wc -l)
if [[ $elf_filter == 1 ]]; then
local shared_object_filter=$(echo $file_desc | grep -P 'LSB shared
object' | wc -l)
if [[ $shared_object_filter == 1 ]]; then
@@ -117,8 +117,8 @@ if [ -z "$LDDTREE_INSTALLED" ]; then
exit 1
fi
-NAME_OR_PATH=$1
-SUBDIRECTORY_PATH=$2
+NAME_OR_PATH="$1"
+SUBDIRECTORY_PATH="$2"
# Check if directory and disregard LIB mode if requested
if [[ -d $NAME_OR_PATH ]]; then
@@ -162,7 +162,7 @@ if [[ -f $NAME_OR_PATH ]]; then
else
# Do not assume ELF shared library unless mode specifies it
if [[ $MODE == "LIB" ]]; then
- find_library $NAME_OR_PATH
+ find_library "$NAME_OR_PATH"
if [[ $? == 0 ]]; then
echo "# Shared library" | tee $OUTPUT
echo "/usr/lib/$so_name: $so_path" | tee -a $OUTPUT
--
You received this message because you are subscribed to the Google Groups "OSv
Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to osv-dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit
https://groups.google.com/d/msgid/osv-dev/000000000000dcf051058f052ec1%40google.com.