Churchyard (talk | contribs) m (How to run locally.) |
(Redirect Package Maintainer wiki links to docs.fp.o) |
||
(7 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{admon/caution|Taskotron development reached end of life|[[Taskotron]] has been sunset in Fedora Infrastructure. It is no longer running and no longer being developed. You can use these wiki pages to learn about its history, but please be aware that the information is no longer actual.}} | |||
= What is rpmlint? = | = What is rpmlint? = | ||
[https://github.com/rpm-software-management/rpmlint Rpmlint] performs many different checks regarding RPM package sanity. [https://pagure.io/taskotron/task-rpmlint Task-rpmlint] is a [[Taskotron]] wrapper around that tool that executes it on every new [https://koji.fedoraproject.org/ Koji] build and shows the results in [https://bodhi.fedoraproject.org/ Bodhi]. | [https://github.com/rpm-software-management/rpmlint Rpmlint] performs many different checks regarding RPM package sanity. [https://pagure.io/taskotron/task-rpmlint Task-rpmlint] is a [[Taskotron]] wrapper around that tool that executes it on every new [https://koji.fedoraproject.org/ Koji] build and shows the results in [https://bodhi.fedoraproject.org/ Bodhi]. | ||
Line 5: | Line 7: | ||
Rpmlint task downloads all RPMs (source and binary) that your package consists of and runs <code>rpmlint</code> on them. | Rpmlint task downloads all RPMs (source and binary) that your package consists of and runs <code>rpmlint</code> on them. | ||
= Common issues = | |||
== Unexpanded macros == | |||
If you package uses an RPM macro which is not installed by default (but it is instead provided by some dependency of your package), you might see errors like [https://pagure.io/taskotron/task-rpmlint/issue/21 this]: | |||
<pre> | |||
emacs-json-snatcher.src: E: specfile-error warning: line 13: Possible unexpanded macro in: Requires: emacs(bin) >= %{_emacs_version} | |||
</pre> | |||
The rpmlint task doesn't install your package dependencies when checking it, and therefore such a macro will probably not be expanded. In this case, your best solution is probably to [[#whitelist|whitelist]] this error. | |||
{{anchor|whitelist}} | |||
= Whitelisting errors = | = Whitelisting errors = | ||
You can whitelist errors that you believe don't apply to your package. task-rpmlint uses the same rpmlint config file as used by [ | You can whitelist errors that you believe don't apply to your package. task-rpmlint uses the same rpmlint config file as used by [https://docs.fedoraproject.org/en-US/package-maintainers/Package_Maintenance_Guide/ fedpkg lint], which is named <code><source_package_name>.rpmlintrc</code>. If there's such a file in your distgit repository ([https://src.fedoraproject.org/rpms/python3/blob/master/f/python3.rpmlintrc example]), it will be used when <code>rpmlint</code> is executed as part of task-rpmlint. | ||
To test the config file locally, you can use | |||
<pre> | |||
rpmlint --file <source_package_name>.rpmlintrc <rpms> | |||
</pre> | |||
or <pre> | |||
fedpkg lint | |||
</pre> | |||
= Getting Help = | = Getting Help = |
Latest revision as of 08:09, 8 October 2021
What is rpmlint?
Rpmlint performs many different checks regarding RPM package sanity. Task-rpmlint is a Taskotron wrapper around that tool that executes it on every new Koji build and shows the results in Bodhi.
How does rpmlint task work?
Rpmlint task downloads all RPMs (source and binary) that your package consists of and runs rpmlint
on them.
Common issues
Unexpanded macros
If you package uses an RPM macro which is not installed by default (but it is instead provided by some dependency of your package), you might see errors like this:
emacs-json-snatcher.src: E: specfile-error warning: line 13: Possible unexpanded macro in: Requires: emacs(bin) >= %{_emacs_version}
The rpmlint task doesn't install your package dependencies when checking it, and therefore such a macro will probably not be expanded. In this case, your best solution is probably to whitelist this error.
Whitelisting errors
You can whitelist errors that you believe don't apply to your package. task-rpmlint uses the same rpmlint config file as used by fedpkg lint, which is named <source_package_name>.rpmlintrc
. If there's such a file in your distgit repository (example), it will be used when rpmlint
is executed as part of task-rpmlint.
To test the config file locally, you can use
rpmlint --file <source_package_name>.rpmlintrc <rpms>
or
fedpkg lint
Getting Help
If you have generic rpmlint-related questions, it's best to ask on devel list or fedora-devel IRC channel.
If you have troubles with task-rpmlint, please contact us.