8e30bc8
Name:           hpx
Patrick Diehl b7a6760
Version:        1.6.0
Patrick Diehl 3bb8e8a
Release:        3%{?dist}
8e30bc8
Summary:        General Purpose C++ Runtime System
8e30bc8
License:        Boost
8e30bc8
URL:            http://stellar.cct.lsu.edu/tag/hpx/
8e30bc8
Source0:        http://stellar.cct.lsu.edu/files/%{name}_%{version}.tar.gz
Patrick Diehl af5c443
Patch0:         fedora35.diff
Patrick Diehl 3bb8e8a
Patch1:         fedora.patch
8e30bc8
8e30bc8
BuildRequires:  gcc-c++ >= 4.9
8e30bc8
BuildRequires:  gperftools-devel
8e30bc8
BuildRequires:  boost-devel
8e30bc8
BuildRequires:  hwloc-devel
8e30bc8
BuildRequires:  cmake
8e30bc8
BuildRequires:  fdupes
Patrick Diehl f501b0b
BuildRequires:  git
Patrick Diehl f501b0b
BuildRequires:  libatomic
Patrick Diehl f39c15c
Patrick Diehl f501b0b
#Add libatomic since it is not installed with gcc on Fedora
Patrick Diehl f501b0b
Requires: libatomic
8e30bc8
8e30bc8
%global hpx_desc \
8e30bc8
HPX is a general purpose C++ runtime system for parallel and distributed \
8e30bc8
applications of any scale. \
8e30bc8
\
8e30bc8
The goal of HPX is to create a high quality, freely available, \
8e30bc8
open source implementation of the ParalleX model for conventional systems, \
8e30bc8
such as classic Linux based Beowulf clusters or multi-socket highly parallel \
8e30bc8
SMP nodes. At the same time, we want to have a very modular and well designed \
8e30bc8
runtime system architecture which would allow us to port our implementation \
8e30bc8
onto new computer system architectures. We want to use real world applications\
8e30bc8
to drive the development of the runtime system, coining out required \
8e30bc8
functionality and converging onto a stable API which will provide a smooth \
8e30bc8
migration path for developers. The API exposed by HPX is modeled after the \
8e30bc8
interfaces defined by the C++11 ISO standard and adheres to the \
8e30bc8
programming guidelines used by the Boost collection of C++ libraries.
8e30bc8
8e30bc8
%description
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains the libraries
8e30bc8
8e30bc8
%package examples
8e30bc8
Summary: HPX examples
8e30bc8
Requires:       hpx = %{version}-%{release}
8e30bc8
8e30bc8
%description examples
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains the examples
8e30bc8
8e30bc8
%package devel
8e30bc8
Summary:    Development headers and libraries for hpx
8e30bc8
Requires:   hpx = %{version}-%{release}
Patrick Diehl f501b0b
Requires:   boost-devel
Patrick Diehl f501b0b
Requires:   hwloc-devel
Patrick Diehl f501b0b
Requires:   gperftools-devel
Patrick Diehl f501b0b
Requires:   gcc-c++
8e30bc8
8e30bc8
%description devel
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains development headers and libraries
8e30bc8
8e30bc8
%package mpich
8e30bc8
Summary:        HPX MPICH libraries
Patrick Diehl fd32e3d
Requires:       mpich-devel
8e30bc8
BuildRequires:  mpich-devel
8e30bc8
8e30bc8
%description mpich
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains the libraries
8e30bc8
8e30bc8
%package mpich-examples
8e30bc8
Summary: HPX MPICH examples
8e30bc8
Requires:       mpich
8e30bc8
Requires:       hpx-mpich = %{version}-%{release}
8e30bc8
BuildRequires:  mpich-devel
8e30bc8
8e30bc8
%description mpich-examples
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains the examples
8e30bc8
8e30bc8
%package mpich-devel
8e30bc8
Summary:    Development headers and libraries for hpx
8e30bc8
Requires:   hpx-mpich = %{version}-%{release}
Patrick Diehl f501b0b
Requires:   boost-devel
Patrick Diehl f501b0b
Requires:   hwloc-devel
Patrick Diehl f501b0b
Requires:   mpich-devel
Patrick Diehl f501b0b
Requires:   gperftools-devel
Patrick Diehl f501b0b
8e30bc8
8e30bc8
%description mpich-devel
8e30bc8
%{hpx_desc}.
8e30bc8
8e30bc8
This package contains development headers and libraries
8e30bc8
8e30bc8
8e30bc8
%package openmpi
8e30bc8
Summary:        HPX Open MPI libraries
Patrick Diehl fd32e3d
Requires:       openmpi-devel
8e30bc8
BuildRequires:  openmpi-devel
8e30bc8
Patrick Diehl f501b0b
8e30bc8
%description openmpi
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains the libraries
8e30bc8
8e30bc8
%package openmpi-examples
8e30bc8
Summary: HPX Open MPI examples
8e30bc8
Requires:       openmpi
8e30bc8
Requires:       hpx-openmpi = %{version}-%{release}
8e30bc8
BuildRequires:  openmpi-devel
dd12b0f
BuildRequires: make
8e30bc8
8e30bc8
%description openmpi-examples
8e30bc8
%{hpx_desc}.
8e30bc8
8e30bc8
This package contains the examples
8e30bc8
8e30bc8
8e30bc8
%package openmpi-devel
8e30bc8
Summary:    Development headers and libraries for hpx
8e30bc8
Requires:   hpx-openmpi = %{version}-%{release}
Patrick Diehl f501b0b
Requires:   boost-devel
Patrick Diehl f501b0b
Requires:   hwloc-devel
Patrick Diehl f501b0b
Requires:   openmpi-devel
Patrick Diehl f501b0b
Requires:   gperftools-devel
8e30bc8
8e30bc8
%description openmpi-devel
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains development headers and libraries
8e30bc8
8e30bc8
%prep
Patrick Diehl 6cdcb46
%setup -n %{name}-%{version} -q
Patrick Diehl da71961
%patch0 -p1
Patrick Diehl 1dffaa7
%patch1 -p1
8e30bc8
8e30bc8
%build
f95421d
# This package uses -Wl,-wrap to wrap calls at link time.  This is incompatible
f95421d
# with LTO.
f95421d
# Disable LTO
f95421d
%define _lto_cflags %{nil}
f95421d
8e30bc8
# use generic context for these archs
Patrick Diehl f501b0b
%ifarch aarch64 
8e30bc8
%define cmake_opts -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=ON
8e30bc8
%endif
8e30bc8
8e30bc8
# ppc64 do not have enough memory
Patrick Diehl f501b0b
%ifarch ppc64le aarch64 armv7hl
8e30bc8
%global _smp_mflags -j1
8e30bc8
%endif
8e30bc8
Patrick Diehl f501b0b
# use a different optimization level for arm dueo to memory limitations
Patrick Diehl f501b0b
%ifarch armv7hl
Patrick Diehl f501b0b
%define cmake_opts -DCMAKE_CXX_FLAGS="$RPM_OPT_FLAGS -O1" -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=ON
Patrick Diehl f501b0b
%endif
Patrick Diehl f501b0b
Patrick Diehl f501b0b
# add lib atomic for s390x
Patrick Diehl f501b0b
%ifarch s390x
Patrick Diehl f501b0b
%define cmake_opts -DCMAKE_SHARED_LINKER_FLAGS="$RPM_OPT_FLAGS -latomic" -DCMAKE_EXE_LINKER_FLAGS="$RPM_OPT_FLAGS -latomic"
Patrick Diehl f501b0b
%endif
Patrick Diehl f501b0b
8e30bc8
. /etc/profile.d/modules.sh
8e30bc8
for mpi in '' openmpi mpich ; do
8e30bc8
  test -n "${mpi}" && module load mpi/${mpi}-%{_arch}
