def testGetTipOfTrunkRevision(self): """Tests if we can get the latest svn revision from TOT.""" A_URL = 'dorf://mink/delaane/forkat/sertiunu.ortg./desk' result = {'log': [{'commit': 'deadbeef' * 5}]} self.PatchObject(gob_util, 'FetchUrlJson', return_value=result) revision = gob_util.GetTipOfTrunkRevision(A_URL) self.assertEqual(revision, 'deadbeef' * 5)
def main(_argv): parser = commandline.ArgumentParser(usage=__doc__) parser.add_argument('--force_version', default=None, help='git revision hash to use') parser.add_argument('--repo_url', default=MOJO_REPO_URL) parser.add_argument('--srcroot', type='path', default=os.path.join(os.environ['HOME'], 'trunk', 'src'), help='Path to the src directory') parser.add_argument('--tracking_branch', default='cros/master', help='Branch we are tracking changes against') options = parser.parse_args() options.Freeze() mojo_version_atom = None ebuild_dir = os.path.join(options.srcroot, MOJO_EBUILD_PATH) # Figure out commit to use and its date. if options.force_version: commit_to_use = options.force_version else: commit_to_use = gob_util.GetTipOfTrunkRevision(options.repo_url) date_of_commit = gob_util.GetCommitDate(options.repo_url, commit_to_use) # Do the uprev and explicit print version to inform caller if we # made a change. mojo_version_atom = UprevStableEBuild(ebuild_dir, commit_to_use, date_of_commit, options.tracking_branch) if mojo_version_atom: print('MOJO_VERSION_ATOM=%s' % mojo_version_atom)
def main(argv): parser = GetParser() options = parser.parse_args(argv) options.Freeze() chrome_rev = options.revision if options.force_version and chrome_rev not in ( constants.CHROME_REV_SPEC, constants.CHROME_REV_LATEST): parser.error('--force_version is not compatible with the %r ' 'option.' % (chrome_rev, )) overlay_dir = os.path.abspath(_OVERLAY_DIR % {'srcroot': options.srcroot}) chrome_package_dir = os.path.join(overlay_dir, constants.CHROME_CP) version_to_uprev = None commit_to_use = None sticky_branch = None (unstable_ebuild, stable_ebuilds) = FindChromeCandidates(chrome_package_dir) if chrome_rev == constants.CHROME_REV_LOCAL: if 'CHROME_ROOT' in os.environ: chrome_root = os.environ['CHROME_ROOT'] else: chrome_root = os.path.join(os.environ['HOME'], 'chrome_root') version_to_uprev = _GetTipOfTrunkVersionFile(chrome_root) commit_to_use = 'Unknown' logging.info('Using local source, versioning is untrustworthy.') elif chrome_rev == constants.CHROME_REV_SPEC: if '.' in options.force_version: version_to_uprev = options.force_version else: commit_to_use = options.force_version if '@' in commit_to_use: commit_to_use = commit_to_use.rpartition('@')[2] version_to_uprev = _GetSpecificVersionUrl(options.chrome_url, commit_to_use) elif chrome_rev == constants.CHROME_REV_TOT: commit_to_use = gob_util.GetTipOfTrunkRevision(options.chrome_url) version_to_uprev = _GetSpecificVersionUrl(options.chrome_url, commit_to_use) elif chrome_rev == constants.CHROME_REV_LATEST: if options.force_version: if '.' not in options.force_version: parser.error( '%s only accepts released Chrome versions, not SVN or ' 'Git revisions.' % (chrome_rev, )) version_to_uprev = options.force_version else: version_to_uprev = GetLatestRelease(options.chrome_url) else: sticky_ebuild = _GetStickyEBuild(stable_ebuilds) sticky_version = sticky_ebuild.chrome_version sticky_branch = sticky_version.rpartition('.')[0] version_to_uprev = GetLatestRelease(options.chrome_url, sticky_branch) stable_candidate = FindChromeUprevCandidate(stable_ebuilds, chrome_rev, sticky_branch) if stable_candidate: logging.info('Stable candidate found %s' % stable_candidate) else: logging.info('No stable candidate found.') tracking_branch = 'remotes/m/%s' % os.path.basename( options.tracking_branch) existing_branch = git.GetCurrentBranch(chrome_package_dir) work_branch = cros_mark_as_stable.GitBranch(constants.STABLE_EBUILD_BRANCH, tracking_branch, chrome_package_dir) work_branch.CreateBranch() # In the case of uprevving overlays that have patches applied to them, # include the patched changes in the stabilizing branch. if existing_branch: git.RunGit(chrome_package_dir, ['rebase', existing_branch]) chrome_version_atom = MarkChromeEBuildAsStable( stable_candidate, unstable_ebuild, 'chromeos-chrome', chrome_rev, version_to_uprev, commit_to_use, chrome_package_dir) if chrome_version_atom: if options.boards: cros_mark_as_stable.CleanStalePackages(options.srcroot, options.boards.split(':'), [chrome_version_atom]) # If we did rev Chrome, now is a good time to uprev other packages. for other_ebuild in constants.OTHER_CHROME_PACKAGES: other_ebuild_name = os.path.basename(other_ebuild) other_package_dir = os.path.join(overlay_dir, other_ebuild) (other_unstable_ebuild, other_stable_ebuilds) = FindChromeCandidates(other_package_dir) other_stable_candidate = FindChromeUprevCandidate( other_stable_ebuilds, chrome_rev, sticky_branch) revved_atom = MarkChromeEBuildAsStable( other_stable_candidate, other_unstable_ebuild, other_ebuild_name, chrome_rev, version_to_uprev, commit_to_use, other_package_dir) if revved_atom and options.boards: cros_mark_as_stable.CleanStalePackages( options.srcroot, options.boards.split(':'), [revved_atom]) # Explicit print to communicate to caller. if chrome_version_atom: print('CHROME_VERSION_ATOM=%s' % chrome_version_atom)
def _RunBuildStagesWrapper(options, site_config, build_config): """Helper function that wraps RunBuildStages().""" logging.info('cbuildbot was executed with args %s' % cros_build_lib.CmdToStr(sys.argv)) chrome_rev = build_config['chrome_rev'] if options.chrome_rev: chrome_rev = options.chrome_rev if chrome_rev == constants.CHROME_REV_TOT: options.chrome_version = gob_util.GetTipOfTrunkRevision( constants.CHROMIUM_GOB_URL) options.chrome_rev = constants.CHROME_REV_SPEC # If it's likely we'll need to build Chrome, fetch the source. if build_config['sync_chrome'] is None: options.managed_chrome = (chrome_rev != constants.CHROME_REV_LOCAL and (not build_config['usepkg_build_packages'] or chrome_rev or build_config['profile'])) else: options.managed_chrome = build_config['sync_chrome'] if options.managed_chrome: # Tell Chrome to fetch the source locally. internal = constants.USE_CHROME_INTERNAL in build_config['useflags'] chrome_src = 'chrome-src-internal' if internal else 'chrome-src' target_name = 'target' if options.branch: # Tie the cache per branch target_name = 'target-%s' % options.branch options.chrome_root = os.path.join(options.cache_dir, 'distfiles', target_name, chrome_src) # Create directory if in need osutils.SafeMakedirsNonRoot(options.chrome_root) # We are done munging options values, so freeze options object now to avoid # further abuse of it. # TODO(mtennant): one by one identify each options value override and see if # it can be handled another way. Try to push this freeze closer and closer # to the start of the script (e.g. in or after _PostParseCheck). options.Freeze() metadata_dump_dict = { # A detected default has been set before now if it wasn't explicit. 'branch': options.branch, } if options.metadata_dump: with open(options.metadata_dump, 'r') as metadata_file: metadata_dump_dict = json.loads(metadata_file.read()) with parallel.Manager() as manager: builder_run = cbuildbot_run.BuilderRun(options, site_config, build_config, manager) if metadata_dump_dict: builder_run.attrs.metadata.UpdateWithDict(metadata_dump_dict) if builder_run.config.builder_class_name is None: # TODO: This should get relocated to chromeos_config. if _IsDistributedBuilder(options, chrome_rev, build_config): builder_cls_name = 'simple_builders.DistributedBuilder' else: builder_cls_name = 'simple_builders.SimpleBuilder' builder_cls = builders.GetBuilderClass(builder_cls_name) builder = builder_cls(builder_run) else: builder = builders.Builder(builder_run) if not builder.Run(): sys.exit(1)