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: 1b7fe315ec0ce514f4afa09224f87ec8486fb36f
Merged at revision: 60d9c8914fb5ba6e467f9b5a6f80aa1c09b95c76
Proposed branch: ~fourdollars/pc-enablement/+git/oem-scripts:master
Merge into: ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master
Diff against target: 216 lines (+100/-20)
2 files modified
debian/tests/oem-meta-packages (+24/-13)
oem-meta-packages (+76/-7)
Reviewer Review Type Date Requested Status
Kai-Chuan Hsieh Approve
Review via email: mp+444013@code.launchpad.net

Description of the change

$ time oem-meta-packages --quiet --dry-run update --kernel linux-generic-hwe-20.04 oem-hw-info/platform-info/somerville/fossa-warcraft-amd.json
...
real 3m40.142s
user 1m22.641s
sys 0m6.140s

$ time oem-meta-packages --use-cache --quiet --dry-run update oem-hw-info/platform-info/somerville/fossa-warcraft-amd.json
...
real 0m18.595s
user 0m8.378s
sys 0m1.332s

$ time oem-meta-packages --use-cache --quiet --dry-run update oem-hw-info/platform-info/stella/jellyfish-aron.json
<WARNING> (oem-stella-aron-meta:aron-jammy-oem) $ git show
commit 447111a81813bae99026e81939f4a64f6a604329
Author: Shih-Yuan Lee (FourDollars) <email address hidden>
Date: Fri Jun 2 22:45:17 2023 +0800

    Update the market name for linux-oem-22.04b.

    Updated by oem-scripts 1.79.

