#!/usr/bin/env python # $Id$ ''' Usage: upgrade [options] project_name Options: --project_root default: HOME/projects/ Copy source/build files to a project tree, overwriting what's already there. Run it in the source directory (tools/upgrade). ''' import boinc_path_config from Boinc import boinc_project_path, tools from Boinc.setup_project import * import os, getopt def usage(): print "Usage: upgrade [--project_root] [--web_only] project_name" raise SystemExit def syntax_error(str): raise SystemExit('%s; See "%s --help" for help\n' % (str, sys.argv[0])) try: opts, args = getopt.getopt(sys.argv[1:], '', ['help', 'project_root=', 'web_only']) except getopt.GetoptError, e: syntax_error(e) home = os.path.expanduser('~') options.project_root = os.path.join(home, 'projects') options.web_only = False for o,a in opts: if o == '--help': usage() elif o == '--project_root': options.project_root = a elif o == '--web_only': options.web_only = True else: raise SystemExit('internal error o=%s'%o) if len(args) == 1: project_shortname = args[0] else: syntax_error('No project name') INSTALL_DIR = os.path.join(options.project_root, project_shortname) if not tools.query_noyes("Overwrite files in "+INSTALL_DIR): raise SystemExit if os.system(os.path.join(INSTALL_DIR,'bin/stop')): raise SystemExit("Couldn't stop project!") print "Upgrading files... " options.install_method = 'copy' init() install_boinc_files(INSTALL_DIR, options.web_only) print "Upgrading files... done" print "You may need to do database upgrades also." print "(see html/ops/db_update.php)" print "Run `bin/start' to restart the project." svn_version_file = INSTALL_DIR+'/local.revision' try: os.system('/bin/sh -c /usr/bin/svnversion > '+svn_version_file) except: print '''Couldn't find svnversion''' #if os.system(os.path.join(INSTALL_DIR,'bin/start')): # raise SystemExit("Couldn't start BOINC!")