blob: 2b9873b787ec42005cec79a78d5b499c8b119157 (
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
122
123
124
125
126
127
128
129
130
131
|
#!/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."$i" 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 ;
# convert tags
perl -p -i -e 's|</[^>]*>([^.])|$1\n|g' $i.5 ;
perl -p -i -e 's|<[^>]*>|\n.B |g' $i.5 ;
cat $i.5 |
perl -p -e 'undef $/;s|\.B Arguments:\n\n\.B |.B|msg' |
# for tagged commands followed by periods
perl -p -e 'undef $/;s|\n\.B \.|.\n|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;
# cleanup remaining excess whitespace
perl -p -i -e 's|\t\t| |g' stapprobes.$i.5.in;
perl -p -i -e 's|^ ||g' stapprobes.$i.5.in;
sed -i -e 's/ / /g' stapprobes.$i.5.in;
done
# file cleanup
rm `ls | grep -v stapprobes`
#mv workingdir final_manpages
# 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 ;
|