You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Let's consider this example. Element A.bst build-depends on two unrelated elements B.bst and C.bst.
Now if I add a runtime-depends on C.bst to B.bst, the cache keys don't change. B's cache key doesn't take into account runtime dependencies, and A's cache key only takes into account the list of build dependencies, which hasn't changed (it's still B and C, plus whatever runtime dependencies they had).
The issue here is that A does have access to the dependency graph, not only the list of dependencies. So self.dependencies(recurse=False) would return B and C, and calling dependencies() on B will reveal the new dependency.
Most plugins don't go looking into the dependency graph, but for those that do this leads to the same cache key (and the element not getting rebuilt) even though the result would be different.
The text was updated successfully, but these errors were encountered:
So you are saying that the plugins experience can change, with the same cache key.
This is an interesting corner case, presumably if B were to instead add a runtime dependency on unrelated D, then the cache key of A would change correct ?
Let's consider this example. Element A.bst build-depends on two unrelated elements B.bst and C.bst.
Now if I add a runtime-depends on C.bst to B.bst, the cache keys don't change. B's cache key doesn't take into account runtime dependencies, and A's cache key only takes into account the list of build dependencies, which hasn't changed (it's still B and C, plus whatever runtime dependencies they had).
The issue here is that A does have access to the dependency graph, not only the list of dependencies. So
self.dependencies(recurse=False)
would return B and C, and callingdependencies()
on B will reveal the new dependency.Most plugins don't go looking into the dependency graph, but for those that do this leads to the same cache key (and the element not getting rebuilt) even though the result would be different.
The text was updated successfully, but these errors were encountered: