Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compilation errors #4

Open
felmur opened this issue Aug 31, 2019 · 8 comments
Open

Compilation errors #4

felmur opened this issue Aug 31, 2019 · 8 comments

Comments

@felmur
Copy link

felmur commented Aug 31, 2019

Hi, i'm trying to compile your library under archlinux and I have got some errors.
I think that those errors are related to newer version of boost library.
First error:

/home/felice/libed2k/include/libed2k/error_code.hpp:174:29: error: ‘get_system_category’ is not a member of ‘boost::system’; did you mean ‘system_category’? 174 | { return boost::system::get_system_category(); } | ^~~~~~~~~~~~~~~~~~~ | system_category /home/felice/libed2k/include/libed2k/error_code.hpp: In function ‘const boost::system::error_category& libed2k::get_posix_category()’: /home/felice/libed2k/include/libed2k/error_code.hpp:181:29: error: ‘get_generic_category’ is not a member of ‘boost::system’; did you mean ‘generic_category’? 181 | { return boost::system::get_generic_category(); } | ^~~~~~~~~~~~~~~~~~~~ | generic_category

I solved these two errors by replacing "get_system_category" with "system_category" and "get_generic_category" with "generic_category".

The compilation goes on but stops again on the following error:

/home/felice/libed2k/src/broadcast_socket.cpp:284:69: error: no matching function for call to ‘boost::asio::basic_datagram_socket<boost::asio::ip::udp>::basic_datagram_socket(libed2k::io_service&)’ 284 | boost::shared_ptr<datagram_socket> s(new datagram_socket(ios)); | ^

Any ideas for this?
Regards.

@a-pavlov
Copy link
Collaborator

Hi @felmur , is it possible for you to install appropriate boost version locally? As I see in travis file https://github.com/qmule/libed2k/blob/master/.travis.yml Boost 1.55 should be ok.

@felmur
Copy link
Author

felmur commented Aug 31, 2019

Hi @a-pavlov, my linux distro (Archlinux) only support boost 1.69.
v1.55 is a very old version of boost, so I think that sources of libed2k should be updated to support new version of boost. What do you think about that? Is this possible?

Regards.

@a-pavlov
Copy link
Collaborator

@felmur You can download boost 1.55 https://www.boost.org/users/history/version_1_55_0.html and build it manually. About updating libed2k sources to support boost 1.69 - actually this project development is on hold and I don't know who will work on this.
If you trying to solve compile error you can compare:
https://www.boost.org/doc/libs/1_55_0/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html
with new
https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/basic_datagram_socket/basic_datagram_socket.html
And as I see io_service was replaced with io_context for backward compatibility:
Please check this link https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/reference/io_service.html
and header file inlude/libed2k/io_service.hpp

@isharov
Copy link
Collaborator

isharov commented Aug 31, 2019

@felmur, as an option, you could build libed2k inside isolated docker with boost 1.55
https://github.com/zouzias/docker-boost

@felmur
Copy link
Author

felmur commented Aug 31, 2019

thank you all for your help.
I will try to do something to solve the compilation problem, but I have little hope of doing it.
Thanks anyway to both of you for the information you gave me.
Regards.

@felmur
Copy link
Author

felmur commented Sep 1, 2019

@isharov,
I tried to do what you suggested (create a docker with boost <1.66 to compile libed2k) but I found the following problems using docker-boost:

  1. it does not seem to be possible to install a docker with versions of boost 1.5 * as they are no longer available on the site from which they must be downloaded
  2. I tried several versions of boost 1.6 * but for all the compilation of libed2k does not even start, as cmake challenges the lack of static libraries like boost-system and others.

Moreover, docker-boost seems to install some include files but not called libraries, which could only exist by compiling the entire boost package <1.66. In this case, it no longer makes sense to use a docker: I remove the boost library installed on my system and proceed to compile the package directly on my system.

Thanks anyway for letting me discover docker, which was a tool I didn't know.

Greetings

@felmur
Copy link
Author

felmur commented Sep 1, 2019

@a-pavlov,
it seems that changes to libed2k sources to adapt to the new library boost are many and should be made by someone who has written a library, since it is necessary to overview the same for massive changes to the source.
Thanks anyway for the quick answers.

Greetings

@barracuda156
Copy link

Any updates on this? libed2k fails to build against Boost 1.76.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants