[PATCH v2 0/2] Add riscv64 support for Ubuntu Noble

0 views
Skip to first unread message

Anton Mikanovich

unread,
Nov 3, 2025, 2:55:35 AM (yesterday) Nov 3
to isar-...@googlegroups.com, Anton Mikanovich
We haven't had Ubuntu riscv64 support in Isar yet despite of existing
upstream support.

Add the support itself and corresponding tests to track it in CI.

Changes in v2:
- Fix regression with incorrect kernel selection for focal/jammy.

Uladzimir Bely (2):
meta-isar: Add ubuntu-ports riscv64 support in Isar
testsuite: Add cross-build and run tests for riscv64 targets

kas/machine/Kconfig | 2 ++
meta-isar/conf/distro/ubuntu-common.inc | 3 ++
meta-isar/conf/distro/ubuntu-noble-ports.list | 12 +++----
meta-isar/conf/machine/qemuriscv64.conf | 3 ++
meta-isar/conf/mc.conf | 1 +
.../conf/multiconfig/qemuriscv64-noble.conf | 7 ++++
testsuite/citest.py | 35 +++++++++++++++++++
testsuite/start_vm.py | 2 +-
8 files changed, 58 insertions(+), 7 deletions(-)
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-noble.conf

--
2.34.1

Anton Mikanovich

unread,
Nov 3, 2025, 2:55:36 AM (yesterday) Nov 3
to isar-...@googlegroups.com, Uladzimir Bely, Anton Mikanovich
From: Uladzimir Bely <ub...@ilbers.de>

Ubuntu ports provides not only arm64/armhf architectures we currently
support in Isar, but also some other architectures.

Provide possibility to build ubuntu/riscv64 targets.

Also, change kas configuration to allow selecting ubuntu-noble for
qemuriscv64 build without enabling ANY_MACHINE_DISTRO option.

Signed-off-by: Uladzimir Bely <ub...@ilbers.de>
Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
kas/machine/Kconfig | 2 ++
meta-isar/conf/distro/ubuntu-common.inc | 3 +++
meta-isar/conf/distro/ubuntu-noble-ports.list | 12 ++++++------
meta-isar/conf/machine/qemuriscv64.conf | 3 +++
meta-isar/conf/mc.conf | 1 +
meta-isar/conf/multiconfig/qemuriscv64-noble.conf | 7 +++++++
6 files changed, 22 insertions(+), 6 deletions(-)
create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-noble.conf

diff --git a/kas/machine/Kconfig b/kas/machine/Kconfig
index e09304c0..58d9fd66 100644
--- a/kas/machine/Kconfig
+++ b/kas/machine/Kconfig
@@ -168,6 +168,8 @@ config MACHINE_QEMU_RISCV64
select DISTRO_DEBIAN
select CODENAME_TRIXIE
select CODENAME_SID
+ select DISTRO_UBUNTU
+ select CODENAME_NOBLE
select ARCH_RISCV64

config MACHINE_RPI_ARM_V7
diff --git a/meta-isar/conf/distro/ubuntu-common.inc b/meta-isar/conf/distro/ubuntu-common.inc
index f1e8a1d6..49638d0e 100644
--- a/meta-isar/conf/distro/ubuntu-common.inc
+++ b/meta-isar/conf/distro/ubuntu-common.inc
@@ -12,6 +12,9 @@ HOST_BASE_DISTRO = "${BASE_DISTRO}"
DISTRO_APT_SOURCES:arm64 ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
HOST_DISTRO_APT_SOURCES:arm64 ?= "conf/distro/${HOST_DISTRO}.list conf/distro/${HOST_DISTRO}-ports.list"

