digraph pipeline { rankdir="LR"; PRi[label="PackageRef initial",shape=box]; Mi[label="PackageMetadata initial",shape=box]; repo[label="git repo"]; GRF[label="GitRepoFetcher",shape=box]; sd[label="source dir"]; AV[label="AnyVer",shape=box]; bsR[label="Build System outputting raw binaries"]; bsP[label="Build System outputting packages"]; bd[label="A dir with binaries"]; PIF[label="PackageInstalledFiles",shape=box]; tsps[label="TearingSpec",shape=box3d]; NRs[label="NamingRule",shape=box3d]; Ss[label="Splitter",shape=box3d]; Tr[label="tearing and assigning each package its role"]; Ps[label="PackagingSpec",shape=box3d]; D[label="Distro",shape=box]; pMa[label="PackageMetadata augmented",shape=box]; P[label="Package",shape=box3d]; BP[label="BuiltPackage",shape=box3d]; R[label="Repo",shape=box]; res[label="resulting dir that may be exposed to the web as a repo"]; repo -> GRF -> {sd, AV}; sd -> {bsR,bsP}; bsR -> bd -> PIF; NRs -> Ss [dir=none,color = "black:black"]; Ss; D -> NRs; {PIF, Ss, PRi} -> Tr -> tsps; {tsps, NRs} -> Ps; Ps -> "detecting dependencies" -> pMa; AV -> pMa; Mi -> pMa; {pMa} -> P -> "package build tool" -> BP; bsP -> BP; BP -> R -> res; }