# HG changeset patch # User ymh # Date 1472774504 -7200 # Node ID 690b89879211ec88b60baa2ebe81d93ee77f9cd5 # Parent 19d1e055ff4e9a9ed2471fe86c199b7daa393883 small adaptation for iconolab diff -r 19d1e055ff4e -r 690b89879211 src/fablib/__init__.py --- a/src/fablib/__init__.py Sat Aug 22 01:04:21 2015 +0200 +++ b/src/fablib/__init__.py Fri Sep 02 02:01:44 2016 +0200 @@ -1,13 +1,16 @@ from .core import (check_folder_access, migrate, collectstatic, do_relaunch_server, - export_version, do_sync_web, create_config, clean_export_folder, - sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export, - do_sync_comp, get_comp_versions_dict, SyncComp) + export_version, do_sync_web, create_config, clean_export_folder, + sync_install_build, do_create_virtualenv, clean_rsync_folder, rsync_export, + do_sync_comp, get_comp_versions_dict, SyncComp, get_src_version, sync_build, + install_build, do_create_virtualenv_requirement, build_src) __all__ = ["check_folder_access", "migrate", "collectstatic", "do_sync_comp", - "export_version", "do_sync_web", "create_config", "clean_export_folder", "relaunch_server", - "do_sync_ldt", "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export", - "get_comp_versions_dict", "SyncComp"] + "export_version", "do_sync_web", "create_config", "clean_export_folder", + "relaunch_server", "do_sync_ldt", "sync_install_build", "do_create_virtualenv", + "clean_rsync_folder", "rsync_export", "get_comp_versions_dict", "SyncComp", + "get_src_version", "sync_build", "install_build", "do_create_virtualenv_requirement", + "build_src"] VERSION = (0, 1, 0, "dev", 0) diff -r 19d1e055ff4e -r 690b89879211 src/fablib/core.py --- a/src/fablib/core.py Sat Aug 22 01:04:21 2015 +0200 +++ b/src/fablib/core.py Fri Sep 02 02:01:44 2016 +0200 @@ -19,9 +19,10 @@ __all__ = ["check_folder_access", "migrate", "collectstatic", "do_relaunch_server", - "export_version", "do_sync_web", "create_config", "clean_export_folder", - "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export", - "do_sync_comp", "get_comp_versions_dict", "SyncComp"] + "export_version", "do_sync_web", "create_config", "clean_export_folder", + "sync_install_build", "do_create_virtualenv", "clean_rsync_folder", "rsync_export", + "do_sync_comp", "get_comp_versions_dict", "SyncComp", "get_src_version", "sync_build", + "install_build", "do_create_virtualenv_requirement", "build_src"] def get_export_path(version): base_path = os.path.join(env.base_export_path,env.export_prefix).rstrip("/") @@ -68,16 +69,18 @@ print("Export version %s done"%repr(export_keys)) -def get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, settings_key): +def get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, settings_key, settings_module=''): + if not settings_module: + settings_module = '%s.%s' % (platform_web_module, 'settings') activate_path = os.path.join(remotevirtualenvpath, "bin/activate") with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): tempfilepath = run("mktemp -t fablib.XXXXXX") with settings(warn_only=True): run("echo \"import os\" > %s" % (tempfilepath)) map(lambda str_echo: run("echo \"%s\" >> %s" % (str_echo, tempfilepath)), - ["os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s.settings')" % (platform_web_module), + ["os.environ.setdefault('DJANGO_SETTINGS_MODULE', '%s')" % (settings_module), "from django.conf import settings", - "print settings.%s" % (settings_key)]) + "print(settings.%s)" % (settings_key)]) res = run("python < %s" % (tempfilepath)) run("rm -f \"%s\"" % (tempfilepath)) return res @@ -212,31 +215,31 @@ run("pip uninstall -y %s" % module_to_uninstall) run("pip install --no-cache-dir \"%s\"" % remotepath) -def collectstatic(remotepath, remotevirtualenvpath, platform_web_module, module_settings=""): +def collectstatic(remotepath, remotevirtualenvpath, platform_web_module, module_settings="", admin_cmd="python manage.py"): print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath)) - remotestaticsitepath = get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, "STATIC_ROOT") + remotestaticsitepath = get_remote_env(remotepath, remotevirtualenvpath, platform_web_module, "STATIC_ROOT", env.settings) activate_path = os.path.join(remotevirtualenvpath, "bin/activate") with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): #remove old files optio -c of collect static fail ! - run("rm -fr \"%s\"" % (remotestaticsitepath)) - run("python manage.py collectstatic --noinput %s" % ("--settings="+module_settings if module_settings else "")) + run("rm -fr \"%s\"/*" % (remotestaticsitepath)) + run("%s collectstatic --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else "")) -def migrate(remotepath, remotevirtualenvpath, module_settings=""): +def migrate(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"): { 'syncdb': do_syncdb, 'migrate': do_migrate, - }.get(getattr(env, 'migrate_method', 'migrate'), do_syncdb)(remotepath, remotevirtualenvpath, module_settings) + }.get(getattr(env, 'migrate_method', 'migrate'), do_syncdb)(remotepath, remotevirtualenvpath, module_settings, admin_cmd) -def do_syncdb(remotepath, remotevirtualenvpath, module_settings=""): +def do_syncdb(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"): activate_path = os.path.join(remotevirtualenvpath, "bin/activate") with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): - run("python manage.py syncdb --migrate --noinput %s" % ("--settings="+module_settings if module_settings else "")) + run("%s syncdb --migrate --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else "")) -def do_migrate(remotepath, remotevirtualenvpath, module_settings=""): +def do_migrate(remotepath, remotevirtualenvpath, module_settings="", admin_cmd="python manage.py"): activate_path = os.path.join(remotevirtualenvpath, "bin/activate") with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): - run("python manage.py migrate --noinput %s" % ("--settings="+module_settings if module_settings else "")) + run("%s migrate --noinput %s" % (admin_cmd, "--settings="+module_settings if module_settings else "")) def create_config(export_path): @@ -287,6 +290,17 @@ with prefix("source \"%s\"" % activate_path): run("pip install --no-cache-dir -r \"%s\"" % os.path.join(remote_venv_export_path,"virtualenv","web","res","srvr_requirements.txt")) +def do_create_virtualenv_requirement(remote_venv_requirement_path, remotevirtualenvpath, python_version = "2"): + print("Create virtualenv export_path : %s - remote venvpath : %s" % (remote_venv_requirement_path, remotevirtualenvpath)) + with settings(warn_only=True): + run("rm -fr \"%s\"" % remotevirtualenvpath) + run("mkdir -p \"%s\"" % remotevirtualenvpath) + run("virtualenv -p `which python%s` %s" % (python_version, remotevirtualenvpath)) + with prefix("source \"%s\"" % os.path.join(remotevirtualenvpath, "bin/activate")): + run("pip install -r \"%s\"" % remote_venv_requirement_path) + + + def do_sync_comp(key, export_path): print("do_sync_comp with path %s" % (export_path)) @@ -351,9 +365,9 @@ if do_check_folder_access: check_folder_access() if do_migrate: - migrate(env.remote_path['src'], env.remote_path['virtualenv'], env.get('settings', '')) + migrate(env.remote_path['src'], env.remote_path['virtualenv'], env.get('settings', ''), env.get('admin_cmd', 'python manage.py')) if do_collectstatic: - collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module, env.get('settings', '')) + collectstatic(env.remote_path['src'], env.remote_path['virtualenv'], env.platform_web_module, env.get('settings', ''), env.get('admin_cmd', 'python manage.py')) sudo(env.web_relaunch_cmd, shell=False)