Skip to content

desktops: move mesa/GPU runtime + diagnostics to common mid tier#885

Merged
igorpecovnik merged 2 commits intomainfrom
desktops-mid-3d-packages
Apr 21, 2026
Merged

desktops: move mesa/GPU runtime + diagnostics to common mid tier#885
igorpecovnik merged 2 commits intomainfrom
desktops-mid-3d-packages

Conversation

@igorpecovnik
Copy link
Copy Markdown
Member

Summary

Ports armbian/build's extensions/mesa-vpu.sh Mesa/GPU package list into configng so every mid-tier desktop install (image-build via module_desktops install mode=build or runtime install on a minimal image via armbian-config) gets the same GPU runtime + diagnostics — not just the ones that go through the mesa-vpu extension.

What moves

Added to common.yaml mid tier:

Package Purpose
libgl1-mesa-dri Mesa DRI drivers (hardware OpenGL path)
libglx-mesa0 Mesa GLX front-end for X11
mesa-utils glxinfo / glxgears / es2_info
mesa-vulkan-drivers Vulkan ICDs (Panfrost, Lima, Radeon, Intel, …)
vulkan-tools vulkaninfo / vkcube
glmark2-wayland GL bench (Wayland backend)
glmark2-es2-wayland GLES2 bench (Wayland backend)
glmark2-x11 GL bench (X11 backend)
glmark2-es2-x11 GLES2 bench (X11 backend)

Phantoms dropped

Three entries in the original mesa-vpu list don't exist in any Debian/Ubuntu archive and were dropped on the move:

Phantom Why it's phantom
mesa-utils-extra Archive dropped it some years ago — no such binary package anywhere
glmark2 Source package only — only the -{wayland,es2-wayland,x11,es2-x11} binaries ship
glmark2-es2 Same — source package split; no binary with this name

mesa-vpu has been silently logging E: Unable to locate package on these for years without affecting the build outcome.

Availability verified

Fetched Packages.gz from ftp.debian.org / archive.ubuntu.com / ports.ubuntu.com. All 9 real packages present on amd64/arm64/armhf/riscv64 for trixie and noble, and on amd64/arm64/armhf for bookworm (which has no riscv64 port). No tier_override needed.

Companion PR

Pairs with armbian/build#9683 (desktop-to-armbian-config) which removes the same package list from extensions/mesa-vpu.sh in commit bdd94a829. With both landed, mesa-vpu shrinks to its genuinely build-framework-only responsibilities — rockchip-multimedia PPA + codecs (board-conditional on LINUXFAMILY × BRANCH), KDE Neon base-files hold, libdav1d7 hold, and the final dist-upgrade pass.

Test plan

  • parse_desktop_yaml.py xfce trixie amd64 --tier mid emits the 9 new packages in DESKTOP_PACKAGES.
  • YAML parses clean.
  • Image build on rk3588/noble/vendor (where mesa-vpu previously installed these) — same end state: all 9 packages installed, plus the rockchip-multimedia bits mesa-vpu still owns.
  • Runtime armbian-config --api module_desktops install de=gnome tier=mid on a minimal Ubuntu noble image — 9 new packages land on system.

@github-actions github-actions Bot added 05 Milestone: Second quarter release size/small PR with less then 50 lines labels Apr 21, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 21, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 721ce32a-db46-4832-a48c-3631af93bc7b

📥 Commits

Reviewing files that changed from the base of the PR and between f175558 and 99266ae.

📒 Files selected for processing (2)
  • tools/modules/desktops/module_desktops.sh
  • tools/modules/desktops/yaml/common.yaml

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.


Walkthrough

