[Rpm-maint] Pruning self-dependencies?
Mark Hatle
mark.hatle at windriver.com
Mon Jul 9 16:00:12 UTC 2007
You are forgetting that you can query per file dependencies in modern
RPM produced packages. If you prune self-provided dependencies you lose
this information.
--filerequires and --fileprovides. Invaluable in my experience.
There just is no reason to prune self-fulfilled dependencies.
--Mark
Panu Matilainen wrote:
> On Mon, 2 Jul 2007, Ville Skyttä wrote:
>
>> Hello,
>>
>> Is there a good reason why packages "export" dependencies on things
>> that they
>> Provide/satisfy themselves? For example, if a package ships/provides
>> perl(Foo) and has some other things that also cause a dependency on
>> perl(Foo), wouldn't it be a good idea to just prune the dependency at
>> build
>> time and not include it in the package's dependencies? Pruning it would
>> result in less dependencies in rpmdb, repository metadata etc etc.
>
> I've been thinking about this like, um, forever - why on earth do
> packages depend on themselves (through various means)?
>
>> The only case where I can see potential use for a self-dependency is that
>> let's say my package foo needs something that is provided by a "virtual"
>> package/Provides bar. foo also includes an implementation of bar, but
>> a very
>> basic one, and there are other packages out there that include
>> superior/alternative implementations of bar and Provide it. Now, I
>> have "Requires: bar" in foo, and when installing foo, depsolvers could
>> present me a list of everything satisfying bar (including foo itself) and
>> give me an option to choose one of them. I think this is a pretty
>> hypothetical case; are the depsolvers out there that would implement
>> something like this? apt at least used to list alternatives for a
>> Provides,
>> but what if the set of packages going to be installed anyway already
>> satisfy
>> it?
>
> No manually added dependencies should be pruned to avoid killing virtual
> provides. Also rpmlib injected config(foo) dependencies need to be left
> untouched as the config can be provided (in theory) by something else.
> But for automatically extracted soname dependencies I think it would
> make perfect sense to prune out self-requires.
>
> Like Bill mentioned, this would cure a whole class of problematic cases,
> and it would mean less junk for depsolvers to process, and less data to
> transfer over the wires.
>
> I've a feeling there might be some corner cases in package splits, but
> haven't been able to come up with any real case, so it's probably just a
> false hunch.
>
>> As for how many dependencies this would eliminate, running some quick
>> queries
>> [0] against the Fedora primary sqlite metadata database told me it'd
>> be about
>> 7.3% of all dependencies (9246/126066). This is inaccurate (no
>> versions in
>> dependencies taken into account etc) but I think it should be the correct
>> order of magnitude.
>>
>> Anyway, I'd guess it'd be fairly easy to implement the pruning in
>> rpmbuild at
>> build time - just first gather the Provides, then Requires, then drop all
>> Requires that are satisfied by those Provides.
>>
>> Worth it? Did I miss something?
>
> 7.3% savings (and even if that's slightly less in reality) would be well
> worth it, not to mention fixing the firefox etc cases IMO.
>
> - Panu -
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Rpm-maint mailing list
> Rpm-maint at lists.rpm.org
> https://lists.rpm.org/mailman/listinfo/rpm-maint
More information about the Rpm-maint
mailing list