diff options
author | Dave Brolley <brolley@redhat.com> | 2009-10-29 11:22:40 -0400 |
---|---|---|
committer | Dave Brolley <brolley@redhat.com> | 2009-10-29 11:22:40 -0400 |
commit | e2a741bebb16b0ce2f83f5d1e30383604436cdb5 (patch) | |
tree | 456d0ec0002faae14f0da43814c22f692b28d311 | |
parent | 91d8cf1431e3c2a4cfd125a3ebe93a8a0ddd4bb3 (diff) | |
download | systemtap-steved-e2a741bebb16b0ce2f83f5d1e30383604436cdb5.tar.gz systemtap-steved-e2a741bebb16b0ce2f83f5d1e30383604436cdb5.tar.xz systemtap-steved-e2a741bebb16b0ce2f83f5d1e30383604436cdb5.zip |
stap-server initscript cleanup and follow fedora initscript requirements.
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | initscript/README.stap-server (renamed from initscript/README.initscript) | 0 | ||||
-rw-r--r-- | initscript/README.systemtap | 355 | ||||
-rw-r--r-- | initscript/config.stap-server | 6 | ||||
-rw-r--r-- | initscript/config.systemtap (renamed from initscript/config) | 0 | ||||
-rw-r--r-- | initscript/stap-server.in | 212 | ||||
-rw-r--r-- | systemtap.spec | 56 |
7 files changed, 519 insertions, 112 deletions
@@ -380,7 +380,7 @@ - Systemtap initscript is available. This initscript allows you to run systemtap scripts as system services (in flight recorder mode) and control those scripts individually. - See README.initscript for details. + See README.systemtap for details. - The stap "-r DIR" option may be used to identify a hand-made kernel build directory. The tool determines the appropriate release string diff --git a/initscript/README.initscript b/initscript/README.stap-server index c7bb4888..c7bb4888 100644 --- a/initscript/README.initscript +++ b/initscript/README.stap-server diff --git a/initscript/README.systemtap b/initscript/README.systemtap new file mode 100644 index 00000000..5c6cac15 --- /dev/null +++ b/initscript/README.systemtap @@ -0,0 +1,355 @@ +Systemtap initscript +Version 0.2.1 +Author: Masami Hiramatsu <mhiramat@redhat.com> + +INDEX +===== +1. Introduction +2. Usage +3. Files +4. Configuration Format +5. How to use + +1. Introduction +=============== +Systemtap initscript aims to provide +- running systemtap script as a service with dependency. +- easy way to control(start/stop) those scripts individually. +The dependency means that which user-defined systemtap script is required by +other script (Here the scripts don't include tapsets). This dependency +will be useful for users who use -DRELAY_HOST and -DRELAY_GUEST. + +2. Usage +======== +2.1 Synopsis + +/sbin/service systemtap {start|stop|restart|status|compile|cleanup} \ + [-r kernelrelease] [-c config] [-R] [-y] [script(s)] + +2.2 Commands + You have to specify one of the below commands. + +2.2.1 start + Run script(s). If the script(s) is already started, the command will be + ignored. If it fails to start, return FAIL. If AUTOCOMPILE option is 'yes' + (see 4.1.9), this will try to compile or update the specified script when + one of the below condition is true. + - compiled cache file does not exist. + - mtime (modified time stamp) of original script file is newer than compiled + script cache. + - script options which is used when compiling(see 4.2.1) has been changed. + - result of `uname -a` has been changed. + If no scripts specified from command line, it starts all scripts in the script + directory or the scripts specified by DEFAULT_START in config (see 4.1.10). + +2.2.2 stop + Stop script(s). If the script(s) is already stopped, this will be ignored. + If it fails to stop, return FAIL. + If no scripts specified from command line, it stops all running scripts. + +2.2.3 restart + Stop and start script(s) again. + +2.2.4 status + Show running script(s) status and dependency. + +2.2.5 compile + Compile script(s) on the specified kernel. This command takes '-r' option + which specifies the release of the kernel(see 2.3.4) on which you would + like to compile script(s). This command asks user whether it can overwrite +existing caches. + +2.2.6 cleanup + Cleanup compiled script(s) from cache directory(see 3.4). This command also + takes '-r' option. If '-r' option is omitted, cleanup all caches for running + kernel. This command asks user whether it can remove caches. + +2.3 Options + Systemtap initscript can have some options. However, since user can't pass + these options on boot, these options are only for testing or managing scripts + after booting. + +2.3.1 -c config_path + You can specify configuration path of this initscript. + +2.3.2 script(s) + You can specify individual scripts to the commands. If you omit to specify + any script, systemtap initscript will execute the command with all scripts + in the script directory(except 'start' and 'stop' command, see 2.2.1 and + 2.2.2). + +2.3.3 -R + If this option is specified, systemtap initscript will try to solve + dependency of specified script(s). This option is always set if you don't + specify any script(s) from command line. + +2.3.4 -r kernelrelease + You can specify release version of the kernel(e.g. 2.6.26.1). This option + is valid only with compile and cleanup commands. + +2.3.5 -y + Answer yes for all questions. + +2.4 Misc +2.4.1 Service Priority + Each initscript has execution priority. Since user would like to trace + other services by using systemtap, systemtap initscript should have the + highest priority. + +3. Files +======== +3.1 initscript + /etc/init.d/systemtap + + This file is an executable bash script. + +3.2 Configurations + Configuration files are written in bash script. + +3.2.1 Global config file + /etc/systemtap/config + + This config file is for global parameters(see 4.1). + +3.2.2 Script config files + /etc/systemtap/conf.d/*.conf + + The config files under this directory are for each scripts or script groups + (see 4.2). + +3.3 Script directory + /etc/systemtap/script.d/ + + Systemtap initscript finds systemtap scripts from this directory. + +3.3.1 Scripts in the directory + /etc/systemtap/script.d/<script-name>.stp + + Systemtap scripts stored in the script directory must have ".stp" suffix. + +3.4 Cache directory + /var/cache/systemtap/<kernel-version>/ + + Systemtap initscript stores compiled scripts in this directory. + +3.4.1 Compiled scripts (or script caches) + /var/cache/systemtap/<kernel-version>/<script-name>.ko + /var/cache/systemtap/<kernel-version>/<script-name>.opts + + *.ko file is the compiled script, and *.opts is the file which stores + stap options and uname -a. + +3.5 Message Log + /var/log/systemtap.log + + All messages including compilation errors and detailed messages are sent + to this file. + Some error and warning messages are also sent to console and syslogd (syslog + output is optional, because this service will start before syslog). + +3.7 Status files + /var/run/systemtap/<script-name> + + +4. Configuration Format +======================= +Configuration file allows us +- specifying options for each script +- supporting flight recorder mode (on file or memory) + +4.1 Global Parameters + +4.1.1 SCRIPT_PATH + Specify the absolute path of the script directory. + (default: /etc/systemtap/script.d) + +4.1.2 CONFIG_PATH + Specify the absolute path of the script config directory. + (default: /etc/systemtap/conf.d) + +4.1.3 CACHE_PATH + Specify the absolute path of the parent directory of the cache directory. + (default: /var/cache/systemtap) + +4.1.4 TEMP_PATH + Specify the absolute path of the temporary directory on which systemtap + initscript make temporary directories to compile scripts. + (default: /tmp) + +4.1.5 STAT_PATH + Specify the absolute path of the running status directory. + (default: /var/run/systemtap) + +4.1.6 LOG_FILE + Specify the absolute path of the log file + (default: /var/log/systemtap.log) + +4.1.7 PASSALL + If this is set 'yes', systemtap initscript will fail when it fails + to run one of the scripts. If not, systemtap initscript will not + fail(just warn). + (default: yes) + +4.1.8 RECURSIVE + If this is set 'yes', systemtap initscript will always follow script + dependencies. This means, you don't need to specify '-R' option. This flag is + effective only if you specify script(s) from command line. + (default: no) + +4.1.9 AUTOCOMPILE + If this is set 'yes', systemtap initscript automatically tries to compile + specified script if there is no valid cache. Otherwides, it just fails to + run script(s). + (default: yes) + +4.1.10 DEFAULT_START + Specify scripts which will be started by default. If omitted (or empty), + all scripts in the script directory will be started. + (default: "") + +4.1.11 ALLOW_CACHEONLY + If this is set 'yes', systemtap initscript list up cache-only scripts too. + *NOTE*: systemtap initscript will load unexpected obsolete caches with this + option. You should check cache directory before enabling this option. + (default: no) + +4.2 Script Parameters + +4.2.1 <script-name>_OPT + Specify options passed to stap command for each script. "script-name" is the + name of the script file without the suffix extension(.stp). + Some options are just ignored. And even if you don't specify -F option, + systemtap initscript always add it for flight recorder mode. + - Below options are ignored when compiling script. + -p,-m,-r,-c,-x,-e,-s,-o,-h,-V,-k + - Below options are ignored when starting script. + -h,-V,-v,-t,-p,-I,-e,-R,-r,-m,-k,-g,-P,-D,-b,-u,-q,-w,-l,-d,-L,-F, and + other long options. + +4.2.2 <script-name>_REQ + Specify script dependency(which script this script requires). + For example, "foo.stp" script requires(or run after) "bar.stp" script, set + + foo_REQ="bar" + + If the script requires many scripts, set all scripts separated by spaces. + + foo_REQ="bar baz" + +4.3 Configuration Example + +4.3.1 Global Config Example +--- +SCRIPT_PATH=/var/systemtap/script.d/ +PASSALL=yes +RECURSIVE=no +--- + +4.3.2 Script Config Example +--- +script1_OPT="-o /var/log/script1.out -DRELAYHOST=group1" +script2_OPT="-DRELAYGUEST=group1" +script2_REQ=script1 +--- + +5. How to use +============= + +5.1 Package Installation + After installing systemtap package, install systemtap-initscript package. + # yum install systemtap-initscript + This package will include initscript and default configuration file and + other files. + +5.2 Script installation +5.2.1 Installing script files + Copy a systemtap script ("script1.stp") into script directory. + # cp script1.stp /etc/systemtap/script.d/ + +5.2.2 Configuration script options + Add configuration file to specify options. + # vi /etc/systemtap/conf.d/group1 + script1_OPT="-o /var/log/group1.log -DRELAYHOST=group1" + +5.2.3 Installing script file with dependency + For example, a script("script2.stp") which shares buffer with another + script("script1.stp"), there is a dependency. In this case, you just do + as following. + + # cp script2.stp /etc/systemtap/script.d/ + # vi /etc/systemtap/conf.d/group1 + script2_OPT="-DRELAYGUEST=group1" + script2_REQ=script1 + + In this case, if stap fails to run script1.stp, systemtap initscript will + not run script2.stp. + +5.3 Testing + After installing all scripts, please make sure to run service successfully. + # service systemtap start + # service systemtap stop + If there is no error, we are ready to use it. + +5.4 Service Enabling + After all test passed, enable systemtap initscript. + # chkconfig systemtap on + +5.5 Adding script +5.5.1 Installing and configuring new scripts + Copy new systemtap script("script3.stp") into script directory. + # cp script3.stp /etc/systemtap/script.d/ + and configure it. + # vi /etc/systemtap/conf.d/group1 + script3_OPT="-DRELAYGUEST=group1" + script3_REQ="script1" + +5.5.2 Start new script + If you've already started systemtap initscript, just start new script. + # service systemtap start script3 + +5.6 Deleting script +5.6.1 Deleting old script + Remove old script ("script2.stp") and remove configure lines + # rm /etc/systemtap/script.d/script2.stp + # vi /etc/systemtap/conf.d/group1 + (delete script2_OPT and script2_REQ) + +5.6.2 Stopping old script and cleanup + Stop old script. + # service systemtap stop script2 + And cleanup the script caches. + # service systemtap cleanup script2 + +5.7 Updating kernel + Usually, you don't need to do anything. Systemtap initscript checks the + kernel version when starting the service, and compile scripts. + (If you would like to use compiled scripts due to lack of compiler or + debuginfo on the system, see 5.8) + However, if you want to avoid compiling when booting system, you can prepare + script caches for new kernel. + # service systemtap compile -r <new kernel version> + +5.8 Using with compiled scripts + Sometimes, production systems don't have any compilation environment. Even + though, you can use systemtap initscript with compiled scripts as script + caches, which are compiled on other machine (but same software environment). + +5.8.1 Preparing compiled scripts + As described in 5.2, installing scripts and configure it on the compiling + machine (which has compilation environment). + After that, compile those scripts. + # service systemtap compile -r <kernel-version> + And package the compiled scripts and configuration file. + # tar czf stap-scripts-<kernel-version>.tar.gz \ + /var/cache/systemtap/<kernel-version> /etc/systemtap/conf.d/<config> + And copy this package to the target machine. + +5.8.2 Installing pre-compiled scripts + On the target machine, unpackage the compiled scripts into cache + directory. + # tar xzf stap-scripts-<kernel-version>.tar.gz -C /var/cache/systemtap/ + # mv /var/cache/systemtap/<config> /etc/systemtap/conf.d/ + At last, set AUTOCOMPILE=no and ALLOW_CACHEONLY=yes in config file. + # vi /etc/systemtap/config + AUTOCOMPILE=no + ALLOW_CACHEONLY=yes diff --git a/initscript/config.stap-server b/initscript/config.stap-server new file mode 100644 index 00000000..baadbf28 --- /dev/null +++ b/initscript/config.stap-server @@ -0,0 +1,6 @@ +# Path setup +# CONFIG_PATH=/etc/stap-server/conf.d +# STAT_PATH=/var/run/stap-server +# TEMP_PATH=/tmp +# LOG_FILE=/var/log/stap-server.log +# STAP_USER=stap-server
\ No newline at end of file diff --git a/initscript/config b/initscript/config.systemtap index c49a34a5..c49a34a5 100644 --- a/initscript/config +++ b/initscript/config.systemtap diff --git a/initscript/stap-server.in b/initscript/stap-server.in index 72059130..8522ca1b 100644 --- a/initscript/stap-server.in +++ b/initscript/stap-server.in @@ -5,15 +5,8 @@ # chkconfig: - 00 99 # description: The systemtap compile server provides a centralized and secure \ # environment for compiling systemtap scripts. -# config: /etc/stap-server/config +# config: /etc/sysconfig/stap-server # config: /etc/stap-server/conf.d -### BEGIN INIT INFO -# Provides: Systemtap compile server management -# Required-Start: $local_fs -# Required-Stop: $local_fs -# Short-Description: Manage systemtap compile servers -# Description: The systemtap compile server provides a centralized and secure environment for compiling systemtap scripts. -### END INIT INFO BINDIR=@bindir@ @@ -31,6 +24,7 @@ STAP_STOP_SERVER=$BINDIR/stap-stop-server UNAME=/bin/uname # Path setup +CONFIG_FILE=/etc/sysconfig/stap-server CONFIG_PATH=/etc/stap-server/conf.d STAT_PATH=/var/run/stap-server TEMP_PATH=/tmp @@ -44,16 +38,16 @@ STAP_USER=stap-server OPT_KERNEL_ARCH=`stap_get_arch` # A list of release_arch pairs OPT_SERVER_LIST= - -CONFIG=/etc/stap-server/config +# Optional global config file +OPT_CONFIG_FILE= echo_usage () { echo $"Usage: $prog {start|stop|restart|status} [option]" echo $"Options:" - echo $" -a arch : change the target architecture" echo $" -c configfile : specify config file" - echo $" -i : specify all installed kernel releases" + echo $" -a arch : change the target architecture" echo $" -r release : specify a kernel release" + echo $" -i : specify all installed kernel releases" echo $"" echo $"All options, except -c may be specified more than once." echo $"" @@ -70,7 +64,8 @@ echo_usage () { echo $"" echo $"If no kernel release is specified, the defaults are as follows:" echo $"" - echo $" start: start a server for the kernel release of the host platform." + echo $" start: start a server for the kernel release and architecture of" + echo $" the host platform." echo $" stop: stop all servers." echo $" restart: restart all servers." echo $" status: report the status of all servers." @@ -96,10 +91,6 @@ logex () { # command "$@" >> "$LOG_FILE" 2>&1 return $? } -do_warning () { # message - slog "Warning: $1" - warning "$1" -} do_failure () { # message slog "Error: $1" failure "$1" @@ -108,28 +99,6 @@ 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 - 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 @@ -139,11 +108,11 @@ parse_args () { # arguments while [ -n "$1" ]; do case "$1" in -a) - process_a $2 + OPT_KERNEL_ARCH=$2 shift 1 ;; -c) - CONFIG=$2 + OPT_CONFIG_FILE=$2 shift 1 ;; -i) @@ -164,14 +133,10 @@ parse_args () { # arguments done test error = 1 && echo_usage && return 1 + test [ -z "$OPT_SERVER_LIST" ] && OPT_SERVER_LIST=`default_server_list` return 0 } -# Process the -a flag. -process_a () { - OPT_KERNEL_ARCH=$1 -} - # Process the -i flag. process_i () { local save_arch=$OPT_KERNEL_ARCH @@ -210,36 +175,6 @@ process_r () { return 0 } -CMD=$1 -shift 1 -OPTS=`getopt -s bash -u -o 'a:c:ir:' -- $@` -if [ $? -ne 0 ]; then - slog "Error: Argument parse error: $@" - failure $"parse error" - echo_usage - exit 3 -fi -parse_args $OPTS || exit 3 - -# Include configs -if [ -f "$CONFIG" ]; then - . "$CONFIG" -fi - -for f in "$CONFIG_PATH"/*.conf; do - if [ -f "$f" ]; then - . "$f" - fi -done - -prepare_stat_dir () { - if [ ! -d "$STAT_PATH" ]; then - logex mkdir -p "$STAT_PATH" - [ $? -ne 0 ] && return 1 - fi - return 0 -} - # Default to the currently running kernel release get_release () { # server-spec if [ -z "$1" ]; then @@ -254,20 +189,49 @@ get_arch () { # server-spec if [ -z "$1" ]; then stap_get_arch else - expr "$spec" : '.*_\(.*\)' + expr "$1" : '.*_\(.*\)' + fi +} + +load_config () { + # Include configs + if [ -f "$CONFIG_FILE" ]; then + . "$CONFIG_FILE" + fi + if [ -f "$OPT_CONFIG_FILE" ]; then + . "$OPT_CONFIG_FILE" + fi + + CONFIG_OPTS= + for f in "$CONFIG_PATH"/*.conf; do + if [ -f "$f" ]; then + # Obtain an architecture and release from each config file. + # Ensure that we get the default architecture and release if they + # are not specified. + ARCH= + RELEASE= + . "$f" + [ -z "$ARCH" ] && ARCH=`get_arch` + [ -z "$RELEASE" ] && RELEASE=`get_release` + CONFIG_OPTS="$CONFIG_OPTS -a $ARCH -r $RELEASE" fi + done +} + +prepare_stat_dir () { + if [ ! -d "$STAT_PATH" ]; then + logex mkdir -p "$STAT_PATH" + [ $? -ne 0 ] && return 1 + fi + return 0 } stat_file () { # server-spec echo $STAT_PATH/$1 } -get_server_list () { - if [ -z "$OPT_SERVER_LIST" ]; then - echo "`get_release`_`get_arch`" - return 0 - fi - echo "$OPT_SERVER_LIST" +default_server_list () { + echo "`get_release`_`get_arch`" } check_server_running () { # server-spec @@ -293,7 +257,7 @@ managed_servers () { echo "$list" } -start () { # release arch +start () { prepare_stat_dir if [ $? -ne 0 ]; then do_failure $"Failed to make stat directory ($STAT_PATH)" @@ -301,10 +265,9 @@ start () { # release arch fi # Start each requested server in turn - local server_list=`get_server_list` local spec local first=1 - for spec in $server_list; do + for spec in $OPT_SERVER_LIST; do local release=`get_release $spec` local arch=`get_arch $spec` @@ -353,8 +316,8 @@ stop () { first=0 clog $"Stopping $prog for $release_arch: " -n + local server_status_file=`stat_file $server_status` if check_server_running $server_status; then - local server_status_file=`stat_file $server_status` local pid=`cat $server_status_file` runuser -s /bin/bash - $STAP_USER -c "$STAP_STOP_SERVER $pid" fi @@ -368,17 +331,17 @@ stop () { status () { local server_list + local rc=0 # Report status for the specified servers or all servers, if none specified. if [ -n "$OPT_SERVER_LIST" ]; then server_list="$OPT_SERVER_LIST" else server_list=`managed_servers` - fi - - if [ -z "$server_list" ]; then - echo "No managed stap-server is running" - return 0 + if [ -z "$server_list" ]; then + echo "No managed stap-server is running" + return 3 + fi fi local server_status @@ -387,6 +350,7 @@ status () { local server_status_file=`stat_file $server_status` if [ ! -f $server_status_file ]; then echo "stap-server for $release_arch is not running" + rc=3 else local pid=`cat $server_status_file` if check_server_running $server_status; then @@ -394,13 +358,15 @@ status () { else echo "stap-server for $release_arch started as PID $pid is no longer running" rm -f $server_status_file + rc=1 fi fi done - return 0 + + return $rc } -# Restart scripts +# Restart or start if not running function restart () { local server_list @@ -411,41 +377,93 @@ function restart () { server_list=`managed_servers` fi + OPT_SERVER_LIST=$server_list + stop + echo + start + return $? +} + +# Restart only if running +function condrestart () { + local server_list + + # Restart the specified servers or all servers, if none specified, + # But only if they are already running. + if [ -n "$OPT_SERVER_LIST" ]; then + server_list="$OPT_SERVER_LIST" + else + server_list=`managed_servers` + fi + if [ -z "$server_list" ]; then clog "No managed stap-server is running" -n do_success "No managed stap-server is running" return 0 fi + OPT_SERVER_LIST=$server_list stop echo - OPT_SERVER_LIST=$server_list start return $? } +#------------------------------------------------------------------ +# Mainline script +#------------------------------------------------------------------ +load_config +CMD=$1 +shift 1 +OPTS=`getopt -s bash -u -o 'a:c:ir:' -- $CONFIG_OPTS $@` +if [ $? -ne 0 ]; then + slog "Error: Argument parse error: $@" + failure $"parse error" + echo_usage + exit 2 +fi + RETVAL=0 case $CMD in start) + parse_args $OPTS || exit 2 + parse_args $CONFIG_OPTS || exit 2 start RETVAL=$? ;; stop) + parse_args $OPTS || exit 2 stop RETVAL=$? ;; restart) + parse_args $OPTS || exit 2 restart RETVAL=$? ;; + condrestart|try-restart) + parse_args $OPTS || exit 2 + condrestart + RETVAL=$? + ;; status) + parse_args $OPTS || exit 2 status exit $? ;; - *) + reload) + RETVAL=0 + ;; + force-reload) + stop + load_config + start + RETVAL=$? + ;; + usage|*) echo_usage - RETVAL=3 + RETVAL=0 ;; esac diff --git a/systemtap.spec b/systemtap.spec index 860fe283..1c520f2e 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -121,9 +121,13 @@ Summary: Instrumentation System Server Group: Development/System License: GPLv2+ URL: http://sourceware.org/systemtap/ -Requires: systemtap initscripts +Requires: systemtap Requires: avahi avahi-tools nss nss-tools mktemp Requires: zip unzip +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts %description server This is the remote script compilation server component of systemtap. @@ -144,7 +148,11 @@ Summary: Systemtap Initscripts Group: Development/System License: GPLv2+ URL: http://sourceware.org/systemtap/ -Requires: systemtap-runtime, initscripts +Requires: systemtap-runtime +Requires(post): chkconfig +Requires(preun): chkconfig +Requires(preun): initscripts +Requires(postun): initscripts %description initscript Initscript for Systemtap scripts @@ -268,18 +276,19 @@ mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/*.pdf docs.installed/ mv $RPM_BUILD_ROOT%{_datadir}/doc/systemtap/tapsets docs.installed/ %endif -mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ -install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ +install -m 755 initscript/systemtap $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/conf.d mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/script.d -install -m 644 initscript/config $RPM_BUILD_ROOT%{_sysconfdir}/systemtap +install -m 644 initscript/config.systemtap $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/config mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/systemtap mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/run/systemtap -install -m 755 initscript/stap-server $RPM_BUILD_ROOT%{_sysconfdir}/init.d/ +install -m 755 initscript/stap-server $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d/ mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/stap-server mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/stap-server/conf.d +install -m 644 initscript/config.stap-server $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/stap-server mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/log touch $RPM_BUILD_ROOT%{_localstatedir}/log/stap-server.log @@ -300,19 +309,37 @@ exit 0 chmod 664 %{_localstatedir}/log/stap-server.log chown stap-server %{_localstatedir}/log/stap-server.log chgrp stap-server %{_localstatedir}/log/stap-server.log -chkconfig --add stap-server +/sbin/chkconfig --add stap-server exit 0 %preun server -chkconfig --del stap-server +if [ $1 = 0 ] ; then + /sbin/service stap-server stop >/dev/null 2>&1 + /sbin/chkconfig --del stap-server +fi +exit 0 + +%postun server +if [ "$1" -ge "1" ] ; then + /sbin/service stap-server condrestart >/dev/null 2>&1 || : +fi exit 0 %post initscript -chkconfig --add systemtap +/sbin/chkconfig --add systemtap exit 0 %preun initscript -chkconfig --del systemtap +if [ $1 = 0 ] ; then + /sbin/service systemtap stop >/dev/null 2>&1 + /sbin/chkconfig --del systemtap +fi +exit 0 + +%postun initscript +if [ "$1" -ge "1" ] ; then + /sbin/service systemtap condrestart >/dev/null 2>&1 || : +fi exit 0 %post @@ -395,11 +422,12 @@ exit 0 %{_bindir}/stap-server-connect %{_bindir}/stap-sign-module %{_mandir}/man8/stap-server.8* -%{_sysconfdir}/init.d/stap-server +%{_sysconfdir}/init.d/rc.d/stap-server %dir %{_sysconfdir}/stap-server %dir %{_sysconfdir}/stap-server/conf.d +%config(noreplace) %{_sysconfdir}/stap-server/config %{_localstatedir}/log/stap-server.log -%doc initscript/README.initscript +%doc initscript/README.stap-server %files sdt-devel %defattr(-,root,root) @@ -408,14 +436,14 @@ exit 0 %files initscript %defattr(-,root,root) -%{_sysconfdir}/init.d/systemtap +%{_sysconfdir}/rc.d/init.d/systemtap %dir %{_sysconfdir}/systemtap %dir %{_sysconfdir}/systemtap/conf.d %dir %{_sysconfdir}/systemtap/script.d %config(noreplace) %{_sysconfdir}/systemtap/config %dir %{_localstatedir}/cache/systemtap %dir %{_localstatedir}/run/systemtap -%doc initscript/README.initscript +%doc initscript/README.systemtap %if %{with_grapher} %files grapher |