]> git.proxmox.com Git - mirror_linux-firmware.git/commitdiff
Merge branch 'mlimonci/robot-pr-improvements' into 'main'
authorJosh Boyer <jwboyer@redhat.com>
Tue, 14 Nov 2023 12:40:38 +0000 (12:40 +0000)
committerJosh Boyer <jwboyer@redhat.com>
Tue, 14 Nov 2023 12:40:38 +0000 (12:40 +0000)
Fixups for robot script to handle pull requests better

See merge request kernel-firmware/linux-firmware!58

contrib/process_linux_firmware.py

index 7d867a8d8fe3e7aef57cd31398d5b880aa8e6f63..668e35c0eb0600fcd4cde19c560a4b32a8dd8542 100755 (executable)
@@ -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]))