title: What tools do distro maintainers (i.e. Ubuntu, Fedora) use for build/dependency management?
body: <hr />
  <h1>Background</h1>
  <p>I'd like to, strictly for the sake of research and proof-of-concept, fork an existing Linux distro such as Ubuntu (or possibly Fedora). I have a small cluster of <code>vagrant</code> virtual machines, and I'd like to experiment with this to get a feel for how large (open source) projects handle builds and dependency management.</p>
  <hr />
  <h1>Details</h1>
  <p>While it's straightforward to pull their respective source trees, patches, etc.; one thing that eludes me is &quot;how do they build each and every package&quot;? In order to do something like a &quot;nightly build&quot;, it's to my understanding the distro maintainer needs to:</p>
  <ul>
  <li>Setup a build environment with the toolchains/compilers for all the supported platforms (i.e. <code>x86</code>, <code>x86_64</code>, <code>arm</code>, <code>armhf</code>, <code>aarch64</code>, <code>mips</code>, etc.).</li>
  <li>Pull the source tarballs/repos for each package.</li>
  <li>Deploy the headers for all &quot;library&quot; packages.</li>
  <li>Build and deploy the libraries (i.e. <code>.a</code> and <code>.so</code> files) for all &quot;library&quot; packages.</li>
  <li>Build and deploy the apps/binaries that (possibly) depend on the previously-built libraries.</li>
  <li>Package each library/app as it's own <code>deb</code>/<code>rpm</code>/tarball.</li>
  <li>Create an overall installer that encompasses all the packages.</li>
  </ul>
  <hr />
  <h1>Question</h1>
  <p>How do distro maintainers set this all up? Is there a common/standard framework used by distro maintainers, or do they all &quot;wrap their own solution&quot; in-house?</p>