-#%define snap 20031012
-Summary: An open-source memory debugger for x86-GNU/Linux
-Summary(pl): Otwarty odpluskwiacz pamiêci dla Linuksa x86
+# TODO:
+# - fix CC detection in configure, so CC=gcc won't be needed
+#
+# Conditional build:
+%bcond_with mpi # MPI wrapper module
+#
+Summary: An open-source memory debugger
+Summary(pl.UTF-8): Otwarty odpluskwiacz pamięci
Name: valgrind
-Version: 2.1.0
+Version: 3.20.0
Release: 1
-License: GPL
+License: GPL v2+
Group: Development/Tools
-Source0: http://developer.kde.org/~sewardj/valgrind-%{version}.tar.bz2
-# Source0-md5: 3e4056dd45163a5f555a23ced2f95191
-#Source0: %{name}-%{snap}.tar.bz2
-Patch0: %{name}-include_fs.patch
-URL: http://valgrind.kde.org/
-BuildRequires: autoconf
-BuildRequires: automake
-ExclusiveArch: %{ix86}
+Source0: https://sourceware.org/pub/valgrind/%{name}-%{version}.tar.bz2
+# Source0-md5: e3ca8e03c6c527e80e7da5135a1b6beb
+Patch0: %{name}-native-cpuid.patch
+Patch1: %{name}-ld_linux_strlen.patch
+Patch2: %{name}-datadir.patch
+URL: https://www.valgrind.org/
+BuildRequires: autoconf >= 2.50
+BuildRequires: automake >= 1:1.10
+BuildRequires: gcc >= 5:3.0
+%ifarch x32
+BuildRequires: gcc-multilib-64 >= 5:3.0
+%endif
+# check in configure.ac:882 AC_MSG_CHECKING([the GLIBC_VERSION version])
+BuildRequires: glibc-devel >= 6:2.2
+BuildRequires: libgomp-devel
+BuildRequires: libstdc++-devel
+%{?with_mpi:BuildRequires: mpi-devel}
+BuildRequires: rpmbuild(macros) >= 2.007
+Obsoletes: valgrind-callgrind < 0.11
+Obsoletes: valgrind-calltree < 0.10
+ExclusiveArch: %{ix86} %{x8664} %{armv7} ppc ppc64 s390x x32 aarch64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-# Valgrind binaries should _never_ be stripped
-%define no_install_post_strip 1
-
-# Same name as libpthread
-%define _noautoprovfiles %{_libdir}/%{name}/libpthread.so.0 %{_libdir}/%{name}/libpthread.so %{_libdir}/%{name}/valgrind.so %{_libdir}/%{name}/valgrinq.so
+%define _noautostrip .*/vgpreload.*\\.so
+%define filterout_c -fstack-protector-strong
+# ld portion broken
+%undefine with_ccache
%description
-Valgrind is a GPL'd system for debugging and profiling x86-Linux
-programs. With the tools that come with Valgrind, you can
-automatically detect many memory management and threading bugs,
-avoiding hours of frustrating bug-hunting, making your programs more
-stable. You can also perform detailed profiling to help speed up your
-programs.
+Valgrind is a GPL'd system for debugging and profiling Linux programs.
+With the tools that come with Valgrind, you can automatically detect
+many memory management and threading bugs, avoiding hours of
+frustrating bug-hunting, making your programs more stable. You can
+also perform detailed profiling to help speed up your programs.
-%description -l pl
-Valgrind jest systemem s³u¿±cym do odpluskwiania i profilowania
-programów na Linuksie uruchomionym na procesorach x86. U¿ywaj±c
-dostarczanych z nim narzêdzi mo¿na automatycznie wykrywaæ wiele
-b³êdów zwi±zanych z zarz±dzaniem pamiêci± i w±tkowaniem, dziêki
-czemu unika siê frustruj±cego polowania na b³êdy, a tak¿e czyni
-siê programy bardziej stabilnymi. Mo¿liwe jest równie¿ dok³adne
-profilowanie, dziêki któremu programy zaczn± szybciej pracowaæ.
+%description -l pl.UTF-8
+Valgrind jest systemem służącym do odpluskwiania i profilowania
+programów na Linuksie. Używając dostarczanych z nim narzędzi można
+automatycznie wykrywać wiele błędów związanych z zarządzaniem pamięcią
+i wątkowaniem, dzięki czemu unika się frustrującego polowania na
+błędy, a także czyni się programy bardziej stabilnymi. Możliwe jest
+również dokładne profilowanie, dzięki któremu programy zaczną szybciej
+pracować.
%prep
%setup -q
%patch0 -p1
+%patch1 -p1
+%patch2 -p1
%build
%{__aclocal}
-%{__autoheader}
%{__autoconf}
+%{__autoheader}
%{__automake}
+
+ac_cv_path_GDB=/usr/bin/gdb \
%configure \
+ --enable-tls \
+ %{!?with_mpi:--with-mpicc=/bin/false} \
+%if "%{_lib}" != "lib"
+ --enable-only64bit \
+%endif \
+ --enable-lto \
LDFLAGS="" # no strip!
+
%{__make}
%install
%{__make} install \
DESTDIR=$RPM_BUILD_ROOT
+%{__rm} -r $RPM_BUILD_ROOT%{_datadir}/doc
+cp -p docs/index.pdf docs/valgrind_manual.pdf
+cp -p docs/index.ps docs/valgrind_manual.ps
+
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(644,root,root,755)
-%doc ACKNOWLEDGEMENTS AUTHORS FAQ.txt NEWS PATCHES_APPLIED
-%doc README README_MISSING_SYSCALL_OR_IOCTL TODO
-%doc $RPM_BUILD_ROOT%{_docdir}/valgrind/*.html
-%attr(755,root,root) %{_bindir}/*
-%{_libdir}/%{name}
-%{_includedir}/*
-%{_pkgconfigdir}/*.pc
+%doc AUTHORS NEWS README README_MISSING_SYSCALL_OR_IOCTL
+%doc docs/html docs/valgrind_manual.pdf docs/valgrind_manual.ps
+%attr(755,root,root) %{_bindir}/callgrind_annotate
+%attr(755,root,root) %{_bindir}/callgrind_control
+%attr(755,root,root) %{_bindir}/cg_annotate
+%attr(755,root,root) %{_bindir}/cg_diff
+%attr(755,root,root) %{_bindir}/cg_merge
+%attr(755,root,root) %{_bindir}/ms_print
+%attr(755,root,root) %{_bindir}/valgrind
+%attr(755,root,root) %{_bindir}/valgrind-di-server
+%attr(755,root,root) %{_bindir}/valgrind-listener
+%attr(755,root,root) %{_bindir}/vgdb
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/lib*-linux.a
+%if %{with mpi}
+# TODO: subpackage?
+%attr(755,root,root) %{_libdir}/%{name}/libmpiwrap-*-linux.so
+%endif
+%if "%{_libexecdir}" != "%{_libdir}"
+%dir %{_libexecdir}/%{name}
+%endif
+%attr(755,root,root) %{_libexecdir}/%{name}/*-linux
+%attr(755,root,root) %{_libexecdir}/%{name}/vgpreload_*-linux.so
+%{_libexecdir}/%{name}/*.xml
+%{_libexecdir}/%{name}/default.supp
+%{_datadir}/%{name}
+%{_includedir}/valgrind
+%{_mandir}/man1/callgrind_annotate.1*
+%{_mandir}/man1/callgrind_control.1*
+%{_mandir}/man1/cg_annotate.1*
+%{_mandir}/man1/cg_diff.1*
+%{_mandir}/man1/cg_merge.1*
+%{_mandir}/man1/ms_print.1*
+%{_mandir}/man1/valgrind.1*
+%{_mandir}/man1/valgrind-di-server.1*
+%{_mandir}/man1/valgrind-listener.1*
+%{_mandir}/man1/vgdb.1*
+%{_pkgconfigdir}/valgrind.pc