8e30bc8
  mkdir -p ${mpi:-serial}
8e30bc8
  pushd ${mpi:-serial}
8e30bc8
  test -n "${mpi}" && export CC=mpicc && export CXX=mpicxx
Patrick Diehl 72ab583
  %{cmake} ${mpi:+-DHPX_WITH_PARCELPORT_MPI=ON} %{?cmake_opts:%{cmake_opts}} -DHPX_WITH_BUILD_BINARY_PACKAGE=ON -DLIB_INSTALL_DIR=%_libdir/${mpi}/${mpi:+lib/} -DLIBDIR=%_libdir/${mpi}/${mpi:+lib/} -DCMAKE_INSTALL_LIBDIR=%_libdir/${mpi}/${mpi:+lib/} ..
Patrick Diehl a585349
  cd %{__cmake_builddir}
8e30bc8
  %make_build
Patrick Diehl a585349
  cd ..
8e30bc8
  test -n "${mpi}" && unset CC CXX
8e30bc8
  popd
8e30bc8
  test -n "${mpi}" && module unload mpi/${mpi}-%{_arch}
8e30bc8
done
8e30bc8
8e30bc8
%install
8e30bc8
# do serial install last due to move of executables to _bindir
8e30bc8
. /etc/profile.d/modules.sh
8e30bc8
for mpi in openmpi mpich '' ; do
8e30bc8
  test -n "${mpi}" && module load mpi/${mpi}-%{_arch} && mkdir -p %{buildroot}/${MPI_BIN}
