This directory contains code related to long-term support management of TF-A.

lts-triage.py
=============

Purpose of this script is to check a patch and determine if that patch qualifies
as a candidate for one of the LTS branches.

Currently it focuses on cpu errata while it contains basic support for security
patches. It computes a crude score:

1 point if subject line matches tokens for cpu errata or security
1 point for "report_errata ERRATA" in a lib/cpus/aarch{32,64}/*.S file
1 point for "- ``ERRATA_" in docs/design/cpu-specific-build-macros.rst file

Note that the script only looks at commits which are not merge commits.

The script expects two branches: 'integration' and 'to_check'. 'integration' is
the actual integration branch of the TF-A project while 'to_check' points to the
tip of latest patch in the patchset that was submitted.

The script needs to work out how many commits are in the current patchset which
will be the ones it needs to triage. In order to do that the script looks at two
parameters which are currently fixed in code. We can turn them into args if needed.
First is REBASE_DEPTH which is the number of commits in integration branch to look
for the common commit between patchset and integration branch. Second parameter is
MAX_PATCHSET_DEPTH which is the maximum number of commits we expect in the patchset
submitted.

At the end, if any commit has non-zero score, the script will create a file named at
the path provided by --email_path argument.

Running it:
-----------

To run it, provide it a path to a TF-A git repo. Here's help output for convenience:

$ python lts-triage.py -h
usage: lts-triage.py [-h] --repo REPO --email_path EMAIL_PATH [--debug]

check patches for LTS candidacy

options:
  -h, --help            show this help message and exit
  --repo REPO           path to tf-a git repo
  --email_path EMAIL_PATH
                        path including the filename for email file
  --debug               print debug logs

Below is an example output. On left is commit hash of each of the commits
observed by this script and on right is score assigned to it.

$ python lts/lts-triage.py --repo ../trusted-firmware-a/ --email_path ./email.txt
feat(errata_framework): wrappers to propagate Aarch32 errata info:    0
feat(errata_framework): add a way to automatically report errata:    0
feat(errata_framework): add a concise way to implement Aarch64 errata:    0
refactor(cpus): convert print_errata_status to C:    0
refactor(cpus): rename errata_report.h to errata.h:    0
refactor(cpus): move cpu_ops field defines to a header:    0
chore(fvp): add the aarch32 cortex A57 to the build:    0
chore(cpus): remove redundant asserts:    0
refactor(cpus): shorten errata flag defines:    0
## stopping because found sha1 common between the two branches:  1678bbb57249b6edd4cdebc3cbc33b04df8fa098
