def main(): script_path = os.path.dirname(__file__) src_root = script_path + "/../" verbose = False opts, args = getopt.getopt(sys.argv[1:], "", [ 'version=', 'revision=', 'channel=', 'server_channel=', 'skip-on-branch=', 'verbose', 'server', 'viewer', 'help' ]) update_server = False update_viewer = False new_version = None new_revision = None new_viewer_channel = None new_server_channel = None skip_on_branch_re = None for o, a in opts: if o in ('--version'): new_version = a if o in ('--revision'): new_revision = a if o in ('--skip-on-branch'): skip_on_branch_re = re.compile(a) if o in ('--channel'): new_viewer_channel = a if o in ('--server_channel'): new_server_channel = a if o in ('--verbose'): verbose = True if o in ('--server'): update_server = True if o in ('--viewer'): update_viewer = True if o in ('--help'): usage() return 0 if not (update_server or update_viewer): update_server = True update_viewer = True # Get current channel/version from llversion*.h try: viewer_channel = llversion.get_viewer_channel() viewer_version = llversion.get_viewer_version() except IOError: print "Viewer version file not present, skipping..." viewer_channel = None viewer_version = None update_viewer = False try: server_channel = llversion.get_server_channel() server_version = llversion.get_server_version() except IOError: print "Server version file not present, skipping..." server_channel = None server_version = None update_server = False if verbose: print "Source Path:", src_root if viewer_channel != None: print "Current viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals( ) if server_channel != None: print "Current server channel/version: '%(server_channel)s' / '%(server_version)s'" % locals( ) print # Determine new channel(s) if new_viewer_channel != None and len(new_viewer_channel) > 0: viewer_channel = new_viewer_channel if new_server_channel != None and len(new_server_channel) > 0: server_channel = new_server_channel # Determine new version(s) if new_version: m = version_re.match(new_version) if not m: print "Invalid version string specified!" return -1 if update_viewer: viewer_version = new_version if update_server: server_version = new_version else: if llversion.using_svn(): if new_revision: revision = new_revision else: revision = llversion.get_svn_revision() branch = llversion.get_svn_branch() elif llversion.using_hg(): if new_revision: revision = new_revision else: revision = llversion.get_hg_changeset() branch = llversion.get_hg_repo() elif new_revision: revision = new_revision branch = "unknown" else: print >> sys.stderr, "ERROR: could not determine revision and branch" return -1 if skip_on_branch_re and skip_on_branch_re.match(branch): print "Release Candidate Build, leaving version files untouched." return 0 if update_viewer: m = version_re.match(viewer_version) viewer_version = m.group(1) + "." + m.group(2) + "." + m.group( 3) + "." + revision if update_server: m = version_re.match(server_version) server_version = m.group(1) + "." + m.group(2) + "." + m.group( 3) + "." + revision if verbose: if update_viewer: print "Setting viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals( ) if update_server: print "Setting server channel/version: '%(server_channel)s' / '%(server_version)s'" % locals( ) print # split out version parts if viewer_version != None: m = version_re.match(viewer_version) VER_MAJOR = m.group(1) VER_MINOR = m.group(2) VER_PATCH = m.group(3) VER_BUILD = m.group(4) if server_version != None: m = version_re.match(server_version) SERVER_VER_MAJOR = m.group(1) SERVER_VER_MINOR = m.group(2) SERVER_VER_PATCH = m.group(3) SERVER_VER_BUILD = m.group(4) # For readability and symmetry with version strings: VIEWER_CHANNEL = viewer_channel SERVER_CHANNEL = server_channel # Iterate through all of the files in the map, and apply the # substitution filters for filename in re_map.keys(): try: # Read the entire file into a string full_fn = src_root + '/' + filename file = open(full_fn, "r") file_str = file.read() file.close() if verbose: print "Processing file:", filename for rule in re_map[filename]: repl = rule[1] % locals() file_str = re.sub(rule[0], repl, file_str) file = open(full_fn, "w") file.write(file_str) file.close() except IOError: print "File %(filename)s not present, skipping..." % locals() return 0
def main(): script_path = os.path.dirname(__file__) src_root = script_path + "/../" verbose = False opts, args = getopt.getopt(sys.argv[1:], "", ['version=', 'revision=', 'channel=', 'server_channel=', 'skip-on-branch=', 'verbose', 'server', 'viewer', 'help']) update_server = False update_viewer = False new_version = None new_revision = None new_viewer_channel = None new_server_channel = None skip_on_branch_re = None for o,a in opts: if o in ('--version'): new_version = a if o in ('--revision'): new_revision = a if o in ('--skip-on-branch'): skip_on_branch_re = re.compile(a) if o in ('--channel'): new_viewer_channel = a if o in ('--server_channel'): new_server_channel = a if o in ('--verbose'): verbose = True if o in ('--server'): update_server = True if o in ('--viewer'): update_viewer = True if o in ('--help'): usage() return 0 if not(update_server or update_viewer): update_server = True update_viewer = True # Get current channel/version from llversion*.h try: viewer_channel = llversion.get_viewer_channel() viewer_version = llversion.get_viewer_version() except IOError: print "Viewer version file not present, skipping..." viewer_channel = None viewer_version = None update_viewer = False try: server_channel = llversion.get_server_channel() server_version = llversion.get_server_version() except IOError: print "Server version file not present, skipping..." server_channel = None server_version = None update_server = False if verbose: print "Source Path:", src_root if viewer_channel != None: print "Current viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals() if server_channel != None: print "Current server channel/version: '%(server_channel)s' / '%(server_version)s'" % locals() print # Determine new channel(s) if new_viewer_channel != None and len(new_viewer_channel) > 0: viewer_channel = new_viewer_channel if new_server_channel != None and len(new_server_channel) > 0: server_channel = new_server_channel # Determine new version(s) if new_version: m = version_re.match(new_version) if not m: print "Invalid version string specified!" return -1 if update_viewer: viewer_version = new_version if update_server: server_version = new_version else: if llversion.using_hg(): if new_revision: revision = new_revision else: revision = llversion.get_hg_changeset() branch = llversion.get_hg_repo() elif new_revision: revision = new_revision branch = "unknown" else: print >>sys.stderr, "ERROR: could not determine revision and branch" return -1 if skip_on_branch_re and skip_on_branch_re.match(branch): print "Release Candidate Build, leaving version files untouched." return 0 if update_viewer: m = version_re.match(viewer_version) viewer_version = m.group(1)+"."+m.group(2)+"."+m.group(3)+"."+revision if update_server: m = version_re.match(server_version) server_version = m.group(1)+"."+m.group(2)+"."+m.group(3)+"."+revision if verbose: if update_viewer: print "Setting viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals() if update_server: print "Setting server channel/version: '%(server_channel)s' / '%(server_version)s'" % locals() print # split out version parts if viewer_version != None: m = version_re.match(viewer_version) VER_MAJOR = m.group(1) VER_MINOR = m.group(2) VER_PATCH = m.group(3) VER_BUILD = m.group(4) if server_version != None: m = version_re.match(server_version) SERVER_VER_MAJOR = m.group(1) SERVER_VER_MINOR = m.group(2) SERVER_VER_PATCH = m.group(3) SERVER_VER_BUILD = m.group(4) # For readability and symmetry with version strings: VIEWER_CHANNEL = viewer_channel SERVER_CHANNEL = server_channel # Iterate through all of the files in the map, and apply the # substitution filters for filename in re_map.keys(): try: # Read the entire file into a string full_fn = src_root + '/' + filename file = open(full_fn,"r") file_str = file.read() file.close() if verbose: print "Processing file:",filename for rule in re_map[filename]: repl = rule[1] % locals() file_str = re.sub(rule[0], repl, file_str) file = open(full_fn,"w") file.write(file_str) file.close() except IOError: print "File %(filename)s not present, skipping..." % locals() return 0
def main(): script_path = os.path.dirname(__file__) src_root = script_path + "/../" verbose = False opts, args = getopt.getopt(sys.argv[1:], "", [ 'version=', 'channel=', 'server_channel=', 'skip-on-branch=', 'src-root=', 'verbose', 'viewer', 'help' ]) update_viewer = False new_version = None new_viewer_channel = None skip_on_branch_re = None for o, a in opts: if o in ('--version'): new_version = a if o in ('--skip-on-branch'): skip_on_branch_re = re.compile(a) if o in ('--channel'): new_viewer_channel = a if o in ('--src-root'): src_root = a if o in ('--verbose'): verbose = True if o in ('--server'): update_server = True if o in ('--viewer'): update_viewer = True if o in ('--help'): usage() return 0 if not (update_viewer): update_viewer = True # Get current channel/version from llversion*.h try: viewer_channel = llversion.get_viewer_channel() viewer_version = llversion.get_viewer_version() except IOError: print "Viewer version file not present, skipping..." viewer_channel = None viewer_version = None update_viewer = False if verbose: print "Source Path:", src_root if viewer_channel != None: print "Current viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals( ) print # Determine new channel(s) if new_viewer_channel != None and len(new_viewer_channel) > 0: viewer_channel = new_viewer_channel # Determine new version(s) if new_version: m = version_re.match(new_version) if not m: print "Invalid version string specified!" return -1 if update_viewer: viewer_version = new_version else: # Assume we're updating just the build number cl = '%s info "%s"' % (svn, src_root) status, output = _getstatusoutput(cl) if verbose: print print "svn info output:" print "----------------" print output branch_match = svn_branch_re.search(output) revision_match = svn_revision_re.search(output) if not branch_match or not revision_match: print "Failed to execute svn info, output follows:" print output return -1 branch = branch_match.group(1) revision = revision_match.group(1) if skip_on_branch_re and skip_on_branch_re.match(branch): print "Release Candidate Build, leaving version files untouched." return 0 if update_viewer: m = version_re.match(viewer_version) viewer_version = m.group(1) + "." + m.group(2) + "." + m.group( 3) + "." + revision if verbose: if update_viewer: print "Setting viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals( ) print # split out version parts if viewer_version != None: m = version_re.match(viewer_version) VER_MAJOR = m.group(1) VER_MINOR = m.group(2) VER_PATCH = m.group(3) VER_BUILD = m.group(4) # For readability and symmetry with version strings: VIEWER_CHANNEL = viewer_channel # Iterate through all of the files in the map, and apply the # substitution filters for filename in re_map.keys(): try: # Read the entire file into a string full_fn = src_root + '/' + filename file = open(full_fn, "r") file_str = file.read() file.close() if verbose: print "Processing file:", filename for rule in re_map[filename]: repl = rule[1] % locals() file_str = re.sub(rule[0], repl, file_str) file = open(full_fn, "w") file.write(file_str) file.close() except IOError: print "File %(filename)s not present, skipping..." % locals() return 0
def main(): script_path = os.path.dirname(__file__) src_root = script_path + "/../" verbose = False opts, args = getopt.getopt(sys.argv[1:], "", ['version=', 'channel=', 'server_channel=', 'skip-on-branch=', 'src-root=', 'verbose', 'viewer', 'help']) update_viewer = False new_version = None new_viewer_channel = None skip_on_branch_re = None for o,a in opts: if o in ('--version'): new_version = a if o in ('--skip-on-branch'): skip_on_branch_re = re.compile(a) if o in ('--channel'): new_viewer_channel = a if o in ('--src-root'): src_root = a if o in ('--verbose'): verbose = True if o in ('--server'): update_server = True if o in ('--viewer'): update_viewer = True if o in ('--help'): usage() return 0 if not(update_viewer): update_viewer = True # Get current channel/version from llversion*.h try: viewer_channel = llversion.get_viewer_channel() viewer_version = llversion.get_viewer_version() except IOError: print "Viewer version file not present, skipping..." viewer_channel = None viewer_version = None update_viewer = False if verbose: print "Source Path:", src_root if viewer_channel != None: print "Current viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals() print # Determine new channel(s) if new_viewer_channel != None and len(new_viewer_channel) > 0: viewer_channel = new_viewer_channel # Determine new version(s) if new_version: m = version_re.match(new_version) if not m: print "Invalid version string specified!" return -1 if update_viewer: viewer_version = new_version else: # Assume we're updating just the build number cl = '%s info "%s"' % (svn, src_root) status, output = _getstatusoutput(cl) if verbose: print print "svn info output:" print "----------------" print output branch_match = svn_branch_re.search(output) revision_match = svn_revision_re.search(output) if not branch_match or not revision_match: print "Failed to execute svn info, output follows:" print output return -1 branch = branch_match.group(1) revision = revision_match.group(1) if skip_on_branch_re and skip_on_branch_re.match(branch): print "Release Candidate Build, leaving version files untouched." return 0 if update_viewer: m = version_re.match(viewer_version) viewer_version = m.group(1)+"."+m.group(2)+"."+m.group(3)+"."+revision if verbose: if update_viewer: print "Setting viewer channel/version: '%(viewer_channel)s' / '%(viewer_version)s'" % locals() print # split out version parts if viewer_version != None: m = version_re.match(viewer_version) VER_MAJOR = m.group(1) VER_MINOR = m.group(2) VER_PATCH = m.group(3) VER_BUILD = m.group(4) # For readability and symmetry with version strings: VIEWER_CHANNEL = viewer_channel # Iterate through all of the files in the map, and apply the # substitution filters for filename in re_map.keys(): try: # Read the entire file into a string full_fn = src_root + '/' + filename file = open(full_fn,"r") file_str = file.read() file.close() if verbose: print "Processing file:",filename for rule in re_map[filename]: repl = rule[1] % locals() file_str = re.sub(rule[0], repl, file_str) file = open(full_fn,"w") file.write(file_str) file.close() except IOError: print "File %(filename)s not present, skipping..." % locals() return 0
def main(): option_names = [arg['name'] + '=' for arg in ARGUMENTS] option_names.append('help') options, remainder = getopt.getopt(sys.argv[1:], "", option_names) # convert options to a hash args = {'source': DEFAULT_SRCTREE, 'artwork': DEFAULT_SRCTREE, 'build': DEFAULT_SRCTREE, 'dest': DEFAULT_SRCTREE } for opt in options: args[opt[0].replace("--", "")] = opt[1] for k in 'artwork build dest source'.split(): args[k] = os.path.normpath(args[k]) print "Source tree:", args['source'] print "Artwork tree:", args['artwork'] print "Build tree:", args['build'] print "Destination tree:", args['dest'] # early out for help if 'help' in args: # *TODO: it is a huge hack to pass around the srctree like this usage(args['source']) return # defaults for arg in ARGUMENTS: if arg['name'] not in args: default = arg['default'] if hasattr(default, '__call__'): default = default(args['source']) if default is not None: args[arg['name']] = default # fix up version if args.get('version') is None: args['version'] = llversion.get_viewer_version().split('.') elif isinstance(args['version'], str): args['version'] = args['version'].split('.') # default and agni are default if args['grid'] in ['default', 'agni']: args['grid'] = '' if 'actions' in args: args['actions'] = args['actions'].split() # debugging for opt in args: print "Option:", opt, "=", args[opt] wm = LLManifest.for_platform(args['platform'], args.get('arch'))(args) wm.do(*args['actions']) # Write out the package file in this format, so that it can easily be called # and used in a .bat file - yeah, it sucks, but this is the simplest... touch = args.get('touch') if touch: fp = open(touch, 'w') fp.write('set package_file=%s\n' % wm.package_file) fp.close() print 'touched', touch return 0
def main(): option_names = [arg['name'] + '=' for arg in ARGUMENTS] option_names.append('help') options, remainder = getopt.getopt(sys.argv[1:], "", option_names) # convert options to a hash args = { 'source': DEFAULT_SRCTREE, 'artwork': DEFAULT_SRCTREE, 'build': DEFAULT_SRCTREE, 'dest': DEFAULT_SRCTREE } for opt in options: args[opt[0].replace("--", "")] = opt[1] for k in 'artwork build dest source'.split(): args[k] = os.path.normpath(args[k]) print "Source tree:", args['source'] print "Artwork tree:", args['artwork'] print "Build tree:", args['build'] print "Destination tree:", args['dest'] # early out for help if 'help' in args: # *TODO: it is a huge hack to pass around the srctree like this usage(args['source']) return # defaults for arg in ARGUMENTS: if arg['name'] not in args: default = arg['default'] if hasattr(default, '__call__'): default = default(args['source']) if default is not None: args[arg['name']] = default # fix up version if args.get('version') is None: args['version'] = llversion.get_viewer_version().split('.') elif isinstance(args['version'], str): args['version'] = args['version'].split('.') # default and agni are default if args['grid'] in ['default', 'agni']: args['grid'] = '' if 'actions' in args: args['actions'] = args['actions'].split() # debugging for opt in args: print "Option:", opt, "=", args[opt] wm = LLManifest.for_platform(args['platform'], args.get('arch'))(args) wm.do(*args['actions']) # Write out the package file in this format, so that it can easily be called # and used in a .bat file - yeah, it sucks, but this is the simplest... touch = args.get('touch') if touch: fp = open(touch, 'w') fp.write('set package_file=%s\n' % wm.package_file) fp.close() print 'touched', touch return 0