From f1662b4ff208d01bc1fb46fcaeae3a0abce6bb16 Mon Sep 17 00:00:00 2001 From: David Steele Date: Fri, 28 Feb 2025 15:38:05 -0600 Subject: [PATCH 1/7] Fix multi-architecture unit testing. The Github action we were using for multi-architecture testing stopped working. The project does not seem to be getting regular maintenance so it seems better to roll multi-architecture testing into our existing container builds. Introduce multi-architecture builds and testing into our test framework. For now this only works for unit tests -- integration tests will still only run on x86_64. That could be updated in the future but since emulation is so slow it is not clear if it would be useful. Also fix an invalid 32-bit checksum. The d11 test had not been running as 32-bit since d8ff89a so the checksum was not updated when it should have been in 48f511d. (cherry picked from commit 57ffd2dfcbc47300d61d901789c6d09ffc8e25b2) (cherry picked from commit 57fa612fe92d205cf403957e14745aaeef15248c) --- .github/workflows/test.yml | 33 ++++++++----------- test/container.yaml | 15 +++++---- .../pgBackRestTest/Common/ContainerTest.pm | 28 ++++++++++------ test/lib/pgBackRestTest/Common/JobTest.pm | 10 ++++-- test/lib/pgBackRestTest/Common/VmTest.pm | 14 +++++++- test/src/common/harnessHost.c | 5 +-- test/test.pl | 28 +++++++++------- 7 files changed, 81 insertions(+), 52 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index fa5ea52dbb..10a8eaa765 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -75,37 +75,32 @@ jobs: # expensive, but this at least shows that the build works and some of the more complex tests run. In particular, it is good to # test on one big-endian architecture to be sure that checksums are correct. arch: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: include: - - image: '--platform=linux/ppc64le ubuntu:22.04' - - image: '--platform=linux/s390x ubuntu:22.04' - + - arch: 'ppc64le' + - arch: 's390x' steps: - name: Checkout Code uses: actions/checkout@v4 with: path: pgbackrest - - name: Run Test - uses: uraimo/run-on-arch-action@v2 - id: runcmd - with: - base_image: ${{matrix.image}} - - # Cache builds - githubToken: ${{github.token}} + - name: Install + run: | + sudo apt-get update + sudo DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive apt-get install -y perl sudo libxml-checker-perl libyaml-perl rsync zlib1g-dev libssl-dev libxml2-dev libpq-dev libyaml-dev pkg-config make gcc ccache meson git liblz4-dev liblz4-tool zstd libzstd-dev bzip2 libbz2-dev + docker run --privileged --rm tonistiigi/binfmt --install all - install: | - apt-get update - DEBCONF_NONINTERACTIVE_SEEN=true DEBIAN_FRONTEND=noninteractive apt-get install -y perl sudo libxml-checker-perl libyaml-perl rsync zlib1g-dev libssl-dev libxml2-dev libpq-dev libyaml-dev pkg-config make gcc ccache python3-distutils meson git liblz4-dev liblz4-tool zstd libzstd-dev bzip2 libbz2-dev + - name: Build VM + run: ${GITHUB_WORKSPACE?}/pgbackrest/test/test.pl --vm-build --vm=u22 --vm-arch=${{matrix.arch}} - run: | - git config --global --add safe.directory ${GITHUB_WORKSPACE?}/pgbackrest - ${GITHUB_WORKSPACE?}/pgbackrest/test/test.pl --min-gen --no-valgrind --no-coverage --no-optimize --build-max=2 --module=command --test=backup - ${GITHUB_WORKSPACE?}/pgbackrest/test/test.pl --min-gen --no-valgrind --no-coverage --no-optimize --build-max=2 --module=postgres --test=interface + - name: Run Test + run: | + ${GITHUB_WORKSPACE?}/pgbackrest/test/test.pl --vm=u22 --vm-arch=${{matrix.arch}} --no-valgrind --no-coverage --no-optimize --build-max=2 --module=command --test=backup + ${GITHUB_WORKSPACE?}/pgbackrest/test/test.pl --vm=u22 --vm-arch=${{matrix.arch}} --no-valgrind --no-coverage --no-optimize --build-max=2 --module=postgres --test=interface # Run meson unity build to check for errors, unused functions, and externed functions unity: diff --git a/test/container.yaml b/test/container.yaml index c4047bc4ba..7f22e1bcf8 100644 --- a/test/container.yaml +++ b/test/container.yaml @@ -10,15 +10,18 @@ # # To upload a new image: # - docker login -u pgbackrest -# - VM=XXX;DATE=YYYYMMDDX;BASE=pgbackrest/test:${VM?}-base;docker tag ${BASE?} ${BASE?}-${DATE?} && docker push ${BASE?}-${DATE?} +# - DATE=YYYYMMDDX;VM=X;ARCH=X;BASE=pgbackrest/test:${VM?}-base-${ARCH?};docker tag ${BASE?} ${BASE?}-${DATE?} && docker push ${BASE?}-${DATE?} # ********************************************************************************************************************************** -20241118A: - x86_64: - f41: ce870455184e991e0efd90176da1412f0f3f72a2 +20250228A: + ppc64le: + u22: 28fa02cb370bbdacadf984afb215d3973ed5ab3e + + s390x: + u22: f3e108dd7f808f6b0e82eadcfd72f585a7632530 -20241016A: x86_64: - d11: f3bc523f10e873f85b889120ea08c6c53358cc47 + d11: 01e6970744c2b2529a14832e92cb861c7da94308 + f41: ce870455184e991e0efd90176da1412f0f3f72a2 rh8: 4d141c845abfbdbf402ba447cf2bd2e4357c8a63 u20: 711ee90bf3ea0e8bb054285193811266b9b1f2f3 u22: 57c2af91a1b1a9624e325b704cc9213821c6b968 diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index b987c52882..4c7d91ad39 100644 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -84,6 +84,7 @@ sub containerWrite my $oStorageDocker = shift; my $strTempPath = shift; my $strOS = shift; + my $strArch = shift; my $strTitle = shift; my $strImageParent = shift; my $strImage = shift; @@ -104,14 +105,16 @@ sub containerWrite my $strScriptSha1; my $bCached = false; - if ($strImage =~ /\-base$/) + if ($strImage =~ /\-base\-/) { $strScriptSha1 = sha1_hex($strScript); foreach my $strBuild (reverse(keys(%{$hContainerCache}))) { - if (defined($hContainerCache->{$strBuild}{hostArch()}{$strOS}) && - $hContainerCache->{$strBuild}{hostArch()}{$strOS} eq $strScriptSha1) + my $strArchLookup = defined($strArch) ? $strArch : hostArch(); + + if (defined($hContainerCache->{$strBuild}{$strArchLookup}{$strOS}) && + $hContainerCache->{$strBuild}{$strArchLookup}{$strOS} eq $strScriptSha1) { &log(INFO, "Using cached ${strTag}-${strBuild} image (${strScriptSha1}) ..."); @@ -132,7 +135,8 @@ sub containerWrite # Write the image $oStorageDocker->put("${strTempPath}/${strImage}", trim($strScript) . "\n"); executeTest( - 'docker build' . (defined($bForce) && $bForce ? ' --no-cache' : '') . " -f ${strTempPath}/${strImage} -t ${strTag} " . + 'docker build' . (defined($strArch) ? " --platform linux/${strArch}" : '') . + (defined($bForce) && $bForce ? ' --no-cache' : '') . " -f ${strTempPath}/${strImage} -t ${strTag} " . $oStorageDocker->pathGet('test'), {bSuppressStdErr => true, bShowOutputAsync => (logLevel())[1] eq DETAIL}); } @@ -338,6 +342,7 @@ sub containerBuild { my $oStorageDocker = shift; my $strVm = shift; + my $strArch = shift; my $bVmForce = shift; # Create temp path @@ -378,8 +383,10 @@ sub containerBuild # Base image ########################################################################################################################### - my $strImageParent = "$$oVm{$strOS}{&VM_IMAGE}"; - my $strImage = "${strOS}-base"; + my $strImageParent = + (defined($strArch) ? "${strArch}/" : (vmArch($strOS) eq VM_ARCH_AMD64 ? '' : vmArch($strOS) . '/')) . + "$$oVm{$strOS}{&VM_IMAGE}"; + my $strImage = "${strOS}-base" . (defined($strArch) ? "-${strArch}" : '-' . hostArch()); my $strCopy = undef; #--------------------------------------------------------------------------------------------------------------------------- @@ -559,14 +566,14 @@ sub containerBuild } containerWrite( - $oStorageDocker, $strTempPath, $strOS, 'Base', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); + $oStorageDocker, $strTempPath, $strOS, $strArch, 'Base', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); # Test image ######################################################################################################################## if (!$bDeprecated) { - $strImageParent = containerRepo() . ":${strOS}-base"; - $strImage = "${strOS}-test"; + $strImageParent = containerRepo() . ":${strImage}"; + $strImage = "${strOS}-test" . (defined($strArch) ? "-${strArch}" : '-' . hostArch()); $strCopy = undef; $strScript = ''; @@ -641,7 +648,8 @@ sub containerBuild $strScript .= entryPointSetup($strOS); containerWrite( - $oStorageDocker, $strTempPath, $strOS, 'Test', $strImageParent, $strImage, $strCopy, $strScript, $bVmForce); + $oStorageDocker, $strTempPath, $strOS, $strArch, 'Test', $strImageParent, $strImage, $strCopy, $strScript, + $bVmForce); } } diff --git a/test/lib/pgBackRestTest/Common/JobTest.pm b/test/lib/pgBackRestTest/Common/JobTest.pm index 5e081cd839..4a868f5a2d 100644 --- a/test/lib/pgBackRestTest/Common/JobTest.pm +++ b/test/lib/pgBackRestTest/Common/JobTest.pm @@ -51,6 +51,8 @@ sub new $self->{oTest}, $self->{bDryRun}, $self->{bVmOut}, + $self->{strPlatform}, + $self->{strImage}, $self->{iVmIdx}, $self->{iVmMax}, $self->{strMakeCmd}, @@ -84,6 +86,8 @@ sub new {name => 'oTest'}, {name => 'bDryRun'}, {name => 'bVmOut'}, + {name => 'strPlatform'}, + {name => 'strImage'}, {name => 'iVmIdx'}, {name => 'iVmMax'}, {name => 'strMakeCmd'}, @@ -207,15 +211,15 @@ sub run my $strBuildPath = $self->{strTestPath} . '/build/' . $self->{oTest}->{&TEST_VM}; executeTest( - 'docker run -itd -h ' . $self->{oTest}->{&TEST_VM} . "-test --name=${strImage}" . - " -v ${strHostTestPath}:${strVmTestPath}" . + 'docker run' . $self->{strPlatform} . ' -itd -h ' . + $self->{oTest}->{&TEST_VM} . "-test --name=${strImage} -v ${strHostTestPath}:${strVmTestPath}" . ($self->{oTest}->{&TEST_C} ? " -v $self->{strUnitPath}:$self->{strUnitPath}" : '') . ($self->{oTest}->{&TEST_C} ? " -v $self->{strDataPath}:$self->{strDataPath}" : '') . " -v $self->{strBackRestBase}:$self->{strBackRestBase}" . " -v $self->{strRepoPath}:$self->{strRepoPath}" . ($self->{oTest}->{&TEST_C} ? " -v ${strBuildPath}:${strBuildPath}:ro" : '') . ($self->{oTest}->{&TEST_C} ? " -v ${strCCachePath}:/home/${\TEST_USER}/.ccache" : '') . - ' ' . containerRepo() . ':' . $self->{oTest}->{&TEST_VM} . '-test', + ' ' . $self->{strImage}, {bSuppressStdErr => true}); } } diff --git a/test/lib/pgBackRestTest/Common/VmTest.pm b/test/lib/pgBackRestTest/Common/VmTest.pm index 6d6a43cadd..4ada91e880 100644 --- a/test/lib/pgBackRestTest/Common/VmTest.pm +++ b/test/lib/pgBackRestTest/Common/VmTest.pm @@ -382,6 +382,18 @@ sub vmCoverageC push @EXPORT, qw(vmCoverageC); +#################################################################################################################################### +# Get vm architecture +#################################################################################################################################### +sub vmArch +{ + my $strVm = shift; + + return $oyVm->{$strVm}{&VM_ARCH}; +} + +push @EXPORT, qw(vmArch); + #################################################################################################################################### # Get vm architecture bits #################################################################################################################################### @@ -389,7 +401,7 @@ sub vmArchBits { my $strVm = shift; - return ($oyVm->{$strVm}{&VM_ARCH} eq VM_ARCH_I386 ? 32 : 64); + return (vmArch($strVm) eq VM_ARCH_I386 ? 32 : 64); } push @EXPORT, qw(vmArchBits); diff --git a/test/src/common/harnessHost.c b/test/src/common/harnessHost.c index 4e12ce87f4..06aa52a5e9 100644 --- a/test/src/common/harnessHost.c +++ b/test/src/common/harnessHost.c @@ -1093,7 +1093,7 @@ hrnHostBuildRun(const int line, const StringId id) const bool isPg = strBeginsWithZ(name, "pg"); const bool isRepo = id == hrnHostLocal.repoHost; const String *const container = strNewFmt("test-%u-%s", testIdx(), strZ(name)); - const String *const image = strNewFmt("pgbackrest/test:%s-test", testVm()); + const String *const image = strNewFmt("pgbackrest/test:%s-test-x86_64", testVm()); const String *const dataPath = strNewFmt("%s/%s", testPath(), strZ(name)); String *const option = strNewFmt( "-v '%s/cfg:/etc/pgbackrest:ro' -v '%s:/usr/bin/pgbackrest:ro' -v '%s:%s:ro'", strZ(dataPath), testProjectExe(), @@ -1294,7 +1294,8 @@ hrnHostBuild(const int line, const HrnHostTestDefine *const testMatrix, const si MEM_CONTEXT_PRIOR_BEGIN() { hrnHostNewP( - HRN_HOST_SFTP, containerName, strNewFmt("pgbackrest/test:%s-test", testVm()), .noUpdateHosts = true); + HRN_HOST_SFTP, containerName, strNewFmt("pgbackrest/test:%s-test-x86_64", testVm()), + .noUpdateHosts = true); } MEM_CONTEXT_PRIOR_END(); diff --git a/test/test.pl b/test/test.pl index 8c08e8c509..77d754bf68 100755 --- a/test/test.pl +++ b/test/test.pl @@ -108,6 +108,7 @@ =head1 SYNOPSIS VM Options: --vm docker container to build/test (e.g. rh8) + --vm-arch docker container architecture --vm-build build Docker containers --vm-force force a rebuild of Docker containers --vm-out Show VM output (default false) @@ -144,6 +145,7 @@ =head1 SYNOPSIS my $bQuiet = false; my $strPgVersion = 'minimal'; my $strVm = VM_NONE; +my $strVmArch; my $bVmBuild = false; my $bVmForce = false; my $bBuildOnly = false; @@ -185,6 +187,7 @@ =head1 SYNOPSIS 'log-level-test-file=s' => \$strLogLevelTestFile, 'no-log-timestamp' => \$bNoLogTimestamp, 'vm=s' => \$strVm, + 'vm-arch=s' => \$strVmArch, 'vm-out' => \$bVmOut, 'vm-build' => \$bVmBuild, 'vm-force' => \$bVmForce, @@ -375,7 +378,7 @@ =head1 SYNOPSIS ################################################################################################################################ if ($bVmBuild) { - containerBuild($oStorageBackRest, $strVm, $bVmForce); + containerBuild($oStorageBackRest, $strVm, $strVmArch, $bVmForce); exit 0; } @@ -546,6 +549,9 @@ =head1 SYNOPSIS # Start build container if vm is not none #------------------------------------------------------------------------------------------------------------------------------- + my $strPlatform = defined($strVmArch) ? " --platform linux/${strVmArch}" : ''; + my $strImage = containerRepo() . ":${strVm}-test" . (defined($strVmArch) ? "-${strVmArch}" : '-' . hostArch()); + if ($strVm ne VM_NONE) { my $strCCachePath = "${strTestPath}/ccache-0/${strVm}"; @@ -556,9 +562,9 @@ =head1 SYNOPSIS } executeTest( - "docker run -itd -h test-build --name=test-build" . + "docker run${strPlatform} -itd -h test-build --name=test-build" . " -v ${strBackRestBase}:${strBackRestBase} -v ${strTestPath}:${strTestPath}" . - " -v ${strCCachePath}:/home/${\TEST_USER}/.ccache" . ' ' . containerRepo() . ":${strVm}-test", + " -v ${strCCachePath}:/home/${\TEST_USER}/.ccache" . " ${strImage}", {bSuppressStdErr => true}); } @@ -791,8 +797,8 @@ =head1 SYNOPSIS if ($strVm ne VM_NONE) { executeTest( - "docker run -itd -h test-build --name=test-build" . - " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-test", + "docker run${strPlatform} -itd -h test-build --name=test-build" . + " -v ${strBackRestBase}:${strBackRestBase} ${strImage}", {bSuppressStdErr => true}); } @@ -875,8 +881,8 @@ =head1 SYNOPSIS if ($strVm ne VM_NONE) { executeTest( - "docker run -itd -h test-build --name=test-build" . - " -v ${strBackRestBase}:${strBackRestBase} " . containerRepo() . ":${strBuildVM}-test", + "docker run${strPlatform} -itd -h test-build --name=test-build" . + " -v ${strBackRestBase}:${strBackRestBase} ${strImage}", {bSuppressStdErr => true}); } @@ -1055,10 +1061,10 @@ =head1 SYNOPSIS if (!defined($$oyProcess[$iVmIdx]) && $iTestIdx < @{$oyTestRun}) { my $oJob = new pgBackRestTest::Common::JobTest( - $oStorageTest, $strBackRestBase, $strTestPath, $$oyTestRun[$iTestIdx], $bDryRun, $bVmOut, $iVmIdx, $iVmMax, - $strMakeCmd, $iTestIdx, $iTestMax, $strLogLevel, $strLogLevelTest, $strLogLevelTestFile, !$bNoLogTimestamp, - $bShowOutputAsync, $bNoCleanup, $iRetry, !$bNoBackTrace, !$bNoValgrind, !$bNoCoverage, $bCoverageSummary, - !$bNoOptimize, $bProfile, $iScale, $strTimeZone, !$bNoDebug, $bDebugTestTrace, + $oStorageTest, $strBackRestBase, $strTestPath, $$oyTestRun[$iTestIdx], $bDryRun, $bVmOut, $strPlatform, + $strImage, $iVmIdx, $iVmMax, $strMakeCmd, $iTestIdx, $iTestMax, $strLogLevel, $strLogLevelTest, + $strLogLevelTestFile, !$bNoLogTimestamp, $bShowOutputAsync, $bNoCleanup, $iRetry, !$bNoBackTrace, !$bNoValgrind, + !$bNoCoverage, $bCoverageSummary, !$bNoOptimize, $bProfile, $iScale, $strTimeZone, !$bNoDebug, $bDebugTestTrace, $iBuildMax / $iVmMax < 1 ? 1 : int($iBuildMax / $iVmMax)); $iTestIdx++; From ad34ac01db61d19e9ce4e4544b986fec1c3cde41 Mon Sep 17 00:00:00 2001 From: Evgeniy Ratkov Date: Mon, 17 Nov 2025 16:38:51 +0300 Subject: [PATCH 2/7] Disable installing Postgresql for multi-architecture tests (#92) Postgresql removes packets of deiffrent versions for ppc64le and s390x architectures. Also tests for these architectures do not use different versions of Postgresql. So we may disable installing Postgresql for these test. Note: It is temporary commit, which must be reverted after sync version 2.57, which contains commit 5de5ed842a21f4fb7c7f7e9c94650e18dcae96d5 --- test/lib/pgBackRestTest/Common/ContainerTest.pm | 6 +++++- test/lib/pgBackRestTest/Common/VmTest.pm | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index 4c7d91ad39..3efd08bd21 100644 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -507,7 +507,11 @@ sub containerBuild "/etc/postgresql-common/createcluster.conf"; } - if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0) + my $strArchDefined = defined($strArch) ? $strArch : hostArch(); + if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0 && + ($strArchDefined eq VM_ARCH_AARCH64 || + $strArchDefined eq VM_ARCH_AMD64 || + $strArchDefined eq VM_ARCH_X86_64)) { $strScript .= sectionHeader() . "# Install PostgreSQL\n"; diff --git a/test/lib/pgBackRestTest/Common/VmTest.pm b/test/lib/pgBackRestTest/Common/VmTest.pm index 4ada91e880..cb93fc3ba9 100644 --- a/test/lib/pgBackRestTest/Common/VmTest.pm +++ b/test/lib/pgBackRestTest/Common/VmTest.pm @@ -65,6 +65,8 @@ use constant VM_ARCH_I386 => 'i386'; push @EXPORT, qw(VM_ARCH_I386); use constant VM_ARCH_AMD64 => 'amd64'; push @EXPORT, qw(VM_ARCH_AMD64); +use constant VM_ARCH_X86_64 => 'x86_64'; + push @EXPORT, qw(VM_ARCH_X86_64); #################################################################################################################################### # Valid VM list From 800ad3df13035fcc52c585f5c44c6a79096cad1f Mon Sep 17 00:00:00 2001 From: Denis Garsh Date: Mon, 17 Nov 2025 22:43:52 +0300 Subject: [PATCH 3/7] remove u20 hash --- test/container.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/test/container.yaml b/test/container.yaml index 7f22e1bcf8..eab88930b1 100644 --- a/test/container.yaml +++ b/test/container.yaml @@ -23,5 +23,4 @@ d11: 01e6970744c2b2529a14832e92cb861c7da94308 f41: ce870455184e991e0efd90176da1412f0f3f72a2 rh8: 4d141c845abfbdbf402ba447cf2bd2e4357c8a63 - u20: 711ee90bf3ea0e8bb054285193811266b9b1f2f3 u22: 57c2af91a1b1a9624e325b704cc9213821c6b968 From 20f0cf754ccc457231af94eb680ac95453a976a7 Mon Sep 17 00:00:00 2001 From: Denis Garsh Date: Tue, 18 Nov 2025 08:24:22 +0300 Subject: [PATCH 4/7] Revert u20 removing --- test/container.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/test/container.yaml b/test/container.yaml index eab88930b1..7f22e1bcf8 100644 --- a/test/container.yaml +++ b/test/container.yaml @@ -23,4 +23,5 @@ d11: 01e6970744c2b2529a14832e92cb861c7da94308 f41: ce870455184e991e0efd90176da1412f0f3f72a2 rh8: 4d141c845abfbdbf402ba447cf2bd2e4357c8a63 + u20: 711ee90bf3ea0e8bb054285193811266b9b1f2f3 u22: 57c2af91a1b1a9624e325b704cc9213821c6b968 From 821286ed5ca47f90cc2761b174dbc6bf5b270519 Mon Sep 17 00:00:00 2001 From: Denis Garsh Date: Tue, 18 Nov 2025 08:24:32 +0300 Subject: [PATCH 5/7] Test --- test/lib/pgBackRestTest/Common/ContainerTest.pm | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index 3efd08bd21..c4bbb84ca7 100644 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -507,14 +507,11 @@ sub containerBuild "/etc/postgresql-common/createcluster.conf"; } - my $strArchDefined = defined($strArch) ? $strArch : hostArch(); if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0 && - ($strArchDefined eq VM_ARCH_AARCH64 || - $strArchDefined eq VM_ARCH_AMD64 || - $strArchDefined eq VM_ARCH_X86_64)) + vmArch($strOS) eq VM_ARCH_AMD64) { $strScript .= sectionHeader() . - "# Install PostgreSQL\n"; + "# Install PostgreSQL\n" . vmArch($strOS); if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { From 21bdacce24d0cf88a7f69ce65c7a15ebb43116d9 Mon Sep 17 00:00:00 2001 From: Denis Garsh Date: Tue, 18 Nov 2025 08:32:20 +0300 Subject: [PATCH 6/7] Fix --- test/lib/pgBackRestTest/Common/ContainerTest.pm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index c4bbb84ca7..9892f65a26 100644 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -507,11 +507,12 @@ sub containerBuild "/etc/postgresql-common/createcluster.conf"; } + $strScript .= "# Arch = " . vmArch($strOS); if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0 && vmArch($strOS) eq VM_ARCH_AMD64) { $strScript .= sectionHeader() . - "# Install PostgreSQL\n" . vmArch($strOS); + "# Install PostgreSQL\n"; if ($$oVm{$strOS}{&VM_OS_BASE} eq VM_OS_BASE_RHEL) { From 284f1e0e454c53d0d209946bc614063c8727df82 Mon Sep 17 00:00:00 2001 From: Denis Garsh Date: Tue, 18 Nov 2025 08:33:50 +0300 Subject: [PATCH 7/7] Fix --- test/lib/pgBackRestTest/Common/ContainerTest.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/lib/pgBackRestTest/Common/ContainerTest.pm b/test/lib/pgBackRestTest/Common/ContainerTest.pm index 9892f65a26..62e5e385e7 100644 --- a/test/lib/pgBackRestTest/Common/ContainerTest.pm +++ b/test/lib/pgBackRestTest/Common/ContainerTest.pm @@ -507,7 +507,7 @@ sub containerBuild "/etc/postgresql-common/createcluster.conf"; } - $strScript .= "# Arch = " . vmArch($strOS); + $strScript .= sectionHeader() . "# Arch = " . vmArch($strOS); if (defined($oOS->{&VM_DB}) && @{$oOS->{&VM_DB}} > 0 && vmArch($strOS) eq VM_ARCH_AMD64) {