1. Eric Gazoni
  2. hudsonenv

Overview

=========
HUDSONENV
=========

This library is used to run hudson tests on MS Windows based on
configuration files into a network-less virtual environment

Configuration files
===================
Each project has its configuration file which name is defined
by the INI_FILENAME constant::

    INI_FILENAME = 'hudson.json'

Once successfully parsed, a copy is put in the same directory
under the name defined in the CACHE_FILENAME constant::    

    CACHE_FILENAME = '.hudsoncache'

When the CACHE_FILENAME does not exist, the library will
re-parse the INI_FILENAME and force recreating the environment

System-wide Python installs
===========================
We use symbolic links (see http://en.wikipedia.org/wiki/Symbolic_link#Microsoft_Windows)
to link to system-wide installed Python libraries without 
breaking the no-site-packages rule.

The name of the executable used to build symbolic links is
defined by the JUNCTION_APP constant::

    JUNCTION_APP = "linkd"

By default it uses linkd that can be found at the following
location: http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17657

Directories
===========
Important files and directories for the library are stored
in the "home" of the current user. This "home" is picked from
a defined list of possibly defined environment variables and 
placed in the HOME_DIR variable.

If none is defined, then it defaults to the directory where the
library was installed (e.g. c:\python26\lib\site-packages\hudsonenv).

The variables it tries to pick are defined in the HOME_VARS constant::

    HOME_VARS = ('HUDSONENV', 'HOME', 'TEMP', 'TMP')

Based on the HOME_DIR variable, there are two important
folders for the library::
    
* VIRTUAL_ENV_DIR : defines the place where virtual environments
  are stored. It is calculated as HOME_DIR\.virtualenv.
  You need read-write permissions on this folder.

* PACKAGES_SOURCE : defines the place where to look when
  installing "file" dependencies. It is calculated as 
  VIRTUAL_ENV_DIR\_DIST_PACKAGES.
  You need (at least) read-only permissions on this folder.

Dependencies
============

Python
======
You will need Python installed on the computer and the "python"
executable directory added to your PATH environment variable
(usually c:\Python26\)

MinGW32
-------
Many Python libraries need a valid C/C++ compiler to be installed
on the computer to be installed/compile dependencies.

MinGW can be downloaded at the following location: 
http://sourceforge.net/projects/mingw/files/latest/download?source=files

During installation, be sure to include all possible compilers, 
especially GCC and G++, respectively for C and C++ compilation.

You will need to add gcc and g++ executables directory added
to your PATH environment variable (usually C:\MinGW32\bin).

Mercurial
---------
You will need Mercurial installed on the computer and the
"hg" executable directory added to your PATH environment variable
(usually c:\program files\mercurial).

Python Dependencies
-------------------
* virtualenv
* easy_install (a.k.a setuptools)
* pip (optional)

Installation
============
Once you have satisfied all the dependencies requirements, 
you can copy this folder (the one that contains this README) to
your PYTHONPATH, either by updating your PYTHONPATH variable,
either by moving the folder in c:\Python26\lib\site-packages.

Testing installation
====================
To test your installation, open a command line and type 
the following ::
    $ python
    >>> import hudsonenv.hudson
    >>> hudsonenv.hudson.run()
    
You should see an error message surrounded by exclamation marks.

If you have a traceback, then you didn't install the library 
properly.