zeromq / azmq

C++ language binding library integrating ZeroMQ with Boost Asio
Boost Software License 1.0
319 stars 109 forks source link

azmq fails to compile with boost 1.66 due to changes in asio #133

Closed ogrant closed 6 years ago

ogrant commented 6 years ago

Hi,

Just tried upgrading my project which uses azmq to user boost 1.66 and there are some breaking changes in the asio library:

In file included from /Users/foo/distrib/include/azmq/context.hpp:12:
/Users/foo/distrib/include/azmq/detail/socket_service.hpp:328:35: error: 'azmq::detail::socket_service::shutdown' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
        boost::system::error_code shutdown(implementation_type & impl,
                                  ^
/Users/foo/distrib/include/boost/asio/io_context.hpp:800:32: note: hidden overloaded virtual function 'boost::asio::io_context::service::shutdown' declared here: different number
      of parameters (0 vs 3)
  BOOST_ASIO_DECL virtual void shutdown();
                               ^
/Users/foo/distrib/include/azmq/socket.hpp:109:35: error: use of undeclared identifier 'implementation'
        if (get_service().do_open(implementation, type, optimize_single_threaded, ec))
                                  ^
/Users/foo/distrib/include/azmq/socket.hpp:115:38: error: use of undeclared identifier 'implementation'
        get_service().move_construct(implementation,
                                     ^
/Users/foo/distrib/include/azmq/socket.hpp:117:44: error: no member named 'implementation' in 'azmq::socket'
                                     other.implementation);
                                     ~~~~~ ^
/Users/foo/distrib/include/azmq/socket.hpp:121:35: error: use of undeclared identifier 'implementation'
        get_service().move_assign(implementation,
                                  ^
/Users/foo/distrib/include/azmq/socket.hpp:123:39: error: no member named 'implementation' in 'azmq::socket'
                                  rhs.implementation);
                                  ~~~ ^

Also, on a side note, it would be great if you could more regularly version (using a tag) the azmq library so a specific code level can more easily be recoverable from github.

Thanks for the library and all the effort you've put into it.

O.

rodgert commented 6 years ago

There is one (important) bug fix since I tagged 1.0, it’s a fair point and I will tag that in the next few days.

I’m aware there are breaking changes in 1.66 as Chris Kolhoff has updated Asio to align more closely with the Networking TS, but I haven’t yet had time to really look into the changes.

I will see if I can get some time to address this in the next couple of weeks. Patches are also welcome, if you woul like to have a go at it :)

Thanks, Tom.

On Thu, Dec 28, 2017 at 5:26 AM ogrant notifications@github.com wrote:

Hi,

Just tried upgrading my project which uses azmq to user boost 1.66 and there are some breaking changes in the asio library:

