Hi everyone,

On Thu, 2021-09-16 at 15:17 -0400, Ben Cotton wrote:
> https://fedoraproject.org/wiki/Changes/ExcludeFromWeakAutodetect
> 
> 
> == Summary ==
> exclude_from_weak_autodetect enables autodetection of unmet weak
> dependencies (Recommends or Supplements) of installed packages and
> blocks installation of packages satisfying already unmet dependencies.
> In other words: When you don't have the recommended package installed,
> it won't be automatically installed with future upgrades of the
> recommending package.

I am not sure if this was intended, but this change has broken rich
weak dependencies when both packages are not installed as part of the
same transaction.

In my yt-dlp package's specfile[1], I have three subpackages for shell
completions: `yt-dlp-bash-completion`, `yt-dlp-zsh-completion`, and
`yt-dlp-fish-completion. Here is the `bash-completion` block:

``` spec
%package bash-completion
Summary:        Bash completion for %{name}
Requires:       %{name} = %{version}
Requires:       bash-completion
Supplements:    (%{name} and bash-completion)
BuildArch:      noarch
```

The intended effect is for the shell completions to be installed at the
time `yt-dlp` itself is installed if the respective shell package
(`bash-completion`, `zsh` or `fish`) is already present while still
allowing users to opt out. However, now this does not work; dnf will
only install the completions if both `yt-dlp` and the shell package are
installed as part of the same transaction. I can confirm that this is
caused by this change, because adding `--
setopt=exclude_from_weak_autodetect=false` fixes the problem. Replacing
`Supplements` with forward facing boolean `Requires` did not work
either.

``` spec
Recommends:     (%{name}-bash-completion if bash-completion)
Recommends:     (%{name}-zsh-completion if zsh)
Recommends:     (%{name}-fish-completion if fish)
```

While I agree that {rich,} weak dependencies should not be reinstalled
as part of updates, I do believe that they should be installed if one
of the packages is being installed for the first time.

I also think we should consider implementing better guidelines for
shell completions in Fedora. I believe that shell completions should be
split into subpackages and that these subpackages should depend on the
shells themselves or a `-filesystem` package that actually own the
directories. Right now, directory ownership is kind of a mess. At least
on my system, there are several packages that own /usr/share/bash-
completion, /usr/share/zsh/vendor-completions, /usr/share/zsh/site-
functions, and /usr/share/fish/vendor_completions.d/. We can also use
this oppurtunity to create macros for each of these directories.

Management of shell completion packages was discussed further in my
package review ticket [2].

I am relatively new to Fedora, so please correct me if I got anything
wrong.

Thanks,
Maxwell

[1]: https://src.fedoraproject.org/rpms/yt-dlp/blob/rawhide/f/yt-dlp.spec
[2]: https://bugzilla.redhat.com/show_bug.cgi?id=2012522

-- 
Maxwell G (@gotmax23)
Pronouns: He/Him/His
PGP Key Fingerprint: f57c76e5a238fe0a628e2ecef79e4e25e8c661f8
PGP Keyserver: hkp://keyserver.ubuntu.com
gotmax@e.email



Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
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