Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
bb9f21b
feat(rootfs): Add suite and distro variables
lool Mar 8, 2026
85f2f14
feat(rootfs): Generate APT sources dynamically
lool Mar 8, 2026
8861ee2
feat(rootfs): Generate Debian backports APT config
lool Mar 8, 2026
6973646
feat(rootfs): Generate qsc-deb-releases APT config
lool Mar 8, 2026
e7e9805
feat(rootfs): Add hostname and username parameters
lool Mar 8, 2026
b7298ae
feat(rootfs): Per distro mirrors and components
lool Mar 8, 2026
2e8a9f7
feat(Makefile): Pass suite and distro to debos
lool Mar 8, 2026
20512e3
ci(debos): Add suite and distro inputs, matrix build on PR
lool Mar 8, 2026
e8c0fa0
fix(rootfs): Handle missing qsc-deb-releases suites
lool Mar 8, 2026
e2bb3d5
feat(rootfs): Update package lists by distro-suite
lool Mar 8, 2026
624d471
Fixup: fix(rootfs): Include wget in bootstrap
lool Mar 8, 2026
ee7ebf2
ci: add Ubuntu noble and resolute to PR matrix
lool Mar 8, 2026
2e28520
WIP: Add matrix build to build-on-push too
lool Mar 8, 2026
f55ca6c
WIP: Always use debos from trixie
lool Mar 8, 2026
52302b3
ci: Per distro/suite kernel and firmware
lool Mar 8, 2026
2be0afc
ci(debos): Install ubuntu-keyring
lool Mar 8, 2026
98165ad
fixup: Catch-up build-on-push
lool Mar 8, 2026
88da2ad
fix(debos/rootfs): Skip adbd on Ubuntu noble
lool Mar 8, 2026
b049dcf
fix(debos/rootfs): Skip fastrpc-support on Ubuntu
lool Mar 8, 2026
9674246
fix(debos/rootfs): Only use fastrpc group when present
lool Mar 8, 2026
7c31a7a
fix(debos/rootfs): Use network-manager-gnome on noble
lool Mar 8, 2026
296a4d8
fix(debos/rootfs): fix locale-gen invocation
lool Mar 8, 2026
6ab27e1
fix(debos/rootfs): Support Ubuntu DTB path
lool Mar 8, 2026
2e9b215
fixup: debos/image: also fix DTB path
lool Mar 8, 2026
862bd4d
fix(debos/image): Skip u-boot-efi-dtb on noble
lool Mar 8, 2026
beacc9e
feature!: Change default user and hostname to qcom
lool Mar 9, 2026
263d6f2
refactor(ci/debos): Avoid extra staging copy
lool Mar 9, 2026
30044dc
feat(ci/debos)!: Prefix artifacts with distro-suite
lool Mar 9, 2026
6d0cf5e
fixup: refactor(ci/debos): Avoid extra staging copy of SBOMs
lool Mar 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/build-daily.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ jobs:
secrets: inherit
with:
url: ${{ needs.build-daily.outputs.artifacts_url }}
distro: debian
suite: trixie
25 changes: 24 additions & 1 deletion .github/workflows/build-on-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,30 @@ jobs:
name: Event File
path: ${{ github.event_path }}

build-pr:
build:
strategy:
fail-fast: false
matrix:
include:
- distro: debian
suite: trixie
# the package name will be passed to APT which interprets the
# trailing plus sign in the package name as a request to install
# the package, so use two plus signs
kernelpackage: linux-image-6.16.7-qcom1++
- distro: debian
suite: forky
kernelpackage: linux-image-arm64
- distro: ubuntu
suite: noble
kernelpackage: linux-image-qcom
- distro: ubuntu
suite: resolute
kernelpackage: linux-image-generic
uses: ./.github/workflows/debos.yml
with:
suite: ${{ matrix.suite }}
distro: ${{ matrix.distro }}
kernelpackage: ${{ matrix.kernelpackage }}
schema-check:
uses: ./.github/workflows/lava-schema-check.yml
29 changes: 26 additions & 3 deletions .github/workflows/build-on-push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,36 @@ permissions:
pull-requests: write # lava-test.yml

