Я работаю над своим первым пакетом lua, и я глубоко запутался, как назвать мои рокспеки и куда их поместить. Кажется, что каждый популярный пакет lua, на который я смотрю, работает с рокспеками по-разному. Это очень отличается, скажем, от Ruby, где у каждого драгоценного камня есть только один gemspec
. Вот некоторые примеры:
- lua-cliargs: одна спецификация в корне проекта (например,
lua_cliargs-3.0-1.rockspec
) - ldoc: одиночный спецификатор в корне проекта, названный
scm
вместо номера версии (например,ldoc-scm-2.rockspec
) - lua-MessagePack: несколько спецификаций с названиями версий, хранящихся в каталоге
rockspec/
верхнего уровня (например,lua-messagepack-0.1.0-1.rockspec
, ...lua-messagepack-0.3.4-1.rockspec
), за которыми следуют некоторые с дополнительной версией lua, вставленной перед версией пакета (например,lua-messagepack-lua53-0.3.6-1.rockspec
). Иногда для одной и той же версии пакета есть две рокспеки, одна содержит lua53, а другая нет. - luafilesystem: несколько спецификаций с названиями версий, хранящихся в каталоге
/rockspec
верхнего уровня (например,luafilesystem-1.3.0-1.rockspec
, .. .luafilesystem-1.6.1-1.rockspec
), за которыми следуют те, которые имеютcvs
вместо номера версии пакета, вставленного перед версией пакета (например,luafilesystem-cvs-1.rockspec
,luafilesystem-cvs-2.rockspec
). - lpeg: рокспек отсутствует вообще
- luasocket: одна спецификация в корне, содержащая
scm
вместо номера пакета (например,luasocket-scm-0.rockspec
), и каталог/rockspec
, содержащий одну спецификацию породы с номером пакета (например,luasocket-3.0rc2-1.rockspec
)
Теперь этот вопрос объясняет, почему есть "рабочий" файл рокспеков и отдельный каталог, полный релизных версий рокспеков, но у меня все еще есть несколько вопросов:
- Для чего нужны пересмотры Rockspec? В вики luarocks говорится, что выпуски пакетов должны быть помечены в git номером версии, а приведенный пример не включает версию Rockspec. Если моя спецификация находится в VCS, и я помечаю конкретную фиксацию, разве это не исправит рок-спецификации, включенные в эту фиксацию, и, следовательно, версию? Более поздняя версия Rockspec не может быть в помеченном коммите.
- Как
lpeg
может быть указано на luarocks, но не иметьrockspec
? - В вики luarocks сказано, что
scm
следует использовать вместо номера версии пакета, если вы хотите, чтобы ваш Rockspec ссылался на HEAD. Но посколькуHEAD
постоянно меняется, а в спецификации должны быть перечислены все файлы, может показаться, что необходимо постоянно увеличивать числоrevision
в спецификацииscm
, чтобы не отставать от любых добавленных или удаленных файлов. Можно было бы обойти это, вообще не используя номер версии дляscm
Rockspecs, и тем не менее те, которые я вижу, имеют низкие номера версии (например,ldoc-scm-2.rockspec
). Это ошибка? - Считаются ли какие-либо из приведенных выше примеров передовой практикой?