Hello fellow Python packagers. This is an announcement about a new set of RPM
macros you can use to build PEP 517/518 enabled packages, that is Python
packages that have the pyproject.toml file.
The set of macros is designed for modern packaging with dynamic buildrequires in
The macros are in the pyproject-rpm-macros package and you can use them like this:
See the full documentation of the macros:
See example spec files:
(These use setuptools (setup.py), flit and poetry for build backends, but you
cannot tell that from the specfiles - BuildRequires are generated dynamically
from upstream metadata.)
The macros are **provisional**, i.e. their API may be changed upon feedback
received from you.
We are not (yet) interested in a general "update all the Python packages" hunt,
but rather in early adopters.
If you have questions, ask here. We'll gladly extend the docs if something is
If you find bugs, report them in bugzilla or here. Likewise for RFEs.
we've been recently approached by a colleague from Red Hat working on
According to their testing, Fedora Python performance could be improved by ~15%
by building /usr/bin/python* statically with libpython*.a. That sounds like a
worthy thing to do.
Since Python 3.8 Python extension modules are no longer linked to libpython.so
and we can do the following:
* build /usr/bin/python3(.8) statically with libpython*.a
* build and ship libpython3.8.so.1.0 for packages that "embed" Python
The change in the python3 package is trivial:
However it can have serious impact on Python extension modules that are linked
to libpython3.8.so.1.0 by various "nonstandard" build mechanisms or by compiling
code for Python extension module and code that embeds Python into one file.
We will likely propose a Fedora 32 Change for this, however I'm opening this
topic for discussion before we do so.
Testing the proposed Pull Request with your code is also helpful. Let me know
how can we make that easier (e.g. if you want a Copr or a Fedora 30/31 python38
package with this change).
I am trying to build PyVISA (https://pyvisa.readthedocs.io/en/latest/)
using mock and the problem is, during the build it is looking for
But the real name if the directory
So I think the developer was not aware of case sensitive systems.
I tried to modify the specfile but with no different result. So original
specfile was created using pyp2rpm.
Besides PyVISA, I had this problem on some other python packages, too,
so is there a way out of that except patching and rewriting stuff of the
original python package? It seems to me like a common problem. I found
 and pyvisa is mentioned there, but the problem seems to be the same
(regardless to say I wonder how that guy there built this RPM of PyVISA).