|
| 1 | +# X.Org X server — the reference X11 display server. |
| 2 | +# |
| 3 | +# Provides `Xorg`, the main DDX (Device Dependent X) binary that |
| 4 | +# drives the local display via the kernel's DRM/KMS stack on Linux. |
| 5 | +# Companion to `x.org/x11` (libX11), `x.org/protocol` (xorgproto), |
| 6 | +# and the rest of `x.org/*` libraries already in the pantry. |
| 7 | +# |
| 8 | +# Supersedes the abandoned WIP at pkgxdev/pantry#7474 (autotools-era, |
| 9 | +# Debian-multiarch path hardcoded) — modern xserver (>= 21.1.x) is |
| 10 | +# meson-built and the upstream autotools path is gone. |
| 11 | +# |
| 12 | +# Linux-only. macOS uses XQuartz which is a separate distribution; |
| 13 | +# Windows uses Xwin via Cygwin (also out of scope here). Matches |
| 14 | +# arch's `arch=('x86_64')` shape — they don't ship Xorg for darwin |
| 15 | +# either. |
| 16 | + |
| 17 | +distributable: |
| 18 | + url: https://www.x.org/archive/individual/xserver/xorg-server-{{version}}.tar.gz |
| 19 | + strip-components: 1 |
| 20 | + |
| 21 | +versions: |
| 22 | + url: https://www.x.org/archive/individual/xserver/ |
| 23 | + match: /xorg-server-\d+\.\d+\.\d+\.tar\.gz/ |
| 24 | + strip: |
| 25 | + - /^xorg-server-/ |
| 26 | + - /\.tar\.gz$/ |
| 27 | + |
| 28 | +display-name: Xorg server |
| 29 | + |
| 30 | +platforms: |
| 31 | + - linux/x86-64 |
| 32 | + - linux/aarch64 |
| 33 | + |
| 34 | +dependencies: |
| 35 | + pixman.org: '*' |
| 36 | + xkbcommon.org: '*' |
| 37 | + github.com/anholt/libepoxy: '*' |
| 38 | + dri.freedesktop.org: '*' # libdrm |
| 39 | + sourceforge.net/libtirpc: '*' # secure-rpc (XDM authentication) |
| 40 | + x.org/protocol: '*' # xorgproto |
| 41 | + x.org/x11: '*' |
| 42 | + x.org/xkbfile: '*' |
| 43 | + x.org/libxfont2: '*' # builtin server font rasterizer |
| 44 | + x.org/pciaccess: '*' |
| 45 | + x.org/xau: '*' |
| 46 | + x.org/xdmcp: '*' |
| 47 | + x.org/xshmfence: '*' |
| 48 | + x.org/xtrans: '*' |
| 49 | + x.org/libcvt: '*' # CRTC mode computation |
| 50 | + x.org/exts: '*' # xext / xorgxext |
| 51 | + |
| 52 | +build: |
| 53 | + dependencies: |
| 54 | + mesonbuild.com: '*' |
| 55 | + ninja-build.org: '*' |
| 56 | + freedesktop.org/pkg-config: '*' |
| 57 | + python.org: '>=3.9' # meson requires python 3.7+; pin slightly higher |
| 58 | + x.org/util-macros: '*' |
| 59 | + x.org/font-util: '*' # provides fontutil.pc for FontPath computation |
| 60 | + |
| 61 | + # Out-of-source meson build under ./build, matching arch / nixpkgs |
| 62 | + # convention. brewkit drops the working-directory into the source |
| 63 | + # tree, so `..` is the source root from inside `build/`. |
| 64 | + working-directory: build |
| 65 | + |
| 66 | + script: |
| 67 | + # Note on disabled features (vs. arch's PKGBUILD which enables): |
| 68 | + # |
| 69 | + # - glamor=false : requires libGL / mesa, not yet in pantry. Xorg |
| 70 | + # still works as an unaccelerated 2D server; GL |
| 71 | + # rendering is fallback (software). Re-enable |
| 72 | + # once mesa3d.org's recipe is ready. |
| 73 | + # - xephyr=false : separate nested-X test server, needs full |
| 74 | + # set of xcb-util-* libs. Out of scope. |
| 75 | + # - xnest=false : same. |
| 76 | + # - xvfb=false : separate headless server, can be split into |
| 77 | + # a sibling sub-package later. |
| 78 | + # - libunwind=false: optional crash-dump symbolizer, no recipe. |
| 79 | + # - udev=false : systemd-libs not in pantry runtime closure |
| 80 | + # yet. Xorg loads device config via legacy |
| 81 | + # paths instead. |
| 82 | + # - systemd_logind=false : same reason. |
| 83 | + # - suid_wrapper=false : not needed when not running as |
| 84 | + # /usr/lib/Xorg + setuid root. |
| 85 | + # - xselinux=false : SELinux integration, Linux-distro-specific. |
| 86 | + # - docs=false / devel-docs=false : avoid pulling xmlto+xsltproc. |
| 87 | + # |
| 88 | + # Enabled: xorg=true (the headline binary), int10=stub (no x86emu |
| 89 | + # vm86), xres / xinerama / xv / dpms (standard X extensions), |
| 90 | + # pciaccess+drm (modern DDX needs DRM/KMS to find outputs). |
| 91 | + - meson setup .. $MESON_ARGS |
| 92 | + - ninja --jobs {{ hw.concurrency }} |
| 93 | + - ninja install |
| 94 | + |
| 95 | + env: |
| 96 | + MESON_ARGS: |
| 97 | + - --prefix={{prefix}} |
| 98 | + - --buildtype=release |
| 99 | + - -Dxorg=true |
| 100 | + - -Dxephyr=false |
| 101 | + - -Dxnest=false |
| 102 | + - -Dxvfb=false |
| 103 | + - -Dxwin=false |
| 104 | + - -Dxquartz=false |
| 105 | + - -Dglamor=false |
| 106 | + - -Dudev=false |
| 107 | + - -Dudev_kms=false |
| 108 | + - -Dsystemd_logind=false |
| 109 | + - -Dlibunwind=false |
| 110 | + - -Dxselinux=false |
| 111 | + - -Dsuid_wrapper=false |
| 112 | + - -Ddtrace=false |
| 113 | + - -Dlinux_apm=false |
| 114 | + - -Dlinux_acpi=false |
| 115 | + - -Ddocs=false |
| 116 | + - -Ddevel-docs=false |
| 117 | + - -Dxkb_dir={{prefix}}/share/X11/xkb |
| 118 | + - -Dxkb_output_dir={{prefix}}/var/lib/xkb |
| 119 | + - -Dint10=stub |
| 120 | + - -Ddri1=false # legacy DRI1, no consumers |
| 121 | + - -Ddri2=true |
| 122 | + - -Ddri3=true |
| 123 | + - -Dxf86-input-inputtest=false # test driver, not user-facing |
| 124 | + |
| 125 | +provides: |
| 126 | + - bin/Xorg |
| 127 | + |
| 128 | +test: |
| 129 | + # Xorg uses single-dash flags from the legacy X11 CLI tradition. |
| 130 | + # `-version` prints to stderr and exits non-zero on older builds, |
| 131 | + # so be lenient about the exit code; succeed if the X.Org Foundation |
| 132 | + # banner appears. |
| 133 | + - run: | |
| 134 | + out=$(Xorg -version 2>&1 || true) |
| 135 | + echo "$out" | head -10 |
| 136 | + echo "$out" | grep -qi "x.org x server" |
0 commit comments