Introduction
Minix wishes to have a modern xorg port for various reasons. Modern
hardware support, changes submitted upstream, and clean pkgsrc
integration are three big ones. Pkgsrc integration with our current X
port is not so good - it's 'native' instead of 'modular.' See pkgsrc
for details. The current xorg in pkgsrc is older than the latest xorg.
This means this project involves 2 logical ports of Xorg to 2
different upstreams: first the pkgsrc versions ported, with patches
submitted to the pkgsrc database; and second the latest xorg version
ported with patches submitted to the xorg repository.
This page describes the requirements for a successful minix xorg port.
Technical subgoals
If necessary update the minix pkgsrc repository with the latest netbsd pkgsrc repository to get the latest Xorg package versions in the minix pkgsrc repository.
Server and client support: Port all software (server, libraries, drivers, clients, i.e. applications) from the xorg distribution, and port or implement any necessary dependencies. Also xterm. The current minix X port may be of assistance. This work must be based on the xorg package versions that are currently in pkgsrc. As noted in the introduction, these are older than the current latest Xorg release. Afterwards also the current Xorg trunk.
Provide a clean integration with pkgsrc: this means changing the Xorg server type in pkgsrc to 'modular' (i.e. X11_TYPE=modular
; that configuration switch was already done recently) and verifying that packages that depend on X pick up your port as a dependency cleanly.
The port must be submittable upstream and maintainable, and will therefore have to be clean - minimal changes to original code and neatly guarded by #if __minix
or similar if appropriate.
Hardware drivers: will require a clean minix interface for the libpciaccess in xorg.
For the video drivers, only the ones required to be tested and found working are the ones for nvidia cards, vmware, vbox and kvm, and the virtual framebuffer.
All extensions are expected to work too, unless they rely on hardware features not provided by the required video driver list above
For the input drivers, they will have to talk to the new /dev/kbdmux and /dev/mousemux. These provide USB codes. In contrast, the current minix !X11R6 port gets PC/AT codes from the (now removed) /dev/kbd and /dev/kbdaux.
All other Xorg software must build and work.
If threads are required, using devel/pth as a libpthread implementation is OK, if it works reliably.
Less-technical Notes and Upstreaming
Implementing and integrating kernel mode switching for minix is not required.
If a hard-to-satisfy dependency is encountered (e.g. requiring kernel level threads) then this work is not necessarily part of porting Xorg. This is left up to judgement of AST.
Submit your Minix-specific changes to the pkgsrc repository after review by the Minix team (also cooperate with Thomas Cort as he is a minix & pkgsrc team member)
Submit your Minix-specific changes to be included in the Xorg repository after review by the Minix team. This means re-porting/rebasing the pkgsrc-version release port to the current trunk of development of xorg.
This obsoletes the minix/x11 package.
Test
The test we use to see whether the port is satisfactory is: build the Xorg port on current minix; try the Xorg port on vmware, vbox, kvm, and an nvidia card; configure and start the server; and try xterm, xeyes, xrdb, twm, xsetroot, xv, xpdf and a client that exercises the asynchronous access protocol, i.e. XCB, e.g. the awesome window manager starting with version 3.0.