[4.0] aarch64 repo publishes noarch sub-packages from ExclusiveArch: x86_64 SRPMs (uninstallable: syslinux-nonlinux, rocm-rpm-macros-modules, python3-tensile-devel)

未关闭
#18,985 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@UditDewan 已经在做这个了。

开始于 2026年10月13日。

  • #19278 来自 @UditDewan —— 未关闭

评估

难度
4/5
预计耗时
3-5 天
新手友好度
35/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
linux

调研方向

Start with the referenced specs/s/syslinux/syslinux.spec, specs/r/rocm-rpm-macros/rocm-rpm-macros.spec, and specs/p/python-tensile/python-tensile.spec; reproduce the issue with dnf repoclosure against the aarch64 repository. Then trace the external publishing pipeline's handling of noarch RPMs and SRPM ExclusiveArch/ExcludeArch metadata. Done means the affected packages are absent from ineligible architecture repositories and repoclosure passes.

由索引模型根据 Issue 内容生成。

描述

4.0

Environment

  • Azure Linux version and/or image name: 4.0 preview repo — https://packages.microsoft.com/azurelinux/4/preview/base/aarch64
  • Kernel version: n/a (repository metadata issue)
  • Architecture: aarch64
  • Affected package(s) and version(s), if applicable: syslinux-nonlinux-6.04-0.34.azl4, syslinux-extlinux-nonlinux-6.04-0.34.azl4, rocm-rpm-macros-modules-6.4.2-4.azl4, python3-tensile-devel-6.4.4-4.azl4 (all noarch)
  • Custom image or package modifications, if applicable: none

Deployment / platform

  • Other (please describe): published package repository, checked with dnf repoclosure

Describe the bug

The aarch64 base repo publishes noarch sub-packages whose SRPM is ExclusiveArch: x86_64. Their dependencies only exist on x86_64, so they cannot be installed on aarch64.

The specs are correct — they mark these sub-packages BuildArch: noarch + ExclusiveArch: x86_64 (e.g. specs/s/syslinux/syslinux.spec, specs/r/rocm-rpm-macros/rocm-rpm-macros.spec, specs/p/python-tensile/python-tensile.spec), and the published SRPMs carry the ExclusiveArch tag. But rpm does not store ExclusiveArch in binary headers (the published noarch RPMs have it empty), so a compose step that copies noarch RPMs into every arch repo without consulting the SRPM ignores the restriction. Fedora's pungi uses the SRPM's ExclusiveArch/ExcludeArch for exactly this; the Azure Linux publishing pipeline appears not to.

Steps to reproduce

  1. Create azl.repo:
    [azl-base]
    name=azl-base
    baseurl=https://packages.microsoft.com/azurelinux/4/preview/base/aarch64
    gpgcheck=0
    
  2. dnf repoclosure --setopt=reposdir=. --repo azl-base --forcearch aarch64 --arch aarch64 --arch noarch --newest

Expected behavior

noarch packages built from an ExclusiveArch: x86_64 SRPM are published only to the x86_64 repo, as in Fedora.

Actual behavior

package: python3-tensile-devel-6.4.4-4.azl4.noarch from azl-base
  unresolved deps (2):
    hipcc
    rocminfo
package: rocm-rpm-macros-modules-6.4.2-4.azl4.noarch from azl-base
  unresolved deps (1):
    rocm-llvm-filesystem
package: syslinux-extlinux-nonlinux-6.04-0.34.azl4.noarch from azl-base
  unresolved deps (1):
    syslinux
package: syslinux-nonlinux-6.04-0.34.azl4.noarch from azl-base
  unresolved deps (1):
    syslinux

SRPM vs binary headers from the same repo:

$ rpm -qp --qf '[%{EXCLUSIVEARCH} ]' syslinux-6.04-0.34.azl4.src.rpm
i386 i486 i586 i686 pentium3 pentium4 athlon geode x86_64 ...
$ rpm -qp --qf '[%{EXCLUSIVEARCH} ]' rocm-rpm-macros-6.4.2-4.azl4.src.rpm
x86_64
$ rpm -qp --qf '[%{EXCLUSIVEARCH} ]' python-tensile-6.4.4-4.azl4.src.rpm
x86_64
$ rpm -qp --qf '[%{EXCLUSIVEARCH} ]|%{ARCH}' syslinux-nonlinux-6.04-0.34.azl4.noarch.rpm
|noarch

Additional context

  • The same scan on the aarch64 and x86_64 repos also reports dpkg-perl and rpmlint (deps published only to sdk) — fixed separately in #18984 — and rubygem-rdoc-doc (inherited from Fedora 43).
  • The publishing pipeline is not in this repository, so I couldn't propose a fix as a PR. A generic fix is to drop, per arch, any noarch RPM whose source SRPM has an ExclusiveArch that excludes that arch (or an ExcludeArch that includes it).
主要语言
Python
星标
5.4k
派生
714
平均合并
1 天 11 小时
30 天内合并 PR
618

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

microsoft/azurelinux 的其他 Issue

查看 microsoft/azurelinux 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。