envire / envire-envire_core

Core part for the Environment Representation library
BSD 2-Clause "Simplified" License
7 stars 13 forks source link

install_dependencies.sh fails with following error message #44

Open HWiese1980 opened 5 years ago

HWiese1980 commented 5 years ago

I now get the following error message during installation of dependencies:

Klone nach 'tools-plugin_manager' ...
remote: Enumerating objects: 117, done.
remote: Total 117 (delta 0), reused 0 (delta 0), pack-reused 117
Empfange Objekte: 100% (117/117), 43.53 KiB | 416.00 KiB/s, Fertig.
Löse Unterschiede auf: 100% (53/53), Fertig.
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Performing Test CXX_SUPPORTS_Wall
-- Performing Test CXX_SUPPORTS_Wall - Success
-- Performing Test CXX_SUPPORTS_Wno_unused_local_typedefs
-- Performing Test CXX_SUPPORTS_Wno_unused_local_typedefs - Success
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.11") found components:  doxygen dot 
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   filesystem
-- Checking for module 'class_loader'
--   No package 'class_loader' found
CMake Error at /usr/local/share/cmake-3.13/Modules/FindPkgConfig.cmake:452 (message):
  A required package was not found
Call Stack (most recent call first):
  /usr/local/share/cmake-3.13/Modules/FindPkgConfig.cmake:622 (_pkg_check_modules_internal)
  /usr/local/share/rock/cmake/Rock.cmake:260 (pkg_check_modules)
  /usr/local/share/rock/cmake/Rock.cmake:368 (rock_find_pkgconfig)
  /usr/local/share/rock/cmake/Rock.cmake:565 (rock_target_definition)
  /usr/local/share/rock/cmake/Rock.cmake:653 (rock_library_common)
  src/CMakeLists.txt:3 (rock_library)

-- Configuring incomplete, errors occurred!

Is Boost 1.58 too old?

jmachowinski commented 5 years ago

Es fehlt die Class loader lib

HWiese1980 commented 5 years ago

Ja, ist das nicht eine "Dependency", die durch "install_dependencies" installiert werden sollte?

arneboe commented 5 years ago

This does not happen on the CI and also not on my pc. I'll fix it :)

HWiese1980 commented 5 years ago

Weird...

Awesome! :+1:

planthaber commented 5 years ago

class loader is a apt package on ubuntu:

apt install libclass-loader-dev

HWiese1980 commented 5 years ago

True, but doesn't install_dependencies include system dependencies like that?

HWiese1980 commented 5 years ago

I mean, install_dependencies implies that all dependencies are installed, no exceptions...

planthaber commented 5 years ago

That's what autoproj does, we cannot cover all the system dependencies for all the distributions, btw. the Readme tells you what packages to install on ubuntu:

https://github.com/envire/envire-envire_core/blob/master/README.asciidoc#standalone-installation

arneboe commented 5 years ago

Right now the install script does not cover system dependencies. That could be changed, however :)

HWiese1980 commented 5 years ago

Okay, I've manually installed libclass-loader-dev. Now it's failing with the following error message.

Klone nach 'tools-plugin_manager' ...
remote: Enumerating objects: 117, done.
remote: Total 117 (delta 0), reused 0 (delta 0), pack-reused 117
Empfange Objekte: 100% (117/117), 43.53 KiB | 408.00 KiB/s, Fertig.
Löse Unterschiede auf: 100% (53/53), Fertig.
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29.1") 
-- Performing Test CXX_SUPPORTS_Wall
-- Performing Test CXX_SUPPORTS_Wall - Success
-- Performing Test CXX_SUPPORTS_Wno_unused_local_typedefs
-- Performing Test CXX_SUPPORTS_Wno_unused_local_typedefs - Success
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.11") found components:  doxygen dot 
-- Boost version: 1.58.0
-- Found the following Boost libraries:
--   filesystem
-- Checking for module 'class_loader'
--   Found class_loader, version 0.3.2
-- Checking for module 'tinyxml'
--   Found tinyxml, version 2.6.2
-- Checking for module 'base-logging'
--   Found base-logging, version 0.1
-- Found GLOG: /usr/include  
-- Performing Test CXX_SUPPORTS_Wnon_virtual_dtor
-- Performing Test CXX_SUPPORTS_Wnon_virtual_dtor - Success
CMake Warning (dev) at /usr/local/share/rock/cmake/Rock.cmake:247 (option):
  Policy CMP0077 is not set: option() honors normal variables.  Run "cmake
  --help-policy CMP0077" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  For compatibility with older versions of CMake, option is clearing the
  normal variable 'ROCK_TEST_ENABLED'.
