Add the beginnings of simpler dependency checking for tools.

Review Request #11529 — Created March 16, 2021 and submitted

Information

ReviewBot
release-3.0.x

Reviewers

Most tools have an executable they depend on. A command line tool or
script that performs the actual checks. As part of worker startup, each
tool's check_dependencies() is called in order to check that any and
all command line tools were satisfied.

This process was repetitive, and a bit flawed. A couple of tools needed
manual configuration in order to find the tools, but assumptions were made
about the presence of configuration keys in one of these cases, despite
never making that a part of the default configuration. Other tools had
no ability to customize the location of the command line script.

This change introduces a new exe_dependencies attribute, which
BaseTool.check_dependencies() will check. Each item will be checked
both against a new exe_paths environment variable and against $PATH,
allowing customization.

If found on $PATH, the path will be placed back in exe_paths,
allowing tools to directly look up the location. That both simplifies
their code and avoids an implicit lookup on $PATH every time the tool
is executed.

Unit tests pass.

Made changes to all the tools (not part of this change) and verified that
dependency resolution worked correctly, and that results were cached.

Summary ID
Add the beginnings of simpler dependency checking for tools.
Most tools have an executable they depend on. A command line tool or script that performs the actual checks. As part of worker startup, each tool's `check_dependencies()` is called in order to check that any and all command line tools were satisfied. This process was repetitive, and a bit flawed. A couple of tools needed manual configuration in order to find the tools, but assumptions were made about the presence of configuration keys in one of these cases, despite never making that a part of the default configuration. Other tools had no ability to customize the location of the command line script. This change introduces a new `exe_dependencies` attribute, which `BaseTool.check_dependencies()` will check. Each item will be checked both against a new `exe_paths` environment variable and against `$PATH`, allowing customization. If found on `$PATH`, the path will be placed back in `exe_paths`, allowing tools to directly look up the location. That both simplifies their code and avoids an implicit lookup on `$PATH` every time the tool is executed.
0c949c31dd070e98b2d851c7ef62f2548f1b1dd4
david
  1. Ship It!
  2. 
      
chipx86
Review request changed
Status:
Completed
Change Summary:
Pushed to release-3.0.x (d2447a6)