kpeeters / cadabra2

A field-theory motivated approach to computer algebra.
https://cadabra.science/
GNU General Public License v3.0
228 stars 37 forks source link

An issue with installation (make) #143

Closed vnikoofard closed 5 years ago

vnikoofard commented 5 years ago

Before the last step of the installation the version 2.2.7, after "make" command I got the following error

[ 92%] Linking CXX executable cadabra2-gtk /usr/bin/ld: CMakeFiles/cadabra2-gtk.dir/__/common/TeXEngine.cc.o: in function cadabra::TeXEngine::convert_set(std::set<std::shared_ptr<cadabra::TeXEngine::TeXRequest>, std::less<std::shared_ptr<cadabra::TeXEngine::TeXRequest> >, std::allocator<std::shared_ptr<cadabra::TeXEngine::TeXRequest> > >&)': /home/vahid/cadabra2/frontend/common/TeXEngine.cc:324: warning: the use oftmpnam' is dangerous, better use mkstemp' /usr/bin/ld: //lib/x86_64-linux-gnu/libblkid.so.1: undefined reference touuid_unparse@UUID_1.0' collect2: error: ld returned 1 exit status make[2]: [frontend/gtkmm/CMakeFiles/cadabra2-gtk.dir/build.make:315: frontend/gtkmm/cadabra2-gtk] Error 1 make[1]: [CMakeFiles/Makefile2:753: frontend/gtkmm/CMakeFiles/cadabra2-gtk.dir/all] Error 2 make: *** [Makefile:163: all] Error 2

I would really appreciate any help

kpeeters commented 5 years ago

On which platform/distro?

vnikoofard commented 5 years ago

Sorry for incomplete information. I'm using Ubuntu 18.10

kpeeters commented 5 years ago

You can try linking to the uuid library, although that should really have worked by itself. In frontend/gtkmm/CMakeLists.txt find the bit that says

target_link_libraries(cadabra2-gtk 
        cadabra_client 
        ${Boost_LIBRARIES} 
        ${GLIBMM_LIBRARIES} 
        ${GTKMM3_LIBRARIES} 
        ${SQLITE3_LIBRARIES} 
        Threads::Threads
)

and change that last line to read

Threads::Threads uuid

No guaruantee, I'm just guessing.

And then make again from the build directory, of course.

vnikoofard commented 5 years ago

Sorry for late reply In fact, I updated my UBUNTU to version 19.04 before applying your solution. This time after execution of MAKE I received a similar error as above:

