Merge ~fourdollars/pc-enablement/+git/oem-scripts:master into ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master

Proposed by Shih-Yuan Lee
Status: Merged
Approved by: Shih-Yuan Lee
Approved revision: d0092a957623df5c2af26ff54dde0af5ff423259
Merged at revision: 1ced38c1703b0dd8e3cc53920d32afaccfbf96a2
Proposed branch: ~fourdollars/pc-enablement/+git/oem-scripts:master
Merge into: ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master
Diff against target: 156 lines (+29/-50)
2 files modified
debian/tests/lp-bug (+2/-2)
lp-bug (+27/-48)
Reviewer Review Type Date Requested Status
Cyrus Lien Approve
Review via email: mp+437658@code.launchpad.net
To post a comment you must log in.
Revision history for this message
OEM Taipei Bot (oem-taipei-bot) wrote :

[autopkgtest]
autopkgtest-collect-credentials PASS
autopkgtest-oem-scripts-auto PASS
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
jq-lp PASS
launchpad-api PASS
lp-bug PASS
pkg-list PASS
review-merge-proposal PASS
run-autopkgtest PASS
setup-apt-dir PASS
bootstrap-meta PASS
mir-bug PASS
oem-meta-packages PASS
git-url-insteadof-setting PASS
lp-dl-attm PASS
recovery-from-iso.sh PASS

https://oem-share.canonical.com/partners/lyoncore/share/artifacts/oem-scripts/oem-scripts-1.62-887127c-in-linux-container-jammy

Revision history for this message
OEM Taipei Bot (oem-taipei-bot) wrote :

[autopkgtest]
autopkgtest-collect-credentials PASS
autopkgtest-oem-scripts-auto PASS
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
jq-lp PASS
launchpad-api PASS
lp-bug PASS
pkg-list PASS
review-merge-proposal PASS
run-autopkgtest PASS
setup-apt-dir PASS
bootstrap-meta PASS
mir-bug PASS
oem-meta-packages PASS
git-url-insteadof-setting PASS
lp-dl-attm PASS
recovery-from-iso.sh PASS

https://oem-share.canonical.com/partners/lyoncore/share/artifacts/oem-scripts/oem-scripts-1.62-d0092a9-in-linux-container-jammy

Revision history for this message
Cyrus Lien (cyruslien) wrote :

