Re: Luarocks framework in pkgsrc
Thomas Klausner <[email protected]> Mon, 7 Apr 2014 13:07:27 +0200
| Newsgroups | gmane.os.netbsd.devel.pkgsrc.wip.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Kamil!
Thanks for this interesting email.
I think tech-pkg is a better audience for this, can you please resend there?
Thanks,
Thomas
On Sat, Apr 05, 2014 at 12:24:13PM +0200, Kamil Rytarowski wrote:
> Hello,
>
> Many Lua packages [1] are maintained through the Luarocks [2] framework.
>
> The packages provide .rockspec, in a json format, that contain all important information to:
> 1) present information, license, project website,
> 2) fetch sources,
> 3) present Lua dependencies against Lua generation (currently mostly 5.1, 5.2) and other packages,
> 4) build and install information in a declarative way.
>
> One of the examples for cosmo-14.03.04 [3]:package = "Cosmo"
>
> version = "14.03.04-1"
>
> description = {
> summary = "Safe templates for Lua",
> detailed = [[
> Cosmo is a "safe templates" engine. It allows you to fill nested templates,
> providing many of the advantages of Turing-complete template engines,
> without without the downside of allowing arbitrary code in the templates.
> ]],
> license = "MIT/X11",
> homepage = "http://cosmo.luaforge.net"
> }
>
> dependencies = { "lpeg >= 0.9" }
>
> source = {
> url = "http://www.keplerproject.org/files/cosmo-14.03.04.tar.gz"
> }
>
> build = {
> type = "builtin",
> modules = {
> cosmo = "src/cosmo.lua",
> ["cosmo.fill"] = "src/cosmo/fill.lua",
> ["cosmo.grammar"] = "src/cosmo/grammar.lua",
> },
> copy_directories = { "doc", "samples", "tests" }
> }
>
>
> This implies the fact that venerable Makefiles are partly abandoned, they need patching to handle Lua version and Lua directories.
>
> My goal is to add set of Lua packages to pkgsrc and the primary goal was to add Sputnik. However the configure (in bash format) files and the Makefiles fired from ambush with all their hardcoded parts, missing files in Makefile, etc [4]...
>
> Lua packages are usually little depending upon system and they install libraries in a format of .lua, .so, documentation and examples.
>
> Possible solutions to add the missing packages to pkgsrc:
> 1) Rework upstream configure and Makefiles (and try to upstream them with pull-requests)
> 2) Add a compatibility layer of .luarocks used in pkgsrc, that extracts rules from .rocks shipped with packages
> 3) Add luarocks2pkg that generates packages's files for pkgsrc (DESCR, PLIST, Makefile..)
> 4) Leave it as it is and use luarocks the upstream way, not managed in pkgsrc
>
> What solution is the best? Assuming that:
> 1:
> + No need to introduce changes in the infrastructure of pkgsrc
> + Slowly lower maintaince efforts pushing patches upstream
> - Nobody assumes that things won't be broken again
> - We will be probably the single vendor using Makefiles
>
> 2:
> + Little effort to add new Lua modules
> + Lower maintaince cost of maintaining Lua modules, automatic updates synced with upstream
> - Add new piece to the infrastructure that needs maintainership
> - Need to design and implement a no-code-generation (at least producing files) way to handle the .rocks
> ? No directly static information of a package, what's that and what it needs to run (?)
>
> 3:
> + Reduce cost of maintainership of Lua packages in pkgsrc
> + No need to introduce changes in the infrastructure
> - Need to use additional tools to generage pkgsrc packages
> - No ready to use wrapper over .rocks, need to regenerate files
>
> 4:
> + no cost of doing anything
> - fiasco, delay of problems
> - manage duplicated packages with duplicated managers (pkgsrc, upstream system distribution, luarocks)
>
> What solution from 1-3 would be the most pkgsrc-way?
>
> Personally, I like (2), however I don't know whether it's possible to do it a clean way with no-code-generation? So the problems bring an alternative with (3), where (1) is just a monkey work -- with high constant cost of maintaince.
>
> Please show me the right design how to do it for pkgsrc.
>
> With kind regards,
>
> [1] http://luarocks.org/repositories/rocks/
> [2] http://luarocks.org/
> [3] http://luarocks.org/repositories/rocks/cosmo-14.03.04-1.rockspec
> [4] https://github.com/mascarenhas/cosmo/blob/master/configure https://github.com/mascarenhas/cosmo/blob/master/Makefile
>
> ------------------------------------------------------------------------------
> _______________________________________________
> pkgsrc-wip-discuss mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/pkgsrc-wip-discuss
>
------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees_APR