Skip to content
white238 edited this page Jan 15, 2013 · 25 revisions

MixDown

MixDown is a meta-build tool designed to simplify the ever growing complexities of build dependencies between third-party libraries. MixDown orchestrates builds using multiple build tools and manages the build steps of each individual package to end-use form.

MixDown also manages the dependencies between packages. By analyzing the dependency graph, MixDown can determine the proper ordering of packages and identify which packages can be configured and built concurrently.

The following graph shows the dependencies between packages required to build the Subversion source code repository system. This shows that apr-util must be built first. Then apr, neon, and sqlite can be built in parallel. Followed last by Subversion itself.

![Subversion Dependancy Graph](https://github.com/tepperly/MixDown/blob/gh-pages/documents/subversionGraph.jpg?raw=true)

To improve the ease of adoption for MixDown, we developed a system to analyze a collection of archives (.zip or .tar files) and/or URIs to automatically generate an initial MixDown project file. Our aim was to develop heuristics that would get most of the MixDown project file correct for projects that follow common practices; it is impossible to develop something that could correctly handle packages that are designed contrary to common practice. The MixDown file may require some hand editing to correct rules or dependencies.

##Features

  • Manages configuration and build for multiple third-party libraries
  • Manages build dependencies between third-party libraries to ensure builds are correctly ordered
  • Correctly configures third-party libraries for serial, parallel
  • Supports multiple standard build tools
    • AutoConf
    • Make
    • GNUMake
    • LibTool
    • Cmake
  • Supports multiple project retrieval options
    • Tar files
    • Zip files
    • Local/Network paths
    • HTTP
    • FTP
    • SVN
    • Git
    • Hg (Mercurial)
  • Project level defines utilizing Override Groups
  • Smart Defines that support command line changes in both Autotools and CMake.
  • Restart build in correct spot after failure or when build commands change.
  • Create Build Steps with Custom Python Functions

How to use MixDown

MixDown Documentation