jobs:
build-daily:
build:
strategy:
fail-fast: false
matrix:
include:
- distro: debian
suite: trixie
# the package name will be passed to APT which interprets the
# trailing plus sign in the package name as a request to install
# the package, so use two plus signs
kernelpackage: linux-image-6.16.7-qcom1++
- distro: debian
suite: forky
kernelpackage: linux-image-arm64
- distro: ubuntu
suite: noble
kernelpackage: linux-image-qcom
- distro: ubuntu
suite: resolute
kernelpackage: linux-image-generic
with:
suite: ${{ matrix.suite }}
distro: ${{ matrix.distro }}
kernelpackage: ${{ matrix.kernelpackage }}
uses: ./.github/workflows/debos.yml
schema-check:
uses: ./.github/workflows/lava-schema-check.yml
test:
uses: ./.github/workflows/lava-test.yml
needs: [build-daily, schema-check]
needs: [build, schema-check]
secrets: inherit
with:
url: ${{ needs.build-daily.outputs.artifacts_url }}
url: ${{ needs.build.outputs.artifacts_url }}
50 changes: 31 additions & 19 deletions .github/workflows/debos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@ name: Build debos recipe
on:
workflow_call:
inputs:
suite:
description: Distribution suite (e.g. trixie, forky, noble)
type: string
default: trixie
distro:
description: Distribution (debian or ubuntu)
type: string
default: debian
overlays:
description: List of overlays to use
type: string
Expand All @@ -13,10 +21,7 @@ on:
linux-image-arm64) or name of a fileserver kernel package directory
(e.g. fileserver/mainline)
type: string
# the package name will be passed to APT which interprets the trailing
# plus sign in the package name as a request to install the package, so
# use two plus signs
default: linux-image-6.16.7-qcom1++
default: linux-image-arm64
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that change is already pending in #277

debos_extra_args:
description: Extra arguments to pass to debos (e.g. -t dtb:qcom/some.dtb)
type: string
Expand All @@ -41,10 +46,11 @@ env:
BUILD_ID: ${{ github.run_id }}-${{ github.run_attempt }}
KERNEL_PACKAGE: ${{ inputs.kernelpackage }}
DEBOS_EXTRA_ARGS: ${{ inputs.debos_extra_args }}
DEBOS_DISTRO_ARGS: -t suite:${{ inputs.suite }} -t distro:${{ inputs.distro }}

jobs:
build-debos:
name: Build and upload debos recipes
name: Build and upload debos recipes (${{ inputs.distro }} ${{ inputs.suite }})
outputs:
url: ${{ steps.upload_artifacts_s3.outputs.url }}
runs-on: [self-hosted, qcom-u2404, arm64]
Expand All @@ -71,8 +77,11 @@ jobs:
run: cp -av "/fileserver-downloads/qcom-deb-images/u-boot-rb1-latest/rb1-boot.img" .

# mtools is needed for the flash recipe
# mmdebstrap bootstraps rootfs for the target distro/suite from a
# Debian trixie build environment; debos is not installable on Ubuntu
# noble and doesn't work on forky or resolute
- name: Install debos and dependencies of the recipes and local tests
run: apt -y install debian-archive-keyring debos make mmdebstrap mtools python3-pexpect python3-pytest qemu-efi-aarch64 qemu-system-arm
run: apt -y install debian-archive-keyring debos make mmdebstrap mtools python3-pexpect python3-pytest qemu-efi-aarch64 qemu-system-arm ubuntu-keyring

- name: Setup local APT repo
run: |
Expand Down Expand Up @@ -116,6 +125,7 @@ jobs:
-t aptlocalrepo:${PWD}/local-apt-repo \
-t kernelpackage:"$kernel_package" \
-t "buildid:${BUILD_ID}" \
${DEBOS_DISTRO_ARGS} \
${DEBOS_EXTRA_ARGS} \
--print-recipe \
debos-recipes/qualcomm-linux-debian-rootfs.yaml
Expand All @@ -130,10 +140,12 @@ jobs:
# whole build is done from memory and the out of memory killer
# gets triggered
debos -b qemu --scratchsize 6GiB -t imagetype:ufs \
${DEBOS_DISTRO_ARGS} \
${DEBOS_EXTRA_ARGS} \
--print-recipe \
debos-recipes/qualcomm-linux-debian-image.yaml
debos -b qemu --scratchsize 6GiB -t imagetype:sdcard \
${DEBOS_DISTRO_ARGS} \
${DEBOS_EXTRA_ARGS} \
--print-recipe \
debos-recipes/qualcomm-linux-debian-image.yaml
Expand All @@ -144,31 +156,29 @@ jobs:
debos \
-t u_boot_rb1:rb1-boot.img \
-t "buildid:${BUILD_ID}" \
${DEBOS_DISTRO_ARGS} \
${DEBOS_EXTRA_ARGS} \
--print-recipe \
debos-recipes/qualcomm-linux-debian-flash.yaml