In file included from /Users/foo/distrib/include/azmq/context.hpp:12: /Users/foo/distrib/include/azmq/detail/socket_service.hpp:328:35: error: 'azmq::detail::socket_service::shutdown' hides overloaded virtual function [-Werror,-Woverloaded-virtual] boost::system::error_code shutdown(implementation_type & impl, ^ /Users/foo/distrib/include/boost/asio/io_context.hpp:800:32: note: hidden overloaded virtual function 'boost::asio::io_context::service::shutdown' declared here: different number of parameters (0 vs 3) BOOST_ASIO_DECL virtual void shutdown(); ^ /Users/foo/distrib/include/azmq/socket.hpp:109:35: error: use of undeclared identifier 'implementation' if (get_service().do_open(implementation, type, optimize_single_threaded, ec)) ^ /Users/foo/distrib/include/azmq/socket.hpp:115:38: error: use of undeclared identifier 'implementation' get_service().move_construct(implementation, ^ /Users/foo/distrib/include/azmq/socket.hpp:117:44: error: no member named 'implementation' in 'azmq::socket' other.implementation);


/Users/foo/distrib/include/azmq/socket.hpp:121:35: error: use of undeclared identifier 'implementation'
        get_service().move_assign(implementation,
                                  ^
/Users/foo/distrib/include/azmq/socket.hpp:123:39: error: no member named 'implementation' in 'azmq::socket'
                                  rhs.implementation);
                                  ~~~ ^

Also, on a side note, it would be great if you could more regularly
version (using a tag) the azmq library so a specific code level can more
easily be recoverable from github.

Thanks for the library and all the effort you've put into it.

O.

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<https://github.com/zeromq/azmq/issues/133>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAHYBz2dmvGUS38pKW3WlISyN9G2_sUcks5tE3ragaJpZM4ROPas>
.
ogrant commented 6 years ago

Hi Tom,

Thanks for the quick reply. I actually looked just a bit into it and the fix (at least to get the code to compile) looks fairly trivial: rename socket_service::shutdown to something else and replace references to implementation with get_implementation() in service.hpp.

I haven't tested anything since I am bumping into other non-azmq compilation errors for now but will let you know if I find anything else.

Thanks,

O.

vnegnev commented 6 years ago

Hello,

For me, replacing implementation with get_implementation() throughout was enough - azmq compiles and passes its selftests now, and works fine in my application. I've submitted a merge request.

Cheers, Vlad

rodgert commented 6 years ago

Closing this, happy to reopen if there other 1.66 issues.

ogrant commented 6 years ago

Hi, I'd like to grab this latest version but our build system requires specific versioning. Would it be possible for you to create a new tag for this specific code level ? Thanks in advance.

rodgert commented 6 years ago

I’ll do it today!

On Mon, Jan 22, 2018 at 6:31 AM ogrant notifications@github.com wrote:

Hi, I'd like to grab this latest version but our build system requires specific versioning. Would it be possible for you to create a new tag for this specific code level ? Thanks in advance.

— You are receiving this because you modified the open/close state.

Reply to this email directly, view it on GitHub https://github.com/zeromq/azmq/issues/133#issuecomment-359410149, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHYBy-4FepTxI0X_PAoUpHXk_YxDagCks5tNH-GgaJpZM4ROPas .

rodgert commented 6 years ago

Sorry for the delay, I've tagged a v1.0.1 bugfix release now.

Thanks, Tom.

ogrant commented 6 years ago

No problem, thanks.

On the other hand, I am still seeing a compilation error:

In file included from include/azmq/socket.hpp:14:
In file included from include/azmq/context.hpp:12:
include/azmq/detail/socket_service.hpp:329:35: error: 'azmq::detail::socket_service::shutdown' hides overloaded virtual function [-Werror,-Woverloaded-virtual]
        boost::system::error_code shutdown(implementation_type & impl,
                                  ^   
include/boost/asio/io_context.hpp:800:32: note: hidden overloaded virtual function 'boost::asio::io_context::service::shutdown' declared here: different number
      of parameters (0 vs 3)
  BOOST_ASIO_DECL virtual void shutdown();
                               ^   
1 error generated.

Regards, O.

rodgert commented 6 years ago

let me look at that.

On Thu, Jan 25, 2018 at 2:22 AM, ogrant notifications@github.com wrote:

No problem, thanks.

On the other hand, I am still seeing a compilation error:

In file included from include/azmq/socket.hpp:14: In file included from include/azmq/context.hpp:12: include/azmq/detail/socket_service.hpp:329:35: error: 'azmq::detail::socket_service::shutdown' hides overloaded virtual function [-Werror,-Woverloaded-virtual] boost::system::error_code shutdown(implementation_type & impl, ^ include/boost/asio/io_context.hpp:800:32: note: hidden overloaded virtual function 'boost::asio::io_context::service::shutdown' declared here: different number of parameters (0 vs 3) BOOST_ASIO_DECL virtual void shutdown(); ^ 1 error generated.

Regards, O.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/zeromq/azmq/issues/133#issuecomment-360394170, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHYByfNIHp1YAvv_HpAuFVV2dxJezCvks5tODmqgaJpZM4ROPas .

ogrant commented 6 years ago

Btw, this compilation issue shows up when compiling with -Wall. We compile with -Werror in addition to -Wall which is why the build is failing for us.

rodgert commented 6 years ago

I do that locally, I should probably update the CMakeLists.txt to force the issue, but, I think since I'm Fedora27 and don't have Boost1.66 locally, I don't see the issue. Trying to get a solid repro case locally now.

On Thu, Jan 25, 2018 at 2:24 PM, ogrant notifications@github.com wrote:

Btw, this compilation issue shows up when compiling with -Wall. We compile with -Werror in addition to -Wall which is why the build is failing for us.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/zeromq/azmq/issues/133#issuecomment-360589338, or mute the thread https://github.com/notifications/unsubscribe-auth/AAHYB9FIz9Sj5HHxE0rpvLHWiQiRT5q-ks5tOOLqgaJpZM4ROPas .

rodgert commented 6 years ago

Well I still haven't managed to reproduce this issue, going to try and back out what ChrisK changed in 1.66 here and get a fix together.

rodgert commented 6 years ago

@ogrant Any chance you can grab the PR I just submitted and apply locally to confirm it resolves your issue?

ogrant commented 6 years ago

@rodgert No problem, I'll try it out shortly.

ogrant commented 6 years ago

I've just reviewed the change. Could I ask you to tag this version once you merge your pull request ? Thanks in advance.

rodgert commented 6 years ago

Yes, though generally I let somebody else merge my PRs (per the ZeroMQ process). If nobody steps up to merge the PR, I'll do it and then tag a 1.0.2 over the weekend.

ogrant commented 6 years ago

Thank you. I’ll give it a try later on and let you know if I bump into any other issue.