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:
on irc : #minitage @ irc.freenode.net
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 ~/minitageactivate it:
source ~/minitage/bin/activateKEEP 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.coreSync 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/activateGet 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.recipeOr update them:
hg pull -u -R ~/repos/minitage/minitage.core hg pull -u -R ~/repos/minitage/minitage.recipeInstall/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/activateSync:
minimerge -s
Changes
0.4.8
Maintenance release
testruner
buildoutified
some refactor and code cleanings
logging is now better handled and your minimerge sessions will be as quiet as possible.
0.4.5
Bug in fetchers (not critical …)
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
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.