+DISTRO_APT_SOURCES:riscv64 ?= "conf/distro/${BASE_DISTRO}-${BASE_DISTRO_CODENAME}-ports.list"
+HOST_DISTRO_APT_SOURCES:riscv64 ?= "conf/distro/${HOST_DISTRO}.list conf/distro/${HOST_DISTRO}-ports.list"
+
BOOTSTRAP_KEY = "file://${LAYERDIR_isar}/conf/distro/ubuntu.public.key;sha256sum=36a38199a4bf4eae1e7f574891f7dfcb79b91b87a33a499383265e1224b5e989"
DISTRO_BOOTSTRAP_KEYS += "${BOOTSTRAP_KEY}"
HOST_DISTRO_BOOTSTRAP_KEYS += "${BOOTSTRAP_KEY}"
diff --git a/meta-isar/conf/distro/ubuntu-noble-ports.list b/meta-isar/conf/distro/ubuntu-noble-ports.list
index adeb2639..9b101e3d 100644
--- a/meta-isar/conf/distro/ubuntu-noble-ports.list
+++ b/meta-isar/conf/distro/ubuntu-noble-ports.list
@@ -1,6 +1,6 @@
-deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse
-deb-src [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse
-deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble-updates main restricted universe multiverse
-deb-src [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble-updates main restricted universe multiverse
-deb [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble-security main restricted universe multiverse
-deb-src [arch=armhf,arm64] http://ports.ubuntu.com/ubuntu-ports noble-security main restricted universe multiverse
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble main restricted universe multiverse
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble-updates main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble-updates main restricted universe multiverse
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble-security main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports noble-security main restricted universe multiverse
diff --git a/meta-isar/conf/machine/qemuriscv64.conf b/meta-isar/conf/machine/qemuriscv64.conf
index 541e4abd..4cb4f371 100644
--- a/meta-isar/conf/machine/qemuriscv64.conf
+++ b/meta-isar/conf/machine/qemuriscv64.conf
@@ -7,6 +7,9 @@
DISTRO_ARCH ?= "riscv64"

KERNEL_NAME ?= "riscv64"
+KERNEL_NAME:ubuntu ?= "generic"
+KERNEL_NAME:ubuntu-jammy ?= "generic"
+KERNEL_NAME:ubuntu-noble ?= "generic"

IMAGE_FSTYPES ?= "ext4"
ROOTFS_EXTRA ?= "128"
diff --git a/meta-isar/conf/mc.conf b/meta-isar/conf/mc.conf
index 493d5ae2..f97e2d28 100644
--- a/meta-isar/conf/mc.conf
+++ b/meta-isar/conf/mc.conf
@@ -70,6 +70,7 @@ BBMULTICONFIG = " \
qemuamd64-focal \
qemuamd64-jammy \
qemuamd64-noble \
+ qemuriscv64-noble \
qemuamd64-sid \
qemuarm64-sid \
"
diff --git a/meta-isar/conf/multiconfig/qemuriscv64-noble.conf b/meta-isar/conf/multiconfig/qemuriscv64-noble.conf
new file mode 100644
index 00000000..9a2b0430
--- /dev/null
+++ b/meta-isar/conf/multiconfig/qemuriscv64-noble.conf
@@ -0,0 +1,7 @@
+# This software is a part of Isar.
+# Copyright (C) 2025 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "qemuriscv64"
+DISTRO ?= "ubuntu-noble"
--
2.34.1

Anton Mikanovich

unread,
Nov 3, 2025, 2:55:36 AM (yesterday) Nov 3
to isar-...@googlegroups.com, Uladzimir Bely, Anton Mikanovich
From: Uladzimir Bely <ub...@ilbers.de>

Since stability of new riscv64 targets is not known yet, don't mark
complete CI as failed if some of new tests fail.

Signed-off-by: Uladzimir Bely <ub...@ilbers.de>
Signed-off-by: Anton Mikanovich <ami...@ilbers.de>
---
testsuite/citest.py | 35 +++++++++++++++++++++++++++++++++++
testsuite/start_vm.py | 2 +-
2 files changed, 36 insertions(+), 1 deletion(-)

diff --git a/testsuite/citest.py b/testsuite/citest.py
index a1214e9c..f4ae5a72 100755
--- a/testsuite/citest.py
+++ b/testsuite/citest.py
@@ -255,6 +255,21 @@ class CrossTest(CIBaseTest):
self.init()
self.perform_build_test(targets)

+ def test_cross_riscv64(self):
+ """
+ :avocado: tags=riscv64
+ """
+ targets = [
+ 'mc:qemuriscv64-trixie:isar-image-ci',
+ 'mc:qemuriscv64-noble:isar-image-ci',
+ ]
+
+ self.init()
+ try:
+ self.perform_build_test(targets, cross=False)
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+

class KernelTests(CIBaseTest):
"""
@@ -644,6 +659,26 @@ class VmBootTestFast(CIBaseTest):
self.init()
self.vm_start('arm64', 'trixie')

+ def test_riscv64_trixie(self):
+ """
+ :avocado: tags=riscv64
+ """
+ self.init()
+ try:
+ self.vm_start('riscv64', 'trixie', image='isar-image-ci')
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+
+ def test_riscv64_noble(self):
+ """
+ :avocado: tags=riscv64
+ """
+ self.init()
+ try:
+ self.vm_start('riscv64', 'noble', image='isar-image-ci')
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+

class VmBootTestFull(CIBaseTest):

diff --git a/testsuite/start_vm.py b/testsuite/start_vm.py
index 57d169df..18c6139c 100755
--- a/testsuite/start_vm.py
+++ b/testsuite/start_vm.py
@@ -148,7 +148,7 @@ def start_qemu(arch, build, distro, image, out, pid, enforce_pcbios):

def parse_args():
parser = argparse.ArgumentParser()
- arch_names = ['arm', 'arm64', 'amd64', 'amd64-sb', 'amd64-cip', 'amd64-iso', 'i386', 'mipsel']
+ arch_names = ['arm', 'arm64', 'amd64', 'amd64-sb', 'amd64-cip', 'amd64-iso', 'i386', 'mipsel', 'riscv64']
distro_names = [
'buster',
'bullseye',
--
2.34.1

Reply all
Reply to author
Forward
0 new messages