https://fedoraproject.org/wiki/Packaging/Guidelines#Explicit_Requires Packages must not contain explicit Requires on libraries except when absolutely necessary. [...]
https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package Devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}. Usually, subpackages other than -devel should also require the base package using a fully versioned dependency.
I think these two guidelines or their wording are more or less in conflict these days. Most -devel packages do not "absolutely necessarily" need an explicit dependency on the base package because rpm automatically adds soname dependencies from symlinks in -devel to the corresponding shared lib in the main/lib package. Ditto, many cases of other non-devel subpackages get automatic lib soname dependencies to the main/lib package.
If the intent is to still require explicit deps like in "requiring base package" even though there are automatic ones that would usually work, just to be sure or for other reasons (possibility of compilation options, patchwork that affects some internal subpackages but not other -devel/lib package consumers), I think "requiring base packages" and "explicit requires" should be cross referenced noting that this is an exception and those explicit deps are indeed wanted.
If not, IMO "requiring base package" should be softened so that it requires adding those explicit deps if no automatic ones are present, or just removed because that'd be redundant with "explicit requires" and the rest of the general dependency guidelines.
Ping, any comments on this?
On Saturday 02 May 2009, Ville Skyttä wrote:
https://fedoraproject.org/wiki/Packaging/Guidelines#Explicit_Requires Packages must not contain explicit Requires on libraries except when absolutely necessary. [...]
https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package Devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}. Usually, subpackages other than -devel should also require the base package using a fully versioned dependency.
I think these two guidelines or their wording are more or less in conflict these days. Most -devel packages do not "absolutely necessarily" need an explicit dependency on the base package because rpm automatically adds soname dependencies from symlinks in -devel to the corresponding shared lib in the main/lib package. Ditto, many cases of other non-devel subpackages get automatic lib soname dependencies to the main/lib package.
If the intent is to still require explicit deps like in "requiring base package" even though there are automatic ones that would usually work, just to be sure or for other reasons (possibility of compilation options, patchwork that affects some internal subpackages but not other -devel/lib package consumers), I think "requiring base packages" and "explicit requires" should be cross referenced noting that this is an exception and those explicit deps are indeed wanted.
If not, IMO "requiring base package" should be softened so that it requires adding those explicit deps if no automatic ones are present, or just removed because that'd be redundant with "explicit requires" and the rest of the general dependency guidelines.
Ville Skyttä wrote:
Ping, any comments on this?
On Saturday 02 May 2009, Ville Skyttä wrote:
https://fedoraproject.org/wiki/Packaging/Guidelines#Explicit_Requires Packages must not contain explicit Requires on libraries except when absolutely necessary. [...]
https://fedoraproject.org/wiki/Packaging/Guidelines#Requiring_Base_Package Devel packages must require the base package using a fully versioned dependency: Requires: %{name} = %{version}-%{release}. Usually, subpackages other than -devel should also require the base package using a fully versioned dependency.
I think these two guidelines or their wording are more or less in conflict these days. Most -devel packages do not "absolutely necessarily" need an explicit dependency on the base package because rpm automatically adds soname dependencies from symlinks in -devel to the corresponding shared lib in the main/lib package. Ditto, many cases of other non-devel subpackages get automatic lib soname dependencies to the main/lib package.
I dont agree with this assertion. rpm may have implicit dependencies on base pkgs (from -devel ones) but these often aren't enough to ensure things "just work". This falls under the "except when ... necessary" section of the Explict_Requires guideline, imo.
-- Rex
On Wednesday 02 September 2009, Rex Dieter wrote:
rpm may have implicit dependencies on base pkgs (from -devel ones) but these often aren't enough to ensure things "just work". This falls under the "except when ... necessary" section of the Explict_Requires guideline, imo.
That's fine, I don't have that strong opinions on it.
But Explicit Requires also says "When explicit library Requires are necessary, there should be a spec file comment justifying it." So in other words, libfoo-devel's explicit dependency on libfoo would need such a comment. I don't think that's the intent. This could be improved by saying
"When explicit library Requires are necessary, there should be a spec file comment justifying it, except in cases that fall under the Requiring Base Package guideline."
Ville Skyttä wrote:
On Wednesday 02 September 2009, Rex Dieter wrote:
rpm may have implicit dependencies on base pkgs (from -devel ones) but these often aren't enough to ensure things "just work". This falls under the "except when ... necessary" section of the Explict_Requires guideline, imo.
That's fine, I don't have that strong opinions on it.
But Explicit Requires also says "When explicit library Requires are necessary, there should be a spec file comment justifying it." So in other words, libfoo-devel's explicit dependency on libfoo would need such a comment. I don't think that's the intent. This could be improved by saying
"When explicit library Requires are necessary, there should be a spec file comment justifying it, except in cases that fall under the Requiring Base Package guideline."
Shrug, that should go without saying, imo. Has there been confusion?
-- Rex
On Thursday 03 September 2009, Rex Dieter wrote:
Ville Skyttä wrote:
On Wednesday 02 September 2009, Rex Dieter wrote:
rpm may have implicit dependencies on base pkgs (from -devel ones) but these often aren't enough to ensure things "just work". This falls under the "except when ... necessary" section of the Explict_Requires guideline, imo.
That's fine, I don't have that strong opinions on it.
But Explicit Requires also says "When explicit library Requires are necessary, there should be a spec file comment justifying it." So in other words, libfoo-devel's explicit dependency on libfoo would need such a comment. I don't think that's the intent. This could be improved by saying
"When explicit library Requires are necessary, there should be a spec file comment justifying it, except in cases that fall under the Requiring Base Package guideline."
Shrug, that should go without saying, imo. Has there been confusion?
I find the two guidelines' wording to be at least partially in conflict, and cross referencing like in above would clarify things. I'm an old fart here so I know how to interpret them, but I'd be surprised if it didn't confuse newcomers.
packaging@lists.fedoraproject.org