mirror of
https://github.com/zulip/zulip.git
synced 2025-11-07 15:33:30 +00:00
On newer distros like Xenial, Stretch, etc., we were incorrectly not installing the Python 3 version of the virtualenv package. This was accidentally working because most base images with Python already have this package too, but this was failing to install the right dependencies in our Docker builds, requiring unnecessary manual code. We fixed this some time ago for provision.py, but not for production.
41 lines
1.4 KiB
Python
Executable File
41 lines
1.4 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
|
|
import os
|
|
import argparse
|
|
import sys
|
|
|
|
ZULIP_PATH = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
|
if ZULIP_PATH not in sys.path:
|
|
sys.path.append(ZULIP_PATH)
|
|
|
|
from scripts.lib.zulip_tools import run, subprocess_text_output
|
|
from scripts.lib.setup_venv import setup_virtualenv, VENV_DEPENDENCIES
|
|
|
|
parser = argparse.ArgumentParser(description="Create a production virtualenv with caching")
|
|
parser.add_argument("deploy_path")
|
|
args = parser.parse_args()
|
|
|
|
codename = subprocess_text_output(["lsb_release", "-cs"])
|
|
if codename != "trusty":
|
|
# Workaround for the fact that trusty has a different package name here.
|
|
VENV_DEPENDENCIES.append("virtualenv")
|
|
|
|
# install dependencies for setting up the virtualenv
|
|
run(["apt-get", "-y", "install"] + VENV_DEPENDENCIES)
|
|
|
|
python_version = sys.version_info[0]
|
|
|
|
# Set the current working directory to the Zulip checkout, so the api/
|
|
# relative path in requirements/common.in works.
|
|
os.chdir(ZULIP_PATH)
|
|
|
|
venv_name = "zulip-venv" if sys.version_info[0] == 2 else "zulip-py3-venv"
|
|
cached_venv_path = setup_virtualenv(
|
|
os.path.join(args.deploy_path, venv_name),
|
|
os.path.join(ZULIP_PATH, "requirements", "prod.txt"),
|
|
virtualenv_args=['-p', 'python{}'.format(python_version)])
|
|
|
|
current_venv_path = os.path.join(args.deploy_path, 'zulip-current-venv')
|
|
run(['ln', '-nsf', venv_name, current_venv_path])
|
|
# Now the virtualenv has been activated
|