什么是管理luarocks rockspec文件的好方法,为什么?
我正在研究我的第一个lua包,我对于我的rockpec(s)以及放置它们的位置感到非常困惑.我看到的每一个流行的lua包似乎都不同地处理了rockspecs.这与
Ruby非常不同,Ruby中每个宝石只有一个gemspec.这里有些例子:
> lua-cliargs:项目根目录中的单个rockspec(例如lua_cliargs-3.0-1.rockspec) 现在,this question解释了为什么一个人会有一个“工作”的rockspec文件和一个充满释放版本的rockspecs的单独目录,但我还有几个问题: >什么是rockspec修订版? luarocks wiki说包发布应该用git标记版本号,它给出的例子不包括rockspec修订版.如果我的rockspec在VCS中,并且我标记了一个特定的提交,那么这不能有效地修复该提交中包含的rockspec(s),因此版本?对于rockspec的后续修订不可能在标记的提交中. 解决方法
rockspec修订版是rockspec文件本身的版本.假设你发布了Foo 1.0版;你创建了一个rockspec foo-1.0-1.rockspec.后来你了解到要在FreeBSD中编译Foo 1.0,你需要传递一个额外的-D标志;源代码根本不需要任何更改.您编辑rockspec添加platform override section并将其重新提交到luarocks.org作为foo-1.0-2.rockspec.
是.但这不是问题,因为建造时使用的rockspec不是源分布中包含的. .src.rock文件是一个存档,包含提交的.rockspec文件和源代码tarball(如果rockspec使用SCM协议,如git://,则在子目录中的源检出). 实际上,这会导致鸡蛋和鸡蛋问题,因为当从Github手动检查标签v1.0时,Foo 1.0的最新版本不存在,但这不是预期的工作流程:当使用LuaRocks时,用户将通常使用luarocks安装foo;如果他们想要查看一个项目的岩石规格,他们要么在luarocks.org访问Foo的页面,要么他们会查看HEAD中存储的rockspecs,这是人们最先停下来的地方. 请注意,如果想要分发包含rockspec的源tarball然后想要在rockspec中设置tarball source.url及其相应的source.md5,则会发生类似的鸡与蛋的情况.拥有MD5意味着rockpec本身不能在tarball内部.解决它的一种方法是简单地避免source.md5字段,或者在打包tarball时跳过rockspec.这与在上游tarball中包含Linux发行包元数据的情况相同;这里更明显,因为上游和打包者往往是同一个人.
可能是因为这是一个罕见的情况,上游和打包者不是同一个人. Roberto Ierusalimschy发布了lpeg,但截至2016年12月,Gary Vaughan上传了其中的岩石.
这可能有很多原因,也可能是错误. >如果一个rockspec使用make builtin,那么当添加或删除文件时,scm rockspec可能不会改变;
客观地说,由于当运行luarocks时使用的rockspec文件安装foo是捆绑在.src.rock文件中的一个文件,与源档案分开存储,对于开源商店中源源树的确切位置没有重大的实际后果他们的岩石.这是个人组织的问题. 保持最新的scm rockspec在根部有一个小优势,如果想要从本地检出树进行构建,它会被luarocks自动拾取. 但只要使用luarocks upload foo将rockspecs上传到服务器,最终用户体验就会相同,无论源树中的rockspecs在哪里. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |