Fabio Valentini
cf4ed29e5a
The "default" feature is always implicitly defined, so it can always be used in rust2rpm.conf. However, previous to this commit, it was not loaded correctly if the crate did not explicitly define a "default" feature. |
||
---|---|---|
rust2rpm | ||
.gitignore | ||
LICENSE | ||
MANIFEST.in | ||
NEWS | ||
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.