Skip to main content

A meta package-manager to install projects on UNIX Systemes.

Project description

Short introduction

This documentation abstract is far from complete and can be out dated.

Please refer to: http://www.minitage.org/doc/rst for further information.

What is minitage

Minitage is a meta package manager. It’s goal is to integrate build systems or other package manager together to make them install in a ‘well known’ layout. In other terms, it install its stuff in ‘prefix’.

Moreover, this tool will make you forget compilation and other crazy stuff that put your mind away from your real project needs.

What will it allow to

  • Deploy a project from start to end.

  • 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)

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

  • Control all the build process.

  • Fix buildout leaks :) or at least try to.

    • Upgrades can be painful to predict

    • Offline mode is problematic

    • We can play with dependencies tree more easily

What will it never do

  • The coffee

  • Windows implementation seems to be difficult. Some effort may be done to try but it’s not the priority

History

Project was initialized at Makina Corpus (http://www.makina-corpus.com), the firm where i am actually working.

We have projects that need a lot of dependencies. so, in the one hand, it was hard to deploy them in all of eterogeneous production servers. And on the other hand, setup developers box cost us a lot of time.

So we started to use sh, inmaintenable!

We went on builout, but monolothic/extended buildout were hard to maintain too and their impacts on already installed stuff were difficult to predict (oups it has done rm -rf parts !).

So, i started to think to a tool that allow us to use multiple buildouts and let us deal with dependencies. Minitage was born.

Up to 0.3, the implementation was in bash, that was well working but because of the language, it was quite limited/restrictive. We got also problems inherent to bash. Errors handling is painfull. It is all but user friendly.

With the 0.4, i had in mind to rewrite it in python and to integrate a lot of QA in the build process. A lot of things were added too like metadata in minibuilds, execution logging. I have done also a total migration to mercurial which allow more flexibility and yes, mercurial is in python.

Credits

  • For the moment, i (kiorky) am the only developer of minitage.

  • It is licensed under the GPL-2 license.

  • You can have more information:

Installation instructions

Python

You need a python with setuptools, zlib, bz2 and ssl support.

Try that in your interpretery:

>>> import tarfile
>>> import zipfile
>>> import bz2
>>> import _ssl
>>> import zlib
>>> import setuptools
>>>

If you do not have that, you can give a try to my pyboostrapper that bootstrap a python somewhere:

wget http://hg.minitage.org/hg/minitage/shell/raw-file/tip/PyBootstrapper.sh
chmod +x PyBootstrapper.sh
./PyBootstrapper.sh /path/to/pythonPrefix

Using virtualenv

You ‘d better to use virtualenv , minitage fits well with it.

virtualenv is a tool that allow you to create isolated Python environments.

Here is how to set up an environment with it:

  • Install virtualenv:

    easy_install virtualenv #(maybe use sudo ;))
  • Install minitage prefix:

    virtualenv --no-site-packages  ~/minitage
  • activate it:

    source ~/minitage/bin/activate

KEEP IN MIND THAT YOU MUST ACTIVATE VIRTUALENV AT ANY TIME YOU USE IT.

Installing minitage

A stable version

Minitage is a classical python egg, you can get it throught easy_install.

To install minitage in a stable version, follow those steps:

  • Install minitage:

    easy_install -U mercurial minitage.core
  • Sync its packages (all its minilays in minitage terminology).:

    minimerge -s

A develop version:

If you want to be bleeding edge and not lhave a 3 years old debianised minitage, you can give a try to the egg in developement mode?

If you need to, fire your virtualenv:

source ~/minitage/bin/activate

Get the sources:

mkdir -p ~/repos/minitage
cd ~/repos/minitage
hg clone http://hg.minitage.org/hg/minitage/eggs/minitage.core
hg clone http://hg.minitage.org/hg/minitage/eggs/minitage.recipe

Or update them:

hg pull -u -R ~/repos/minitage/minitage.core
hg pull -u -R ~/repos/minitage/minitage.recipe

Install/Reinstall minitage in develop mode:

cd ~/repos/minitage/minitage.core
python setup.py develop
cd ~/repos/minitage/minitage.recipe
python setup.py develop

Syncing packages

To sync all your minilays

If you need to, fire your virtualenv:

source ~/minitage/bin/activate

Sync:

minimerge -s

Changes

0.4.4

  • Add an option (-f)
    • when set : fetch all before build

    • when not set : fetch and build each package one after another

0.4.2

  • Remove the category check

0.4.2

  • Remove the backtrace from the launcher when minimerge fails

0.4.1

  • Release version

0.4_alpha12

  • Fix scm type validator

0.4_alpha11

  • bzr DVCS integration

0.4_alpha10

  • Add support for variables in minibuilds setted in minitage configuration file. Use $name in minibuilds and set it in the [minitage.variables] section.

0.4_alpha9

  • reinforce buildout code

0.4_alpha8

  • restore previous version scheme

a0.4_alpha5

  • add mercurial explicit dependency

0.4_alpha4

  • remove old minilay

0.4_alpha1

This is a pre release, minitage is working. But it is not empty from bugs. Feel free to give your feedback :)

  • Minimerge totally rewritten in python

  • Support for conditionnal dependencies toward python version

  • Support for eggs in addition of site-packages added to the PYTHONPATH

  • Support for conditionnal (OS) dependencies

  • Lot of improvments on error handling

  • Logging mode

  • Configuration via a file is now possible

up to 0.3

  • not public, nothing to see there.

Project details


Release history Release notifications | RSS feed

This version

0.4.4

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minitage.core-0.4.4.zip (83.3 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page