Hello community,

here is the log from the commit of package bcc for openSUSE:Factory checked in 
at 2019-04-23 14:39:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bcc (Old)
 and      /work/SRC/openSUSE:Factory/.bcc.new.5536 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bcc"

Tue Apr 23 14:39:03 2019 rev:28 rq:697025 version:0.9.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/bcc/bcc.changes  2019-03-26 15:42:29.192241730 
+0100
+++ /work/SRC/openSUSE:Factory/.bcc.new.5536/bcc.changes        2019-04-23 
14:39:06.105580284 +0200
@@ -1,0 +2,8 @@
+Tue Apr 23 03:44:05 UTC 2019 - Gary Ching-Pang Lin <[email protected]>
+
+- Add upstream patches to improve python3 compatibility
+  + 0001-fix-string-re-being-used-on-bytes-for-Python-3.patch
+  + 0001-Convert-bytes-to-string-for-re-in-get_tracepoints.patch
+  + 0001-tools-don-t-mix-print-end-with-printb.patch
+
+-------------------------------------------------------------------

New:
----
  0001-Convert-bytes-to-string-for-re-in-get_tracepoints.patch
  0001-fix-string-re-being-used-on-bytes-for-Python-3.patch
  0001-tools-don-t-mix-print-end-with-printb.patch

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

Other differences:
------------------
++++++ bcc.spec ++++++
--- /var/tmp/diff_new_pack.jyQBVw/_old  2019-04-23 14:39:06.665580572 +0200
+++ /var/tmp/diff_new_pack.jyQBVw/_new  2019-04-23 14:39:06.665580572 +0200
@@ -36,6 +36,9 @@
 Url:            https://github.com/iovisor/bcc
 Source:         https://github.com/iovisor/bcc/archive/v%{version}.tar.gz
 Source1:        libbpf-5beb8a2ebffd.tar.gz
+Patch1:         0001-fix-string-re-being-used-on-bytes-for-Python-3.patch
+Patch2:         0001-Convert-bytes-to-string-for-re-in-get_tracepoints.patch
+Patch3:         0001-tools-don-t-mix-print-end-with-printb.patch
 ExcludeArch:    ppc s390
 BuildRequires:  bison
 BuildRequires:  cmake >= 2.8.7
@@ -158,6 +161,9 @@
 pushd src/cc/libbpf
 tar xf %{SOURCE1}
 popd
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
 
 %build
 # Prevent the cpp examples from compilation and installation

++++++ 0001-Convert-bytes-to-string-for-re-in-get_tracepoints.patch ++++++
>From d2a4626dacc33d3dca9a7e6ea2ef4bdaa6ef3c74 Mon Sep 17 00:00:00 2001
From: Gary Lin <[email protected]>
Date: Wed, 17 Apr 2019 15:23:16 +0800
Subject: [PATCH] Convert bytes to string for re in get_tracepoints()

When executing funccount with python3, the following error showed.

 # python3 funccount.py -D 't:block:*'
 Traceback (most recent call last):
   File "funccount.py", line 299, in <module>
     Tool().run()
   File "funccount.py", line 261, in run
     self.probe.load()
   File "funccount.py", line 191, in load
     bpf_text += self._generate_functions(trace_count_text)
   File "funccount.py", line 143, in _generate_functions
     tracepoints = BPF.get_tracepoints(self.pattern)
   File "/usr/lib/python3.7/site-packages/bcc/__init__.py", line 772, in 
get_tracepoints
     if re.match(tp_re, tp):
   File "/usr/lib64/python3.7/re.py", line 173, in match
     return _compile(pattern, flags).match(string)
 TypeError: cannot use a bytes pattern on a string-like object

This commit convert 'tp_re' from bytes to string to avoid the crash.

Signed-off-by: Gary Lin <[email protected]>
---
 src/python/bcc/__init__.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/python/bcc/__init__.py b/src/python/bcc/__init__.py
index 6f114de8..bff5f282 100644
--- a/src/python/bcc/__init__.py
+++ b/src/python/bcc/__init__.py
@@ -769,7 +769,7 @@ class BPF(object):
                 evt_dir = os.path.join(cat_dir, event)
                 if os.path.isdir(evt_dir):
                     tp = ("%s:%s" % (category, event))
-                    if re.match(tp_re, tp):
+                    if re.match(tp_re.decode(), tp):
                         results.append(tp)
         return results
 
-- 
2.21.0

++++++ 0001-fix-string-re-being-used-on-bytes-for-Python-3.patch ++++++
>From df481a4d724b407be2f30fc34a2a649c949f8171 Mon Sep 17 00:00:00 2001
From: lilydjwg <[email protected]>
Date: Wed, 20 Mar 2019 14:42:06 +0800
Subject: [PATCH] fix string re being used on bytes for Python 3

---
 src/python/bcc/table.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/python/bcc/table.py b/src/python/bcc/table.py
index d33d46eb..d32400e9 100644
--- a/src/python/bcc/table.py
+++ b/src/python/bcc/table.py
@@ -621,7 +621,7 @@ class PerfEventArray(ArrayBase):
         num_fields = lib.bpf_perf_event_fields(self.bpf.module, self._name)
         i = 0
         while i < num_fields:
-            field = lib.bpf_perf_event_field(self.bpf.module, self._name, i)
+            field = lib.bpf_perf_event_field(self.bpf.module, self._name, 
i).decode()
             m = re.match(r"(.*)#(.*)", field)
             field_name = m.group(1)
             field_type = m.group(2)
-- 
2.21.0