LGTM.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/debian/tests/lp-bug b/debian/tests/lp-bug
2index 42ea2b6..bfde720 100644
3--- a/debian/tests/lp-bug
4+++ b/debian/tests/lp-bug
5@@ -6,9 +6,9 @@ IFS=$'\n\t'
6 export LAUNCHPAD_API="https://api.staging.launchpad.net/"
7
8 # Search for the latest bug to test.
9-launchpad-api get cloudberry ws.op==searchTasks status=="Fix Committed" | jq -r '.entries | .[] | .bug_link' | sort -r | while read -r bug; do
10+while read -r bug; do
11 if launchpad-api get "$bug" | jq -r '.tags | .[]' | grep cqa-verified-staging >/dev/null; then
12 lp-bug cqa-verify --dry-run "$(launchpad-api get "$bug" | jq -r '.id')"
13 break
14 fi
15-done
16+done < <(launchpad-api get cloudberry ws.op==searchTasks status=="Fix Committed" | jq -r '.entries | .[] | .bug_link' | sort -r)
17diff --git a/lp-bug b/lp-bug
18index 17db05e..d4ccb74 100755
19--- a/lp-bug
20+++ b/lp-bug
21@@ -1,6 +1,6 @@
22 #! /usr/bin/env python3
23 # -*- coding: utf-8 -*-
24-# Copyright (C) 2020 Canonical Ltd.
25+# Copyright (C) 2020-2023 Canonical Ltd.
26 # Author: Shih-Yuan Lee (FourDollars) <sylee@canonical.com>
27 #
28 # This program is free software; you can redistribute it and/or modify
29@@ -22,12 +22,12 @@ import lazr
30 import logging
31 import oem_scripts
32 import re
33-import subprocess
34 import sys
35 import os
36
37 from apt import apt_pkg
38-from logging import debug, warning, info, critical
39+from logging import debug, warning, info, error
40+from oem_scripts import _run_command
41 from oem_scripts.LaunchpadLogin import LaunchpadLogin
42 from tempfile import TemporaryDirectory
43
44@@ -225,42 +225,11 @@ def cleanup_bug(lp, bug_number: int, yes: bool) -> None:
45 info(f"LP: #{bug.id} has been cleaned. {bug.web_link}")
46
47
48-def _run_command(
49- command: list or tuple, returncode=(0,), env=None, silent=False
50-) -> (str, str, int):
51- if not silent:
52- debug("$ " + " ".join(command))
53- proc = subprocess.Popen(
54- command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env
55- )
56- out, err = proc.communicate()
57-
58- if out:
59- out = out.decode("utf-8").strip()
60- if err:
61- err = err.decode("utf-8").strip()
62-
63- if proc.returncode not in returncode:
64- critical(f"return {proc.returncode}")
65- if out:
66- info(out)
67- if err:
68- critical(err)
69- exit(1)
70-
71- if not silent:
72- if out:
73- debug(out)
74- if err:
75- debug(err)
76-
77- return (out, err, proc.returncode)
78-
79-
80 pattern = re.compile(r"(.*) \(==(.*)\)")
81
82
83-def cloudberry_cqa_verified(lp, yes: bool, bugID: int) -> None:
84+def cloudberry_cqa_verified(lp, yes: bool, bugID: int) -> bool:
85+ no_error = True
86 cloudberry = lp.projects["cloudberry"]
87 # Only deal with those bugs with 'Fix Committed' and 'request of publish_package' in the title.
88 tasks = cloudberry.searchTasks(
89@@ -316,14 +285,15 @@ def cloudberry_cqa_verified(lp, yes: bool, bugID: int) -> None:
90 with TemporaryDirectory() as tmpdir:
91 failed = False
92 fingerprint = "F9FDA6BED73CDC22"
93- series = ["focal", "bionic", "xenial"]
94+ series = ["jammy", "focal", "bionic", "xenial"]
95 codename = ""
96 for item in series:
97 if item in prod_archive_line:
98 codename = item
99 break
100 if not codename:
101- warning(f"'{prod_archive_line}' is not supported.")
102+ error(f"'{prod_archive_line}' is not supported.")
103+ no_error = False
104 continue
105 # Setup the temporary apt dir to include the production archive.
106 output, _, returncode = _run_command(
107@@ -350,15 +320,20 @@ def cloudberry_cqa_verified(lp, yes: bool, bugID: int) -> None:
108 continue
109 # Use the temporary apt dir to compare the package versions.
110 for pkg, ver in packages:
111- output, _, _ = _run_command(["pkg-list", "--apt-dir", tmpdir, pkg])
112- for line in output.split("\n"):
113- archive_pkg, archive_ver = line.split(" ")
114- if pkg == archive_pkg:
115- if apt_pkg.version_compare(archive_ver, ver) >= 0:
116- print(f"{line} >= {ver}")
117- else:
118- warning(f"{line} < {ver}")
119- failed = True
120+ output, _, returncode = _run_command(
121+ ["pkg-list", "--apt-dir", tmpdir, pkg], returncode=(0, 1)
122+ )
123+ if returncode == 1:
124+ failed = True
125+ else:
126+ for line in output.split("\n"):
127+ archive_pkg, archive_ver = line.split(" ")
128+ if pkg == archive_pkg:
129+ if apt_pkg.version_compare(archive_ver, ver) >= 0:
130+ print(f"{line} >= {ver}")
131+ else:
132+ warning(f"{line} < {ver}")
133+ failed = True
134 # Tag "cqa-verified" if no failure.
135 if not failed:
136 if not args.dry_run and _yes_or_ask(
137@@ -371,6 +346,7 @@ def cloudberry_cqa_verified(lp, yes: bool, bugID: int) -> None:
138 tags.append(f"oem-scripts-{oem_scripts.__version__}")
139 bug.tags = tags
140 bug.lp_save()
141+ return no_error
142
143
144 def attach_file_to_bug(
145@@ -401,7 +377,10 @@ if args.subcommand == "copy":
146 elif args.subcommand == "cleanup":
147 cleanup_bug(lp, args.bugID, args.yes)
148 elif args.subcommand == "cqa-verify":
149- cloudberry_cqa_verified(lp, args.yes, args.bugID)
150+ if cloudberry_cqa_verified(lp, args.yes, args.bugID):
151+ exit(0)
152+ else:
153+ exit(1)
154 elif args.subcommand == "attach":
155 attach_file_to_bug(
156 lp, args.filepath, args.bugID, name=args.name, comment=args.comment

Subscribers

People subscribed via source and target branches