blob: 16ee441f8d4c23e2d40c228d0385aa35fa72ddbc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
#!/bin/bash
# This script builds the man pages from comments in tapsets. As such, the man page content
# generated herein should be in sync with Tapset Reference Guide
# cleanup
rm -rf workingdir
# create working directory
mkdir workingdir ;
# create list of man pages to generate; should be in sync with Tapset Reference Guide
cat ../SystemTap_Tapset_Reference/tapsets.tmpl | grep ^\!Itapset > manpageus ;
sed -i -e 's/\!Itapset\///g' manpageus ;
# copy list of man pages into working directory
for i in `cat manpageus` ; do cp ../../tapset/$i workingdir ; done ;
# enter workdir
cd workingdir ;
# copy tapsetdescriptions, then clean
for i in `cat ../manpageus`; do
sed -n '/\/\/ <tapsetdescription>/,/\/\/ <\/tapsetdescription>/ s/.*/&/w temp' < $i ;
mv temp $i.tapsetdescription ;
sed -i -e 's/\/\/ <tapsetdescription>//g' $i.tapsetdescription ;
sed -i -e 's/\/\/ <\/tapsetdescription>//g' $i.tapsetdescription ;
sed -i -e 's/\/\///g' $i.tapsetdescription ;
done
# strip all tapset files to just comments; but all comments must be exactly 1 space before and after "*"
for i in `cat ../manpageus` ; do sed -i -e 's/^ \*/ \*/g' $i;
sed -i -e 's/^ \* / \* /g' $i;
# mark the start of each probe entry (sub "/**")
perl -p -i -e 's|^/\*\*| *probestart|g' $i;
sed -i -e '/^ \*/!d' $i;
# rename all tapsets (remove .stp filename suffix), create templates
echo $i > tempname ;
sed -i -e 's/.stp//g' tempname ;
mv $i `cat tempname` ; mv tempname $i ;
done ;
# clean all tapsetdescriptions (remove excess spaces)
# for i in `ls | grep tapsetdescription` ; do perl -p -i -e 's|^\n||g' $i ; done ;
# create man page headers
for i in `ls | grep -v .stp | grep -v tapsetdescription` ; do
#echo ".\" -*- nroff -*-" >> $i.template ;
echo ".TH STAPPROBES.manpagename 5 @DATE@ "IBM"" >> $i.template ;
echo ".SH NAME" >> $i.template ;
echo "stapprobes."`cat $i.stp`" \- systemtap "`cat $i.stp`" probe points" >> $i.template ;
echo " " >> $i.template ;
echo ".SH DESCRIPTION" >> $i.template ;
cat $i.stp.tapsetdescription >> $i.template ;
echo " " >> $i.template ;
#echo " " >> $i.template ;
echo ".SH PROBES" >> $i.template ;
echo ".br" >> $i.template ;
echo ".P" >> $i.template ;
echo ".TP" >> $i.template ;
done
# MOST IMPORTANT: clean man page body!
for i in `ls | grep -v .stp | grep -v tapsetdescription | grep -v template` ;
do cp $i $i.tmp ;
perl -p -i -e 's| \* sfunction|.BR|g' $i.tmp ;
perl -p -i -e 's| \* probe|.BR|g' $i.tmp ;
perl -p -i -e 's| -|\ninitlinehere|g' $i.tmp ;
perl -p -i -e 's|^initlinehere([^\n]*)\n|\n.br\n$1\n\n.B Arguments:|g' $i.tmp ;
perl -p -i -e 's| \* @([^:]*):|\n.I $1\n.br\n|g' $i.tmp ;
perl -p -i -e 's| \* ([^:]*):|\n.BR $1:\n.br\n|g' $i.tmp ;
perl -p -i -e 's|\*probestart|\n.P\n.TP|g' $i.tmp ;
perl -p -i -e 's|\.I|\n\n.I|g' $i.tmp ;
# special formatting for Arguments header
perl -p -i -e 's|.B Arguments: \*\/||g' $i.tmp ;
perl -p -i -e 's|.B Arguments: \*|.B Description:|g' $i.tmp ;
cat $i.tmp |
perl -p -e 'undef $/;s|.B Arguments:\n.B|.B|msg' |
perl -p -e 'undef $/;s|\n\n\n|\n\n|msg' > $i.manpagebody ;
done
# generate footer template
mv ../manpageus .
sed -i -e 's/.stp//g' manpageus
echo ".SH SEE ALSO" >> footer
echo ".IR stap (1)," >> footer
echo ".IR stapprobes (5)," >> footer
for i in `cat manpageus`; do echo ".IR stapprobes."$i" (5)," >> footer ; done
# assemble parts
for i in `cat manpageus`; do
cat $i.template >> $i.5 ;
cat $i.manpagebody >> $i.5 ;
cat footer >> $i.5 ;
done
# cleanup
for i in `cat manpageus`; do
# context.stp
perl -p -i -e 's|.B Description:/|\n.P\n.TP|g' $i.5 ;
perl -p -i -e 's|.B Description:|.B Description:\n\n |g' $i.5 ;
cat $i.5 | perl -p -e 'undef $/;s|\.B Arguments:\n\n\.B |.B|msg' |
perl -p -e 'undef $/;s|\n \* ||msg' > stapprobes.$i.5.in ;
# cleanup all remaining stars, excess initial whitespace, and trailing "/" per line
perl -p -i -e 's|^ \*||g' stapprobes.$i.5.in;
perl -p -i -e 's|^ ||g' stapprobes.$i.5.in;
perl -p -i -e 's|^/||g' stapprobes.$i.5.in;
done
# file cleanup
rm `ls | grep -v stapprobes`
# perl -p -i -e 's|||g' stapprobes.$i.5.in ;
# perl -p -i -e 's|||g' $i.manpagebody
# use to move marked strings.
# sed -n '/\/\/ <tapsetdescription>/,/\/\/ <\/tapsetdescription>/ s/.*/&/w bleh' < ioscheduler
# remove excess initial whitespace for each line
# perl -p -i -e 's|^ ||g' stapprobes.$i.5.in;
# convert tags
# perl -p -i -e 's|</[^>]*>|\n|g' stapprobes.$i.5.in ;
# perl -p -i -e 's|<[^>]*>|\n.B |g' stapprobes.$i.5.in ;
|