Debian support - #30
Milosz Wasilewski (mwasilew) wants to merge 6 commits into
Conversation
4cd8358 to
0291167
Compare
|
I based it on top of #31 which should be merged first. |
|
|
||
| {% block auto_login_commands %} | ||
| login_commands: | ||
| - "debian" |
There was a problem hiding this comment.
FYI, this might get stepped on by qualcomm-linux/qcom-deb-images#316
There was a problem hiding this comment.
I guess you should send a patch when you expect it to be merged.
Loïc Minier (lool)
left a comment
There was a problem hiding this comment.
Unrelated to your PR, but FYI there's a typo in the filename: lava_test_plans/testcases/pre-merge-dispaly-gfx.yaml (dispaly instead of display)
Left a few other comments from a quick pass on the changes
|
|
||
| {% block test_target %} | ||
| {% for test in all_tests %} | ||
| {% if (test.name not in EXCLUDED_TESTS) and (test.include|default(true)) %} |
There was a problem hiding this comment.
Not sure why all_tests is lowercased, and EXCLUDED_TESTS is uppercased
There was a problem hiding this comment.
Uppercase variables can be overwritten from user input. Lower case variables are internal to the tool.
| {% extends "devices/qcs615-ride" %} No newline at end of file | ||
| {% extends "devices/qcs615-ride" %} | ||
|
|
||
| {% set EXCLUDED_TESTS = ['BT_FW_KMD_Service', 'BT_SCAN'] %} |
There was a problem hiding this comment.
These changes seem unrelated to Debian support
There was a problem hiding this comment.
BT doesn't work on qcs615 devices we have in the LAB. I can remove it, but then BT tests that are included in the pre-merge set will fail.
There was a problem hiding this comment.
I see; I guess this could be indicative of these changes belonging into a separate PR
There was a problem hiding this comment.
I'll move it to a separate commit.
| def _submit_to_lava(lava_job, lava_url_base, lava_username, lava_token): | ||
| if not ( | ||
| lava_url_base.startswith("http://") | ||
| or lava_url_base.startswith("https://") |
There was a problem hiding this comment.
This should be squashed into the earlier commit that makes these changes
| {% set PROJECT = PROJECT|default("") %} | ||
| {% extends PROJECT+"flasher.jinja2" %} | ||
|
|
||
| {% set BOOT_OS_PROMPT = BOOT_OS_PROMPT|default("root@iq-8075-evk") %} |
There was a problem hiding this comment.
Yocto uses machine-specific prompts, but qcom-deb-images does not; right now, it's always debian@debian; we'd like to change this in the future (Ubuntu support, device-specific hostnames), but for now I think you should hardcode debian@debian for qcom-deb-images.
This is a common file though; perhaps this should be an OS specific template instead, with a meta-qcom version and a qcom-deb-images version.
There was a problem hiding this comment.
ACK. I can move it one level up - project setting, not a device-in-a-project setting
|
|
||
| {% set rootfs_label = 'rootfs' %} | ||
|
|
||
| {% set FLASHER_DEVICE_TYPE = "debian-monaco-arduino-monza_emmc" %} |
There was a problem hiding this comment.
Could we avoid requiring a per-device template file? They are all following the same naming convention and structure
There was a problem hiding this comment.
I'm not so sure. There is qrb2210-arduino-imola but monaco-arduino-monza. It should be either agatti-arduino-imola or qcs8300-arduino-monza. On top of that device specific files are used to exclude tests and amend flashing instructions.
|
|
||
| {% block auto_login_commands %} | ||
| login_commands: | ||
| - "debian" |
There was a problem hiding this comment.
I was expecting:
- debian
- debian
- debian
- new password
- new password
The first two being login + password, the third one being password again before changing password, and the new password lines being the one + confirmation.
There was a problem hiding this comment.
login+password (initial login) is handled by auto_login section. So this part only takes care of changing the password on 1st login.
There was a problem hiding this comment.
Think this is OK, can you resolve if so Milosz Wasilewski (@mwasilew) ?
There was a problem hiding this comment.
I'm sure this is OK. It works. Example: https://lava.infra.foundries.io/scheduler/job/155823#L1521
a6a95e1 to
11a9999
Compare
11a9999 to
b8f7021
Compare
Thanks. This is now fixed. |
73db89c to
7e6e142
Compare
ea8bbe1 to
da6b5d9
Compare
Christopher Obbard (obbardc)
left a comment
There was a problem hiding this comment.
This looks good shape to me so far - but needs care to make sure we include all boards/tests from https://github.com/qualcomm-linux/qcom-deb-images/tree/main/ci/lava
I didn't review in too much detail as Milosz Wasilewski (@mwasilew) said he will rebase first.
021584c to
eb386be
Compare
A board can need a named device command run once it has been flashed and before the OS is booted - bringing up the lab network switch port, for instance. There was no way to ask for one: pre_boot_commands.jinja2 only knows the fixed pre_os_command and pre_power_command names, and both are rendered by the flasher path, not the qdl one. Add user_pre_boot_commands, a list of device command names rendered after the flashing stages. It defaults to empty, so nothing changes for a device that does not set it. Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
Becoming the super user was hardcoded as su, which assumes the root account has a password of its own to ask for. An image can instead give the login user sudo and leave root locked, and there was no way to say so. Take the command from AUTO_LOGIN_SU_COMMAND, defaulting to su, so nothing changes for an image that does not set it. Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
An image can ship an expired password and make the first login set a new one before it gives out a shell. Nothing here could drive that exchange: auto_login_commands.jinja2 only knows how to become root, so a project had to override the whole block and spell the prompts out in its own BOOT_OS_PROMPT. Answer it here instead. AUTO_LOGIN_NEW_PASSWORD, when set, replies with the current password and then the new one twice, and boot_os_prompt adds the three prompts that exchange has to be matched on. Both are skipped when it is unset, so nothing changes for an image that does not force a change. The rendered jobs of every other project are byte identical. Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
The project rendered its jobs through include/flasher.jinja2. Move to
native LAVA qdl deploymen which allows multi storage flashing.
Render the same deployment here. include/qdl.jinja2 already carries the
multi-stage flashing logic and the common devices already carry each
board's firehose programmer, rawprogram/patch lists and stages, so the
project template only has to add what is specific to a debian image: the
authenticated download, the <suite>[-<variant>]-flash-<storage>.tar.gz
tarball name, the disk-{ufs,sdcard}.img2 rootfs image, and the answers to
the password change the first login forces.
Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
Only the build URL was recorded, so a job could not be traced back to the pull request or the workflow run that produced the image under test. Emit the same named keys meta-qcom does. They are always rendered, empty when unset, which keeps a query written against one of them meaningful whichever project rendered the job; anything further a caller wants to record still rides along in EXTRA_METADATA. Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
The project had a single flat boot.yaml and no functional testing at all: not one qcom-linux-testkit test ran against a debian image. Lay the plans out as <project>/<distro>/<plan>, the structure every other project uses and the one the test-distro workflow expects, and add a pre-merge plan alongside boot. The pre-merge plans are the existing testcases, the same ones meta-qcom runs: basic, bluetooth and display. A test plan is resolved by file name, so linking them is enough to render them, and the tests a board cannot run report SKIP rather than FAIL. The bluetooth, audio and display plans are then excluded on every board. They ask for a lab fixture through a LAVA tag, and a job whose tag no device carries does not fail, it waits: it sits queued until the workflow gives up on it, on every board, every run. Excluding them per board rather than leaving them unlinked keeps the entry to delete in view of whoever gives a board the hardware. Note that pre-merge-basic still names the Ethernet suite as one test, which qcom-linux-testkit split into seven after testkit-2026.08.23. A caller has to pin a revision no newer than that until the testcase is updated. Signed-off-by: Milosz Wasilewski <milosz.wasilewski@oss.qualcomm.com>
eb386be to
2d1bd5d
Compare
Add support for qcom-deb-images project: