Known circular dependencies (Porting) - ParabolaWiki

# 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.

## 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

## dbus <-> systemd

Build dbus first.

## systemd <-> cryptsetup

Build systemd first.

## libsasl <-> openldap

libsasl depends on libldap, which is contained in openldap that requires libsasl. build libsasl ignoring libldap

Categories:

- Porting
- Mips64el
- MIPS
- Hacking