diff --git a/debian/changelog b/debian/changelog
index 615b523..4767da1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+oem-stella-aron-meta (22.04ubuntu4) jammy; urgency=medium
+
+ * Update the market name for linux-oem-22.04b.
+
+ -- Shih-Yuan Lee (FourDollars) <email address hidden> Fri, 02 Jun 2023 22:45:17 +0800
+
 oem-stella-aron-meta (22.04ubuntu3) jammy; urgency=medium

   * Update hp-doc and eula to march23-wks version. (LP: #1996787).
diff --git a/debian/control b/debian/control
index 2e69a69..0ca16a0 100644
--- a/debian/control
+++ b/debian/control
@@ -12,16 +12,16 @@ Architecture: all
 Depends: ${misc:Depends}, ubuntu-oem-keyring, linux-oem-22.04b, oem-stella-meta
 XB-Modaliases: ${modaliases}
 XB-Ubuntu-OEM-Kernel-Flavour: oem
-Description: hardware support for Stella Aron platform
- This is a metapackage for Stella Aron platform.
+Description: hardware support for HP Z2 Tower G9 Workstation Desktop PC
+ This is a metapackage for HP Z2 Tower G9 Workstation Desktop PC.
  It installs packages needed to support this hardware fully.

 Package: oem-stella-factory-aron-meta
 Architecture: all
 Depends: ${misc:Depends}, oem-stella-factory-meta, oem-doc-hp-march23-wks, oem-eula-march23-wks
 Recommends: stella-hp-wallpaper-rik
-Description: hardware support for Stella Aron platform (factory)
- This is a factory metapackage for Stella Aron platform.
+Description: hardware support for HP Z2 Tower G9 Workstation Desktop PC (factory)
+ This is a factory metapackage for HP Z2 Tower G9 Workstation Desktop PC.
  It installs packages needed to support this hardware fully. (factory)

 Package: oem-stella.cmit-aron-meta

real 0m29.240s
user 0m8.929s
sys 0m1.812s

To post a comment you must log in.
Revision history for this message
OEM Taipei Bot (oem-taipei-bot) wrote :

[autopkgtest]
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
lp-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 FAIL non-zero exit status 1
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.79-9c39999-in-linux-container-jammy

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

[autopkgtest]
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
lp-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 FAIL non-zero exit status 1
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.79-0ca2829-in-linux-container-jammy

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

[autopkgtest]
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
lp-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.79-0d1a0f2-in-linux-container-jammy

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

[autopkgtest]
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
lp-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 FAIL non-zero exit status 1
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.79-6281c89-in-linux-container-jammy

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

[autopkgtest]
pkg-somerville-meta PASS
pkg-stella-meta PASS
pkg-sutton-meta PASS
bug-bind PASS
get-private-ppa PASS
lp-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.79-1b7fe31-in-linux-container-jammy

Revision history for this message
Kai-Chuan Hsieh (kchsieh) 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/oem-meta-packages b/debian/tests/oem-meta-packages
2index 318da7c..f42eeb3 100644
3--- a/debian/tests/oem-meta-packages
4+++ b/debian/tests/oem-meta-packages
5@@ -9,6 +9,17 @@ RET=0
6 oem-meta-packages --quiet list
7
8 # collect
9+if ! timeout 10s oem-meta-packages --quiet --series focal --use-cache collect oem-somerville-aipom-adl-meta; then
10+ echo "FAIL: Timeout after 10s for 'oem-meta-packages --quiet --series focal --use-cache collect oem-somerville-aipom-adl-meta'."
11+ RET=1
12+fi
13+if [ -f oem-somerville-aipom-adl-meta.json ] && [ "$(jq -r '."oem-somerville-aipom-adl-meta".new_desc' < oem-somerville-aipom-adl-meta.json)" = "Dell OptiPlex 5400 AIO, 7400 AIO" ]; then
14+ jq '."oem-somerville-aipom-adl-meta"' < oem-somerville-aipom-adl-meta.json
15+else
16+ echo "FAIL: oem-somerville-aipom-adl-meta.json is expected to be generated after 'oem-meta-packages --quiet --series focal --use-cache collect oem-somerville-aipom-adl-meta'."
17+ RET=1
18+fi
19+
20 cat > fossa-bronn.json <<ENDLINE
21 {
22 "certification-hardware": [
23@@ -35,9 +46,9 @@ cat > fossa-bronn.json <<ENDLINE
24 "short_description": "Precision 12345"
25 }
26 ENDLINE
27-oem-meta-packages --series focal --quiet collect fossa-bronn.json -o oem-somerville-bronn-meta.json
28-if [ "$(jq -r '."oem-somerville-bronn-meta".new_desc' < oem-somerville-bronn-meta.json)" != "Dell Precision 12345" ]; then
29- echo "FAIL: 'oem-meta-packages --series focal --quiet collect fossa-bronn.json -o oem-somerville-bronn-meta.json' failed."
30+oem-meta-packages --series focal --quiet collect fossa-bronn.json -o random.json
31+if [ "$(jq -r '."oem-somerville-bronn-meta".new_desc' < random.json)" != "Dell Precision 12345" ]; then
32+ echo "FAIL: 'oem-meta-packages --series focal --quiet collect fossa-bronn.json -o random.json' failed."
33 RET=1
34 fi
35
36@@ -176,17 +187,17 @@ oem-meta-packages create jellyfish-cais.json
37 mv oem-sutton-cais-meta jellyfish-cais-meta-2
38
39 # update
40-oem-meta-packages --dry-run --series focal update oem-somerville-tentacool-meta --kernel linux-generic-hwe-20.04
41-oem-meta-packages --dry-run --series focal update oem-stella.cmit-camerupt-meta --kernel linux-generic-hwe-20.04
42-oem-meta-packages --dry-run --series jammy update oem-somerville-tentacool-meta --kernel linux-generic-hwe-22.04
43-oem-meta-packages --dry-run --series jammy update oem-stella-aron-meta --kernel linux-generic-hwe-22.04
44+oem-meta-packages --dry-run --use-cache --series focal update oem-somerville-tentacool-meta --kernel linux-generic-hwe-20.04
45+oem-meta-packages --dry-run --use-cache --series focal update oem-stella.cmit-camerupt-meta --kernel linux-generic-hwe-20.04
46+oem-meta-packages --dry-run --use-cache --series jammy update oem-somerville-tentacool-meta --kernel linux-generic-hwe-22.04
47+oem-meta-packages --dry-run --use-cache --series jammy update oem-stella-aron-meta --kernel linux-generic-hwe-22.04
48
49 # staging-copy
50-oem-meta-packages --dry-run --series focal staging-copy oem-somerville-kingdra-adl-meta 2>&1 | grep -e cesg:somerville-fossa-kingdra-adl-focal-staging -e somerville-fossa-kingdra-adl-focal-devel
51-oem-meta-packages --dry-run --series focal staging-copy oem-somerville-charmander-meta 2>&1 | grep -e cesg:somerville-fossa-charmander-focal-staging -e cesg:somerville-fossa-charmander-focal-devel
52-oem-meta-packages --dry-run --series focal staging-copy oem-stella.cmit-aerodactyl-meta 2>&1 | grep -e cesg:stella-cmit-ouagadougou-focal-staging -e stella-cmit-ouagadougou-focal-devel
53-oem-meta-packages --dry-run --series focal staging-copy oem-sutton.newell-aaden-meta 2>&1 | grep -e cesg:sutton-newell-focal-staging -e cesg:sutton-newell-focal-devel
54-oem-meta-packages --dry-run --series jammy staging-copy oem-somerville-tentacool-meta 2>&1 | grep -e cesg:somerville-jellyfish-tentacool-jammy-devel -e cesg:somerville-jellyfish-tentacool-jammy-staging
55-oem-meta-packages --dry-run --series jammy staging-copy oem-sutton-balesego-meta 2>&1 | grep -e cesg:sutton-jammy-devel -e cesg:sutton-jammy-staging
56+oem-meta-packages --dry-run --use-cache --series focal staging-copy oem-somerville-kingdra-adl-meta 2>&1 | grep -e cesg:somerville-fossa-kingdra-adl-focal-staging -e somerville-fossa-kingdra-adl-focal-devel
57+oem-meta-packages --dry-run --use-cache --series focal staging-copy oem-somerville-charmander-meta 2>&1 | grep -e cesg:somerville-fossa-charmander-focal-staging -e cesg:somerville-fossa-charmander-focal-devel
58+oem-meta-packages --dry-run --use-cache --series focal staging-copy oem-stella.cmit-aerodactyl-meta 2>&1 | grep -e cesg:stella-cmit-ouagadougou-focal-staging -e stella-cmit-ouagadougou-focal-devel
59+oem-meta-packages --dry-run --use-cache --series focal staging-copy oem-sutton.newell-aaden-meta 2>&1 | grep -e cesg:sutton-newell-focal-staging -e cesg:sutton-newell-focal-devel
60+oem-meta-packages --dry-run --use-cache --series jammy staging-copy oem-somerville-tentacool-meta 2>&1 | grep -e cesg:somerville-jellyfish-tentacool-jammy-devel -e cesg:somerville-jellyfish-tentacool-jammy-staging
61+oem-meta-packages --dry-run --use-cache --series jammy staging-copy oem-sutton-balesego-meta 2>&1 | grep -e cesg:sutton-jammy-devel -e cesg:sutton-jammy-staging
62
63 exit "$RET"
64diff --git a/oem-meta-packages b/oem-meta-packages
65index 4fe104e..1e826b3 100755
66--- a/oem-meta-packages
67+++ b/oem-meta-packages
68@@ -150,6 +150,11 @@ parser.add_argument("--yes", help="Say yes for all prompts.", action="store_true
69 parser.add_argument("--apt-dir", type=str, help="specify the dir for apt")
70 series = lsb_release.get_os_release()["CODENAME"]
71 parser.add_argument(
72+ "--use-cache",
73+ help=f"Use cache from https://people.canonical.com/~oem-enablement/oem-meta-packages/oem-{{somerville,stella,sutton}}-*-meta-{series}.json to speed up the process. (experimental)",
74+ action="store_true",
75+)
76+parser.add_argument(
77 "--series",
78 help=f"Specify the series codename, such as focal or jammy. ('{series}' by default)",
79 )
80@@ -257,7 +262,7 @@ create.add_argument(
81
82 update = subparsers.add_parser(
83 "update",
84- help="[-h] oem-qemu-meta",
85+ help="[-h] oem-qemu-meta --kernel KERNEL",
86 formatter_class=argparse.RawDescriptionHelpFormatter,
87 epilog="""
88 For example,
89@@ -273,7 +278,6 @@ update.add_argument(
90 update.add_argument(
91 "--kernel",
92 choices=ALLOWED_KERNEL_META_LIST,
93- default="linux-generic-hwe-20.04",
94 help="Specify the kernel meta to update.",
95 )
96 update.add_argument(
97@@ -1634,6 +1638,8 @@ def collect_pkg_info(
98 print(f"{data} is not supported.")
99 exit(1)
100
101+ meta_name = data
102+
103 if "." in result.group(1):
104 project, group = result.group(1).split(".")
105 else:
106@@ -1672,6 +1678,10 @@ def collect_pkg_info(
107 project = data.get("project")
108 codename = data.get("platform")
109 group = data.get("group")
110+ if data.get("series") == "focal" and project != "somerville":
111+ meta_name = f"oem-{project}.{group}-{codename}-meta"
112+ else:
113+ meta_name = f"oem-{project}-{codename}-meta"
114 if project == "somerville":
115 customer = "Dell"
116 tag = animal + "-" + data.get("platform")
117@@ -1699,6 +1709,58 @@ def collect_pkg_info(
118 if "productnames" in data:
119 json_data["ProductNames"] = data["productnames"]
120
121+ if args.use_cache:
122+ json_url = f"https://people.canonical.com/~oem-enablement/oem-meta-packages/{meta_name}-{series}.json"
123+ req = requests.get(json_url)
124+ if req.status_code != 200:
125+ error("Fetching {json_url} failed.")
126+ exit(1)
127+ payload = json.loads(req.text)
128+ pkgInfo = dict()
129+ pkgInfo[meta_name] = PkgInfo(
130+ bootstrap=payload[meta_name]["bootstrap"],
131+ oem=payload[meta_name]["oem"],
132+ old_desc=payload[meta_name]["old_desc"],
133+ new_desc=payload[meta_name]["new_desc"],
134+ product_names=payload[meta_name]["product_names"],
135+ )
136+
137+ if type(data) is not str and data.get("short_description"):
138+ market_name = data.get("short_description")
139+ elif payload[meta_name]["bootstrap"]["git"]["market_name"]:
140+ market_name = payload[meta_name]["bootstrap"]["git"]["market_name"]
141+ elif payload[meta_name]["oem"]["git"]["market_name"]:
142+ market_name = payload[meta_name]["oem"]["git"]["market_name"]
143+ else:
144+ market_name = ""
145+
146+ if project == "somerville":
147+ branding = "Dell"
148+ elif project == "stella":
149+ branding = "HP"
150+ elif project == "sutton":
151+ branding = "Lenovo"
152+ else:
153+ error("f{project} is not supported yet.")
154+ exit(1)
155+
156+ if not pkgInfo[meta_name].new_desc and market_name:
157+ if branding in market_name:
158+ pkgInfo[meta_name].new_desc = market_name
159+ else:
160+ pkgInfo[meta_name].new_desc = f"{branding} {market_name}"
161+ if group:
162+ pkgInfo[
163+ meta_name
164+ ].old_desc = (
165+ f"{project.title()} {group.title()} {codename.title()} platform"
166+ )
167+ else:
168+ pkgInfo[
169+ meta_name
170+ ].old_desc = f"{project.title()} {codename.title()} platform"
171+ return pkgInfo
172+
173 debug(json.dumps(json_data, indent=4, sort_keys=True))
174
175 somerville = dict()
176@@ -1893,6 +1955,9 @@ def process_update_task(pkgInfo) -> None:
177 def deal_with_meta_git(pkg_name: str, pkg_info: PkgInfo, bootstrap: bool) -> bool:
178 result = meta_pattern.match(pkg_name)
179
180+ if not args.kernel:
181+ args.kernel = pkg_info.oem.git.kernel_meta
182+
183 if not result:
184 return
185
186@@ -2206,9 +2271,13 @@ elif args.subcommand == "update":
187 oem_scripts_config = ConfigParser()
188 oem_scripts_config.read(oem_scripts_config_ini)
189 config = oem_scripts_config["private"]
190- r = requests.get(
191- config["archive"] + "/dists/", auth=(config["username"], config["password"])
192- )
193+ if args.use_cache:
194+ text = None
195+ else:
196+ r = requests.get(
197+ config["archive"] + "/dists/", auth=(config["username"], config["password"])
198+ )
199+ text = r.text
200 if os.path.exists(args.meta):
201 with open(args.meta) as data:
202 meta_json = json.load(data)
203@@ -2220,11 +2289,11 @@ elif args.subcommand == "update":
204 series = meta_json["series"]
205 animal = get_animal(series)
206 pkgInfo = collect_pkg_info(
207- meta_json, check_private=True, index=r.text, config=config
208+ meta_json, check_private=True, index=text, config=config
209 )
210 else:
211 pkgInfo = collect_pkg_info(
212- args.meta, check_private=True, index=r.text, config=config
213+ args.meta, check_private=True, index=text, config=config
214 )
215 process_update_task(pkgInfo)
216 elif args.subcommand == "collect":

Subscribers

People subscribed via source and target branches