dqrobotics / python

The DQ Robotics library in Python
https://dqrobotics.github.io
GNU Lesser General Public License v3.0
24 stars 9 forks source link

[BUG] GLIBCXX_3.4.29 not found on Ubuntu 20.04 with `--pre`. #44

Closed mmmarinho closed 1 year ago

mmmarinho commented 1 year ago

Acceptance of the Code of Conduct

Leave these in your bug report, read, and check them.

Bug description

When installing the DQRobotics library in Python on Ubuntu 20.04 (development branch), as follows python3 -m pip install dqrobotics --pre

and running

python3
from dqrobotics import *

results in an error ImportError saying GLIBCXX_3.4.29 not found

Environment:

Additional context This error is most likely related to the gcc version on the CI machines have been recently updated and above the version expected in 20.04. Before the next release, this needs to be corrected.

mmmarinho commented 1 year ago

For now it can be fixed by installing it locally so that the gcc version matches:

Example:

sudo apt update && sudo apt upgrade -y
sudo apt install git g++ cmake python3-dev python3-wheel
git clone https://github.com/dqrobotics/python.git --recursive
python3 -m pip install ./python
mmmarinho commented 1 year ago

Some notes to back up the current course of action:

We can either ask the users to install gcc11 -> Not good because its a moving goalpost with GithubActions CI updates. Compile with several versions with gcc -> Not scalable and somewhat arbitrary

For now I'll go with

Reasons in favor:

Reasons against:

Conclusion: In this current scenario I think that this is the most reasonable solution, with the least impact to the userbase, and easiest implementation.

mmmarinho commented 1 year ago

What to do when a current LTS distro, ubuntu-old reaches EOL.

  1. Check for the End of Standard Support date in https://wiki.ubuntu.com/Releases. They might change this naming in the future, but it's whatever end date comes first in the table.
  2. Check https://github.com/actions/runner-images and find the correct string for the oldest currently supported EOL, let's call it ubuntu-new
  3. Replace the existing string ubuntu-old with ubuntu-new in .github/workflows/python_package.yml.