https://fedoraproject.org/wiki/Changes/Automatic_strict_inter-package_dep...
= Automatic strict inter-package dependencies =
== Summary ==
Implement feature in RPM which will enforce strict dependencies
between subpackages automatically (right now packagers have to do it
themselves).
== Owner ==
* Name: [[User:ignatenkobrain|Igor Gnatenko]]
* Email: ignatenkobrain(a)fedoraproject.org
== Detailed Description ==
Let's take graphene as an example.
Spec file contains:
<pre>
%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
%package tests
Requires: %{name}%{?_isa} = %{version}-%{release}
</pre>
What we see when we build RPMs is:
* <code>graphene-devel</code> requires <code>graphene(x86-64) =
1.8.2-3.fc30</code> AND <code>libgraphene-1.0.so.0()(64bit)</code> AND
<code>pkgconfig(graphene-1.0)</code>
* <code>graphene-tests</code> requires <code>graphene(x86-64) =
1.8.2-3.fc30</code> AND <code>libgraphene-1.0.so.0()(64bit)</code>
What can we do?
* <code>Requires: libgraphene-1.0.so.0()(64bit)</code> is actually
provided by <code>graphene</code> (coming from same package), so it
can be dropped in favor of <code>Requires: graphene(x86-64) =
1.8.2-3.fc30</code>
* <code>Requires: pkgconfig(graphene-1.0)</code> is provided by
<code>graphene-devel</code> (coming from the same subpackage), so it
can be dropped entirely
== Benefit to Fedora ==
Package dependencies (between subpackages) will be more strict, more
automated
([
https://docs.fedoraproject.org/en-US/packaging-guidelines/#_requiring_bas...
this section from guidelines] can be dropped entirely). Metadata size
will decrease as well.
== Scope ==
* Proposal owners: Implement required feature in RPM, backport it to Fedora.
* Other developers: Drop unneeded dependencies to keep spec file simpler.
* Release engineering: [
https://pagure.io/releng/issue/8128 #8128]
* Policies and guidelines: Drop yet another Packaging Guidelines
section because it will be automated.
* Trademark approval: N/A (not needed for this Change)
== Upgrade/compatibility impact ==
Everything will keep working.
== How To Test ==
TBD.
== User Experience ==
User's won't see packaging errors (wrt. inter-package dependencies) anymore.
== Dependencies ==
RPM changes are needed. Will be handled by Proposal Owners.
== Contingency Plan ==
* Contingency mechanism: (What to do? Who will do it?) Proposal
Owners will try to fix problems ASAP or move Change to the next
release (and revert changes).
* Contingency deadline: Beta Freeze.
* Blocks release? No.
* Blocks product? No.
== Documentation ==
TBD.
--
Ben Cotton
Fedora Program Manager
TZ=America/Indiana/Indianapolis