6.7. Benutzung von X11

6.7.1. X.Org-Komponenten

Die X11-Implementierung, welche die Ports-Sammlung bereitstellt, ist X.Org. Wenn Ihre Applikation von X-Komponenten abhängt, listen Sie die benötigten Komponenten in USE_XORG auf. Als dies geschrieben wurde, wurden die folgenden Komponenten bereitgestellt:

bigreqsproto compositeproto damageproto dmx dmxproto evieproto fixesproto fontcacheproto fontenc fontsproto fontutil glproto ice inputproto kbproto libfs oldx printproto randrproto recordproto renderproto resourceproto scrnsaverproto sm trapproto videoproto x11 xau xaw xaw6 xaw7 xaw8 xbitmaps xcmiscproto xcomposite xcursor xdamage xdmcp xevie xext xextproto xf86bigfontproto xf86dgaproto xf86driproto xf86miscproto xf86rushproto xf86vidmodeproto xfixes xfont xfontcache xft xi xinerama xineramaproto xkbfile xkbui xmu xmuu xorg-server xp xpm xprintapputil xprintutil xpr oto xproxymngproto xrandr xrender xres xscrnsaver xt xtrans xtrap xtst xv xvmc xxf86dga xxf86misc xxf86vm.

Die aktuelle Liste finden Sie immer in /usr/ports/Mk/bsd.xorg.mk.

Das Mesa Projekt ist ein Versuch, eine freie OpenGL Implementierung bereitzustellen. Sie können eine Abhängigkeit von verschiedenen Komponenten diese Projektes in der Variable USE_GL spezifizieren. ouml;gliche Optionen sind: glut, glu, glw, glew, gl und linux. Für Abwärtskompatibilität gilt der Wert yes als glu.

Beispiel 6-1. Beispiel für USE_XORG

USE_XORG=   xrender xft xkbfile xt xaw
USE_GL=     glu

Viele Ports definieren USE_XLIB, was dafür sorgt, dass der Port von allen (rund 50) Bibliotheken abhängt. Diese Variable existiert, um Abwärtskompatibilität sicherzustellen (sie stammt noch aus der Zeit vor dem modularem X.Org), und sollte bei neuen Ports nicht mehr benutzt werden.

Tabelle 6-5. Variablen für Ports, die X benutzen

USE_XLIB Der Port benutzt die X-Bibliotheken. Soll nicht mehr verwendet werden - benutzen Sie stattdessen eine Liste von Komponenten in USE_XORG.
USE_X_PREFIX Soll nicht mehr benutzt werden, ist jetzt äquivalent zu USE_XLIB und kann einfach durch letzteres ersetzt werden.
USE_IMAKE Der Port benutzt imake. Impliziert USE_X_PREFIX.
XMKMF Ist auf den Pfad zu xmkmf gesetzt, wenn nicht in PATH. Vorgabe ist xmkmf -a.

Tabelle 6-6. Variablen bei Abhängigkeit von einzelnen Teilen von X11

X_IMAKE_PORT Ein Port, der imake und einige andere Werkzeuge, die zum Erstellen von X11 benutzt werden, bereitstellt.
X_LIBRARIES_PORT Ein Port, der die X11-Bibliotheken bereitstellt.
X_CLIENTS_PORT Ein Port, der X11-Clients bereitstellt.
X_SERVER_PORT Ein Port, der den X11-Server bereitstellt.
X_FONTSERVER_PORT Ein Port, der den Fontserver bereitstellt.
X_PRINTSERVER_PORT Ein Port, der den Printserver bereitstellt.
X_VFBSERVER_PORT Ein Port, der den virtuellen Framebuffer-Server bereitstellt.
X_NESTSERVER_PORT Ein Port, der einen nested X-Server bereitstellt.
X_FONTS_ENCODINGS_PORT Ein Port, der Kodierungen für Schriftarten bereitstellt.
X_FONTS_MISC_PORT Ein Port, der verschiedene Bitmap-Schriftarten bereitstellt.
X_FONTS_100DPI_PORT Ein Port, der 100dpi Bitmap-Schriftarten bereitstellt.
X_FONTS_75DPI_PORT Ein Port, der 75dpi Bitmap-Schriftarten bereitstellt.
X_FONTS_CYRILLIC_PORT Ein Port, der kyrillische Bitmap-Schriftarten bereitstellt.
X_FONTS_TTF_PORT Ein Port, der TrueType®-Schriftarten bereitstellt.
X_FONTS_TYPE1_PORT Ein Port, der Type1-Schriftarten bereitstellt.
X_MANUALS_PORT Ein Port, der entwicklerorientierte Manualpages bereitstellt.

