Export arc USE flag in metadata
BUG=b:34064810
TEST=cbuildbot_run_unittest
`cbuildbot --local -p chromiumos/chromite reef-compile-only-pre-cq`
Verify arc USE flag appears in logs as expected.
Change-Id: I206363392d35564ee2ec54023733e74bd068d2f0
Reviewed-on: https://chromium-review.googlesource.com/434222
Commit-Ready: Bernie Thompson <bhthompson@chromium.org>
Tested-by: Bernie Thompson <bhthompson@chromium.org>
Reviewed-by: Mike Frysinger <vapier@chromium.org>
(cherry picked from commit 5b556b565386221a405bf6c2dc4d08b84c22c4b6)
Reviewed-on: https://chromium-review.googlesource.com/442208
Reviewed-by: Bernie Thompson <bhthompson@chromium.org>
Commit-Queue: Bernie Thompson <bhthompson@chromium.org>
diff --git a/cbuildbot/cbuildbot_run.py b/cbuildbot/cbuildbot_run.py
index b4be6c2..1bbc9bd 100644
--- a/cbuildbot/cbuildbot_run.py
+++ b/cbuildbot/cbuildbot_run.py
@@ -802,6 +802,10 @@
return calc_version
+ def HasUseFlag(self, board, use_flag):
+ """Return the state of a USE flag for a board as a boolean."""
+ return use_flag in portage_util.GetBoardUseFlags(board)
+
def DetermineAndroidBranch(self, board):
"""Returns the Android branch in use by the active container ebuild."""
try:
diff --git a/cbuildbot/stages/android_stages.py b/cbuildbot/stages/android_stages.py
index ad6d073..e2346dc 100644
--- a/cbuildbot/stages/android_stages.py
+++ b/cbuildbot/stages/android_stages.py
@@ -82,10 +82,11 @@
generic_stages.ArchivingStageMixin):
"""Stage that records Android container version in metadata.
- This should attempt to generate three types of metadata:
+ This should attempt to generate four types of metadata:
- a unique Android version if it exists.
- a unique Android branch if it exists.
- a per-board Android version for each board.
+ - a per-board arc USE flag value.
"""
def __init__(self, builder_run, **kwargs):
@@ -136,6 +137,11 @@
logging.info('Board %s has Android branch %s', board, branch)
except cbuildbot_run.NoAndroidBranchError as ex:
logging.info('Board %s does not contain Android (%s)', board, ex)
+ arc_use = self._run.HasUseFlag(board, 'arc')
+ logging.info('Board %s %s arc USE flag set.', board,
+ 'has' if arc_use else 'does not have')
+ builder_run.attrs.metadata.UpdateBoardDictWithDict(
+ board, {'arc-use-set': arc_use})
# If there wasn't a version or branch specified in the manifest but there is
# a unique one across all the boards, treat it as the version for the
# entire step.
diff --git a/lib/portage_util.py b/lib/portage_util.py
index 8fecc38..fc23dca 100644
--- a/lib/portage_util.py
+++ b/lib/portage_util.py
@@ -1655,6 +1655,15 @@
return path
+def GetBoardUseFlags(board):
+ """Returns a list of USE flags in effect for a board."""
+ portageq = 'portageq-%s' % board
+ cmd = [portageq, 'envvar', 'USE']
+ return cros_build_lib.RunCommand(
+ cmd, cwd=constants.SOURCE_ROOT, enter_chroot=True,
+ capture_output=True).output.split()
+
+
def GetPackageDependencies(board, package):
"""Returns the depgraph list of packages for a board and package."""
emerge = 'emerge-%s' % board