Two changes: (1) The desktop YAML package list added a mid-tier group containing Mesa DRI/GLX (libgl1-mesa-dri, libglx-mesa0), probing/drivers/tools (mesa-utils, mesa-vulkan-drivers, vulkan-tools), and GL/GLES benchmarks for Wayland and X11 (glmark2-*) with no other tier or removal changes. (2) The RK3588 desktop enablement hook in module_desktops.sh was renamed and refactored from a single DT overlay enabler to _module_desktops_rockchip_multimedia, introducing a two-stage setup: a noble-only PPA/config install stage and an overlay stage that enables panthor-gpu, plus unconditional removal of the PPA pin file on uninstall.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: moving Mesa/GPU runtime and diagnostics packages to the common mid tier in desktops configuration.
Description check ✅ Passed The description is comprehensive and directly related to the changeset, providing detailed context about the packages added, phantoms dropped, and verification performed.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch desktops-mid-3d-packages

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Ports armbian/build extensions/mesa-vpu.sh's 3D package list into
configng so every mid-tier desktop install (image-build or runtime
armbian-config invocation) gets the same GPU runtime + diagnostics,
not just the ones that go through the mesa-vpu extension.

9 packages added to common.yaml mid tier:

  libgl1-mesa-dri       Mesa DRI drivers (hardware OpenGL path)
  libglx-mesa0          Mesa GLX front-end for X11
  mesa-utils            glxinfo / glxgears / es2_info
  mesa-vulkan-drivers   Vulkan ICDs (Panfrost, Lima, Radeon, Intel, …)
  vulkan-tools          vulkaninfo / vkcube
  glmark2-wayland       GL bench (Wayland backend)
  glmark2-es2-wayland   GLES2 bench (Wayland backend)
  glmark2-x11           GL bench (X11 backend)
  glmark2-es2-x11       GLES2 bench (X11 backend)

Three entries from mesa-vpu.sh's original list were dropped:

  mesa-utils-extra   — doesn't exist in any Debian/Ubuntu archive
                       (dropped upstream some years ago)
  glmark2            — not a binary package, only a source package
                       (the -{wayland,x11,es2-*} flavours are the real debs)
  glmark2-es2        — same, no binary package ships under that name

mesa-vpu has been silently apt-warning on these for years. Dropping
them on the move is the clean way to fix the phantoms.

Availability verified via Packages.gz fetches from
ftp.debian.org + archive.ubuntu.com / ports.ubuntu.com:
all 9 present on amd64/arm64/armhf/riscv64 for trixie and noble,
and on amd64/arm64/armhf for bookworm (riscv64 not applicable there).
No tier_override needed; the list holds across the matrix.

Pairs with a build-side mesa-vpu trim that removes the same
packages from extensions/mesa-vpu.sh's post_install_kernel_debs__3d.
With both landed, mesa-vpu shrinks to its genuinely
board-framework-only responsibilities (rockchip-multimedia PPA
+ codecs, KDE Neon base-files hold, libdav1d7 hold, dist-upgrade).
@igorpecovnik igorpecovnik force-pushed the desktops-mid-3d-packages branch from f175558 to 3d8fff7 Compare April 21, 2026 17:40
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: c5a3efdf-429e-40c2-85ae-03a8a20438cf

📥 Commits

Reviewing files that changed from the base of the PR and between 27eea9b and f175558.

📒 Files selected for processing (1)
  • tools/modules/desktops/yaml/common.yaml

Comment on lines +73 to +83
# Verified present on Debian bookworm/trixie/forky/sid and
# Ubuntu jammy/noble/resolute across amd64/arm64/armhf/riscv64.
- libgl1-mesa-dri # Mesa DRI drivers (OpenGL hardware path)
- libglx-mesa0 # Mesa GLX front-end for X11
- mesa-utils # glxinfo, glxgears, es2_info, etc.
- mesa-vulkan-drivers # Vulkan ICD drivers (Panfrost, Lima, Radeon, Intel, …)
- vulkan-tools # vulkaninfo, vkcube
- glmark2-wayland # GL benchmark — Wayland backend
- glmark2-es2-wayland # GLES2 benchmark — Wayland backend
- glmark2-x11 # GL benchmark — X11 backend
- glmark2-es2-x11 # GLES2 benchmark — X11 backend
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot Apr 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check presence of the 9 new mid-tier packages in the release/arch combos
# claimed by the YAML comment but NOT covered by the PR description's
# verification (forky, sid, jammy, resolute, plus sid/loong64).
set -u

