Disallowing cyclic dependencies seems excessive. The point of this (which I'm still not sold on) is to compute the order of packages so that if they have any compiled parts that need to be compiled in order, that will work ok. Not allowing two packages that have no such binary parts not to have a cyclic dependency seems unwarranted. Also not that the notion of cyclic dependency is a bit weird in this context since you can have versions of A that do and don't depend on B and versions of B that do and don't depend on A – this might happen when we decide to change the direction of a dependency, as has recently been discussed for the Stats and Distributions packages, for example. It's not immediately obvious what the definition of a dependency cycle should be in such situations, so it's not even entirely clear what we want to disallow, other than that we don't want this matrix to have cycles.