diff -r 2e2989c3072c -r 125fc6df230d virtualenv/setup/create_python_env.py --- a/virtualenv/setup/create_python_env.py Wed Mar 23 17:34:36 2011 +0100 +++ b/virtualenv/setup/create_python_env.py Fri Apr 08 16:33:01 2011 +0200 @@ -29,137 +29,17 @@ # - 4Suite-xml - easy_install ftp://ftp.4suite.org/pub/4Suite/4Suite-XML-1.0.2.tar.bz2 # - pylucene - script -src_base = os.path.join(here,"res","src").replace("\\","/") -lib_path = os.path.abspath(os.path.join(here,"res","lib")).replace("\\","/") - -EXTRA_TEXT = "URLS = { \n" - -EXTRA_TEXT += " 'DISTRIBUTE' : { 'setup': 'distribute', 'url': 'http://pypi.python.org/packages/source/d/distribute/distribute-0.6.14.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"distribute-0.6.14.tar.gz")).replace("\\","/")+"'},\n" -EXTRA_TEXT += " 'MERCURIAL' : { 'setup': 'distribute', 'url': 'http://pypi.python.org/packages/source/d/mercurial/mercurial-1.7.5.tar.gz', 'local': '"+ os.path.abspath(os.path.join(src_base,"mercurial-1.7.5.tar.gz")).replace("\\","/")+"'},\n" -EXTRA_TEXT += "}\n" - -EXTRA_TEXT += "import sys\n" -EXTRA_TEXT += "sys.path.append('"+lib_path+"')\n" - -EXTRA_TEXT += """ - -import shutil -import tarfile -import zipfile -import urllib -import platform - - -INDEX_URL = 'http://pypi.python.org/simple/' - - -def extend_parser(parser): - parser.add_option( - '--index-url', - metavar='INDEX_URL', - dest='index_url', - default='', - help='base URL of Python Package Index') - parser.add_option( - '--type-install', - metavar='type_install', - dest='type_install', - default='local', - help='type install : local, url, setup') - parser.add_option( - '--ignore-packages', - metavar='ignore_packages', - dest='ignore_packages', - default=None, - help='list of comma separated keys for package to ignore') - - - -def adjust_options(options, args): - pass +src_base = os.path.abspath(os.path.join(here,"..","res","src")).replace("\\","/") +lib_path = os.path.abspath(os.path.join(here,"..","res","lib")).replace("\\","/") +patch_path = os.path.abspath(os.path.join(here,"res","patch")).replace("\\","/") -def after_install(options, home_dir): - home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir) - base_dir = os.path.dirname(home_dir) - src_dir = join(home_dir, 'src') - tmp_dir = join(home_dir, 'tmp') - ensure_dir(src_dir) - ensure_dir(tmp_dir) - system_str = platform.system() - - res_source_key = options.type_install - - ignore_packages = [] - - if options.ignore_packages : - ignore_packages = options.ignore_packages.split(",") - - logger.indent += 2 - try: - NORMAL_INSTALL = [ #(key,method, option_str, extra_env) - ('DISTRIBUTE', 'pip', None, None), - ('MERCURIAL', 'pip', None, None), - ] - - - for key, method, option_str, extra_env in NORMAL_INSTALL: - if key not in ignore_packages: - normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir) - - logger.notify("Clear source dir") - shutil.rmtree(src_dir) - - finally: - logger.indent -= 2 - script_dir = join(base_dir, bin_dir) - logger.notify('Run "%s Package" to install new packages that provide builds' - % join(script_dir, 'easy_install')) - +EXTRA_TEXT = "import sys\n" +EXTRA_TEXT += "sys.path.append('%s')\n" % (lib_path) +EXTRA_TEXT += "sys.path.append('%s')\n" % (os.path.abspath(os.path.join(here,"res")).replace("\\","/")) +EXTRA_TEXT += "from res_create_env import generate_install_methods\n" +EXTRA_TEXT += "adjust_options, extend_parser, after_install = generate_install_methods(path_locations, '%s', Logger, call_subprocess)\n" % (src_base) -def normal_install(key, method, option_str, extra_env, res_source_key, home_dir, tmp_dir): - logger.notify("Install %s from %s with %s" % (key,URLS[key][res_source_key],method)) - if method == 'pip': - if sys.platform == 'win32': - args = [os.path.abspath(os.path.join(home_dir, 'Scripts', 'pip')), 'install', '-E', os.path.abspath(home_dir), URLS[key][res_source_key]] - else: - args = [os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', '-E', os.path.abspath(home_dir), URLS[key][res_source_key]] - if option_str : - args.insert(4,option_str) - call_subprocess(args, - cwd=os.path.abspath(tmp_dir), - filter_stdout=filter_python_develop, - show_stdout=True, - extra_env=extra_env) - else: - if sys.platform == 'win32': - args = [os.path.abspath(os.path.join(home_dir, 'Scripts', 'easy_install')), URLS[key][res_source_key]] - else: - args = [os.path.abspath(os.path.join(home_dir, 'bin', 'easy_install')), URLS[key][res_source_key]] - if option_str : - args.insert(1,option_str) - call_subprocess(args, - cwd=os.path.abspath(tmp_dir), - filter_stdout=filter_python_develop, - show_stdout=True, - extra_env=extra_env) - - -def ensure_dir(dir): - if not os.path.exists(dir): - logger.notify('Creating directory %s' % dir) - os.makedirs(dir) - -def filter_python_develop(line): - if not line.strip(): - return Logger.DEBUG - for prefix in ['Searching for', 'Reading ', 'Best match: ', 'Processing ', - 'Moving ', 'Adding ', 'running ', 'writing ', 'Creating ', - 'creating ', 'Copying ']: - if line.startswith(prefix): - return Logger.DEBUG - return Logger.NOTIFY -""" def main(): python_version = ".".join(map(str,sys.version_info[0:2]))