mirror of https://github.com/zulip/zulip.git
setup_virtualenv: Do not activate the virtualenv on creation.
Instead, manually activate it in the one place where this functionality was used (tools/lib/provision.py). This way we avoid trying to activate the Python 2 thumbor virtualenv from Python 3. Signed-off-by: Anders Kaseorg <andersk@mit.edu>
This commit is contained in:
parent
1bcd7dfbad
commit
893e1475bb
|
@ -48,4 +48,3 @@ cached_venv_path = setup_virtualenv(
|
|||
|
||||
current_venv_path = os.path.join(args.deploy_path, 'zulip-current-venv')
|
||||
overwrite_symlink(venv_name, current_venv_path)
|
||||
# Now the virtualenv has been activated
|
||||
|
|
|
@ -100,11 +100,11 @@ YUM_THUMBOR_VENV_DEPENDENCIES = [
|
|||
"gifsicle",
|
||||
]
|
||||
|
||||
def install_venv_deps(requirements_file):
|
||||
# type: (str) -> None
|
||||
def install_venv_deps(pip, requirements_file):
|
||||
# type: (str, str) -> None
|
||||
pip_requirements = os.path.join(ZULIP_PATH, "requirements", "pip.txt")
|
||||
run(["pip", "install", "-U", "--requirement", pip_requirements])
|
||||
run(["pip", "install", "--no-deps", "--requirement", requirements_file])
|
||||
run([pip, "install", "-U", "--requirement", pip_requirements])
|
||||
run([pip, "install", "--no-deps", "--requirement", requirements_file])
|
||||
|
||||
def get_index_filename(venv_path):
|
||||
# type: (str) -> str
|
||||
|
@ -294,8 +294,6 @@ def setup_virtualenv(target_venv_path, requirements_file, virtualenv_args=None,
|
|||
run(["sudo", "ln", "-nsf", cached_venv_path, target_venv_path])
|
||||
if patch_activate_script:
|
||||
do_patch_activate_script(target_venv_path)
|
||||
activate_this = os.path.join(cached_venv_path, "bin", "activate_this.py")
|
||||
exec(open(activate_this).read(), {}, dict(__file__=activate_this))
|
||||
return cached_venv_path
|
||||
|
||||
def add_cert_to_pipconf():
|
||||
|
@ -321,9 +319,8 @@ def do_setup_virtualenv(venv_path, requirements_file, virtualenv_args):
|
|||
create_log_entry(get_logfile_name(venv_path), "", set(), new_packages)
|
||||
|
||||
create_requirements_index_file(venv_path, requirements_file)
|
||||
# Switch current Python context to the virtualenv.
|
||||
activate_this = os.path.join(venv_path, "bin", "activate_this.py")
|
||||
exec(open(activate_this).read(), {}, dict(__file__=activate_this))
|
||||
|
||||
pip = os.path.join(venv_path, "bin", "pip")
|
||||
|
||||
# use custom certificate if needed
|
||||
if os.environ.get('CUSTOM_CA_CERTIFICATES'):
|
||||
|
@ -343,15 +340,15 @@ def do_setup_virtualenv(venv_path, requirements_file, virtualenv_args):
|
|||
if os.path.exists("/etc/redhat-release"):
|
||||
pycurl_env = os.environ.copy()
|
||||
pycurl_env["PYCURL_SSL_LIBRARY"] = "nss"
|
||||
run(["pip", "install", "pycurl==7.43.0.2", "--compile", "--no-cache-dir"],
|
||||
run([pip, "install", "pycurl==7.43.0.2", "--compile", "--no-cache-dir"],
|
||||
env=pycurl_env)
|
||||
|
||||
try:
|
||||
install_venv_deps(requirements_file)
|
||||
install_venv_deps(pip, requirements_file)
|
||||
except subprocess.CalledProcessError:
|
||||
# Might be a failure due to network connection issues. Retrying...
|
||||
print(WARNING + "`pip install` failed; retrying..." + ENDC)
|
||||
install_venv_deps(requirements_file)
|
||||
install_venv_deps(pip, requirements_file)
|
||||
|
||||
# The typing module has been included in stdlib since 3.5.
|
||||
# Installing a pypi version of it has been harmless until a bug
|
||||
|
@ -361,6 +358,6 @@ def do_setup_virtualenv(venv_path, requirements_file, virtualenv_args):
|
|||
# Remove this once 3.4 is no longer supported.
|
||||
at_least_35 = (sys.version_info.major == 3) and (sys.version_info.minor >= 5)
|
||||
if at_least_35 and ('python2.7' not in virtualenv_args):
|
||||
run(["pip", "uninstall", "-y", "typing"])
|
||||
run([pip, "uninstall", "-y", "typing"])
|
||||
|
||||
run(["sudo", "chmod", "-R", "a+rX", venv_path])
|
||||
|
|
|
@ -390,11 +390,12 @@ def main(options):
|
|||
# Install shellcheck.
|
||||
run(["sudo", "scripts/lib/install-shellcheck"])
|
||||
|
||||
# Import tools/setup_venv.py instead of running it so that we get an
|
||||
# activated virtualenv for the rest of the provisioning process.
|
||||
from tools.setup import setup_venvs
|
||||
setup_venvs.main()
|
||||
|
||||
activate_this = "/srv/zulip-py3-venv/bin/activate_this.py"
|
||||
exec(open(activate_this).read(), {}, dict(__file__=activate_this))
|
||||
|
||||
setup_shell_profile('~/.bash_profile')
|
||||
setup_shell_profile('~/.zprofile')
|
||||
|
||||
|
|
Loading…
Reference in New Issue