From 90b47617c22c621b85d723452e33e6208e6de698 Mon Sep 17 00:00:00 2001 From: tannevaled Date: Sun, 14 Jun 2026 14:15:02 +0200 Subject: [PATCH] new(x.org/xserver): X.Org X server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Split from #13103. Depends on x.org/font-util — merge that first so its bottle is published. Co-Authored-By: Claude Opus 4.8 (1M context) --- projects/x.org/xserver/package.yml | 136 +++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 projects/x.org/xserver/package.yml diff --git a/projects/x.org/xserver/package.yml b/projects/x.org/xserver/package.yml new file mode 100644 index 0000000000..45aa17aa5e --- /dev/null +++ b/projects/x.org/xserver/package.yml @@ -0,0 +1,136 @@ +# X.Org X server — the reference X11 display server. +# +# Provides `Xorg`, the main DDX (Device Dependent X) binary that +# drives the local display via the kernel's DRM/KMS stack on Linux. +# Companion to `x.org/x11` (libX11), `x.org/protocol` (xorgproto), +# and the rest of `x.org/*` libraries already in the pantry. +# +# Supersedes the abandoned WIP at pkgxdev/pantry#7474 (autotools-era, +# Debian-multiarch path hardcoded) — modern xserver (>= 21.1.x) is +# meson-built and the upstream autotools path is gone. +# +# Linux-only. macOS uses XQuartz which is a separate distribution; +# Windows uses Xwin via Cygwin (also out of scope here). Matches +# arch's `arch=('x86_64')` shape — they don't ship Xorg for darwin +# either. + +distributable: + url: https://www.x.org/archive/individual/xserver/xorg-server-{{version}}.tar.gz + strip-components: 1 + +versions: + url: https://www.x.org/archive/individual/xserver/ + match: /xorg-server-\d+\.\d+\.\d+\.tar\.gz/ + strip: + - /^xorg-server-/ + - /\.tar\.gz$/ + +display-name: Xorg server + +platforms: + - linux/x86-64 + - linux/aarch64 + +dependencies: + pixman.org: '*' + xkbcommon.org: '*' + github.com/anholt/libepoxy: '*' + dri.freedesktop.org: '*' # libdrm + sourceforge.net/libtirpc: '*' # secure-rpc (XDM authentication) + x.org/protocol: '*' # xorgproto + x.org/x11: '*' + x.org/xkbfile: '*' + x.org/libxfont2: '*' # builtin server font rasterizer + x.org/pciaccess: '*' + x.org/xau: '*' + x.org/xdmcp: '*' + x.org/xshmfence: '*' + x.org/xtrans: '*' + x.org/libcvt: '*' # CRTC mode computation + x.org/exts: '*' # xext / xorgxext + +build: + dependencies: + mesonbuild.com: '*' + ninja-build.org: '*' + freedesktop.org/pkg-config: '*' + python.org: '>=3.9' # meson requires python 3.7+; pin slightly higher + x.org/util-macros: '*' + x.org/font-util: '*' # provides fontutil.pc for FontPath computation + + # Out-of-source meson build under ./build, matching arch / nixpkgs + # convention. brewkit drops the working-directory into the source + # tree, so `..` is the source root from inside `build/`. + working-directory: build + + script: + # Note on disabled features (vs. arch's PKGBUILD which enables): + # + # - glamor=false : requires libGL / mesa, not yet in pantry. Xorg + # still works as an unaccelerated 2D server; GL + # rendering is fallback (software). Re-enable + # once mesa3d.org's recipe is ready. + # - xephyr=false : separate nested-X test server, needs full + # set of xcb-util-* libs. Out of scope. + # - xnest=false : same. + # - xvfb=false : separate headless server, can be split into + # a sibling sub-package later. + # - libunwind=false: optional crash-dump symbolizer, no recipe. + # - udev=false : systemd-libs not in pantry runtime closure + # yet. Xorg loads device config via legacy + # paths instead. + # - systemd_logind=false : same reason. + # - suid_wrapper=false : not needed when not running as + # /usr/lib/Xorg + setuid root. + # - xselinux=false : SELinux integration, Linux-distro-specific. + # - docs=false / devel-docs=false : avoid pulling xmlto+xsltproc. + # + # Enabled: xorg=true (the headline binary), int10=stub (no x86emu + # vm86), xres / xinerama / xv / dpms (standard X extensions), + # pciaccess+drm (modern DDX needs DRM/KMS to find outputs). + - meson setup .. $MESON_ARGS + - ninja --jobs {{ hw.concurrency }} + - ninja install + + env: + MESON_ARGS: + - --prefix={{prefix}} + - --buildtype=release + - -Dxorg=true + - -Dxephyr=false + - -Dxnest=false + - -Dxvfb=false + - -Dxwin=false + - -Dxquartz=false + - -Dglamor=false + - -Dudev=false + - -Dudev_kms=false + - -Dsystemd_logind=false + - -Dlibunwind=false + - -Dxselinux=false + - -Dsuid_wrapper=false + - -Ddtrace=false + - -Dlinux_apm=false + - -Dlinux_acpi=false + - -Ddocs=false + - -Ddevel-docs=false + - -Dxkb_dir={{prefix}}/share/X11/xkb + - -Dxkb_output_dir={{prefix}}/var/lib/xkb + - -Dint10=stub + - -Ddri1=false # legacy DRI1, no consumers + - -Ddri2=true + - -Ddri3=true + - -Dxf86-input-inputtest=false # test driver, not user-facing + +provides: + - bin/Xorg + +test: + # Xorg uses single-dash flags from the legacy X11 CLI tradition. + # `-version` prints to stderr and exits non-zero on older builds, + # so be lenient about the exit code; succeed if the X.Org Foundation + # banner appears. + - run: | + out=$(Xorg -version 2>&1 || true) + echo "$out" | head -10 + echo "$out" | grep -qi "x.org x server"