mirror of
https://github.com/zulip/zulip.git
synced 2025-10-27 10:03:56 +00:00
The #! line processing interpreted the argument to pass to `env` as "python2.7 -u", which obviously isn't a real program. We fix this by setting the PYTHONUNBUFFERED environment variable inside the program, which has the same effect. Thanks to Dan Fedele for the bug report and suggested solution!
59 lines
1.8 KiB
Python
Executable File
59 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python2.7
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
import logging
|
|
import shutil
|
|
import time
|
|
|
|
os.environ["PYTHONUNBUFFERED"] = "y"
|
|
|
|
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
|
|
from zulip_tools import DEPLOYMENTS_DIR, LOCK_DIR, FAIL, WARNING, ENDC, \
|
|
su_to_zulip
|
|
|
|
logging.basicConfig(format="%(asctime)s upgrade-zulip: %(message)s",
|
|
level=logging.INFO)
|
|
|
|
if os.getuid() != 0:
|
|
logging.error("Must be run as root.")
|
|
sys.exit(1)
|
|
|
|
if len(sys.argv) != 2:
|
|
print FAIL + "Usage: %s <tarball>" % (sys.argv[0],) + ENDC
|
|
sys.exit(1)
|
|
|
|
tarball_path = sys.argv[1]
|
|
|
|
start_time = time.time()
|
|
got_lock = False
|
|
while time.time() - start_time < 300:
|
|
try:
|
|
os.mkdir(LOCK_DIR)
|
|
got_lock = True
|
|
break
|
|
except OSError:
|
|
print WARNING + "Another deployment in progress; waiting for lock... (If no deployment is running, rmdir %s)" % (LOCK_DIR,) + ENDC
|
|
time.sleep(10)
|
|
|
|
if not got_lock:
|
|
print FAIL + "Deployment already in progress. Please run\n" \
|
|
+ " %s/current/scripts/upgrade-zulip %s\n" % (DEPLOYMENTS_DIR, tarball_path) \
|
|
+ "manually when the previous deployment finishes, or run\n" \
|
|
+ " rmdir %s\n" % (LOCK_DIR,) \
|
|
+ "if the previous deployment crashed." \
|
|
+ ENDC
|
|
sys.exit(1)
|
|
|
|
logging.info("Unpacking the tarball")
|
|
deploy_path = subprocess.check_output([os.path.realpath(os.path.join(os.path.dirname(__file__),
|
|
'unpack-zulip')),
|
|
tarball_path], preexec_fn=su_to_zulip)
|
|
deploy_path = deploy_path.strip()
|
|
os.chdir(deploy_path)
|
|
|
|
subprocess.check_call(["./scripts/lib/upgrade-zulip-stage-2", deploy_path])
|
|
|
|
logging.info("Deployment complete")
|
|
shutil.rmtree(LOCK_DIR)
|