- Rebase on libpfm-4.10.0.
- Use Python 3.
This commit is contained in:
parent
75e5fed5de
commit
360481a7b3
1
.gitignore
vendored
1
.gitignore
vendored
@ -8,3 +8,4 @@
|
|||||||
/libpfm-4.7.0.tar.gz
|
/libpfm-4.7.0.tar.gz
|
||||||
/libpfm-4.8.0.tar.gz
|
/libpfm-4.8.0.tar.gz
|
||||||
/libpfm-4.9.0.tar.gz
|
/libpfm-4.9.0.tar.gz
|
||||||
|
/libpfm-4.10.0.tar.gz
|
||||||
|
13
libpfm-cavium-tx2.patch
Normal file
13
libpfm-cavium-tx2.patch
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/lib/Makefile b/lib/Makefile
|
||||||
|
index 129db90..f1241ad 100644
|
||||||
|
--- a/lib/Makefile
|
||||||
|
+++ b/lib/Makefile
|
||||||
|
@@ -360,7 +360,7 @@ INC_ARM=pfmlib_arm_priv.h \
|
||||||
|
events/arm_cortex_a15_events.h \
|
||||||
|
events/arm_cortex_a57_events.h \
|
||||||
|
events/arm_cortex_a53_events.h \
|
||||||
|
- events/arm_thunderx2_events.h
|
||||||
|
+ events/arm_cavium_tx2_events.h
|
||||||
|
|
||||||
|
INC_ARM64=events/arm_cortex_a57_events.h \
|
||||||
|
events/arm_cortex_a53_events.h
|
10
libpfm-python3-setup.patch
Normal file
10
libpfm-python3-setup.patch
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
diff --git a/python/setup.py b/python/setup.py
|
||||||
|
index eda8fa5..dff0f27 100755
|
||||||
|
--- a/python/setup.py
|
||||||
|
+++ b/python/setup.py
|
||||||
|
@@ -1,4 +1,4 @@
|
||||||
|
-#!/usr/bin/env python
|
||||||
|
+#!/usr/bin/env python3
|
||||||
|
|
||||||
|
from distutils.core import setup, Extension
|
||||||
|
from distutils.command.install_data import install_data
|
@ -1,85 +0,0 @@
|
|||||||
diff --git a/lib/pfmlib_perf_event_pmu.c b/lib/pfmlib_perf_event_pmu.c
|
|
||||||
index 86ff824..ca371d8 100644
|
|
||||||
--- a/lib/pfmlib_perf_event_pmu.c
|
|
||||||
+++ b/lib/pfmlib_perf_event_pmu.c
|
|
||||||
@@ -344,6 +344,7 @@ gen_tracepoint_table(void)
|
|
||||||
|
|
||||||
err = 0;
|
|
||||||
while((d1 = readdir(dir1)) && err >= 0) {
|
|
||||||
+ int retlen;
|
|
||||||
|
|
||||||
if (!strcmp(d1->d_name, "."))
|
|
||||||
continue;
|
|
||||||
@@ -351,7 +352,10 @@ gen_tracepoint_table(void)
|
|
||||||
if (!strcmp(d1->d_name, ".."))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
- snprintf(d2path, MAXPATHLEN, "%s/%s", debugfs_mnt, d1->d_name);
|
|
||||||
+ retlen = snprintf(d2path, MAXPATHLEN, "%s/%s", debugfs_mnt, d1->d_name);
|
|
||||||
+ /* if string truncated do not try to open the corrupted path */
|
|
||||||
+ if (retlen < 0 || retlen >= MAXPATHLEN)
|
|
||||||
+ continue;
|
|
||||||
|
|
||||||
/* fails if d2path is not a directory */
|
|
||||||
dir2 = opendir(d2path);
|
|
||||||
@@ -398,10 +402,16 @@ gen_tracepoint_table(void)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
#ifdef HAS_OPENAT
|
|
||||||
- snprintf(idpath, MAXPATHLEN, "%s/id", d2->d_name);
|
|
||||||
+ retlen = snprintf(idpath, MAXPATHLEN, "%s/id", d2->d_name);
|
|
||||||
+ /* if string truncated do not try to open the corrupted path */
|
|
||||||
+ if (retlen < 0 || retlen >= MAXPATHLEN)
|
|
||||||
+ continue;
|
|
||||||
fd = openat(dir2_fd, idpath, O_RDONLY);
|
|
||||||
#else
|
|
||||||
- snprintf(idpath, MAXPATHLEN, "%s/%s/id", d2path, d2->d_name);
|
|
||||||
+ retlen = snprintf(idpath, MAXPATHLEN, "%s/%s/id", d2path, d2->d_name);
|
|
||||||
+ /* if string truncated do not try to open the corrupted path */
|
|
||||||
+ if (retlen < 0 || retlen >= MAXPATHLEN)
|
|
||||||
+ continue;
|
|
||||||
fd = open(idpath, O_RDONLY);
|
|
||||||
#endif
|
|
||||||
if (fd == -1)
|
|
||||||
diff --git a/perf_examples/syst_count.c b/perf_examples/syst_count.c
|
|
||||||
index e0fa42e..7841d01 100644
|
|
||||||
--- a/perf_examples/syst_count.c
|
|
||||||
+++ b/perf_examples/syst_count.c
|
|
||||||
@@ -112,12 +112,14 @@ open_cgroup(char *name)
|
|
||||||
{
|
|
||||||
char path[MAX_PATH+1];
|
|
||||||
char mnt[MAX_PATH+1];
|
|
||||||
- int cfd;
|
|
||||||
+ int cfd, retlen;
|
|
||||||
|
|
||||||
if (cgroupfs_find_mountpoint(mnt, MAX_PATH+1))
|
|
||||||
errx(1, "cannot find cgroup fs mount point");
|
|
||||||
|
|
||||||
- snprintf(path, MAX_PATH, "%s/%s", mnt, name);
|
|
||||||
+ retlen = snprintf(path, MAX_PATH, "%s/%s", mnt, name);
|
|
||||||
+ if (retlen < 0 || retlen >= MAX_PATH)
|
|
||||||
+ warn("path truncated %s/%s\n", mnt, name);
|
|
||||||
|
|
||||||
cfd = open(path, O_RDONLY);
|
|
||||||
if (cfd == -1)
|
|
||||||
diff --git a/perf_examples/syst_smpl.c b/perf_examples/syst_smpl.c
|
|
||||||
index 6b70e0e..a8b00df 100755
|
|
||||||
--- a/perf_examples/syst_smpl.c
|
|
||||||
+++ b/perf_examples/syst_smpl.c
|
|
||||||
@@ -278,12 +278,14 @@ open_cgroup(char *name)
|
|
||||||
{
|
|
||||||
char path[MAX_PATH+1];
|
|
||||||
char mnt[MAX_PATH+1];
|
|
||||||
- int cfd;
|
|
||||||
+ int cfd, retlen;
|
|
||||||
|
|
||||||
if (cgroupfs_find_mountpoint(mnt, MAX_PATH+1))
|
|
||||||
errx(1, "cannot find cgroup fs mount point");
|
|
||||||
|
|
||||||
- snprintf(path, MAX_PATH, "%s/%s", mnt, name);
|
|
||||||
+ retlen = snprintf(path, MAX_PATH, "%s/%s", mnt, name);
|
|
||||||
+ if (retlen < 0 || retlen >= MAX_PATH)
|
|
||||||
+ warn("path truncated %s/%s\n", mnt, name);
|
|
||||||
|
|
||||||
cfd = open(path, O_RDONLY);
|
|
||||||
if (cfd == -1)
|
|
31
libpfm.spec
31
libpfm.spec
@ -1,7 +1,7 @@
|
|||||||
%bcond_without python
|
%bcond_without python
|
||||||
%if %{with python}
|
%if %{with python}
|
||||||
%define python_sitearch %(python -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")
|
%define python_sitearch %(python3 -c "from distutils.sysconfig import get_python_lib; print (get_python_lib(1))")
|
||||||
%define python_prefix %(python -c "import sys; print sys.prefix")
|
%define python_prefix %(python3 -c "import sys; print (sys.prefix)")
|
||||||
%{?filter_setup:
|
%{?filter_setup:
|
||||||
%filter_provides_in %{python_sitearch}/perfmon/.*\.so$
|
%filter_provides_in %{python_sitearch}/perfmon/.*\.so$
|
||||||
%filter_setup
|
%filter_setup
|
||||||
@ -9,8 +9,8 @@
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
Name: libpfm
|
Name: libpfm
|
||||||
Version: 4.9.0
|
Version: 4.10.0
|
||||||
Release: 6%{?dist}
|
Release: 1%{?dist}
|
||||||
|
|
||||||
Summary: Library to encode performance events for use by perf tool
|
Summary: Library to encode performance events for use by perf tool
|
||||||
|
|
||||||
@ -18,11 +18,13 @@ Group: System Environment/Libraries
|
|||||||
License: MIT
|
License: MIT
|
||||||
URL: http://perfmon2.sourceforge.net/
|
URL: http://perfmon2.sourceforge.net/
|
||||||
Source0: http://sourceforge.net/projects/perfmon2/files/libpfm4/%{name}-%{version}.tar.gz
|
Source0: http://sourceforge.net/projects/perfmon2/files/libpfm4/%{name}-%{version}.tar.gz
|
||||||
Patch1: libpfm-truncation.patch
|
Patch1: libpfm-cavium-tx2.patch
|
||||||
|
Patch2: libpfm-python3-setup.patch
|
||||||
|
|
||||||
%if %{with python}
|
%if %{with python}
|
||||||
BuildRequires: python2-devel
|
BuildRequires: python3
|
||||||
BuildRequires: python2-setuptools
|
BuildRequires: python3-devel
|
||||||
|
BuildRequires: python3-setuptools
|
||||||
BuildRequires: swig
|
BuildRequires: swig
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
@ -51,8 +53,8 @@ Static version of the libpfm library for performance monitoring
|
|||||||
applications for the perf_events interface.
|
applications for the perf_events interface.
|
||||||
|
|
||||||
%if %{with python}
|
%if %{with python}
|
||||||
%package -n python2-libpfm
|
%package -n python3-libpfm
|
||||||
%{?python_provide:%python_provide python2-libpfm}
|
%{?python_provide:%python_provide python3-libpfm}
|
||||||
# Remove before F30
|
# Remove before F30
|
||||||
Provides: %{name}-python = %{version}-%{release}
|
Provides: %{name}-python = %{version}-%{release}
|
||||||
Provides: %{name}-python%{?_isa} = %{version}-%{release}
|
Provides: %{name}-python%{?_isa} = %{version}-%{release}
|
||||||
@ -61,13 +63,14 @@ Summary: Python bindings for libpfm and perf_event_open system call
|
|||||||
Group: Development/Languages
|
Group: Development/Languages
|
||||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||||
|
|
||||||
%description -n python2-libpfm
|
%description -n python3-libpfm
|
||||||
Python bindings for libpfm4 and perf_event_open system call.
|
Python bindings for libpfm4 and perf_event_open system call.
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1 -b .trun
|
%patch1 -p1 -b .cavium
|
||||||
|
%patch2 -p1 -b .python3
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%if %{with python}
|
%if %{with python}
|
||||||
@ -111,11 +114,15 @@ make \
|
|||||||
%{_libdir}/lib*.a
|
%{_libdir}/lib*.a
|
||||||
|
|
||||||
%if %{with python}
|
%if %{with python}
|
||||||
%files -n python2-libpfm
|
%files -n python3-libpfm
|
||||||
%{python_sitearch}/*
|
%{python_sitearch}/*
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Jun 8 2018 William Cohen <wcohen@redhat.com> - 4.10.0-1
|
||||||
|
- Rebase on libpfm-4.10.0.
|
||||||
|
- Use Python 3.
|
||||||
|
|
||||||
* Mon Feb 26 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.9.0-6
|
* Mon Feb 26 2018 Fedora Release Engineering <releng@fedoraproject.org> - 4.9.0-6
|
||||||
- Pass in LDFLAGS for build.
|
- Pass in LDFLAGS for build.
|
||||||
|
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (libpfm-4.9.0.tar.gz) = 9e62556a5e8029b94383bd54176c5171fec7f919b6826d5d348837540922874c922eb0e01d7835c388ae28809c798f4b3da8ba751777767ce4a0e47ddab2b645
|
SHA512 (libpfm-4.10.0.tar.gz) = c2e1a7d389efebc27a32dd3a5a6f3e8e8d624347616e06daf7bf06c0d5b8ca39cee5821ad5cf23330d47ed987697fcc05aa54660b8f6899f62aad9cd05e908f9
|
||||||
|
Loading…
Reference in New Issue
Block a user