【发布时间】:2017-04-15 12:50:04
【问题描述】:
我正在开发我的第一个 lua 包,我对如何命名我的 rockspec(s) 以及将它们放在哪里感到非常困惑。我看到的每个流行的 lua 包似乎都以不同的方式处理 rockspecs。这与 Ruby 非常不同,Ruby 中的每个 gem 都只有一个 gemspec。以下是一些示例:
-
lua-cliargs:项目根目录中的单个rockspec,(例如
lua_cliargs-3.0-1.rockspec) -
ldoc:项目根目录中的单个 Rockspec,以
scm命名而不是版本号(例如ldoc-scm-2.rockspec) -
lua-MessagePack:多个以版本命名的rockspecs 存储在顶级
rockspec/目录中(例如lua-messagepack-0.1.0-1.rockspec,...lua-messagepack-0.3.4-1.rockspec),然后是一些在包版本之前插入了额外的lua 版本(例如@ 987654335@)。有时,同一个包版本有两个 Rockspec,一个包含 lua53,一个不包含。 -
luafilesystem:多个以版本命名的rockspecs存储在顶级
/rockspec目录中(例如luafilesystem-1.3.0-1.rockspec,...luafilesystem-1.6.1-1.rockspec),后跟一些具有cvs而不是之前插入的包版本号软件包版本(例如luafilesystem-cvs-1.rockspec、luafilesystem-cvs-2.rockspec)。 - lpeg: 根本没有 Rockspec
-
luasocket:根目录中的一个rockspec 包含
scm而不是包号(例如luasocket-scm-0.rockspec),和一个/rockspec目录,其中包含一个带有包号的rockspec(例如@987654345 @)
现在,this question 解释了为什么会有一个“工作”的rockspec 文件和一个单独的目录,里面装满了发布版本的rockspec,但我还有几个问题:
- rockspec 修订版有何用途? luarocks wiki 说软件包发布应该在 git 中用版本号标记,它给出的示例不包括 rockspec 修订。如果我的 rockspec 在 VCS 中,并且我标记了一个特定的提交,那么这是否有效地修复了该提交中包含的 rockspec 以及版本? Rockspec 的后续修订不可能在标记的提交中。
-
lpeg怎么能在 luarocks 上列出但缺少rockspec? - luarocks wiki 说如果您希望您的 Rockspec 引用 HEAD,则应使用
scm代替软件包版本号。但由于HEAD不断变化,并且rockspec 必须列出所有文件,因此似乎需要不断增加scmrockspec 的revision编号以跟上任何添加或删除的文件.完全不使用scmrockspecs 的修订号可以解决这个问题,但我看到的修订号较低(例如ldoc-scm-2.rockspec)。这是一个错误吗? - 以上示例是否被视为最佳做法?
【问题讨论】: