From 5d9286cfb7b3505bd07635f5ffc524d856f5b968 Mon Sep 17 00:00:00 2001 From: Daniel Hilst <392820+dhilst@users.noreply.github.com> Date: Thu, 30 Jul 2026 13:07:06 -0300 Subject: [PATCH] fix(xcat-core): fold release-alias finalize into merge_core_repos merge_core_repos already assembles the multi-arch core and runs the full finalize tail (index -> sign -> final metadata -> write_release_alias, in the required order so the xCAT-release-latest alias lands AFTER metadata and stays out of the repo index). The preceding commit restored a separate finalize_core sub purely to satisfy xcat_release_package.t, which grepped for 'sub finalize_core { ... $dir ... }'. That left two overlapping entry points: --finalize-core (finalize one pre-assembled dir) and --merge-core-repos (assemble N per-arch dirs THEN finalize) -- the former a strict subset of the latter, with no in-tree or CI caller. Consolidate on the single assemble+finalize path: inline the finalize tail into merge_core_repos, drop sub finalize_core and the --finalize-core getopt/dispatch, and update xcat_release_package.t to assert the stable alias is created after the final metadata pass inside merge_core_repos ($out). Behaviour is unchanged (merge already wrote the alias); only the redundant finalize_core interface is removed. xcat_release_package.t 26/26; perl -c clean. Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com> --- buildrpms.pl | 30 +++++++-------------------- xCAT-test/unit/xcat_release_package.t | 2 +- 2 files changed, 9 insertions(+), 23 deletions(-) diff --git a/buildrpms.pl b/buildrpms.pl index 43f41a2b4..f5515b8ae 100755 --- a/buildrpms.pl +++ b/buildrpms.pl @@ -190,7 +190,6 @@ GetOptions( "xcat_dep_path=s" => \$opts{xcat_dep_path}, "setup_local_repos" => \$opts{setup_local_repos}, "merge-core-repos" => \$opts{merge_core_repos}, - "finalize-core=s" => \$opts{finalize_core}, "output-dir=s" => \$opts{output_dir}, "input-core-repos=s{1,}" => \@cli_input_core_repos, "repo-baseurl=s" => \$opts{repo_baseurl}, @@ -860,29 +859,17 @@ sub merge_core_repos { and die "Failed to rsync '$in' into '$out'\n"; } - # index + sign + final metadata + stable alias -- shared with the single-dir - # --finalize-core path (finalize_core), so the xCAT-release-latest alias is always - # written AFTER the final metadata pass and excluded from the repo index. - return finalize_core($out); -} - -# finalize_core($dir): index, sign (when --gpg-sign), write the final repository metadata, -# then create the xCAT-release-latest stable bootstrap alias. The alias MUST be written -# after the final metadata pass so write_release_alias can unlink it before createrepo and -# keep it out of the repository index. Called with an explicit dir by merge_core_repos (the -# assembled multi-arch core) and with no arg by the --finalize-core CLI (an already-populated -# single dir, e.g. a per-arch dist//rpms). -sub finalize_core { - my ($dir) = @_; - $dir //= $opts{finalize_core}; - die "FATAL: --finalize-core dir '$dir' does not exist\n" unless defined $dir && -d $dir; - index_repo($dir); + # Index, sign (when --gpg-sign), write the final repository metadata, then create the + # xCAT-release-latest stable bootstrap alias. The alias MUST be created AFTER the final + # metadata pass so write_release_alias can unlink it before createrepo and keep it out of + # the repository index. + index_repo($out); if ($opts{gpg_sign}) { $ENV{GNUPGHOME} = $opts{gpg_home} if $opts{gpg_home}; - sign_repo_dir($dir, $opts{gpg_key_name}); + sign_repo_dir($out, $opts{gpg_key_name}); } - write_repo_metadata_dir($dir); - write_release_alias($dir); + write_repo_metadata_dir($out); + write_release_alias($out); return 0; } @@ -958,7 +945,6 @@ sub main { return exit(configure_nginx()) if $opts{configure_nginx}; return exit(setup_local_repos()) if $opts{setup_local_repos}; return exit(merge_core_repos()) if $opts{merge_core_repos}; - return exit(finalize_core()) if $opts{finalize_core}; prepare_xcat_probe_source_tar() if grep { $_ eq "xCAT-probe" } $opts{packages}->@*; diff --git a/xCAT-test/unit/xcat_release_package.t b/xCAT-test/unit/xcat_release_package.t index f81b44148..1f4cbcf99 100644 --- a/xCAT-test/unit/xcat_release_package.t +++ b/xCAT-test/unit/xcat_release_package.t @@ -72,7 +72,7 @@ ok( ); like( $builder, - qr/sub finalize_core \{.*?write_repo_metadata_dir\(\$dir\);.*?write_release_alias\(\$dir\);/s, + qr/sub merge_core_repos \{.*?write_repo_metadata_dir\(\$out\);.*?write_release_alias\(\$out\);/s, 'assembled core repository creates the stable alias after final metadata' );