6.7. Использование X11

6.7.1. Компоненты X.Org

X.Org является реализацией X11, доступной в Коллекции Портов. Если ваше приложение зависит от компонентов X, установите в переменную USE_XORG в перечень требуемых компонентов. К настоящему времени доступными компонентами являются:

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.

Всегда актуальный перечень можно найти в /usr/ports/Mk/bsd.xorg.mk.

Проект Mesa является попыткой обеспечить свободную реализацию OpenGL. Вы можете указать зависимость от различных компонентов этого проекта при помощи переменной USE_GL. Действительные опции: glut, glu, glw, glew, gl и linux. Для обратной совместимости значение yes соответствует glu.

Пример 6-1. Пример для USE_XORG

USE_XORG=   xrender xft xkbfile xt xaw
USE_GL=     glu

Многие порты определяют USE_XLIB, которая делает порт зависимым ото всех 50 или около того библиотек. Эта переменная существует для обратной совместимости, т.к. предшествует модульному X.Org, и не должна использоваться в новых портах.

Таблица 6-5. Переменные для портов, использующих X

USE_XLIB Порт использует библиотеки X. Является устаревшим - используйте вместо этого список компонентов X.Org в переменной USE_XORG.
USE_IMAKE Порт использует imake.
USE_X_PREFIX Является устаревшим. Сейчас это эквивалентно USE_XLIB и может быть свободно им заменено.
XMKMF Задаётся маршрут до xmkmf, если он отсутствует в переменной окружения PATH. По умолчанию это xmkmf -a.

Таблица 6-6. Переменные, определяющие зависимости от отдельных частей X11

X_IMAKE_PORT Порт, предоставляющий imake и несколько других утилит, используемых при построении X11.
X_LIBRARIES_PORT Порт, предоставляющий библиотеки X11.
X_CLIENTS_PORT Порт, предоставляющий клиентов X.
X_SERVER_PORT Порт, предоставляющий сервер X.
X_FONTSERVER_PORT Порт, предоставляющий сервер шрифтов.
X_PRINTSERVER_PORT Порт, предоставляющий сервер печати.
X_VFBSERVER_PORT Порт, предоставляющий сервер виртуального фреймбуфера.
X_NESTSERVER_PORT Порт, предоставляющий вложенный сервер X.
X_FONTS_ENCODINGS_PORT Порт, предоставляющий кодировки для шрифтов.
X_FONTS_MISC_PORT Порт, предоставляющий прочие растровые шрифты.
X_FONTS_100DPI_PORT Порт, предоставляющий 100dpi растровые шрифты.
X_FONTS_75DPI_PORT Порт, предоставляющий 75dpi растровые шрифты.
X_FONTS_CYRILLIC_PORT Порт, предоставляющий кириллические растровые шрифты.
X_FONTS_TTF_PORT Порт, предоставляющий шрифты TrueType®.
X_FONTS_TYPE1_PORT Порт, предоставляющий шрифты Type1.
X_MANUALS_PORT Порт, предоставляющий страницы справочника, предназначенные для разработчиков.

Пример 6-2. Использование переменных X11 в порте

# Use some X11 libraries and depend on
# font server as well as cyrillic fonts.
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. Порты, которым требуется Motif

Если вашему порту требуется Motif, задайте переменную USE_MOTIF в файле Makefile. Реализация Motif, используемая по умолчанию, находится в x11-toolkits/open-motif. Пользователи вместо этого могут выбрать x11-toolkits/lesstif через установку переменной WANT_LESSTIF.

Переменная MOTIFLIB будет установлена в bsd.port.mk, чтобы ссылаться на соответствующую библиотеку Motif. Пожалуйста, измените исходные тексты вашего порта на использование ${MOTIFLIB} везде, где упоминается библиотека Motif, в первоначальном Makefile или Imakefile.

Существует два общих случая:

Заметьте, что переменная MOTIFLIB (как правило) раскрывается в -L/usr/X11R6/lib -lXm или /usr/X11R6/lib/libXm.a, так что нет нужды впереди добавлять -L или -l.

6.7.3. Шрифты для X11

Если ваш порт устанавливает шрифты для X Window System, поместите их в каталог LOCALBASE/lib/X11/fonts/local.

6.7.4. Получение поддельного DISPLAY, используя Xvfb

Некоторые приложения для успешной компиляции требуют наличие работающего дисплея X11. Это создает проблему для машин, которые работают в режиме headless. При использовании следующего канонического хака инфраструктура построения запустит сервер X в виртуальном фреймбуфере. Затем переменная работающего DISPLAY передается при построении.

USE_DISPLAY=  yes

6.7.5. Элементы рабочего стола

Элементы рабочего стола (стандарта Freedesktop) можно легко создавать в вашем порту, используя переменную DESKTOP_ENTRIES. Эти элементы отображаются в меню приложений таких окружений рабочего стола, как GNOME или KDE. Будет автоматически создан, установлен и добавлен в pkg-plist файл .desktop. Синтакс:

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

Перечень возможных категорий доступен на вебсайте Freedesktop. StartupNotify отобразит, очистит ли приложение статус в окружении, поддерживающем уведомления о запуске.

Пример:

DESKTOP_ENTRIES=  "ToME" "Roguelike game based on JRR Tolkien's work" \
                  "${DATADIR}/xtra/graf/tome-128.png" \
                  "tome -v -g" "Application;Game;RolePlaying;" \
                  false
По вопросам связанным с системой портов для FreeBSD, пишите по адресу <ports@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите по адресу <doc@FreeBSD.org>.