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@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure