On Thu, Feb 10, 2022 at 4:01 PM Zbigniew Jędrzejewski-Szmek
<zbys...@in.waw.pl> wrote:
>
> On Thu, Feb 10, 2022 at 03:54:28PM +0100, Petr Pisar wrote:
> > V Thu, Feb 10, 2022 at 03:19:18PM +0100, Zbigniew Jędrzejewski-Szmek 
> > napsal(a):
> > > can deal with that. But if they having conflicting files with
> > > declaring Conflicts, this is only detected after packages have been
> > > downloaded and results in a failed transaction and is generally bad UX.
> >
> > s/with/without/ ?
>
> Oops, yes.
>
> > > Recently I was installing a bunch of packages for the the "package notes"
> > > tests, and I was surprised how many such packages we have:
> > >
> > > Error: Transaction test error:
> > >   file /usr/bin/arping from install of 
> > > golang-github-j-keck-arping-1.0.2-2.fc36.x86_64 conflicts with file from 
> > > package iputils-20211215-2.fc36.x86_64
> > >   file /usr/bin/cbc from install of 
> > > libcouchbase-tools-3.2.2-1.fc36.x86_64 conflicts with file from package 
> > > coin-or-Cbc-2.10.5-8.fc36.x86_64
> > [...]
> > > Such conflicts lead to subpar user experience… Should we make an effort 
> > > to clean this
> > > up?
> >
> > We could add a new implicit CI test to check for the conflicting files. A 
> > test
> > similar to fedora-ci.koji-build.installability.functional. That would inform
> > packagers that their new build is missing the explicit Conflicts.
>
> It's not trivial to do right now, because you actually need to
> download all the packages to see the issue. (Though file names are
> available in the metadata files, e.g. dnf install /some/path works,
> so I guess it could be done without downloading packages theoretically.)
>
> > > Add Conflicts between those packages?
> >
> > Yes. It's mandated by the guidelines
> > <https://docs.fedoraproject.org/en-US/packaging-guidelines/Conflicts/#_implicit_conflicts>.
>
> Yeah, but is is worth the effort? I could open a bunch of bugs, but
> I don't want to do this if nobody wants to look at them anyway.

You might be able to save yourself from downloading and installing all
packages manually, by querying repository metadata for file providers:

for package in repository:
    for file in package:
        for provider in whatprovides(file):
            if provider != package:
                print "Path {file} is provided by both {package} and
{provider}."

Though you'd probably get a bunch of false positives, for things like
shared directory ownership. Not sure if you could filter that out
somehow.

Fabio
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to