rust2rpm | ||
.gitignore | ||
CHANGELOG.md | ||
LICENSE | ||
MANIFEST.in | ||
pyproject.toml | ||
README.md | ||
requirements.txt | ||
setup.cfg | ||
tox.ini |
rust2rpm
rust2rpm is a tool for automatically generating RPM spec files for Rust crates.
rust2rpm.conf
If it is present, a rust2rpm.conf
configuration file is read
by rust2rpm to override some aspects of the automatic spec file generation.
This file can be committed to dist-git to ensure that these settings will be applied for future updates of a crate package, as well.
The file follows a slightly modified ini
syntax. It supports sections for
default settings ([DEFAULT]
) and target-specific settings (i.e. [fedora]
).
These configuration options are available right now:
summary
: override the generated summary for the RPM package for cases where generating a summary from the crate's description failssupported-arches
: conditionally build and run tests only on specific architectures (mostly useful for libraries with limited cross-platform support - applications need to useExcludeArch
orExclusiveArch
instead)all-features
: enable all cargo features when generatingBuildRequires
, building the crate, and running cargo tests (defaults tofalse
; setting this value totrue
is equivalent to supplying the--all-features
CLI flag)unwanted-features
: features or optional dependencies for which no+feature
subpackage should be generated (for example, dependencies on Rust compiler internals for crates that are also bundled with Rust itself)enabled-features
: features or optional dependencies which should be enabled when generatingBuildRequires
and building the cratebuildrequires
: additional build dependencies that must be installed for the package to build correctly (i.e.,pkgconfig(foo)
for thefoo-sys
crate)testrequires
: additional build dependencies that must be installed for the package's tests to build and / or run correctly (treated likebuildrequires
, but wrapped in an%if %{with check}
conditional in the generated spec)lib.requires
: additional build dependencies that must be installed for the crate to build correctly as a dependency of another crate (usually, this contains the same values as thebuildrequires
option)lib+foo.requires
: additional build dependencies that must be installed for the crate to build correctly as a dependency of another crate if it has enabled the optionalfoo
featurebin.requires
: additional runtime dependencies of the binary application that is built from this crate
[DEFAULT]
unwanted-features =
compiler_builtins
rustc-dep-of-std
enabled-features =
important
buildrequires =
pkgconfig(foo) >= 1.2.3
lib.requires =
pkgconfig(foo) >= 1.2.3
[fedora]
bin.requires =
findutils
buildrequires =
lib.requires =
lib+default.requires =
pkgconfig(bar) >= 2.0.0
Note that features and optional dependencies that are marked as
unwanted-features
must not be dependencies of other Cargo features that are
not marked "unwanted" as well. Failing to consider transitive dependencies will
lead to broken dependencies of generated rust-foo+bar-devel
packages and / or
errors when generating spec files with rust2rpm.
Specifying a non-empty list of enabled-features
and setting all-features
to
true
at the same time is not allowed.
Testing
Invoking tox
will automatically run the test suite on all python versions
that should be supported.
Use python -m pytest -v
or PYTHONPATH=. pytest -v
in the source tree
(possibly within a virtualenv) to run the tests manually.