Split the file copying logic out of copy_exec so we can use it without
invoking ldd.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
hook-functions | 54 ++++++++++++++++++++++++++++++++----------------------
1 file changed, 32 insertions(+), 22 deletions(-)
diff --git a/hook-functions b/hook-functions
index 72f17ae..407dc61 100644
--- a/hook-functions
+++ b/hook-functions
@@ -118,30 +118,45 @@ manual_add_modules()
done
}
-# $1 = file to copy to ramdisk
-# $2 (optional) Name for the file on the ramdisk
+# $1 = file type (for logging)
+# $2 = file to copy to ramdisk
+# $3 (optional) Name for the file on the ramdisk
# Location of the image dir is assumed to be $DESTDIR
-# We never overwrite the target if it exists.
-copy_exec() {
- local src target x nonoptlib
- local libname dirname
+# If the target exists, we leave it and return 1.
+# On any other error, we return >1.
+copy_file() {
+ local type src target
- src="${1}"
- target="${2:-$1}"
+ type="${1}"
+ src="${2}"
+ target="${3:-$2}"
- [ -f "${src}" ] || return 1
+ [ -f "${src}" ] || return 2
if [ -d "${DESTDIR}/${target}" ]; then
# check if already copied
- [ -e "${DESTDIR}/$target/${src##*/}" ] && return 0
+ [ -e "${DESTDIR}/$target/${src##*/}" ] && return 1
else
- [ -e "${DESTDIR}/$target" ] && return 0
+ [ -e "${DESTDIR}/$target" ] && return 1
#FIXME: inst_dir
mkdir -p "${DESTDIR}/${target%/*}"
fi
- [ "${verbose}" = "y" ] && echo "Adding binary ${src}"
- cp -pL "${src}" "${DESTDIR}/${target}"
+ [ "${verbose}" = "y" ] && echo "Adding ${type} ${src}"
+ cp -pL "${src}" "${DESTDIR}/${target}" || return $(($? + 1))
+}
+
+# $1 = executable to copy to ramdisk, with library dependencies
+# $2 (optional) Name for the file on the ramdisk
+# Location of the image dir is assumed to be $DESTDIR
+# We never overwrite the target if it exists.
+copy_exec() {
+ local src target x nonoptlib ret
+
+ src="${1}"
+ target="${2:-$1}"
+
+ copy_file binary "${src}" "${target}" || return $(($? - 1))
# Copy the dependant libraries
for x in $(ldd "${src}" 2>/dev/null | sed -e '
@@ -160,15 +175,10 @@ copy_exec() {
x="${nonoptlib}"
fi
- libname=$(basename "${x}")
- dirname=$(dirname "${x}")
-
- # FIXME inst_lib
- mkdir -p "${DESTDIR}/${dirname}"
- if [ ! -e "${DESTDIR}/${dirname}/${libname}" ]; then
- cp -pL "${x}" "${DESTDIR}/${dirname}"
- [ "${verbose}" = "y" ] && echo "Adding library ${x}" || true
- fi
+ copy_file library "${x}" || {
+ ret=$?
+ [ ${ret} = 1 ] || return $((ret - 1))
+ }
done
}
Attachment:
signature.asc
Description: Digital signature