Incorrect architecture in rpm packages for ppc64le prevents installation of gitlab-runner v17 and v18 (since Mage)

Summary

On IBM Power (ppc64le) machines with RedHat based Os-es the package repo at packages.gitlab.com does not display versions older than 16.3.3 in a way that the OS can recognize and update. Even if the rpm files are downloaded manually, dnf refuses to recognize the architecture in them and install them. This is due to the OS expecting the string of the architecture to be "ppc64le", but gets the string "ppc64el", which is not one of the options dnf would accept. The "ppc64el" architecture is the Debian way of recognizing the same architecture that rpm OS-es recognize as "ppc64le" I also believe, the same underlying cause is responsible for the rpm links having "ppc64el" instead of "ppc64le" in them and thus causing issue #37527 (closed)

Steps to reproduce

  1. On IBM power machine with RHEL installed, check the architecture string:
arch
ppc64le
  1. Check the version of the gitlab-runner packages served by packages.gitlab.com
dnf list gitlab-runner*
runner_gitlab-runner                                                                            123  B/s | 862  B     00:06    
runner_gitlab-runner-source                                                                     123  B/s | 862  B     00:07    
Available Packages
gitlab-runner.ppc64le                                              16.3.3-1                                 runner_gitlab-runner
  1. Download and manually try to install via dnf gitlab-runner v18
dnf install ./gitlab-runner_ppc64el.rpm 
runner_gitlab-runner                                                                            123  B/s | 862  B     00:07    
runner_gitlab-runner-source                                                                     124  B/s | 862  B     00:06    
Error: 
 Problem: conflicting requests
  - package gitlab-runner-18.3.0-1.ppc64el from @commandline does not have a compatible architecture
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
  1. Check the architecture string of the package:
rpm -qip ./gitlab-runner_ppc64el.rpm 
Name        : gitlab-runner
Version     : 18.3.0
Release     : 1
Architecture: ppc64el
Install Date: (not installed)
Group       : default
Size        : 91442647
License     : MIT
Signature   : RSA/SHA512, Thu Aug 21 08:53:31 2025, Key ID 6c57c29c6ba75a4e
Source RPM  : gitlab-runner-18.3.0-1.src.rpm
Build Date  : Thu Aug 21 08:53:23 2025
Build Host  : runner-led3u572v-project-250833-concurrent-11-dtexh5mz
Relocations : / 
Packager    : GitLab Inc. <support@gitlab.com>
Vendor      : GitLab Inc.
URL         : https://gitlab.com/gitlab-org/gitlab-runner
Summary     : GitLab Runner
Description :
GitLab Runner
  1. Force dnf to install the package with the architecture it reports "ppc64el"
dnf install ./gitlab-runner_ppc64el.rpm --forcearch=ppc64el
...
Command line error: argument --forcearch: invalid choice: 'ppc64el' (choose from 'aarch64', 'alpha', 'alphaev4', 'alphaev45', 'alphaev5', 'alphaev56', 'alphaev6', 'alphaev67', 'alphaev68', 'alphaev7', 'alphapca56', 'amd64', 'armv5tejl', 'armv5tel', 'armv5tl', 'armv6hl', 'armv6l', 'armv7hl', 'armv7hnl', 'armv7l', 'armv8hl', 'armv8l', 'athlon', 'geode', 'i386', 'i486', 'i586', 'i686', 'ia32e', 'ia64', 'loongarch64', 'mips', 'mips64', 'mips64el', 'mipsel', 'noarch', 'ppc', 'ppc64', 'ppc64iseries', 'ppc64le', 'ppc64p7', 'ppc64pseries', 'riscv128', 'riscv32', 'riscv64', 's390', 's390x', 'sh3', 'sh4', 'sh4a', 'sparc', 'sparc64', 'sparc64v', 'sparcv8', 'sparcv9', 'sparcv9v', 'x86_64')

Actual behavior

  • on step 2 the lastest visible gitlab-runner version is 16.3.3
  • on step 5 "ppc64el" is reported as invalid choice of architecture strings

Expected behavior

  • RPM packages have the architecture "ppc64le" in them
  • packages.gitlab.com will then report them correctly and dnf will pick them up
  • dnf is able to install the packages without forcing architecture changes

Relevant logs and/or screenshots

cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.2 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.2"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.2 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/9"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.2
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.2"
  • The older version of 16.3.3 installs without an issue on the same VM
  • A workaround where "rpm" is used with "ignorearch" instead of "dnf" is possible. The packages are then installed and work, but this has to be done manually every time and the repo at packages.gitlab.com cannot be used. Neither can dnf, because it does not have the option to ignore architecture or force an invalid one.
rpm -i --ignorearch ./gitlab-runner_ppc64el.rpm

Image_362

Environment description

A ppc64le VM on IBM cloud with Red Hat Enterprise Linux 9.2 installed.

Used GitLab Runner version

18.3.0-1

gitlab-runner --version
Version:      18.3.0
Git revision: 9ba718cd
Git branch:   18-3-stable
GO version:   go1.24.4 X:cacheprog
Built:        2025-08-21T12:21:12Z
OS/Arch:      linux/ppc64le

Possible fixes

https://gitlab.com/gitlab-org/gitlab-runner/-/blob/main/magefiles/package.go?ref_type=heads#L71

The issue looks like it started after the migration to Mage and to me it appears it is due to the magefiles/package.go file having an rpm definition for ppc64le that is copy-pasted from the deb definition, and changing it to be "ppc64le" could produce a fix. (see attached patch) gitlab-runner-ppc6le-for-rpms.patch