Skip to content

Commit 90b4761

Browse files
tannevaledclaude
andcommitted
new(x.org/xserver): X.Org X server
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) <noreply@anthropic.com>
1 parent 3246bb5 commit 90b4761

1 file changed

Lines changed: 136 additions & 0 deletions

File tree

projects/x.org/xserver/package.yml

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
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

Comments
 (0)