Files
zulip/scripts/lib/upgrade-zulip-stage-2
Tim Abbott 7395003e6a Fix buggy #! lines using "/usr/bin/env python2.7 -u".
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!
2015-11-16 08:46:48 -08:00

44 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python2.7
import subprocess
import os
import sys
import logging
os.environ["PYTHONUNBUFFERED"] = "y"
sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
from zulip_tools import FAIL, WARNING, ENDC, su_to_zulip
logging.basicConfig(format="%(asctime)s upgrade-zulip-stage-2: %(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 <deploy path>" % (sys.argv[0],) + ENDC
sys.exit(1)
deploy_path = sys.argv[1]
logging.info("Upgrading system packages...")
subprocess.check_call(["apt-get", "update"])
subprocess.check_call(["apt-get", "upgrade"])
logging.info("Stopping Zulip...")
subprocess.check_call(["supervisorctl", "stop", "zulip-workers:*", "zulip-django",
"zulip-tornado"], preexec_fn=su_to_zulip)
logging.info("Applying puppet changes...")
subprocess.check_call(["./scripts/zulip-puppet-apply", "--force"])
subprocess.check_call(["apt-get", "upgrade"])
logging.info("Applying database migrations...")
subprocess.check_call(["./manage.py", "migrate"], preexec_fn=su_to_zulip)
logging.info("Restarting Zulip...")
subprocess.check_call(["cp", "-rT", os.path.join(deploy_path, 'prod-static/serve'),
'/home/zulip/prod-static'], preexec_fn=su_to_zulip)
subprocess.check_output(["./scripts/restart-server"], preexec_fn=su_to_zulip)