Beispiel 6-2. Benutzung von X11-bezogenen Variablen in einem Port

# Port benutzt X11-Bibliotheken und hängt vom Font-Server sowie
# von kyrillischen Schriftarten ab.
RUN_DEPENDS=   ${LOCALBASE}/bin/xfs:${X_FONTSERVER_PORT} \
               ${LOCALBASE}/lib/X11/fonts/cyrillic/crox1c.pcf.gz:${X_FONTS_CYRILLIC_PORT}

USE_XORG=      x11 xpm

6.7.2. Ports, die Motif benötigen

Wenn Ihr Port eine Motif-Bibliothek benötigt, definieren Sie USE_MOTIF im Makefile. Die Standard-Motif-Implementierung ist x11-toolkits/open-motif. Benutzer können stattdessen x11-toolkits/lesstif wählen, indem Sie die WANT_LESSTIF-Variable setzen.

Die Variable MOTIFLIB wird von bsd.port.mk auf die entsprechende Motif-Bibliothek gesetzt. Bitte patchen Sie den Quelltext Ihres Ports, sodass er überall ${MOTIFLIB} benutzt, wo die Motif-Bibliothek im Original Makefile oder Imakefile referenziert wird.

Es gibt zwei verbreitete Fälle:

Anmerkung: MOTIFLIB expandiert (normalerweise) zu -L/usr/X11R6/lib -lXm oder /usr/X11R6/lib/libXm.a - d.h. Sie müssen kein -L oder -l davor einfügen.

6.7.3. X11 Schriftarten

Wenn Ihr Port Schriftarten für das X-Window-System installiert, legen Sie diese nach LOCALBASE/lib/X11/fonts/local.

6.7.4. Erzeugen eines künstlichen DISPLAY durch Xvfb

Manche Applikationen benötigen ein funktionierendes X11-Display, damit die Kompilierung funktioniert. Das stellt für Systeme, die ohne Display laufen, ein Problem dar. Wenn die folgende Variable benutzt wird, startet die Bauumgebung den virtuellen Framebuffer-X-Server, und ein funktionierendes DISPLAY wird dem Build übergeben.

USE_DISPLAY=  yes

6.7.5. Desktop-Einträge

Desktop-Einträge (Freedesktop Standard) können in Ihrem Port einfach über die DESKTOP_ENTRIES-Variable erzeugt werden. Diese Einträge erscheinen dann im Applikationsmenü von standardkonformen Desktop-Umgebungen wie GNOME oder KDE. Die .desktop-Datei wird dann automatisch erzeugt, installiert und der pkg-plist hinzugefügt. Die Syntax ist:

DESKTOP_ENTRIES=  "NAME" "COMMENT" "ICON" "COMMAND" "CATEGORY" StartupNotify

Die Liste der möglichen Kategorien ist auf der Freedesktop Webseite abrufbar. StartupNotify zeigt an, ob die Applikation den Status in Umgebungen, die Startup-Notifications kennen, löschen wird.

Beispiel:

DESKTOP_ENTRIES=  "ToME" "Roguelike game based on JRR Tolkien's work" \
	          "${DATADIR}/xtra/graf/tome-128.png" \
	          "tome -v -g" "Application;Game;RolePlaying;" \
	          false

Fragen zum FreeBSD Ports-System richten Sie bitte an <[email protected]>, Fragen zu diesem Dokument hingegen an <[email protected]>.