[ 96%] Linking CXX executable cadabra2-gtk
/usr/bin/ld: CMakeFiles/cadabra2-gtk.dir/__/common/TeXEngine.cc.o: in function `cadabra::TeXEngine::convert_set(std::set<std::shared_ptr<cadabra::TeXEngine::TeXRequest>, std::less<std::shared_ptr<cadabra::TeXEngine::TeXRequest> >, std::allocator<std::shared_ptr<cadabra::TeXEngine::TeXRequest> > >&)':
/home/vahid/cadabra2/frontend/common/TeXEngine.cc:324: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/bin/ld: /lib/x86_64-linux-gnu/libblkid.so.1: undefined reference to `uuid_unparse@UUID_1.0'
collect2: error: ld returned 1 exit status
make[2]: *** [frontend/gtkmm/CMakeFiles/cadabra2-gtk.dir/build.make:315: frontend/gtkmm/cadabra2-gtk] Error 1
make[1]: *** [CMakeFiles/Makefile2:675: frontend/gtkmm/CMakeFiles/cadabra2-gtk.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

Then, I applied your suggestion and this time I could finish the installation process. But the problem is that after executing cadabra2-gtk I get the following error

(base) vahid@Spinor:~/cadabra2/build$ cadabra2-gtk cadabra2-gtk: /home/vahid/anaconda3/lib/././libuuid.so.1: no version information available (required by /lib/x86_64-linux-gnu/libblkid.so.1) cadabra2-gtk: symbol lookup error: /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined symbol: g_ref_count_inc

Do you have any idea about this issue?

kpeeters commented 5 years ago

I have just tried building on a clean install of 19.04, and this worked fine.

However, I do notice that your error message refers to anaconda3. If you have anaconda3 in your path all sorts of things may happen when the compiler finds some prerequisites in the normal system installation and some in the anaconda3 installation. Best to deactivate anaconda3 before you build (anaconda3 is too much of a mess for me to spend time on sorting out their problems, sorry).

vnikoofard commented 5 years ago

Thanks for your reply. I deactivated the Conda environment, then I deleted the existed Cadabra2 folder and started the procedure again following the instruction, this time I received the below error:

[  3%] Building CXX object client_server/CMakeFiles/cadabra-server.dir/Server.cc.o
/home/vahid/cadabra2/client_server/Server.cc: In constructor ‘Server::Server()’:
/home/vahid/cadabra2/client_server/Server.cc:34:44: error: use of deleted function ‘boost::uuids::random_generator_pure::random_generator_pure(boost::uuids::random_generator_pure&&)’
  auto gen = boost::uuids::random_generator();
                                            ^
In file included from /usr/include/boost/uuid/uuid_generators.hpp:17,
                 from /home/vahid/cadabra2/client_server/Server.cc:12:
/usr/include/boost/uuid/random_generator.hpp:149:7: note: ‘boost::uuids::random_generator_pure::random_generator_pure(boost::uuids::random_generator_pure&&)’ is implicitly deleted because the default definition would be ill-formed:
 class random_generator_pure
       ^~~~~~~~~~~~~~~~~~~~~
/usr/include/boost/uuid/random_generator.hpp:149:7: error: use of deleted function ‘boost::uuids::detail::random_provider::random_provider(boost::uuids::detail::random_provider&&)’
In file included from /usr/include/boost/uuid/random_generator.hpp:20,
                 from /usr/include/boost/uuid/uuid_generators.hpp:17,
                 from /home/vahid/cadabra2/client_server/Server.cc:12:
/usr/include/boost/uuid/detail/random_provider.hpp:41:7: note: ‘boost::uuids::detail::random_provider::random_provider(boost::uuids::detail::random_provider&&)’ is implicitly deleted because the default definition would be ill-formed:
 class random_provider
       ^~~~~~~~~~~~~~~
/usr/include/boost/uuid/detail/random_provider.hpp:41:7: error: use of deleted function ‘boost::noncopyable_::noncopyable::noncopyable(const boost::noncopyable_::noncopyable&)’
In file included from /usr/include/boost/noncopyable.hpp:15,
                 from /usr/include/boost/system/error_code.hpp:18,
                 from /usr/include/boost/asio/detail/scheduler_operation.hpp:18,
                 from /usr/include/boost/asio/detail/executor_op.hpp:22,
                 from /usr/include/boost/asio/impl/system_executor.hpp:18,
                 from /usr/include/boost/asio/system_executor.hpp:129,
                 from /usr/include/boost/asio/associated_executor.hpp:21,
                 from /usr/include/boost/asio/detail/bind_handler.hpp:20,
                 from /usr/include/boost/asio/detail/wrapped_handler.hpp:18,
                 from /usr/include/boost/asio/io_context.hpp:24,
                 from /usr/include/boost/asio/basic_io_object.hpp:19,
                 from /usr/include/boost/asio/basic_waitable_timer.hpp:20,
                 from /usr/include/boost/asio/steady_timer.hpp:22,
                 from /home/vahid/cadabra2/libs/websocketpp/websocketpp/common/asio.hpp:61,
                 from /home/vahid/cadabra2/libs/websocketpp/websocketpp/transport/asio/base.hpp:31,
                 from /home/vahid/cadabra2/libs/websocketpp/websocketpp/transport/asio/connection.hpp:31,
                 from /home/vahid/cadabra2/libs/websocketpp/websocketpp/transport/asio/endpoint.hpp:32,
                 from /home/vahid/cadabra2/libs/websocketpp/websocketpp/config/asio_no_tls.hpp:32,
                 from /home/vahid/cadabra2/client_server/Server.hh:5,
                 from /home/vahid/cadabra2/client_server/Server.cc:3:
/usr/include/boost/core/noncopyable.hpp:34:7: note: declared here
       noncopyable( const noncopyable& ) = delete;
       ^~~~~~~~~~~
make[2]: *** [client_server/CMakeFiles/cadabra-server.dir/build.make:76: client_server/CMakeFiles/cadabra-server.dir/Server.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:182: client_server/CMakeFiles/cadabra-server.dir/all] Error 2
make: *** [Makefile:163: all] Error 2
kpeeters commented 5 years ago

Damn, I just committed that, apparently it's not compatible with the latest boost. Try going back one or two commits, or wait an hour for me to fix it.

kpeeters commented 5 years ago

This is now fixed on github (and tested on Ubuntu 19.04). Please try once more.

vnikoofard commented 5 years ago

Thank you. I could build and install without any problem.

vnikoofard commented 5 years ago

Just another question. Do you think that I can build the jupyter notebook for Cadabra with Anaconda or I have to install miniconda.

kpeeters commented 5 years ago

Either one should be fine. I can also give you access to the Jupyter version in the cloud if you want to play with it there (saving you the building hassle).