Failed to install libceres-dev on humble
koonpeng opened this issue · 4 comments
Bug report
Required information:
- Operating system and version:
- ubuntu 22.04
- OpenRMF installation type:
- source
- OpenRMF version or commit hash
- main
- ROS distribution and version:
- humble
- ROS installation type:
- binaries
- Package or library, if applicable:
- libceres-dev
Description of the bug
The ros ci tooling fail to install libceres-dev
, logs can be found here https://github.com/open-rmf/rmf/runs/7175224381?check_suite_focus=true#step:5:2526.
Steps to reproduce the bug
Only happens in CI, wasn't able to reproduce locally or in docker. Happens consistently in this PR open-rmf/rmf#165.
I'm taking a look into this.
It looks like there's some conflict between the humble dependences installed by the step
- name: deps
uses: ros-tooling/setup-ros@v0.3
with:
required-ros-distributions: humble
and the package libceres-dev.
If libceres-dev is installed in a previous step, it's uninstalled by the ros-tooling/setup-ros@v0.3.
| [command]/usr/bin/sudo DEBIAN_FRONTEND=noninteractive RTI_NC_LICENSE_ACCEPTED=yes apt-get install --no-install-recommends --quiet --yes libssl-dev python3-dev build-essential clang cmake git lcov libc++-dev libc++abi-dev python3-catkin-pkg-modules python3-pip python3-vcstool wget libasio-dev libtinyxml2-dev python3-rosdep
| Reading package lists...
| Building dependency tree...
| Reading state information...
| wget is already the newest version (1.21.2-2ubuntu1).
| libssl-dev is already the newest version (3.0.2-0ubuntu1.6).
| git is already the newest version (1:2.37.2-0ppa1~ubuntu22.04.1).
| The following packages were automatically installed and are no longer required:
| libamd2 libblas-dev libblas3 libbtf1 libcamd2 libccolamd2 libceres2
| libcholmod3 libcolamd2 libcxsparse3 libeigen3-dev libgflags-dev libgflags2.2
| libgfortran5 libgoogle-glog0v5 libgraphblas-dev libgraphblas6 libklu1
| liblapack-dev liblapack3 libldl2 libmetis5 libmongoose2 librbio2 libsliplu1
| libspqr2 libsuitesparse-dev libsuitesparseconfig5 libumfpack5
| Use 'sudo apt autoremove' to remove them.
| The following additional packages will be installed:
| clang-14 cmake-data dh-elpa-helper docutils-common emacsen-common
| lib32gcc-s1 lib32stdc++6 libarchive13 libc++-14-dev libc++1-14
| libc++abi-14-dev libc++abi1-14 libc6-i386 libclang-common-14-dev
| libclang-cpp14 libclang1-14 libgc1 libjs-jquery libjs-sphinxdoc
| libjs-underscore libjson-perl libjsoncpp25 libllvm14 libobjc-11-dev libobjc4
| libperlio-gzip-perl libpython3-dev libpython3.10 libpython3.10-dev librhash0
| libtinyxml2-9 libunwind-14 libunwind-14-dev libuv1 llvm-14-linker-tools
| python3-dateutil python3-docutils python3-roman python3-rosdep-modules
| python3-rosdistro-modules python3-rospkg-modules python3-setuptools
| python3-wheel python3-yaml python3.10-dev sgml-base xml-core
| Suggested packages:
| clang-14-doc cmake-doc ninja-build cmake-format lrzip docutils-doc
| fonts-linuxlibertine | ttf-linux-libertine texlive-lang-french
| texlive-latex-base texlive-latex-recommended python-setuptools-doc
| sgml-base-doc debhelper
| Recommended packages:
| llvm-14-dev libgd-gd2-perl libboost-regex-dev libboost-dev
| libboost-date-time-dev javascript-common libjson-xs-perl libpaper-utils
| python3-pil python3-pygments
| The following packages will be REMOVED:
| libceres-dev libgoogle-glog-dev libunwind-dev
| The following NEW packages will be installed:
| build-essential clang clang-14 cmake cmake-data dh-elpa-helper
| docutils-common emacsen-common lcov lib32gcc-s1 lib32stdc++6 libarchive13
| libasio-dev libc++-14-dev libc++-dev libc++1-14 libc++abi-14-dev
| libc++abi-dev libc++abi1-14 libc6-i386 libclang-common-14-dev libclang-cpp14
| libclang1-14 libgc1 libjs-jquery libjs-sphinxdoc libjs-underscore
| libjson-perl libjsoncpp25 libllvm14 libobjc-11-dev libobjc4
| libperlio-gzip-perl libpython3-dev libpython3.10 libpython3.10-dev librhash0
| libtinyxml2-9 libtinyxml2-dev libunwind-14 libunwind-14-dev libuv1
| llvm-14-linker-tools python3-catkin-pkg-modules python3-dateutil python3-dev
| python3-docutils python3-pip python3-roman python3-rosdep
| python3-rosdep-modules python3-rosdistro-modules python3-rospkg-modules
| python3-setuptools python3-vcstool python3-wheel python3-yaml python3.10-dev
| sgml-base xml-core
| 0 upgraded, 60 newly installed, 3 to remove and 8 not upgraded.
If installed after, we get the conflict.
Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:2 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 https://packages.microsoft.com/ubuntu/22.04/prod jammy InRelease
Hit:5 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:7 http://packages.ros.org/ros2/ubuntu jammy InRelease
Hit:8 https://packagecloud.io/github/git-lfs/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
| 8 packages can be upgraded. Run 'apt list --upgradable' to see them.
| W: http://packages.ros.org/ros2/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
| Starting pkgProblemResolver with broken count: 1
| Starting 2 pkgProblemResolver with broken count: 1
| Investigating (0) libunwind-14-dev:amd64 < 1:14.0.0-1ubuntu1 @ii K Ib >
| Broken libunwind-14-dev:amd64 Breaks on libunwind-dev:amd64 < none -> 1.3.2-2build2 @un puN >
| Considering libunwind-dev:amd64 -1 as a solution to libunwind-14-dev:amd64 2
| Done
| Some packages could not be installed. This may mean that you have
| requested an impossible situation or if you are using the unstable
| distribution that some required packages have not yet been created
| or been moved out of Incoming.
| The following information may help to resolve the situation:
|
| The following packages have unmet dependencies:
| libunwind-14-dev : Breaks: libunwind-dev but 1.3.2-2build2 is to be installed
| E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.
Reverse dependencies analysis and conflict path:
In the ros-tooling/setup-ros@v0.3 we are asking to install
libc++-dev --> libc++-14-dev --> libunwind-14-dev
but one of the direct dependences of rmf_traffic_editor
is:
rmf_traffic_editor --> libceres-dev --> libgoogle-glog-dev --> libunwind-dev
Minimum example of the conflict: try to install both packages in an ubuntu 22.04:
apt update; apt install libc++-dev libceres-dev
Possible solutions:
-
Check if libceres is absolutely needed in the editor, if not check if it can be conditionally imported if it exists and set as recommended and not as a hard dependency. libceres related merge siot-decada-robotics/rmf_traffic_editor@ca01a59
-
Check if moving libc++-dev from aptDependencies to https://github.com/ros-tooling/setup-ros/blob/master/dist/index.js#L6065 and replacing it with an older version of the package available in jammy solves the problem: https://packages.ubuntu.com/jammy/libc++-12-dev It looks like the libunwind dependence was introduced in the libc++13-dev https://packages.ubuntu.com/jammy/libc++-13-dev
From what I understand this should be solved as of ros-tooling/setup-ros#506 ?