Index: cros_mark_as_stable.py |
diff --git a/cros_mark_as_stable.py b/cros_mark_as_stable.py |
index 56a589c68214d2485ea7ec123a02e382a4ecfce0..e722ad3cd05781e0cbe36e6f8d5318bef7ab9db6 100755 |
--- a/cros_mark_as_stable.py |
+++ b/cros_mark_as_stable.py |
@@ -22,10 +22,10 @@ from cros_build_lib import Info, RunCommand, Warning, Die |
gflags.DEFINE_string('board', '', |
'Board for which the package belongs.', short_name='b') |
gflags.DEFINE_string('overlays', '', |
- 'Space separated list of overlays to modify.', |
+ 'Colon-separated list of overlays to modify.', |
short_name='o') |
gflags.DEFINE_string('packages', '', |
- 'Space separated list of packages to mark as stable.', |
+ 'Colon-separated list of packages to mark as stable.', |
short_name='p') |
gflags.DEFINE_string('push_options', '', |
'Options to use with git-cl push using push command.') |
@@ -73,19 +73,21 @@ def _CleanStalePackages(board, package_array): |
Info('Cleaning up stale packages %s.' % package_array) |
unmerge_board_cmd = ['emerge-%s' % board, '--unmerge'] |
unmerge_board_cmd.extend(package_array) |
- RunCommand(unmerge_board_cmd) |
+ RunCommand(unmerge_board_cmd, enter_chroot=True) |
unmerge_host_cmd = ['sudo', 'emerge', '--unmerge'] |
unmerge_host_cmd.extend(package_array) |
- RunCommand(unmerge_host_cmd) |
+ RunCommand(unmerge_host_cmd, enter_chroot=True) |
- RunCommand(['eclean-%s' % board, '-d', 'packages'], redirect_stderr=True) |
- RunCommand(['sudo', 'eclean', '-d', 'packages'], redirect_stderr=True) |
+ RunCommand(['eclean-%s' % board, '-d', 'packages'], redirect_stderr=True, |
+ enter_chroot=True) |
+ RunCommand(['sudo', 'eclean', '-d', 'packages'], redirect_stderr=True, |
+ enter_chroot=True) |
def _BestEBuild(ebuilds): |
"""Returns the newest EBuild from a list of EBuild objects.""" |
- from portage.versions import vercmp |
+ from cros_portage_versions import vercmp |
winner = ebuilds[0] |
for ebuild in ebuilds[1:]: |
if vercmp(winner.version, ebuild.version) < 0: |
@@ -245,7 +247,10 @@ def _SimpleRunCommand(command): |
"""Runs a shell command and returns stdout back to caller.""" |
_Print(' + %s' % command) |
proc_handle = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) |
- return proc_handle.communicate()[0] |
+ stdout = proc_handle.communicate()[0] |
+ retcode = proc_handle.wait() |
+ assert retcode == 0, "Return code %s for command: %s" % (retcode, command) |
+ return stdout |
# ======================= End Global Helper Functions ======================== |
@@ -297,7 +302,7 @@ class _EBuild(object): |
Uses equery to find the ebuild path and sets data about an ebuild for |
easy reference. |
""" |
- from portage.versions import pkgsplit |
+ from cros_portage_versions import pkgsplit |
self.ebuild_path = path |
(self.ebuild_path_no_revision, |
self.ebuild_path_no_version, |
@@ -323,7 +328,7 @@ class _EBuild(object): |
# Grab and evaluate CROS_WORKON variables from this ebuild. |
unstable_ebuild = '%s-9999.ebuild' % self.ebuild_path_no_version |
- cmd = ('CROS_WORKON_LOCALNAME="%s" CROS_WORKON_PROJECT="%s" ' |
+ cmd = ('export CROS_WORKON_LOCALNAME="%s" CROS_WORKON_PROJECT="%s"; ' |
'eval $(grep -E "^CROS_WORKON" %s) && ' |
'echo $CROS_WORKON_PROJECT ' |
'$CROS_WORKON_LOCALNAME/$CROS_WORKON_SUBDIR' |
@@ -487,11 +492,16 @@ def main(argv): |
except gflags.FlagsError, e : |
_PrintUsageAndDie(str(e)) |
- package_list = gflags.FLAGS.packages.split() |
+ package_list = gflags.FLAGS.packages.split(':') |
_CheckSaneArguments(package_list, command) |
if gflags.FLAGS.overlays: |
- overlays = dict((path, []) for path in gflags.FLAGS.overlays.split()) |
+ overlays = {} |
+ for path in gflags.FLAGS.overlays.split(':'): |
+ if not os.path.exists(path): |
+ Die('Cannot find overlay: %s' % path) |
+ overlays[path] = [] |
else: |
+ Warning('Missing --overlays argument') |
overlays = { |
'%s/private-overlays/chromeos-overlay' % gflags.FLAGS.srcroot: [], |
'%s/third_party/chromiumos-overlay' % gflags.FLAGS.srcroot: [] |
@@ -500,6 +510,7 @@ def main(argv): |
if command == 'commit': |
_BuildEBuildDictionary(overlays, gflags.FLAGS.all, package_list) |
+ cwd = os.getcwd() |
for overlay, ebuilds in overlays.items(): |
if not os.path.exists(overlay): |
Warning("Skipping %s" % overlay) |
@@ -534,6 +545,7 @@ def main(argv): |
'and reset the git repo yourself.' % overlay) |
raise |
+ os.chdir(cwd) |
if revved_packages: |
_CleanStalePackages(gflags.FLAGS.board, revved_packages) |
else: |