Hello community, here is the log from the commit of package hpx for openSUSE:Factory checked in at 2019-03-24 15:00:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hpx (Old) and /work/SRC/openSUSE:Factory/.hpx.new.25356 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hpx" Sun Mar 24 15:00:53 2019 rev:7 rq:687801 version:1.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/hpx/hpx.changes 2019-01-03 18:07:18.872103762 +0100 +++ /work/SRC/openSUSE:Factory/.hpx.new.25356/hpx.changes 2019-03-24 15:01:01.487171417 +0100 @@ -1,0 +2,14 @@ +Wed Mar 20 02:53:06 UTC 2019 - Christoph Junghans <jungh...@votca.org> + +- Version bump to 1.2.1 + * Compilation on various platforms + * A critical bug in the future implementation + * Various CMake bugs +- Drop 3551.patch, 3557.patch, reproducible.patch and 3591.patch - merged upstream + +------------------------------------------------------------------- +Tue Mar 19 23:28:05 UTC 2019 - Christoph Junghans <jungh...@votca.org> + +- Fix build with boost-1.69 + +------------------------------------------------------------------- Old: ---- 3551.patch 3557.patch 3591.patch hpx_1.2.0.tar.gz New: ---- hpx_1.2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hpx.spec ++++++ --- /var/tmp/diff_new_pack.CA1baz/_old 2019-03-24 15:01:08.035170579 +0100 +++ /var/tmp/diff_new_pack.CA1baz/_new 2019-03-24 15:01:08.039170578 +0100 @@ -2,7 +2,7 @@ # spec file for package hpx # # Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany. -# Copyright (c) 2014 Christoph Junghans +# Copyright (c) 2019 Christoph Junghans # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -29,21 +29,15 @@ %endif Name: hpx -Version: 1.2.0 +Version: 1.2.1 Release: 0 Summary: General Purpose C++ Runtime System License: BSL-1.0 Group: Productivity/Networking/Other URL: http://stellar.cct.lsu.edu/tag/hpx/ Source0: http://stellar.cct.lsu.edu/files/%{name}_%{version}.tar.gz -#PATCH-FIX-UPSTREAM 3551.patch, fix build on i586, https://github.com/STEllAR-GROUP/hpx/pull/3551 -Patch0: https://github.com/STEllAR-GROUP/hpx/pull/3551.patch -#PATCH-FIX-UPSTREAM 3557.patch, fix build on ppc64, https://github.com/STEllAR-GROUP/hpx/pull/3557 -Patch1: 3557.patch #PATCH-FIX-UPSTREAM boo#1100677 avoid compile-time CPU-detection https://github.com/STEllAR-GROUP/hpx/pull/3585 Patch2: reproducible.patch -#PATCH-FIX-UPSTREAM 3591.patch, fix build on arm, https://github.com/STEllAR-GROUP/hpx/pull/3591 -Patch3: 3591.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -53,9 +47,10 @@ %if 0%{?suse_version} > 1325 BuildRequires: libboost_atomic-devel BuildRequires: libboost_filesystem-devel +BuildRequires: libboost_system-devel BuildRequires: libboost_program_options-devel BuildRequires: libboost_regex-devel -%ifarch aarch64 s390x %{arm} ppc64 +%ifarch aarch64 %arm BuildRequires: libboost_chrono-devel BuildRequires: libboost_context-devel BuildRequires: libboost_thread-devel @@ -103,16 +98,18 @@ %prep %setup -n %{name}_%{version} -q -%patch0 -p1 -%patch1 -p1 %patch2 -p1 -%patch3 -p1 %build -%ifarch aarch64 s390x armv7hl ppc64 %arm +%ifarch aarch64 %arm %define cmake_opts -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=ON %endif +# add lib atomic for s390x and ppc64 +%ifarch s390x ppc64 +%define cmake_opts -DCMAKE_SHARED_LINKER_FLAGS="$RPM_OPT_FLAGS -latomic" -DCMAKE_EXE_LINKER_FLAGS="$RPM_OPT_FLAGS -latomic" +%endif + . %{_libdir}/mpi/gcc/%{mpi_implem}/bin/mpivars.sh %{cmake} -DLIB=%{_lib} %{?cmake_opts:%{cmake_opts}} -DHPX_WITH_BUILD_BINARY_PACKAGE=ON make # no _smp_mflags to save memory @@ -122,8 +119,7 @@ rm %{buildroot}/%{_datadir}/%{name}/LICENSE_1_0.txt %fdupes %{buildroot}%{_prefix} -sed -i '1s@env @@' %{buildroot}/%{_bindir}/{hpx*.py,hpxcxx} %{buildroot}/%{_libdir}/cmake/HPX/templates/hpx{cxx,run.py}.in -chmod +x %{buildroot}/%{_libdir}/cmake/HPX/templates/hpx{cxx,run.py}.in +sed -i '1s@env @@' %{buildroot}/%{_bindir}/{hpx*.py,hpxcxx} %check # full testsuite takes too much memory just run tests.examples in 1.2.0 ++++++ hpx_1.2.0.tar.gz -> hpx_1.2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/CMakeLists.txt new/hpx_1.2.1/CMakeLists.txt --- old/hpx_1.2.0/CMakeLists.txt 2018-11-08 09:36:03.000000000 +0100 +++ new/hpx_1.2.1/CMakeLists.txt 2019-02-13 17:19:06.000000000 +0100 @@ -47,7 +47,7 @@ set(HPX_MAJOR_VERSION 1) set(HPX_MINOR_VERSION 2) -set(HPX_PATCH_LEVEL 0) +set(HPX_PATCH_LEVEL 1) set(HPX_VERSION "${HPX_MAJOR_VERSION}.${HPX_MINOR_VERSION}.${HPX_PATCH_LEVEL}") set(HPX_LIBRARY_VERSION "${HPX_VERSION}") set(HPX_SOVERSION ${HPX_MAJOR_VERSION}) @@ -60,6 +60,7 @@ ################################################################################ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake") +include(GNUInstallDirs) include(HPX_Utils) # explicitly set certain policies @@ -226,6 +227,10 @@ "Enable compiler warnings (default: ON)" ON ADVANCED) +hpx_option(HPX_WITH_EXECUTABLE_PREFIX STRING + "Executable prefix (default none), 'hpx_' useful for system install." + "" CATEGORY "Build Targets") + hpx_option(HPX_WITH_DOCUMENTATION BOOL "Build the HPX documentation (default OFF)." OFF CATEGORY "Build Targets") @@ -1694,14 +1699,9 @@ endif() -# ################################################################################ -# # search path configuration -# ################################################################################ - -if (NOT DEFINED LIB) - set(LIB "lib") -endif(NOT DEFINED LIB) - +################################################################################ +# search path configuration +################################################################################ if(HPX_WITH_FULL_RPATH) hpx_include(SetFullRPATH) endif() @@ -1834,7 +1834,7 @@ ################################################################################ install( FILES "${CMAKE_BINARY_DIR}/bin/hpxrun.py" - DESTINATION bin + DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT core PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE @@ -1842,7 +1842,7 @@ install( # install all hpx header files DIRECTORY hpx/ - DESTINATION include/hpx + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hpx COMPONENT core FILES_MATCHING PATTERN "*.hpp" PATTERN ".git" EXCLUDE @@ -1853,7 +1853,7 @@ # cmake options install( DIRECTORY "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpx/" - DESTINATION include/hpx + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hpx COMPONENT core FILES_MATCHING PATTERN "*.hpp" PATTERN ".git" EXCLUDE @@ -1862,14 +1862,15 @@ install( # Install all HPX cmake utility files DIRECTORY cmake/ - DESTINATION ${LIB}/cmake/${HPX_PACKAGE_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${HPX_PACKAGE_NAME} COMPONENT core - PATTERN ".cmake.in" EXCLUDE + PATTERN "templates" EXCLUDE + PATTERN "packaging" EXCLUDE PATTERN ".git" EXCLUDE) install( # Install HPX Python scripts DIRECTORY python/scripts/ - DESTINATION bin + DESTINATION ${CMAKE_INSTALL_BINDIR} FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE @@ -1894,13 +1895,13 @@ # COMMAND "${CMAKE_COMMAND}" -E create_symlink "${script_name}" "${script_name_we}" # WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python/scripts") # -# install(FILES "${CMAKE_BINARY_DIR}/python/scripts/${script_name_we}" DESTINATION "bin") +# install(FILES "${CMAKE_BINARY_DIR}/python/scripts/${script_name_we}" DESTINATION "${CMAKE_INSTALL_BINDIR}") # endforeach() # endif() # # install( # Install HPX Python module (TODO: this is a temporary hack) # DIRECTORY python/hpx -# DESTINATION share/hpx-${HPX_VERSION}/python +# DESTINATION ${CMAKE_INSTALL_DATADIR}/hpx-${HPX_VERSION}/python # COMPONENT core # FILES_MATCHING PATTERN "*.py" # PATTERN ".git" EXCLUDE) @@ -1911,13 +1912,13 @@ # "hpx-${HPX_VERSION}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python") # # create a symlink in share pointing to the latest HPX installation # execute_process(COMMAND "${CMAKE_COMMAND}" -E create_symlink "hpx-${HPX_VERSION}" "hpx" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python") -# install(DIRECTORY "${CMAKE_BINARY_DIR}/python/hpx" DESTINATION "share") +# install(DIRECTORY "${CMAKE_BINARY_DIR}/python/hpx" DESTINATION "${CMAKE_INSTALL_DATADIR}") if("${HPX_PLATFORM_UC}" STREQUAL "XEONPHI") # FIXME: push changes upstream install( DIRECTORY external/asio/boost - DESTINATION include/hpx/external + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/hpx/external COMPONENT core FILES_MATCHING PATTERN "*.hpp" PATTERN ".git" EXCLUDE) @@ -1925,19 +1926,19 @@ install( FILES "${PROJECT_SOURCE_DIR}/LICENSE_1_0.txt" - DESTINATION share/hpx + DESTINATION ${CMAKE_INSTALL_DATADIR}/hpx COMPONENT license) if(HPX_WITH_DOCUMENTATION) # Install HPX documentation files install( FILES "${PROJECT_SOURCE_DIR}/docs/index.html" - DESTINATION share/hpx/ + DESTINATION ${CMAKE_INSTALL_DATADIR}/hpx/ COMPONENT docs) install( DIRECTORY "${CMAKE_BINARY_DIR}/share/hpx/docs/html/" - DESTINATION share/hpx/docs/html + DESTINATION ${CMAKE_INSTALL_DATADIR}/hpx/docs/html COMPONENT docs PATTERN ".git" EXCLUDE) endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/HPX_AddComponent.cmake new/hpx_1.2.1/cmake/HPX_AddComponent.cmake --- old/hpx_1.2.0/cmake/HPX_AddComponent.cmake 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/cmake/HPX_AddComponent.cmake 2019-02-11 17:04:30.000000000 +0100 @@ -102,10 +102,10 @@ set(exclude_from_all EXCLUDE_FROM_ALL) else() if(${name}_PLUGIN AND NOT HPX_WITH_STATIC_LINKING) - set(install_destination ${LIB}/hpx) + set(install_destination ${CMAKE_INSTALL_LIBDIR}/hpx) set(${name}_OUTPUT_SUFFIX hpx) else() - set(install_destination ${LIB}) + set(install_destination ${CMAKE_INSTALL_LIBDIR}) endif() if(${name}_INSTALL_SUFFIX) set(install_destination ${${name}_INSTALL_SUFFIX}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/HPX_AddExecutable.cmake new/hpx_1.2.1/cmake/HPX_AddExecutable.cmake --- old/hpx_1.2.0/cmake/HPX_AddExecutable.cmake 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/cmake/HPX_AddExecutable.cmake 2019-02-11 17:04:32.000000000 +0100 @@ -101,7 +101,7 @@ if(${name}_EXCLUDE_FROM_ALL) set(exclude_from_all EXCLUDE_FROM_ALL TRUE) else() - set(install_destination bin) + set(install_destination ${CMAKE_INSTALL_BINDIR}) if(${name}_INSTALL_SUFFIX) set(install_destination ${${name}_INSTALL_SUFFIX}) endif() @@ -149,7 +149,7 @@ endif() endif() - set_target_properties(${name}_exe PROPERTIES OUTPUT_NAME ${name}) + set_target_properties(${name}_exe PROPERTIES OUTPUT_NAME "${HPX_WITH_EXECUTABLE_PREFIX}${name}") if(exclude_from_all) set_target_properties(${name}_exe PROPERTIES ${exclude_from_all}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/HPX_AddLibrary.cmake new/hpx_1.2.1/cmake/HPX_AddLibrary.cmake --- old/hpx_1.2.0/cmake/HPX_AddLibrary.cmake 2018-11-08 09:36:03.000000000 +0100 +++ new/hpx_1.2.1/cmake/HPX_AddLibrary.cmake 2019-02-11 17:04:30.000000000 +0100 @@ -93,13 +93,10 @@ set(exclude_from_all EXCLUDE_FROM_ALL) else() if(${name}_PLUGIN AND NOT HPX_WITH_STATIC_LINKING) - set(install_destination ${LIB}/hpx) + set(install_destination ${CMAKE_INSTALL_LIBDIR}/hpx) set(${name}_OUTPUT_SUFFIX hpx) else() - if(NOT LIB) - set(LIB "lib/") - endif() - set(install_destination ${LIB}) + set(install_destination ${CMAKE_INSTALL_LIBDIR}) endif() if(${name}_INSTALL_SUFFIX) set(install_destination ${${name}_INSTALL_SUFFIX}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/HPX_GeneratePackage.cmake new/hpx_1.2.1/cmake/HPX_GeneratePackage.cmake --- old/hpx_1.2.0/cmake/HPX_GeneratePackage.cmake 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/cmake/HPX_GeneratePackage.cmake 2019-02-14 17:25:13.000000000 +0100 @@ -126,14 +126,16 @@ # Configure config for the install dir ... set(HPX_CONF_INCLUDE_DIRS - "-I${CMAKE_INSTALL_PREFIX}/include -I${CMAKE_INSTALL_PREFIX}/include/hpx/external ${_NEEDED_INCLUDE_DIRS}" + "-I${CMAKE_INSTALL_FULL_INCLUDEDIR} -I${CMAKE_INSTALL_FULL_INCLUDEDIR}/hpx/external ${_NEEDED_INCLUDE_DIRS}" ) set(HPX_CMAKE_CONF_INCLUDE_DIRS - "${CMAKE_INSTALL_PREFIX}/include" - "${CMAKE_INSTALL_PREFIX}/include/hpx/external" + "${CMAKE_INSTALL_FULL_INCLUDEDIR}" + "${CMAKE_INSTALL_FULL_INCLUDEDIR}/hpx/external" "${_NEEDED_CMAKE_INCLUDE_DIRS}" ) set(HPX_CONF_PREFIX ${CMAKE_INSTALL_PREFIX}) +set(HPX_CONF_LIBDIR "${CMAKE_INSTALL_LIBDIR}") +set(HPX_CONF_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}") set(HPX_CONF_LIBRARY_DIR ${HPX_LIBRARY_DIR}) configure_file(cmake/templates/${HPX_PACKAGE_NAME}Config.cmake.in @@ -163,6 +165,8 @@ # ... and the build dir set(HPX_CONF_PREFIX "${CMAKE_BINARY_DIR}") +set(HPX_CONF_LIBDIR "lib") +set(HPX_CONF_INCLUDEDIR "include") set(HPX_CONF_INCLUDE_DIRS "${_NEEDED_BUILD_DIR_INCLUDE_DIRS} ${_NEEDED_INCLUDE_DIRS}" ) @@ -196,7 +200,7 @@ @ONLY) # Configure macros for the install dir ... -set(HPX_CMAKE_MODULE_PATH "${CMAKE_INSTALL_PREFIX}/lib/cmake/${HPX_PACKAGE_NAME}") +set(HPX_CMAKE_MODULE_PATH "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${HPX_PACKAGE_NAME}") configure_file(cmake/templates/HPXMacros.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/HPXMacros.cmake" ESCAPE_QUOTES @ONLY) @@ -210,7 +214,7 @@ EXPORT HPXTargets FILE HPXTargets.cmake # NAMESPACE hpx:: - DESTINATION ${LIB}/cmake/${HPX_PACKAGE_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${HPX_PACKAGE_NAME} ) install( @@ -218,7 +222,7 @@ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${HPX_PACKAGE_NAME}Config.cmake" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/HPXMacros.cmake" "${CMAKE_CURRENT_BINARY_DIR}/lib/cmake/${HPX_PACKAGE_NAME}/${HPX_PACKAGE_NAME}ConfigVersion.cmake" - DESTINATION ${LIB}/cmake/${HPX_PACKAGE_NAME} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${HPX_PACKAGE_NAME} COMPONENT cmake ) @@ -228,14 +232,14 @@ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpx_application_debug.pc" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpx_component.pc" "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpx_component_debug.pc" - DESTINATION ${LIB}/pkgconfig + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig COMPONENT pkgconfig ) install( FILES "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpxcxx" - DESTINATION bin + DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT compiler_wrapper PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE @@ -245,6 +249,6 @@ install( FILES "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/hpx_bazel_defs.bzl" - DESTINATION ${LIB}/bazel + DESTINATION ${CMAKE_INSTALL_LIBDIR}/bazel COMPONENT bazel ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/HPX_SetFullRPATH.cmake new/hpx_1.2.1/cmake/HPX_SetFullRPATH.cmake --- old/hpx_1.2.0/cmake/HPX_SetFullRPATH.cmake 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/cmake/HPX_SetFullRPATH.cmake 2019-02-11 17:04:33.000000000 +0100 @@ -3,12 +3,8 @@ # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -if (NOT DEFINED LIB) - set(LIB "lib") -endif(NOT DEFINED LIB) - -list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${LIB}" isSystemDir) +list(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_FULL_LIBDIR}" isSystemDir) if(isSystemDir EQUAL -1) - set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${LIB}") + set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_FULL_LIBDIR}") endif() set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/HPXConfig.cmake.in new/hpx_1.2.1/cmake/templates/HPXConfig.cmake.in --- old/hpx_1.2.0/cmake/templates/HPXConfig.cmake.in 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/HPXConfig.cmake.in 2019-02-11 17:04:30.000000000 +0100 @@ -60,10 +60,6 @@ set(HPX_CMAKE_LOGLEVEL "WARN") endif() -if(NOT LIB) - set(LIB "lib") -endif() - set(HPX_LINK_LIBRARIES "@HPX_LINK_LIBRARIES@") enable_language(C) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/HPXMacros.cmake.in new/hpx_1.2.1/cmake/templates/HPXMacros.cmake.in --- old/hpx_1.2.0/cmake/templates/HPXMacros.cmake.in 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/HPXMacros.cmake.in 2019-02-11 17:05:03.000000000 +0100 @@ -5,6 +5,8 @@ # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "@HPX_CMAKE_MODULE_PATH@") + +include(GNUInstallDirs) include(HPX_Utils) function(hpx_check_compiler_compatibility) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/hpx_application.pc.in new/hpx_1.2.1/cmake/templates/hpx_application.pc.in --- old/hpx_1.2.0/cmake/templates/hpx_application.pc.in 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/hpx_application.pc.in 2019-02-11 17:05:17.000000000 +0100 @@ -6,8 +6,8 @@ prefix=@HPX_CONF_PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${exec_prefix}/include +libdir=${exec_prefix}/@HPX_CONF_LIBDIR@ +includedir=${exec_prefix}/@HPX_CONF_INCLUDEDIR@ Name: hpx_application Description: High Performance ParalleX (application configuration) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/hpx_application_debug.pc.in new/hpx_1.2.1/cmake/templates/hpx_application_debug.pc.in --- old/hpx_1.2.0/cmake/templates/hpx_application_debug.pc.in 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/hpx_application_debug.pc.in 2019-02-11 17:05:17.000000000 +0100 @@ -6,8 +6,8 @@ prefix=@HPX_CONF_PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${exec_prefix}/include +libdir=${exec_prefix}/@HPX_CONF_LIBDIR@ +includedir=${exec_prefix}/@HPX_CONF_INCLUDEDIR@ Name: hpx_application Description: High Performance ParalleX (application configuration) - debug build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/hpx_component.pc.in new/hpx_1.2.1/cmake/templates/hpx_component.pc.in --- old/hpx_1.2.0/cmake/templates/hpx_component.pc.in 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/hpx_component.pc.in 2019-02-11 17:05:17.000000000 +0100 @@ -6,8 +6,8 @@ prefix=@HPX_CONF_PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${exec_prefix}/include +libdir=${exec_prefix}/@HPX_CONF_LIBDIR@ +includedir=${exec_prefix}/@HPX_CONF_INCLUDEDIR@ Name: hpx_component Description: High Performance ParalleX (application configuration) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/cmake/templates/hpx_component_debug.pc.in new/hpx_1.2.1/cmake/templates/hpx_component_debug.pc.in --- old/hpx_1.2.0/cmake/templates/hpx_component_debug.pc.in 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/cmake/templates/hpx_component_debug.pc.in 2019-02-11 17:05:17.000000000 +0100 @@ -6,8 +6,8 @@ prefix=@HPX_CONF_PREFIX@ exec_prefix=${prefix} -libdir=${exec_prefix}/lib -includedir=${exec_prefix}/include +libdir=${exec_prefix}/@HPX_CONF_LIBDIR@ +includedir=${exec_prefix}/@HPX_CONF_INCLUDEDIR@ Name: hpx_component Description: High Performance ParalleX (application configuration) - debug build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/docs/sphinx/contributing/release_procedure.rst new/hpx_1.2.1/docs/sphinx/contributing/release_procedure.rst --- old/hpx_1.2.0/docs/sphinx/contributing/release_procedure.rst 2018-11-08 15:23:40.000000000 +0100 +++ new/hpx_1.2.1/docs/sphinx/contributing/release_procedure.rst 2019-02-19 10:16:23.000000000 +0100 @@ -32,7 +32,8 @@ #. Write release notes in ``docs/sphinx/releases/whats_new_$VERSION.rst``. Keep adding merged PRs and closed issues to this until just before the release is - made. + made. Add the new release notes to the table of contents in + ``docs/sphinx/releases.rst``. #. Build the docs, and proof-read them. Update any documentation that may have changed, and correct any typos. Pay special attention to: @@ -67,7 +68,8 @@ be deleted and recreated. #. Delete the old release branch, and create a new one by branching a stable - point from master. + point from master. If you are creating a patch release, branch from the + release tag for which you want to create a patch release. * ``git push origin --delete release`` * ``git branch -D release`` @@ -87,7 +89,7 @@ #. Remove features which have been deprecated for at least 2 releases. This involves removing build options which enable those features from the main CMakeLists.txt and also deleting all related code and tests from the main - source tree. + source tree. This step does not apply to patch releases. The general deprecation policy involves a three-step process we have to go through in order to introduce a breaking change @@ -119,8 +121,8 @@ #. Allow at least a week for testing of the release candidate. - * Use ``git merge`` when possible, and fall back to ``git cherry-pick`` - when needed. + * Use ``git merge`` when possible, and fall back to ``git cherry-pick`` when + needed. * Repeat by tagging a new release candidate as many times as needed. #. Checkout the release branch, and replace the ``-rcN`` tag in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/docs/sphinx/quickstart.rst new/hpx_1.2.1/docs/sphinx/quickstart.rst --- old/hpx_1.2.0/docs/sphinx/quickstart.rst 2018-11-12 14:34:03.000000000 +0100 +++ new/hpx_1.2.1/docs/sphinx/quickstart.rst 2019-02-01 16:30:28.000000000 +0100 @@ -32,7 +32,7 @@ .. code-block:: sh - git checkout 1.2.0 + git checkout 1.2.1 |hpx| dependencies ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/docs/sphinx/releases/whats_new_1_2_1.rst new/hpx_1.2.1/docs/sphinx/releases/whats_new_1_2_1.rst --- old/hpx_1.2.0/docs/sphinx/releases/whats_new_1_2_1.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/hpx_1.2.1/docs/sphinx/releases/whats_new_1_2_1.rst 2019-02-19 10:12:03.000000000 +0100 @@ -0,0 +1,55 @@ +.. + Copyright (C) 2007-2019 Hartmut Kaiser + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +.. _hpx_1_2_1: + +=========================== +|hpx| V1.2.1 (Feb 19, 2019) +=========================== + +General changes +=============== + +This is a bugfix release. It contains the following changes: + +* Fix compilation on ARM, s390x and 32-bit architectures. +* Fix a critical bug in the ``future`` implementation. +* Fix several problems in the CMake configuration which affects external + projects. +* Add support for Boost 1.69.0. + +Closed issues +============= + +* :hpx-issue:`3638` - Build HPX 1.2 with boost 1.69 +* :hpx-issue:`3635` - Non-deterministic crashing on Stampede2 +* :hpx-issue:`3550` - 1>e:\000work\hpx\src\throw_exception.cpp(54): error C2440: + '<function-style-cast>': cannot convert from 'boost::system::error_code' to + 'hpx::exception' +* :hpx-issue:`3549` - HPX 1.2.0 does not build on i686, but release candidate + did +* :hpx-issue:`3511` - Build on s390x fails +* :hpx-issue:`3509` - Build on armv7l fails + +Closed pull requests +==================== + +* :hpx-pr:`3695` - Don't install CMake templates and packaging files +* :hpx-pr:`3666` - Fixing yet another race in future_data +* :hpx-pr:`3663` - Fixing race between setting and getting the value inside + future_data +* :hpx-pr:`3648` - Adding timestamp option for S390x platform +* :hpx-pr:`3647` - Blind attempt to fix warnings issued by gcc V9 +* :hpx-pr:`3611` - Include GNUInstallDirs earlier to have it available for + subdirectories +* :hpx-pr:`3595` - Use GNUInstallDirs lib path in pkgconfig config file +* :hpx-pr:`3593` - Add include(GNUInstallDirs) to HPXMacros.cmake +* :hpx-pr:`3591` - Fix compilation error on arm7 architecture. Compiles and runs + on Fedora 29 on Pi 3. +* :hpx-pr:`3558` - Adding constructor `exception(boost::system::error_code + const&)` +* :hpx-pr:`3555` - cmake: make install locations configurable +* :hpx-pr:`3551` - Fix uint64_t causing compilation fail on i686 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/docs/sphinx/releases.rst new/hpx_1.2.1/docs/sphinx/releases.rst --- old/hpx_1.2.0/docs/sphinx/releases.rst 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/docs/sphinx/releases.rst 2019-02-01 16:24:37.000000000 +0100 @@ -13,6 +13,7 @@ .. toctree:: :maxdepth: 1 + releases/whats_new_1_2_1 releases/whats_new_1_2_0 releases/whats_new_1_1_0 releases/whats_new_1_0_0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/examples/resource_partitioner/async_customization.cpp new/hpx_1.2.1/examples/resource_partitioner/async_customization.cpp --- old/hpx_1.2.0/examples/resource_partitioner/async_customization.cpp 2018-11-08 09:36:03.000000000 +0100 +++ new/hpx_1.2.1/examples/resource_partitioner/async_customization.cpp 2019-02-01 16:42:50.000000000 +0100 @@ -29,7 +29,7 @@ #include "shared_priority_queue_scheduler.hpp" // #include <cstddef> -#include <cstddef> +#include <cstdint> #include <iostream> #include <memory> #include <string> @@ -382,11 +382,11 @@ // test 3b std::cout << "============================" << std::endl; std::cout << "Test 3b : when_all(shared)" << std::endl; - future<uint64_t> fws1 = make_ready_future(uint64_t(42)); + future<std::uint64_t> fws1 = make_ready_future(std::uint64_t(42)); shared_future<float> fws2 = make_ready_future(3.1415f).share(); // auto fws = when_all(fws1, fws2).then(exec, - [](future<util::tuple<future<uint64_t>, shared_future<float>>> && f) + [](future<util::tuple<future<std::uint64_t>, shared_future<float>>> && f) { auto tup = f.get(); auto cmplx = std::complex<double>( @@ -401,13 +401,13 @@ // test 4a std::cout << "============================" << std::endl; std::cout << "Test 4a : dataflow()" << std::endl; - future<uint16_t> f1 = make_ready_future(uint16_t(255)); + future<std::uint16_t> f1 = make_ready_future(std::uint16_t(255)); future<double> f2 = make_ready_future(127.890); // auto fd = dataflow(exec, - [](future<uint16_t> && f1, future<double> && f2) + [](future<std::uint16_t> && f1, future<double> && f2) { - auto cmplx = std::complex<uint64_t>(f1.get(), f2.get()); + auto cmplx = std::complex<std::uint64_t>(f1.get(), f2.get()); std::cout << "Inside dataflow : " << cmplx << std::endl; return cmplx; } @@ -419,13 +419,13 @@ // test 4b std::cout << "============================" << std::endl; std::cout << "Test 4b : dataflow(shared)" << std::endl; - future<uint16_t> fs1 = make_ready_future(uint16_t(255)); + future<std::uint16_t> fs1 = make_ready_future(std::uint16_t(255)); shared_future<double> fs2 = make_ready_future(127.890).share(); // auto fds = dataflow(exec, - [](future<uint16_t> && f1, shared_future<double> && f2) + [](future<std::uint16_t> && f1, shared_future<double> && f2) { - auto cmplx = std::complex<uint64_t>(f1.get(), f2.get()); + auto cmplx = std::complex<std::uint64_t>(f1.get(), f2.get()); std::cout << "Inside dataflow(shared) : " << cmplx << std::endl; return cmplx; } @@ -453,14 +453,14 @@ std::cout << "Hint 2 \n"; return 0; } - int operator()(const uint16_t, const double) const { + int operator()(const std::uint16_t, const double) const { std::cout << "Hint 3 \n"; return 0; } int operator()(const util::tuple<future<int>, future<double>> &) const { return 0; } - int operator()(const util::tuple<future<long unsigned int>, + int operator()(const util::tuple<future<std::uint64_t>, shared_future<float>> &) const { return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/config/version.hpp new/hpx_1.2.1/hpx/config/version.hpp --- old/hpx_1.2.0/hpx/config/version.hpp 2018-11-12 13:46:25.000000000 +0100 +++ new/hpx_1.2.1/hpx/config/version.hpp 2019-02-19 10:05:15.000000000 +0100 @@ -26,13 +26,13 @@ // HPX_VERSION_DATE YYYYMMDD is the date of the release // (estimated release date for master branch) // -#define HPX_VERSION_FULL 0x010200 +#define HPX_VERSION_FULL 0x010201 #define HPX_VERSION_MAJOR 1 #define HPX_VERSION_MINOR 2 -#define HPX_VERSION_SUBMINOR 0 +#define HPX_VERSION_SUBMINOR 1 -#define HPX_VERSION_DATE 20181112 +#define HPX_VERSION_DATE 20190219 #if !defined(HPX_AGAS_VERSION) #define HPX_AGAS_VERSION 0x30 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/error_code.hpp new/hpx_1.2.1/hpx/error_code.hpp --- old/hpx_1.2.0/hpx/error_code.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/error_code.hpp 2019-02-05 17:20:19.000000000 +0100 @@ -215,6 +215,12 @@ exception_ = std::exception_ptr(); } + /// Copy constructor for error_code + /// + /// \note This function maintains the error category of the left hand + /// side if the right hand side is a success code. + HPX_EXPORT error_code(error_code const& rhs); + /// Assignment operator for error_code /// /// \note This function maintains the error category of the left hand diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/exception.hpp new/hpx_1.2.1/hpx/exception.hpp --- old/hpx_1.2.0/hpx/exception.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/exception.hpp 2019-02-01 16:43:16.000000000 +0100 @@ -50,6 +50,12 @@ /// Construct a hpx::exception from a boost#system_error. explicit exception(boost::system::system_error const& e); + /// Construct a hpx::exception from a boost#system#error_code (this is + /// new for Boost V1.69). This constructor is required to compensate + /// for the changes introduced as a resolution to LWG3162 + /// (https://cplusplus.github.io/LWG/issue3162). + explicit exception(boost::system::error_code const& e); + /// Construct a hpx::exception from a \a hpx::error and an error message. /// /// \param e The parameter \p e holds the hpx::error code the new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/lcos/detail/future_data.hpp new/hpx_1.2.1/hpx/lcos/detail/future_data.hpp --- old/hpx_1.2.0/hpx/lcos/detail/future_data.hpp 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/hpx/lcos/detail/future_data.hpp 2019-02-06 16:29:04.000000000 +0100 @@ -264,15 +264,15 @@ // continuation support // deferred execution of a given continuation - bool run_on_completed(completed_callback_type&& on_completed, - std::exception_ptr& ptr); - bool run_on_completed(completed_callback_vector_type&& on_completed, - std::exception_ptr& ptr); + static void run_on_completed( + completed_callback_type&& on_completed) noexcept; + static void run_on_completed( + completed_callback_vector_type&& on_completed) noexcept; // make sure continuation invocation does not recurse deeper than // allowed template <typename Callback> - void handle_on_completed(Callback&& on_completed); + static void handle_on_completed(Callback&& on_completed); /// Set the callback which needs to be invoked when the future becomes /// ready. If the future is ready the function will be invoked @@ -428,6 +428,10 @@ // registered continuations std::unique_lock<mutex_type> l(mtx_); + // handle all threads waiting for the future to become ready + auto on_completed = std::move(on_completed_); + on_completed_.clear(); + // The value has been set, changing the state to 'value' at this // point signals to all other threads that this future is ready. state expected = empty; @@ -443,10 +447,6 @@ return; } - // handle all threads waiting for the future to become ready - auto on_completed = std::move(on_completed_); - on_completed_.clear(); - // Note: we use notify_one repeatedly instead of notify_all as we // know: a) that most of the time we have at most one thread // waiting on the future (most futures are not shared), and @@ -484,6 +484,10 @@ // registered continuations std::unique_lock<mutex_type> l(mtx_); + // handle all threads waiting for the future to become ready + auto on_completed = std::move(on_completed_); + on_completed_.clear(); + // The value has been set, changing the state to 'exception' at this // point signals to all other threads that this future is ready. state expected = empty; @@ -499,10 +503,6 @@ return; } - // handle all threads waiting for the future to become ready - auto on_completed = std::move(on_completed_); - on_completed_.clear(); - // Note: we use notify_one repeatedly instead of notify_all as we // know: a) that most of the time we have at most one thread // waiting on the future (most futures are not shared), and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/lcos/local/spinlock.hpp new/hpx_1.2.1/hpx/lcos/local/spinlock.hpp --- old/hpx_1.2.0/hpx/lcos/local/spinlock.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/lcos/local/spinlock.hpp 2019-02-01 16:43:43.000000000 +0100 @@ -2,8 +2,8 @@ // Copyright (c) 2011 Bryce Lelbach // Copyright (c) 2011-2018 Hartmut Kaiser // Copyright (c) 2014 Thomas Heller -// // Copyright (c) 2008 Peter Dimov +// Copyright (c) 2018 Patrick Diehl // // Distributed under the Boost Software License, Version 1.0. (See accompanying // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -28,7 +28,7 @@ # include <boost/detail/interlocked.hpp> # endif #else -# if !defined(__ANDROID__) && !defined(ANDROID) && !defined(__arm__) +# if !defined(__ANDROID__) && !defined(ANDROID) # include <boost/smart_ptr/detail/spinlock.hpp> # if defined(__ia64__) && defined(__INTEL_COMPILER) # include <ia64intrin.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/parallel/executors/execution_parameters.hpp new/hpx_1.2.1/hpx/parallel/executors/execution_parameters.hpp --- old/hpx_1.2.0/hpx/parallel/executors/execution_parameters.hpp 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/hpx/parallel/executors/execution_parameters.hpp 2019-02-07 09:23:19.000000000 +0100 @@ -377,7 +377,6 @@ template <typename T, typename Wrapper, typename Enable = void> struct maximal_number_of_chunks_call_helper { - maximal_number_of_chunks_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> @@ -386,104 +385,80 @@ has_maximal_number_of_chunks<T>::value >::type> { - maximal_number_of_chunks_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor> HPX_FORCEINLINE std::size_t maximal_number_of_chunks( Executor && exec, std::size_t cores, std::size_t num_tasks) { - return wrap_.get().maximal_number_of_chunks( + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + return wrapped.maximal_number_of_chunks( std::forward<Executor>(exec), cores, num_tasks); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T, typename Wrapper, typename Enable = void> struct get_chunk_size_call_helper { - get_chunk_size_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> struct get_chunk_size_call_helper<T, Wrapper, typename std::enable_if<has_get_chunk_size<T>::value>::type> { - get_chunk_size_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor, typename F> HPX_FORCEINLINE std::size_t get_chunk_size(Executor && exec, F && f, std::size_t cores, std::size_t num_tasks) { - return wrap_.get().get_chunk_size(std::forward<Executor>(exec), + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + return wrapped.get_chunk_size(std::forward<Executor>(exec), std::forward<F>(f), cores, num_tasks); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T, typename Wrapper, typename Enable = void> struct mark_begin_execution_call_helper { - mark_begin_execution_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> struct mark_begin_execution_call_helper<T, Wrapper, typename std::enable_if<has_mark_begin_execution<T>::value>::type> { - mark_begin_execution_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor> HPX_FORCEINLINE void mark_begin_execution(Executor && exec) { - wrap_.get().mark_begin_execution(std::forward<Executor>(exec)); + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + wrapped.mark_begin_execution(std::forward<Executor>(exec)); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T, typename Wrapper, typename Enable = void> struct mark_end_execution_call_helper { - mark_end_execution_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> struct mark_end_execution_call_helper<T, Wrapper, typename std::enable_if<has_mark_begin_execution<T>::value>::type> { - mark_end_execution_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor> HPX_FORCEINLINE void mark_end_execution(Executor && exec) { - wrap_.get().mark_end_execution(std::forward<Executor>(exec)); + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + wrapped.mark_end_execution(std::forward<Executor>(exec)); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T, typename Wrapper, typename Enable = void> struct processing_units_count_call_helper { - processing_units_count_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> @@ -492,27 +467,21 @@ has_count_processing_units<T>::value >::type> { - processing_units_count_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor> HPX_FORCEINLINE std::size_t processing_units_count(Executor && exec) { - return wrap_.get().processing_units_count( + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + return wrapped.processing_units_count( std::forward<Executor>(exec)); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T, typename Wrapper, typename Enable = void> struct reset_thread_distribution_call_helper { - reset_thread_distribution_call_helper(Wrapper&) {} }; template <typename T, typename Wrapper> @@ -521,27 +490,22 @@ has_reset_thread_distribution<T>::value >::type> { - reset_thread_distribution_call_helper(Wrapper& wrap) - : wrap_(wrap) - {} - template <typename Executor> HPX_FORCEINLINE void reset_thread_distribution(Executor && exec) { - wrap_.get().reset_thread_distribution( - std::forward<Executor>(exec)); + auto& wrapped = + static_cast<unwrapper<Wrapper>*>(this)->member_.get(); + wrapped.reset_thread_distribution(std::forward<Executor>(exec)); } - - private: - Wrapper& wrap_; }; /////////////////////////////////////////////////////////////////////// template <typename T> struct base_member_helper { - base_member_helper(T && t) - : member_(std::move(t)) + template <typename U> + explicit base_member_helper(U&& t) + : member_(std::forward<U>(t)) {} T member_; @@ -561,13 +525,7 @@ typedef boost::reference_wrapper<T> wrapper_type; unwrapper(wrapper_type wrapped_param) - : base_member_helper<wrapper_type>(std::move(wrapped_param)) - , maximal_number_of_chunks_call_helper<T, wrapper_type>(this->member_) - , get_chunk_size_call_helper<T, wrapper_type>(this->member_) - , mark_begin_execution_call_helper<T, wrapper_type>(this->member_) - , mark_end_execution_call_helper<T, wrapper_type>(this->member_) - , processing_units_count_call_helper<T, wrapper_type>(this->member_) - , reset_thread_distribution_call_helper<T, wrapper_type>(this->member_) + : base_member_helper<wrapper_type>(wrapped_param) {} }; @@ -584,13 +542,7 @@ typedef std::reference_wrapper<T> wrapper_type; unwrapper(wrapper_type wrapped_param) - : base_member_helper<wrapper_type>(std::move(wrapped_param)) - , maximal_number_of_chunks_call_helper<T, wrapper_type>(this->member_) - , get_chunk_size_call_helper<T, wrapper_type>(this->member_) - , mark_begin_execution_call_helper<T, wrapper_type>(this->member_) - , mark_end_execution_call_helper<T, wrapper_type>(this->member_) - , processing_units_count_call_helper<T, wrapper_type>(this->member_) - , reset_thread_distribution_call_helper<T, wrapper_type>(this->member_) + : base_member_helper<wrapper_type>(wrapped_param) {} }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/runtime/threads/coroutines/detail/context_impl.hpp new/hpx_1.2.1/hpx/runtime/threads/coroutines/detail/context_impl.hpp --- old/hpx_1.2.0/hpx/runtime/threads/coroutines/detail/context_impl.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/runtime/threads/coroutines/detail/context_impl.hpp 2019-02-05 17:19:59.000000000 +0100 @@ -100,8 +100,8 @@ make copyable. */ -#if defined(HPX_HAVE_GENERIC_CONTEXT_COROUTINES) \ - && defined(HPX_HAVE_FIBER_BASED_COROUTINES) +#if defined(HPX_HAVE_GENERIC_CONTEXT_COROUTINES) && \ + defined(HPX_HAVE_FIBER_BASED_COROUTINES) # error HPX_HAVE_GENERIC_CONTEXT_COROUTINES and HPX_HAVE_FIBER_BASED_COROUTINES cannot be defined at the same time. #endif @@ -113,8 +113,8 @@ typedef generic_context::context_impl default_context_impl; }}}} -#elif (defined(__linux) || defined(linux) || defined(__linux__)) \ - && !defined(__bgq__) && !defined(__powerpc__) +#elif (defined(__linux) || defined(linux) || defined(__linux__)) && \ + !defined(__bgq__) && !defined(__powerpc__) && !defined(__s390x_) #include <hpx/runtime/threads/coroutines/detail/context_linux_x86.hpp> namespace hpx { namespace threads { namespace coroutines { namespace detail @@ -122,7 +122,8 @@ typedef lx::context_impl default_context_impl; }}}} -#elif defined(_POSIX_VERSION) || defined(__bgq__) || defined(__powerpc__) +#elif defined(_POSIX_VERSION) || defined(__bgq__) || defined(__powerpc__) || \ + defined(__s390x_) #include <hpx/runtime/threads/coroutines/detail/context_posix.hpp> namespace hpx { namespace threads { namespace coroutines { namespace detail diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/util/detail/pack_traversal_impl.hpp new/hpx_1.2.1/hpx/util/detail/pack_traversal_impl.hpp --- old/hpx_1.2.0/hpx/util/detail/pack_traversal_impl.hpp 2018-11-08 09:36:03.000000000 +0100 +++ new/hpx_1.2.1/hpx/util/detail/pack_traversal_impl.hpp 2019-02-05 17:20:19.000000000 +0100 @@ -280,7 +280,7 @@ HPX_CONSTEXPR tuple<First, Rest...> voidify_empty_tuple( tuple<First, Rest...> val) { - return std::move(val); + return val; } inline void voidify_empty_tuple(tuple<> const&) noexcept { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/util/hardware/timestamp.hpp new/hpx_1.2.1/hpx/util/hardware/timestamp.hpp --- old/hpx_1.2.0/hpx/util/hardware/timestamp.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/util/hardware/timestamp.hpp 2019-02-05 17:19:48.000000000 +0100 @@ -35,6 +35,8 @@ #include <hpx/util/hardware/timestamp/linux_generic.hpp> #elif defined(__powerpc__) #include <hpx/util/hardware/timestamp/linux_generic.hpp> +#elif defined(__s390x__) + #include <hpx/util/hardware/timestamp/linux_generic.hpp> #elif defined(__bgq__) #include <hpx/util/hardware/timestamp/bgq.hpp> #else diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/hpx/util/unused.hpp new/hpx_1.2.1/hpx/util/unused.hpp --- old/hpx_1.2.0/hpx/util/unused.hpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/hpx/util/unused.hpp 2019-02-05 17:20:09.000000000 +0100 @@ -1,6 +1,6 @@ /*============================================================================= Copyright (c) 2001-2011 Joel de Guzman - Copyright (c) 2007-2013 Hartmut Kaiser + Copyright (c) 2007-2019 Hartmut Kaiser Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -23,40 +23,59 @@ /////////////////////////////////////////////////////////////////////////// struct unused_type { - HPX_CONSTEXPR HPX_HOST_DEVICE unused_type() noexcept + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type() noexcept {} + + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type( + unused_type const&) + { + } + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type(unused_type&&) { } template <typename T> - HPX_CONSTEXPR HPX_HOST_DEVICE unused_type(T const&) noexcept + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type( + T const&) noexcept { } template <typename T> - HPX_CONSTEXPR HPX_HOST_DEVICE unused_type const& + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type const& operator=(T const&) const noexcept { return *this; } template <typename T> - HPX_HOST_DEVICE unused_type& + HPX_HOST_DEVICE HPX_FORCEINLINE unused_type& operator=(T const&) noexcept { return *this; } - HPX_CONSTEXPR HPX_HOST_DEVICE unused_type const& + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type const& operator=(unused_type const&) const noexcept { return *this; } - HPX_HOST_DEVICE unused_type& + HPX_HOST_DEVICE HPX_FORCEINLINE unused_type& operator=(unused_type const&) noexcept { return *this; } + + HPX_CONSTEXPR HPX_HOST_DEVICE HPX_FORCEINLINE unused_type const& + operator=(unused_type&&) const noexcept + { + return *this; + } + + HPX_HOST_DEVICE HPX_FORCEINLINE unused_type& + operator=(unused_type&&) noexcept + { + return *this; + } }; #if defined(HPX_MSVC_NVCC) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/src/CMakeLists.txt new/hpx_1.2.1/src/CMakeLists.txt --- old/hpx_1.2.0/src/CMakeLists.txt 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/src/CMakeLists.txt 2019-02-11 17:04:30.000000000 +0100 @@ -416,9 +416,9 @@ TARGETS ${hpx_targets} EXPORT HPXTargets - LIBRARY DESTINATION ${LIB} - ARCHIVE DESTINATION ${LIB} - RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT runtime ${_optional} ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/src/error_code.cpp new/hpx_1.2.1/src/error_code.cpp --- old/hpx_1.2.0/src/error_code.cpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/src/error_code.cpp 2019-02-05 17:20:19.000000000 +0100 @@ -176,6 +176,18 @@ } /////////////////////////////////////////////////////////////////////////// + error_code::error_code(error_code const& rhs) + : boost::system::error_code(rhs.value() == success ? + make_success_code( + (category() == get_lightweight_hpx_category()) ? + hpx::lightweight : + hpx::plain) : + rhs) + , exception_(rhs.exception_) + { + } + + /////////////////////////////////////////////////////////////////////////// error_code& error_code::operator=(error_code const& rhs) { if (this != &rhs) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/src/exception.cpp new/hpx_1.2.1/src/exception.cpp --- old/hpx_1.2.0/src/exception.cpp 2018-11-12 13:31:10.000000000 +0100 +++ new/hpx_1.2.1/src/exception.cpp 2019-02-01 16:43:16.000000000 +0100 @@ -89,6 +89,14 @@ LERR_(error) << "created exception: " << this->what(); } + /// Construct a hpx::exception from a boost#system#error_code (this is + /// new for Boost V1.69). + exception::exception(boost::system::error_code const& e) + : boost::system::system_error(e) + { + LERR_(error) << "created exception: " << this->what(); + } + /// Construct a hpx::exception from a \a hpx::error and an error message. /// /// \param e The parameter \p e holds the hpx::error code the new diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/src/lcos/detail/future_data.cpp new/hpx_1.2.1/src/lcos/detail/future_data.cpp --- old/hpx_1.2.0/src/lcos/detail/future_data.cpp 2018-10-14 00:57:47.000000000 +0200 +++ new/hpx_1.2.1/src/lcos/detail/future_data.cpp 2019-02-06 16:29:04.000000000 +0100 @@ -47,10 +47,10 @@ }; /////////////////////////////////////////////////////////////////////////// - static bool run_on_completed_on_new_thread( - util::unique_function_nonser<bool()> && f, error_code& ec) + template <typename Callback> + static void run_on_completed_on_new_thread(Callback&& f) { - lcos::local::futures_factory<bool()> p(std::move(f)); + lcos::local::futures_factory<void()> p(std::forward<Callback>(f)); bool is_hpx_thread = nullptr != hpx::threads::get_self_ptr(); hpx::launch policy = launch::fork; @@ -61,25 +61,17 @@ threads::thread_id_type tid = p.apply( policy, threads::thread_priority_boost, threads::thread_stacksize_current, - threads::thread_schedule_hint(), - ec); - if (ec) return false; + threads::thread_schedule_hint()); // wait for the task to run if (is_hpx_thread) { // make sure this thread is executed last hpx::this_thread::yield_to(thread::id(std::move(tid))); - return p.get_future().get(ec); - } - else - { - // If we are not on a HPX thread, we need to return immediately, to - // allow the newly spawned thread to execute. This might swallow - // possible exceptions bubbling up from the completion handler (which - // shouldn't happen anyway... - return true; + return p.get_future().get(); } + // If we are not on a HPX thread, we need to return immediately, to + // allow the newly spawned thread to execute. } /////////////////////////////////////////////////////////////////////////// @@ -146,37 +138,27 @@ } // deferred execution of a given continuation - bool future_data_base<traits::detail::future_data_void>:: - run_on_completed(completed_callback_type && on_completed, - std::exception_ptr& ptr) + void future_data_base<traits::detail::future_data_void>::run_on_completed( + completed_callback_type&& on_completed) noexcept { try { hpx::util::annotate_function annotate(on_completed); on_completed(); } catch (...) { - ptr = std::current_exception(); - return false; + // If the completion handler throws an exception, there's nothing + // we can do, report the exception and terminate. + hpx::detail::report_exception_and_terminate(std::current_exception()); } - return true; } - bool future_data_base<traits::detail::future_data_void>:: - run_on_completed(completed_callback_vector_type && on_completed, - std::exception_ptr& ptr) + void future_data_base<traits::detail::future_data_void>::run_on_completed( + completed_callback_vector_type&& on_completed) noexcept { - try { - for (auto& func: on_completed) - { - hpx::util::annotate_function annotate(func); - func(); - } - } - catch (...) { - ptr = std::current_exception(); - return false; + for (auto&& func: on_completed) + { + run_on_completed(std::move(func)); } - return true; } // make sure continuation invocation does not recurse deeper than @@ -199,37 +181,25 @@ if (!recurse_asynchronously) { // directly execute continuation on this thread - std::exception_ptr ptr; - if (!run_on_completed(std::forward<Callback>(on_completed), ptr)) - { - error_code ec(lightweight); - set_exception(hpx::detail::access_exception(ec)); - } + run_on_completed(std::forward<Callback>(on_completed)); } else { // re-spawn continuation on a new thread - boost::intrusive_ptr<future_data_base> this_(this); + void (*p)(Callback &&) = &future_data_base::run_on_completed; - bool (future_data_base::*p)(Callback&&, std::exception_ptr&) = - &future_data_base::run_on_completed; - - error_code ec(lightweight); - std::exception_ptr ptr; - if (!run_on_completed_on_new_thread( - util::deferred_call(p, std::move(this_), - std::forward<Callback>(on_completed), std::ref(ptr)), - ec)) + try + { + run_on_completed_on_new_thread( + util::deferred_call( + p, std::forward<Callback>(on_completed))); + } + catch(...) { - // thread creation went wrong - if (ec) { - set_exception(hpx::detail::access_exception(ec)); - return; - } - - // re-throw exception in this context - HPX_ASSERT(ptr); // exception should have been set - std::rethrow_exception(ptr); + // If an exception while creating the new task or inside the + // completion handler is thrown, there is nothing we can do... + // ... but terminate and report the error + hpx::detail::report_exception_and_terminate(std::current_exception()); } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/src/runtime/threads/coroutines/swapcontext.cpp new/hpx_1.2.1/src/runtime/threads/coroutines/swapcontext.cpp --- old/hpx_1.2.0/src/runtime/threads/coroutines/swapcontext.cpp 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/src/runtime/threads/coroutines/swapcontext.cpp 2019-02-05 17:19:59.000000000 +0100 @@ -8,8 +8,8 @@ #if !defined(HPX_HAVE_GENERIC_CONTEXT_COROUTINES) -#if (defined(__linux) || defined(linux) || defined(__linux__)) \ - && !defined(__bgq__) && !defined(__powerpc__) +#if (defined(__linux) || defined(linux) || defined(__linux__)) && \ + !defined(__bgq__) && !defined(__powerpc__) && !defined(__s390x__) #if defined(__x86_64__) || defined(__amd64__) #include "swapcontext64.ipp" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/tests/unit/build/CMakeLists.txt new/hpx_1.2.1/tests/unit/build/CMakeLists.txt --- old/hpx_1.2.0/tests/unit/build/CMakeLists.txt 2018-10-13 19:40:24.000000000 +0200 +++ new/hpx_1.2.1/tests/unit/build/CMakeLists.txt 2019-02-11 17:04:33.000000000 +0100 @@ -102,7 +102,7 @@ create_cmake_test( cmake_install_dir_test - "${CMAKE_INSTALL_PREFIX}/lib/cmake/${HPX_PACKAGE_NAME}" + "${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${HPX_PACKAGE_NAME}" ) find_package(PkgConfig) @@ -113,7 +113,7 @@ create_pkgconfig_test( pkgconfig_install_dir_test - "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig") + "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig") endif() set(tests diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hpx_1.2.0/tools/roll_release.sh new/hpx_1.2.1/tools/roll_release.sh --- old/hpx_1.2.0/tools/roll_release.sh 2018-11-12 14:22:04.000000000 +0100 +++ new/hpx_1.2.1/tools/roll_release.sh 2019-02-06 09:48:27.000000000 +0100 @@ -1,4 +1,4 @@ -#! /bin/bash +#!/usr/bin/env bash # # Copyright (c) 2011-2012 Bryce Adelstein-Lelbach # @@ -8,9 +8,15 @@ VERSION_MAJOR=`grep '#define HPX_VERSION_MAJOR' hpx/config/version.hpp | awk {' print $3 '}` VERSION_MINOR=`grep '#define HPX_VERSION_MINOR' hpx/config/version.hpp | awk {' print $3 '}` VERSION_SUBMINOR=`grep '#define HPX_VERSION_SUBMINOR' hpx/config/version.hpp | awk {' print $3 '}` +VERSION_TAG=`grep '#define HPX_VERSION_TAG' hpx/config/version.hpp | awk {' print $3 '} | tr --delete '"'` -DOT_VERSION=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SUBMINOR -UNDERSCORE_VERSION=${VERSION_MAJOR}_${VERSION_MINOR}_$VERSION_SUBMINOR +if [ ! -z "$VERSION_TAG" ]; then + echo "Warning: VERSION_TAG is not empty (\"$VERSION_TAG\")." + echo "If you intended to make a final release, remove the tag in hpx/config/version.hpp." +fi + +DOT_VERSION=$VERSION_MAJOR.$VERSION_MINOR.$VERSION_SUBMINOR$VERSION_TAG +UNDERSCORE_VERSION=${VERSION_MAJOR}_${VERSION_MINOR}_$VERSION_SUBMINOR$VERSION_TAG DOCS_WEBSITE="https://stellar-group.github.io" SOURCE_WEBSITE="http://stellar.cct.lsu.edu" @@ -68,6 +74,11 @@ (cd packages/7z && $SEVENZIP x ../$SEVENZ > /dev/null) echo "DONE" +if [ ! -z "$VERSION_TAG" ]; then + echo "Not printing HTML for non-final release." + exit +fi + ZIP_MD5=`md5sum packages/$ZIP | awk {'print $1'}` TARGZ_MD5=`md5sum packages/$TARGZ | awk {'print $1'}` TARBZ2_MD5=`md5sum packages/$TARBZ2 | awk {'print $1'}`