[Bug 1865209] [NEW] Boost 1.71 missing python3/numpy3 symlinks
Mike Purvis
mike at uwmike.com
Fri Feb 28 18:46:45 UTC 2020
Public bug reported:
As of Boost 1.71, the exact version of python is coded into the library
name:
$ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
/usr/lib/x86_64-linux-gnu/libboost_numpy38.so
/usr/lib/x86_64-linux-gnu/libboost_python38.so
This is pretty inconvenient compared to previous releases where there
were generic symlinks, for example on Bionic with Boost 1.65:
$ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python3.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python-py36.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python.so
/usr/lib/x86_64-linux-gnu/libboost_numpy3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_numpy3.so
/usr/lib/x86_64-linux-gnu/libboost_numpy-py27.so
/usr/lib/x86_64-linux-gnu/libboost_numpy.so
/usr/lib/x86_64-linux-gnu/libboost_python3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_python3.so
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_python-py36.so
/usr/lib/x86_64-linux-gnu/libboost_python.so
So that you could just -lboost_python3 (or numpy3) and it would do the
right thing for the system's default versions.
Are there plans to fix this before release? I would expect that a lot of
software would have been relying on the previous behaviour, especially
CMake-using packages which were previously able to just:
find_package(Boost COMPONENTS python3)
But will now need to:
find_package(PythonInterp REQUIRED)
find_package(Boost COMPONENTS python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
And the above logic doesn't even work with the naming scheme used with
Bionic, so the situation is even worse if you're trying to support
multiple Ubuntu LTSes from the same codebase!
** Affects: boost1.71 (Ubuntu)
Importance: Undecided
Status: New
** Description changed:
As of Boost 1.71, the exact version of python is coded into the library
name:
- $ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
- /usr/lib/x86_64-linux-gnu/libboost_numpy38.so
- /usr/lib/x86_64-linux-gnu/libboost_python38.so
+ $ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
+ /usr/lib/x86_64-linux-gnu/libboost_numpy38.so
+ /usr/lib/x86_64-linux-gnu/libboost_python38.so
This is pretty inconvenient compared to previous releases where there
were generic symlinks, for example on Bionic with Boost 1.65:
- $ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
- /usr/lib/x86_64-linux-gnu/libboost_mpi_python3-py36.so
- /usr/lib/x86_64-linux-gnu/libboost_mpi_python3.so
- /usr/lib/x86_64-linux-gnu/libboost_mpi_python-py27.so
- /usr/lib/x86_64-linux-gnu/libboost_mpi_python-py36.so
- /usr/lib/x86_64-linux-gnu/libboost_mpi_python.so
- /usr/lib/x86_64-linux-gnu/libboost_numpy3-py36.so
- /usr/lib/x86_64-linux-gnu/libboost_numpy3.so
- /usr/lib/x86_64-linux-gnu/libboost_numpy-py27.so
- /usr/lib/x86_64-linux-gnu/libboost_numpy.so
- /usr/lib/x86_64-linux-gnu/libboost_python3-py36.so
- /usr/lib/x86_64-linux-gnu/libboost_python3.so
- /usr/lib/x86_64-linux-gnu/libboost_python-py27.so
- /usr/lib/x86_64-linux-gnu/libboost_python-py36.so
- /usr/lib/x86_64-linux-gnu/libboost_python.so
+ $ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
+ /usr/lib/x86_64-linux-gnu/libboost_mpi_python3-py36.so
+ /usr/lib/x86_64-linux-gnu/libboost_mpi_python3.so
+ /usr/lib/x86_64-linux-gnu/libboost_mpi_python-py27.so
+ /usr/lib/x86_64-linux-gnu/libboost_mpi_python-py36.so
+ /usr/lib/x86_64-linux-gnu/libboost_mpi_python.so
+ /usr/lib/x86_64-linux-gnu/libboost_numpy3-py36.so
+ /usr/lib/x86_64-linux-gnu/libboost_numpy3.so
+ /usr/lib/x86_64-linux-gnu/libboost_numpy-py27.so
+ /usr/lib/x86_64-linux-gnu/libboost_numpy.so
+ /usr/lib/x86_64-linux-gnu/libboost_python3-py36.so
+ /usr/lib/x86_64-linux-gnu/libboost_python3.so
+ /usr/lib/x86_64-linux-gnu/libboost_python-py27.so
+ /usr/lib/x86_64-linux-gnu/libboost_python-py36.so
+ /usr/lib/x86_64-linux-gnu/libboost_python.so
So that you could just -lboost_python3 (or numpy3) and it would do the
right thing for the system's default versions.
Are there plans to fix this before release? I would expect that a lot of
software would have been relying on the previous behaviour, especially
CMake-using packages which were previously able to just:
- find_package(Boost COMPONENTS python3)
+ find_package(Boost COMPONENTS python3)
But will now need to:
- find_package(PythonInterp REQUIRED)
- find_package(Boost COMPONENTS python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
+ find_package(PythonInterp REQUIRED)
+ find_package(Boost COMPONENTS python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
+
+ And the above logic doesn't even work with the naming scheme used with
+ Bionic, so the situation is even worse if you're trying to support
+ multiple Ubuntu LTSes from the same codebase!
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to boost1.71 in Ubuntu.
https://bugs.launchpad.net/bugs/1865209
Title:
Boost 1.71 missing python3/numpy3 symlinks
Status in boost1.71 package in Ubuntu:
New
Bug description:
As of Boost 1.71, the exact version of python is coded into the
library name:
$ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
/usr/lib/x86_64-linux-gnu/libboost_numpy38.so
/usr/lib/x86_64-linux-gnu/libboost_python38.so
This is pretty inconvenient compared to previous releases where there
were generic symlinks, for example on Bionic with Boost 1.65:
$ ls -1 /usr/lib/x86_64-linux-gnu/libboost_*py*.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python3.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python-py36.so
/usr/lib/x86_64-linux-gnu/libboost_mpi_python.so
/usr/lib/x86_64-linux-gnu/libboost_numpy3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_numpy3.so
/usr/lib/x86_64-linux-gnu/libboost_numpy-py27.so
/usr/lib/x86_64-linux-gnu/libboost_numpy.so
/usr/lib/x86_64-linux-gnu/libboost_python3-py36.so
/usr/lib/x86_64-linux-gnu/libboost_python3.so
/usr/lib/x86_64-linux-gnu/libboost_python-py27.so
/usr/lib/x86_64-linux-gnu/libboost_python-py36.so
/usr/lib/x86_64-linux-gnu/libboost_python.so
So that you could just -lboost_python3 (or numpy3) and it would do the
right thing for the system's default versions.
Are there plans to fix this before release? I would expect that a lot
of software would have been relying on the previous behaviour,
especially CMake-using packages which were previously able to just:
find_package(Boost COMPONENTS python3)
But will now need to:
find_package(PythonInterp REQUIRED)
find_package(Boost COMPONENTS python${PYTHON_VERSION_MAJOR}${PYTHON_VERSION_MINOR})
And the above logic doesn't even work with the naming scheme used with
Bionic, so the situation is even worse if you're trying to support
multiple Ubuntu LTSes from the same codebase!
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/boost1.71/+bug/1865209/+subscriptions
More information about the foundations-bugs
mailing list