Hello all,


The Community Lab is reviewing and rewriting some parts of our (currently internal) apply patchseries script. The reasons are:

1. We want to remove any dependency the apply script has on our internal infrastructure, so that it can be upstreamed and utilized by others in the community. 

2. We want to add in new features like “depends-on patch” applying (like ovsrobot is doing currently)

3. Some DPDK project processes have changed (like moving next branches from the main repo to being their own distinct repos). We have added on workarounds along the way to account for this, but an overall rework is now in order to clean up our process. 

Before we do the work and attempt to upstream the script, I want to verify with the community that our current assumptions regarding the apply patchseries process are appropriate and should not be tweaked. Assumptions:

1. There are two inputs, A. The pw series url and B. The branch output of pw_maintainers_cli.py

2. Do not apply and run if the series is an RFC series

3. Always check out to the current head of tree when applying a patch, regardless of whether the tree state has changed between patch submission and patch application in CI.

4. If the cover letter contains “depends-on,” extract the dependency series id(s), apply those, then attempt to apply the patch

5. If patch does not cleanly apply to the branch supplied by pw_maintainers_cli.py, attempt to apply on dpdk main. If this also fails, report an apply failure. 

6. If apply is successful, attempt a sanity build, and report a build failure if that fails. If it succeeds, proceed with all CI testing.


Note: The Community Lab does not currently use pw-client. If it is better for the CI community, we could stop maintaining a dedicated script for the apply process, try moving the pw-client, and direct our efforts at patching pw-client with the goal of adding support for features like depends-on. Are other labs using pw-client right now and do you recommend it?