| Index: bin/cros_mark_chrome_as_stable.py
|
| diff --git a/bin/cros_mark_chrome_as_stable.py b/bin/cros_mark_chrome_as_stable.py
|
| index 356b97d6decebb2acbe31358c098635f8f65d6eb..23655500f9bab2cce4a5b4850eff27b54e2e3ed0 100755
|
| --- a/bin/cros_mark_chrome_as_stable.py
|
| +++ b/bin/cros_mark_chrome_as_stable.py
|
| @@ -109,8 +109,8 @@ def _GetLatestRelease(branch=None):
|
| return current_version.rstrip('/')
|
|
|
|
|
| -def _GetStickyVersion(stable_ebuilds):
|
| - """Discovers the sticky version from the current stable_ebuilds."""
|
| +def _GetStickyEBuild(stable_ebuilds):
|
| + """Returns the sticky ebuild."""
|
| sticky_ebuilds = []
|
| non_sticky_re = re.compile(_NON_STICKY_REGEX)
|
| for ebuild in stable_ebuilds:
|
| @@ -122,7 +122,7 @@ def _GetStickyVersion(stable_ebuilds):
|
| elif len(sticky_ebuilds) > 1:
|
| Warning('More than one sticky ebuild found')
|
|
|
| - return cros_mark_as_stable.BestEBuild(sticky_ebuilds).chrome_version
|
| + return cros_mark_as_stable.BestEBuild(sticky_ebuilds)
|
|
|
|
|
| class ChromeEBuild(cros_mark_as_stable.EBuild):
|
| @@ -203,7 +203,7 @@ def FindChromeUprevCandidate(stable_ebuilds, chrome_rev, sticky_branch):
|
| candidates.append(ebuild)
|
|
|
| elif chrome_rev == STICKY:
|
| - chrome_branch_re = re.compile('%s\.\d+.*_rc.*' % sticky_branch)
|
| + chrome_branch_re = re.compile('%s\..*' % sticky_branch)
|
| for ebuild in stable_ebuilds:
|
| if chrome_branch_re.search(ebuild.version):
|
| candidates.append(ebuild)
|
| @@ -222,7 +222,8 @@ def FindChromeUprevCandidate(stable_ebuilds, chrome_rev, sticky_branch):
|
|
|
|
|
| def MarkChromeEBuildAsStable(stable_candidate, unstable_ebuild, chrome_rev,
|
| - chrome_version, commit, overlay_dir):
|
| + chrome_version, commit, overlay_dir,
|
| + sticky_ebuild):
|
| """Uprevs the chrome ebuild specified by chrome_rev.
|
|
|
| This is the main function that uprevs the chrome_rev from a stable candidate
|
| @@ -242,6 +243,7 @@ def MarkChromeEBuildAsStable(stable_candidate, unstable_ebuild, chrome_rev,
|
| chrome_version: The \d.\d.\d.\d version of Chrome.
|
| commit: Used with TIP_OF_TRUNK. The svn revision of chrome.
|
| overlay_dir: Path to the chromeos-chrome package dir.
|
| + sticky_ebuild: EBuild class for the sticky ebuild.
|
| Returns:
|
| Full portage version atom (including rc's, etc) that was revved.
|
| """
|
| @@ -260,9 +262,21 @@ def MarkChromeEBuildAsStable(stable_candidate, unstable_ebuild, chrome_rev,
|
| new_ebuild_path = base_path + ('%s-r1.ebuild' % portage_suffix)
|
|
|
| cros_mark_as_stable.EBuildStableMarker.MarkAsStable(
|
| - unstable_ebuild.ebuild_path, new_ebuild_path, 'CROS_SVN_COMMIT', commit)
|
| + unstable_ebuild.ebuild_path, new_ebuild_path, 'CROS_SVN_COMMIT', commit,
|
| + make_stable=False)
|
| + new_ebuild = ChromeEBuild(new_ebuild_path)
|
| + if stable_candidate and (
|
| + stable_candidate.chrome_version == new_ebuild.chrome_version):
|
| + if 0 == RunCommand(['diff', '-Bu', stable_candidate.ebuild_path,
|
| + new_ebuild_path],
|
| + redirect_stderr=True,
|
| + redirect_stdout=True,
|
| + exit_code=True):
|
| + os.unlink(new_ebuild_path)
|
| + return None
|
| +
|
| RunCommand(['git', 'add', new_ebuild_path])
|
| - if stable_candidate:
|
| + if stable_candidate and stable_candidate != sticky_ebuild:
|
| RunCommand(['git', 'rm', stable_candidate.ebuild_path])
|
|
|
| cros_mark_as_stable.EBuildStableMarker.CommitChange(
|
| @@ -293,10 +307,10 @@ def main():
|
| commit_to_use = None
|
|
|
| (unstable_ebuild, stable_ebuilds) = FindChromeCandidates(overlay_dir)
|
| - sticky_version = _GetStickyVersion(stable_ebuilds)
|
| + sticky_ebuild = _GetStickyEBuild(stable_ebuilds)
|
| + sticky_version = sticky_ebuild.chrome_version
|
| sticky_branch = sticky_version.rpartition('.')[0]
|
|
|
| -
|
| if chrome_rev == TIP_OF_TRUNK:
|
| version_to_uprev = _GetTipOfTrunkVersion()
|
| commit_to_use = _GetTipOfTrunkSvnRevision()
|
| @@ -307,25 +321,23 @@ def main():
|
|
|
| stable_candidate = FindChromeUprevCandidate(stable_ebuilds, chrome_rev,
|
| sticky_branch)
|
| - # There are some cases we don't need to do anything. Check for them.
|
| - if stable_candidate and (version_to_uprev == stable_candidate.chrome_version
|
| - and not commit_to_use):
|
| - Info('Found nothing to do for chrome_rev %s with version %s.' % (
|
| - chrome_rev, version_to_uprev))
|
| - else:
|
| - os.chdir(overlay_dir)
|
| - work_branch = cros_mark_as_stable.GitBranch(
|
| - cros_mark_as_stable.STABLE_BRANCH_NAME, options.tracking_branch)
|
| - work_branch.CreateBranch()
|
| - try:
|
| - chrome_version_atom = MarkChromeEBuildAsStable(
|
| - stable_candidate, unstable_ebuild, chrome_rev, version_to_uprev,
|
| - commit_to_use, overlay_dir)
|
| - # Explicit print to communicate to caller.
|
| +
|
| + os.chdir(overlay_dir)
|
| + work_branch = cros_mark_as_stable.GitBranch(
|
| + cros_mark_as_stable.STABLE_BRANCH_NAME, options.tracking_branch)
|
| + work_branch.CreateBranch()
|
| + try:
|
| + chrome_version_atom = MarkChromeEBuildAsStable(
|
| + stable_candidate, unstable_ebuild, chrome_rev, version_to_uprev,
|
| + commit_to_use, overlay_dir, sticky_ebuild)
|
| + # Explicit print to communicate to caller.
|
| + if chrome_version_atom:
|
| print 'CHROME_VERSION_ATOM=%s' % chrome_version_atom
|
| - except:
|
| + else:
|
| work_branch.Delete()
|
| - raise
|
| + except:
|
| + work_branch.Delete()
|
| + raise
|
|
|
|
|
| if __name__ == '__main__':
|
|
|