Known circular dependencies (Porting)
This is a list of circular dependencies found in ABS while porting packages to another architecture (or for that matter, rebuilding them). A circular dependency is a cycle in the dependency tree, where a package needs to be built before one of its dependencies, leading to an unsolvable build order.
You can find these cycles by using a build script like dagpkg.
The solution is to find which dependency is a hard dependency, that is, if one of the packages will break because it'll end up linked to a library that's going to be upgraded later, or it's a logic dependency when the library versions don't matter. You ignore the logic dependencies and split the build cycle in fewer steps.
1 Toolchain
When you build gcc, it'll say it needs to build binutils, then glibc, then gcc again. The way to solve this is to ignore the gcc build and start with binutils, then build gcc by itself. In dagpkg
this is done by:
export I=gcc pushd core/binutils dagpkg pushd ../core/gcc unset I dagpkg
2 dbus <-> systemd
Build dbus first.
3 systemd <-> cryptsetup
Build systemd first.
4 libsasl <-> openldap
libsasl depends on libldap, which is contained in openldap that requires libsasl. build libsasl ignoring libldap