aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2023-11-14 12:40:38 +0000
committerJosh Boyer <jwboyer@redhat.com>2023-11-14 12:40:38 +0000
commitb72eeb603950f39f320c8113e56d69cbcfe2cb44 (patch)
tree120922f34879a9a9d639e5fd34911adc9250ce84
parent398b4605a30792685e7e3b7ae82a22a916916499 (diff)
parentd011ba69ebb22867aade9725cd36d6d0ab72dfe5 (diff)
downloadlinux-firmware-b72eeb603950f39f320c8113e56d69cbcfe2cb44.tar.gz
Merge branch 'mlimonci/robot-pr-improvements' into 'main'
Fixups for robot script to handle pull requests better See merge request kernel-firmware/linux-firmware!58
-rwxr-xr-xcontrib/process_linux_firmware.py31
1 files changed, 22 insertions, 9 deletions
diff --git a/contrib/process_linux_firmware.py b/contrib/process_linux_firmware.py
index 7d867a8d..668e35c0 100755
--- a/contrib/process_linux_firmware.py
+++ b/contrib/process_linux_firmware.py
@@ -142,14 +142,26 @@ def delete_branch(branch):
quiet_cmd(["git", "branch", "-D", branch])
-def process_pr(url, num, remote):
+def process_pr(mbox, num, remote):
branch = "robot/pr-{}-{}".format(num, int(time.time()))
- cmd = ["b4", "pr", "-b", branch, url]
- try:
- quiet_cmd(cmd)
- except subprocess.CalledProcessError:
- logging.warning("Failed to apply PR")
- return None
+
+ # manual fixup for PRs from drm firmware repo
+ if "git@gitlab.freedesktop.org:drm/firmware.git" in mbox:
+ mbox = mbox.replace(
+ "git@gitlab.freedesktop.org:drm/firmware.git",
+ "https://gitlab.freedesktop.org/drm/firmware.git",
+ )
+
+ cmd = ["b4", "--debug", "pr", "-b", branch, "-"]
+ logging.debug("Running {}".format(cmd))
+ p = subprocess.Popen(
+ cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE
+ )
+ stdout, stderr = p.communicate(mbox.encode("utf-8"))
+ for line in stdout.splitlines():
+ logging.debug(line.decode("utf-8"))
+ for line in stderr.splitlines():
+ logging.debug(line.decode("utf-8"))
# determine if it worked (we can't tell unfortunately by return code)
cmd = ["git", "branch", "--list", branch]
@@ -157,6 +169,8 @@ def process_pr(url, num, remote):
result = subprocess.check_output(cmd)
if result:
+ for line in result.splitlines():
+ logging.debug(line.decode("utf-8"))
logging.info("Forwarding PR for {}".format(branch))
if remote:
create_pr(remote, branch)
@@ -244,7 +258,6 @@ def process_database(conn, remote):
# loop over all unprocessed urls
for row in rows:
-
branch = None
msg = "Processing ({}%)".format(round(num / len(rows) * 100))
print(msg, end="\r", flush=True)
@@ -260,7 +273,7 @@ def process_database(conn, remote):
if classification == ContentType.PULL_REQUEST:
logging.debug("Processing PR ({})".format(row[0]))
- branch = process_pr(row[0], num, remote)
+ branch = process_pr(mbox, num, remote)
if classification == ContentType.SPAM:
logging.debug("Marking spam ({})".format(row[0]))