# AC.py - Python Autoconf #

## Introduction #

AC.py is a Python implementation of the popular autoconf tool used in 
ascertaining a sane, stable environment before attempting to build large
projects. The purpose of AC.py is to provide a simpler way of performing
these tests, along with added functionality to resolve environmental issues
at the same time. 

### License #

AC.py is licensed with [GPLv3](http://www.gnu.org). This is free software that
may be used by anyone for any purposes and distributed freely, and comes with
no warranty. 

### Author Info. #
Originally authored by 
[Tom A. Thorogood](mailto:tom@tomthorogood.com). 

AC.py's central repository is located at
[github.com/tomthorogood/ac.py](http://www.github.com/tomthorogood/ac.py).

## Installation #

AC.py can be installed using

    pip install ac

or

    easy_install ac

Additionally, you can clone and install yourself using:

    git clone git://github.com/tomthorogood/AC.py
    cd AC.py
    python setup.py install

You do not need to install ac.py in order to use it. It can be cloned and used
as any standard Python module.

## Usage #

AC.py aims to be simpler than than traditional autoconf, and is highly 
customizable. The following tutorial will allow you to:

+ Test for libraries and executables
+ Set up distribution-specific alternatives for failed tests
+ Use test results to populate fields in a manifest Makefile.

## The Shell Environment#

AC.py will always attempt to test the shell environment first. The default
shell can be changed using the `--shell` flag. When running any shell scripts
generated by AC.py or written by you, the hashbang interpreter directive will
always be at the head of each script (#!/bin/sh), using the results from the
shell environment test.

If you do not want your users to have to use the shell flag, but do want to
require a specific shell environment, you can set the default using

    # ac.set_shell
    ac.set_shell("sh")
    ac.set_shell("bash")
    ac.set_shell("tcsh")

However, it is highgly recommended that you use bash commands and scripts that
will work across all platforms and shells. 

## Required Successes #

Tests marked as required (or called with a 'require' function) will halt
the configuration script if the test is not a success and there is no 
fail alternative provided.

## A Generic Test #

You can use any Python scripting to come up with a true/false result and
pass the result into the test framework using

    # ac.test("test_name", result, [required=True|False])

