Python2 removal for focal ...

Matthias Klose doko at
Tue Feb 18 18:34:42 UTC 2020

Sorry for delaying that email.

Based on some discussions, we are going forward with the Python2 removal.
python-defaults now migrated to the release pocket and therefore removing
the binary packages

   libpython-dbg libpython-dev libpython-stdlib
   python python-dbg python-dev python-doc python-minimal

All dependencies to these packages have been removed in the release and proposed
pockets, and hopefully won't come back again.  Further steps are:

 - Remove outstanding references to these binary packages in the list of not
built from source list.  This means any package having a build dependency on one
of the above packages will need a fix.

 - Scan the binary packages in the release pocket for the use of the python
shebang, and fix those to use python2 instead of python.  This will not include
shebangs used in examples shipped in /usr/share/doc (we didn't care about these
before, and we don't care about those now).

 - After the next archive test rebuild, check for build failures caused by the
removal of the python shebang.

 - Before release, add a binary package "python-is-python2-but-deprecated"
package shipping the /usr/bin/python symlink, and providing the python package.
This allows users to keep the python symlink on upgrade from earlier releases,
or to explicitly install it if needed for legacy requirements. It also allows
packages from PPAs or third-party sources to be installable.
*The "python-is-python2-but-deprecated" package must not be used in build
dependencies, dependencies and recommendations in the focal release.*

 - Forward looking, we are adding a package python-is-python3, also providing
the python symlink, which is *not* installed by default in 20.04 LTS.  In
follow-up releases and in 22.04 LTS the python symlink pointing to python3 will
be installed by default.  *python-is-python3 must not be used in dependencies,
build dependencies and recommendations.*

 - Document that setup in the release notes.

 - 20.04 LTS will ship python2. Derivatives who cannot port some
applications are able to use python2 for the 20.04 LTS release.


PS: Some packages had to be removed from the archive to get this
transition/removal done.  Please file a bug report to get those re-added, and CC
me on this report, even if it's after feature freeze.

On 1/25/20 4:54 AM, Matthias Klose wrote:
> One more update, the unversioned python packages are now gone in focal.  There
> will be some cleanup to do for NBS and build dependencies.  A more complete
> follow-up will be sent next week.
> I removed a lot of packages from focal to get this done.  Apologies if that
> affects any derivative.  Please contact me on irc or via email to restore those
> package.  However I don't have the resources to actively port these packages to
> Python3.
> Up to the Python 3.8 transition ...
> Matthias
> On 06.01.20 14:21, Matthias Klose wrote:
>> An update ... starting today, python-defaults in -proposed doesn't build the
>> binary packages
>>   libpython-dbg libpython-dev libpython-stdlib
>>   python python-dbg python-dev python-doc python-minimal
>> anymore, because we don't ship those packages anymore in focal.  Python2 usage
>> should be removed, or python2 should be used explicitly, so change any of the
>> dependencies above to
>>   libpython2-dbg libpython2-dev libpython2-stdlib
>>   python2 python2-dbg python2-dev python2-doc python2-minimal
>> and change she shabang to python2 if you need to keep the Python2 packages.
>> The python command will be reintroduced before release in a new package
>> python-pointing-to-python2.
>> Matthias
>> On 11.11.19 01:24, Matthias Klose wrote:
>>> Enabling the syncs form unstable brang all the Python2 removal goodness to
>>> focal, however sometimes a little bit too much.  Ubuntu has it's own debt in now
>>> ownerless packages which still depend on some Python2 module which is now
>>> removed in Debian.
>>> When looking at update_excuses.html, you will likely see many "valid candiates"
>>> for migration, however when looking at update_output.txt, you'll see which
>>> packages prevent migration to the release pocket.
>>> Please find attached a script to track the current diff between the Python2
>>> removal in unstable and focal, but keep in mind, that this script doesn't show
>>> the packages anymore, which are stuck in the proposed pocket.
>>> What to do for the Python2 removal?
>>>  - Convert the packages to Python3, this is the preferred option,
>>>    although if it's not done by now, how likely is the conversion?
>>>  - Remove the package. Please file bug reports, documenting the
>>>    check for reverse-dependencies.
>>>  - If the package still needs to be kept in the archive, go the
>>>    painful way, and maybe re-introduce all the just removed
>>>    Python2 module packages.  If this is a source package
>>>    building both Python2 and Python3 modules, your are then
>>>    committed to merge this continuously. Also keep in mind that
>>>    upstreams are already dropping support for Python2. Then
>>>    better build the Python2 modules from a separate source.
>>>    If you decide to keep Python2 based packages, make sure that
>>>    the package doesn't reference any of the python, python-dev,
>>>    python-dbg, python-doc packages, and doesn't use the unversioned
>>>    python binary.  These should use python2, python2-dev,
>>>    python2-dbg, python2-doc instead and use the python2 binary.
>>> There are about 3300 bugs filed in Debian, 1500 are already closed, plus the 350
>>> packages only available in focal.  Please keep the focus on the packages which
>>> are not migrating, and on reducing the number of Ubuntu only packages.
>>> And please don't shoot the messenger, I hope I didn't ever upload an Ubuntu-only
>>> Python2 package myself ;)
>>> Matthias

More information about the ubuntu-devel mailing list