Python 2.7 and 3.9 and Hydra builds

The Python 2 packages set is no longer built by Hydra, and the Python 3.9 set will now be built.

The Python 2 packages set will remain available, however, it will not be built by Hydra or ofBorg. While some have expressed their desire to have a Python2 set around, there has hardly been any effort to keep it working.

Not building Python 2 allows us to build an additional Python 3 set (currently Python 3.9), which is important since Python switched to a yearly release cadence.

Note 2.7 as well as the upstream supported 3.6 through 3.9 are available on master [2]. Versions 3.7, 3.8 and 3.9 will now be built by Hydra. I think we may drop building 3.7 for 21.03 though, to reduce the maintenance burden.


We should also add an entry in the release manual


Hydra is not building Python 2 packages directly I suppose, but for AFAIK there are still some packages that need python 2 and some python deps in order to at least build. So maybe it’d be more accurate to announce that python 2 packages won’t be built unless needed by something else?

Gnuradio3.7 for instance will need Python 2 and our community wants it to stay with us:

1 Like

Yes, there are a few. However, there’s less now after, but still plenty still around.

1 Like

Now 2.7 is gone and we have 3.9 instead we went from around 9200 packages to 10500.

I think we should stop building 3.7 as well, to reduce the load on both us and Hydra. From now on we would then build the whole package set for two Python versions: the current python3 (python38) and the future python3 (python39).

Of course interpreters for other versions are available, and if other packages depend on packages from those package sets they will be build as well.

1 Like

aiohttp now builds with python 3.8, so I think this is fine. 3.9 had many more std lib removals, so I believe that will be more painful.

When I use 21.03 without Py37 available, could I add channel 20.09 and downgrade (to get back py37)?

stop building just means that hydra wont populate a binary cache. The related package set will be available, but you will have to rebuild anything that’s not in cache.

And there’s more of a likelihood that a package may be broken, because no one is verifying if works before merging changes in.