Factor out venv-installing code into a module.

Factor out the code in tools/provision.py which installs a python2
and python3 venv into a module (tools/setup/setup_venvs.py) which
can also be used as a script.
This commit is contained in:
Eklavya Sharma 2016-07-20 19:56:50 -04:00 committed by Tim Abbott
parent 2930a769a9
commit 6548f1dd1c
3 changed files with 27 additions and 5 deletions

View File

@ -239,7 +239,7 @@ You must also install appropriate python packages in them.
You should either install the virtualenvs in `/srv`, or put symlinks to You should either install the virtualenvs in `/srv`, or put symlinks to
them in `/srv`. If you don't do that, some scripts might not work correctly. them in `/srv`. If you don't do that, some scripts might not work correctly.
You can run `tools/setup/setup-venv` to do this. This script will create two You can run `tools/setup/setup_venvs.py` to do this. This script will create two
virtualenvs - /srv/zulip-venv and /srv/zulip-py3-venv. virtualenvs - /srv/zulip-venv and /srv/zulip-py3-venv.
If you want to do it manually, here are the steps: If you want to do it manually, here are the steps:

View File

@ -178,10 +178,10 @@ def main():
DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py3_dev.txt") DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py3_dev.txt")
setup_virtualenv(VENV_PATH, DEV_REQS_FILE, virtualenv_args=['-p', 'python3']) setup_virtualenv(VENV_PATH, DEV_REQS_FILE, virtualenv_args=['-p', 'python3'])
else: else:
DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py2_dev.txt") # Import tools/setup_venv.py instead of running it so that we get an
setup_virtualenv(PY2_VENV_PATH, DEV_REQS_FILE) # activated virtualenv for the rest of the provisioning process.
DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py3_dev.txt") from tools.setup import setup_venvs
setup_virtualenv(PY3_VENV_PATH, DEV_REQS_FILE, virtualenv_args=['-p', 'python3']) setup_venvs.main()
# Put Python2 virtualenv activation in our .bash_profile. # Put Python2 virtualenv activation in our .bash_profile.
with open(os.path.expanduser('~/.bash_profile'), 'w+') as bash_profile: with open(os.path.expanduser('~/.bash_profile'), 'w+') as bash_profile:

22
tools/setup/setup_venvs.py Executable file
View File

@ -0,0 +1,22 @@
#!/usr/bin/env python
import os
import sys
from os.path import dirname, abspath
ZULIP_PATH = dirname(dirname(dirname(abspath(__file__))))
if ZULIP_PATH not in sys.path:
sys.path.append(ZULIP_PATH)
from scripts.lib.setup_venv import setup_virtualenv
def main():
# type: () -> None
PY2_DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py2_dev.txt")
setup_virtualenv("/srv/zulip-venv", PY2_DEV_REQS_FILE)
PY3_DEV_REQS_FILE = os.path.join(ZULIP_PATH, "requirements", "py3_dev.txt")
setup_virtualenv("/srv/zulip-py3-venv", PY3_DEV_REQS_FILE, virtualenv_args=['-p', 'python3'])
if __name__ == "__main__":
main()