This post gives an information on what changes will be introduced and what steps users have to take when we upload packages built
with python3.9 for which python3.9 will be the default python3.
We are hoping to upload all python modules built with python3.9 in couples of weeks.
Currently on AIX Toolbox python3 based packages are built with python 3.7.
Python 3.7 will be EOL in June 2023. https://www.python.org/downloads/
Hence it is necessary to move to supported python3 version for AIX Toolbox packages.
The default python3
The AIX Toolbox default python3 is python3-3.7. Along with this we have python3.9-3.9 as well.
Till now users who wants to use python3.9 needed to install it separately either with "dnf install python3.9" or by manually using rpm install command "rpm -ivh python3.9 …."
But now default python3 will be python3.9 instead of python3-3.7.
Because of this now when user will run "dnf update", python3.9 along with any other python3 modules (installed from AIX toolbox) or python3 based packages installed (dnf, ninja-build, git, gdb etc) will be update to python3.9 based builds. It is recommended to run "dnf update" instead of updating individual packages.
python3, python3-devel, python3-idle, python3-test, python3-tkinter rpms are now meta-packages that ships default binaries like python3, python3-config, pydoc3, etc. which are actually symlinks to python3.9, python3.9-config, pydoc3.9, etc. provided by python3.9 rpms.
These meta packages have dependencies on actual python packages those supplies the binaries and libraries. Users are recommended to install meta-packages through dnf and implicitly main python3 packages will be installed.
We have rebuilt all our python3 modules with python3.9.
Other issues fixed along with python3.9 rebuilds
Earlier we had an issue with python3 and runtime linking.
This also exposed the issues in rpm.rte and runtime linking.
Overall, this was causing issues with DNF, and breaking DNF itself where users had to fix it by manually downloading some of the rpms from AIX Toolbox.
This has been explained in detail in this forum post Recent DNF and YUM issues with newer python3 and curl builds
To get all of these latest changes users can run "dnf update". Don't try to update the package individually it recommended to run DNF update.
But before running any DNF commands one needs update rpm.rte to latest version.
We have rebuilt rpm.rte to remove runtime linking and rebuilt DNF and dependencies against this newly rebuilt rpm.rte. DNF dependencies now links to rpm.rte provided archive libraries (.a) instead of directly linking to .so libraries.
To avoid errors related to missing librpm*.a libraries one needs to update rpm.rte first.
You can download latest rpm.rte versions from AIX web download site.
For AIX 7.1 and 7.2: Download and install rpm.rte-22.214.171.1240
For AIX 7.3: Download and install rpm.rte-126.96.36.1999
DNF bundle update
DNF bundle will be updated to include rebuilt DNF python3 modules with python3.9 and an updated rpm.rte.
So, when setting up the DNF using the install script, it tries to update to the latest rpm.rte first and then install the required rpm packages.
Custom Python3 Modules
If a user has built and installed python3 modules (with python3.7) on their own outside AIX toolbox then those modules will not be migrated to python3.9. User will have to reinstall them separately for python3.9.
From a user perspective there is not much work to migrate to python3.9. One just need to install latest rpm.rte from AIX web download link mentioned above (if not already at latest) and run "dnf update" to get the latest python3.9 ecosystem. Or if you are setting up first time dnf environment then just install latest rpm.rte and then install dnf with the AIX toolbox dnf install script.