[papi] Fixes to make papi with unbundled libpfm.
William Eden Cohen
wcohen at fedoraproject.org
Thu Aug 30 15:48:18 UTC 2012
commit 600459f55c9abc231138f7c4a6e351bfaaddf4ff
Author: William Cohen <wcohen at redhat.com>
Date: Thu Aug 30 11:47:43 2012 -0400
Fixes to make papi with unbundled libpfm.
papi-siginfo.patch | 12 --
papi-unbundled-libpfm4.patch | 359 ++++++++++++++++++++++++++++++++++++++++++
papi.spec | 12 +-
3 files changed, 368 insertions(+), 15 deletions(-)
---
diff --git a/papi-unbundled-libpfm4.patch b/papi-unbundled-libpfm4.patch
new file mode 100644
index 0000000..d816e7e
--- /dev/null
+++ b/papi-unbundled-libpfm4.patch
@@ -0,0 +1,359 @@
+commit bc9ddffc849009110176c9a4d9deedb679589856
+Author: Vince Weaver <vweaver1 at eecs.utk.edu>
+Date: Tue Aug 28 14:54:04 2012 -0400
+
+ Fix compiling with separate libpfm4
+
+ The problem was if you used any of the --with-pfm-incdir
+ type directives to configure, it would them assume you wanted
+ a perfmon2 build.
+
+ This removes that assumption.
+
+ I did check this with perfmon2, perfctr, and perf_event builds
+ so hopefully I didn't break anything.
+
+diff --git a/src/configure b/src/configure
+index 50b76ed..1a802e2 100755
+--- a/src/configure
++++ b/src/configure
+@@ -5290,6 +5290,9 @@ fi
+ echo "$as_me:$LINENO: result: $shlib" >&5
+ echo "${ECHO_T}$shlib" >&6
+
++# default
++pfm_incdir="libpfm4/include/"
++
+ ##################################################
+ # perfctr
+ ##################################################
+@@ -5358,6 +5361,7 @@ fi
+ fi
+
+ if test "$perfctr" != 0; then
++ pfm_incdir="libpfm-3.y/include/"
+ echo "$as_me:$LINENO: checking for perfctr version" >&5
+ echo $ECHO_N "checking for perfctr version... $ECHO_C" >&6
+ if test "$perfctr" = 7 -a "$arch" != "ppc64"; then
+@@ -5717,6 +5721,7 @@ if test "${with_perfmon+set}" = set; then
+ perfmon=$withval
+ user_specified_interface=perfmon
+ force_perfmon2=yes
++ pfm_incdir="libpfm-3.y/include"
+ perfmon=`echo ${perfmon} | sed 's/^ \t*//;s/ \t*$//'`
+ perfmon=`echo ${perfmon} | grep -e '[1-9]\.[0-9][0-9]*'`
+ if test "x$perfmon" = "x"; then
+@@ -5797,32 +5802,30 @@ fi
+ fi;
+
+
++
++
+ # Check whether --with-pfm_root or --without-pfm_root was given.
+ if test "${with_pfm_root+set}" = set; then
+ withval="$with_pfm_root"
+ pfm_root=$withval
+- user_specified_interface=perfmon
+ fi;
+
+ # Check whether --with-pfm_prefix or --without-pfm_prefix was given.
+ if test "${with_pfm_prefix+set}" = set; then
+ withval="$with_pfm_prefix"
+ pfm_prefix=$withval
+- user_specified_interface=perfmon
+ fi;
+
+ # Check whether --with-pfm_incdir or --without-pfm_incdir was given.
+ if test "${with_pfm_incdir+set}" = set; then
+ withval="$with_pfm_incdir"
+ pfm_incdir=$withval
+- user_specified_interface=perfmon
+ fi;
+
+ # Check whether --with-pfm_libdir or --without-pfm_libdir was given.
+ if test "${with_pfm_libdir+set}" = set; then
+ withval="$with_pfm_libdir"
+ pfm_libdir=$withval
+- user_specified_interface=perfmon
+ fi;
+
+
+@@ -5831,7 +5834,7 @@ fi;
+ ##################################################
+ perf_events=no
+ force_perf_events=no
+-pe_incdir="libpfm4/include/perfmon"
++pe_incdir="$pfm_incdir/perfmon"
+
+
+ # Check whether --with-perf_events or --without-perf_events was given.
+diff --git a/src/configure.in b/src/configure.in
+index 6e79436..6a36421 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -766,6 +766,9 @@ if test "$papiLIBS" != "shared static"; then
+ fi
+ AC_MSG_RESULT($shlib)
+
++# default
++pfm_incdir="libpfm4/include/"
++
+ ##################################################
+ # perfctr
+ ##################################################
+@@ -788,6 +791,7 @@ if test "$cross_compiling" = "no" ; then
+ fi
+
+ if test "$perfctr" != 0; then
++ pfm_incdir="libpfm-3.y/include/"
+ AC_MSG_CHECKING(for perfctr version)
+ if test "$perfctr" = 7 -a "$arch" != "ppc64"; then
+ AC_MSG_ERROR([Perfctr 2.7.x only works on PPC64 machines. Patch kernel with 2.6.x.])
+@@ -871,6 +875,7 @@ AC_ARG_WITH(perfmon,
+ [perfmon=$withval
+ user_specified_interface=perfmon
+ force_perfmon2=yes
++ pfm_incdir="libpfm-3.y/include"
+ perfmon=`echo ${perfmon} | sed 's/^[ \t]*//;s/[ \t]*$//'`
+ perfmon=`echo ${perfmon} | grep -e '[[1-9]]\.[[0-9]][[0-9]]*'`
+ if test "x$perfmon" = "x"; then
+@@ -906,22 +911,20 @@ AC_ARG_WITH(perfmon,
+ fi
+ fi])
+
++
++
+ AC_ARG_WITH(pfm_root,
+ [ --with-pfm-root=<path> Specify path to source tree (for use by developers only) ],
+- [pfm_root=$withval
+- user_specified_interface=perfmon])
++ [pfm_root=$withval])
+ AC_ARG_WITH(pfm_prefix,
+ [ --with-pfm-prefix=<path> Specify prefix to installed pfm distribution ],
+- [pfm_prefix=$withval
+- user_specified_interface=perfmon])
++ [pfm_prefix=$withval])
+ AC_ARG_WITH(pfm_incdir,
+ [ --with-pfm-incdir=<path> Specify directory of pfm header files in non-standard location ],
+- [pfm_incdir=$withval
+- user_specified_interface=perfmon])
++ [pfm_incdir=$withval])
+ AC_ARG_WITH(pfm_libdir,
+ [ --with-pfm-libdir=<path> Specify directory of pfm library in non-standard location ],
+- [pfm_libdir=$withval
+- user_specified_interface=perfmon])
++ [pfm_libdir=$withval])
+
+
+ ##################################################
+@@ -929,7 +932,7 @@ AC_ARG_WITH(pfm_libdir,
+ ##################################################
+ perf_events=no
+ force_perf_events=no
+-pe_incdir="libpfm4/include/perfmon"
++pe_incdir="$pfm_incdir/perfmon"
+
+ AC_ARG_WITH(perf_events,
+ [ --with-perf-events Specify use of Linux Performance Event (requires kernel 2.6.32 or greater)],
+commit f4465bbb633d6a123093fe20b7c1c091d3067a07
+Author: Vince Weaver <vweaver1 at eecs.utk.edu>
+Date: Tue Aug 28 14:55:30 2012 -0400
+
+ Add some spacing to the Rules.pfm4_pe
+
+ Otherwise it was difficult figuring out what the nested set
+ of if/ifdefs was doing.
+
+diff --git a/src/Rules.pfm4_pe b/src/Rules.pfm4_pe
+index 25e7441..56a2f07 100644
+--- a/src/Rules.pfm4_pe
++++ b/src/Rules.pfm4_pe
+@@ -2,23 +2,23 @@
+ DESCR = "Linux with perf_event kernel support and libpfm4"
+
+ ifneq (/usr,$(PFM_PREFIX))
+-PWD = $(shell pwd)
+-ifeq (,$(PFM_LIB_PATH))
+-ifeq (,$(PFM_ROOT))
+- PFM_ROOT := $(PWD)/libpfm4
+-endif
+- PFM_LIB_PATH := $(PFM_ROOT)/lib
+- CC_SHR += -Wl,-rpath-link -Wl,$(PFM_LIB_PATH)
+-endif
+-ifeq (,$(PFM_INC_PATH))
+-ifeq (,$(PFM_ROOT))
+- PFM_ROOT := $(PWD)/libpfm4
+-endif
+- PFM_INC_PATH := $(PFM_ROOT)/include
+-endif
+-ifneq (/usr/include,$(PFM_INC_PATH))
+-CFLAGS += -I$(PFM_INC_PATH)
+-endif
++ PWD = $(shell pwd)
++ ifeq (,$(PFM_LIB_PATH))
++ ifeq (,$(PFM_ROOT))
++ PFM_ROOT := $(PWD)/libpfm4
++ endif
++ PFM_LIB_PATH := $(PFM_ROOT)/lib
++ CC_SHR += -Wl,-rpath-link -Wl,$(PFM_LIB_PATH)
++ endif
++ ifeq (,$(PFM_INC_PATH))
++ ifeq (,$(PFM_ROOT))
++ PFM_ROOT := $(PWD)/libpfm4
++ endif
++ PFM_INC_PATH := $(PFM_ROOT)/include
++ endif
++ ifneq (/usr/include,$(PFM_INC_PATH))
++ CFLAGS += -I$(PFM_INC_PATH)
++ endif
+ endif
+
+ MISCHDRS += linux-lock.h mb.h papi_libpfm4_events.h $(PAPI_EVENTS_TABLE)
+commit 729a87213660a2136ea227c79313ebcc2eb97989
+Author: Vince Weaver <vweaver1 at eecs.utk.edu>
+Date: Tue Aug 28 17:02:07 2012 -0400
+
+ configure: don't check for libpfm if incdir specified
+
+ When various --with-pfm values are passed, extra checks are done
+ against the libpfm library. This was being done even if only
+ the include path was specified, which probably shouldn't be necessary.
+
+ This broke things because a recent change I made had the
+ libpfm include path be always valid.
+
+diff --git a/src/configure b/src/configure
+index 1a802e2..dd18bbf 100755
+--- a/src/configure
++++ b/src/configure
+@@ -5407,11 +5407,11 @@ if test "$perfctr" != 0; then
+ dotest=0
+ if test "x$perfctr_root" != "x"; then
+ LIBS="-L$perfctr_root/usr.lib -lperfctr"
+- CPPFLAGS="-I$perfctr_root/usr.lib -I$perfctr_root/linux/include"
++ CPPFLAGS="$CPPFLAGS -I$perfctr_root/usr.lib -I$perfctr_root/linux/include"
+ dotest=1
+ elif test "x$perfctr_prefix" != "x"; then
+ LIBS="-L$perfctr_prefix/lib -lperfctr"
+- CPPFLAGS="-I$perfctr_prefix/include"
++ CPPFLAGS="$CPPFLAGS -I$perfctr_prefix/include"
+ perfctr_libdir="$perfctr_prefix/lib"
+ perfctr_incdir="$perfctr_prefix/include"
+ dotest=1
+@@ -5425,6 +5425,7 @@ if test "$perfctr" != 0; then
+ dotest=1
+ fi
+ fi
++
+ if test "$dotest" = 1; then
+ echo "$as_me:$LINENO: checking for vperfctr_open in -lperfctr" >&5
+ echo $ECHO_N "checking for vperfctr_open in -lperfctr... $ECHO_C" >&6
+@@ -5955,11 +5956,11 @@ if test "$perfmon" != 0 -o "$perf_events" = "yes"; then
+ dotest=0
+ if test "x$pfm_root" != "x"; then
+ LIBS="-L$pfm_root/lib -lpfm"
+- CPPFLAGS="-I$pfm_root/include"
++ CPPFLAGS="$CPPFLAGS -I$pfm_root/include"
+ dotest=1
+ elif test "x$pfm_prefix" != "x"; then
+ LIBS="-L$pfm_prefix/lib -lpfm"
+- CPPFLAGS="-I$pfm_prefix/include"
++ CPPFLAGS="$CPPFLAGS -I$pfm_prefix/include"
+ if test "x$pfm_libdir" = "x"; then
+ pfm_libdir="$pfm_prefix/lib"
+ fi
+@@ -5973,8 +5974,7 @@ if test "$perfmon" != 0 -o "$perf_events" = "yes"; then
+ dotest=1
+ fi
+ if test "x$pfm_incdir" != "x"; then
+- CPPFLAGS="-I$pfm_incdir"
+- dotest=1
++ CPPFLAGS="$CPPFLAGS -I$pfm_incdir"
+ fi
+ fi
+ if test "$dotest" = 1; then
+diff --git a/src/configure.in b/src/configure.in
+index 6a36421..c286c62 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -821,11 +821,11 @@ if test "$perfctr" != 0; then
+ dotest=0
+ if test "x$perfctr_root" != "x"; then
+ LIBS="-L$perfctr_root/usr.lib -lperfctr"
+- CPPFLAGS="-I$perfctr_root/usr.lib -I$perfctr_root/linux/include"
++ CPPFLAGS="$CPPFLAGS -I$perfctr_root/usr.lib -I$perfctr_root/linux/include"
+ dotest=1
+ elif test "x$perfctr_prefix" != "x"; then
+ LIBS="-L$perfctr_prefix/lib -lperfctr"
+- CPPFLAGS="-I$perfctr_prefix/include"
++ CPPFLAGS="$CPPFLAGS -I$perfctr_prefix/include"
+ perfctr_libdir="$perfctr_prefix/lib"
+ perfctr_incdir="$perfctr_prefix/include"
+ dotest=1
+@@ -839,6 +839,7 @@ if test "$perfctr" != 0; then
+ dotest=1
+ fi
+ fi
++
+ if test "$dotest" = 1; then
+ AC_CHECK_LIB([perfctr], [vperfctr_open],
+ [AC_CHECK_HEADERS([libperfctr.h],
+@@ -1004,11 +1005,11 @@ if test "$perfmon" != 0 -o "$perf_events" = "yes"; then
+ dotest=0
+ if test "x$pfm_root" != "x"; then
+ LIBS="-L$pfm_root/lib -lpfm"
+- CPPFLAGS="-I$pfm_root/include"
++ CPPFLAGS="$CPPFLAGS -I$pfm_root/include"
+ dotest=1
+ elif test "x$pfm_prefix" != "x"; then
+ LIBS="-L$pfm_prefix/lib -lpfm"
+- CPPFLAGS="-I$pfm_prefix/include"
++ CPPFLAGS="$CPPFLAGS -I$pfm_prefix/include"
+ if test "x$pfm_libdir" = "x"; then
+ pfm_libdir="$pfm_prefix/lib"
+ fi
+@@ -1022,8 +1023,7 @@ if test "$perfmon" != 0 -o "$perf_events" = "yes"; then
+ dotest=1
+ fi
+ if test "x$pfm_incdir" != "x"; then
+- CPPFLAGS="-I$pfm_incdir"
+- dotest=1
++ CPPFLAGS="$CPPFLAGS -I$pfm_incdir"
+ fi
+ fi
+ if test "$dotest" = 1; then
+commit b978a744ee48a7e9cbb20bd77c28e0fc3e4eb19d
+Author: Vince Weaver <vweaver1 at eecs.utk.edu>
+Date: Wed Aug 29 12:59:45 2012 -0400
+
+ configure: fix autodetect perfmon case
+
+ The fixes I made yesterday to libpfm include finding broke
+ on perfmon2 PAPI if you were letting the library be autodetected.
+ This change should fix things. Tested on an actual 2.6.30
+ perfmon2 system.
+
+diff --git a/src/configure b/src/configure
+index dd18bbf..f4fdcb9 100755
+--- a/src/configure
++++ b/src/configure
+@@ -5787,6 +5787,7 @@ fi
+ fi
+
+ if test "$perfmon" != 0; then
++ pfm_incdir="libpfm-3.y/include"
+ perfmon=`echo ${perfmon} | sed 's/^ \t*//;s/ \t*$//'`
+ perfmon=`echo ${perfmon} | grep -e '[1-9]\.[0-9][0-9]*'`
+ perfmon=`echo ${perfmon} | sed 's/\.//'`
+diff --git a/src/configure.in b/src/configure.in
+index c286c62..3f465ad 100644
+--- a/src/configure.in
++++ b/src/configure.in
+@@ -898,6 +898,7 @@ AC_ARG_WITH(perfmon,
+ [perfmon=`cat /proc/perfmon | grep version | cut -d: -f2`],
+ [perfmon=0])])
+ if test "$perfmon" != 0; then
++ pfm_incdir="libpfm-3.y/include"
+ perfmon=`echo ${perfmon} | sed 's/^[ \t]*//;s/[ \t]*$//'`
+ perfmon=`echo ${perfmon} | grep -e '[[1-9]]\.[[0-9]][[0-9]]*'`
+ perfmon=`echo ${perfmon} | sed 's/\.//'`
diff --git a/papi.spec b/papi.spec
index a194f82..d9a75e3 100644
--- a/papi.spec
+++ b/papi.spec
@@ -2,11 +2,12 @@
Summary: Performance Application Programming Interface
Name: papi
Version: 5.0.0
-Release: 2%{?dist}
+Release: 5%{?dist}
License: BSD
Group: Development/System
URL: http://icl.cs.utk.edu/papi/
Source0: http://icl.cs.utk.edu/projects/papi/downloads/%{name}-%{version}.tar.gz
+Patch5: papi-unbundled-libpfm4.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: ncurses-devel
BuildRequires: gcc-gfortran
@@ -48,14 +49,16 @@ the PAPI user-space libraries and interfaces.
%prep
%setup -q
+%patch5 -p1
+
%build
%if %{without bundled_libpfm}
# Build our own copy of libpfm.
-%global libpfm_config --with-pfm-incdir=%{_includedir}/perfmon --with-pfm-libdir=%{_libdir}
+%global libpfm_config --with-pfm-incdir=%{_includedir} --with-pfm-libdir=%{_libdir}
%endif
cd src
-%configure --with-libpfm4 \
+%configure --with-perf-events \
%{?libpfm_config} \
--with-static-lib=yes --with-shared-lib=yes --with-shlib \
--with-components="appio coretemp example lmsensors lustre mx net rapl stealtime"
@@ -109,6 +112,9 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/*.a
%changelog
+* Thu Aug 30 2012 William Cohen <wcohen at redhat.com> - 5.0.0-5
+- Fixes to make papi with unbundled libpfm.
+
* Mon Aug 27 2012 William Cohen <wcohen at redhat.com> - 5.0.0-2
- Keep libpfm unbundled.
More information about the scm-commits
mailing list