PKGS=(libgl1-mesa-dri libglx-mesa0 mesa-utils mesa-vulkan-drivers vulkan-tools
      glmark2-wayland glmark2-es2-wayland glmark2-x11 glmark2-es2-x11)

check() {
  local base=$1 suite=$2 comp=$3 arch=$4
  local url="${base}/dists/${suite}/${comp}/binary-${arch}/Packages.gz"
  local data
  data=$(curl -fsSL "$url" 2>/dev/null | gunzip 2>/dev/null) || {
    echo "  [SKIP] $url unreachable"; return
  }
  for p in "${PKGS[@]}"; do
    if ! grep -qE "^Package: ${p}\$" <<<"$data"; then
      echo "  [MISS] $suite/$comp/$arch: $p"
    fi
  done
}

# Debian forky + sid
for suite in forky sid; do
  for comp in main contrib non-free non-free-firmware; do
    for arch in amd64 arm64 armhf riscv64; do
      echo "== debian $suite $comp $arch =="
      check http://deb.debian.org/debian "$suite" "$comp" "$arch"
    done
  done
done
# sid/loong64 (per line 167/222)
for comp in main contrib non-free non-free-firmware; do
  echo "== debian sid $comp loong64 =="
  check http://deb.debian.org/debian-ports sid "$comp" loong64
done

# Ubuntu jammy + resolute (amd64/arm64 on archive, armhf/riscv64 on ports)
for suite in jammy resolute; do
  for comp in main universe multiverse restricted; do
    for arch in amd64; do
      echo "== ubuntu $suite $comp $arch =="
      check http://archive.ubuntu.com/ubuntu "$suite" "$comp" "$arch"
    done
    for arch in arm64 armhf riscv64; do
      echo "== ubuntu-ports $suite $comp $arch =="
      check http://ports.ubuntu.com/ubuntu-ports "$suite" "$comp" "$arch"
    done
  done
done

Repository: armbian/configng

Length of output: 146


🏁 Script executed:

# First, check if this is a git repository and find PR/commit context
cd . && git log -1 --oneline 2>/dev/null || echo "Not a git repo or git unavailable"

# Check if there's a PR description or commit message
git log --format='%B' -1 2>/dev/null | head -50 || true

Repository: armbian/configng

Length of output: 2125


🏁 Script executed:

# Examine the actual YAML file to confirm the claims in the review
cat -n tools/modules/desktops/yaml/common.yaml | sed -n '63,85p'

Repository: armbian/configng

Length of output: 1563


🏁 Script executed:

# Check the broader context mentioned in the review (browser map, tier_overrides)
cat -n tools/modules/desktops/yaml/common.yaml | sed -n '122,170p'

Repository: armbian/configng

Length of output: 2211


🏁 Script executed:

# Look at tier_overrides patterns for examples of per-release exclusions
cat -n tools/modules/desktops/yaml/common.yaml | sed -n '203,225p'

Repository: armbian/configng

Length of output: 1545


YAML comment's verification claim is broader than the commit message's stated scope.

The inline comment at lines 73–74 asserts these 9 packages were verified on Debian bookworm/trixie/forky/sid and Ubuntu jammy/noble/resolute across amd64/arm64/armhf/riscv64. However, the commit message states verification only covered:

  • Debian trixie and noble (all four arches)
  • Debian bookworm (amd64/arm64/armhf only)
  • No mention of forky, sid, jammy, or resolute

This discrepancy matters because:

  1. The file actively targets all seven codenames (browser map at lines 122–167 includes bookworm, trixie, noble, jammy, resolute, forky, sid).
  2. Removing phantom packages is meant to eliminate "Unable to locate package" errors; an unverified package missing from (e.g.) jammy/armhf would reintroduce exactly that failure.
  3. No tier_overrides entries exist for any of the nine new packages to absorb per-release gaps.

