6a459a
# This package used to be called "google-perftools", but it was renamed on 2012-02-03.
6a459a
6a459a
%{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}-%{version}}
6a459a
6a459a
Name:		gperftools
6a459a
Version:	2.4
7a06cf
Release:	8%{?dist}
6a459a
License:	BSD
6a459a
Group:		Development/Tools
6a459a
Summary:	Very fast malloc and performance analysis tools
6a459a
URL:		http://code.google.com/p/gperftools/
6a459a
Source0:	https://googledrive.com/host/0B6NtGsLhIcf7MWxMMF9JdTN3UVk/%{name}-%{version}.tar.gz
6a459a
6a459a
# For bz 1232702 - gperftools: tcmalloc debug version uses hard-coded path /tmp/google.alloc
6a459a
Patch1: gperf-allow-customizing-trace-filename.patch
7a06cf
# For bz#1339710 - initalization of 'recursive' tls variable in libunwind stack capturer occasionally triggers deadlock in ceph
7a06cf
Patch2: gp-Use-initial-exec-tls-for-libunwind-s-recursion-flag.patch
6a459a
6a459a
ExcludeArch:	s390 s390x
6a459a
%ifnarch ppc %{power64}
6a459a
BuildRequires:	libunwind-devel
6a459a
%endif
6a459a
Requires:	gperftools-devel = %{version}-%{release}
6a459a
Requires:	pprof = %{version}-%{release}
6a459a
6a459a
%description
6a459a
Perf Tools is a collection of performance analysis tools, including a 
6a459a
high-performance multi-threaded malloc() implementation that works
6a459a
particularly well with threads and STL, a thread-friendly heap-checker,
6a459a
a heap profiler, and a cpu-profiler.
6a459a
6a459a
This is a metapackage which pulls in all of the gperftools (and pprof)
6a459a
binaries, libraries, and development headers, so that you can use them.
6a459a
6a459a
%package devel
6a459a
Summary:	Development libraries and headers for gperftools
6a459a
Group:		Development/Libraries
6a459a
Requires:	%{name}-libs%{?_isa} = %{version}-%{release}
6a459a
Provides:	google-perftools-devel = %{version}-%{release}
6a459a
Obsoletes:	google-perftools-devel < 2.0
6a459a
6a459a
%description devel
6a459a
Libraries and headers for developing applications that use gperftools.
6a459a
6a459a
%package libs
6a459a
Summary:	Libraries provided by gperftools
6a459a
Provides:	google-perftools-libs = %{version}-%{release}
6a459a
Obsoletes:	google-perftools-libs < 2.0
6a459a
6a459a
%description libs
6a459a
Libraries provided by gperftools, including libtcmalloc and libprofiler.
6a459a
6a459a
%package -n pprof
6a459a
Summary:	CPU and Heap Profiler tool
6a459a
Requires:	graphviz
6a459a
BuildArch:	noarch
6a459a
Provides:	google-perftools = %{version}-%{release}
6a459a
Obsoletes:	google-perftools < 2.0
6a459a
6a459a
%description -n pprof 
6a459a
Pprof is a heap and CPU profiler tool, part of the gperftools suite.
6a459a
6a459a
%prep
6a459a
%setup -q
6a459a
%patch1 -p1
7a06cf
%patch2 -p1
6a459a
6a459a
# Fix end-of-line encoding
6a459a
sed -i 's/\r//' README_windows.txt
6a459a
6a459a
# No need to have exec permissions on source code
6a459a
chmod -x src/*.h src/*.cc
6a459a
6a459a
%build
6a459a
CFLAGS=`echo $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -DTCMALLOC_LARGE_PAGES | sed -e 's|-fexceptions||g'`
6a459a
CXXFLAGS=`echo $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-unused-local-typedefs -DTCMALLOC_LARGE_PAGES | sed -e 's|-fexceptions||g'`
6a459a
%configure --disable-static 
6a459a
6a459a
# Bad rpath!
6a459a
sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
6a459a
sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
6a459a
# Can't build with smp_mflags
6a459a
make 
6a459a
6a459a
%install
6a459a
make DESTDIR=%{buildroot} docdir=%{_pkgdocdir}/ install
6a459a
find %{buildroot} -type f -name "*.la" -exec rm -f {} ';'
6a459a
6a459a
# Delete useless files
6a459a
rm -rf %{buildroot}%{_pkgdocdir}/INSTALL
6a459a
6a459a
%check
6a459a
# http://code.google.com/p/google-perftools/issues/detail?id=153
6a459a
%ifnarch ppc
6a459a
# Their test suite is almost always broken.
6a459a
# LD_LIBRARY_PATH=./.libs make check
6a459a
%endif
6a459a
6a459a
%post libs -p /sbin/ldconfig
6a459a
%postun libs -p /sbin/ldconfig
6a459a
6a459a
%files
6a459a
6a459a
%files -n pprof
6a459a
%{_bindir}/pprof
6a459a
%{_mandir}/man1/*
6a459a
6a459a
%files devel
6a459a
%{_pkgdocdir}/
6a459a
%{_includedir}/google/
6a459a
%{_includedir}/gperftools/
6a459a
%{_libdir}/*.so
6a459a
%{_libdir}/pkgconfig/*.pc
6a459a
6a459a
%files libs
6a459a
%{_libdir}/*.so.*
6a459a
6a459a
%changelog
7a06cf
* Wed Jun 22 2016 Miroslav Rezanina <mrezanin@redhat.com> - 2.4-8.el7
7a06cf
- gp-Use-initial-exec-tls-for-libunwind-s-recursion-flag.patch [bz#1339710]
7a06cf
- Resolves: bz#1339710
7a06cf
  (initalization of 'recursive' tls variable in libunwind stack capturer occasionally triggers deadlock in ceph)
7a06cf
6a459a
* Wed Aug 26 2015 Miroslav Rezanina <mrezanin@redhat.com> 2.4-7
6a459a
- Rebuild to fix NVR [bz#1269032]
6a459a
- Resolves: bz#1269032
6a459a
  (gperftools NVR lower than EPEL version)
6a459a
6a459a
* Wed Aug 26 2015 Miroslav Rezanina <mrezanin@redhat.com> 2.4-2
6a459a
- gperf-allow-customizing-trace-filename.patch [bz#1232702]
6a459a
- Resolves: bz#1232702
6a459a
  (gperftools: tcmalloc debug version uses hard-coded path /tmp/google.alloc) 
6a459a
6a459a
* Tue Jun 02 2015 Miroslav Rezanina <mrezanin@redhat.com> 2.4-1
6a459a
- Import to RHEL