virtualenv/res/lib/lib_create_env.py
author ymh <ymh.work@gmail.com>
Tue, 15 Mar 2016 12:34:52 +0100
changeset 308 23f5e267cd1e
parent 274 e34d988f37a7
child 322 3a80a07f1300
permissions -rw-r--r--
Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
import sys
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
import os
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
import os.path
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
import shutil
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
import tarfile
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
import zipfile
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
import urllib
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
import platform
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
import patch
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
import struct
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
import glob
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
import re
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
join = os.path.join
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
system_str = platform.system()
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
URLS = {
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
    #'': {'setup': '', 'url':'', 'local':''},
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
    19
    'DISTRIBUTE': {'setup': 'distribute', 'url':'http://pypi.python.org/packages/source/d/distribute/distribute-0.6.34.tar.gz', 'local':"distribute-0.6.34.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
274
e34d988f37a7 Update django to 1.8.4 and platform + new version
ymh <ymh.work@gmail.com>
parents: 262
diff changeset
    20
    'DJANGO': {'setup': 'django', 'url': 'https://github.com/django/django/archive/1.8.4.tar.gz', 'local':"Django-1.8.4.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    21
    'DJANGO-EXTENSIONS': { 'setup': 'django-extensions', 'url':'https://github.com/django-extensions/django-extensions/archive/1.5.5.tar.gz', 'local':"django-extensions-1.5.5.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
258
993f18158ccb Remove unused LDT_MEDIA_PREFIX + upgrade django-registration then remove unused migration
ymh <ymh.work@gmail.com>
parents: 252
diff changeset
    22
    'DJANGO-REGISTRATION': { 'setup': 'django-registration', 'url':'https://github.com/macropin/django-registration/archive/v1.2.tar.gz', 'local':"django-registration-redux-1.2.tar.gz", 'install': {'method': 'easy_install', 'option_str': '-Z', 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    23
    'DJANGO-TEMPLATETAG-SUGAR': { 'setup': 'django-templatetag-sugar', 'url': 'https://github.com/IRI-Research/django-templatetag-sugar/archive/1.0.1.tar.gz', 'local': 'django-templatetag-sugar-1.0.1.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    24
    'DJANGO-TAGGIT': { 'setup': 'django-taggit', 'url':'https://github.com/IRI-Research/django-taggit/archive/0.16.2+IRI.tar.gz', 'local':"django-taggit-0.16.2-IRI.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    25
    'DJANGO-TAGGIT-TEMPLATETAGS': { 'setup': 'django-taggit-templatetags', 'url':'https://github.com/feuervogel/django-taggit-templatetags/archive/d2216c9d1888e0739a04899a36e5149b5cbb3381.zip', 'local':"django-taggit-templatetags-0.4.5dev-r0.zip", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
    'OAUTH2': { 'setup': 'python-oauth2', 'url':"https://github.com/simplegeo/python-oauth2/tarball/hudson-python-oauth2-211", 'local':"oauth2-1.5.211.tar.gz", 'install': {'method': 'easy_install', 'option_str': None, 'dict_extra_env': None}},
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    27
    'HTTPLIB2': { 'setup': 'python-httplib2', 'url':'https://pypi.python.org/packages/source/h/httplib2/httplib2-0.9.1.tar.gz', 'local':"httplib2-0.9.1.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    28
    'DJANGO-OAUTH-PLUS': { 'setup': 'django-oauth-plus', 'url':'https://bitbucket.org/david/django-oauth-plus/get/2.2.8.tar.gz', 'local':"django-oauth-plus-2.2.8.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
    'OPENID': {'setup':'openid', 'url':'http://pypi.python.org/packages/source/p/python-openid/python-openid-2.2.5.tar.gz', 'local':"python-openid-2.2.5.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    30
    'SOCIAL_AUTH': {'setup':'social_auth', 'url':'https://github.com/omab/python-social-auth/archive/v0.2.7.tar.gz', 'local':"python-social-auth-0.2.7.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    31
    'DJANGO_GUARDIAN' : { 'setup': 'django-guardian', 'url':'https://github.com/lukaszb/django-guardian/archive/v1.3.tar.gz', 'local':"django-guardian-1.3.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    32
    'SORL_THUMBNAIL' : { 'setup': 'sorl-thumbnail', 'url':'https://github.com/mariocesar/sorl-thumbnail/archive/master.tar.gz', 'local':"sorl-thumbnail-12.3.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
    33
    'LIBJPEG': {'setup': None, 'url':'jpegsrc.v9.tar.gz', 'local':'jpegsrc.v9.tar.gz', 'install': {'method': 'install_libjpeg', 'option_str': None, 'dict_extra_env': None}},
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
    34
    'ZLIB': {'setup': None, 'url':'zlib-1.2.8.tar.gz', 'local':'zlib-1.2.8.tar.gz', 'install': {'method': 'install_zlib', 'option_str': None, 'dict_extra_env': None}},
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    35
    'HAYSTACK': {'setup': 'django-haystack', 'url': 'https://github.com/django-haystack/django-haystack/archive/v2.4.1.tar.gz', 'local': 'django-haystack-2.4.1.tar.gz', 'install':{'method':'pip', 'option_str': None, 'dict_extra_env': None}},
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    36
    'REQUESTS': {'setup': 'requests', 'url':'https://github.com/kennethreitz/requests/archive/v2.7.0.tar.gz', 'local':'requests-2.7.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    37
    'ELASTICSEARCH': {'setup': 'elasticsearch', 'url':'https://pypi.python.org/packages/source/e/elasticsearch/elasticsearch-2.3.0.tar.gz', 'local':'elasticsearch-2.3.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    38
    'WHOOSH': {'setup': 'whoosh', 'url':'https://bitbucket.org/mchaput/whoosh/get/2.7.0.tar.gz', 'local':'whoosh-2.7.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
    39
    'SETUPTOOLS_HG' : {'setup':'setuptools_hg', 'url':'https://bitbucket.org/jezdez/setuptools_hg/get/v0.4.tar.gz', 'local': 'setuptools_hg-0.4.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
108
6ef0ca20d634 update defusedxml dependancy for tastypie
cavaliet
parents: 106
diff changeset
    40
    # dependencies for Tastypie : mimeparse>=0.1.3, python-dateutil>=2.1, lxml, PyYAML (not necessary but we never know), python-digest, defusedxml
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    'MIMEPARSE' : {'setup':'mimeparse', 'url':'http://pypi.python.org/packages/source/m/mimeparse/mimeparse-0.1.3.tar.gz', 'local': 'mimeparse-0.1.3.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    42
    'SIX' : {'setup':'six', 'url':'https://pypi.python.org/packages/source/s/six/six-1.9.0.tar.gz', 'local': 'six-1.9.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    43
    'DATEUTIL' : {'setup':'python-dateutil', 'url':'https://github.com/dateutil/dateutil/archive/2.4.2.tar.gz', 'local': 'dateutil-2.4.2.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    44
    'PYYAML' : {'setup':'pyyaml', 'url':'http://pypi.python.org/packages/source/P/PyYAML/PyYAML-3.11.tar.gz', 'local': 'PyYAML-3.11.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    'PYTHON-DIGEST' : {'setup':'python-digest', 'url':'http://pypi.python.org/packages/source/p/python-digest/python-digest-1.7.tar.gz', 'local': 'python-digest-1.7.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
108
6ef0ca20d634 update defusedxml dependancy for tastypie
cavaliet
parents: 106
diff changeset
    46
    'DEFUSEDXML' : {'setup':'defusedxml', 'url':'https://pypi.python.org/packages/source/d/defusedxml/defusedxml-0.4.1.tar.gz', 'local': 'defusedxml-0.4.1.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    47
    'DJANGO-TASTYPIE' : {'setup':'django-tastypie', 'url':'https://github.com/django-tastypie/django-tastypie/archive/v0.12.2.tar.gz', 'local': 'django-tastypie-0.12.2.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    48
    'DJANGO-CORS-HEADERS' : {'setup':'django-cors-headers', 'url':'https://github.com/ottoyiu/django-cors-headers/archive/1.1.0.tar.gz', 'local': 'django-cors-headers-1.1.0.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    49
    'DJANGO-CHUNCKED-UPLOADS' : {'setup': 'django-chuncked-uploads', 'url':'https://github.com/IRI-Research/django-chunked-uploads/archive/v0.7.tar.gz', 'local':'django-chunked-uploads-0.7.tar.gz', 'install' : {'method':'pip', 'option_str': None, 'dict_extra_env': None}},
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    50
    'OAUTHLIB': { 'setup': 'oauthlib', 'url':"https://github.com/idan/oauthlib/archive/0.7.2.tar.gz", 'local':"oauthlib-0.7.2.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    51
    'URLLIB3': { 'setup': 'urllib3', 'url':'https://github.com/shazow/urllib3/archive/1.14.tar.gz', 'local':"urllib3-1.14.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    52
    'SIMPLEJSON' : { 'setup': 'simplejson', 'url': 'https://github.com/simplejson/simplejson/archive/v3.6.5.tar.gz', 'local' : 'simplejson-3.6.5.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    53
    'PYJWT' : { 'setup': 'pyjwt', 'url': 'https://github.com/jpadilla/pyjwt/archive/1.1.0.tar.gz', 'local' : 'pyjwt-1.1.0.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    54
    'PYTHON-MIMEPARSE': { 'setup': 'python-mimeparse', 'url': 'https://pypi.python.org/packages/source/p/python-mimeparse/python-mimeparse-0.1.4.tar.gz', 'local' : 'python-mimeparse-0.1.4.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    55
    'REQUESTS-OAUTHLIB': { 'setup': 'requests-oauthlib', 'url': 'https://github.com/requests/requests-oauthlib/archive/v0.5.0.tar.gz', 'local' : 'requests-oauthlib-0.5.0.tar.gz', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
}
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
if system_str == 'Windows':
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    59
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    size = 8 * struct.calcsize("P")
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    if size==32:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
        mysqlres = "MySQL-python-1.2.3.win32-py2.7.exe"
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
        mysqlres = "MySQL-python-1.2.3.win-amd64-py2.7.exe"
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    65
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    URLS.update({
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
    67
        'PSYCOPG2': {'setup': 'psycopg2','url': 'psycopg2-2.4.6.win32-py2.7-pg9.2.2-release.exe', 'local':"psycopg2-2.4.6.win32-py2.7-pg9.2.2-release.exe", 'install': {'method': 'install_psycopg2', 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
        'PIL': {'setup': 'pil', 'url': 'http://effbot.org/media/downloads/PIL-1.1.7.win32-py2.7.exe', 'local':"PIL-1.1.7.win32-py2.7.exe", 'install': {'method': 'easy_install', 'option_str': None, 'dict_extra_env': None}},
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
        'LXML': {'setup': 'lxml', 'url': 'http://pypi.python.org/packages/2.7/l/lxml/lxml-2.3-py2.7-win32.egg', 'local':"lxml-2.3-py2.7-win32.egg", 'install': {'method': 'easy_install', 'option_str': None, 'dict_extra_env': None}},
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
        'MYSQL': { 'setup': 'mysql-python', 'url': mysqlres, 'local': mysqlres, 'install': {'method': 'easy_install', 'option_str': None, 'dict_extra_env': None}},
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
    })
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
else:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    73
    if system_str == "Darwin":
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    74
        lxml_options = {'STATIC_DEPS': 'true', 'LIBXML2_VERSION': '2.9.2', 'LIBXSLT_VERSION': '1.1.28', 'LIBICONV_VERSION': '1.14'}
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    75
        if os.path.exists('/usr/local/opt/xz'):
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    76
            if not os.path.exists('/usr/local/opt/libxml2'):
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    77
                sys.exit("You have installed xz with Homebrew but do not have libxml2 installed with Homebrew. Install libxml2 with Homebrew and try again.")
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    78
            lxml_options = {'LDFLAGS': '-L/usr/local/opt/libxml2/lib', 'CPPFLAGS': '-I/usr/local/opt/libxml2/include'}
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
        mysql_method = 'install_mysql'
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
        lxml_options = None
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
        mysql_method = 'pip'
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
    URLS.update({
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    85
        'PSYCOPG2': {'setup': 'psycopg2','url': 'http://initd.org/psycopg/tarballs/PSYCOPG-2-6/psycopg2-2.6.tar.gz', 'local':"psycopg2-2.6.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
    86
        'PIL': {'setup': 'pillow', 'url': 'https://github.com/python-pillow/Pillow/archive/2.9.0.tar.gz', 'local':"Pillow-2.9.0.tar.gz", 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': None}},
243
b5daed0ce08b Maintaining virtualenv building script
durandn
parents: 223
diff changeset
    87
        'LXML': {'setup': 'lxml', 'url': 'lxml-3.2.1.tar.bz2', 'local': 'lxml-3.2.1.tar.bz2', 'install': {'method': 'pip', 'option_str': None, 'dict_extra_env': lxml_options}},
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
    88
        'MYSQL': { 'setup': 'mysql-python', 'url': 'http://downloads.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b4/MySQL-python-1.2.4b4.tar.gz', 'local':"MySQL-python-1.2.4b4.tar.gz", 'install': {'method': mysql_method, 'option_str': None, 'dict_extra_env': None}},
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    })
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
    90
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
class ResourcesEnv(object):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    94
    def __init__(self, src_base, run_base, urls, normal_installs):
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
        self.src_base = src_base
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
    96
        self.run_base = run_base
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
        self.URLS = {}
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
        self.__init_url(urls)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
        self.NORMAL_INSTALL = normal_installs
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
    def get_src_base_path(self, fpath):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
        return os.path.abspath(os.path.join(self.src_base, fpath)).replace("\\","/")
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   103
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   104
    def get_run_res_base_path(self, fpath):
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   105
        return os.path.abspath(os.path.join(self.run_base, 'res', fpath)).replace("\\","/")
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   106
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    def __add_package_def(self, key, dict):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
        self.URLS[key] = dict
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   109
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
    def __init_url(self, urls):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
        for key, url_dict in urls.items():
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
            url_dict_copy = url_dict.copy()
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   113
            if url_dict.get('install', {}).get('method','pip') == 'pip-req':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   114
                get_base_path = self.get_run_res_base_path
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   115
            else:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   116
                get_base_path = self.get_src_base_path
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
            if not url_dict['url'].startswith("http://"):
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   118
                url_dict_copy['url'] = get_base_path(url_dict['url'])
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   119
            url_dict_copy['local'] = get_base_path(url_dict['local'])
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   120
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
            self.__add_package_def(key, url_dict_copy )
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
def ensure_dir(dir, logger):
52
509085ffbce6 update requests and correct lib_create_env for virtualenv creation
ymh <ymh.work@gmail.com>
parents: 50
diff changeset
   124
    logger.notify('Check directory %s' % dir)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
    if not os.path.exists(dir):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
        logger.notify('Creating directory %s' % dir)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
        os.makedirs(dir)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   129
def extend_parser(parser):
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
    parser.add_option(
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
        '--index-url',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
        metavar='INDEX_URL',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
        dest='index_url',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
        default='http://pypi.python.org/simple/',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
        help='base URL of Python Package Index')
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
    parser.add_option(
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
        '--type-install',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
        metavar='type_install',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
        dest='type_install',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
        help='type install : local, url, setup - default : local')
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
    parser.add_option(
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
        '--ignore-packages',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
        metavar='ignore_packages',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
        dest='ignore_packages',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
        default=None,
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   146
        help='list of comma separated keys for package to ignore')
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   147
    parser.add_option(
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   148
        '--no-clear',
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   149
        metavar='do not clear env',
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   150
        dest='clear',
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   151
        default=True,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   152
        action='store_false',
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   153
        help='do not clear env')
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   154
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   155
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
def install_psycopg2(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
    psycopg2_src = os.path.join(src_dir,"psycopg2.zip")
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
    shutil.copy(res_env.URLS['PSYCOPG2'][res_source_key], psycopg2_src)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
    #extract psycopg2
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
    zf = zipfile.ZipFile(psycopg2_src)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
    psycopg2_base_path = os.path.join(src_dir,"psycopg2")
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
    zf.extractall(psycopg2_base_path)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
    zf.close()
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   165
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
    psycopg2_src_path = os.path.join(psycopg2_base_path, os.listdir(psycopg2_base_path)[0])
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
    shutil.copytree(os.path.join(psycopg2_src_path, 'psycopg2'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'psycopg2')))
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
    shutil.copy(os.path.join(psycopg2_src_path, 'psycopg2-2.4.5-py2.7.egg-info'), os.path.abspath(os.path.join(home_dir, 'Lib/site-packages', 'site-packages')))
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   169
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
def install_mysql(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop):
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   172
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   173
    args = [os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', res_env.URLS['MYSQL'][res_source_key]]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
    if option_str :
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
        args.insert(4,option_str)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
    call_subprocess(args,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
            cwd=os.path.abspath(tmp_dir),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
            filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
            show_stdout=True,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
            extra_env=extra_env)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
    mysqlconfig_output = []
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   183
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
    call_subprocess(['mysql_config', '--libmysqld-libs'],
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
        cwd=os.path.abspath(tmp_dir),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
        filter_stdout=lambda line: mysqlconfig_output.append(line),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
        show_stdout=True)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   188
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
    mysqlconfig_output = "".join(mysqlconfig_output)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
    m = re.search("\-L[\'\"]?([\w\/]+)[\'\"]?", mysqlconfig_output)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
    if m:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
        repdylibpath = m.group(1)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
    else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
        repdylibpath = '/usr/local/mysql/lib'
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   195
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
    dyliblist = glob.glob(repdylibpath+"/libmysqlclient.*.dylib")
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
    def key_func(s):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
        m = re.match(repdylibpath+"/libmysqlclient\.([\d]+)\.dylib", s)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
        if m:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
            return int(m.group(1))
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
        else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
            return sys.maxint
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
    dyliblist.sort(key=key_func)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   204
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
    if dyliblist:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
        dylibpath = dyliblist[0]
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
    else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
        dylibpath = '/usr/local/mysql/lib/libmysqlclient.18.dylib'
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   209
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   210
    dylibname = os.path.basename(dylibpath)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
    sopath = os.path.join(os.path.abspath(lib_dir), 'site-packages', '_mysql.so')
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   212
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
    call_subprocess(['install_name_tool', '-change', dylibname, dylibpath, sopath],
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
        cwd=os.path.abspath(tmp_dir),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
        filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
        show_stdout=True)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   219
def gen_install_comp_lib(lib_name, lib_key, configure_options=[], configure_env={}):
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   220
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
    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):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
        lib_src = os.path.join(src_dir,lib_name+".tar.gz")
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   223
        logger.notify("Copy %s to %s " % (res_env.URLS[lib_key][res_source_key],lib_src))
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
        shutil.copy(res_env.URLS[lib_key][res_source_key], lib_src)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
        tf = tarfile.open(lib_src,'r:gz')
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   226
        lib_base_path = os.path.join(src_dir, lib_name)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
        logger.notify("Extract %s to %s " % (lib_name,lib_base_path))
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
        tf.extractall(lib_base_path)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
        tf.close()
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   230
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
        lib_src_path = os.path.join(lib_base_path, os.listdir(lib_base_path)[0])
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   232
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   233
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   234
        context_map = {
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   235
            'option_str' : option_str,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   236
            'home_dir': os.path.abspath(home_dir),
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   237
            'lib_dir': os.path.abspath(lib_dir),
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   238
            'tmp_dir': os.path.abspath(tmp_dir),
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   239
            'src_dir': os.path.abspath(src_dir),
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   240
        }
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   241
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   242
        configure_options_trans = map(lambda s: s % context_map, configure_options)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   243
        configure_env_trans = {k: s % context_map for k,s in configure_env.items()}
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   244
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   245
        logger.notify(lib_name + " configure in " + lib_src_path)
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   246
        call_subprocess(['./configure', '--prefix='+os.path.abspath(home_dir)] + configure_options_trans,
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
                        cwd=os.path.abspath(lib_src_path),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
                        filter_stdout=filter_python_develop,
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   249
                        show_stdout=True,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   250
                        extra_env=configure_env_trans
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   251
                        )
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   252
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   253
        logger.notify(lib_name + " make in " + lib_src_path)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
        call_subprocess(['make'],
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
                        cwd=os.path.abspath(lib_src_path),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
                        filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
                        show_stdout=True)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   258
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   259
        logger.notify(lib_name + "make install in " + lib_src_path)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
        call_subprocess(['make', 'install'],
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
                        cwd=os.path.abspath(lib_src_path),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
                        filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
                        show_stdout=True)
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   264
    return install_lib
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   266
install_libjpeg = gen_install_comp_lib("libjpeg", "LIBJPEG", ['--enable-shared'], {})
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   267
install_zlib = gen_install_comp_lib("zlib", "ZLIB", [], {})
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   269
#osx_extra_env = {'ARCHFLAGS': '-Wno-error=unused-command-line-argument-hard-error-in-future', 'CFLAGS': '-Qunused-arguments', 'CPPFLAGS': '-Qunused-arguments'}
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   270
osx_extra_env = {}
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   271
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   272
def lib_generate_install_methods(path_locations, src_base, run_base, Logger, call_subprocess, normal_installs, options_to_add=None, urls= None):
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   273
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
    all_urls = URLS.copy()
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
    if urls is not None:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
        all_urls.update(urls)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   277
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   278
    res_env = ResourcesEnv(src_base, run_base, all_urls, normal_installs)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
    def filter_python_develop(line):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
        if not line.strip():
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
            return Logger.DEBUG
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
        for prefix in ['Searching for', 'Reading ', 'Best match: ', 'Processing ',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
                       'Moving ', 'Adding ', 'running ', 'writing ', 'Creating ',
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
                       'creating ', 'Copying ']:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
            if line.startswith(prefix):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
                return Logger.DEBUG
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
        return Logger.NOTIFY
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   289
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   290
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   291
    def normal_install(key, res_path, method, option_str, extra_env, res_source_key, home_dir, tmp_dir, res_env, logger, call_subprocess):
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   292
        logger.notify("Install %s from %s with %s" % (key,res_path,method))
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
        if method == 'pip':
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
            if sys.platform == 'win32':
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   295
                args = [os.path.abspath(os.path.join(home_dir, 'Scripts', 'pip')), 'install', res_path]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
            else:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   297
                args = [os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', res_path]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
            if option_str :
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   299
                args.append(option_str)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   300
            if res_source_key == 'local':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   301
                if extra_env is None:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   302
                    extra_env = {}
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   303
                args.insert(2, '-f')
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   304
                args.insert(3, res_env.get_src_base_path(""))
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   305
                args.insert(4, '--no-index')
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   306
                args.insert(5, '--no-cache-dir')
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   307
            logger.notify("Install %s from %s with %s args %s " % (key,res_path,method, repr(args)))
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   308
            call_subprocess(args,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   309
                    cwd=os.path.abspath(tmp_dir),
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   310
                    filter_stdout=filter_python_develop,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   311
                    show_stdout=True,
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   312
                    extra_env=extra_env)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   313
        if method == 'pip-req':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   314
            if sys.platform == 'win32':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   315
                args = [os.path.abspath(os.path.join(home_dir, 'Scripts', 'pip')), 'install', '-r', res_path]
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   316
            else:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   317
                args = [os.path.abspath(os.path.join(home_dir, 'bin', 'pip')), 'install', '-r', res_path]
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   318
            if option_str :
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   319
                args.append(option_str)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   320
            if res_source_key == 'local':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   321
                if extra_env is None:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   322
                    extra_env = {}
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   323
                args.insert(2, '-f')
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   324
                args.insert(3, res_env.get_src_base_path(""))
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   325
                args.insert(4, '--no-index')
262
c4f23c06bc6a upgrade libs, remove django warnings (as much as possible), upgrade dependencies
ymh <ymh.work@gmail.com>
parents: 261
diff changeset
   326
                args.insert(5, '--no-cache-dir')
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   327
            logger.notify("Install %s from %s with %s args %s " % (key,res_path,method, repr(args)))
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
            call_subprocess(args,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
                    cwd=os.path.abspath(tmp_dir),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
                    filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
                    show_stdout=True,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
                    extra_env=extra_env)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
        else:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
            if sys.platform == 'win32':
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   335
                args = [os.path.abspath(os.path.join(home_dir, 'Scripts', 'easy_install')), res_path]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
            else:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   337
                args = [os.path.abspath(os.path.join(home_dir, 'bin', 'easy_install')), res_path]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
            if option_str :
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
                args.insert(1,option_str)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
            call_subprocess(args,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
                    cwd=os.path.abspath(tmp_dir),
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
                    filter_stdout=filter_python_develop,
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
                    show_stdout=True,
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   344
                    extra_env=extra_env)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   345
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   346
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
    def after_install(options, home_dir):
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   348
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
        global logger
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   350
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
        verbosity = options.verbose - options.quiet
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
        logger = Logger([(Logger.level_for_integer(2-verbosity), sys.stdout)])
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   354
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
        home_dir, lib_dir, inc_dir, bin_dir = path_locations(home_dir)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
        base_dir = os.path.dirname(home_dir)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
        src_dir = os.path.join(home_dir, 'src')
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
        tmp_dir = os.path.join(home_dir, 'tmp')
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
        ensure_dir(src_dir, logger)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
        ensure_dir(tmp_dir, logger)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
        system_str = platform.system()
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   362
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
        res_source_key = getattr(options, 'type_install') if hasattr(options, 'type_install') else 'local' #.get('type_install', 'local')
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
        if res_source_key is None:
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
   365
            res_source_key = 'local'
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   366
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
        ignore_packages = []
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   368
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
        if system_str == 'Windows':
53
74ec1c2f245c Correct virtuel_env creation. Problem with tmpdir in extra_env, end extra_env null
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   370
            default_install_options = {'method': 'easy_install', 'option_str': None, 'dict_extra_env': {}}
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
        else:
53
74ec1c2f245c Correct virtuel_env creation. Problem with tmpdir in extra_env, end extra_env null
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   372
            default_install_options = {'method': 'pip', 'option_str': None, 'dict_extra_env': {}}
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   373
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
        if options.ignore_packages :
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
            ignore_packages = options.ignore_packages.split(",")
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   376
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
        logger.indent += 2
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   378
        try:
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
            for key in res_env.NORMAL_INSTALL:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   380
                install_options = None
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   381
                if isinstance(key, dict):
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   382
                    install_options = key.get('install', default_install_options)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   383
                    install_options['method'] = 'pip-req'
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   384
                    res_path = res_env.get_run_res_base_path(key['requirement'])
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   385
                else:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   386
                    if key not in res_env.URLS:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   387
                        logger.notify("%s not found in def : passing" % (key,))
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   388
                    install_options = res_env.URLS[key].get('install', None)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   389
                    res_path = res_env.URLS[key][res_source_key]
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
                if install_options is None:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
                    install_options = default_install_options
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
                method = install_options.get('method', default_install_options['method'])
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
                option_str = install_options.get('option_str', default_install_options['option_str'])
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
                extra_env = install_options.get('dict_extra_env', default_install_options['dict_extra_env'])
53
74ec1c2f245c Correct virtuel_env creation. Problem with tmpdir in extra_env, end extra_env null
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   395
                if not extra_env:
74ec1c2f245c Correct virtuel_env creation. Problem with tmpdir in extra_env, end extra_env null
ymh <ymh.work@gmail.com>
parents: 52
diff changeset
   396
                    extra_env = {}
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   397
50
2123324cca5a add TMPDIR to env variuables whn building virtualenv
ymh <ymh.work@gmail.com>
parents: 13
diff changeset
   398
                if 'TMPDIR' not in extra_env:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   399
                    extra_env['TMPDIR'] = os.path.abspath(tmp_dir)
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   400
                if system_str == 'Darwin':
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   401
                    for flag_key, flag_value in iter(osx_extra_env.items()):
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   402
                        flags = extra_env.get(flag_key, '')
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   403
                        if flag_value not in flags:
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   404
                            #flags += " -Wno-error=unused-command-line-argument-hard-error-in-future"
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   405
                            flags += " "+flag_value
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   406
                            extra_env[flag_key] = flags.strip()
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   407
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
                #isinstance(lst, (list, tuple))
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
                if key not in ignore_packages:
59
4671c9fd69b5 - update virtualenv
ymh <ymh.work@gmail.com>
parents: 53
diff changeset
   410
                    logger.notify("install %s with method %s" % (key, repr(method)))
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
                    if callable(method):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
                        method(option_str, extra_env, res_source_key, home_dir, lib_dir, tmp_dir, src_dir, res_env, logger, call_subprocess, filter_python_develop)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   413
                    elif method in globals() and callable(globals()[method]) and method not in ['pip', 'easy_install']:
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
                        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)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
                    else:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   416
                        normal_install(key, res_path, method, option_str, extra_env, res_source_key, home_dir, tmp_dir, res_env, logger, call_subprocess)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   417
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
            logger.notify("Clear source dir")
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
            shutil.rmtree(src_dir)
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   420
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
        finally:
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
            logger.indent -= 2
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
        script_dir = join(base_dir, bin_dir)
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
        logger.notify('Run "%s Package" to install new packages that provide builds'
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
                      % join(script_dir, 'easy_install'))
308
23f5e267cd1e Corrections for elasticsearch (server) >= 2.2 and elasticserach (client lib) >= 2.3, platform version propagation + new virtualenv (+ version)
ymh <ymh.work@gmail.com>
parents: 274
diff changeset
   426
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
    def adjust_options(options, args):
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
        if not options_to_add:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   429
            return
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   430
        for opt,opt_val in options_to_add.items():
102
e2968797bdae upgrade to django 1.5
ymh <ymh.work@gmail.com>
parents: 101
diff changeset
   431
            #if not hasattr(options,test_opt) or getattr(options, test_opt) is None:
244
4f07ad576fee finalize django 1.8 migration, upgrade version
ymh <ymh.work@gmail.com>
parents: 243
diff changeset
   432
            setattr(options, opt, opt_val)
0
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
87104b7cb3d6 first version of file organization
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
    return adjust_options, extend_parser, after_install