ci(build-kernel): support dbgsym packages and build qcom-rt flavour - #60
ci(build-kernel): support dbgsym packages and build qcom-rt flavour#60guanquan (GuanquanTian) wants to merge 4 commits into
Conversation
There was a problem hiding this comment.
Nice, the dbgsym switch is handy and do_dbgsym_package is the right knob for it.
Two things to fix first. The "${TARGET}" quoting breaks the build: TARGET is two words, binary-qcom binary-indep, and 791b790 dropped the quotes on purpose when it added binary-indep. Quoted, make sees one goal named binary-qcom binary-indep and bails with "No rule to make target", so no linux-qcom-headers.
Second, the true default doesn't survive the nightly. On schedule: the inputs context is empty, so inputs.dbgsym is null, and GitHub casts null and false both to 0 for ==. null == false is true, so DBGSYM lands on 'false'. The cron build is the one that uploads to S3, so that's the build quietly losing dbgsym.
Separately, the S3 step uploads all of output/, so ddebs hit the bucket on any run without skip_s3. Default true is fine by me for dispatch and nightly. The premerge check however is in my #28, which hasn't landed yet, so it needs a change on that side as well: I'll have it pass dbgsym: false there so contributor builds skip the debug symbol work.
Couple of nits inline.
- Add a dbgsym workflow input (default true) mapped to a DBGSYM env var and passed into the build container. - Pass do_dbgsym_package=true/false to debian/rules based on DBGSYM. - Collect and list *.ddeb alongside *.deb/*.changes/*.buildinfo, both inside the container and in the outer "Collect built packages" step. - Add a Dbgsym row to the run summary table. - Document the new dbgsym input in docs/PIPELINE.md. Signed-off-by: Guanquan Tian <guanquan@qti.qualcomm.com>
e1d552c to
693f2c6
Compare
FLAVOR was hardcoded to qcom, so the qcom-rt flavour defined in debian.qcom/rules.d/arm64.mk was never built despite being fully wired up (vars.qcom-rt, PREEMPT_RT policy in config/annotations). Set FLAVOR=all so TARGET resolves to the binary target, which depends on every flavour in debian.qcom's flavours list. Signed-off-by: Guanquan Tian <guanquan@qti.qualcomm.com>
|
One more thing before this lands. Landing two flavours flat in I'd propose we give each variant its own prefix: qcom stays where it is so the current consumer is unaffected, the rt packages including the rt dbgsym go under |
qcom and qcom-rt flavour packages were collected into the same flat output/ directory, making the two indistinguishable downstream. Split qcom-rt packages (matched by their -qcom-rt/-qcom-rt-dbgsym suffix) into output/rt/, while qcom and arch-indep packages stay in output/. Also drop the redundant in-container copy step, since the host-side collection step already re-scans and copies the same files. Signed-off-by: Guanquan Tian <guanquan@qti.qualcomm.com>
|
Checked the bucket, the One gap in it: So nothing to change at build time. Could we copy (not move, qcom needs it too) |
linux-headers-*-qcom-rt depends on linux-qcom-headers-*, which is built as a single "Architecture: all" package per ABI rather than per-flavour, so it only ever lands in output/ and never matches the -qcom-rt filename pattern used to populate output/rt/. This leaves output/rt/ missing a dependency, breaking headers installs for the rt flavour when consumed standalone. Copy (not move, since qcom still needs its own copy) linux-qcom-headers-* and linux-qcom-tools-* into output/rt/ as well, so each flavour's output folder is self-contained. Signed-off-by: Guanquan Tian <guanquan@qti.qualcomm.com>
Summary
Add a
dbgsymworkflow input (defaulttrue, bothworkflow_dispatchandworkflow_call) mapped to aDBGSYMenv var and passed into the build container.Pass
do_dbgsym_package=true/falsetodebian/rulesbased onDBGSYM(a standard Canonical kernel packaging switch already supported bydebian/rules.d/).Collect and list
*.ddebalongside*.deb/*.changes/*.buildinfo, both inside the container and in the outer "Collect built packages" step.Add a Dbgsym row to the run summary table.
Document the new
dbgsyminput indocs/PIPELINE.md.Build all kernel flavours (
FLAVOR=all) instead of onlyqcom.