The Proton C++ binding is supported on MacOS and our CI does indeed test it
there.

The Qpid broker relies on a threading abstraction that can be changed to
target different platforms. Using modern C++ this abstraction should now
use the standard C++ library threading primitives for maximum portability.
However the existing code was written pre C++11 and, as Robbie has pointed
out, has been very lightly maintained since. It wouldn't be very hard to
change this code for C++ cross platform portable code.

Andrew

On Thu, Jan 26, 2023 at 4:01 AM Emmett Brown <emmett@moda.tools> wrote:

> Virgilio,
>
> Thank you very much for the references.
>
> Kind regards,
> Emmett Brown
>
> emmett@moda.tools
> PGP: 2EB563D958F5CB8153AAED477867D39BF7356F59
> <https://api.protonmail.ch/pks/lookup?op=get&search=emmett@moda.tools>
>
>
>
>
> On 25 Jan 2023, at 15:56, Virgilio Fornazin <virgilioforna...@gmail.com>
> wrote:
>
> MacOS does not have pthread_condattr_setclock, Mach kernel has monotonic
> clock with different api sets, look at
>
> https://stackoverflow.com/questions/11680461/monotonic-clock-on-osx
>
> https://chromium.googlesource.com/chromium/src/base/+/master/synchronization/condition_variable_posix.cc
>
> The easy way is to run broker on a docker container now
>
> On Wed, Jan 25, 2023 at 11:35 AM Robbie Gemmell <robbie.gemm...@gmail.com>
> wrote:
>
> Even when it was at its most active, there was apparently not much
> developer interest in supporting the qpid-cpp broker running on MacOS
> (or accompanying Qpid::Messaging cpp client), with a concentration of
> interest on Linux. A look at the qpid-cpp repository would show that
> qpid-cpp is largely stagnant these days, so I doubt there will be much
> traction on the MacOS subject now either. The old mailing list posts
> would be your main avenue to any specifics.
>
> C++ client wise specifically, attention also shifted away from the old
> Qpid::Messaging C++ client to the Qpid Proton C++ binding many years
> ago. Proton does compile on MacOS, I believe it possibly uses libuv
> there (in contrast to typical Linux usage), which might be how it
> works at all...though again I think it would be fair to say the bulk
> of dev interest is around Linux.
>
> Robbie
>
> On Thu, 19 Jan 2023 at 11:42, Emmett Brown <emmett@moda.tools> wrote:
>
>
> Hello,
>
> I was exploring the Qpid project yesterday and noticed that while it
>
> doesn’t officially support macOS, there have been some online discussions
> in the past related to building Proton C++ and, the Dispatch Router for
> macOS. I think some of the issues had been test compilation failures.
>
>
> I haven’t noticed any such similar discussions related to building the
>
> C++ Broker on macOS. I thought I’d run a quick build myself, to see how far
> I got.
>
>
> Unsurprisingly, the build failed (I’m on Monterey 12.6.2). It was a
>
> pthread API issue. I’ll past the output below if anyone has any idea how to
> get past this, but my question is more generally, does anyone have any past
> experience trying to get the C++ Broker to compile on macOS, or does anyone
> know what the past sticking points were that prevented the C++ Broker (feel
> free to include any of the other C++ products in your answer if you wish)
> from being built on macOS?
>
>
> [ 20%] Building CXX object
>
> src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o
>
>
>
> /Users/ray/Developer/User/qpid-cpp-1.39.0/src/qpid/sys/posix/Condition.cpp:34:36:
> error: use of undeclared identifier 'pthread_condattr_setclock'; did you
> mean 'pthread_condattr_setpshared'?
>
>        QPID_POSIX_ASSERT_THROW_IF(pthread_condattr_setclock(&attr,
>
> CLOCK_MONOTONIC));
>
>                                   ^~~~~~~~~~~~~~~~~~~~~~~~~
>                                   pthread_condattr_setpshared
>
> /Users/ray/Developer/User/qpid-cpp-1.39.0/src/qpid/sys/posix/check.h:45:63:
> note: expanded from macro 'QPID_POSIX_ASSERT_THROW_IF'
>
> #define QPID_POSIX_ASSERT_THROW_IF(ERRNO) QPID_POSIX_THROW_IF(ERRNO)
>                                                              ^
>
> /Users/ray/Developer/User/qpid-cpp-1.39.0/src/qpid/sys/posix/check.h:41:17:
> note: expanded from macro 'QPID_POSIX_THROW_IF'
>
>    do { int e=(ERRNO); if (e) throw QPID_POSIX_ERROR(e); } while(0)
>                ^
>
>
> /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/pthread.h:325:5:
> note: 'pthread_condattr_setpshared' declared here
>
> int pthread_condattr_setpshared(pthread_condattr_t *, int);
>    ^
> 1 error generated.
> make[2]: ***
>
> [src/CMakeFiles/qpidcommon.dir/qpid/sys/posix/Condition.cpp.o] Error 1
>
> make[1]: *** [src/CMakeFiles/qpidcommon.dir/all] Error 2
> make: *** [all] Error 2
>
>
> Kind regards,
> Emmett Brown
>
> emmett@moda.tools
> PGP: 2EB563D958F5CB8153AAED477867D39BF7356F59
>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
> For additional commands, e-mail: users-h...@qpid.apache.org
>
>
>
>

Reply via email to