From 87d0e347e393b27170b3a40e2b895d331479dc6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vin=C3=ADcius=20Ferr=C3=A3o?= <2031761+viniciusferrao@users.noreply.github.com> Date: Fri, 4 Sep 2026 13:59:45 -0300 Subject: [PATCH] feat(genesis): package s390x images --- debs-manifest.conf | 1 + genesis-openembedded/activate | 2 +- genesis-openembedded/build | 2 +- lib/XCAT/GenesisRelease.pm | 13 ++++++++++--- packages-manifest.conf | 1 + 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/debs-manifest.conf b/debs-manifest.conf index 4fd8c93..5ae70b3 100644 --- a/debs-manifest.conf +++ b/debs-manifest.conf @@ -155,3 +155,4 @@ xcat-genesis-openembedded-ppc64le=2.* xcat-genesis-openembedded-armv7hf=2.* xcat-genesis-openembedded-aarch64=2.* xcat-genesis-openembedded-riscv64=2.* +xcat-genesis-openembedded-s390x=2.* diff --git a/genesis-openembedded/activate b/genesis-openembedded/activate index 9a027a4..88d5c20 100755 --- a/genesis-openembedded/activate +++ b/genesis-openembedded/activate @@ -39,7 +39,7 @@ genesis_run_mknb() { genesis_activation_main() { architecture=$1 case "$architecture" in - x86|x86_64|ppc64|ppc64le|armv7hf|aarch64|riscv64) ;; + x86|x86_64|ppc64|ppc64le|armv7hf|aarch64|riscv64|s390x) ;; *) echo "Invalid Genesis architecture: $architecture" >&2 return 0 diff --git a/genesis-openembedded/build b/genesis-openembedded/build index 41fa3ba..f9bd6e7 100755 --- a/genesis-openembedded/build +++ b/genesis-openembedded/build @@ -143,7 +143,7 @@ my @formats = $format eq 'all' ? qw(deb rpm) : ($format); write_binary( "$staging/release.manifest", "format=xcat-genesis-packages\n" - . "version=1\n" + . "version=2\n" . "xcat_version=$version\n" . "xcat_release=$release\n" . "xcat_revision=$revision\n" diff --git a/lib/XCAT/GenesisRelease.pm b/lib/XCAT/GenesisRelease.pm index b07368f..b51499b 100644 --- a/lib/XCAT/GenesisRelease.pm +++ b/lib/XCAT/GenesisRelease.pm @@ -20,8 +20,14 @@ our @EXPORT_OK = qw( verify_release_file ); -my @ARCHITECTURES = qw(x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64); +my @RELEASE_V1_ARCHITECTURES = qw(x86 x86_64 ppc64 ppc64le armv7hf aarch64 riscv64); +my @RELEASE_V2_ARCHITECTURES = (@RELEASE_V1_ARCHITECTURES, 's390x'); +my @ARCHITECTURES = @RELEASE_V2_ARCHITECTURES; my %ARCHITECTURE = map { $_ => 1 } @ARCHITECTURES; +my %RELEASE_ARCHITECTURES = ( + 1 => \@RELEASE_V1_ARCHITECTURES, + 2 => \@RELEASE_V2_ARCHITECTURES, +); sub architectures { return @ARCHITECTURES; @@ -161,7 +167,7 @@ sub _validate_release { die "Unsupported Genesis package release format\n" unless $manifest->{format} eq 'xcat-genesis-packages'; die "Unsupported Genesis package release version\n" - unless $manifest->{version} eq '1'; + unless $RELEASE_ARCHITECTURES{ $manifest->{version} }; die "Invalid xCAT version in release manifest\n" unless $manifest->{xcat_version} =~ /^\d+(?:\.\d+){1,3}$/; die "Invalid xCAT release in release manifest\n" @@ -222,7 +228,8 @@ sub validate_complete_release { my ($directory) = @_; my $manifest = validate_release($directory); my %present = map { $_ => 1 } split(/,/, $manifest->{architectures}); - my @missing = grep { !$present{$_} } @ARCHITECTURES; + my @required = @{ $RELEASE_ARCHITECTURES{ $manifest->{version} } }; + my @missing = grep { !$present{$_} } @required; die "Genesis release is missing supported architectures: @missing\n" if @missing; return $manifest; } diff --git a/packages-manifest.conf b/packages-manifest.conf index d97d07a..eacc7bf 100644 --- a/packages-manifest.conf +++ b/packages-manifest.conf @@ -189,3 +189,4 @@ xCAT-genesis-openembedded-ppc64le=>= 2.18.0 xCAT-genesis-openembedded-armv7hf=>= 2.18.0 xCAT-genesis-openembedded-aarch64=>= 2.18.0 xCAT-genesis-openembedded-riscv64=>= 2.18.0 +xCAT-genesis-openembedded-s390x=>= 2.18.0