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: |