On 21 March 2016 at 16:40, Stefano <phd.s...@gmail.com> wrote: > On 20 March 2016 at 02:44, Hisham <h...@hisham.hm> wrote: >> >> Hi Stefano, thanks for chiming in! >> >> Your work on ULua is awesome (really polished website, and I >> definitely appreciate the work that must have gone in setting up >> AutoBuild). You are using LuaRocks itself to build the binaries, >> right? At least that's what it looks like from the stdout output of >> builds. > > > Yes, I use LuaRocks to build rocks that are then converted to ULua packages. > >> >> Any chance you could run `luarocks pack` in the end and >> produce binary .rock files? Then it would be just a matter of putting >> them all in a single directory, run `luarocks-admin make-manifest` >> there, and put them in a web server. > > > Yes, I can do that, I assume the usage would be `luarocks pack rock` for the > just installed rock right? > Is there a way to have the command output the packed rock directly in a > specified folder? > >> >> >> Do you have any stats on how many of the AutoBuild modules are >> pure-Lua (.all.rock) and how many are binaries (.os-arch.rock)? > > > Sorry, there is no immediate way for me to compute these stats as I don't > save this info explicitly. > >> >> As for the coverage of packages supported by AutoBuild, I believe it >> could easily go up if two restrictions were relaxed: supporting the >> LuaRocks version comparison algorithm rather than semver[1], > > > I am not giving up semver (the lengthy explanation would be off-topic here) > but it seems not too complicated to write a function that "sanitise" the > version strings currently found on the official LuaRocks repo, like > stripping leading 'v' chars and such. > Then I could pre-process the repo file and all the rockspecs with this > find&replace logic. > I actually had this implemented initially but dropped it as not that many > packages failed that way and the complications seemed not worth it. > >> >> and not >> considering module subdirectories to be conflicts (e.g. copas.timer >> (copas/timer.lua) is marked as conflicting with copas (copas.lua)). I >> don't know if you're willing to lift those restrictions for ULua, but >> for building LuaRocks packages at least, I think it would make sense. > > > The case where it's not a real conflict (as copas) it's actually supported, > I create "bundles" (like the resty one). > However, I need to list these cases one-by-one: I define a pattern that > matches all the rock names that goes into a bundle for each bundle. > A list of these would be helpful is someone is interested in contributing, > right now we have: > "^dromozoa%-" > "^metalua" > "^org%.conman" > "^lua%-resty" > > Then there is the case of real conflicts, like json or path, that are > essentially unsolvable.
It is possible to detect all these non-real-conflict cases mechanically: for every conflicting name, if the rock contains a directory with the name of a module (e.g. copas/ ) but this directory does not contain init.lua, then it's not a conflict, it's just the part of a longer path (copas/timer.lua -> copas.timer). This will work for all cases listed above, and it won't be necessary to maintain a list anymore. > In any case, yes, I could build the rocks anyway even when they are not > packable as ULua packages. > >> >> >> On supporting external dependencies: this seems logistically >> complicated (especially given multiple platforms). How do you envision >> doing it? I guess this could be more easily achievable with support >> from module authors themseves (e.g. if in a future rockspec format we >> allowed them to point to native packages that would fulfill the >> dependencies — but then again, how to do this on Windows). > > > Very briefly, the plan is as follows: have a simple script for Linux/OSX > (bash only) and Windows (cmd only) that builds the sources. I got confused at this point: building what, the external dependencies themselves? > Usually these are quite short and stable across new releases. > Env variables are used to pass the directory where the source is and where > the compiled stuff should go. > Tools like `otool -L`, `readelf -d` are used to check dependency on only C > runtime or already added libraries. Is there an equivalent for Windows? > Git API is used to check periodically for new releases (tags), and when > present the build is repeated on all 6 OS-arch combinations (like in > AutoBuild, the infrastructure is there already). > Of course this is a high-level description and the work required is > non-trivial. > For this I would need at least two collaborators (one for Unix, one for > Windows) that actually go through the task of writing all these scripts and > possibly helping with the system itself as well. > > OR, the new LuaRocks spec actually takes care of this and problem solved ;) If there was a way to map external dependencies to OS packages in rockspecs (or an off-rockspec master list), would that be enough, maybe? (e.g. if we have a list saying that whenever OPENSSL is required as an external dependency in a rockspec, this means the openssl package in Homebrew, the libssl-dev package in Debian, etc. — side question: could Nuget be the "OS package manager" for this purpose on Windows?) -- Hisham ------------------------------------------------------------------------------ Transform Data into Opportunity. Accelerate data analysis in your applications with Intel Data Analytics Acceleration Library. Click to learn more. http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140 _______________________________________________ Luarocks-developers mailing list Luarocks-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/luarocks-developers