Эта глава описывает статус библиотек Lua в дереве портов и их интеграцию в систему портов.
Существует множество версий библиотек Lua и соответствующих интерпретаторов, конфликтующих между собой (устанавливают файлы под тем же именем). В дереве портов эта проблема решена путем установки каждой версии в собственное место с использованием номера версии в качестве суффикса.
Очевидным недостатком этого является необходимость изменения каждого приложения для нахождения искомой версии. Но это решается добавлением некоторых дополнительных флагов для компилятора и компоновщика.
Для того, чтобы заставить ваш порт использовать конкретную версию Lua, существует две доступные для определения переменные (если определена только одна, то вторая примет значение по умолчанию):
Переменная | Описание | Значение по умолчанию |
---|---|---|
USE_LUA | Перечень версий, которые порт может использовать | Все доступные версии |
USE_LUA_NOT | Перечень версий, которые порт не может использовать | Пусто |
Перечень доступных версий Lua и соответствующих портов в дереве:
Переменные из Таблица 6.34, «Переменные для выбора версии Lua» могут иметь комбинации из одного или нескольких значений, разделенных пробелом:
Описание | Пример |
---|---|
Единичная версия | 4.0 |
Восходящий диапазон | 5.0+ |
Нисходящий диапазон | 5.0- |
Полный диапазон (обязан быть восходящим) | 5.0-5.1 |
Кроме того, существует несколько переменных для выбора предпочитаемых версий из перечня доступных. Они могут быть установлены в несколько версий, первая из которых будет иметь наибольший приоритет.
Название | Предназначение |
---|---|
WANT_LUA_VER | порт |
WITH_LUA_VER | пользователь |
Следующий фрагмент взят из порта, который использует
Lua версий 5.0
или 5.1
, по умолчанию 5.0
.
Значение может быть переопределено пользователем с использованием
переменной WITH_LUA_VER
.
Существуют другие приложения, которые хотя и не являются
библиотеками Lua, но относятся к ним.
Эти приложения можно указать в переменной
LUA_COMPS
. Доступны следующие компоненты:
Название | Описание | Ограничение версии |
---|---|---|
lua | Основная библиотека | нет |
tolua | Библиотека доступа к коду C/C++ | 4.0-5.0 |
ruby | Привязка к Ruby | 4.0-5.0 |
Есть и другие компоненты, но они относятся к модулям для интерпретатора и не используются приложениями (только другими модулями).
Тип зависимости можно выбрать для каждого компонента через добавление суффикса, отделенного точкой с запятой. В случае отсутствия будет использован тип по умолчанию (смотрите Таблица 6.40, «Типы зависимости Lua, используемые по умолчанию»). Доступные следующие типы:
Название | Описание |
---|---|
build | Компонент требуется для построения, эквивалентен
BUILD_DEPENDS |
run | Компонент требуется для запуска, эквивалентен
RUN_DEPENDS |
lib | Компонент требуется для построения и запуска,
эквивалентен LIB_DEPENDS |
Значения по умолчанию для компонентов подробно рассматриваются в следующей таблице:
Компонент | Тип зависимости |
---|---|
lua | lib для 4.0-5.0
(динамическая) и build для
5.1 (статическая) |
tolua | build (статическая) |
ruby | lib (динамическая) |
Следующий фрагмент соответствует порту, использующему
Lua версии 4.0
и привязку к Ruby.
Для обнаружения установленной версии вам необходимо задать
переменную WANT_LUA
. Если вы не присвоите ей
определенную версию, то компоненты получат суффикс версии.
Переменная HAVE_LUA
будет заполнена после
обнаружения.
Следующий фрагмент можно использовать для порта, использующего Lua, если она установлена, или был выбран соответствующий параметр.
Следующий фрагмент можно использовать для порта, который
включает поддержку tolua, если
такой компонент установлен, или был выбран соответствующий
параметр в дополнение к Lua, оба
имеют версию 4.0
.
Следующие переменные доступны в порту (после определения одной из переменных из Таблица 6.34, «Переменные для выбора версии 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 |
Следующий фрагмент показывает, как сообщить порту, который использует сценарий configure, где расположены заголовочные файлы и библиотеки Lua.
Если вам нужно использовать переменные для запуска команд сразу
после подключения bsd.port.pre.mk
, для этого
вам нужно определить переменную LUA_PREMK
.
Если вы задаете LUA_PREMK
, то версия,
зависимости, компоненты и уже заданные переменные не будут
изменены, в случае если вы изменили переменные порта
Lua после
подключения bsd.port.pre.mk
.
Следующий фрагмент иллюстрирует использование
LUA_PREMK
посредством запуска
интерпретатора Lua для того, чтобы
получить строку с полной версией, сохранить ее в переменную
и передать программе.
Переменные Lua можно безопасно
использовать в командах внутри целей без необходимости в
использовании LUA_PREMK
.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.