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'}`


Reply via email to