Hello community,

here is the log from the commit of package systemtap for openSUSE:Factory 
checked in at 2013-03-03 21:09:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/systemtap (Old)
 and      /work/SRC/openSUSE:Factory/.systemtap.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "systemtap", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/systemtap/systemtap.changes      2013-01-12 
14:54:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.systemtap.new/systemtap.changes 2013-03-03 
21:09:20.000000000 +0100
@@ -1,0 +2,9 @@
+Fri Feb 22 06:30:58 UTC 2013 - [email protected]
+
+- Change how systemtap looks for tracepoint header files 
+  (bnc#796574, new patch: systemtap-build-source-dir.patch)
+- Add libebl1 dependancy. Systemtap manually loads libebl backends and
+  the manual Requires: was incorrectly removed in a previous revision
+  (bnc#800335)
+
+-------------------------------------------------------------------

New:
----
  systemtap-build-source-dir.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ systemtap.spec ++++++
--- /var/tmp/diff_new_pack.7aCAtE/_old  2013-03-03 21:09:21.000000000 +0100
+++ /var/tmp/diff_new_pack.7aCAtE/_new  2013-03-03 21:09:21.000000000 +0100
@@ -37,8 +37,10 @@
 Source2:        README-BEFORE-ADDING-PATCHES
 Source3:        stap-server.conf
 Patch1:         systemtap-fix-for-kernels-without-vm_executable.patch
+Patch2:         systemtap-build-source-dir.patch
 Obsoletes:      systemtap-client < 1.5
 Requires:       %{name}-runtime = %{version}-%{release}
+Requires:       libebl1
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -85,6 +87,7 @@
 %prep
 %setup -q
 %patch1 -p1
+%patch2 -p1
 
 %build
 %configure --disable-docs --docdir=%{_docdir}/systemtap

++++++ systemtap-build-source-dir.patch ++++++
From: Tony Jones <[email protected]>
Subject: adjust build source dir for SuSE packaging
References: bnc#796574

kernel-$flavor:
    /lib/modules/$version-$flavor

kernel-$flavor-devel: requires kernel-source
   /usr/src/linux-$version-obj/$arch/$flavor
   /lib/modules/$version-$flavor/build -> 
/usr/src/linux-$version-obj/$arch/$flavor
   /lib/modules/$version-$flavor/source -> /usr/src/linux-$version 
[kernel-source]

kernel-flavor-debugsource:
   /usr/src/debug/kernel-$flavor/
      linux-obj/ {corresponds to /lib/modules/$version-$flavor/build}
      linux-3.0/ {mirrors kernel-source}

DW_AT_comp_dir points to debugsource/linux-obj directory but internal trace
headers are only found in linux-3.0.  Regardless, we don't want to require
debugsource as devel already requires kernel-source which provides the 
necessary headers.

---
 session.cxx |   28 ++++++++++++++++++++++++----
 1 file changed, 24 insertions(+), 4 deletions(-)

--- a/session.cxx
+++ b/session.cxx
@@ -90,6 +90,7 @@ systemtap_session::systemtap_session ():
   kernel_release = string (buf.release);
   release = kernel_release;
   kernel_build_tree = "/lib/modules/" + kernel_release + "/build";
+  kernel_source_tree = "/lib/modules/" + kernel_release + "/source";
   architecture = machine = normalize_machine(buf.machine);
 
   for (unsigned i=0; i<5; i++) perpass_verbose[i]=0;
@@ -258,6 +259,7 @@ systemtap_session::systemtap_session (co
 {
   release = kernel_release = kern;
   kernel_build_tree = "/lib/modules/" + kernel_release + "/build";
+  kernel_source_tree = "/lib/modules/" + kernel_release + "/source";
   architecture = machine = normalize_machine(arch);
   setup_kernel_release(kern.c_str());
   native_build = false; // assumed; XXX: could be computed as in 
check_options()
@@ -1540,21 +1542,39 @@ systemtap_session::setup_kernel_release
       // normal search in tapsets.cxx.  Without CONFIG_DEBUG_INFO, we'd
       // need heuristics such as this one:
 
-      string some_random_source_only_file = kernel_build_tree + "/COPYING";
+      // SUSE: if "build" link specified, attempt to determine "source" link
+      // N.B we won't match using above tapsets.cxx check
+      struct stat buf;
+      string source_tree = kernel_build_tree;
+
+      if (lstat(kernel_build_tree.c_str(), &buf) != -1 && 
S_ISLNK(buf.st_mode)) {
+       size_t pos = source_tree.find_last_of('/');
+       if (pos < source_tree.length() && source_tree.substr(pos+1, 
string::npos) == "build")
+          source_tree.replace(pos+1, string::npos, "source");
+      }
+
+retry:
+      string some_random_source_only_file = source_tree + "/COPYING";
       ifstream epic (some_random_source_only_file.c_str());
       if (! epic.fail())
         {
-          kernel_source_tree = kernel_build_tree;
+          kernel_source_tree = source_tree;
           if (verbose > 2)
             clog << _F("Located kernel source tree (COPYING) at '%s'", 
kernel_source_tree.c_str()) << endl;
-        }
+        } else if (source_tree != kernel_build_tree) {
+               // one last try using kernel_build_tree (local fs build)
+               source_tree = kernel_build_tree;
+               goto retry;
+       }
     }
   else
     {
       update_release_sysroot = true;
       kernel_release = string (kstr);
-      if (!kernel_release.empty())
+      if (!kernel_release.empty()) {
         kernel_build_tree = "/lib/modules/" + kernel_release + "/build";
+        kernel_source_tree = "/lib/modules/" + kernel_release + "/source";
+      }
 
       // PR10745
       // Let's not look for the kernel_source_tree; it's definitely
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to