You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Emmett Brown <em...@moda.tools> on 2023/01/19 11:42:03 UTC
Building Qpid C++ Broker for macOS
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 <ma...@moda.tools>
PGP: 2EB563D958F5CB8153AAED477867D39BF7356F59 <ht...@moda.tools>
Re: Building Qpid C++ Broker for macOS
Posted by Andrew Stitcher <as...@redhat.com>.
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 <em...@moda.tools> wrote:
> Virgilio,
>
> Thank you very much for the references.
>
> Kind regards,
> Emmett Brown
>
> emmett@moda.tools
> PGP: 2EB563D958F5CB8153AAED477867D39BF7356F59
> <ht...@moda.tools>
>
>
>
>
> On 25 Jan 2023, at 15:56, Virgilio Fornazin <vi...@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 <ro...@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 <em...@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-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>
>
>
Re: Building Qpid C++ Broker for macOS
Posted by Emmett Brown <em...@moda.tools>.
Virgilio,
Thank you very much for the references.
Kind regards,
Emmett Brown
emmett@moda.tools <ma...@moda.tools>
PGP: 2EB563D958F5CB8153AAED477867D39BF7356F59 <ht...@moda.tools>
> On 25 Jan 2023, at 15:56, Virgilio Fornazin <vi...@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 <ro...@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 <em...@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-unsubscribe@qpid.apache.org
>> For additional commands, e-mail: users-help@qpid.apache.org
>>
>>
Re: Building Qpid C++ Broker for macOS
Posted by Virgilio Fornazin <vi...@gmail.com>.
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 <ro...@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 <em...@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-unsubscribe@qpid.apache.org
> For additional commands, e-mail: users-help@qpid.apache.org
>
>
Re: Building Qpid C++ Broker for macOS
Posted by Robbie Gemmell <ro...@gmail.com>.
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 <em...@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-unsubscribe@qpid.apache.org
For additional commands, e-mail: users-help@qpid.apache.org