- name: Stage debos artifacts for publishing
run: |
set -ux
prefix="${{ inputs.distro }}-${{ inputs.suite }}"
# create a directory for the current run
dir="debos-artifacts"
mkdir -v "${dir}"
# compress output files before staging them
gzip --keep rootfs.tar
gzip --keep disk-ufs.img
gzip --keep disk-sdcard.img
# copy output files
cp -av rootfs.tar.gz "${dir}"
cp -av dtbs.tar.gz "${dir}"
cp -av disk-ufs.img.gz "${dir}"
cp -av disk-sdcard.img.gz "${dir}"
# compress output files directly into the staging directory
gzip -c rootfs.tar >"${dir}/${prefix}-rootfs.tar.gz"
gzip -c disk-ufs.img >"${dir}/${prefix}-disk-ufs.img.gz"
gzip -c disk-sdcard.img >"${dir}/${prefix}-disk-sdcard.img.gz"
cp -av dtbs.tar.gz "${dir}/${prefix}-dtbs.tar.gz"
# create tarballs with support for all UFS and all eMMC boards
tar -cvzf "${dir}"/flash-ufs.tar.gz \
tar -cvzf "${dir}/${prefix}-flash-ufs.tar.gz" \
disk-ufs.img1 \
disk-ufs.img2 \
flash_*_ufs
tar -cvzf "${dir}"/flash-emmc.tar.gz \
tar -cvzf "${dir}/${prefix}-flash-emmc.tar.gz" \
disk-sdcard.img1 \
disk-sdcard.img2 \
flash_*_emmc
Expand Down Expand Up @@ -221,10 +231,12 @@ jobs:
- name: Stage SBOMs for publishing
run: |
set -ux
gzip rootfs-sbom.*
prefix="${{ inputs.distro }}-${{ inputs.suite }}"
dir="sboms"
mkdir -v sboms
cp -av rootfs-sbom.*.gz sboms
for f in rootfs-sbom.*; do
gzip -c "$f" >"${dir}/${prefix}-${f}.gz"
done

- name: Upload SBOMs as private artifacts
uses: qualcomm-linux/upload-private-artifact-action@aws-v4
Expand Down
12 changes: 12 additions & 0 deletions .github/workflows/lava-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ on:
url:
required: true
type: string
distro:
description: Distribution (debian or ubuntu)
type: string
default: debian
suite:
description: Distribution suite (e.g. trixie, forky, noble)
type: string
default: trixie

# implicitely set all other permissions to none
permissions:
Expand All @@ -17,6 +25,8 @@ permissions:
env:
BUILD_URL: ${{ inputs.url }}
LAVA_CI: ci/lava/
DISTRO: ${{ inputs.distro }}
SUITE: ${{ inputs.suite }}

jobs:
prepare-job-list:
Expand Down Expand Up @@ -83,6 +93,8 @@ jobs:
-e "s|{{BUILD_DOWNLOAD_URL}}|${BUILD_DOWNLOAD_URL}|g" \
-e "s|{{BUILD_FILE_NAME}}|${BUILD_FILE_NAME}|g" \
-e "s|{{DEVICE_TYPE}}|${DEVICE_TYPE}|g" \
-e "s|{{DISTRO}}|${DISTRO}|g" \
-e "s|{{SUITE}}|${SUITE}|g" \
-e "s|{{GITHUB_REPOSITORY}}|${GITHUB_REPOSITORY}|g" \
-e "s|{{GITHUB_RUN_ATTEMPT}}|${GITHUB_RUN_ATTEMPT}|g" \
-e "s|{{GITHUB_RUN_ID}}|${GITHUB_RUN_ID}|g" \
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -152,3 +152,5 @@ jobs:
secrets: inherit
with:
url: ${{ needs.debos-linux-deb.outputs.artifacts_url }}
distro: debian
suite: trixie
11 changes: 8 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,17 +46,22 @@ endif
http_proxy ?= $(shell apt-config dump --format '%v%n' Acquire::http::Proxy)
export http_proxy