8e30bc8
  pushd ${mpi:-serial}
Patrick Diehl a585349
  cd %{__cmake_builddir}
8e30bc8
  %make_install
Patrick Diehl a585349
  cd ..
Patrick Diehl f501b0b
  sed -i '1s@env python@python3@' %{buildroot}/%{_bindir}/{hpx*.py,hpxcxx} 
8e30bc8
  popd
8e30bc8
  pushd %{buildroot}/%{_bindir}
8e30bc8
  # rename executable with too generic names
8e30bc8
  for exe in  *; do
8e30bc8
    test -n '${exe##hpx*}' && mv "${exe}" "hpx_${exe}"
8e30bc8
  done
8e30bc8
  popd
Patrick Diehl f501b0b
  test -n "${mpi}" && mv %{buildroot}/%{_bindir}/* %{buildroot}/${MPI_BIN}/            
8e30bc8
  test -n "${mpi}" && module unload mpi/${mpi}-%{_arch}
8e30bc8
done
8e30bc8
8e30bc8
rm %{buildroot}/%{_datadir}/%{name}/LICENSE_1_0.txt
8e30bc8
%fdupes %{buildroot}%{_prefix}
8e30bc8
8e30bc8
%check
8e30bc8
. /etc/profile.d/modules.sh
8e30bc8
for mpi in '' openmpi mpich ; do
8e30bc8
  test -n "${mpi}" && module load mpi/${mpi}-%{_arch}
Patrick Diehl a585349
  make -C ${mpi:-serial}/%{__cmake_builddir}/ tests.examples
8e30bc8
  test -n "${mpi}" && module unload mpi/${mpi}-%{_arch}
8e30bc8
done
8e30bc8
8e30bc8
%ldconfig_scriptlets
8e30bc8
8e30bc8
%files
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_libdir}/%{name}/
8e30bc8
%{_libdir}/lib*.so.*
8e30bc8
8e30bc8
%files examples
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_bindir}/*
8e30bc8
8e30bc8
%files openmpi
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_libdir}/openmpi*/lib/lib*.so.*
8e30bc8
%{_libdir}/openmpi*/lib/%{name}
8e30bc8
8e30bc8
%files openmpi-examples
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_libdir}/openmpi*/bin/*
8e30bc8
8e30bc8
%files openmpi-devel
8e30bc8
%{_includedir}/%{name}
8e30bc8
%{_libdir}/openmpi*/lib/pkgconfig/*.pc
8e30bc8
%{_libdir}/openmpi*/lib/cmake/HPX
8e30bc8
%{_libdir}/openmpi*/lib/lib*.a
8e30bc8
%{_libdir}/openmpi*/lib/lib*.so*
8e30bc8
8e30bc8
%files mpich
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_libdir}/mpich*/lib/lib*.so.*
8e30bc8
%{_libdir}/mpich*/lib/%{name}
8e30bc8
8e30bc8
%files mpich-examples
8e30bc8
%doc README.rst
8e30bc8
%license LICENSE_1_0.txt
8e30bc8
%{_libdir}/mpich*/bin/*
8e30bc8
8e30bc8
%files mpich-devel
8e30bc8
%{_includedir}/%{name}
8e30bc8
%{_libdir}/mpich*/lib/pkgconfig/*.pc
8e30bc8
%{_libdir}/mpich*/lib/cmake/HPX
8e30bc8
%{_libdir}/mpich*/lib/lib*.a
8e30bc8
%{_libdir}/mpich*/lib/lib*.so*
8e30bc8
8e30bc8
%files devel
8e30bc8
%{_includedir}/%{name}
8e30bc8
%{_libdir}/pkgconfig/*.pc
8e30bc8
%{_libdir}/cmake/HPX
8e30bc8
%{_libdir}/lib*.a
8e30bc8
%{_libdir}/lib*.so*
8e30bc8
8e30bc8
%changelog
Patrick Diehl 3bb8e8a
* Tue Apr 20 2021 Patrick Diehl <patrickdiehl@lsu.edu> - 1.6.0-3
Patrick Diehl 3bb8e8a
- Patch to fix examples
Patrick Diehl 3bb8e8a
6bff8e6
* Wed Mar 31 2021 Jonathan Wakely <jwakely@redhat.com> - 1.6.0-2
6bff8e6
- Rebuilt for removed libstdc++ symbols (#1937698)
6bff8e6
Patrick Diehl b7a6760
* Wed Feb 17 2021 Patrick Diehl <patrickdiehl@lsu.edu> - 1.6.0-1
Patrick Diehl b7a6760
- HPX 1.6.0
Patrick Diehl b7a6760
fa268b8
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.5.1-3
fa268b8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
fa268b8
6921d35
* Fri Jan 22 2021 Jonathan Wakely <jwakely@redhat.com> - 1.5.1-2
6921d35
- Rebuilt for Boost 1.75
6921d35
Patrick Diehl e81debc
* Fri Oct 2 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.5.1-1
Patrick Diehl e81debc
- HPX 1.5.1
Patrick Diehl e81debc
Patrick Diehl a347dc3
* Wed Sep 2 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.5.0-1
Patrick Diehl a347dc3
- HPX 1.5.0
Patrick Diehl a347dc3
Patrick Diehl 347c770
* Mon Jul 27 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.4.1-4
Patrick Diehl 347c770
- Update to the new cmake changes
Patrick Diehl 347c770
Patrick Diehl ed38183
* Fri Jul  17 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.4.1-3
Patrick Diehl f656680
- Patch to compile with the latest boost version
Patrick Diehl ed38183
- Patch to compile with a newer MPICH version
Patrick Diehl f656680
f95421d
* Wed Jul  1 2020 Jeff Law <lwa@redhat.com> - 1.4.1-2
f95421d
- Disable LTO
f95421d
Patrick Diehl 75e1b99
* Fri Feb 21 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.4.1-1
Patrick Diehl 75e1b99
- HPX 1.4.1 release - Patches to the HPX 1.4.0 release 
Patrick Diehl c159a52
53f0f06
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.0-2
53f0f06
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
53f0f06
Patrick Diehl f4cc739
* Wed Jan 15 2020 Patrick Diehl <patrickdiehl@lsu.edu> - 1.4.0-1
Patrick Diehl 6cdcb46
- HPX 1.4.0 release
Patrick Diehl 6cdcb46
12df3c9
* Sun Aug 25 2019 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 1.3.0-4
12df3c9
- Rebuilt for hwloc-2.0
12df3c9
f0100d1
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.3.0-3
f0100d1
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
f0100d1
Patrick Diehl 72ab583
* Wed Jun 26 2019 Patrick Diehl <patrickdiehl@lsu.edu>  - 1.3.0-2
Patrick Diehl 72ab583
- Disbale the strict compiler check
Patrick Diehl 72ab583
Patrick Diehl f39c15c
* Fri May 03 2019 Patrick Diehl <patrickdiehl@lsu.edu>  - 1.3.0-1
Patrick Diehl f39c15c
- HPX 1.3.0 release
Patrick Diehl f39c15c
Patrick Diehl 6860176
* Wed Feb 20 2019 Patrick Diehl <patrickdiehl@lsu.edu>  - 1.2.1-1
Patrick Diehl f07a1ab
- HPX 1.2.1 release
Patrick Diehl f07a1ab
4a9882b
* Thu Feb 14 2019 Orion Poplawski <orion@nwra.com> - 1.2.0-7
4a9882b
- Rebuild for openmpi 3.1.3
Patrick Diehl f501b0b
e3d6f7f
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 1.2.0-6
e3d6f7f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
e3d6f7f
0f8c4ed
* Sun Dec 16 2018 Christoph Junghans <junghans@votca.org> - 1.2.0-5
0f8c4ed
- added 3591.patch to fix build on armv7hlv
0f8c4ed
af0438d
* Thu Nov 22 2018 Christoph Junghans <junghans@votca.org> - 1.2.0-4
af0438d
- use python3 for scripts
af0438d
8e30bc8
* Fri Nov 16 2018 Christoph Junghans <junghans@votca.org> - 1.2.0-3
8e30bc8
- Disable parallel build for aarch64
8e30bc8
8e30bc8
* Thu Nov 15 2018 Christoph Junghans <junghans@votca.org> - 1.2.0-2
8e30bc8
- Added upstream patch 3551.patch to fix build on i686
8e30bc8
8e30bc8
* Wed Nov 14 2018 Christoph Junghans <junghans@votca.org> - 1.2.0-1
8e30bc8
- Version bump to hpx-1.2.0
8e30bc8
8e30bc8
* Fri Nov 09 2018 Patrick Diehl <patrickdiehl@lsu.edu> - 1.2-0.1.rc1
8e30bc8
- Initial Release of HPX 1.2_rc1