summaryrefslogtreecommitdiff
path: root/firmware_builder.py
Commit message (Collapse)AuthorAgeFilesLines
* firmware_builder: Make cros lint happyCraig Hesling2021-08-101-15/+24
| | | | | | | | | | | | | | BRANCH=none BUG=none TEST=cros lint ./firmware_builder.py TEST=./firmware_builder.py --help TEST=./firmware_builder.py --metrics $(mktemp /tmp/fwbld.XXX) test TEST=./firmware_builder.py --metrics $(mktemp /tmp/fwbld.XXX) build Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I0c2b03d3197fc021e93ce8a0029cdd465b9eb457 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3082336 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
* firmware_builder: Add printing of make commandsCraig Hesling2021-08-101-2/+7
| | | | | | | | | | | | | | | This helps people parsing the build output log to understand what commands were invoked. BRANCH=none BUG=b:195718112 TEST=./firmware_builder.py --metrics <(echo) test TEST=./firmware_builder.py --metrics <(echo) build Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: Iacceae2bba3db3631456a5d5012fc933730031ba Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3082335 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
* firmware_builder: Add dartmonkey to unit test listCraig Hesling2021-08-101-4/+13
| | | | | | | | | | | | | | | | | Currently both bloonchipper and dartmonkey on-device unit tests are compiled in the cros-ec.eclass. That means that this CQ check will miss compilation failures for dartmonkey, but other packages that trigger the chromeos-ec test routine will fail. See b/195718112 for an example of this. BRANCH=none BUG=b:195718112, b:172501728 TEST=./firmware_builder.py --metrics <(echo) test Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: Ifb7799f1ed56e4b849f115339d1a936d76b57ccd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3082334 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
* firmware_builder: bundle code coverage informationPaul Fagerburg2021-03-181-5/+52
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a rule to the makefile to merge code coverage into a single LCOV file, which firmware_builder.py will bundle as a build artifact. BUG=b:156895937 BRANCH=None TEST=Verify code coverage builds: ``` make clobber make coverage ls build/coverage/lcov.info ``` Verify firmware_builder tests (generate code coverage) and bundles the code coverage information with the correct metadata: ``` make clobber firmware_builder.py --code-coverage --metrics metrics.json test firmware_builder.py --code-coverage --metrics metrics.json bundle ls /tmp/artifact_bundles/coverage.tbz2 cat /tmp/artifact_bundle_metadata ``` Cq-Depend: chromium:2770601 Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org> Change-Id: I355ea76cc774f566bf552741c1a1bdc94cd21bda Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2749421 Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* firmware_builder: always create metrics filePaul Fagerburg2021-02-261-5/+7
| | | | | | | | | | | | | | | | | | | | The firmware builder doesn't need to do anything for code coverage, except that it still needs to create a metrics file so that the postsubmit builder can find it. BUG=chromium:1182320 BRANCH=None TEST=firmware-ec-cov-cq succeeds Cq-Include-Tryjobs: chromeos/cq:firmware-ec-cov-cq Signed-off-by: Paul Fagerburg <pfagerburg@google.com> Change-Id: Id1a4ac5cee1ba4bfbfb2f68ce937386658abfa4f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2722554 Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org> Tested-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: LaMont Jones <lamontjones@chromium.org> Reviewed-by: Sean McAllister <smcallis@google.com>
* firmware_builder: temporary protobuf fixLaMont Jones2021-02-261-1/+3
| | | | | | | | | | | | | | | | firmware_builder should not be importing from chromite.api.gen. This works around the issue while we implement the fix. BRANCH=none BUG=chromium:1181505 TEST=train Signed-off-by: LaMont Jones <lamontjones@chromium.org> Change-Id: Id49847bcd347f26e05eb494f8a6f6362009189ae Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2719650 Reviewed-by: Mike Nichols <mikenichols@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Alex Klein <saklein@chromium.org>
* firmware_builder: exclude on-device tests from code-coveragePaul Fagerburg2021-02-181-7/+8
| | | | | | | | | | | | | | | | | | | When building host-based unit tests for code coverage, don't build the on-device unit tests. BUG=b:156895937 BRANCH=None TEST=Run firmware_builder.py with --code-coverage option. Verify that the 'test' command does not build unit tests for bloonchipper. Signed-off-by: Paul Fagerburg <pfagerburg@google.com> Change-Id: I5e4f49b4911529a42b08fa7cd041dccff2c7513c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2702322 Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org> Commit-Queue: LaMont Jones <lamontjones@chromium.org> Tested-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Sean McAllister <smcallis@google.com> Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* firmware_builder: start creating FirmwareArtifactInfoLaMont Jones2021-02-101-15/+18
| | | | | | | | | | | | BUG=b:176926834, b:177907747 BRANCH=None TEST=manual Change-Id: I8728f45b6ece0c6e047439ed8b4b6e6b0d0e9e2e Signed-off-by: LaMont Jones <lamontjones@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2686259 Reviewed-by: Sean McAllister <smcallis@google.com> Tested-by: Sean McAllister <smcallis@google.com>
* firmware_builder: add --code-coverage optionPaul Fagerburg2021-02-061-3/+28
| | | | | | | | | | | | | | | | | | Added an option flag --code-coverage that will skip the build for EC hardware targets and build the tests with code coverage enabled. BUG=b:156895937 BRANCH=None TEST=Run firmware_builder.py with --code-coverage option. The 'build' command will do nothing, and the 'test' command will build the host- based unit test with code coverage. Signed-off-by: Paul Fagerburg <pfagerburg@google.com> Change-Id: Ie3786f574e490a5ba6806e518401842bda609e5f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2678937 Tested-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: LaMont Jones <lamontjones@chromium.org> Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org>
* firmware_builder: add artifact bundlingKevin Shelton2021-02-051-3/+49
| | | | | | | | | | | | | | | | | | | | | Add a new command to bundle artifacts into an (optionally specified) directory and write associated metadata to an (optionally specified) file. BUG=b:176926834 BRANCH=none TEST=./firmware_builder.py --metrics=/tmp/metrics bundle, ./firmware_builder.py --output-dir=/tmp/testbundle --metrics=/tmp/metrics --metadata=/tmp/testmetadata bundle, inspected that the file utility reports a sample resultant artifact as bzip2 compressed data Signed-off-by: Kevin Shelton <kmshelton@chromium.org> Change-Id: Ic58fecd3e3d572acfa1798c0ab15a4c8c558f908 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2643803 Reviewed-by: LaMont Jones <lamontjones@chromium.org> Commit-Queue: LaMont Jones <lamontjones@chromium.org> Tested-by: LaMont Jones <lamontjones@chromium.org>
* firmware_builder: style cleanupKevin Shelton2021-02-011-4/+8
| | | | | | | | | | | | | | | Apply style conformance changes in preparation for logic changes (formatting changes programmatically applied via yapf). BUG=b:176926834 TEST=None BRANCH=None Change-Id: If5236c068bbefa765c47c81a8580d35a89aef6d9 Signed-off-by: Kevin Shelton <kmshelton@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2664766 Commit-Queue: LaMont Jones <lamontjones@chromium.org> Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* firmware_builder: use check=True with subprocessesJack Rosenthal2020-12-171-9/+12
| | | | | | | | | | | | | | | A little easier to keep this clean (and more pythonic) with exceptions instead of returning error codes. BUG=b:175248887 BRANCH=none TEST=./firmware_builder.py build && ./firmware_builder.py test Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I3764aa5bf3125810e2cacbfc97d9b9d99f6b5aef Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2595809 Commit-Queue: Jett Rink <jettrink@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org>
* firmware_builder: add hardware test buildsJett Rink2020-11-131-2/+13
| | | | | | | | | | | | | | | | | We were not building the hardware test images as part for the test step. This replicate functionality in the chromeos-ec ebuid (via cros-ec eclass). I put a note in that ebuild to update this script if there are any changes in the future. BRANCH=none BUG=chromium:1147953 TEST=verify that firmware_builder.py --metrics /tmp/m test failed the same was the cq-orchestrator failed Signed-off-by: Jett Rink <jettrink@chromium.org> Change-Id: I20937381da41d933261926d02d45b80d3920443b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2535310 Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* build: add firmware_builder.py entry pointJett Rink2020-10-011-0/+83
New ToT firmware builder will call firmware_builder.py to start the build process for FW. For EC, we need to call into out existing build system. To break up the build and test phases, we need to break out all of the build only steps out into a separate build target (buildall_only). BRANCH=none BUG=b:169178847 TEST=run `firmware_builder.py build` locally and see that it builds all EC images and also redirects stdout and stderror from sub command. TEST=chromite/api/contrib/call_scripts/firmware__build_all_tot_firmware run this script correctly. End-to-End tests. Signed-off-by: Jett Rink <jettrink@chromium.org> Change-Id: Idd039e686697ee88419e0e44aa3dc96d554b997d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2424895 Commit-Queue: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>