I looked various packages in the [core] repository to check if they specify their external shared libraries in provides=(). I opened several task on Flyspray , but it was turned out that still many packages don't specify them. It was turned out also that adding these libraries to provides=() can be easily automated in makepkg, so we don't actually need to add these entries manually. Allan already implemented it  for the next pacman release, but in an incompatible way, he changed the naming e.g. from 'libglib-2.0.so=0-64' to 'lib:libglib-2.0.so.0'. I think we should decide if we want to keep the current naming schema, or deprecate it and switch to the new one, and then make a migration plan. Switching to the new naming schema will be more complicated.
== Keep the current naming schema ==
In this case we can simply add and enable a new option for makepkg to add shared libraries to provides=() automatically during build, and then mass remove the existing *.so entries from provides=() in every packages. Dependencies are no need to be updated, since we keep the current naming schema.
== Use the new naming schema ==
In this case we have to keep the existing *.so entries in provides=() for a while, because removing them would cause missing dependencies in other packages.
1. We have to add and enable a new option for makepkg to add shared libraries to provides=() automatically, following the new naming schema.
2. We also have to update each package manually to replace *.so entries in depends=(), and adapt changes to automate library dependencies (see below).
3. Once all dependent packages are updated, we can remove the *.so entries from provides=(), and rely on the new naming schema entirely.
== Automate library dependencies ==
Allan's implementation will also add library dependencies to packages automatically. I think we should enable adding libraries to provides=(), but disable adding libraries to depends=() by default, because the latter needs manual changes in each PKGBUILD. It does not support to mark dependencies optional yet, but I sent a merge request  to make it possible via a new optbinaries=() entry in PKGBUILD.
This feature is completely optional if we keep the existing naming schema. But if the new naming schema adopted, there is no easy way to avoid it, because the new name will contain the major version of the library, so manually specified library entries in depends=() would need to be updated manually on each soname bump.
What are your opinions? Which naming schema we should follow? Is there any other issues?
 https://bugs.archlinux.org/index.php?string=Add+libraries+to+provides%3D%28%...  https://email@example.com/thr...  https://gitlab.archlinux.org/pacman/pacman/-/merge_requests/58
-- György Balló Package Maintainer / Trusted User