summaryrefslogtreecommitdiffstats
path: root/scripts/lib/ptxd_make_world_extract.sh
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2011-06-21 18:08:15 +0200
committerMichael Olbrich <m.olbrich@pengutronix.de>2011-06-23 10:55:49 +0200
commit41fb0fd8ecdd7bae9817838b1af539de599433a0 (patch)
treef21b53a57699aa128bdbc57531aa1a3e7b1bbc2b /scripts/lib/ptxd_make_world_extract.sh
parentba3ff64b12103855fa6c0073bcd949ba48cbbee7 (diff)
downloadptxdist-41fb0fd8ecdd7bae9817838b1af539de599433a0.tar.gz
ptxdist-41fb0fd8ecdd7bae9817838b1af539de599433a0.tar.xz
ptxd_make_world_extract: force extracting to <PKG>_DIR
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'scripts/lib/ptxd_make_world_extract.sh')
-rw-r--r--scripts/lib/ptxd_make_world_extract.sh25
1 files changed, 23 insertions, 2 deletions
diff --git a/scripts/lib/ptxd_make_world_extract.sh b/scripts/lib/ptxd_make_world_extract.sh
index 1eb260af9..46e32ccfb 100644
--- a/scripts/lib/ptxd_make_world_extract.sh
+++ b/scripts/lib/ptxd_make_world_extract.sh
@@ -1,6 +1,8 @@
#!/bin/bash
#
# Copyright (C) 2008, 2009, 2010 by Marc Kleine-Budde <mkl@pengutronix.de>
+# 2011 by Michael Olbrich <m.olbrich@pengutronix.de>
+#
# See CREDITS for details about who has contributed to this project.
#
# For further information about the PTXdist project and license conditions
@@ -59,9 +61,28 @@ ptxd_make_world_extract() {
echo "\
extract: pkg_src=$(ptxd_print_path ${pkg_src})
-extract: pkg_extract_dir=$(ptxd_print_path ${pkg_extract_dir})"
+extract: pkg_extract_dir=$(ptxd_print_path ${pkg_dir})"
- ptxd_make_extract_archive "${pkg_src}" "${pkg_extract_dir}"
+ local tmpdir
+ tmpdir="$(mktemp -d "${pkg_dir}.XXXXXX")"
+ if ! ptxd_make_extract_archive "${pkg_src}" "${tmpdir}"; then
+ rm -rf "${tmpdir}"
+ ptxd_bailout "failed to extract '${pkg_src}'."
+ fi
+ local depth=$[${pkg_strip_level:=1}+1]
+ if [ -e "${pkg_dir}" ]; then
+ tar -C "${tmpdir}" --remove-files -c . | \
+ tar -x --strip-components=${depth} -C "${pkg_dir}"
+ check_pipe_status
+ else
+ mkdir -p "${pkg_dir}" &&
+ find "${tmpdir}" -mindepth ${depth} -maxdepth ${depth} -print0 | \
+ xargs -0 mv -t "${pkg_dir}"
+ check_pipe_status
+ fi
+ local ret=$?
+ rm -rf "${tmpdir}"
+ return ${ret}
}
export -f ptxd_make_world_extract