Эта глава описывает статус библиотек 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 |