Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 18 Apr 2018 09:12:59 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r467696 - head/net/ceph/files
Message-ID:  <201804180912.w3I9CxOK039348@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Wed Apr 18 09:12:59 2018
New Revision: 467696
URL: https://svnweb.freebsd.org/changeset/ports/467696

Log:
  net/ceph: unbreak with boost 1.67
  
  src/rbd_replay/Replayer.cc:353:65: error: no matching conversion for functional-style cast from 'float' to 'boost::posix_time::microseconds' (aka 'subsecond_duration<boost::posix_time::time_duration, 1000000>')
      boost::system_time sub_release_time(action_completed_time + boost::posix_time::microseconds(dep.time_delta * m_latency_multiplier / 1000));
                                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  
  PR:		227427
  Reported by:	antoine (via exp-run)

Added:
  head/net/ceph/files/patch-boost-1.67   (contents, props changed)

Added: head/net/ceph/files/patch-boost-1.67
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/ceph/files/patch-boost-1.67	Wed Apr 18 09:12:59 2018	(r467696)
@@ -0,0 +1,191 @@
+Regressed by https://github.com/boostorg/date_time/commit/f9f2aaf5216c
+
+src/rbd_replay/Replayer.cc:353:65: error: no matching conversion for functional-style cast from 'float' to 'boost::posix_time::microseconds' (aka 'subsecond_duration<boost::posix_time::time_duration, 1000000>')
+    boost::system_time sub_release_time(action_completed_time + boost::posix_time::microseconds(dep.time_delta * m_latency_multiplier / 1000));
+                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/local/include/boost/date_time/time_duration.hpp:270:30: note: candidate constructor (the implicit copy constructor) not viable: no known conversion from 'float' to 'const boost::date_time::subsecond_duration<boost::posix_time::time_duration, 1000000>' for 1st argument
+  class BOOST_SYMBOL_VISIBLE subsecond_duration : public base_duration
+                             ^
+/usr/local/include/boost/date_time/time_duration.hpp:270:30: note: candidate constructor (the implicit move constructor) not viable: no known conversion from 'float' to 'boost::date_time::subsecond_duration<boost::posix_time::time_duration, 1000000>' for 1st argument
+/usr/local/include/boost/date_time/time_duration.hpp:286:59: note: candidate template ignored: disabled by 'enable_if' [with T = float]
+                                typename boost::enable_if<boost::is_integral<T>, void>::type* = 0) :
+                                                          ^
+
+src/test/librbd/test_mock_Journal.cc:485:42: error: reference to '_1' is ambiguous
+      std::bind(&invoke_replay_complete, _1, 0));
+                                         ^
+/usr/local/include/boost/bind/placeholders.hpp:46:38: note: candidate found by name lookup is 'boost::placeholders::_1'
+BOOST_STATIC_CONSTEXPR boost::arg<1> _1;
+                                     ^
+/usr/include/c++/v1/functional:2021:21: note: candidate found by name lookup is 'std::__1::placeholders::_1'
+constexpr __ph<1>   _1{};
+                    ^
+
+--- src/rbd_replay/Replayer.cc.orig	2018-02-26 21:47:18 UTC
++++ src/rbd_replay/Replayer.cc
+@@ -350,7 +350,7 @@ void Replayer::wait_for_actions(const action::Dependen
+     dout(DEPGRAPH_LEVEL) << "Finished waiting for " << dep.id << " after " << micros << " microseconds" << dendl;
+     // Apparently the nanoseconds constructor is optional:
+     // http://www.boost.org/doc/libs/1_46_0/doc/html/date_time/details.html#compile_options
+-    boost::system_time sub_release_time(action_completed_time + boost::posix_time::microseconds(dep.time_delta * m_latency_multiplier / 1000));
++    boost::system_time sub_release_time(action_completed_time + boost::posix_time::microseconds(long(dep.time_delta * m_latency_multiplier / 1000)));
+     if (sub_release_time > release_time) {
+       release_time = sub_release_time;
+     }
+--- src/test/librbd/test_mock_Journal.cc.orig	2018-02-26 21:47:18 UTC
++++ src/test/librbd/test_mock_Journal.cc
+@@ -214,7 +214,6 @@ using ::testing::Return;
+ using ::testing::SaveArg;
+ using ::testing::SetArgPointee;
+ using ::testing::WithArg;
+-using namespace std::placeholders;
+ 
+ ACTION_P2(StartReplay, wq, ctx) {
+   wq->queue(ctx, 0);
+@@ -482,7 +481,7 @@ class TestMockJournal : public TestMockFixture { (publ
+     expect_get_max_append_size(mock_journaler, 1 << 16);
+     expect_start_replay(
+       mock_image_ctx, mock_journaler,
+-      std::bind(&invoke_replay_complete, _1, 0));
++      std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+     MockJournalReplay mock_journal_replay;
+     expect_stop_replay(mock_journaler);
+@@ -530,7 +529,7 @@ TEST_F(TestMockJournal, StateTransitions) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_ready, _1));
++    std::bind(&invoke_replay_ready, std::placeholders::_1));
+ 
+   ::journal::MockReplayEntry mock_replay_entry;
+   MockJournalReplay mock_journal_replay;
+@@ -539,11 +538,11 @@ TEST_F(TestMockJournal, StateTransitions) {
+   expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry);
+   expect_replay_process(mock_journal_replay);
+   expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry,
+-                       std::bind(&invoke_replay_ready, _1));
++                       std::bind(&invoke_replay_ready, std::placeholders::_1));
+   expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry);
+   expect_replay_process(mock_journal_replay);
+   expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry,
+-                       std::bind(&invoke_replay_complete, _1, 0));
++                       std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
+@@ -599,7 +598,7 @@ TEST_F(TestMockJournal, ReplayCompleteError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, -EINVAL));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, -EINVAL));
+ 
+   MockJournalReplay mock_journal_replay;
+   expect_stop_replay(mock_journaler);
+@@ -613,7 +612,7 @@ TEST_F(TestMockJournal, ReplayCompleteError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, 0));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
+@@ -645,14 +644,14 @@ TEST_F(TestMockJournal, FlushReplayError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_ready, _1));
++    std::bind(&invoke_replay_ready, std::placeholders::_1));
+ 
+   ::journal::MockReplayEntry mock_replay_entry;
+   MockJournalReplay mock_journal_replay;
+   expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry);
+   expect_replay_process(mock_journal_replay);
+   expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry,
+-                       std::bind(&invoke_replay_complete, _1, 0));
++                       std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, -EINVAL);
+   expect_shut_down_journaler(mock_journaler);
+@@ -664,7 +663,7 @@ TEST_F(TestMockJournal, FlushReplayError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, 0));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
+@@ -696,7 +695,7 @@ TEST_F(TestMockJournal, CorruptEntry) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_ready, _1));
++    std::bind(&invoke_replay_ready, std::placeholders::_1));
+ 
+   ::journal::MockReplayEntry mock_replay_entry;
+   MockJournalReplay mock_journal_replay;
+@@ -713,7 +712,7 @@ TEST_F(TestMockJournal, CorruptEntry) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, 0));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);
+   expect_start_append(mock_journaler);
+@@ -744,7 +743,7 @@ TEST_F(TestMockJournal, StopError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, 0));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+   MockJournalReplay mock_journal_replay;
+   expect_stop_replay(mock_journaler);
+@@ -777,7 +776,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPreFlushError) {
+ 
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_ready, _1));
++    std::bind(&invoke_replay_ready, std::placeholders::_1));
+ 
+   ::journal::MockReplayEntry mock_replay_entry;
+   MockJournalReplay mock_journal_replay;
+@@ -803,7 +802,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPreFlushError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler, {
+-      std::bind(&invoke_replay_complete, _1, 0)
++      std::bind(&invoke_replay_complete, std::placeholders::_1, 0)
+     });
+ 
+   expect_stop_replay(mock_journaler);
+@@ -857,14 +856,14 @@ TEST_F(TestMockJournal, ReplayOnDiskPostFlushError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_ready, _1));
++    std::bind(&invoke_replay_ready, std::placeholders::_1));
+ 
+   ::journal::MockReplayEntry mock_replay_entry;
+   MockJournalReplay mock_journal_replay;
+   expect_try_pop_front(mock_image_ctx, mock_journaler, true, mock_replay_entry);
+   expect_replay_process(mock_journal_replay);
+   expect_try_pop_front(mock_image_ctx, mock_journaler, false, mock_replay_entry,
+-                       std::bind(&invoke_replay_complete, _1, 0));
++                       std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+   expect_stop_replay(mock_journaler);
+ 
+   Context *on_flush = nullptr;
+@@ -880,7 +879,7 @@ TEST_F(TestMockJournal, ReplayOnDiskPostFlushError) {
+   expect_get_max_append_size(mock_journaler, 1 << 16);
+   expect_start_replay(
+     mock_image_ctx, mock_journaler,
+-    std::bind(&invoke_replay_complete, _1, 0));
++    std::bind(&invoke_replay_complete, std::placeholders::_1, 0));
+ 
+   expect_stop_replay(mock_journaler);
+   expect_shut_down_replay(mock_image_ctx, mock_journal_replay, 0);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804180912.w3I9CxOK039348>