Skip to content

Commit

Permalink
edk2_pr_eval.py: Build all packages on file change outside package
Browse files Browse the repository at this point in the history
Updates `get_packages_to_build()` to return all possible packages if
a file is modified outside a package.

Originally, this was implemented behind a new argument with the
default behavior unchanged. However, feedback indicated it would
be easier to adopt without an argument and this would be acceptable
behavior.

This does mean some files, such as documentation files, could trigger
packages to build that would have not previously built. However, the
impact and frequency of this is considered minimal enough to not
justify additional complexity. The change mainly focuses on files
such as dependency trackers (e.g. PIP requirements, submodules),
Python scripts, and other files that can impact overall build
results.

Requires tianocore/edk2-pytool-library#186.

Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
  • Loading branch information
makubacki committed Nov 3, 2022
1 parent c095824 commit dce7935
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
16 changes: 16 additions & 0 deletions edk2toolext/invocables/edk2_pr_eval.py
Expand Up @@ -120,6 +120,22 @@ def get_packages_to_build(self, possible_packages: list) -> dict:
if rc != 0:
return {}

#
# Policy 0 - A file outside a package was modified and force build
# all packages on a modified file outside a package setting
# is enabled.
#
# Note: GetContainingPackage() returns the top most directory from the
# workspace root for a given file path if the file is not in a
# package.
#
for f in files:
if not self.edk2_path_obj.GetContainingPackage(os.path.abspath(f)):
return dict.fromkeys(possible_packages,
"Policy 0 - Build all packages if "
"a file is modified outside a "
"package.")

remaining_packages = possible_packages.copy() # start with all possible packages and remove each
# package once it is determined to be build. This optimization
# avoids checking packages that already will be built.
Expand Down
2 changes: 1 addition & 1 deletion integration_test/edk2_stuart_pr_eval.robot
Expand Up @@ -314,6 +314,6 @@ Test Stuart PR for changing a file at the root of repo

# Platform CI test DSC dependnency on implementation file # Policy 4
${pkgs}= Stuart pr evaluation ${platform_ci_file} OvmfPkg ${default_branch} ${EMPTY} ${ws_root}
Should Be Empty ${pkgs}
Confirm same contents ${pkgs} OvmfPkg

[Teardown] Delete branch ${branch_name} ${default_branch} ${ws_root}

0 comments on commit dce7935

Please sign in to comment.