def main(argv):
    parser = GetParser()
    options = parser.parse_args(argv)
    options.Freeze()

    overlay_dir = os.path.abspath(_OVERLAY_DIR % {'srcroot': options.srcroot})
    android_package_dir = os.path.join(overlay_dir, constants.ANDROID_CP)
    version_to_uprev = None
    subpaths = None

    (unstable_ebuild,
     stable_ebuilds) = FindAndroidCandidates(android_package_dir)

    if options.force_version:
        version_to_uprev = options.force_version
        subpaths = IsBuildIdValid(options.android_bucket_url,
                                  options.android_build_branch,
                                  version_to_uprev)
        if not subpaths:
            logging.error('Requested build %s is not valid' % version_to_uprev)
    else:
        version_to_uprev, subpaths = GetLatestBuild(
            options.android_bucket_url, options.android_build_branch)

    acls = MakeAclDict(android_package_dir)
    CopyToArcBucket(options.android_bucket_url, options.android_build_branch,
                    version_to_uprev, subpaths, options.arc_bucket_url, acls)

    stable_candidate = portage_util.BestEBuild(stable_ebuilds)

    if stable_candidate:
        logging.info('Stable candidate found %s' % stable_candidate.version)
    else:
        logging.info('No stable candidate found.')

    tracking_branch = 'remotes/m/%s' % os.path.basename(
        options.tracking_branch)
    existing_branch = git.GetCurrentBranch(android_package_dir)
    work_branch = cros_mark_as_stable.GitBranch(constants.STABLE_EBUILD_BRANCH,
                                                tracking_branch,
                                                android_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(overlay_dir, ['rebase', existing_branch])

    android_version_atom = MarkAndroidEBuildAsStable(
        stable_candidate, unstable_ebuild, constants.ANDROID_PN,
        version_to_uprev, android_package_dir, options.android_build_branch,
        options.arc_bucket_url)
    if android_version_atom:
        if options.boards:
            cros_mark_as_stable.CleanStalePackages(options.srcroot,
                                                   options.boards.split(':'),
                                                   [android_version_atom])

        # Explicit print to communicate to caller.
        print('ANDROID_VERSION_ATOM=%s' % android_version_atom)
Ejemplo n.º 2
0
def main(argv):
    parser = GetParser()
    options = parser.parse_args(argv)
    options.Freeze()

    overlay_dir = os.path.abspath(_OVERLAY_DIR % {'srcroot': options.srcroot})
    android_package_dir = os.path.join(overlay_dir, constants.ANDROID_CP)
    version_to_uprev = None

    (unstable_ebuild,
     stable_ebuilds) = FindAndroidCandidates(android_package_dir)
    acls = MakeAclDict(android_package_dir)
    # Mirror artifacts, i.e., images and some sdk tools (e.g., adb, aapt).
    version_to_uprev = MirrorArtifacts(options.android_bucket_url,
                                       options.android_build_branch,
                                       options.arc_bucket_url, acls,
                                       constants.ANDROID_BUILD_TARGETS,
                                       options.force_version)

    # Mirror GTS.
    MirrorArtifacts(options.android_bucket_url,
                    options.android_gts_build_branch, options.arc_bucket_url,
                    acls, constants.ANDROID_GTS_BUILD_TARGETS)

    stable_candidate = portage_util.BestEBuild(stable_ebuilds)

    if stable_candidate:
        logging.info('Stable candidate found %s' % stable_candidate.version)
    else:
        logging.info('No stable candidate found.')

    tracking_branch = 'remotes/m/%s' % os.path.basename(
        options.tracking_branch)
    existing_branch = git.GetCurrentBranch(android_package_dir)
    work_branch = cros_mark_as_stable.GitBranch(constants.STABLE_EBUILD_BRANCH,
                                                tracking_branch,
                                                android_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(overlay_dir, ['rebase', existing_branch])

    android_version_atom = MarkAndroidEBuildAsStable(
        stable_candidate, unstable_ebuild, constants.ANDROID_PN,
        version_to_uprev, android_package_dir, options.android_build_branch,
        options.arc_bucket_url)
    if android_version_atom:
        if options.boards:
            cros_mark_as_stable.CleanStalePackages(options.srcroot,
                                                   options.boards.split(':'),
                                                   [android_version_atom])

        # Explicit print to communicate to caller.
        print('ANDROID_VERSION_ATOM=%s' % android_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)
Ejemplo n.º 4
0
def main(_argv):
    usage_options = '|'.join(constants.VALID_CHROME_REVISIONS)
    usage = '%s OPTIONS [%s]' % (__file__, usage_options)
    parser = optparse.OptionParser(usage)
    parser.add_option('-b', '--boards', default='x86-generic')
    parser.add_option('-c', '--chrome_url', default=gclient.GetBaseURLs()[0])
    parser.add_option('-f', '--force_revision', default=None)
    parser.add_option('-s',
                      '--srcroot',
                      default=os.path.join(os.environ['HOME'], 'trunk', 'src'),
                      help='Path to the src directory')
    parser.add_option('-t',
                      '--tracking_branch',
                      default='cros/master',
                      help='Branch we are tracking changes against')
    (options, args) = parser.parse_args()

    if len(args) != 1 or args[0] not in constants.VALID_CHROME_REVISIONS:
        parser.error('Commit requires arg set to one of %s.' %
                     constants.VALID_CHROME_REVISIONS)

    overlay_dir = os.path.abspath(_CHROME_OVERLAY_DIR %
                                  {'srcroot': options.srcroot})
    chrome_rev = args[0]
    version_to_uprev = None
    commit_to_use = None
    sticky_branch = None

    (unstable_ebuild, stable_ebuilds) = FindChromeCandidates(overlay_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'
        cros_build_lib.Info('Using local source, versioning is untrustworthy.')
    elif chrome_rev == constants.CHROME_REV_SPEC:
        commit_to_use = options.force_revision
        if '@' in commit_to_use:
            commit_to_use = ParseMaxRevision(commit_to_use)
        version_to_uprev = _GetSpecificVersionUrl(options.chrome_url,
                                                  commit_to_use)
    elif chrome_rev == constants.CHROME_REV_TOT:
        commit_to_use = gclient.GetTipOfTrunkSvnRevision(options.chrome_url)
        version_to_uprev = _GetSpecificVersionUrl(options.chrome_url,
                                                  commit_to_use)
    elif chrome_rev == constants.CHROME_REV_LATEST:
        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:
        cros_build_lib.Info('Stable candidate found %s' % stable_candidate)
    else:
        cros_build_lib.Info('No stable candidate found.')

    tracking_branch = 'remotes/m/%s' % os.path.basename(
        options.tracking_branch)
    existing_branch = git.GetCurrentBranch(overlay_dir)
    work_branch = cros_mark_as_stable.GitBranch(constants.STABLE_EBUILD_BRANCH,
                                                tracking_branch, overlay_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:
        cros_build_lib.RunCommand(['git', 'rebase', existing_branch],
                                  cwd=overlay_dir)

    chrome_version_atom = MarkChromeEBuildAsStable(stable_candidate,
                                                   unstable_ebuild, chrome_rev,
                                                   version_to_uprev,
                                                   commit_to_use, overlay_dir)
    # Explicit print to communicate to caller.
    if chrome_version_atom:
        cros_mark_as_stable.CleanStalePackages(options.boards.split(':'),
                                               [chrome_version_atom])
        print 'CHROME_VERSION_ATOM=%s' % chrome_version_atom
Ejemplo n.º 5
0
 def testNothingToUnmerge(self):
     """Clean up packages that don't exist (portage will exit 1)"""
     self.rc.AddCmdResult(partial_mock.In('emerge'), returncode=1)
     cros_mark_as_stable.CleanStalePackages('.', (), ['no/pkg'])
Ejemplo n.º 6
0
 def testNormalClean(self):
     """Clean up boards/packages with normal success"""
     cros_mark_as_stable.CleanStalePackages('.', ('board1', 'board2'),
                                            ['cow', 'car'])
Ejemplo n.º 7
0
 def testUnmergeError(self):
     """Make sure random exit errors are not ignored"""
     self.rc.AddCmdResult(partial_mock.In('emerge'), returncode=123)
     with parallel_unittest.ParallelMock():
         with self.assertRaises(cros_build_lib.RunCommandError):
             cros_mark_as_stable.CleanStalePackages('.', (), ['no/pkg'])