systemtap perf dep.

This commit is contained in:
Ertuğrul Erata
2017-11-24 23:02:06 +03:00
parent be5ac6bf94
commit b8a5e60c29
13 changed files with 139864 additions and 138696 deletions
+138866 -138694
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1 +1 @@
dc5632deff225beeaf6c964845071a0bef49d1f4
9b73d0676312cfc437701a07be601e1de84d5439
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1 +1 @@
9e2556e56d6270bf5bd53f0bebf918c0d63f6ad7
4fc8a550c7626ff4b3aa6cb4a0bb501a23a62e04
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt
from pisi.actionsapi import shelltools
from pisi.actionsapi import pisitools
from pisi.actionsapi import autotools
from pisi.actionsapi import get
def setup():
pisitools.dosed("configure.ac", "-Werror")
pisitools.dosed("Makefile.am", "-Werror")
autotools.autoreconf("-vfi")
autotools.configure("--enable-sqlite \
--enable-pie \
--disable-docs \
--disable-publican \
--disable-crash \
--disable-silent-rules \
--docdir=/%s/%s \
--without-rpm" % (get.docDIR(), get.srcNAME()))
def build():
autotools.make()
def install():
autotools.rawInstall("DESTDIR=%s" % get.installDIR())
pisitools.dodir("/var/cache/systemtap")
pisitools.dodir("/run/systemtap")
pisitools.dodir("/var/log/stap-server")
pisitools.dodir("/etc/logrotate.d")
pisitools.dodir("/etc/stap-server/conf.d")
pisitools.dodir("/etc/systemtap/conf.d")
pisitools.dodir("/etc/systemtap/script.d")
pisitools.dobin("stap-prep")
pisitools.domove("/var/run/stap-server", "/run/")
pisitools.removeDir("var/run")
shelltools.copytree("testsuite", "%s/usr/share/systemtap" % get.installDIR())
pisitools.insinto("/etc/logrotate.d", "initscript/logrotate.stap-server", "stap-server")
pisitools.insinto("/etc/conf.d", "initscript/config.stap-server", "stap-server")
pisitools.insinto("/etc/systemtap", "initscript/config.systemtap", "config")
# Clean uprobes directory
#autotools.make("-C %s/usr/share/systemtap/runtime/uprobes clean" % get.installDIR())
pisitools.dodoc("COPYING", "HACKING", "INTERNALS", "README.*")
+31
View File
@@ -0,0 +1,31 @@
#/usr/bin/python
import os
LOGFILE = "/var/log/stap-server/log"
permissions = {
"/usr/share/systemtap/runtime/uprobes" : ["0775", "root:stap-server"],
LOGFILE : ["0664", "stap-server:stap-server"],
}
# TODO
# If it does not already exist, as stap-server, generate the certificate
# used for signing and for ssl.
#if test ! -e ~stap-server/.systemtap/ssl/server/stap.cert; then
# runuser -s /bin/sh - stap-server -c %{_libexecdir}/%{name}/stap-gen-cert >/dev/null
# Authorize the certificate as a trusted ssl peer and as a trusted signer
# on the local host.
# %{_libexecdir}/%{name}/stap-authorize-cert ~stap-server/.systemtap/ssl/server/stap.cert %{_sysconfdir}/systemtap/ssl/client >/dev/null
# %{_libexecdir}/%{name}/stap-authorize-cert ~stap-server/.systemtap/ssl/server/stap.cert %{_sysconfdir}/systemtap/staprun >/dev/null
#fi
def postInstall(fromVersion, fromRelease, toVersion, toRelease):
if not os.path.exists(LOGFILE):
open(LOGFILE, "w").write("")
for _file, perms in permissions.items():
# The list above is general, some paths may not exist depending on the configuration
if os.path.exists(_file):
os.system("/bin/chown -R %s %s" % (perms[1], _file))
os.system("/bin/chmod %s %s" % (perms[0], _file))
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
#
# stap-server init.d script for the systemtap compile server
#
# chkconfig: - 00 99
# description: The systemtap compile server provides a centralized and secure \
# environment for compiling systemtap scripts.
# config: /etc/sysconfig/stap-server
# config: /etc/stap-server/conf.d
# Call the installed stap-server script.
STAP_USER=stap-server ${exec_prefix}/bin/stap-server "$@"
+749
View File
@@ -0,0 +1,749 @@
#!/bin/bash
#
# systemtap Startup script for SystemTap scripts
#
# chkconfig: - 00 99
# description: SystemTap is a programmable kernel/application tracing tool.
# config: /etc/systemtap/config
# config: /etc/systemtap/conf.d
### BEGIN INIT INFO
# Provides: SystemTap scripts startup
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Short-Description: Start and stop SystemTap scripts
# Description: SystemTap is a programmable kernel/application tracing tool.
### END INIT INFO
# Source function library.
if [ -f /etc/rc.d/init.d/functions ]; then
# Red Hat init functions
. /etc/rc.d/init.d/functions
else
# Default init functions
success () {
echo -n "OK"
}
failure () {
echo -n "FAILED"
}
fi
prog=systemtap
# Commands
STAP=${exec_prefix}/bin/stap
STAPRUN=${exec_prefix}/bin/staprun
UNAME=/bin/uname
LSMOD=/sbin/lsmod
# Path setup
SCRIPT_PATH=/etc/systemtap/script.d
CONFIG_PATH=/etc/systemtap/conf.d
CACHE_PATH=/var/cache/systemtap
STAT_PATH=/run/systemtap
TEMP_PATH=/tmp
LOG_FILE=/var/log/systemtap.log
# FAIL unless all scripts succeeded to run
PASSALL=yes
# Always follows script dependencies
RECURSIVE=no
# Automatically recompile scripts if caches are old or do not exist.
AUTOCOMPILE=yes
# Start these scripts by default. If omitted, all scripts are started.
DEFAULT_START=
# Allow cache only scripts
ALLOW_CACHEONLY=no
# Optional settings
CONFIG=/etc/systemtap/config
SCRIPTS=
KRELEASE=`uname -r`
OPT_RECURSIVE=
OPT_SCRIPTS=
OPTS=
OPT_ASSUMEYES=
echo_usage () {
echo $"Usage: $prog {start|stop|status|restart|compile|cleanup|condrestart|try-restart|reload|force-reload} [option]"
echo $"Options:"
echo $" -c configfile : specify config file"
echo $" -r kernelrelease: specify kernel release version"
echo $" -R : recursively dependency checking"
echo $" -y : answer yes for all questions."
echo $" script(s) : specify systemtap scripts"
}
#-----------------------------------------------------------------
# Helper functions
#-----------------------------------------------------------------
log () { # message
echo `LC_ALL=en date +"%b %e %T"`": $1" >> "$LOG_FILE"
}
clog () { # message [-n]
echo $2 "$1"
log "$1"
}
slog () { # message
logger "$1" # if syslogd is running, this message will be sent to syslog.
log "$1"
}
logex () { # command
eval log \"Exec: $@\"
"$@" >> "$LOG_FILE" 2>&1
return $?
}
do_warning () { # message
slog "Warning: $1"
warning "$1"
}
do_failure () { # message
slog "Error: $1"
failure "$1"
}
do_success () { # message
log "Pass: $1"
success "$1"
}
# Normalize options
check_bool () { # value
case $1 in
n|N|no|No|NO|0)
return 0;;
y|Y|yes|Yes|YES|1)
return 1;;
*)
return 2;;
esac
}
ask_yesno () { # message
local yn ret=2
[ "$OPT_ASSUMEYES" ] && return 1
while [ $ret -eq 2 ]; do
echo -n "$1 [y/N]: "
read yn
[ -z "$yn" ] && return 0
check_bool $yn
ret=$?
done
return $ret
}
#------------------------------------------------------------------
# Parameter parsing and setup options
#------------------------------------------------------------------
parse_args () { # arguments
while [ -n "$1" ]; do
case "$1" in
-c)
CONFIG=$2
shift 1
;;
-r)
KRELEASE=$2
shift 1
;;
-R)
OPT_RECURSIVE=1
;;
-y)
OPT_ASSUMEYES=1
;;
--)
;;
*)
OPT_SCRIPTS=$OPT_SCRIPTS\ $1
;;
esac
shift 1
done
}
CMD=$1
shift 1
OPTS=`getopt -s bash -u -o 'r:c:Ry' -- $@`
if [ $? -ne 0 ]; then
slog "Error: Argument parse error: $@"
failure $"parse error"
echo_usage
exit 3
fi
parse_args $OPTS
# Include configs
. "$CONFIG"
for f in "$CONFIG_PATH"/*.conf; do
if [ -f "$f" ]; then
. "$f"
fi
done
check_bool $PASSALL
PASSALL=$?
check_bool $RECURSIVE
RECURSIVE=$?
if [ "$OPT_RECURSIVE" ]; then # -r option overrides RECURSIVE.
RECURSIVE=1
fi
check_bool $AUTOCOMPILE
AUTOCOMPILE=$?
CACHE_PATH="$CACHE_PATH/$KRELEASE"
check_bool $ALLOW_CACHEONLY
ALLOW_CACHEONLY=$?
__get_all_scripts () {
local s
if [ $ALLOW_CACHEONLY -eq 1 ]; then
for s in "$CACHE_PATH"/*.ko; do
if [ -f "$s" ]; then
basename "$s" | sed s/\.ko$//g
fi
done
fi
for s in "$SCRIPT_PATH"/*.stp; do
if [ -f "$s" ]; then
basename "$s" | sed s/\.stp$//g
fi
done
}
get_all_scripts() {
__get_all_scripts | sort | uniq
}
if [ -z "$OPT_SCRIPTS" ]; then
SCRIPTS=`get_all_scripts | xargs`
RECURSIVE=1
else
SCRIPTS="$OPT_SCRIPTS"
fi
#------------------------------------------------------------------
# Main routine
#------------------------------------------------------------------
NR_FAILS=0
might_fail () { # message exitcode
if [ $PASSALL -eq 1 ]; then
do_failure "$1"
echo
[ -z "$2" ] && exit 1
exit $2
else
log "Warning: "$1
NR_FAILS=$((NR_FAILS+1))
return 0
fi
}
might_success () { # message
if [ $NR_FAILS -ne 0 ]; then
log "Warning: $NR_FAILS failure occurred."
do_warning "$1"
else
do_success "$1"
fi
return 0
}
get_all_runnings () {
local f
for f in "$STAT_PATH"/*; do
if [ -f "$f" ]; then
basename "$f"
fi
done
}
get_daemon_pid () { # script
cat "$STAT_PATH/$1"
}
# Check whether a script is running. Returns:
# 0: running
# 4: running, but no pidfile
# 3: not running
# 1: not running, but pidfile remains
check_running () { # script
local m f
f="$STAT_PATH/$1"
m=`$LSMOD | grep "^$1 "`
if [ -n "$m" ]; then
[ -f "$f" ] && return 0 # running
return 4 # another script is running
else
[ -f "$f" ] && return 1 # dead, but pidfile remains
return 3 # dead
fi
}
# check whether a script cache need to be updated.
check_cache () { # script opts
local s tmp tmp2
s=$1; shift 1
[ ! -f "$CACHE_PATH/$s.ko" -o ! -f "$CACHE_PATH/$s.opts" ] && return 1
if [ $ALLOW_CACHEONLY -ne 1 -o -f "$SCRIPT_PATH/$s.stp" ]; then
[ "$SCRIPT_PATH/$s.stp" -nt "$CACHE_PATH/$s.ko" ] && return 2
fi
tmp=`head -n 1 "$CACHE_PATH/$s.opts"`
tmp2=`$UNAME -a`
[ "$tmp" != "$tmp2" ] && return 3
tmp=`tail -n 1 "$CACHE_PATH/$s.opts"`
tmp2="$*"
[ "$tmp" != "$tmp2" ] && return 4
return 0
}
stap_getopt () { # opts
local ret
# TODO: support quoted options
getopt -s bash -u \
-l 'kelf,kmap::,ignore-vmlinux,ignore-dwarf,vp:' \
-o 'hVvtp:I:e:o:R:r:m:kgPc:x:D:bs:uqwl:d:L:FS:' -- $@
ret=$?
[ $ret -ne 0 ] && slog "Failed to parse parameters. ($@)"
return $ret
}
get_compile_opts () { # opts
local opts o skip
opts=`stap_getopt $*`
[ $? -ne 0 ] && return 1
skip=0
for o in $opts; do
if [ $skip -ne 0 ]; then skip=0; continue; fi
case $o in
-p|-m|-r|-c|-x|-e|-s|-o|-S)
skip=1 ;;
-h|-V|-k|-F)
;;
*)
echo -n $o" " ;;
esac
done
}
get_run_opts () { # normalized_opts
local opts o show mode
opts=`stap_getopt $*`
[ $? -ne 0 ] && return 1
mode='-L'
show=0
for o in $opts; do
case $o in
-c|-x|-s|-o|-S)
[ $o == '-s' ] && o='-b'
[ $o == '-o' ] && mode='-D'
echo -n $o" "
show=1
;;
*)
if [ $show -ne 0 ]; then
echo -n $o" "
show=0
fi
;;
esac
done
echo -n $mode
}
prepare_cache_dir () {
if [ ! -d "$CACHE_PATH" ]; then
logex mkdir -p "$CACHE_PATH"
[ $? -ne 0 ] && return 1
fi
return 0
}
prepare_stat_dir () {
if [ ! -d "$STAT_PATH" ]; then
logex mkdir -p "$STAT_PATH"
[ $? -ne 0 ] && return 1
fi
return 0
}
compile_script () { # script checkcache
local opts f tmpdir ret
eval f="$SCRIPT_PATH/$1.stp"
if [ ! -f "$f" ]; then
if [ $ALLOW_CACHEONLY -eq 1 ]; then
clog "Warning: no script file($f). Use compiled cache."
return 0
else
clog "Error: no script file($f)."
return 1
fi
fi
eval opts=\$$1_OPT
opts=`get_compile_opts $opts`
[ $? -ne 0 ] && return 2
if [ "$2" = "check" ]; then
check_cache $1 $opts
[ $? -eq 0 ] && return 0 # already compiled
if [ $AUTOCOMPILE -eq 0 ]; then
slog "No valid cache for $1"
return 1
fi
fi
clog " Compiling $1 ... " -n
tmpdir=`mktemp -d -p "$TEMP_PATH" cache.XXXXXXXX`
if [ $? -ne 0 ]; then
clog "Failed to create temporary directory."
return 1
fi
pushd "$tmpdir" &> /dev/null
logex $STAP -m "$1" -p4 -r $KRELEASE $opts "$f"
ret=$?
if [ $ret -eq 0 ]; then
$UNAME -a > "$1.opts"
echo $opts >> "$1.opts"
logex mv "$1.ko" "$1.opts" "$CACHE_PATH/"
ret=$?
else
slog "Failed to compile script($1)."
fi
popd &> /dev/null
rm -rf $tmpdir
[ $ret -eq 0 ] && clog "done" || clog "error"
return $ret
}
# dependency resolver
__SORTED=
__follow_dependency () { # script requesters
local opts r reqs s ret
s=$1
shift 1
r=`echo \ $*\ | grep \ $s\ `
if [ -n "$r" ]; then
might_fail $"Dependency loop detected on $s"
return 1
fi
r=`echo \ $__SORTED\ | grep \ $s\ `
[ -n "$r" ] && return 0 # already listed up
eval reqs=\$${s}_REQ
if [ -n "$reqs" ]; then
for r in $reqs; do
__follow_dependency $r $s $*
ret=$?
if [ $ret -ne 0 ]; then
return $ret # if one of requires failed, we can't run this script.
fi
done
fi
echo -n "$s "
return 0
}
sort_dependency () { # scripts
local s r=0
__SORTED=
for s in $*; do
__SORTED="$__SORTED "`__follow_dependency $s`
[ $? -ne 0 ] && return 1
done
echo $__SORTED
return 0
}
start_script () { # script
local tmpdir s=$1 ret count=0
check_running $s
ret=$?
[ $ret -eq 0 ] && return 0 # already running
if [ $ret -eq 4 ]; then
clog "$s is dead, but another script is running."
return 4
fi
compile_script $s check
ret=$?
[ $ret -ne 0 ] && return $ret
eval opts=\$${s}_OPT
opts=`get_run_opts $opts`
[ $? -ne 0 ] && return 2
clog " Starting $1 ... " -n
tmpdir=`mktemp -d -p "$TEMP_PATH" cache.XXXXXXXX` # bz7097
if [ $? -ne 0 ]; then
clog "Failed to create temporary directory."
return 1
fi
pushd "$tmpdir" &> /dev/null
eval log \"Exec: $STAPRUN $opts $CACHE_PATH/$s.ko\"
$STAPRUN $opts "$CACHE_PATH/$s.ko" 2>> "$LOG_FILE" > ./pid
ret=$?
# When the staprun '-D' option (run in background as a daemon) is
# used, staprun detaches from the terminal and *then* prints the new
# pid. So, it is possible to check the ./pid file before it has
# been written. To avoid this, wait a bit (if necessary).
while [ $count -lt 10 ]; do
# when the file exists and has a size > 0, quit
[ -s ./pid ] && break
sleep 1
count=`expr $count + 1`
done
[ x`cat ./pid` = x ] && echo 0 > ./pid
if [ $ret -eq 0 ]; then
logex cp -f ./pid "$STAT_PATH/$s"
fi
popd &> /dev/null
rm -rf "$tmpdir"
[ $ret -eq 0 ] && clog "done" || clog "error"
return $ret
}
start () {
local start_scripts s ret
clog $"Starting $prog: " -n
start_scripts=$SCRIPTS
if [ -n "$DEFAULT_START" -a -z "$OPT_SCRIPTS" ]; then
start_scripts="$DEFAULT_START"
fi
if [ -z "$start_scripts" ]; then
do_warning $"No scripts exist."
return 5 # program is not installed
fi
prepare_stat_dir
if [ $? -ne 0 ]; then
do_failure $"Failed to make stat directory ($STAT_PATH)"
return 1
fi
prepare_cache_dir
if [ $? -ne 0 ]; then
do_failure $"Failed to make cache directory ($CACHE_PATH)"
return 1
fi
if [ $RECURSIVE -eq 1 ]; then
start_scripts=`sort_dependency $start_scripts`
if [ $? -ne 0 ]; then
do_failure $"Failed to sort dependency"
return 6 # program is not configured
fi
fi
for s in $start_scripts; do
start_script "$s"
ret=$?
if [ $ret -ne 0 ]; then
might_fail $"Failed to run \"$s\". ($ret)"
fi
done
might_success $"$prog startup"
return 0
}
stop_script () { # script
local p f count=0
f="$STAT_PATH/$1"
while [ $count -lt 10 ]; do
check_running "$1"
ret=$?
# If the module is isn't running, we're done.
[ $ret -eq 3 ] && return 0
# If the module isn't loaded but the pidfile remains, remove the
# old pidfile and return.
if [ $ret -eq 1 ]; then
rm -f $f
return 0
fi
# Try to either kill the stap process that is handling the
# module (which will cause the module to be unloaded) or use
# staprun to delete the module. (Note that staprun will only
# delete systemtap modules.)
p=`get_daemon_pid $1`
if [ $p -ne 0 ]; then
logex kill -TERM $p
else
logex $STAPRUN -d "$1"
fi
[ $? -ne 0 ] && return 1
# At this point the module should be unloaded, but the pidfile
# will still be present. If so, remove the pidfile and return.
# Otherwise, wait a bit for the module to unload and try again.
check_running "$1"
ret=$?
[ $ret -eq 3 ] && return 0
if [ $ret -eq 1 ]; then
rm -f $f
return 0
fi
sleep 1
count=`expr $count + 1`
done
do_failure $"Failed to stop script \"$1\" after $count attempts"
return 1
}
stop () {
local stop_scripts s sl=
clog $"Stopping $prog: " -n
stop_scripts=$SCRIPTS
[ -z "$OPT_SCRIPTS" ] && stop_scripts=`get_all_runnings`
if [ $RECURSIVE -eq 1 ]; then
stop_scripts=`sort_dependency $stop_scripts`
if [ $? -ne 0 ]; then
do_failure $"Failed to sort dependency"
return 6 # program is not configured
fi
fi
for s in $stop_scripts; do
sl="$s $sl"
done
for s in $sl; do
stop_script $s
[ $? -ne 0 ] && might_fail $"Failed to stop \"$s\". "
done
might_success $"$prog stopping "
return 0
}
rh_status () {
local status_scripts s pid ret r
status_scripts=$SCRIPTS
[ -z "$status_scripts" ] && status_scripts=`get_all_runnings`
ret=3
if [ -z "$status_scripts" ] ; then
echo "No systemtap scripts are present"
return $ret
fi
for s in $status_scripts; do
check_running $s
r=$?
[ $ret -ne 0 ] && ret=$r
case $r in
0)
pid=`get_daemon_pid $s`
[ $pid -ne 0 ] && pid="($pid)" || pid=
echo $"$s$pid is running..." ;;
1|3) echo $"$s is stopped" ;;
4) echo $"$s is dead, but another script is running.";;
esac
done
return $ret
}
rh_status_q () {
rh_status >/dev/null 2>&1
return $?
}
compile () {
local s ss
clog $"Compiling systemtap scripts: " -n
prepare_cache_dir
if [ $? -ne 0 ]; then
do_failure $"Failed to make cache directory ($CACHE_PATH)"
return 1
fi
for s in $SCRIPTS; do
ss="$ss "`ls "$CACHE_PATH/$s.ko" "$CACHE_PATH/$s.opts" 2> /dev/null`
done
ss=`echo -n $ss`
if [ "$ss" ]; then
clog "Updating caches: $ss"
ask_yesno "Do you really want to update above caches"
[ $? -eq 0 ] && return 0
fi
for s in $SCRIPTS; do
compile_script $s nocheck
[ $? -ne 0 ] && might_fail $"$s compilation failed "
done
might_success $"$prog compiled "
return 0
}
# Cleanup caches
cleanup () {
local s ss ret
clog $"Cleaning up systemtap scripts: " -n
if [ ! -d "$CACHE_PATH" ]; then
do_success "no cache"
return 0
fi
for s in $SCRIPTS; do
ss="$ss "`ls "$CACHE_PATH/$s.ko" "$CACHE_PATH/$s.opts" 2> /dev/null`
done
ss=`echo -n $ss`
if [ "$ss" ]; then
echo "Removing caches: $ss"
ask_yesno "Do you really want to remove above caches"
[ $? -eq 0 ] && return 0
for s in $SCRIPTS; do
logex rm -f "$CACHE_PATH/$s.ko" "$CACHE_PATH/$s.opts"
[ $? -ne 0 ] && might_fail $"failed to clean cache $s.ko"
done
might_success "done"
return 0
fi
}
# Restart scripts
function restart () {
stop
echo # we need a newline
start
return $?
}
RETVAL=0
case $CMD in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart|force-reload|reload)
restart
RETVAL=$?
;;
status)
rh_status
exit $?
;;
compile)
compile
RETVAL=$?
;;
cleanup)
cleanup
RETVAL=$?
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
RETVAL=$?
;;
*)
echo_usage
RETVAL=3
;;
esac
echo
exit $RETVAL
@@ -0,0 +1,10 @@
--- ./runtime/linux/access_process_vm.h 2017-02-17 18:37:01.000000000 +0100
+++ /usr/share/systemtap/runtime/linux/access_process_vm.h 2017-08-09 11:47:50.332532411 +0200
@@ -4,6 +4,7 @@
* we copied and pasted it here. Fortunately, everything it calls is exported.
*/
#include <linux/pagemap.h>
+#include <linux/sched/mm.h>
#include <asm/cacheflush.h>
static int
@@ -0,0 +1,11 @@
--- ./runtime/stp_utrace.c 2017-02-17 18:37:01.000000000 +0100
+++ /usr/share/systemtap/runtime/stp_utrace.c 2017-08-09 11:59:21.542501780 +0200
@@ -1105,7 +1105,7 @@
*/
spin_lock_irq(&target->sighand->siglock);
if (likely(task_is_stopped(target)))
- __set_task_state(target, TASK_TRACED);
+ set_current_state(TASK_TRACED);
spin_unlock_irq(&target->sighand->siglock);
} else if (utrace->resume > UTRACE_REPORT) {
utrace->resume = UTRACE_REPORT;
+2
View File
@@ -0,0 +1,2 @@
d /run/stap-server 0755 root root
d /run/systemtap 0755 root root
+109
View File
@@ -0,0 +1,109 @@
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
<Source>
<Name>systemtap</Name>
<Homepage>http://sourceware.org/systemtap/</Homepage>
<Packager>
<Name>PisiLinux Community</Name>
<Email>admins@pisilinux.org</Email>
</Packager>
<License>GPLv2+</License>
<IsA>app:console</IsA>
<Summary>Instrumentation System</Summary>
<Description>systemtap is an instrumentation system for systems running Linux 2.6. Developers can write instrumentation to collect data on the operation of the system.</Description>
<Archive sha1sum="cd4482870015b9429f9945588ea8846d4ace20d1" type="targz">ftp://sourceware.org/pub/systemtap/releases/systemtap-3.2.tar.gz</Archive>
<BuildDependencies>
<Dependency>python-devel</Dependency>
<Dependency>sqlite-devel</Dependency>
<Dependency>readline-devel</Dependency>
<Dependency>ncurses-devel</Dependency>
<Dependency>libxml2-devel</Dependency>
<Dependency>json-c-devel</Dependency>
<Dependency>boost-devel</Dependency>
<Dependency>nss-devel</Dependency>
<Dependency>python-setuptools</Dependency>
</BuildDependencies>
<Patches>
</Patches>
</Source>
<Package>
<Name>systemtap</Name>
<RuntimeDependencies>
<Dependency>readline</Dependency>
<Dependency>sqlite</Dependency>
<Dependency>python</Dependency>
<Dependency>nspr</Dependency>
<Dependency>nss</Dependency>
<Dependency>elfutils</Dependency>
<Dependency>libgcc</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="config">/etc</Path>
<Path fileType="executable">/usr/bin</Path>
<Path fileType="library">/usr/lib</Path>
<Path fileType="man">/usr/share/man</Path>
<Path fileType="doc">/usr/share/doc</Path>
<Path fileType="data">/run/systemtap</Path>
<Path fileType="data">/run/stap-server</Path>
<Path fileType="data">/etc/logrotate.d</Path>
<Path fileType="data">/var/log/stap-server</Path>
<Path fileType="data">/var/cache/systemtap</Path>
<Path fileType="localedata">/usr/share/locale</Path>
<Path fileType="data">/usr/share/systemtap/tapset</Path>
<Path fileType="data">/usr/share/systemtap/runtime</Path>
<Path fileType="executable">/usr/libexec/systemtap</Path>
<Path fileType="config">/usr/lib/tmpfiles.d/systemtap.conf</Path>
<Path fileType="data">/usr/share/systemtap/examples</Path>
</Files>
<AdditionalFiles>
<AdditionalFile owner="root" permission="0644" target="/usr/lib/tmpfiles.d/systemtap.conf">tmpfiles.conf</AdditionalFile>
</AdditionalFiles>
<Provides>
<COMAR script="package.py">System.Package</COMAR>
</Provides>
</Package>
<Package>
<Name>systemtap-testsuite</Name>
<Summary>Testsuite allows testing of the entire SystemTap toolchain without having to rebuild from sources</Summary>
<RuntimeDependencies>
<Dependency release="current">systemtap</Dependency>
<Dependency release="current">systemtap-sdt-devel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="data">/usr/share/systemtap/testsuite</Path>
</Files>
</Package>
<Package>
<Name>systemtap-sdt-devel</Name>
<Summary>Static probe support tools</Summary>
<RuntimeDependencies>
<Dependency release="current">systemtap</Dependency>
<Dependency>python-devel</Dependency>
<Dependency>sqlite-devel</Dependency>
<Dependency>readline-devel</Dependency>
<Dependency>ncurses-devel</Dependency>
<Dependency>libxml2-devel</Dependency>
<Dependency>json-c-devel</Dependency>
<Dependency>boost-devel</Dependency>
<Dependency>nss-devel</Dependency>
</RuntimeDependencies>
<Files>
<Path fileType="executable">/usr/bin/dtrace</Path>
<Path fileType="header">/usr/include</Path>
</Files>
</Package>
<History>
<Update release="1">
<Date>2017-11-24</Date>
<Version>3.2</Version>
<Comment>First release</Comment>
<Name>Osman Erkan</Name>
<Email>osman.erkan@pisilinux.org</Email>
</Update>
</History>
</PISI>
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0" ?>
<PISI>
<Source>
<Name>systemtap</Name>
<Summary xml:lang="tr">Enstrümantasyon sistemi</Summary>
<Description xml:lang="tr">systemtap Linux 2.6 üzerinde çalışan sistemler için tasarlanmış bir enstrümantasyon altyapısıdır. Geliştiriciler, systemtap kullanarak, çalışmakta olan işletim sistemiyle ilgili veri toplamak için özel araçlar yazabilirler.</Description>
</Source>
<Package>
<Name>systemtap-sdt-devel</Name>
<Summary xml:lang="tr">systemtap için statik deney desteği araçları</Summary>
</Package>
<Package>
<Name>systemtap-devel</Name>
<Summary xml:lang="tr">systemtap için geliştirme dosyaları</Summary>
</Package>
</PISI>