2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-09-08 20:50:44 +00:00

test(genesis): cover s390x OpenEmbedded target

This commit is contained in:
Vinícius Ferrão
2026-09-04 12:44:37 -03:00
parent b63e695601
commit e08804d0e8
3 changed files with 126 additions and 5 deletions
+9 -4
View File
@@ -38,16 +38,21 @@ jobs:
KAS_WORK_DIR: ${{ runner.temp }}/kas-work
run: |
set -euo pipefail
for architecture in x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64; do
for architecture in x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64 s390x; do
export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-${architecture}"
configuration="xCAT-genesis-builder/oe/kas/${architecture}.yml"
kas dump "${configuration}" >/dev/null
kas shell "${configuration}" -c 'bitbake -p'
done
- name: Validate the image task graph
shell: bash
env:
KAS_WORK_DIR: ${{ runner.temp }}/kas-work
KAS_BUILD_DIR: ${{ runner.temp }}/kas-build-x86_64
run: >-
kas shell xCAT-genesis-builder/oe/kas/x86_64.yml -c
'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke'
run: |
set -euo pipefail
kas shell xCAT-genesis-builder/oe/kas/x86_64.yml -c \
'bitbake -n xcat-genesis-image xcat-genesis-extension-smoke'
export KAS_BUILD_DIR="${RUNNER_TEMP}/kas-build-s390x"
kas shell xCAT-genesis-builder/oe/kas/s390x.yml -c \
'bitbake -n xcat-genesis-image'
+101 -1
View File
@@ -84,6 +84,12 @@ like( $riscv64_kas, qr{includes:\s*\n\s*- xCAT-genesis-builder/oe/kas/common\.ym
like( $riscv64_kas, qr/^machine: xcat-genesis-riscv64$/m,
'riscv64 build selects its machine' );
my $s390x_kas = read_file('xCAT-genesis-builder/oe/kas/s390x.yml');
like( $s390x_kas, qr{includes:\s*\n\s*- xCAT-genesis-builder/oe/kas/common\.yml},
's390x build includes the common configuration' );
like( $s390x_kas, qr/^machine: xcat-genesis-s390x$/m,
's390x build selects its machine' );
my $ppc64le_kas = read_file('xCAT-genesis-builder/oe/kas/ppc64le.yml');
like( $ppc64le_kas, qr{includes:\s*\n\s*- xCAT-genesis-builder/oe/kas/common\.yml},
'ppc64le build includes the common configuration' );
@@ -97,7 +103,8 @@ like( $ppc64_kas, qr/^machine: xcat-genesis-ppc64$/m,
'ppc64 build selects its machine' );
my $build = read_file('xCAT-genesis-builder/oe/build');
like( $build, qr/aarch64\|armv7hf\|riscv64\|x86\|x86_64\|ppc64\|ppc64le/,
like( $build,
qr/aarch64\|armv7hf\|riscv64\|s390x\|x86\|x86_64\|ppc64\|ppc64le/,
'build accepts each supported architecture' );
like( $build, qr{kas/\$architecture\.yml},
'build selects the architecture configuration directly' );
@@ -255,6 +262,41 @@ like( $riscv64_machine, qr/^QB_CPU = "-cpu rv64"$/m,
like( $riscv64_machine, qr/^XCAT_GENESIS_CONSOLE_TTY = "ttyS0"$/m,
'riscv64 status console uses its 8250 terminal' );
my $s390x_machine = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/conf/machine/xcat-genesis-s390x.conf'
);
like( $s390x_machine, qr/^DEFAULTTUNE = "s390x"$/m,
's390x uses the z10 baseline tune' );
like( $s390x_machine, qr/^ARCH:s390x = "s390"$/m,
's390x maps to the Linux s390 source architecture' );
like( $s390x_machine, qr/^XCAT_GENESIS_ARCHITECTURE = "s390x"$/m,
's390x exports its canonical extension identity' );
like( $s390x_machine, qr/^QEMU_TARGETS:append = " s390x"$/m,
's390x cross builds have a user-mode emulator' );
like( $s390x_machine, qr/^QB_MACHINE = "-machine s390-ccw-virtio"$/m,
's390x QEMU target uses the CCW virtual machine' );
like( $s390x_machine, qr/^QB_CPU = "-cpu z10EC-base,/m,
's390x QEMU target enforces its oldest CPU generation' );
like( $s390x_machine, qr/^QB_MEM = "-m 4096"$/m,
's390x QEMU target has room for the initramfs' );
like( $s390x_machine, qr/^XCAT_GENESIS_CONSOLE_TTY = "ttysclp0"$/m,
's390x status console uses the SCLP terminal' );
like( $s390x_machine, qr/^QB_KERNEL_CMDLINE_APPEND = "console=ttysclp0"$/m,
's390x QEMU target selects the same SCLP terminal' );
my $s390x_tune = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/conf/machine/include/s390x/tune-s390x.inc'
);
like( $s390x_tune, qr/^TUNE_ARCH = "s390x"$/m,
's390x tune selects the 64-bit architecture' );
like( $s390x_tune,
qr/^TUNE_FEATURES:tune-s390x = "m64 bigendian z10"$/m,
's390x tune uses the z10 CPU floor' );
like( $s390x_tune, qr/^BASE_LIB:tune-s390x = "lib64"$/m,
's390x tune uses the 64-bit library directory' );
like( $s390x_tune, qr/^BASELIB:libc-glibc:s390x = "lib64"$/m,
's390x glibc uses its 64-bit library directory' );
for my $machine_console (
[ x86_64 => $machine ],
[ x86 => $x86_machine ],
@@ -263,6 +305,7 @@ for my $machine_console (
[ armv7hf => $armv7hf_machine ],
[ aarch64 => $aarch64_machine ],
[ riscv64 => $riscv64_machine ],
[ s390x => $s390x_machine ],
)
{
unlike( $machine_console->[1],
@@ -429,6 +472,19 @@ like( $kernel_append, qr/file:\/\/xcat-genesis-riscv64\.cfg/,
like( $kernel_append,
qr/^SRCREV_machine:xcat-genesis-riscv64 = "b1ba5428513b52c2bd6acfd3ad0a910f699bc395"$/m,
'riscv64 kernel revision is pinned' );
like( $kernel_append, qr/file:\/\/xcat-genesis-s390x\.cfg/,
's390x kernel uses the Genesis hardware fragment' );
like( $kernel_append, qr/file:\/\/0001-s390-use-stable-generator-name\.patch/,
's390x kernel source export omits the build directory' );
like( $kernel_append,
qr/^SRCREV_machine:xcat-genesis-s390x = "b1ba5428513b52c2bd6acfd3ad0a910f699bc395"$/m,
's390x kernel revision is pinned' );
like( $kernel_append,
qr/^KCONFIG_MODE:xcat-genesis-s390x = "--alldefconfig"$/m,
's390x kernel retains architecture defaults' );
like( $kernel_append,
qr/^KERNEL_FEATURES:remove:xcat-genesis-s390x = "features\/drm-bochs\/drm-bochs\.scc"$/m,
's390x kernel excludes the QEMU PC graphics fragment' );
like( $kernel_append, qr/file:\/\/xcat-genesis-powerpc64\.cfg/,
'64-bit Power kernels share the Genesis hardware fragment' );
like( $kernel_append,
@@ -469,6 +525,50 @@ for my $symbol (
"x86_64 kernel enables $symbol" );
}
my $s390x_kernel_config = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-s390x.cfg'
);
for my $symbol (
qw(
CONFIG_MARCH_Z10 CONFIG_TUNE_Z10 CONFIG_IPV6 CONFIG_VIRTIO
CONFIG_VIRTIO_BLK CONFIG_VIRTIO_NET CONFIG_HW_RANDOM_VIRTIO
CONFIG_CCWGROUP CONFIG_QDIO CONFIG_QETH CONFIG_QETH_L2 CONFIG_QETH_L3
CONFIG_DASD CONFIG_DASD_ECKD CONFIG_DASD_FBA CONFIG_ZFCP
CONFIG_SCLP_CONSOLE CONFIG_SCLP_VT220_CONSOLE CONFIG_TN3270_CONSOLE
)
)
{
like( $s390x_kernel_config, qr/^\Q$symbol\E=[ym]$/m,
"s390x kernel enables $symbol" );
}
my $kexec_append = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-kernel/kexec/kexec-tools_%.bbappend'
);
like( $kexec_append, qr/^COMPATIBLE_HOST:s390x = "s390x\.\*-linux"$/m,
'kexec-tools accepts the s390x target' );
my $zlib_append = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-core/zlib/zlib_%.bbappend'
);
like( $zlib_append, qr/^do_configure:s390x\(\).*--disable-crcvx/ms,
'zlib keeps the s390x image compatible with z10' );
my $openssl_append = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-connectivity/openssl/openssl_%.bbappend'
);
like( $openssl_append,
qr/file:\/\/50-xcat-s390x\.conf/,
'OpenSSL receives the OpenEmbedded s390x target alias' );
like( $openssl_append,
qr/install -m 0644 \$\{UNPACKDIR\}\/50-xcat-s390x\.conf \$\{S\}\/Configurations\//,
'OpenSSL installs the target definition before configuration' );
my $openssl_config = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-connectivity/openssl/files/50-xcat-s390x.conf'
);
like( $openssl_config, qr/^ "linux-s390x" => \{$/m,
'OpenSSL maps the s390x target to its 64-bit configuration' );
my $x86_kernel_config = read_file(
'xCAT-genesis-builder/oe/meta-xcat-genesis/recipes-kernel/linux/linux-yocto/xcat-genesis-x86.cfg'
);
@@ -192,6 +192,22 @@ is( $verify_status, 0, 'valid extension is accepted' ) or diag($verify_output);
or diag($arm_output);
}
{
local $ENV{XCAT_GENESIS_UNAME_M} = 's390x';
my $s390x_manifest = File::Spec->catfile( $root, 'xcat-smoke-s390x.json' );
my $s390x_signature = File::Spec->catfile( $root, 'xcat-smoke-s390x.sig' );
write_manifest( $s390x_manifest, $hash, { architecture => 's390x' } );
my ( $s390x_sign_status, $s390x_sign_output ) =
run_command( $signer, $s390x_manifest, $private_key, $s390x_signature );
is( $s390x_sign_status, 0, 's390x extension manifest is signed' )
or diag($s390x_sign_output);
my ( $s390x_status, $s390x_output ) = run_command(
'/bin/bash', $loader, 'verify', $s390x_manifest, $image, $s390x_signature
);
is( $s390x_status, 0, 's390x runtime uses its canonical extension identity' )
or diag($s390x_output);
}
my ( $install_status, $install_output ) =
run_command( '/bin/bash', $loader, 'install', $manifest, $image, $signature );
is( $install_status, 0, 'valid extension is installed' ) or diag($install_output);