view wscript @ 18:2e2d6d9009a3

Added a --fifepath option to the WAF build script. * Use the '--fifepath=<path/to/fife>' option to override the default search path and directly import the FIFE Python module from <path/to/fife>. * Modified the parpg.main module to support the new --fifepath option and ensure that the FIFE Python module pointed to by the --fifepath option is imported, regardless of whether multiple FIFE modules are already in the default search path.
author M. George Hansen <technopolitica@gmail.com>
date Fri, 10 Jun 2011 11:29:38 -1000
parents 927f2cf75357
children 07ff8cf8a0f1
line wrap: on
line source

#!/usr/bin/env python
# encoding: utf-8
import sys
import os

APPNAME = 'parpg'
VERSION = '0.2.0'

def options(opt):
    opt.load('waf_paths python')
    
    ext_dep = opt.add_option_group(
        'External dependencies',
        '',
    )
    ext_dep.add_option(
        '--fifepath',
        help='Path to where the fife Python package is located',
        default='',
        dest='fifepath',
    )

def configure(cnf):
    cnf.load('waf_paths python')
    if sys.platform == 'Windows':
        min_python_version = (2, 7)
    else:
        min_python_version = (2, 6)
    cnf.check_python_version(min_python_version)
    
    cnf.env['FIFEPATH'] = \
        os.path.abspath(os.path.expanduser(cnf.options.fifepath)) or \
        cnf.env['PYTHONDIR']

def build(bld):
    subst_vars = _get_subst_vars(bld)
    
    if sys.platform == 'Windows':
        launcher_template = 'bin/parpg.bat.in'
        launcher = 'parpg.bat'
    else:
        launcher_template = 'bin/parpg.sh.in'
        launcher = 'parpg'
    args = dict(
        features='subst',
        source=launcher_template,
        target=launcher,
        install_path='${BINDIR}',
        chmod=0755,
    )
    args.update(subst_vars)
    bld(**args)
    
    bld(
        features='py',
        source=bld.path.ant_glob('src/parpg/**/*.py', dir=True),
        install_from='src',
    )
    
    args = dict(
        features='subst',
        source='parpg.cfg.in',
        target='parpg.cfg',
        install_path='${SYSCONFDIR}',
        chmod=0644,
    )
    args.update(subst_vars)
    bld(**args)
    
    bld.install_files(
        files=bld.path.find_node('data').ant_glob('**/*'),
        dest='${DATADIR}',
        relative_trick=True,
        chmod=0644,
    )

def _get_subst_vars(cnf):
    # Set up substitution variables for the launcher and configuration files.
    subst_vars = {}
    install_path_names = cnf.env['INSTALL_PATHS']
    for path_name in install_path_names + ['PYTHONDIR']:
        subst_vars[path_name] = cnf.env[path_name]
    # If the destdir option is used we'll have to manually prefix any path
    # variables with it since env doesn't get updated.
    # NOTE M. George Hansen 2011-06-09: This should probably be done
    #     automatically. Maybe we should patch WAF and contribute it the WAF
    #     project.
    destdir = cnf.options.destdir
    if destdir:
        for key, path in subst_vars.items():
            # If this is an absolute path, prefix it with the destdir.
            if os.path.isabs(path):
                subst_vars[key] = os.path.join(
                    destdir,
                    os.path.splitdrive(path)[1].lstrip('/\\'),
                )
    subst_vars['FIFEPATH'] = cnf.env['FIFEPATH']
    return subst_vars