8e30bc8
Name:           hpx
Patrick Diehl d8e44d7
Version:        1.8.1
0401da7
Release:        4%{?dist}
8e30bc8
Summary:        General Purpose C++ Runtime System
f56ddcd
License:        BSL-1.0
b8bc316
URL:            https://hpx.stellar-group.org/
b8bc316
Source0:        https://github.com/STEllAR-GROUP/hpx/archive/%{version}/%{name}-%{version}.tar.gz
b8bc316
Patch:          https://patch-diff.githubusercontent.com/raw/STEllAR-GROUP/hpx/pull/6166.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 b813019
BuildRequires:  asio-devel
Patrick Diehl f39c15c
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}
b8bc316
Requires:   asio-devel
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 b813019
Requires:   asio-devel
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
Patrick Diehl b813019
Requires:   asio-devel
8e30bc8
8e30bc8
%description openmpi-devel
8e30bc8
%{hpx_desc}
8e30bc8
8e30bc8
This package contains development headers and libraries
8e30bc8
8e30bc8
%prep
b8bc316
%autosetup -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}
Patrick Diehl 547ec88
  #pushd ${mpi:-serial}
Patrick Diehl 547ec88
  %define _vpath_builddir %{_target_platform}-${mpi:-serial}
8e30bc8
  test -n "${mpi}" && export CC=mpicc && export CXX=mpicxx
Patrick Diehl 547ec88
  %{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 547ec88
  #cd %{__cmake_builddir}
Patrick Diehl 547ec88
  #%make_build
Patrick Diehl 547ec88
  %cmake_build
Patrick Diehl 547ec88
  #cd ..
8e30bc8
  test -n "${mpi}" && unset CC CXX
Patrick Diehl 547ec88
  #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}
Patrick Diehl 547ec88
  #pushd ${mpi:-serial}
Patrick Diehl 547ec88
  #cd %{__cmake_builddir}
Patrick Diehl 547ec88
  %define _vpath_builddir %{_target_platform}-${mpi:-serial}
Patrick Diehl 547ec88
  %cmake_install
Patrick Diehl 547ec88
  #%make_install
Patrick Diehl 547ec88
  #cd ..
Patrick Diehl 547ec88
  #sed -i '1s@env python@python3@' %{buildroot}/%{_bindir}/{hpx*.py,hpxcxx} 
Patrick Diehl 547ec88
  #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
Patrick Diehl 547ec88
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 ebdd3b5
  make -C %{__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
0401da7
* Thu Feb 23 2023 Christoph Junghans <junghans@votca.org> - 1.8.1-4
0401da7
- Fix deps for devel packages
0401da7
b8bc316
* Mon Feb 20 2023 Orion Poplawski <orion@nwra.com> - 1.8.1-3
b8bc316
- Update URL and Source (bz#2119214)
b8bc316
- Move Requires on libatomic to -devel subpackages (bz#2119214)
b8bc316
- Add upstream patch for gcc13 support (FTBFS bz#2171569)
f56ddcd
- Use SPDX License tag
b8bc316
e275497
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.8.1-2
e275497
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
e275497
Patrick Diehl d8e44d7
* Wed Aug 03 2022 Patrick Diehl <patrickdiehl1@gmail.com> - 1.8.1-1
Patrick Diehl d8e44d7
- Bump to HPX 1.8.1
Patrick Diehl d8e44d7
Patrick Diehl d8e44d7
* Wed Jul 20 2022 Patrick Diehl <patrickdiehl1@gmail.com> - 1.8.0-1
Patrick Diehl 5460e30
- Bump to HPX 1.8.0
Patrick Diehl 5460e30
6b33799
* Wed May 04 2022 Thomas Rodgers <trodgers@redhat.com> - 1.7.1-3
6b33799
- Rebuilt for Boost 1.78
6b33799
e2093c0
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-2
e2093c0
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
e2093c0
Patrick Diehl 1e0b191
* Mon Aug 16 2021 patrick Diehl <patrickdiehl@lsu.edu> - 1.7.1-1
Patrick Diehl 1e0b191
- Hpx 1.7.1
e8142e4
fac0d02
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.0-2
fac0d02
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
fac0d02
Patrick Diehl 879b9c1
* Tue Jun 8 2021 Patrick Diehl <patrickdiehl@lsu.edu> - 1.7.0-1
Patrick Diehl 879b9c1
- Update to HPX 1.7.0
Patrick Diehl 879b9c1
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