About

Purpose

  • Minitage is a meta packages manager.
  • It’s goal is to integrate build systems / other package manager together to make them install in a ‘well known’ layout.
  • In other terms, it install its stuff in ‘prefix’ and it targets the total isolation from the host system.
  • Moreover, this tool will make you forget compilation and other crazy stuff that put your mind away from your real project needs.

Pre requisite knowledge

Variables used in this documentation

  • $project -> your project name
  • $bd -> buildout directory
  • $mt -> minitage root path
  • $url -> the url of your versioned project

Minitage

Buildout Limits

First of all, do not buy a gun before using buildout Buildout is not a magical tool and we just had quite a lot of drawbacks :

  • Today offline mode is problematic
  • If you change your python, take a coffee.
  • 1GB per project, it s too much.
  • Pypi is just the only one index
  • Buildout behaviour can be hard to predict even more if the configuration file is huge.

The Idea

  • The idea is to write a light and simple package manager from scratch which will allow us to integrate various build systems.
  • What about shell scripts, buildout or makefiles interact together to assemble all the parts of our project parts?
  • To allow this, the approach is to share a common ‘well known’ layout to install things in minitage.

Implementation goals

  • Write just small specialized buildouts.

  • Reuse with svn:externals or others (mercurial forest extension, package manager fetching methods)

  • Centralize and re-use dependencies among projects.

  • Use different ways to install, One tool for one thing, remember the Unix way.

  • Deploy a project from start to end.

  • Isolate all the needed boilerplate from the host system. All stuff in minitage is supposed to be independant from the host base system. Compiled stuff is interlinked as much as possible.

  • Reproduce the same environement everywhere (on UNIX platforms). It is known to work on:

    • Linux
    • MacOSX but at least OSX Leopard is required.
    • FreeBSD (not tested recently)