virtualenv/res/lib/lib_create_env.py
changeset 31 29caac899e1f
parent 21 5f3e270580af
child 36 daa526d27044
equal deleted inserted replaced
27:daaafc916dc4 31:29caac899e1f
    20     'DJANGO': {'setup': 'django', 'url': 'https://www.djangoproject.com/download/1.5c1/tarball/', 'local':"Django-1.5c1.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    20     'DJANGO': {'setup': 'django', 'url': 'https://www.djangoproject.com/download/1.5c1/tarball/', 'local':"Django-1.5c1.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    21     'DJANGO-EXTENSIONS': { 'setup': 'django-extensions', 'url':'https://github.com/django-extensions/django-extensions/archive/1.0.2.tar.gz', 'local':"django-extensions-1.0.2.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    21     'DJANGO-EXTENSIONS': { 'setup': 'django-extensions', 'url':'https://github.com/django-extensions/django-extensions/archive/1.0.2.tar.gz', 'local':"django-extensions-1.0.2.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    22     'DJANGO-REGISTRATION': { 'setup': 'django-registration', 'url':'https://bitbucket.org/ubernostrum/django-registration/get/v0.8.tar.gz', 'local':"django-registration-0.8.tar.gz", 'install': {'method': 'easy_install', 'option_str': '-Z', 'dict_extra_env': None}},
    22     'DJANGO-REGISTRATION': { 'setup': 'django-registration', 'url':'https://bitbucket.org/ubernostrum/django-registration/get/v0.8.tar.gz', 'local':"django-registration-0.8.tar.gz", 'install': {'method': 'easy_install', 'option_str': '-Z', 'dict_extra_env': None}},
    23     'SOUTH': { 'setup': 'South', 'url':'http://www.aeracode.org/releases/south/south-0.7.5.tar.gz', 'local':"south-0.7.5.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    23     'SOUTH': { 'setup': 'South', 'url':'http://www.aeracode.org/releases/south/south-0.7.5.tar.gz', 'local':"south-0.7.5.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    24     'SORL_THUMBNAIL' : { 'setup': 'sorl-thumbnail', 'url':'https://github.com/sorl/sorl-thumbnail/archive/master.tar.gz', 'local':"sorl-thumbnail-v11.12.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    24     'SORL_THUMBNAIL' : { 'setup': 'sorl-thumbnail', 'url':'https://github.com/sorl/sorl-thumbnail/archive/master.tar.gz', 'local':"sorl-thumbnail-v11.12.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    25     'LIBJPEG': {'setup': None, 'url':'jpegsrc.v8d.tar.gz', 'local':'jpegsrc.v8d.tar.gz', 'install': {'method': 'install_libjpeg', 'option_str': None, 'dict_extra_env': None}},
    25     'LIBJPEG': {'setup': None, 'url':'jpegsrc.v9.tar.gz', 'local':'jpegsrc.v9.tar.gz', 'install': {'method': 'install_libjpeg', 'option_str': None, 'dict_extra_env': None}},
    26     'ZLIB': {'setup': None, 'url':'zlib-1.2.7.tar.gz', 'local':'zlib-1.2.7.tar.gz', 'install': {'method': 'install_zlib', 'option_str': None, 'dict_extra_env': None}},
    26     'ZLIB': {'setup': None, 'url':'zlib-1.2.7.tar.gz', 'local':'zlib-1.2.7.tar.gz', 'install': {'method': 'install_zlib', 'option_str': None, 'dict_extra_env': None}},
    27     'PYCRYPTO': {'setup': 'pycrypto', 'url':'https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz', 'local':'pycrypto-2.6.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    27     'PYCRYPTO': {'setup': 'pycrypto', 'url':'https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz', 'local':'pycrypto-2.6.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    28     'PARAMIKO': {'setup': 'paramiko', 'url':'https://github.com/paramiko/paramiko/archive/v1.9.0.tar.gz', 'local':'paramiko-1.9.0.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    28     'PARAMIKO': {'setup': 'paramiko', 'url':'https://github.com/paramiko/paramiko/archive/v1.9.0.tar.gz', 'local':'paramiko-1.9.0.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    29     'FABRIC': {'setup': 'fabric', 'url':'https://github.com/fabric/fabric/tarball/1.5.1', 'local':'fabric-1.5.1.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    29     'FABRIC': {'setup': 'fabric', 'url':'https://github.com/fabric/fabric/tarball/1.5.1', 'local':'fabric-1.5.1.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    30     'MERCURIAL': {'setup': 'mercurial', 'url':'http://mercurial.selenic.com/release/mercurial-2.2.3.tar.gz', 'local':'mercurial-2.2.3.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
    30     'MERCURIAL': {'setup': 'mercurial', 'url':'http://mercurial.selenic.com/release/mercurial-2.2.3.tar.gz', 'local':'mercurial-2.2.3.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
   170 
   170 
   171 def gen_install_comp_lib(lib_name, lib_key, configure_options=[]):
   171 def gen_install_comp_lib(lib_name, lib_key, configure_options=[]):
   172     
   172     
   173     def install_lib(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
   173     def install_lib(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
   174         lib_src = os.path.join(src_dir,lib_name+".tar.gz")
   174         lib_src = os.path.join(src_dir,lib_name+".tar.gz")
       
   175         logger.notify("Copy %s to %s " % (res_env.URLS[lib_key][res_source_key],lib_src))
   175         shutil.copy(res_env.URLS[lib_key][res_source_key], lib_src)
   176         shutil.copy(res_env.URLS[lib_key][res_source_key], lib_src)
   176         tf = tarfile.open(lib_src,'r:gz')
   177         tf = tarfile.open(lib_src,'r:gz')
   177         lib_base_path = os.path.join(src_dir, lib_name) 
   178         lib_base_path = os.path.join(src_dir, lib_name) 
   178         logger.notify("Extract %s to %s " % (lib_name,lib_base_path))
   179         logger.notify("Extract %s to %s " % (lib_name,lib_base_path))
   179         tf.extractall(lib_base_path)
   180         tf.extractall(lib_base_path)
   180         tf.close()
   181         tf.close()
   181         
   182         
   182         lib_src_path = os.path.join(lib_base_path, os.listdir(lib_base_path)[0])
   183         lib_src_path = os.path.join(lib_base_path, os.listdir(lib_base_path)[0])
   183     
   184     
   184         logger.notify(libname + " configure")
   185         logger.notify(lib_name + " configure in " + lib_src_path)
   185         call_subprocess(['configure', '--prefix='+os.path.abspath(home_dir)] + configure_options,
   186         call_subprocess(['./configure', '--prefix='+os.path.abspath(home_dir)] + configure_options,
   186                         cwd=os.path.abspath(lib_src_path),
   187                         cwd=os.path.abspath(lib_src_path),
   187                         filter_stdout=filter_python_develop,
   188                         filter_stdout=filter_python_develop,
   188                         show_stdout=True)
   189                         show_stdout=True)
   189         
   190         
   190         logger.notify(libname + " make")
   191         logger.notify(lib_name + " make in " + lib_src_path)
   191         call_subprocess(['make'],
   192         call_subprocess(['make'],
   192                         cwd=os.path.abspath(lib_src_path),
   193                         cwd=os.path.abspath(lib_src_path),
   193                         filter_stdout=filter_python_develop,
   194                         filter_stdout=filter_python_develop,
   194                         show_stdout=True)
   195                         show_stdout=True)
   195     
   196     
   196         logger.notify(libname + "make install")
   197         logger.notify(lib_name + "make install in " + lib_src_path)
   197         call_subprocess(['make', 'install'],
   198         call_subprocess(['make', 'install'],
   198                         cwd=os.path.abspath(lib_src_path),
   199                         cwd=os.path.abspath(lib_src_path),
   199                         filter_stdout=filter_python_develop,
   200                         filter_stdout=filter_python_develop,
   200                         show_stdout=True)
   201                         show_stdout=True)
   201         return install_lib
   202     return install_lib
   202 
   203 
   203 install_libjpeg = gen_install_comp_lib("libjpeg", "LIBJPEG", ['--enable-shared'])
   204 install_libjpeg = gen_install_comp_lib("libjpeg", "LIBJPEG", ['--enable-shared'])
   204 install_zlib = gen_install_comp_lib("zlib", "ZLIB", [])
   205 install_zlib = gen_install_comp_lib("zlib", "ZLIB", [])
   205 
       
   206 
       
   207     
       
   208     
   206     
   209 
   207 
   210 def lib_generate_install_methods(path_locations, src_base, Logger, call_subprocess, normal_installs, options_to_add=None, urls= None):
   208 def lib_generate_install_methods(path_locations, src_base, Logger, call_subprocess, normal_installs, options_to_add=None, urls= None):
   211     
   209     
   212     all_urls = URLS.copy()
   210     all_urls = URLS.copy()
   300                     
   298                     
   301                 if 'TMPDIR' not in extra_env:
   299                 if 'TMPDIR' not in extra_env:
   302                     extra_env['TMPDIR'] = os.path.abspath(tmp_dir)          
   300                     extra_env['TMPDIR'] = os.path.abspath(tmp_dir)          
   303                 #isinstance(lst, (list, tuple))
   301                 #isinstance(lst, (list, tuple))
   304                 if key not in ignore_packages:
   302                 if key not in ignore_packages:
       
   303                     logger.notify("install %s with method %s" % (key, repr(method)))
   305                     if callable(method):
   304                     if callable(method):
   306                         method(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
   305                         method(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
   307                     elif method in globals() and callable(globals()[method]) and method not in ['pip', 'easy_install']:  
   306                     elif method in globals() and callable(globals()[method]) and method not in ['pip', 'easy_install']:  
   308                         globals()[method](option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
   307                         globals()[method](option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
   309                     else:
   308                     else: