diff options
authorMichał Górny <>2020-01-08 12:20:11 +0100
committerMichał Górny <>2020-01-08 12:20:11 +0100
commita3c415c2ec65f0e5ab2b3cfc62ccd8a0cf42fdc1 (patch)
parentMore on slots and subslots (diff)
dependencies: revbumps
Signed-off-by: Michał Górny <>
1 files changed, 41 insertions, 0 deletions
diff --git a/dependencies.rst b/dependencies.rst
index 69dd4f5..ff6756f 100644
--- a/dependencies.rst
+++ b/dependencies.rst
@@ -97,5 +97,46 @@ Opponents claim that the future use of subslots is not 100% predictable.
They point out the case of Qt packages as an example.
+.. index::
+ single: dependency; dynamic
+ pair: dependency; revision bump
+Revision bumps on runtime dependency changes
+:Source: Council
+:Reported: no
+It must not be assumed that changes to package's dependencies will
+be implicitly propagated to users who have installed the package
+already. Whenever the change needs to be propagated (e.g. to prevent
+a missing runtime dependency from being cleaned), the package revision
+must be increased.
+This does not apply to build-time dependencies.
+*Rationale*: developers were historically relying on Portage's behavior
+called *dynamic dependencies* which caused Portage to implicitly use
+dependencies specified in matching ebuilds for installed packages. This
+is non-portable and unreliable. Users using different package managers,
+disabling the feature or simply missing the timeframe during which
+the old ebuild version existed had experienced dependency graph breakage
+and other problems due to it.
+The policy requires developers to explicitly account for that
+possibility. Revision bumps ensure that users who installed the package
+from the previous ebuild version rebuild it and get the updated
+dependencies as a result.
+.. Note::
+ The dynamic dependency usage problem has a flip side. You can't rely
+ on in-place dependency changes *not* being propagated either. For
+ example, if you notice that a package linked to libfoo unnecessarily,
+ and decide to remove the dependency and code responsible for linking
+ to it in place, Portage may apply the former immediately even
+ if the package installed by the user still links to libfoo.
.. _GLEP 62:
.. _Paludis: