Эта глава описывает статус библиотек Lua в дереве портов и их интеграцию в систему портов.
Существует множество версий библиотек Lua и соответствующих интерпретаторов, конфликтующих между собой (устанавливают файлы под тем же именем). В дереве портов эта проблема решена путем установки каждой версии в собственное место с использованием номера версии в качестве суффикса.
Очевидным недостатком этого является необходимость изменения каждого приложения для нахождения искомой версии. Но это решается добавлением некоторых дополнительных флагов для компилятора и компоновщика.
Для того, чтобы заставить ваш порт использовать конкретную версию Lua, существует две доступные для определения переменные (если определена только одна, то вторая примет значение по умолчанию):
Таблица 6-34. Переменные для выбора версии Lua
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
| USE_LUA | Перечень версий, которые порт может использовать | Все доступные версии |
| USE_LUA_NOT | Перечень версий, которые порт не может использовать | Пусто |
Перечень доступных версий Lua и соответствующих портов в дереве:
Переменные из Табл. 6-34 могут иметь комбинации из одного или нескольких значений, разделенных пробелом:
Таблица 6-36. Определение версии Lua
| Описание | Пример |
|---|---|
| Единичная версия | 4.0 |
| Восходящий диапазон | 5.0+ |
| Нисходящий диапазон | 5.0- |
| Полный диапазон (обязан быть восходящим) | 5.0-5.1 |
Кроме того, существует несколько переменных для выбора предпочитаемых версий из перечня доступных. Они могут быть установлены в несколько версий, первая из которых будет иметь наибольший приоритет.
Существуют другие приложения, которые хотя и не являются библиотеками Lua, но относятся к ним. Эти приложения можно указать в переменной LUA_COMPS. Доступны следующие компоненты:
Таблица 6-38. Доступные компоненты Lua
| Название | Описание | Ограничение версии |
|---|---|---|
| lua | Основная библиотека | нет |
| tolua | Библиотека доступа к коду C/C++ | 4.0-5.0 |
| ruby | Привязка к Ruby | 4.0-5.0 |
Замечание: Есть и другие компоненты, но они относятся к модулям для интерпретатора и не используются приложениями (только другими модулями).
Тип зависимости можно выбрать для каждого компонента через добавление суффикса, отделенного точкой с запятой. В случае отсутствия будет использован тип по умолчанию (смотрите Табл. 6-40). Доступные следующие типы:
Таблица 6-39. Доступные типы зависимости Lua
| Название | Описание |
|---|---|
| build | Компонент требуется для построения, эквивалентен BUILD_DEPENDS |
| run | Компонент требуется для запуска, эквивалентен RUN_DEPENDS |
| lib | Компонент требуется для построения и запуска, эквивалентен LIB_DEPENDS |
Значения по умолчанию для компонентов подробно рассматриваются в следующей таблице:
Для обнаружения установленной версии вам необходимо задать переменную WANT_LUA. Если вы не присвоите ей определенную версию, то компоненты получат суффикс версии. Переменная HAVE_LUA будет заполнена после обнаружения.
Пример 6-12. Обнаружение установленных версий и компонентов Lua
Следующий фрагмент можно использовать для порта, использующего Lua, если она установлена, или был выбран соответствующий параметр.
WANT_LUA= yes .include <bsd.port.pre.mk> .if defined(WITH_LUA5) || !empty(PORT_OPTIONS:MLUA5) || !empty(HAVE_LUA:Mlua-5.[01]) USE_LUA= 5.0-5.1 CONFIGURE_ARGS+=--enable-lua5 .endif
Следующий фрагмент можно использовать для порта, который включает поддержку tolua, если такой компонент установлен, или был выбран соответствующий параметр в дополнение к Lua, оба имеют версию 4.0.
USE_LUA= 4.0 LUA_COMPS= lua WANT_LUA= 4.0 .include <bsd.port.pre.mk> .if defined(WITH_TOLUA) || !empty(PORT_OPTIONS:MTOLUA) || !empty(HAVE_LUA:Mtolua) LUA_COMPS+= tolua CONFIGURE_ARGS+=--enable-tolua .endif
Следующие переменные доступны в порту (после определения одной из переменных из Табл. 6-34).
Таблица 6-41. Переменные, определенные для портов, использующих Lua
| Название | Описание |
|---|---|
| LUA_VER | Версия Lua, которая будет использоваться (например, 5.1) |
| LUA_VER_SH | Старший номер версии динамической библиотеки Lua (например, 1) |
| LUA_VER_STR | Версия Lua без точки (например, 51) |
| LUA_PREFIX | Префикс, в который установлена Lua (и компоненты) |
| LUA_SUBDIR | Каталог под ${PREFIX}/bin, ${PREFIX}/share и ${PREFIX}/lib, в который установлена Lua |
| LUA_INCDIR | Каталог, в который установлены заголовочные файлы Lua и tolua |
| LUA_LIBDIR | Каталог, в который установлены библиотеки Lua и tolua |
| LUA_MODLIBDIR | Каталог, в который установлены модули библиотеки Lua (.so) |
| LUA_MODSHAREDIR | Каталог, в который установлены модули Lua (.lua) |
| LUA_PKGNAMEPREFIX | Префикс с именем пакета, используемый модулями Lua |
| LUA_CMD | Путь к интерпретатору Lua |
| LUAC_CMD | Путь к компилятору Lua |
| TOLUA_CMD | Путь к программе tolua |
Если вам нужно использовать переменные для запуска команд сразу после подключения bsd.port.pre.mk, для этого вам нужно определить переменную LUA_PREMK.
Важно: Если вы задаете LUA_PREMK, то версия, зависимости, компоненты и уже заданные переменные не будут изменены, в случае если вы изменили переменные порта Lua после подключения bsd.port.pre.mk.
Пример 6-14. Использование переменных Lua в командах
Следующий фрагмент иллюстрирует использование LUA_PREMK посредством запуска интерпретатора Lua для того, чтобы получить строку с полной версией, сохранить ее в переменную и передать программе.
USE_LUA= 5.0
LUA_PREMK= yes
.include <bsd.port.pre.mk>
.if exists(${LUA_CMD})
VER_STR!= ${LUA_CMD} -v
CFLAGS+= -DLUA_VERSION_STRING="${VER_STR}"
.endif
Замечание: Переменные Lua можно безопасно использовать в командах внутри целей без необходимости в использовании LUA_PREMK.
| Пред. | Начало | След. |
| Использование wxWidgets | Уровень выше | Использование Xfce |