Either extend the Packages.gz verification to confirm the four unverified codenames (forky, sid, jammy, resolute) and keep the comment as-is, or narrow the comment to match what the commit message demonstrates was checked: trixie, noble, and bookworm-minus-riscv64.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI is currently testing on several variants check once finished https://github.com/armbian/configng/actions/runs/24737304638

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧩 Analysis chain

Let me check the CI run status.


🏁 Script executed:

#!/bin/bash
# Check CI run status and results
gh run view 24737304638 --repo armbian/configng 2>/dev/null || echo "Run not accessible"

echo "---"
# Also check the jobs
gh run view 24737304638 --repo armbian/configng --json status,conclusion,jobs 2>/dev/null | jq '{status,conclusion,jobs: [.jobs[] | {name,status,conclusion}]}' 2>/dev/null || echo "JSON query failed"

Length of output: 35845


@igorpecovnik, the run is still in progress (~29 minutes in, 206 jobs total). Here's the current snapshot:

Completed & passing ✅

  • enlightenment / GNOME / i3-wm / Cinnamon / Mate on noble, trixie, resolute, bookworm (amd64 + some arm64) — all green.
  • Non-desktop installs (Docker on jammy/trixie/bookworm/resolute/forky, etc.) — all green.

Still running / queued ⏳

  • All armhf-qemu and riscv64-qemu emulated jobs (Cinnamon, XFCE, Mate, xmonad, enlightenment on trixie/noble/resolute/bookworm).
  • Most arm64 desktop jobs (KDE Plasma, KDE Neon, GNOME, XFCE, xmonad, …).
  • bookworm/arm64 and bookworm/armhf desktop jobs.

No failures so far — which is a good early signal. I'll keep the review comment open until the emulated armhf/riscv64 jobs finish, since those are the arches most relevant to the verification gap I flagged. Feel free to ping me once the run completes and I'll re-check and resolve if everything passes.


🧠 Learnings used
Learnt from: Tearran
Repo: armbian/configng PR: 668
File: tools/modules/initialize/init_args.sh:0-0
Timestamp: 2025-08-29T06:07:23.830Z
Learning: The set_runtime_variables.sh in armbian/configng establishes these key variables that must be matched exactly in independent modules: NETWORK_RENDERER (detected via systemctl/NetworkManager), DIALOG_CANCEL=1, DIALOG_ESC=255, CONFIG_FILE="/etc/armbian-config", ARMBIAN (from /etc/armbian-release), DISTRO_STATUS, SOFTWARE_FOLDER="/armbian", TRANSMISSION_WHITELIST (includes Docker subnet), ZFS_DKMS_VERSION, and ZFS_KERNEL_MAX (with fallback version logic).

Rename _module_desktops_add_3d_overlay to _module_desktops_rockchip_multimedia
and extend it to set up amazingfated's ppa:liujianfeng1994/rockchip-multimedia
on noble: add the PPA via add-apt-repository, pin it at priority 1001 (required
to downgrade apt.armbian.com chromium to the PPA's hardware-accelerated build),
pkg_update, then install rockchip-multimedia-config, libv4l-rkmpp,
gstreamer1.0-rockchip, and libwidevinecdm0. Drops the pin file on uninstall so
the PPA does not keep outranking the archive for every unrelated apt upgrade.

Gating unchanged: BOARDFAMILY rockchip-rk3588/rk35xx, BRANCH=vendor, tier !=
minimal, DE not xfce/i3-wm; PPA stage additionally restricted to DISTROID=noble.
@github-actions github-actions Bot added size/medium PR with more then 50 and less then 250 lines and removed size/small PR with less then 50 lines labels Apr 21, 2026
@igorpecovnik igorpecovnik merged commit 1329d6b into main Apr 21, 2026
11 of 12 checks passed
@igorpecovnik igorpecovnik deleted the desktops-mid-3d-packages branch April 21, 2026 19:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

05 Milestone: Second quarter release size/medium PR with more then 50 and less then 250 lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant