[PATCH 1/2] initscript: copy uprobes.ko to cache directory
Stefan Hajnoczi
stefanha@redhat.com
Fri Aug 8 06:33:00 GMT 2014
If the uprobes.ko module was built then it will be needed at staprun
time. Copy the module into the cache directory alongside compiled
scripts.
This patch uses the stap -k option to keep the temporary build directory
around. The uprobes.ko module file can be found in there.
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
initscript/systemtap.in | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
diff --git a/initscript/systemtap.in b/initscript/systemtap.in
index 2d770e4..7e9c680 100755
--- a/initscript/systemtap.in
+++ b/initscript/systemtap.in
@@ -457,7 +457,7 @@ prepare_stat_dir () {
}
compile_script () { # script checkcache
- local opts f tmpdir ret
+ local opts f tmpdir ret stap_tmpdir
eval f="$SCRIPT_PATH/$1.stp"
if [ ! -f "$f" ]; then
if [ $ALLOW_CACHEONLY -eq 1 ]; then
@@ -489,8 +489,19 @@ compile_script () { # script checkcache
return 1
fi
pushd "$tmpdir" &> /dev/null
- logex $STAP -m "$1" -p4 -r $KRELEASE $opts "$f"
+ log "Exec: $STAP -m \"$1\" -p4 -r $KRELEASE -k $opts \"$f\""
+ $STAP -m "$1" -p4 -r $KRELEASE -k $opts "$f" >stap.outerr 2>&1
ret=$?
+ cat stap.outerr >> "$LOG_FILE"
+ stap_tmpdir=$(grep 'Keeping temporary directory' stap.outerr | \
+ sed 's/^Keeping temporary directory "\([^"]*\)"/\1/')
+ if [ $ret -eq 0 ]; then
+ if [ -f "$stap_tmpdir/uprobes/uprobes.ko" ]; then
+ logex mkdir -p "$CACHE_PATH/uprobes"
+ logex mv "$stap_tmpdir/uprobes/uprobes.ko" "$CACHE_PATH/uprobes/"
+ ret=$?
+ fi
+ fi
if [ $ret -eq 0 ]; then
$UNAME -a > "$1.opts"
echo $opts >> "$1.opts"
@@ -500,6 +511,7 @@ compile_script () { # script checkcache
slog "Failed to compile script($1)."
fi
popd &> /dev/null
+ [ -n "$stap_tmpdir" ] && rm -rf "$stap_tmpdir"
rm -rf $tmpdir
[ $ret -eq 0 ] && clog "done" || clog "error"
return $ret
--
1.9.3
More information about the Systemtap
mailing list