Call Stack (most recent call first):
  CMakeLists.txt:10 (rock_standard_layout)
This warning is for project developers.  Use -Wno-dev to suppress it.

-- unit tests disabled as ROCK_TEST_ENABLED is set to OFF
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dfki.uni-bremen.de/hwiese/ap34_ws/3rdparty/envire-envire_core/tools-plugin_manager/build
Scanning dependencies of target plugin_manager
[ 75%] Building CXX object src/CMakeFiles/plugin_manager.dir/PluginManager.cpp.o
[ 75%] Building CXX object src/CMakeFiles/plugin_manager.dir/PluginLoader.cpp.o
[ 75%] Building CXX object src/CMakeFiles/plugin_manager.dir/Demangle.cpp.o
[100%] Linking CXX shared library libplugin_manager.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libboost_thread.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libpthread.so
/usr/bin/ld: cannot find -l:/usr/lib/libPocoFoundation.so
/usr/bin/ld: cannot find -l:/usr/lib/x86_64-linux-gnu/libconsole_bridge.so
collect2: error: ld returned 1 exit status
src/CMakeFiles/plugin_manager.dir/build.make:122: die Regel für Ziel „src/libplugin_manager.so“ scheiterte
make[2]: *** [src/libplugin_manager.so] Fehler 1
CMakeFiles/Makefile2:154: die Regel für Ziel „src/CMakeFiles/plugin_manager.dir/all“ scheiterte
make[1]: *** [src/CMakeFiles/plugin_manager.dir/all] Fehler 2
Makefile:140: die Regel für Ziel „all“ scheiterte
make: *** [all] Fehler 2

The allegedly missing libraries are definitely there. What irritates me however is the colon right in front of the path.

HWiese1980 commented 5 years ago

I've made sure all system dependencies not installed by install_dependencies.sh are installed before I started install_dependencies.sh. The error shown in https://github.com/envire/envire-envire_core/issues/44#issuecomment-477583113 happens nevertheless.

planthaber commented 5 years ago

Just tested in a clean docker ubuntu:18_04 image and it worked.

The missing Part in the Readme is that install_dependencies.sh generated a env.sh script which ghas to be sourced in order to find the custom build dependencies

HWiese1980 commented 5 years ago

I have Ubuntu 16.04. Is that a problem?

planthaber commented 5 years ago

on 16.04 the pkg-config file of class_loader seems to be broken:

In /usr/lib/x86_64-linux-gnu/pkgconfig/class_loader.pc

remove all ":" from the -l statements

Libs: -lclass_loader -l/usr/lib/x86_64-linux-gnu/libboost_thread.so -l/usr/lib/x86_64-linux-gnu/libboost_system.so -l/usr/lib/x86_64-linux-gnu/libpthread.so -l/usr/lib/libPocoFoundation.so -ldl -l/usr/lib/x86_64-linux-gnu/libconsole_bridge.so

planthaber commented 5 years ago

we could also add class_loader to the install_dependencies script:

build https://github.com/ros/class_loader melodic-devel class_loader "$PREFIX -DBUILD_SHARED_LIBS=TRUE"

arneboe commented 5 years ago

Is this still relevant?

pierrewillenbrockdfki commented 5 years ago

In the sense that ubuntu 16.04's class_loader's pkgconfig.pc is still broken, yes.

HWiese1980 commented 5 years ago

Just tripping over this again. Could the bug be fixed automatically by the install_dependencies.sh script? Does that make sense?