From: Marcin Krol Date: Wed, 8 Jul 2015 15:13:20 +0000 (+0000) Subject: - merged 2.7 from PLD, doc still broken X-Git-Url: https://git.tld-linux.org/?p=packages%2Fsystemtap.git;a=commitdiff_plain;h=9cfd18ecf3157a4962ca43b844e1e192b09e74cc - merged 2.7 from PLD, doc still broken --- diff --git a/systemtap-dtrace-flexibility.patch b/systemtap-dtrace-flexibility.patch deleted file mode 100644 index 6cf9db0..0000000 --- a/systemtap-dtrace-flexibility.patch +++ /dev/null @@ -1,383 +0,0 @@ -From c486eff3f809b5ce544d5a032198e7680f2b7f2b Mon Sep 17 00:00:00 2001 -From: Stan Cox -Date: Tue, 9 Sep 2014 15:07:44 -0400 -Subject: [PATCH 1/3] Add -fpic -fPIC to the list of accepted but ignored - dtrace options. - -* dtrace.in (main): Add ignore_options. ---- - dtrace.in | 4 +++- - testsuite/systemtap.base/dtrace.exp | 8 ++++---- - 2 files changed, 7 insertions(+), 5 deletions(-) - -diff --git a/dtrace.in b/dtrace.in -index d5f189d4fc9e..2f9fb6307e28 100644 ---- a/dtrace.in -+++ b/dtrace.in -@@ -305,6 +305,8 @@ def main(): - s_filename = "" - includes = [] - defines = [] -+ ignore_options = ["-64", "-32", "-fpic", "-fPIC"] -+ - while i < len(sys.argv): - if sys.argv[i] == "-o": - i += 1 -@@ -330,7 +332,7 @@ def main(): - HAVE_PYP = False - elif sys.argv[i] == "--types": - print sys.argv[0] + ": note: obsolete option --types used" -- elif sys.argv[i] == "-64" or sys.argv[i] == "-32": -+ elif sys.argv[i] in ignore_options: - pass # dtrace users sometimes pass these flags - elif sys.argv[i] == "--help": - dtrace_help() -diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp -index 252dad90ede5..e029748100d6 100644 ---- a/testsuite/systemtap.base/dtrace.exp -+++ b/testsuite/systemtap.base/dtrace.exp -@@ -53,12 +53,12 @@ set incpath "/tmp/dtrace_inc" - # ----------------------------------------------------------------- - # test command line option and file handling - --verbose -log "$dtrace -G -s $dpath -o XXX.o" --catch {exec $dtrace -G -s $dpath -o XXX.o} -+verbose -log "$dtrace -G -64 -fPIC -s $dpath -o XXX.o" -+catch {exec $dtrace -G -64 -fPIC -s $dpath -o XXX.o} - if {[file exists XXX.o]} then { -- pass "dtrace -G -o XXX.o" -+ pass "dtrace -G -64 -fPIC -o XXX.o" - } else { -- fail "dtrace -G -o XXX.o" -+ fail "dtrace -G -64 -fPIC -o XXX.o" - } - exec rm -f XXX.o - --- -1.9.3 - - -From 52cac9d8159a399b824201f4d2c98abe89a01767 Mon Sep 17 00:00:00 2001 -From: Stan Cox -Date: Tue, 23 Sep 2014 13:42:54 -0400 -Subject: [PATCH 2/3] Ignore C declarations in .d file and use string pattern - matching as a fallback mechanism. - -* dtrace.in (_PypProvider): SkipTo the provider{...} -(main): If pyparsing fails, then fallback to pattern matching. - -* dtrace.exp: Add a fallback test. ---- - dtrace.in | 39 +++++++++++++++++++++++++++--------- - testsuite/systemtap.base/dtrace.exp | 40 +++++++++++++++++++++++++++++++++++++ - 2 files changed, 70 insertions(+), 9 deletions(-) - -diff --git a/dtrace.in b/dtrace.in -index 2f9fb6307e28..04ace92181d9 100644 ---- a/dtrace.in -+++ b/dtrace.in -@@ -29,13 +29,13 @@ try: - from pyparsing import alphas, cStyleComment, delimitedList, Group, \ - Keyword, lineno, Literal, nestedExpr, nums, oneOf, OneOrMore, \ - Optional, ParseException, ParserElement, restOfLine, restOfLine, \ -- Suppress, Word, ZeroOrMore -+ Suppress, SkipTo, Word, ZeroOrMore - HAVE_PYP = True - except ImportError: - HAVE_PYP = False - - --# Common file creation methods for pyparsing and regexparsing -+# Common file creation methods for pyparsing and string pattern matching - - class _HeaderCreator(object): - def init_semaphores(self, fdesc): -@@ -149,7 +149,7 @@ class _PypProvider(_HeaderCreator): - - provider_decl = (PROVIDER + Optional(ident) - + lbrace + Group(probe_decls) + rbrace + Optional(semi)) -- dtrace_statement = Group(decls | provider_decl) -+ dtrace_statement = Group (SkipTo("provider", include=False) + provider_decl) - self.dtrace_statements = ZeroOrMore(dtrace_statement) - - cplusplus_linecomment = Literal("//") + restOfLine -@@ -167,7 +167,10 @@ class _PypProvider(_HeaderCreator): - for asti in self.ast: - if len(asti) == 0: - continue -- elif asti[0] == "provider": -+ # ignore SkipTo token -+ if asti[0] != "provider": -+ del asti[0] -+ if asti[0] == "provider": - # list of probes - for prb in asti[2]: - semaphores_def += self.add_semaphore(asti[1], prb[1]) -@@ -186,15 +189,18 @@ class _PypProvider(_HeaderCreator): - self.ast = self.bnf.parseFile(provider).asList() - except ParseException, err: - if len(self.current_probe): -- print "%s:%s:%d: syntax error near:\nprobe %s\n" % (sys.argv[0],provider, self.current_lineno, self.current_probe) -+ print "Warning: %s:%s:%d: syntax error near:\nprobe %s\n" % (sys.argv[0],provider, self.current_lineno, self.current_probe) - else: -- print "%s:%s:%d syntax error near:\n%s\n" % (sys.argv[0],provider,err.lineno, err.line) -- sys.exit(1) -+ print "Warning: %s:%s:%d syntax error near:\n%s\n" % (sys.argv[0],provider,err.lineno, err.line) -+ raise ParseException, err - - probes_def = "" - for asti in self.ast: - if len(asti) == 0: - continue -+ # ignore SkipTo token -+ if asti[0] != "provider": -+ del asti[0] - if asti[0] == "provider": - # list of probes - for prb in asti[2]: -@@ -369,14 +375,29 @@ def main(): - providers = _PypProvider() - else: - providers = _ReProvider() -- providers.probe_write(s_filename, filename + suffix) -+ while True: -+ try: -+ providers.probe_write(s_filename, filename + suffix) -+ break; -+ # complex C declarations can fool the pyparsing grammar. -+ # we could increase the complexity of the grammar -+ # instead we fall back to string pattern matching -+ except ParseException, err: -+ print "Warning: Proceeding as if --no-pyparsing was given.\n" -+ providers = _ReProvider() - elif build_source: - if HAVE_PYP: - providers = _PypProvider() - else: - providers = _ReProvider() - (ignore, fname) = mkstemp(suffix=".h") -- providers.probe_write(s_filename, fname) -+ while True: -+ try: -+ providers.probe_write(s_filename, fname) -+ break; -+ except ParseException, err: -+ print "Warning: Proceeding as if --no-pyparsing was given.\n" -+ providers = _ReProvider() - if not keep_temps: - os.remove(fname) - else: -diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp -index e029748100d6..60cab3f5abf2 100644 ---- a/testsuite/systemtap.base/dtrace.exp -+++ b/testsuite/systemtap.base/dtrace.exp -@@ -207,6 +207,46 @@ if { $ok == 4} { - } - exec rm -f XXX.h - -+set ok 0 -+set pypath "/tmp/pypath.d" -+set $fp [open $pypath "w"] -+puts $fp " -+#include -+ -+provider alpha { -+ probe request__start(string, uint8_t, uint16_t, int, void *); -+ probe request__one(string, uint8_t, uint32_t, int, int); -+ probe client__two(int, int); -+ probe client__three(int, string, pid_t, zoneid_t); -+ probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*); -+}; -+ -+#ifdef DCL_AFTER_PROVIDER -+typedef unsigned short int __u_short; -+typedef const static unsigned short __u_c_short; -+#endif -+ -+#pragma D attributes Unknown provider alpha provider -+" -+close $fp -+verbose -log "$dtrace -C -h -s $pypath -o XXX.h" -+spawn $dtrace -C -DDCL_AFTER_PROVIDER -h -s $pypath -o XXX.h -+expect { -+ -re {Warning.*syntax error} {incr ok; exp_continue} -+ -re {Warning.*--no-pyparsing} {incr ok; exp_continue} -+ eof { } -+} -+catch {close}; catch {wait} -+if {[file exists XXX.h]} then { -+ incr ok; -+} -+if { $ok == 3} { -+ pass "dtrace parser check" -+} else { -+ fail "dtrace parser check $ok" -+} -+exec rm -f XXX.h -+ - verbose -log "$dtrace -I$incpath -G -s $idpath" - catch {exec $dtrace -G -s $dpath} - if {[file exists test.o]} then { --- -1.9.3 - - -From 3525152408f15e23dcffe2371bbd575f1646d691 Mon Sep 17 00:00:00 2001 -From: Stan Cox -Date: Thu, 25 Sep 2014 13:47:04 -0400 -Subject: [PATCH 3/3] Add pyparsing / no-parsing compatibility test. - -* dtrace.exp: Add pyparsing compatibility test. ---- - testsuite/systemtap.base/dtrace.exp | 93 ++++++++++++++++++++++++++++--------- - 1 file changed, 72 insertions(+), 21 deletions(-) - -diff --git a/testsuite/systemtap.base/dtrace.exp b/testsuite/systemtap.base/dtrace.exp -index 60cab3f5abf2..e455c298737a 100644 ---- a/testsuite/systemtap.base/dtrace.exp -+++ b/testsuite/systemtap.base/dtrace.exp -@@ -8,6 +8,8 @@ if {[installtest_p]} { - set dtrace ../dtrace - } - -+# Create the test .d files -+ - exec mkdir -p /tmp/dtrace - - set dpath "/tmp/dtrace/test.d" -@@ -48,6 +50,29 @@ provider tstsyscall - " - close $fp - -+set pypath "/tmp/pypath.d" -+set $fp [open $pypath "w"] -+puts $fp " -+#include -+ -+provider alpha { -+ probe request__start(string, uint8_t, uint16_t, int, void *); -+ probe request__one(string, uint8_t, uint32_t, int, int); -+ probe client__two(int, int); -+ probe client__three(int, string, pid_t, zoneid_t); -+ probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*); -+}; -+ -+#ifdef DCL_AFTER_PROVIDER -+typedef unsigned short int __u_short; -+typedef const static unsigned short __u_c_short; -+#endif -+ -+#pragma D attributes Unknown provider alpha provider -+" -+close $fp -+ -+ - set incpath "/tmp/dtrace_inc" - - # ----------------------------------------------------------------- -@@ -156,6 +181,9 @@ if { $ok != 0} { - fail "dtrace CFLAGS= CC=" - } - -+# ----------------------------------------------------------------- -+# test -h header file creation -+ - set ok 0 - verbose -log "$dtrace -C -h -s $dpath -o XXX.h" - catch {exec $dtrace -C -h -s $dpath -o XXX.h} -@@ -189,6 +217,9 @@ if { $ok == 4} { - } - exec rm -f XXX.h - -+# ----------------------------------------------------------------- -+# test --no-pyparsing -+ - set ok 0 - verbose -log "$dtrace -C --no-pyparsing -I$incpath -h -s $idpath -o XXX.h" - catch {exec $dtrace -C --no-pyparsing -I$incpath -h -s $idpath -o XXX.h} -@@ -207,28 +238,10 @@ if { $ok == 4} { - } - exec rm -f XXX.h - --set ok 0 --set pypath "/tmp/pypath.d" --set $fp [open $pypath "w"] --puts $fp " --#include -- --provider alpha { -- probe request__start(string, uint8_t, uint16_t, int, void *); -- probe request__one(string, uint8_t, uint32_t, int, int); -- probe client__two(int, int); -- probe client__three(int, string, pid_t, zoneid_t); -- probe input__stop(int, int, uint32_t, uint32_t, int8_t, uint8_t*, double*); --}; -- --#ifdef DCL_AFTER_PROVIDER --typedef unsigned short int __u_short; --typedef const static unsigned short __u_c_short; --#endif -+# ----------------------------------------------------------------- -+# test fallback to --no-pyparsing - --#pragma D attributes Unknown provider alpha provider --" --close $fp -+set ok 0 - verbose -log "$dtrace -C -h -s $pypath -o XXX.h" - spawn $dtrace -C -DDCL_AFTER_PROVIDER -h -s $pypath -o XXX.h - expect { -@@ -247,6 +260,9 @@ if { $ok == 3} { - } - exec rm -f XXX.h - -+# ----------------------------------------------------------------- -+# test -G object file creation -+ - verbose -log "$dtrace -I$incpath -G -s $idpath" - catch {exec $dtrace -G -s $dpath} - if {[file exists test.o]} then { -@@ -256,5 +272,40 @@ if {[file exists test.o]} then { - } - exec rm -f test.o - -+# ----------------------------------------------------------------- -+# test dtrace for pyparsing / --no-pyparsing compatibility -+ -+set ok 0 -+set dfiles {dtrace} -+foreach i $dfiles { -+ verbose -log "$dtrace $srcdir/$subdir/$i.d" -+ catch {exec $dtrace -C -h -s $srcdir/$subdir/$i.d -o $i-1.h} -+ catch {exec $dtrace -C -h --no-pyparsing -s $srcdir/$subdir/$i.d -o $i-2.h} -+ spawn diff -wqs $i-1.h $i-2.h -+ expect { -+ -re {Files.*identical} {incr ok; exp_continue} -+ eof { } -+ } -+ catch {exec $dtrace -C -G -s $srcdir/$subdir/$i.d -o $i-1.o} -+ catch {exec $dtrace -C -G --no-pyparsing -s $srcdir/$subdir/$i.d -o $i-2.o} -+ verbose -log "exec nm $i-1.o > $i-1.od" -+ catch {exec nm $i-1.o > $i-1.od} -+ catch {exec nm $i-2.o > $i-2.od} -+ spawn diff -qs $i-1.od $i-2.od -+ expect { -+ -re {Files.*identical} {incr ok; exp_continue} -+ eof { } -+ } -+ catch {exec /bin/rm $i-1.h $i-2.h $i-1.o $i-2.o} -+} -+if { $ok == 2} { -+ pass "dtrace known uses" -+} else { -+ fail "dtrace known uses ${ok}" -+} -+ -+# ----------------------------------------------------------------- -+# cleanup -+ - exec /bin/rm -r /tmp/dtrace /tmp/dtrace_inc - # ----------------------------------------------------------------- --- -1.9.3 - diff --git a/systemtap.spec b/systemtap.spec index 5f08c11..0fbef98 100644 --- a/systemtap.spec +++ b/systemtap.spec @@ -5,7 +5,7 @@ %bcond_without crash # crash extension %bcond_without dyninst # dyninst support %bcond_without java # Java runtime support -# + %ifnarch %{ix86} %{x8664} alpha arm ia64 ppc64 s390 s390x %undefine with_crash %endif @@ -15,16 +15,15 @@ Summary: Instrumentation System Summary(pl.UTF-8): System oprzyrządowania Name: systemtap -Version: 2.6 -Release: 3 +Version: 2.7 +Release: 1 License: GPL v2+ Group: Base Source0: http://sourceware.org/systemtap/ftp/releases/%{name}-%{version}.tar.gz -# Source0-md5: 65e6745f0ec103758c711dd1d12fb6bf +# Source0-md5: e0c3c36955323ae59be07a26a9563474 Patch0: %{name}-configure.patch Patch1: %{name}-build.patch Patch2: %{name}-rpm5-support.patch -Patch3: %{name}-dtrace-flexibility.patch Patch4: format-security.patch URL: http://sourceware.org/systemtap/ BuildRequires: autoconf >= 2.63 @@ -35,9 +34,13 @@ BuildRequires: boost-devel BuildRequires: docbook-dtd412-xml %{?with_dyninst:BuildRequires: dyninst-devel >= 8.0} BuildRequires: elfutils-devel >= 0.148 +BuildRequires: gettext-devel >= 0.18.2 BuildRequires: gettext-tools >= 0.18.2 BuildRequires: glib2-devel -%{?with_java:BuildRequires: jdk} +%if %{with java} +BuildRequires: jdk +BuildRequires: rpm-javaprov +%endif %if %{with dyninst} || %{with java} BuildRequires: libselinux-devel %endif @@ -46,7 +49,9 @@ BuildRequires: libvirt-devel >= 1.0.2 BuildRequires: libxml2-devel >= 2.0 BuildRequires: mysql-devel BuildRequires: nss-devel >= 3 +BuildRequires: pkgconfig BuildRequires: rpm-devel +BuildRequires: rpm-pythonprov BuildRequires: sqlite3-devel >= 3 BuildRequires: xmlto %if %{with doc} @@ -56,6 +61,8 @@ BuildRequires: texlive-dvips BuildRequires: texlive-fonts-bitstream BuildRequires: texlive-fonts-type1-bitstream BuildRequires: texlive-latex +BuildRequires: texlive-latex-psnfss +BuildRequires: texlive-xetex %endif # let base mean client+local development package Requires: %{name}-client = %{version}-%{release} @@ -216,11 +223,21 @@ przestrzeni użytkownika, wraz z opcjonalnym preprocesorem zgodności z dtrace, który przetwarza pliki .d na pliki nagłówkowe .h z makrami śledzącymi. +%package doc +Summary: SystemTap guides and tutorials +Summary(pl.UTF-8): Przewodniki i dokumentacja wprowadzająca do SystemTap +Group: Documentation + +%description doc +SystemTap guides and tutorials. + +%description doc -l pl.UTF-8 +Przewodniki i dokumentacja wprowadzająca do SystemTap. + %prep %setup -q %patch0 -p1 %patch1 -p1 -%patch3 -p1 %patch4 -p1 %if "%{_rpmversion}" >= "5.0" %patch2 -p1 @@ -254,19 +271,24 @@ install -d $RPM_BUILD_ROOT/var/{cache,run}/%{name} \ DESTDIR=$RPM_BUILD_ROOT # not installed by make -install stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep +install -p stap-prep $RPM_BUILD_ROOT%{_bindir}/stap-prep -install initscript/systemtap $RPM_BUILD_ROOT/etc/rc.d/init.d -install initscript/config.systemtap $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/config +install -p initscript/systemtap $RPM_BUILD_ROOT/etc/rc.d/init.d +cp -p initscript/config.systemtap $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/config -install initscript/stap-server $RPM_BUILD_ROOT/etc/rc.d/init.d -install initscript/config.stap-server $RPM_BUILD_ROOT/etc/sysconfig/stap-server -install initscript/logrotate.stap-server $RPM_BUILD_ROOT/etc/logrotate.d/stap-server +install -p initscript/stap-server $RPM_BUILD_ROOT/etc/rc.d/init.d +cp -p initscript/config.stap-server $RPM_BUILD_ROOT/etc/sysconfig/stap-server +cp -p initscript/logrotate.stap-server $RPM_BUILD_ROOT/etc/logrotate.d/stap-server install -d $RPM_BUILD_ROOT%{_sysconfdir}/systemtap/{conf.d,script.d} install -d $RPM_BUILD_ROOT/var/lib/stap-server/.systemtap install -d $RPM_BUILD_ROOT/var/log/stap-server +%if %{with doc} +install -d $RPM_BUILD_ROOT%{_examplesdir} +mv $RPM_BUILD_ROOT{%{_docdir}/%{name}/examples,%{_examplesdir}/%{name}-client-%{version}} +%endif + %{__mv} $RPM_BUILD_ROOT%{_docdir}/systemtap docs-installed %find_lang %{name} @@ -292,13 +314,15 @@ rm -rf $RPM_BUILD_ROOT %{?with_crash:%attr(755,root,root) %{_libdir}/%{name}/staplog.so} %{_mandir}/man1/stap-merge.1* %{_mandir}/man1/stap-report.1* -#%{_mandir}/man3/function::*.3stap* -#%{_mandir}/man3/probe::*.3stap* %{_mandir}/man3/stapex.3stap* %{_mandir}/man3/stapfuncs.3stap* %{_mandir}/man3/stapprobes.3stap* %{_mandir}/man3/stapvars.3stap* -#%{_mandir}/man3/tapset::*.3stap* +%if %{with doc} +%{_mandir}/man3/function::*.3stap* +%{_mandir}/man3/probe::*.3stap* +%{_mandir}/man3/tapset::*.3stap* +%endif %{_mandir}/man7/error::*.7stap* %{_mandir}/man7/stappaths.7* %{_mandir}/man7/warning::debuginfo.7stap* @@ -318,7 +342,10 @@ rm -rf $RPM_BUILD_ROOT %files client %defattr(644,root,root,755) -%doc docs-installed/examples %{?with_docs:docs-installed/{tapsets,langref.pdf,tutorial.pdf}} +%if %{with doc} +%doc docs-installed/{tapsets,langref.pdf,tutorial.pdf} +%{_examplesdir}/%{name}-client-%{version} +%endif %attr(755,root,root) %{_bindir}/stap %attr(755,root,root) %{_bindir}/stap-prep %attr(755,root,root) %{_bindir}/stapvirt @@ -369,3 +396,9 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/sys/sdt.h %{_includedir}/sys/sdt-config.h %{_mandir}/man1/dtrace.1* + +%if %{with publican} +%files doc +%defattr(644,root,root,755) +%doc doc/{langref,tutorial}.pdf doc/beginners/SystemTap_Beginners_Guide.pdf +%endif