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: 745429770c0a14a979dfebc9c41a4f46d0c170ab
Merged at revision: ae352169ae3adfa9839d20ca24375f8b2cf27c80
Proposed branch: ~fourdollars/pc-enablement/+git/oem-scripts:master
Merge into: ~oem-solutions-engineers/pc-enablement/+git/oem-scripts:master
Diff against target: 572 lines (+193/-86)
3 files modified
debian/tests/mir-bug (+27/-2)
mir-bug (+165/-83)
oem-meta-package.mir.jinja2 (+1/-1)
Reviewer Review Type Date Requested Status
Bin Li Approve
Review via email: mp+433421@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 FAIL non-zero exit status 1
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.52-27279e5-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 FAIL non-zero exit status 1
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.53-b0dd6d5-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 FAIL non-zero exit status 1
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.53-b0dd6d5-in-linux-container-jammy

Revision history for this message
Shih-Yuan Lee (fourdollars) wrote :

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

mir-bug FAIL non-zero exit status 1

Traceback (most recent call last):
  File "/usr/bin/mir-bug", line 1259, in <module>
    update_bug(
  File "/usr/bin/mir-bug", line 432, in update_bug
    check_and_update_bug_attachments(bug, pkg_name, update=True, yes=yes)
TypeError: check_and_update_bug_attachments() missing 1 required positional argument: 'series'

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 FAIL non-zero exit status 1
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.53-f0dd225-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 FAIL non-zero exit status 1
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.53-5aad01e-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.53-7454297-in-linux-container-jammy

Revision history for this message
Bin Li (binli) wrote :

LGTM.

BTW, I wish we could parse the json file name/content to get the series when use 'mir update', :)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/debian/tests/mir-bug b/debian/tests/mir-bug
index 216eb7b..04c8b9d 100644
--- a/debian/tests/mir-bug
+++ b/debian/tests/mir-bug
@@ -23,12 +23,24 @@ cat > "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json <<ENDLINE
23 "mirbug": 1943413,23 "mirbug": 1943413,
24 "productnames": [24 "productnames": [
25 "XPS 9320"25 "XPS 9320"
26 ]26 ],
27 "series": "focal"
27}28}
28ENDLINE29ENDLINE
2930
30export COPYRIGHT_YEAR=202231export COPYRIGHT_YEAR=2022
3132
33cleanup() {
34 echo "= cleanup ="
35 if [ -f "bugid" ]; then
36 BUG_ID=$(cat bugid)
37 rm bugid
38 lp-bug cleanup --yes "$BUG_ID"
39 fi
40}
41
42trap cleanup EXIT INT TERM
43
32# check/update44# check/update
33mir-bug update --yes --skip --ready --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json45mir-bug update --yes --skip --ready --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json
34mir-bug check --skip --ready --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json46mir-bug check --skip --ready --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json
@@ -36,8 +48,21 @@ mir-bug update --yes --skip --tz=UTC --release "$AUTOPKGTEST_ARTIFACTS"/fossa-te
36mir-bug check --skip --tz=UTC --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json48mir-bug check --skip --tz=UTC --release "$AUTOPKGTEST_ARTIFACTS"/fossa-tentacool.json
3749
38# create50# create
39mir-bug create -o bug_id somerville bronn "some Dell platforms"51mir-bug create -o bug_id somerville bronn "some Dell platforms" --series focal
52BUG_ID=$(cat bug_id)
53launchpad-api get bugs/"$BUG_ID" > "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json"
54jq -r .title < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep "\[MIR\] oem-somerville-bronn-meta"
55jq -r .description < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep focal
56jq -r .description < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep 20.04
57lp-bug cleanup --yes "$BUG_ID"
58rm bug_id
59
60mir-bug create -o bug_id somerville bronn "some Dell platforms" --series jammy
40BUG_ID=$(cat bug_id)61BUG_ID=$(cat bug_id)
62launchpad-api get bugs/"$BUG_ID" > "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json"
63jq -r .title < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep "\[MIR\]\[jammy\] oem-somerville-bronn-meta"
64jq -r .description < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep jammy
65jq -r .description < "$AUTOPKGTEST_ARTIFACTS/$BUG_ID.json" | grep 22.04
41lp-bug cleanup --yes "$BUG_ID"66lp-bug cleanup --yes "$BUG_ID"
42rm bug_id67rm bug_id
4368
diff --git a/mir-bug b/mir-bug
index cb8e828..e752ce3 100755
--- a/mir-bug
+++ b/mir-bug
@@ -24,6 +24,7 @@ import difflib
24import jinja224import jinja2
25import json25import json
26import lazr26import lazr
27import lsb_release
27import oem_scripts28import oem_scripts
28import os29import os
29import re30import re
@@ -32,6 +33,7 @@ import shutil
32import sys33import sys
3334
34from copy import copy35from copy import copy
36from distro_info import UbuntuDistroInfo
35from glob import glob37from glob import glob
36from logging import debug, info, warning, error, critical38from logging import debug, info, warning, error, critical
37from oem_scripts import (39from oem_scripts import (
@@ -71,6 +73,11 @@ create.add_argument("oemCodename", help="Such as somerville, stella, or sutton.s
71create.add_argument("platformCodename", help="Name deined by PM, like ace.")73create.add_argument("platformCodename", help="Name deined by PM, like ace.")
72create.add_argument("deviceName", help="ThinkPad X1 Carbon Gen 8")74create.add_argument("deviceName", help="ThinkPad X1 Carbon Gen 8")
73create.add_argument(75create.add_argument(
76 "-s",
77 "--series",
78 help="Specify the Ubuntu series to create the bug.",
79)
80create.add_argument(
74 "-o",81 "-o",
75 "--output",82 "--output",
76 help="Specify a file name to write the bug number.",83 help="Specify a file name to write the bug number.",
@@ -148,6 +155,7 @@ args = parser.parse_args()
148setup_logging(debug=args.debug, quiet=args.quiet)155setup_logging(debug=args.debug, quiet=args.quiet)
149156
150pattern = re.compile(r".*\[MIR\]\W*oem-([^-]*)-(.*)-meta\W*")157pattern = re.compile(r".*\[MIR\]\W*oem-([^-]*)-(.*)-meta\W*")
158pattern2 = re.compile(r".*\[MIR\]\[(.*)\]\W*oem-([^-]*)-(.*)-meta\W*")
151159
152160
153def _grouping_market_names(market_names: list, maxsplit=1) -> str:161def _grouping_market_names(market_names: list, maxsplit=1) -> str:
@@ -177,7 +185,7 @@ def _grouping_market_names(market_names: list, maxsplit=1) -> str:
177 return ", ".join(f"{name} {'/'.join(models)}" for name, models in tmp.items())185 return ", ".join(f"{name} {'/'.join(models)}" for name, models in tmp.items())
178186
179187
180def create_bug(lp, oemCodename, platformCodename, deviceName):188def create_bug(lp, oemCodename, platformCodename, deviceName, series):
181 info("Creating bug...")189 info("Creating bug...")
182 tempList = oemCodename.split(".")190 tempList = oemCodename.split(".")
183 oemCodenameNogroup = tempList[0]191 oemCodenameNogroup = tempList[0]
@@ -192,18 +200,22 @@ def create_bug(lp, oemCodename, platformCodename, deviceName):
192 metaPkgName = "oem-" + oemCodename + "-" + platformCodename + "-meta"200 metaPkgName = "oem-" + oemCodename + "-" + platformCodename + "-meta"
193201
194 if oemGroupName.strip() != "":202 if oemGroupName.strip() != "":
195 branchName = oemGroupName + "." + platformCodename + "-focal-ubuntu"203 branchName = oemGroupName + "." + platformCodename + f"-{series}-ubuntu"
196 else:204 else:
197 branchName = platformCodename + "-focal-ubuntu"205 branchName = platformCodename + f"-{series}-ubuntu"
198206
199 project = lp.projects["oem-priority"]207 project = lp.projects["oem-priority"]
200208
201 bt = "[DRAFT][MIR] " + metaPkgName209 if series == "focal":
210 bt = f"[DRAFT][MIR] {metaPkgName}"
211 else:
212 bt = f"[DRAFT][MIR][{series}] {metaPkgName}"
202 bd = "[DRAFT]" + read_from_template(213 bd = "[DRAFT]" + read_from_template(
203 metaPkgName=metaPkgName,214 metaPkgName=metaPkgName,
204 branchName=branchName,215 branchName=branchName,
205 oemCodenameNogroup=oemCodenameNogroup,216 oemCodenameNogroup=oemCodenameNogroup,
206 deviceName=deviceName,217 deviceName=deviceName,
218 series=series,
207 )219 )
208 bug = lp.bugs.createBug(220 bug = lp.bugs.createBug(
209 description=bd,221 description=bd,
@@ -281,19 +293,26 @@ def collect_bugs(lp, output):
281 )293 )
282 continue294 continue
283295
284 result = pattern.match(bug.title)296 result = pattern2.match(bug.title)
285 git = None297 git = None
286 if result:298 if result:
287 if "." in result.group(1):299 series = result.group(1)
288 project, group = result.group(1).split(".")300 project = result.group(2)
289 else:301 platform = result.group(3)
290 project = result.group(1)302 git = f"git clone --depth 1 -b {platform}-{series}-ubuntu https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-{project}-projects-meta oem-{project}-{platform}-meta"
291 group = None303 else:
292 platform = result.group(2)304 result = pattern.match(bug.title)
293 if group:305 if result:
294 git = f"git clone --depth 1 -b {group}.{platform}-focal-ubuntu https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-{project}-projects-meta oem-{project}.{group}-{platform}-meta"306 if "." in result.group(1):
295 else:307 project, group = result.group(1).split(".")
296 git = f"git clone --depth 1 -b {platform}-focal-ubuntu https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-{project}-projects-meta oem-{project}-{platform}-meta"308 else:
309 project = result.group(1)
310 group = None
311 platform = result.group(2)
312 if group:
313 git = f"git clone --depth 1 -b {group}.{platform}-focal-ubuntu https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-{project}-projects-meta oem-{project}.{group}-{platform}-meta"
314 else:
315 git = f"git clone --depth 1 -b {platform}-focal-ubuntu https://git.launchpad.net/~oem-solutions-engineers/pc-enablement/+git/oem-{project}-projects-meta oem-{project}-{platform}-meta"
297316
298 subscriptions = []317 subscriptions = []
299 for subscription in bug.subscriptions:318 for subscription in bug.subscriptions:
@@ -338,6 +357,7 @@ def collect_bugs(lp, output):
338357
339def update_bug(358def update_bug(
340 lp,359 lp,
360 series: str,
341 bug_number: int,361 bug_number: int,
342 yes: bool,362 yes: bool,
343 certified: bool = False,363 certified: bool = False,
@@ -353,7 +373,7 @@ def update_bug(
353 bug_modified = True373 bug_modified = True
354 bug.description = desc374 bug.description = desc
355375
356 if check_bug_title(bug, pkg_name) is False and yes_or_ask(376 if check_bug_title(bug, pkg_name, series) is False and yes_or_ask(
357 yes, "Do you want to update the bug title?"377 yes, "Do you want to update the bug title?"
358 ):378 ):
359 bug_modified = True379 bug_modified = True
@@ -406,9 +426,11 @@ def update_bug(
406 if tags != bug.tags:426 if tags != bug.tags:
407 bug.tags = tags427 bug.tags = tags
408428
409 check_and_update_git_repo(bug, pkg_name, yes=yes, update=True, username=lp.me.name)429 check_and_update_git_repo(
430 bug, pkg_name, series=series, yes=yes, update=True, username=lp.me.name
431 )
410432
411 check_and_update_bug_attachments(bug, pkg_name, update=True, yes=yes)433 check_and_update_bug_attachments(bug, pkg_name, series=series, update=True, yes=yes)
412434
413 if bug_modified:435 if bug_modified:
414 bug.lp_save()436 bug.lp_save()
@@ -420,7 +442,11 @@ def update_bug(
420442
421443
422def check_bug(444def check_bug(
423 lp, bug_number: int, certified: bool = False, certified_hardwares: list = []445 lp,
446 bug_number: int,
447 series: str,
448 certified: bool = False,
449 certified_hardwares: list = [],
424) -> None:450) -> None:
425 bug = lp.bugs[bug_number]451 bug = lp.bugs[bug_number]
426 info(f'Checking LP: #{bug_number} - "{bug.title}" ...')452 info(f'Checking LP: #{bug_number} - "{bug.title}" ...')
@@ -428,7 +454,7 @@ def check_bug(
428 desc, pkg_name = check_bug_description(bug, certified_hardwares)454 desc, pkg_name = check_bug_description(bug, certified_hardwares)
429 if desc:455 if desc:
430 need_fixing = True456 need_fixing = True
431 if check_bug_title(bug, pkg_name) is False:457 if check_bug_title(bug, pkg_name, series) is False:
432 need_fixing = True458 need_fixing = True
433 if check_bug_importance(bug) is False:459 if check_bug_importance(bug) is False:
434 need_fixing = True460 need_fixing = True
@@ -438,13 +464,14 @@ def check_bug(
438 need_fixing = True464 need_fixing = True
439 if check_bug_tags(bug, certified) is False:465 if check_bug_tags(bug, certified) is False:
440 need_fixing = True466 need_fixing = True
441 if check_and_update_git_repo(bug, pkg_name) is False:467 if check_and_update_git_repo(bug, pkg_name, series=series) is False:
442 need_fixing = True468 need_fixing = True
443 if check_and_update_bug_attachments(bug, pkg_name) is False:469 if check_and_update_bug_attachments(bug, pkg_name, series=series) is False:
444 need_fixing = True470 need_fixing = True
445 if (471 if (
446 not args.skip472 not args.skip
447 and check_and_update_git_repo(bug, pkg_name, bootstrap=False) is False473 and check_and_update_git_repo(bug, pkg_name, series=series, bootstrap=False)
474 is False
448 ):475 ):
449 need_fixing = True476 need_fixing = True
450477
@@ -456,22 +483,31 @@ def check_bug(
456483
457def check_bug_description(bug, certified_hardwares: list) -> (str, str):484def check_bug_description(bug, certified_hardwares: list) -> (str, str):
458 info("Checking bug description...")485 info("Checking bug description...")
459 result = pattern.match(bug.title)486 result = pattern2.match(bug.title)
460 if not result:487 if not result:
461 critical(f"LP: #{bug.id} '{bug.title}' is NOT MATCHED")488 result = pattern.match(bug.title)
462 exit(1)489 if not result:
463490 critical(f"LP: #{bug.id} '{bug.title}' is NOT MATCHED")
464 if "." in result.group(1):491 exit(1)
465 project, group = result.group(1).split(".")492 if "." in result.group(1):
466 platform = result.group(2)493 project, group = result.group(1).split(".")
467 branchName = group + "." + platform + "-focal-ubuntu"494 platform = result.group(2)
495 branchName = group + "." + platform + "-focal-ubuntu"
496 else:
497 project = result.group(1)
498 platform = result.group(2)
499 group = None
500 branchName = platform + "-focal-ubuntu"
501 metaPkgName = f"oem-{result.group(1)}-{result.group(2)}-meta"
502 series = "focal"
468 else:503 else:
469 project = result.group(1)504 series = result.group(1)
470 platform = result.group(2)505 project = result.group(2)
506 platform = result.group(3)
471 group = None507 group = None
472 branchName = platform + "-focal-ubuntu"508 branchName = platform + f"-{series}-ubuntu"
509 metaPkgName = f"oem-{project}-{platform}-meta"
473510
474 metaPkgName = f"oem-{result.group(1)}-{result.group(2)}-meta"
475 prog = re.compile(r"\W*We want to improve the hardware support for ([^.]*).\W*")511 prog = re.compile(r"\W*We want to improve the hardware support for ([^.]*).\W*")
476 deviceName = None512 deviceName = None
477513
@@ -480,7 +516,7 @@ def check_bug_description(bug, certified_hardwares: list) -> (str, str):
480 if not result:516 if not result:
481 continue517 continue
482 deviceName = result.group(1)518 deviceName = result.group(1)
483 if deviceName.endswith(" on focal"):519 if deviceName.endswith(f" on {series}"):
484 deviceName = deviceName[:-9]520 deviceName = deviceName[:-9]
485 break521 break
486 else:522 else:
@@ -492,6 +528,7 @@ def check_bug_description(bug, certified_hardwares: list) -> (str, str):
492 branchName=branchName,528 branchName=branchName,
493 oemCodenameNogroup=project,529 oemCodenameNogroup=project,
494 deviceName=deviceName,530 deviceName=deviceName,
531 series=series,
495 )532 )
496533
497 if certified_hardwares:534 if certified_hardwares:
@@ -517,9 +554,11 @@ def check_bug_description(bug, certified_hardwares: list) -> (str, str):
517 return (None, metaPkgName)554 return (None, metaPkgName)
518555
519556
520def check_bug_title(bug, pkg_name: str) -> bool:557def check_bug_title(bug, pkg_name: str, series: str) -> bool:
521 info("Checking bug title...")558 info("Checking bug title...")
522 if bug.title == f"[MIR] {pkg_name}":559 if series == "focal" and bug.title == f"[MIR] {pkg_name}":
560 return True
561 elif bug.title == f"[MIR][{series}] {pkg_name}":
523 return True562 return True
524 error(f"The bug title shall be '[MIR] {pkg_name}' but it is '{bug.title}'.")563 error(f"The bug title shall be '[MIR] {pkg_name}' but it is '{bug.title}'.")
525 return False564 return False
@@ -733,29 +772,43 @@ def check_bug_tags(bug, certified: bool = False) -> bool:
733772
734773
735def check_and_update_bug_attachments(774def check_and_update_bug_attachments(
736 bug, pkg_name: str, update=False, yes=False775 bug,
776 pkg_name: str,
777 series: str,
778 update=False,
779 yes=False,
737) -> bool:780) -> bool:
738 if update:781 if update:
739 info("Checking and updating attachments...")782 info("Checking and updating attachments...")
740 else:783 else:
741 info("Checking attachments...")784 info("Checking attachments...")
742 result = pattern.match(f"[MIR] {pkg_name}")
743785
744 if result is None:786 if series != "focal":
745 critical(f"{pkg_name} failed.")787 result = pattern2.match(f"[MIR][{series}] {pkg_name}")
746 exit(1)788 if result is None:
747789 critical(f"{pkg_name} failed.")
748 if "." in result.group(1):790 exit(1)
749 project, group = result.group(1).split(".")791 project = result.group(2)
792 platform = result.group(3)
793 branch = f"{platform}-{series}-ubuntu"
750 else:794 else:
751 project = result.group(1)795 result = pattern.match(f"[MIR] {pkg_name}")
752 group = None
753 platform = result.group(2)
754796
755 if group:797 if result is None:
756 branch = f"{group}.{platform}-focal-ubuntu"798 critical(f"{pkg_name} failed.")
757 else:799 exit(1)
758 branch = f"{platform}-focal-ubuntu"800
801 if "." in result.group(1):
802 project, group = result.group(1).split(".")
803 else:
804 project = result.group(1)
805 group = None
806 platform = result.group(2)
807
808 if group:
809 branch = f"{group}.{platform}-focal-ubuntu"
810 else:
811 branch = f"{platform}-focal-ubuntu"
759812
760 git_command = (813 git_command = (
761 "git",814 "git",
@@ -855,7 +908,13 @@ def check_and_update_bug_attachments(
855908
856909
857def check_and_update_git_repo(910def check_and_update_git_repo(
858 bug, pkg_name: str, yes=False, bootstrap=True, update=False, username=None911 bug,
912 pkg_name: str,
913 series: str,
914 yes=False,
915 bootstrap=True,
916 update=False,
917 username=None,
859) -> bool:918) -> bool:
860 if update:919 if update:
861 if bootstrap:920 if bootstrap:
@@ -868,28 +927,37 @@ def check_and_update_git_repo(
868 else:927 else:
869 info("Checking git repo for oem branch...")928 info("Checking git repo for oem branch...")
870929
871 result = pattern.match(f"[MIR] {pkg_name}")930 if series != "focal":
931 result = pattern2.match(f"[MIR][{series}] {pkg_name}")
932 platform = result.group(2)
933 if bootstrap:
934 suffix = "ubuntu"
935 else:
936 suffix = "oem"
937 branch = f"{platform}-{series}-{suffix}"
938 else:
939 result = pattern.match(f"[MIR] {pkg_name}")
872940
873 if result is None:941 if result is None:
874 critical(f"{pkg_name} failed.")942 critical(f"{pkg_name} failed.")
875 exit(1)943 exit(1)
876944
877 if "." in result.group(1):945 if "." in result.group(1):
878 project, group = result.group(1).split(".")946 project, group = result.group(1).split(".")
879 else:947 else:
880 project = result.group(1)948 project = result.group(1)
881 group = None949 group = None
882 platform = result.group(2)950 platform = result.group(2)
883951
884 if bootstrap:952 if bootstrap:
885 suffix = "ubuntu"953 suffix = "ubuntu"
886 else:954 else:
887 suffix = "oem"955 suffix = "oem"
888956
889 if group:957 if group:
890 branch = f"{group}.{platform}-focal-{suffix}"958 branch = f"{group}.{platform}-focal-{suffix}"
891 else:959 else:
892 branch = f"{platform}-focal-{suffix}"960 branch = f"{platform}-focal-{suffix}"
893961
894 kernel_flavour, kernel_meta, market_name, ids = _get_items_from_git(962 kernel_flavour, kernel_meta, market_name, ids = _get_items_from_git(
895 project, branch, pkg_name963 project, branch, pkg_name
@@ -940,10 +1008,11 @@ def check_and_update_git_repo(
940 ):1008 ):
941 market_name = new_market_name1009 market_name = new_market_name
9421010
1011 version = UbuntuDistroInfo().version(series).split(" ")[0]
943 if kernel_flavour == "default":1012 if kernel_flavour == "default":
944 if kernel_meta is None:1013 if kernel_meta is None:
945 kernel_meta = "linux-generic-hwe-20.04"1014 kernel_meta = f"linux-generic-hwe-{version}"
946 elif kernel_meta == "linux-generic-hwe-20.04":1015 elif kernel_meta == f"linux-generic-hwe-{version}":
947 pass1016 pass
948 else:1017 else:
949 critical(1018 critical(
@@ -952,8 +1021,8 @@ def check_and_update_git_repo(
952 exit(1)1021 exit(1)
953 elif kernel_flavour == "oem":1022 elif kernel_flavour == "oem":
954 if kernel_meta is None:1023 if kernel_meta is None:
955 kernel_meta = "linux-oem-20.04"1024 kernel_meta = f"linux-oem-{version}"
956 elif kernel_meta.startswith("linux-oem-20.04"):1025 elif kernel_meta.startswith(f"linux-oem-{version}"):
957 pass1026 pass
958 else:1027 else:
959 critical(1028 critical(
@@ -972,7 +1041,7 @@ def check_and_update_git_repo(
972 command = [1041 command = [
973 "pkg-somerville-meta",1042 "pkg-somerville-meta",
974 "-s",1043 "-s",
975 "focal",1044 series,
976 "-k",1045 "-k",
977 kernel_meta,1046 kernel_meta,
978 "-p",1047 "-p",
@@ -991,7 +1060,7 @@ def check_and_update_git_repo(
991 command = [1060 command = [
992 "pkg-stella-meta",1061 "pkg-stella-meta",
993 "-s",1062 "-s",
994 "focal",1063 series,
995 "-k",1064 "-k",
996 kernel_meta,1065 kernel_meta,
997 "-g",1066 "-g",
@@ -1012,7 +1081,7 @@ def check_and_update_git_repo(
1012 command = [1081 command = [
1013 "pkg-sutton-meta",1082 "pkg-sutton-meta",
1014 "-s",1083 "-s",
1015 "focal",1084 series,
1016 "-k",1085 "-k",
1017 kernel_meta,1086 kernel_meta,
1018 "-g",1087 "-g",
@@ -1060,10 +1129,13 @@ def check_and_update_git_repo(
1060 with open(changelog, "r") as f:1129 with open(changelog, "r") as f:
1061 lines = f.readlines()1130 lines = f.readlines()
10621131
1132 version = UbuntuDistroInfo().version(series).split(" ")[0]
1063 if args.release:1133 if args.release:
1064 lines[0] = f"{pkg_name} (20.04~ubuntu1) focal; urgency=medium\n"1134 lines[0] = f"{pkg_name} ({version}~ubuntu1) {series}; urgency=medium\n"
1065 else:1135 else:
1066 lines[0] = f"{pkg_name} (20.04~ubuntu1) UNRELEASED; urgency=medium\n"1136 lines[
1137 0
1138 ] = f"{pkg_name} ({version}~ubuntu1) UNRELEASED; urgency=medium\n"
10671139
1068 if f"(LP: #{bug.id})" not in lines[2] and lines[2].startswith(1140 if f"(LP: #{bug.id})" not in lines[2] and lines[2].startswith(
1069 " * Meta package for"1141 " * Meta package for"
@@ -1130,7 +1202,8 @@ def check_and_update_git_repo(
1130 return True1202 return True
11311203
11321204
1133def read_from_template(metaPkgName, branchName, oemCodenameNogroup, deviceName):1205def read_from_template(metaPkgName, branchName, oemCodenameNogroup, deviceName, series):
1206 version = UbuntuDistroInfo().version(series).split(" ")[0]
1134 env = jinja2.Environment(1207 env = jinja2.Environment(
1135 loader=jinja2.FileSystemLoader(["./", "/usr/share/oem-scripts"])1208 loader=jinja2.FileSystemLoader(["./", "/usr/share/oem-scripts"])
1136 )1209 )
@@ -1140,6 +1213,7 @@ def read_from_template(metaPkgName, branchName, oemCodenameNogroup, deviceName):
1140 branchName=branchName,1213 branchName=branchName,
1141 oemCodenameNogroup=oemCodenameNogroup,1214 oemCodenameNogroup=oemCodenameNogroup,
1142 deviceName=deviceName,1215 deviceName=deviceName,
1216 version=version,
1143 )1217 )
11441218
11451219
@@ -1148,7 +1222,13 @@ if args.subcommand:
1148 lp = login.lp1222 lp = login.lp
11491223
1150if args.subcommand == "create":1224if args.subcommand == "create":
1151 create_bug(lp, args.oemCodename, args.platformCodename, args.deviceName)1225 if not args.series:
1226 series = lsb_release.get_os_release()["CODENAME"]
1227 else:
1228 series = args.series
1229 if not UbuntuDistroInfo().is_lts(series):
1230 series = UbuntuDistroInfo().lts()
1231 create_bug(lp, args.oemCodename, args.platformCodename, args.deviceName, series)
1152elif args.subcommand == "update":1232elif args.subcommand == "update":
1153 args.json = json.load(args.json)1233 args.json = json.load(args.json)
1154 certified = False1234 certified = False
@@ -1182,6 +1262,7 @@ elif args.subcommand == "update":
11821262
1183 update_bug(1263 update_bug(
1184 lp,1264 lp,
1265 series=args.json["series"],
1185 bug_number=bug_number,1266 bug_number=bug_number,
1186 yes=args.yes,1267 yes=args.yes,
1187 certified=certified,1268 certified=certified,
@@ -1220,6 +1301,7 @@ elif args.subcommand == "check":
12201301
1221 check_bug(1302 check_bug(
1222 lp,1303 lp,
1304 series=args.json["series"],
1223 bug_number=bug_number,1305 bug_number=bug_number,
1224 certified=certified,1306 certified=certified,
1225 certified_hardwares=certified_hardwares,1307 certified_hardwares=certified_hardwares,
diff --git a/oem-meta-package.mir.jinja2 b/oem-meta-package.mir.jinja2
index 064ec6a..6c44b08 100644
--- a/oem-meta-package.mir.jinja2
+++ b/oem-meta-package.mir.jinja2
@@ -32,7 +32,7 @@ No CVE/known security issue.
3232
33[Quality assurance]33[Quality assurance]
34I have used ppa:oem-solutions-engineers/oem-projects-meta to check this package on {{ deviceName }}.34I have used ppa:oem-solutions-engineers/oem-projects-meta to check this package on {{ deviceName }}.
35{{ metaPkgName }} will be upgraded to 20.04ubuntu1 or the later version from OEM archive.35{{ metaPkgName }} will be upgraded to {{ version }}ubuntu1 or the later version from OEM archive.
3636
37[Dependencies]37[Dependencies]
38It only depends on ubuntu-oem-keyring.38It only depends on ubuntu-oem-keyring.

Subscribers

People subscribed via source and target branches