ros / ros-overlay

Gentoo Overlay for ROS packages
33 stars 30 forks source link

ros-kinetic/ompl-1.2.1-r1 fails to compile: undefined references to lz4 methods #510

Open pholthaus opened 6 years ago

pholthaus commented 6 years ago

Example:

CMakeFiles/test_nearestneighbors.dir/datastructures/nearestneighbors.cpp.o: In function `flann::serialization::LoadArchive::decompressA
ndLoadV10(_IO_FILE*)':
nearestneighbors.cpp:(.text._ZN5flann13serialization11LoadArchive20decompressAndLoadV10EP8_IO_FILE[_ZN5flann13serialization11LoadArchiv
e20decompressAndLoadV10EP8_IO_FILE]+0xd0): undefined reference to `LZ4_decompress_safe'

Attached build.log

build.log.txt

allenh1 commented 6 years ago

I can't seem to reproduce this one...

$ superflore-check-ebuilds --ros-distro kinetic --pkgs ompl
>>>> testing gentoo package integrity
>>>> Running container with command string 'bash -c 'emaint sync -r ros-overlay && emerge ros-kinetic/ompl''...
>>>> Docker container exited.
>>>>   'ros-kinetic/ompl': building

I have the following USE flags enabled in package.use

ros-*/* PYTHON_TARGETS: -* python2_7
ros-*/* PYTHON_SINGLE_TAGET: *- python2_7
sys-libs/zlib minizip
sci-libs/vtk rendering java
dev-python/PyQt5 webkit
dev-qt/qtwebkit printingsupport
dev-libs/boost python

and I have the following enabled globally.

USE="X compat -bindist"
USE="${USE} fontconfig ruby_targets_ruby25"

I suspect this might be the missing minizip USE flag, but I'd try re-emerging sci-libs/flann first.


The superflore-check-ebuilds command spawns a clean, up-to-date docker container with the basis for ROS installed and then builds up to the package from scratch. If you want to play around in the container, you can do the following (assuming you have docker installed).

docker run -ti --rm --privileged allenh1/ros_gentoo_base:latest
pholthaus commented 6 years ago

Thanks for the hints. I'm currently trying the docker image.

I have the minizip flag enabled though.

pholthaus commented 6 years ago
superflore-check-ebuilds --ros-distro kinetic --pkgs moveit
>>>> testing gentoo package integrity                                                                                                  
>>>> Running container with command string 'bash -c 'emaint sync -r ros-overlay && emerge ros-kinetic/moveit''...                      
!!!!   'ros-kinetic/moveit': failing

Is there any way to see the output?

allenh1 commented 6 years ago

Is there any way to see the output?

Not yet, but there definitely should be. Originally, this feature was just for CI, but the CI doesn't run anymore since travis kept timing out. I think I'll work on that tomorrow.

allenh1 commented 6 years ago

@pholthau Ok, I've implemented the logging support. You can try it on the branch add-docker-output.

Corresponding PR at ros-infrastructure/superflore#147.

pholthaus commented 6 years ago

Thanks, Allen. Will explore that! I noticed that on my system (and in the container) ros-kinetic/opencv3 creates the folder /opt/ros/kinetic/lib6464 and that causes some linking problems.

pholthaus commented 6 years ago

Okay, it builds now with superflore. But the error on my system remains.

superflore-check-ebuilds --ros-distro kinetic --pkgs ompl
>>>> testing gentoo package integrity
>>>> Working in temporary directory /tmp/tmpjrw63u7i
>>>> Running container with command string 'bash -c 'emaint sync -r ros-overlay && emerge ros-kinetic/ompl''...
>>>> Docker container exited.
>>>> Cleaning up temporary directory /tmp/tmpjrw63u7i
>>>>   'ros-kinetic/ompl': building
pholthaus commented 6 years ago

It really seems that sci-libs/flann is to blame. Downgrading to sci-libs/flann-1.8.4-r1:0 fixes compilation. The strange thing is, nothing depends on flann. In the docker container, it is not even installed...

pholthaus commented 6 years ago

Apparently, automagic dependencies: https://bitbucket.org/ompl/ompl/issues/353/

FLANN is not required for OMPL. If you really want FLANN support, you could just install it from source yourself.