++++++ 0001-tools-don-t-mix-print-end-with-printb.patch ++++++
>From 6c793317dac5866db2899e62504d047a02c089b7 Mon Sep 17 00:00:00 2001
From: Gary Lin <[email protected]>
Date: Thu, 18 Apr 2019 15:17:56 +0800
Subject: [PATCH] tools: don't mix print(end="") with printb()

While mixing print(end="") with printb(), some messages may miss due to
the underlying buffer handling in python 3.

For example:

  # python3 opensnoop.py
  PID    COMM               FD ERR PATH
  /proc/18849/cmdline
  4109   tmux: server       67   0 /proc/18849/cmdline
  4109   tmux: server       67   0 /proc/18849/cmdline
  4109   tmux: server       67   0 /proc/18849/cmdline

The PID, COMM, FD, and ERR are printed with print(end=""), and those of
the first instance was eaten by printb() which outputs PATH.

The following scripts mix print(end="") and printb() for the same line:

tools/execsnoop.py
tools/opensnoop.py
tools/tcpaccept.py
tools/tcpconnect.py

Those scripts work fine with python 2 but some messages may miss while
using python 3.

This commit converts print(end="") to printb(nl="") to avoid the
inconsistent outputs.

Signed-off-by: Gary Lin <[email protected]>
---
 tools/execsnoop.py  |  2 +-
 tools/opensnoop.py  | 12 ++++++------
 tools/tcpaccept.py  |  8 ++++----
 tools/tcpconnect.py |  8 ++++----
 4 files changed, 15 insertions(+), 15 deletions(-)

Index: bcc-0.9.0/tools/execsnoop.py
===================================================================
--- bcc-0.9.0.orig/tools/execsnoop.py
+++ bcc-0.9.0/tools/execsnoop.py
@@ -216,7 +216,7 @@ def print_event(cpu, data, size):
 
         if not skip:
             if args.timestamp:
-                print("%-8.3f" % (time.time() - start_ts), end="")
+                printb(b"%-8.3f" % (time.time() - start_ts), nl="")
             ppid = event.ppid if event.ppid > 0 else get_ppid(event.pid)
             ppid = b"%d" % ppid if ppid > 0 else b"?"
             argv_text = b' '.join(argv[event.pid]).replace(b'\n', b'\\n')
Index: bcc-0.9.0/tools/opensnoop.py
===================================================================
--- bcc-0.9.0.orig/tools/opensnoop.py
+++ bcc-0.9.0/tools/opensnoop.py
@@ -218,17 +218,17 @@ def print_event(cpu, data, size):
 
     if args.timestamp:
         delta = event.ts - initial_ts
-        print("%-14.9f" % (float(delta) / 1000000), end="")
+        printb(b"%-14.9f" % (float(delta) / 1000000), nl="")
 
     if args.print_uid:
-        print("%-6d" % event.uid, end="")
+        printb(b"%-6d" % event.uid, nl="")
 
-    print("%-6d %-16s %4d %3d " %
-          (event.id & 0xffffffff if args.tid else event.id >> 32,
-           event.comm.decode('utf-8', 'replace'), fd_s, err), end="")
+    printb(b"%-6d %-16s %4d %3d " %
+           (event.id & 0xffffffff if args.tid else event.id >> 32,
+            event.comm, fd_s, err), nl="")
 
     if args.extended_fields:
-        print("%08o " % event.flags, end="")
+        printb(b"%08o " % event.flags, nl="")
 
     printb(b'%s' % event.fname)
 
Index: bcc-0.9.0/tools/tcpaccept.py
===================================================================
--- bcc-0.9.0.orig/tools/tcpaccept.py
+++ bcc-0.9.0/tools/tcpaccept.py
@@ -219,7 +219,7 @@ def print_ipv4_event(cpu, data, size):
     if args.timestamp:
         if start_ts == 0:
             start_ts = event.ts_us
-        print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+        printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
     printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
         event.task, event.ip,
         inet_ntop(AF_INET, pack("I", event.daddr)).encode(),
@@ -232,7 +232,7 @@ def print_ipv6_event(cpu, data, size):
     if args.timestamp:
         if start_ts == 0:
             start_ts = event.ts_us
-        print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+        printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
     printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
         event.task, event.ip,
         inet_ntop(AF_INET6, event.daddr).encode(),
Index: bcc-0.9.0/tools/tcpconnect.py
===================================================================
--- bcc-0.9.0.orig/tools/tcpconnect.py
+++ bcc-0.9.0/tools/tcpconnect.py
@@ -193,9 +193,9 @@ def print_ipv4_event(cpu, data, size):
     if args.timestamp:
         if start_ts == 0:
             start_ts = event.ts_us
-        print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+        printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), nl="")
     if args.print_uid:
-        print("%-6d" % event.uid, end="")
+        printb(b"%-6d" % event.uid, nl="")
     printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
         event.task, event.ip,
         inet_ntop(AF_INET, pack("I", event.saddr)).encode(),
@@ -207,9 +207,9 @@ def print_ipv6_event(cpu, data, size):
     if args.timestamp:
         if start_ts == 0:
             start_ts = event.ts_us
-        print("%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), end="")
+        printb(b"%-9.3f" % ((float(event.ts_us) - start_ts) / 1000000), nl="")
     if args.print_uid:
-        print("%-6d" % event.uid, end="")
+        printb(b"%-6d" % event.uid, nl="")
     printb(b"%-6d %-12.12s %-2d %-16s %-16s %-4d" % (event.pid,
         event.task, event.ip,
         inet_ntop(AF_INET6, event.saddr).encode(), inet_ntop(AF_INET6, 
event.daddr).encode(),

Reply via email to