A tool to convert a PyPI package to an RPM SPECFILE or to generate an SRPM. Under heavy development, see the TODO file for a list of planned features. pyp2rpm currently ships with Fedora and Mageia specific templates.
The simplest use case is to run:
pyp2rpm package_name
This downloads the package from PyPI and outputs the RPM SPECFILE.
Or:
pyp2rpm package_name --srpm
This downloads the package from PyPI and creates a SRPM file.
All of the options are (print this by running pyp2rpm -h):
usage: pyp2rpm [-h] [-v VERSION] [-d SAVE_DIR] [-r RPM_NAME]
[-t TEMPLATE] [-o DISTRO] [-b BASE_PYTHON]
[-p PYTHON_VERSION] [--srpm] [--proxy PROXY] PACKAGE
Convert PyPI package to RPM specfile or SRPM.
Arguments:
PACKAGE Provide PyPI name of the package or path to compressed source file.
Options:
-t TEMPLATE Template file (jinja2 format) to render (default:
"fedora").Search order is 1) filesystem, 2) default
templates.
-o [fedora|mageia|pld] Default distro whose conversion rules to use
(default:"fedora").Default templates have their
rules associated and ignore this.
-b BASE_PYTHON Base Python version to package for (fedora default: "3").
-p PYTHON_VERSIONS Additional Python versions to include in the
specfile (e.g -p2 for python2 subpackage). Can be
specified multiple times (fedora default: "2"). Specify
additional version or use -b explicitly to disable
default.
-s Spec file ~/rpmbuild/SPECS/python-package_name.spec
will be created (default: prints spec file to
stdout).
--srpm When used pyp2rpm will produce srpm instead of
printing specfile into stdout.
--proxy PROXY Specify proxy in the form proxy.server:port.
-r RPM_NAME Name of rpm package (overrides calculated name).
-d SAVE_PATH Specify where to save package file, specfile and
generated SRPM (default: "/home/mcyprian/rpmbuild").
-v VERSION Version of the package to download (ignored for
local files).
--venv / --no-venv Enable / disable metadata extraction from virtualenv
(default: enabled).
--autonc / --no-autonc Enable / disable using automatic provides with a
standardized name in dependencies declaration
(default: disabled).
--sclize Convert tags and macro definitions to SCL-style
using `spec2scl` module. NOTE: SCL related options
can be provided alongside this option.
-h, --help Show this message and exit.
SCL related options:
--no-meta-runtime-dep Don't add the runtime dependency on the scl
runtime package.
--no-meta-buildtime-dep Don't add the buildtime dependency on the scl
runtime package.
--skip-functions FUNCTIONS Comma separated list of transformer functions to
skip.
--no-deps-convert Don't convert dependency tags (mutually
exclusive with --list-file).
--list-file FILE_NAME List of the packages/provides, that will be in
the SCL (to convert Requires/BuildRequires
properly). Lines in the file are in form of
"pkg-name %%{?custom_prefix}", where the prefix
part is optional.
To run the unit tests, cd into the checked out directory and run:
PYTHONPATH=$(pwd) py.test
or run:
python setup.py test
We will gladly accept any pull request or feature request. With complex pull requests, please include unit tests in pytest and use flexmock if you need mocking.
pyp2rpm is licensed under the MIT/Expat license.