diff --git a/.bcc.metadata b/.bcc.metadata
new file mode 100644
index 0000000..4c0f80b
--- /dev/null
+++ b/.bcc.metadata
@@ -0,0 +1 @@
+168b517240fd27aaa48f480d2470907fe1875dac SOURCES/bcc-0.8.0.tar.gz
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8294aed
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+SOURCES/bcc-0.8.0.tar.gz
diff --git a/SOURCES/bcc-0.8.0-print_log2_hist-check-and-skip-possible-paddings-215.patch b/SOURCES/bcc-0.8.0-print_log2_hist-check-and-skip-possible-paddings-215.patch
new file mode 100644
index 0000000..de3dbc3
--- /dev/null
+++ b/SOURCES/bcc-0.8.0-print_log2_hist-check-and-skip-possible-paddings-215.patch
@@ -0,0 +1,50 @@
+From 3f7b59660037c0d5dea785d115df25d9b95f07dc Mon Sep 17 00:00:00 2001
+From: Xiaozhou Liu <liuxiaozhou@bytedance.com>
+Date: Mon, 21 Jan 2019 11:23:42 +0800
+Subject: [PATCH] print_log2_hist(): check and skip possible paddings (#2155)
+
+Address issue 2154.
+
+When a struct S is used as key to a BPF_HISTOGRAM, it is assumed that the second
+member of S holds the slot. But when S is converted to python from bpf C,
+a padding may be inserted as a second member. This breaks print_log2_hist().
+
+    root@debian:~/bcc/tools# ./softirqs.py -d
+    Tracing soft irq event time... Hit Ctrl-C to end.
+    ^C
+    Traceback (most recent call last):
+      File "./softirqs.py", line 144, in <module>
+        dist.print_log2_hist(label, "softirq", section_print_fn=vec_to_name)
+      File "/usr/local/lib/python2.7/dist-packages/bcc/table.py", line 326, in print_log2_hist
+        vals[slot] = v.value
+    TypeError: list indices must be integers, not str
+
+Fix it by skipping the possible padding. Future work would be fixing/working
+around in the library where the padding is introduced.
+---
+ src/python/bcc/table.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/src/python/bcc/table.py b/src/python/bcc/table.py
+index 6f598353..f6449de7 100644
+--- a/src/python/bcc/table.py
++++ b/src/python/bcc/table.py
+@@ -317,6 +317,15 @@ linear_index_max = 1025
+             tmp = {}
+             f1 = self.Key._fields_[0][0]
+             f2 = self.Key._fields_[1][0]
++
++            # The above code assumes that self.Key._fields_[1][0] holds the
++            # slot. But a padding member may have been inserted here, which
++            # breaks the assumption and leads to chaos.
++            # TODO: this is a quick fix. Fixing/working around in the BCC
++            # internal library is the right thing to do.
++            if f2 == '__pad_1' and len(self.Key._fields_) == 3:
++                f2 = self.Key._fields_[2][0]
++
+             for k, v in self.items():
+                 bucket = getattr(k, f1)
+                 if bucket_fn:
+-- 
+2.20.1
+
diff --git a/SOURCES/bcc-0.8.0-tools-fix-some-python3-bytes-vs-strings-issues-2205.patch b/SOURCES/bcc-0.8.0-tools-fix-some-python3-bytes-vs-strings-issues-2205.patch
new file mode 100644
index 0000000..7942084
--- /dev/null
+++ b/SOURCES/bcc-0.8.0-tools-fix-some-python3-bytes-vs-strings-issues-2205.patch
@@ -0,0 +1,111 @@
+From f03beca4d6e6bc3fa7089416d752387bd26904dc Mon Sep 17 00:00:00 2001
+From: Jerome Marchand <jmarchan@redhat.com>
+Date: Fri, 15 Feb 2019 17:35:37 +0100
+Subject: [PATCH] tools: fix some python3 bytes vs strings issues (#2205)
+
+It fixes the following errors:
+
+$ execsnoop.py -q
+PCOMM            PID    PPID   RET ARGS
+Traceback (most recent call last):
+  File "_ctypes/callbacks.c", line 234, in 'calling callback function'
+  File "/usr/lib/python3.6/site-packages/bcc/table.py", line 572, in raw_cb_
+    callback(cpu, data, size)
+  File "tools/execsnoop.py", line 229, in print_event
+    for arg in argv[event.pid]
+  File "tools/execsnoop.py", line 229, in <listcomp>
+    for arg in argv[event.pid]
+TypeError: a bytes-like object is required, not 'str'
+
+$ offcputime.py -K -f 5
+Traceback (most recent call last):
+  File "./tools/offcputime.py", line 298, in <module>
+    print("%s %d" % (";".join(line), v.value))
+TypeError: sequence item 1: expected str instance, bytes found
+
+$ offwaketime.py -f 5
+Traceback (most recent call last):
+  File "./tools/offwaketime.py", line 350, in <module>
+    print("%s %d" % (";".join(line), v.value))
+TypeError: sequence item 1: expected str instance, bytes found
+---
+ tools/execsnoop.py   | 2 +-
+ tools/offcputime.py  | 6 ++++--
+ tools/offwaketime.py | 8 ++++----
+ 3 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/tools/execsnoop.py b/tools/execsnoop.py
+index c4021165..1ce83e07 100755
+--- a/tools/execsnoop.py
++++ b/tools/execsnoop.py
+@@ -210,7 +210,7 @@ argv = defaultdict(list)
+             skip = True
+         if args.quote:
+             argv[event.pid] = [
+-                "\"" + arg.replace("\"", "\\\"") + "\""
++                b"\"" + arg.replace(b"\"", b"\\\"") + b"\""
+                 for arg in argv[event.pid]
+             ]
+ 
+diff --git a/tools/offcputime.py b/tools/offcputime.py
+index d84ae529..ac3b7281 100755
+--- a/tools/offcputime.py
++++ b/tools/offcputime.py
+@@ -288,13 +288,15 @@ stack_traces = b.get_table("stack_traces")
+             if stack_id_err(k.user_stack_id):
+                 line.append("[Missed User Stack]")
+             else:
+-                line.extend([b.sym(addr, k.tgid) for addr in reversed(user_stack)])
++                line.extend([b.sym(addr, k.tgid).decode('utf-8', 'replace')
++                    for addr in reversed(user_stack)])
+         if not args.user_stacks_only:
+             line.extend(["-"] if (need_delimiter and k.kernel_stack_id >= 0 and k.user_stack_id >= 0) else [])
+             if stack_id_err(k.kernel_stack_id):
+                 line.append("[Missed Kernel Stack]")
+             else:
+-                line.extend([b.ksym(addr) for addr in reversed(kernel_stack)])
++                line.extend([b.ksym(addr).decode('utf-8', 'replace')
++                    for addr in reversed(kernel_stack)])
+         print("%s %d" % (";".join(line), v.value))
+     else:
+         # print default multi-line stack output
+diff --git a/tools/offwaketime.py b/tools/offwaketime.py
+index 38a9ff25..4a1cebab 100755
+--- a/tools/offwaketime.py
++++ b/tools/offwaketime.py
+@@ -323,28 +323,28 @@ need_delimiter = args.delimited and not (args.kernel_stacks_only or
+             if stack_id_err(k.t_u_stack_id):
+                 line.append("[Missed User Stack]")
+             else:
+-                line.extend([b.sym(addr, k.t_tgid)
++                line.extend([b.sym(addr, k.t_tgid).decode('utf-8', 'replace')
+                     for addr in reversed(list(target_user_stack)[1:])])
+         if not args.user_stacks_only:
+             line.extend(["-"] if (need_delimiter and k.t_k_stack_id > 0 and k.t_u_stack_id > 0) else [])
+             if stack_id_err(k.t_k_stack_id):
+                 line.append("[Missed Kernel Stack]")
+             else:
+-                line.extend([b.ksym(addr)
++                line.extend([b.ksym(addr).decode('utf-8', 'replace')
+                     for addr in reversed(list(target_kernel_stack)[1:])])
+         line.append("--")
+         if not args.user_stacks_only:
+             if stack_id_err(k.w_k_stack_id):
+                 line.append("[Missed Kernel Stack]")
+             else:
+-                line.extend([b.ksym(addr)
++                line.extend([b.ksym(addr).decode('utf-8', 'replace')
+                     for addr in reversed(list(waker_kernel_stack))])
+         if not args.kernel_stacks_only:
+             line.extend(["-"] if (need_delimiter and k.w_u_stack_id > 0 and k.w_k_stack_id > 0) else [])
+             if stack_id_err(k.w_u_stack_id):
+                 line.append("[Missed User Stack]")
+             else:
+-                line.extend([b.sym(addr, k.w_tgid)
++                line.extend([b.sym(addr, k.w_tgid).decode('utf-8', 'replace')
+                     for addr in reversed(list(waker_user_stack))])
+         line.append(k.waker.decode('utf-8', 'replace'))
+         print("%s %d" % (";".join(line), v.value))
+-- 
+2.20.1
+
diff --git a/SOURCES/bcc-0.8.0-usdt-s390x.patch b/SOURCES/bcc-0.8.0-usdt-s390x.patch
new file mode 100644
index 0000000..54670c3
--- /dev/null
+++ b/SOURCES/bcc-0.8.0-usdt-s390x.patch
@@ -0,0 +1,180 @@
+From ba41501bb2ca89312061b31c08e570a11c092370 Mon Sep 17 00:00:00 2001
+From: mephi42 <mephi42@gmail.com>
+Date: Tue, 12 Mar 2019 07:02:56 +0100
+Subject: [PATCH] Add basic USDT support for s390x (#2266)
+
+Approach and code shamelessly borrowed from "422db709: Add basic USDT
+support for powerpc64".
+---
+ src/cc/usdt.h              |  7 +++++
+ src/cc/usdt/usdt.cc        |  2 ++
+ src/cc/usdt/usdt_args.cc   | 53 ++++++++++++++++++++++++++++++++++++++
+ tests/cc/test_usdt_args.cc | 46 +++++++++++++++++++++++++++++++++
+ 4 files changed, 108 insertions(+)
+
+diff --git a/src/cc/usdt.h b/src/cc/usdt.h
+index 6d89fd644..406cfd546 100644
+--- a/src/cc/usdt.h
++++ b/src/cc/usdt.h
+@@ -81,6 +81,7 @@ class Argument {
+   friend class ArgumentParser;
+   friend class ArgumentParser_aarch64;
+   friend class ArgumentParser_powerpc64;
++  friend class ArgumentParser_s390x;
+   friend class ArgumentParser_x64;
+ };
+ 
+@@ -130,6 +131,12 @@ class ArgumentParser_powerpc64 : public ArgumentParser {
+   ArgumentParser_powerpc64(const char *arg) : ArgumentParser(arg) {}
+ };
+ 
++class ArgumentParser_s390x : public ArgumentParser {
++public:
++  bool parse(Argument *dest);
++  ArgumentParser_s390x(const char *arg) : ArgumentParser(arg) {}
++};
++
+ class ArgumentParser_x64 : public ArgumentParser {
+ private:
+   enum Register {
+diff --git a/src/cc/usdt/usdt.cc b/src/cc/usdt/usdt.cc
+index 0914fe3a5..c91faa016 100644
+--- a/src/cc/usdt/usdt.cc
++++ b/src/cc/usdt/usdt.cc
+@@ -40,6 +40,8 @@ Location::Location(uint64_t addr, const std::string &bin_path, const char *arg_f
+   ArgumentParser_aarch64 parser(arg_fmt);
+ #elif __powerpc64__
+   ArgumentParser_powerpc64 parser(arg_fmt);
++#elif __s390x__
++  ArgumentParser_s390x parser(arg_fmt);
+ #else
+   ArgumentParser_x64 parser(arg_fmt);
+ #endif
+diff --git a/src/cc/usdt/usdt_args.cc b/src/cc/usdt/usdt_args.cc
+index b27e515f4..3e2045575 100644
+--- a/src/cc/usdt/usdt_args.cc
++++ b/src/cc/usdt/usdt_args.cc
+@@ -285,6 +285,59 @@ bool ArgumentParser_powerpc64::parse(Argument *dest) {
+   return true;
+ }
+ 
++bool ArgumentParser_s390x::parse(Argument *dest) {
++  if (done())
++    return false;
++
++  bool matched;
++  std::cmatch matches;
++#define S390X_IMM "(-?[0-9]+)"
++  std::regex arg_n_regex("^" S390X_IMM "@");
++  // <imm>
++  std::regex arg_op_regex_imm("^" S390X_IMM "(?: +|$)");
++  // %r<N>
++#define S390X_REG "%r([0-9]|1[0-5])"
++  std::regex arg_op_regex_reg("^" S390X_REG "(?: +|$)");
++  // <disp>(%r<N>,%r<N>)
++  std::regex arg_op_regex_mem("^" S390X_IMM "?\\(" S390X_REG
++                              "(?:," S390X_REG ")?\\)(?: +|$)");
++#undef S390X_IMM
++#undef S390X_REG
++
++  matched = std::regex_search(arg_ + cur_pos_, matches, arg_n_regex);
++  if (matched) {
++    dest->arg_size_ = stoi(matches.str(1));
++    cur_pos_ += matches.length(0);
++
++    if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_imm)) {
++      dest->constant_ = stoi(matches.str(1));
++    } else if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_reg)) {
++      dest->base_register_name_ = "gprs[" + matches.str(1) + "]";
++    } else if (std::regex_search(arg_ + cur_pos_, matches, arg_op_regex_mem)) {
++      if (matches.length(1) > 0) {
++        dest->deref_offset_ = stoi(matches.str(1));
++      }
++      dest->base_register_name_ = "gprs[" + matches.str(2) + "]";
++      if (matches.length(3) > 0) {
++        dest->index_register_name_ = "gprs[" + matches.str(3) + "]";
++      }
++    } else {
++      matched = false;
++    }
++  }
++
++  if (!matched) {
++    print_error(cur_pos_);
++    skip_until_whitespace_from(cur_pos_);
++    skip_whitespace_from(cur_pos_);
++    return false;
++  }
++
++  cur_pos_ += matches.length(0);
++  skip_whitespace_from(cur_pos_);
++  return true;
++}
++
+ ssize_t ArgumentParser_x64::parse_identifier(ssize_t pos,
+                                              optional<std::string> *result) {
+   if (isalpha(arg_[pos]) || arg_[pos] == '_') {
+diff --git a/tests/cc/test_usdt_args.cc b/tests/cc/test_usdt_args.cc
+index 3a96c5aac..db1f8c8e6 100644
+--- a/tests/cc/test_usdt_args.cc
++++ b/tests/cc/test_usdt_args.cc
+@@ -58,6 +58,8 @@ TEST_CASE("test usdt argument parsing", "[usdt]") {
+     USDT::ArgumentParser_aarch64 parser("4@[x32,200]");
+ #elif __powerpc64__
+     USDT::ArgumentParser_powerpc64 parser("4@-12(42)");
++#elif __s390x__
++    USDT::ArgumentParser_s390x parser("4@-12(%r42)");
+ #elif defined(__x86_64__)
+     USDT::ArgumentParser_x64 parser("4@i%ra+1r");
+ #endif
+@@ -121,6 +123,50 @@ TEST_CASE("test usdt argument parsing", "[usdt]") {
+     verify_register(parser, 2, 1097);
+     verify_register(parser, 4, "gpr[30]", 108);
+     verify_register(parser, -2, "gpr[31]", -4);
++#elif __s390x__
++    USDT::ArgumentParser_s390x parser(
++        "-4@%r0 8@%r0 8@0 4@0(%r0) -2@0(%r0) "
++        "1@%r0 -2@%r3 -8@9 -1@0(%r4) -4@16(%r6) "
++        "2@%r7 4@%r11 4@-67 8@-16(%r15) 1@-52(%r11) "
++        "-8@%r4 -8@%r14 2@-11 -2@14(%r13) -8@-32(%r12) "
++        "4@%r5 2@%r11 -8@-693 -1@-23(%r10) 4@28(%r9) "
++        "-2@%r3 -4@%r8 2@1097 4@108(%r7) -2@-4(%r6)");
++
++    verify_register(parser, -4, "gprs[0]");
++    verify_register(parser, 8, "gprs[0]");
++    verify_register(parser, 8, 0);
++    verify_register(parser, 4, "gprs[0]", 0);
++    verify_register(parser, -2, "gprs[0]", 0);
++
++    verify_register(parser, 1, "gprs[0]");
++    verify_register(parser, -2, "gprs[3]");
++    verify_register(parser, -8, 9);
++    verify_register(parser, -1, "gprs[4]", 0);
++    verify_register(parser, -4, "gprs[6]", 16);
++
++    verify_register(parser, 2, "gprs[7]");
++    verify_register(parser, 4, "gprs[11]");
++    verify_register(parser, 4, -67);
++    verify_register(parser, 8, "gprs[15]", -16);
++    verify_register(parser, 1, "gprs[11]", -52);
++
++    verify_register(parser, -8, "gprs[4]");
++    verify_register(parser, -8, "gprs[14]");
++    verify_register(parser, 2, -11);
++    verify_register(parser, -2, "gprs[13]", 14);
++    verify_register(parser, -8, "gprs[12]", -32);
++
++    verify_register(parser, 4, "gprs[5]");
++    verify_register(parser, 2, "gprs[11]");
++    verify_register(parser, -8, -693);
++    verify_register(parser, -1, "gprs[10]", -23);
++    verify_register(parser, 4, "gprs[9]", 28);
++
++    verify_register(parser, -2, "gprs[3]");
++    verify_register(parser, -4, "gprs[8]");
++    verify_register(parser, 2, 1097);
++    verify_register(parser, 4, "gprs[7]", 108);
++    verify_register(parser, -2, "gprs[6]", -4);
+ #elif defined(__x86_64__)
+     USDT::ArgumentParser_x64 parser(
+         "-4@$0 8@$1234 %rdi %rax %rsi "
diff --git a/SPECS/bcc.spec b/SPECS/bcc.spec
new file mode 100644
index 0000000..796757e
--- /dev/null
+++ b/SPECS/bcc.spec
@@ -0,0 +1,301 @@
+# luajit is not available RHEL 8
+%bcond_with lua
+
+%bcond_without llvm_static
+
+Name:           bcc
+Version:        0.8.0
+Release:        2%{?dist}
+Summary:        BPF Compiler Collection (BCC)
+License:        ASL 2.0
+URL:            https://github.com/iovisor/bcc
+Source0:        %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
+Patch0:         %{name}-%{version}-usdt-s390x.patch
+Patch1:         %{name}-%{version}-print_log2_hist-check-and-skip-possible-paddings-215.patch
+Patch2:         %{name}-%{version}-tools-fix-some-python3-bytes-vs-strings-issues-2205.patch
+
+# Arches will be included as upstream support is added and dependencies are
+# satisfied in the respective arches
+ExcludeArch: i686
+
+BuildRequires:  bison, cmake >= 2.8.7, flex, libxml2-devel
+BuildRequires:  python3-devel
+BuildRequires:  elfutils-libelf-devel
+BuildRequires:  llvm-devel
+BuildRequires:  clang-devel
+BuildRequires:  ncurses-devel
+%if %{with lua}
+BuildRequires: pkgconfig(luajit)
+%endif
+%if %{with llvm_static}
+BuildRequires:  llvm-static
+%endif
+
+BuildRequires: clang
+
+Requires:       %{name}-tools = %{version}-%{release}
+
+%description
+BCC is a toolkit for creating efficient kernel tracing and manipulation
+programs, and includes several useful tools and examples. It makes use of
+extended BPF (Berkeley Packet Filters), formally known as eBPF, a new feature
+that was first added to Linux 3.15. BCC makes BPF programs easier to write,
+with kernel instrumentation in C (and includes a C wrapper around LLVM), and
+front-ends in Python and lua. It is suited for many tasks, including
+performance analysis and network traffic control.
+
+
+%package devel
+Summary:        Shared library for BPF Compiler Collection (BCC)
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description devel
+The %{name}-devel package contains libraries and header files for developing
+application that use BPF Compiler Collection (BCC).
+
+
+%package doc
+Summary:        Examples for BPF Compiler Collection (BCC)
+Recommends:     python3-%{name} = %{version}-%{release}
+%if %{with lua}
+Recommends:     %{name}-lua = %{version}-%{release}
+%endif
+BuildArch:      noarch
+
+%description doc
+Examples for BPF Compiler Collection (BCC)
+
+
+%package -n python3-%{name}
+Summary:        Python3 bindings for BPF Compiler Collection (BCC)
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+%{?python_provide:%python_provide python3-%{srcname}}
+
+%description -n python3-%{name}
+Python3 bindings for BPF Compiler Collection (BCC)
+
+
+%if %{with lua}
+%package lua
+Summary:        Standalone tool to run BCC tracers written in Lua
+Requires:       %{name}%{?_isa} = %{version}-%{release}
+
+%description lua
+Standalone tool to run BCC tracers written in Lua
+%endif
+
+
+%package tools
+Summary:        Command line tools for BPF Compiler Collection (BCC)
+Requires:       python3-%{name} = %{version}-%{release}
+Requires:       python3-netaddr
+Requires:       kernel-devel
+
+%description tools
+Command line tools for BPF Compiler Collection (BCC)
+
+%prep
+%autosetup -p1
+
+%build
+%cmake . \
+        -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+        -DREVISION_LAST=%{version} -DREVISION=%{version} -DPYTHON_CMD=python3
+%make_build
+
+%install
+%make_install
+
+# Fix python shebangs
+# This messes the timestamp and rpmdiff complains about it
+# Let's set the all thing according to a reference file
+touch -r %{buildroot}%{_datadir}/%{name}/examples/hello_world.py %{_tmppath}/timestamp
+
+find %{buildroot}%{_datadir}/%{name}/{tools,examples} -type f -exec \
+  sed -i -e '1s=^#!/usr/bin/python\([0-9.]\+\)\?$=#!%{__python3}=' \
+         -e '1s=^#!/usr/bin/env python\([0-9.]\+\)\?$=#!%{__python3}=' \
+         -e '1s=^#!/usr/bin/env bcc-lua$=#!/usr/bin/bcc-lua=' {} \;
+
+for i in `find %{buildroot}%{_datadir}/%{name}/examples/` ; do
+    touch -h -r %{_tmppath}/timestamp $i
+done
+
+# Move man pages to the right location
+mkdir -p %{buildroot}%{_mandir}
+mv %{buildroot}%{_datadir}/%{name}/man/* %{buildroot}%{_mandir}/
+# Avoid conflict with other manpages
+# https://bugzilla.redhat.com/show_bug.cgi?id=1517408
+for i in `find %{buildroot}%{_mandir} -name "*.gz"`; do
+  tname=$(basename $i)
+  rename $tname %{name}-$tname $i
+done
+# Fix the symlink too
+for i in `find %{buildroot}%{_mandir} -lname \*.gz` ; do
+    target=`readlink $i`;
+    ln -sf bcc-$target $i;
+done
+
+# We cannot run the test suit since it requires root and it makes changes to
+# the machine (e.g, IP address)
+#%check
+
+%ldconfig_scriptlets
+
+%files
+%doc README.md
+%license LICENSE.txt
+%{_libdir}/lib%{name}.so.*
+%{_libdir}/libbpf.so.*
+
+%files devel
+%{_libdir}/lib%{name}.so
+%{_libdir}/libbpf.so
+%{_libdir}/pkgconfig/lib%{name}.pc
+%{_includedir}/%{name}/
+
+%files -n python3-%{name}
+%{python3_sitelib}/%{name}*
+
+%files doc
+# % dir % {_docdir}/% {name}
+%doc %{_datadir}/%{name}/examples/
+%if %{without lua}
+%exclude %{_datadir}/%{name}/examples/lua
+%endif
+
+%files tools
+%dir %{_datadir}/%{name}
+%dir %{_datadir}/%{name}/tools
+%dir %{_datadir}/%{name}/introspection
+%{_datadir}/%{name}/tools/*
+%{_datadir}/%{name}/introspection/*
+%exclude %{_datadir}/%{name}/tools/old/
+# inject relies on BPF_KPROBE_OVERRIDE which is not set on RHEL 8
+%exclude %{_datadir}/%{name}/tools/inject
+%exclude %{_datadir}/%{name}/tools/doc/inject_example.txt
+%exclude %{_mandir}/man8/bcc-inject.8.gz
+# Neither btrfs nor zfs are available on RHEL8
+%exclude %{_datadir}/%{name}/tools/btrfs*
+%exclude %{_datadir}/%{name}/tools/doc/btrfs*
+%exclude %{_mandir}/man8/bcc-btrfs*
+%exclude %{_datadir}/%{name}/tools/zfs*
+%exclude %{_datadir}/%{name}/tools/doc/zfs*
+%exclude %{_mandir}/man8/bcc-zfs*
+%{_mandir}/man8/*
+
+%if %{with lua}
+%files lua
+%{_bindir}/bcc-lua
+%endif
+
+
+%changelog
+* Wed May 15 2019 Jerome Marchand <jmarchan@redhat.com> - 0.8.0-2
+- Rebuild for llvm 8
+
+* Thu Apr 11 2019 Jerome Marchand <jmarchan@redhat.com> - 0.8.0-1
+- Rebase on bcc-8.0.0
+- Replace the temporary s390x workaround by a proper fix
+- Remove the doc of excluded tool from the package
+- Fix print_log2_hist
+- Fix yet a few other python3 bytes vs strings issues
+
+* Mon Mar 25 2019 Jerome Marchand <jmarchan@redhat.com> - 0.7.0-6
+- Add CI gating
+
+* Thu Dec 13 2018 Jerome Marchand <jmarchan@redhat.com> - 0.7.0-5
+- Fix biolatency -D
+- Fix biotop manpage
+- Rebuild for LLVM 7.0.1 (from Tom Stellard)
+
+* Mon Dec 10 2018 Jerome Marchand <jmarchan@redhat.com> - 0.7.0-4
+- Fix bio* tools
+
+* Mon Nov 05 2018 Jerome Marchand <jmarchan@redhat.com> - 0.7.0-3
+- Fix multiple bytes/string encoding issues
+- Fix misc covscan warning
+
+* Mon Oct 15 2018 Tom Stellard <tstellar@redhat.com> - 0.7.0-2
+- Drop explicit dependency on clang-libs
+
+* Fri Oct 12 2018 Jerome Marchand <jmarchan@redhat.com> - 0.7.0-1
+- Rebase on bcc-7.0.0
+- Remove useless tools (zfs*, btrfs* and inject) 
+
+* Thu Sep 20 2018 Jerome Marchand <jmarchan@redhat.com> - 0.6.1-1
+- Rebase on bcc-0.6.1
+
+* Thu Sep 20 2018 Jerome Marchand <jmarchan@redhat.com> - 0.6.0-6
+- llcstat: print a nicer error message on virtual machine
+- Add NSS support to sslsniff
+- Fixes miscellaneous error uncovered by covscan
+
+* Wed Aug 08 2018 Tom Stellard <tstellar@redhat.com> - 0.6.0-5
+- Use llvm-toolset-6.0 prefix for clang-libs dependency
+
+* Fri Aug 03 2018 Tom Stellard <tstellar@redhat.com> - 0.6.0-4
+- Rebuld for llvm-toolset-6.0
+
+* Wed Jul 18 2018 Jerome Marchand <jmarchan@redhat.com> - 0.6.0-3
+ - Disable lua on all arches
+
+* Tue Jun 26 2018 Jerome Marchand <jmarchan@redhat.com> - 0.6.0-2
+- Add clang-libs requirement
+- Fix manpages symlinks
+
+* Tue Jun 19 2018 Jerome Marchand <jmarchan@redhat.com> - 0.6.0-1
+- Rebase on bcc-0.6.0
+
+* Thu May 24 2018 Jerome Marchand <jmarchan@redhat.com> - 0.5.0-5
+- Enables build on ppc64(le) and s390x arches
+
+* Thu Apr 05 2018 Rafael Santos <rdossant@redhat.com> - 0.5.0-4
+- Resolves #1555627 - fix compilation error with latest llvm/clang
+
+* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.5.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
+
+* Fri Feb 02 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.5.0-2
+- Switch to %%ldconfig_scriptlets
+
+* Wed Jan 03 2018 Rafael Santos <rdossant@redhat.com> - 0.5.0-1
+- Rebase to new released version
+
+* Thu Nov 16 2017 Rafael Santos <rdossant@redhat.com> - 0.4.0-4
+- Resolves #1517408 - avoid conflict with other manpages
+
+* Thu Nov 02 2017 Rafael Santos <rdossant@redhat.com> - 0.4.0-3
+- Use weak deps to not require lua subpkg on ppc64(le)
+
+* Wed Nov 01 2017 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 0.4.0-2
+- Rebuild for LLVM5
+
+* Wed Nov 01 2017 Rafael Fonseca <rdossant@redhat.com> - 0.4.0-1
+- Resolves #1460482 - rebase to new release
+- Resolves #1505506 - add support for LLVM 5.0
+- Resolves #1460482 - BPF module compilation issue
+- Partially address #1479990 - location of man pages
+- Enable ppc64(le) support without lua
+- Soname versioning for libbpf by ignatenkobrain
+
+* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
+
+* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
+
+* Thu Mar 30 2017 Igor Gnatenko <ignatenko@redhat.com> - 0.3.0-2
+- Rebuild for LLVM4
+- Trivial fixes in spec
+
+* Fri Mar 10 2017 Rafael Fonseca <rdossant@redhat.com> - 0.3.0-1
+- Rebase to new release.
+
+* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.2.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
+
+* Tue Jan 10 2017 Rafael Fonseca <rdossant@redhat.com> - 0.2.0-2
+- Fix typo
+
+* Tue Nov 29 2016 Rafael Fonseca <rdossant@redhat.com> - 0.2.0-1
+- Initial import