@@ -1,5 +1,5 @@
# This software is a part of Isar.
-# Copyright (C) 2023-2024 ilbers GmbH
+# Copyright (C) 2023-2026 ilbers GmbH
#
# SPDX-License-Identifier: MIT
#
@@ -44,6 +44,9 @@ config CODENAME_JAMMY
config CODENAME_NOBLE
bool
+config CODENAME_RESOLUTE
+ bool
+
choice
prompt "Distro selection"
default DEBIAN_TRIXIE
@@ -92,6 +95,10 @@ config UBUNTU_NOBLE
bool "Ubuntu 24.04 (Noble)"
depends on (DISTRO_UBUNTU && CODENAME_NOBLE) || ANY_MACHINE_DISTRO
+config UBUNTU_RESOLUTE
+ bool "Ubuntu 26.04 (Resolute)"
+ depends on (DISTRO_UBUNTU && CODENAME_RESOLUTE) || ANY_MACHINE_DISTRO
+
endchoice
config ANY_MACHINE_DISTRO
@@ -114,5 +121,6 @@ config KAS_INCLUDE_DISTRO
default "kas/distro/ubuntu-focal.yaml" if UBUNTU_FOCAL
default "kas/distro/ubuntu-jammy.yaml" if UBUNTU_JAMMY
default "kas/distro/ubuntu-noble.yaml" if UBUNTU_NOBLE
+ default "kas/distro/ubuntu-resolute.yaml" if UBUNTU_RESOLUTE
endmenu
new file mode 100644
@@ -0,0 +1,9 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+header:
+ version: 14
+
+distro: ubuntu-resolute
@@ -123,6 +123,7 @@ config MACHINE_QEMU_AMD64
select CODENAME_FOCAL
select CODENAME_JAMMY
select CODENAME_NOBLE
+ select CODENAME_RESOLUTE
select ARCH_AMD64
config MACHINE_QEMU_ARM
@@ -145,6 +146,7 @@ config MACHINE_QEMU_ARM64
select CODENAME_FOCAL
select CODENAME_JAMMY
select CODENAME_NOBLE
+ select CODENAME_RESOLUTE
select ARCH_ARM64
config MACHINE_QEMU_I386
@@ -167,6 +169,8 @@ config MACHINE_QEMU_RISCV64
select DISTRO_DEBIAN
select CODENAME_TRIXIE
select CODENAME_SID
+ select DISTRO_UBUNTU
+ select CODENAME_RESOLUTE
select ARCH_RISCV64
config MACHINE_RPI_ARM_V7
@@ -1,5 +1,6 @@
-#
+# This software is a part of Isar.
# Copyright (c) Siemens AG, 2018-2023
+# Copyright (C) 2023-2024 ilbers GmbH
#
# SPDX-License-Identifier: MIT
@@ -12,6 +13,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}"
new file mode 100644
@@ -0,0 +1,6 @@
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute main restricted universe multiverse
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute-updates main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute-updates main restricted universe multiverse
+deb [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute-security main restricted universe multiverse
+deb-src [arch=armhf,arm64,riscv64] http://ports.ubuntu.com/ubuntu-ports resolute-security main restricted universe multiverse
new file mode 100644
@@ -0,0 +1,14 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+require conf/distro/ubuntu-common.inc
+
+BASE_DISTRO_CODENAME = "resolute"
+
+DISTRO_GCC = "15"
+
+DEBIAN_COMPAT = "13"
+
+DEBIAN_STANDARDS_VERSION ?= "4.7.4"
new file mode 100644
@@ -0,0 +1,6 @@
+deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute main restricted universe multiverse
+deb-src [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute main restricted universe multiverse
+deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute-updates main restricted universe multiverse
+deb-src [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute-updates main restricted universe multiverse
+deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute-security main restricted universe multiverse
+deb-src [arch=amd64,i386] http://archive.ubuntu.com/ubuntu resolute-security main restricted universe multiverse
@@ -1,12 +1,12 @@
# This software is a part of Isar.
-# Copyright (C) 2015-2017 ilbers GmbH
+# Copyright (C) 2015-2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
DISTRO_ARCH ?= "arm64"
KERNEL_NAME ?= "arm64"
-KERNEL_NAME:ubuntu-focal ?= "generic"
-KERNEL_NAME:ubuntu-jammy ?= "generic"
-KERNEL_NAME:ubuntu-noble ?= "generic"
+KERNEL_NAME:ubuntu ?= "generic"
IMAGE_FSTYPES ?= "ext4"
ROOTFS_EXTRA ?= "128"
@@ -1,5 +1,5 @@
# This software is a part of Isar.
-# Copyright (C) 2015-2017 ilbers GmbH
+# Copyright (C) 2015-2026 ilbers GmbH
# Copyright (c) Siemens AG, 2020
#
# SPDX-License-Identifier: MIT
@@ -7,6 +7,7 @@
DISTRO_ARCH ?= "riscv64"
KERNEL_NAME ?= "riscv64"
+KERNEL_NAME:ubuntu ?= "generic"
IMAGE_FSTYPES ?= "ext4"
ROOTFS_EXTRA ?= "128"
@@ -72,9 +72,12 @@ BBMULTICONFIG = " \
qemuarm64-focal \
qemuarm64-jammy \
qemuarm64-noble \
+ qemuarm64-resolute \
qemuamd64-focal \
qemuamd64-jammy \
qemuamd64-noble \
+ qemuamd64-resolute \
qemuamd64-sid \
qemuarm64-sid \
+ qemuriscv64-resolute \
"
new file mode 100644
@@ -0,0 +1,7 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "qemuamd64"
+DISTRO ?= "ubuntu-resolute"
new file mode 100644
@@ -0,0 +1,7 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "qemuarm64"
+DISTRO ?= "ubuntu-resolute"
new file mode 100644
@@ -0,0 +1,7 @@
+# This software is a part of Isar.
+# Copyright (C) 2026 ilbers GmbH
+#
+# SPDX-License-Identifier: MIT
+
+MACHINE ?= "qemuriscv64"
+DISTRO ?= "ubuntu-resolute"
@@ -1,7 +1,7 @@
#!/usr/bin/env python3
#
# This software is a part of Isar.
-# Copyright (C) 2022-2025 ilbers GmbH
+# Copyright (C) 2022-2026 ilbers GmbH
# Copyright (C) 2022-2025 Siemens AG
#
# SPDX-License-Identifier: MIT
@@ -262,6 +262,8 @@ class CrossTest(CIBaseTest):
'mc:qemuarm64-trixie:isar-image-base',
'mc:qemuarm64-focal:isar-image-base',
'mc:nanopi-neo-efi-bookworm:isar-image-base',
+ 'mc:qemuarm64-resolute:isar-image-base',
+ 'mc:qemuamd64-resolute:isar-image-base',
]
self.init()
@@ -384,6 +386,42 @@ class CrossTest(CIBaseTest):
self.init()
self.vm_start('arm64', 'focal')
+ # TODO: broken because of moving to UEFI
+ def test_run_arm64_resolute(self):
+ """
+ :avocado: tags=startvm
+ """
+ self.init()
+ try:
+ self.vm_start('arm64', 'resolute')
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+
+ def test_run_amd64_resolute(self):
+ """
+ :avocado: tags=startvm
+ """
+ self.init()
+ self.vm_start('amd64', 'resolute')
+
+ def test_cross_debsrc(self):
+ targets = [
+ 'mc:qemuarm64-bookworm:isar-image-ci',
+ ]
+
+ self.init()
+ # only build a single custom package to speedup test
+ self.perform_build_test(targets, debsrc_cache=True, image_install='cowsay')
+
+ def test_cross_trixie(self):
+ targets = [
+ 'mc:qemuamd64-trixie:isar-image-base',
+ 'mc:qemuarm64-trixie:isar-image-base',
+ ]
+
+ self.init()
+ self.perform_build_test(targets, cross=False)
+
def test_cross_debsrc(self):
targets = [
'mc:qemuarm64-bookworm:isar-image-ci',
@@ -430,6 +468,30 @@ class CrossTest(CIBaseTest):
self.perform_build_test(targets, lines=lines,
image_install=image_install)
+ def test_cross_riscv64(self):
+ """
+ :avocado: tags=riscv64
+ """
+ targets = [
+ 'mc:qemuriscv64-resolute:isar-image-ci',
+ ]
+
+ self.init()
+ try:
+ self.perform_build_test(targets)
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+
+ def test_run_riscv64_resolute(self):
+ """
+ :avocado: tags=startvm,riscv64
+ """
+ self.init()
+ try:
+ self.vm_start('riscv64', 'resolute', image='isar-image-ci')
+ except exceptions.TestFail:
+ self.cancel('KFAIL')
+
def test_cross_mira_trixie(self):
targets = [
'mc:phyboard-mira-trixie:isar-image-base',
@@ -127,16 +127,22 @@ a: !mux
name: qemuarm64-jammy
qemuarm64-noble:
name: qemuarm64-noble
+ qemuarm64-resolute:
+ name: qemuarm64-resolute
qemuamd64-focal:
name: qemuamd64-focal
qemuamd64-jammy:
name: qemuamd64-jammy
qemuamd64-noble:
name: qemuamd64-noble
+ qemuamd64-resolute:
+ name: qemuamd64-resolute
qemuamd64-sid:
name: qemuamd64-sid
qemuarm64-sid:
name: qemuarm64-sid
+ qemuriscv64-resolute:
+ name: qemuriscv64-resolute
b: !mux
base:
image: isar-image-base
@@ -48,7 +48,7 @@ def format_qemu_cmdline(
extra_args = ''
image_type = image_fstypes.split()[0]
- base = 'ubuntu' if distro in ['jammy', 'focal', 'noble'] else 'debian'
+ base = 'ubuntu' if distro in ['jammy', 'focal', 'noble', 'resolute'] else 'debian'
rootfs_image = f"{image}-{base}-{distro}-qemu{arch}.{image_type}"
@@ -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',
@@ -157,6 +157,7 @@ def parse_args():
'focal',
'jammy',
'noble',
+ 'resolute',
]
parser.add_argument(
'-a',
Create AMD64, ARM64 and RISCV64 configurations and put them under fast CI testsuite. Test cases for the RISCV64 are covered with KFAIL since stability of this architecture on Ubuntu is not known yet. Startvm test case for ARM64 is currently broken because of moving this target to UEFI, so mark it as TODO and cover with KFAIL for now. Signed-off-by: Anton Mikanovich <amikan@ilbers.de> --- kas/distro/Kconfig | 10 ++- kas/distro/ubuntu-resolute.yaml | 9 +++ kas/machine/Kconfig | 4 ++ meta-isar/conf/distro/ubuntu-common.inc | 6 +- .../conf/distro/ubuntu-resolute-ports.list | 6 ++ meta-isar/conf/distro/ubuntu-resolute.conf | 14 ++++ meta-isar/conf/distro/ubuntu-resolute.list | 6 ++ meta-isar/conf/machine/qemuarm64.conf | 8 +-- meta-isar/conf/machine/qemuriscv64.conf | 3 +- meta-isar/conf/mc.conf | 3 + .../conf/multiconfig/qemuamd64-resolute.conf | 7 ++ .../conf/multiconfig/qemuarm64-resolute.conf | 7 ++ .../multiconfig/qemuriscv64-resolute.conf | 7 ++ testsuite/citest.py | 64 ++++++++++++++++++- testsuite/data/targets.yml | 6 ++ testsuite/start_vm.py | 5 +- 16 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 kas/distro/ubuntu-resolute.yaml create mode 100644 meta-isar/conf/distro/ubuntu-resolute-ports.list create mode 100644 meta-isar/conf/distro/ubuntu-resolute.conf create mode 100644 meta-isar/conf/distro/ubuntu-resolute.list create mode 100644 meta-isar/conf/multiconfig/qemuamd64-resolute.conf create mode 100644 meta-isar/conf/multiconfig/qemuarm64-resolute.conf create mode 100644 meta-isar/conf/multiconfig/qemuriscv64-resolute.conf