Mercurial > parpg-core
view wscript @ 20:07ff8cf8a0f1
Fixed WAF install paths issue on Windows.
* Reorganized the waf_paths.py WAF tool so that install paths are correctly set on Windows.
* Added ordereddict.py for use by the waf_paths.py WAF tool on python versions less than 2.7.
* Renamed the waf script to waf.py so that Windows users get the benefits of the .py file extension.
* Fixed a bug where the FifePath entry in parpg.cfg was not getting set to the default python site-package path.
* Fixed a bug in the Windows parpg.bat launcher where quotation marks (") were screwing up the PYTHONPATH variable.
author | M. George Hansen <technopolitica@gmail.com> |
---|---|
date | Wed, 15 Jun 2011 13:21:25 -1000 |
parents | 2e2d6d9009a3 |
children | feceb6130570 |
line wrap: on
line source
#!/usr/bin/env python # encoding: utf-8 import os import platform 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) if not cnf.options.fifepath: cnf.env['FIFEPATH'] = os.path.abspath( os.path.expanduser(cnf.options.fifepath) ) else: cnf.env['FIFEPATH'] = cnf.env['PYTHONDIR'] def build(bld): subst_vars = _get_subst_vars(bld) if platform.system() == 'Windows': launcher_template = bld.path.find_node('bin/parpg.bat.in') launcher = bld.path.find_or_declare('parpg.bat') else: launcher_template = bld.path.find_node('bin/parpg.sh.in') launcher = bld.path.find_or_declare('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=bld.path.find_node('parpg.cfg.in'), target=bld.path.find_or_declare('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, cwd=bld.path.find_node('data'), 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