# Distribution and suite selection
SUITE ?= trixie
DISTRO ?= debian
DEBOS_VARS := -t suite:$(SUITE) -t distro:$(DISTRO)

.PHONY: all
all: disk-ufs.img disk-sdcard.img

rootfs.tar: debos-recipes/qualcomm-linux-debian-rootfs.yaml
$(DEBOS_CMD) $<
$(DEBOS_CMD) $(DEBOS_VARS) $<

disk-ufs.img: debos-recipes/qualcomm-linux-debian-image.yaml rootfs.tar
$(DEBOS_CMD) $<
$(DEBOS_CMD) $(DEBOS_VARS) $<

disk-sdcard.img: debos-recipes/qualcomm-linux-debian-image.yaml rootfs.tar
$(DEBOS_CMD) -t imagetype:sdcard $<
$(DEBOS_CMD) $(DEBOS_VARS) -t imagetype:sdcard $<

.PHONY: test
test: disk-ufs.img
Expand Down
12 changes: 6 additions & 6 deletions ci/lava/qcs6490-rb3gen2-vision-kit/boot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ actions:
image:
headers:
Authorization: Q_S3_TOKEN
url: "{{BUILD_DOWNLOAD_URL}}/flash-ufs.tar.gz"
url: "{{BUILD_DOWNLOAD_URL}}/{{DISTRO}}-{{SUITE}}-flash-ufs.tar.gz"
postprocess:
docker:
image: ghcr.io/foundriesio/lava-lmp-sign:main
Expand Down Expand Up @@ -33,18 +33,18 @@ actions:
- boot:
auto_login:
login_prompt: 'login:'
username: debian
username: qcom
password_prompt: 'Password'
password: debian
password: qcom
login_commands:
- "debian"
- "qcom"
- "new password"
- "new password"
- sudo su
method: minimal
prompts:
- root@debian
- debian@debian
- root@qcom
- qcom@qcom
- "Current password"
- "New password"
- "Retype new password"
Expand Down
12 changes: 6 additions & 6 deletions ci/lava/qrb2210-rb1/boot.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ actions:
image:
headers:
Authorization: Q_S3_TOKEN
url: "{{BUILD_DOWNLOAD_URL}}/flash-emmc.tar.gz"
url: "{{BUILD_DOWNLOAD_URL}}/{{DISTRO}}-{{SUITE}}-flash-emmc.tar.gz"
postprocess:
docker:
image: ghcr.io/foundriesio/lava-lmp-sign:main
Expand Down Expand Up @@ -34,18 +34,18 @@ actions:
- boot:
auto_login:
login_prompt: 'login:'
username: debian
username: qcom
password_prompt: 'Password'
password: debian
password: qcom
login_commands:
- "debian"
- "qcom"
- "new password"
- "new password"
- sudo su
method: minimal
prompts:
- root@debian
- debian@debian
- root@qcom
- qcom@qcom
- "Current password"
- "New password"
- "Retype new password"
Expand Down
8 changes: 4 additions & 4 deletions ci/qemu_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,14 @@ def test_password_reset_required(vm):
# This takes a minute or two on a ThinkPad T14s Gen 6 Snapdragon
vm.expect_exact("debian login:", timeout=240)

vm.send("debian\r\n")
vm.send("qcom\r\n")
vm.expect_exact("Password:")
vm.send("debian\r\n")
vm.send("qcom\r\n")
vm.expect_exact("You are required to change your password immediately")
vm.expect_exact("Current password:")
vm.send("debian\r\n")
vm.send("qcom\r\n")
vm.expect_exact("New password:")
vm.send("new password\r\n")
vm.expect_exact("Retype new password:")
vm.send("new password\r\n")
vm.expect_exact("debian@debian:~$")
vm.expect_exact("qcom@qcom:~$")

This file was deleted.

This file was deleted.

This file was deleted.

Loading
Loading