Add firmware tarball to the list of build artifacts to download
Firmware build artifacts need to be available for reprogramming DUTs
in the autotest lab. This change includes the entire firmware tarball
(~16MB in size) into the set of files downloaded from gs image
archive. Missing firmware tarball will not cause a failure.
BUG=chromium-os:37467
TEST=manual
. start a local instance of devserver
./devserver.py --archive_dir=/var/devserver --logfile=/tmp/devserver.log
. in a different terminal ran
$ for cmd in download wait_for_status
do
curl http://localhost:8080/$cmd?archive_url='gs://chromeos-image-archive/link-release/R26-3494.0.0'
done
$ ls -ltr /var/devserver/link-release/R26-3494.0.0/
total 444592
-rw-r--r-- 1 vbendeb vbendeb 0 Jan 1 16:57 cros-dell0.CP%20Server%20Thread-6-30156
-rw-r--r-- 1 vbendeb vbendeb 0 Jan 1 16:57 chromiumos_test_image.bin
drwxr-xr-x 4 vbendeb vbendeb 4096 Jan 1 16:57 au/
-rw-r--r-- 1 vbendeb vbendeb 372863714 Jan 1 16:57 update.gz
-rw-r--r-- 1 vbendeb vbendeb 66435120 Jan 1 16:57 stateful.tgz
-rw-r--r-- 1 vbendeb vbendeb 15928789 Jan 1 16:57 firmware_from_source.tar.bz2
drwxr-xr-x 7 vbendeb vbendeb 24576 Jan 1 16:58 autotest/
-rw-r--r-- 1 vbendeb vbendeb 0 Jan 1 16:58 staged.timestamp
Change-Id: I6d19abe046eae5f0ef8739230a758fd5934919a6
Reviewed-on: https://gerrit.chromium.org/gerrit/40258
Tested-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
diff --git a/common_util.py b/common_util.py
index 1466751..ec4c31b 100644
--- a/common_util.py
+++ b/common_util.py
@@ -59,21 +59,23 @@
def ParsePayloadList(archive_url, payload_list):
- """Parse and return the full/delta payload URLs.
+ """Parse and return the full, delta, and firmware payload URLs.
Args:
archive_url: The URL of the Google Storage bucket.
payload_list: A list filenames.
Returns:
- Tuple of 3 payloads URLs: (full, nton, mton).
+ Tuple of 4 payload URLs: (full, nton, mton, firmware).
Raises:
- CommonUtilError: If payloads missing or invalid.
+ CommonUtilError: If full payload is missing or invalid.
"""
full_payload_url = None
mton_payload_url = None
nton_payload_url = None
+ firmware_payload_url = None
+
for payload in payload_list:
if '_full_' in payload:
full_payload_url = '/'.join([archive_url, payload])
@@ -84,12 +86,15 @@
nton_payload_url = '/'.join([archive_url, payload])
else:
mton_payload_url = '/'.join([archive_url, payload])
+ elif build_artifact.FIRMWARE_ARCHIVE in payload:
+ firmware_payload_url = '/'.join([archive_url, payload])
if not full_payload_url:
raise CommonUtilError(
'Full payload is missing or has unexpected name format.', payload_list)
- return full_payload_url, nton_payload_url, mton_payload_url
+ return (full_payload_url, nton_payload_url,
+ mton_payload_url, firmware_payload_url)
def IsAvailable(pattern_list, uploaded_list):
@@ -196,13 +201,14 @@
# autotest tarballs (tar or tar.bz2) is available
# (crosbug.com/32312). This dependency can be removed once all
# branches move to the new 'tar' format.
- to_wait_list = ['_full_', 'autotest.tar']
+ to_wait_list = ['_full_', build_artifact.AUTOTEST_PACKAGE]
err_str = 'full payload or autotest tarball'
uploaded_list = WaitUntilAvailable(to_wait_list, archive_url, err_str,
timeout=600)
# First we gather the urls/paths for the update payloads.
- full_url, nton_url, mton_url = ParsePayloadList(archive_url, uploaded_list)
+ full_url, nton_url, mton_url, fw_url = ParsePayloadList(
+ archive_url, uploaded_list)
full_payload = os.path.join(build_dir, build_artifact.ROOT_UPDATE)
@@ -222,6 +228,9 @@
artifacts.append(build_artifact.AUTestPayloadBuildArtifact(
mton_url, main_staging_dir, mton_payload))
+ if fw_url:
+ artifacts.append(build_artifact.BuildArtifact(
+ fw_url, main_staging_dir, build_dir))
# Gather information about autotest tarballs. Use autotest.tar if available.
if build_artifact.AUTOTEST_PACKAGE in uploaded_list: