Mail archive

[alpine-devel] Avoiding bloat for Lua 5.1/5.2 modules

From: Natanael Copa <>
Date: Tue, 31 Dec 2013 12:07:58 +0100


I am a bit in doubt how to handle the Lua modules and 5.1 and 5.2 compat.

I originally wanted to have lua5.1-<module> and lua5.2-<module>
packages because that would allow us to avoid bloat. You could have a
pure lua5.2 system.

I am not so sure anymore.

What I wanted:
* separate arch specific modules (compiled C code) for 5.1 and 5.2 so
  we don't get both installed unless wanted. Example: lua-filesystem.
* join arch agnostic lua modules (pure lua modules) and use symlinks
  for 5.1/5.2 compat. Since they normally support both 5.1 and 5.2 the
  code itself is identical. Rather than install 2 copies of same lua
  code, we want use symlinks. Example: lua-penlight.
* the lua-<module> (without lua version) should pull in both
  lua5.1-module and lua5.2-module. (or pull in the "current" lua
  version of the module)

Now, this becomes a bit compilcated when dealing with dependencies.
Lets take the example with lua-penlight and lua-filesystem.

Since lua-penlight is a pure lua module and supports both 5.1 and 5.2
we want use symlinks. So lua5.1-penlight is just a symlink to
lua5.2-penlight. However, if lua5.1-penlight depends on lua5.2-penlight
it will also pull in the lua5.2-penlight dependency lua5.2-filesystem -
which we don't want for lua5.1-penlight.

I think we have the following options:

1) Continue try avoid bloat and have a common package without dependency:

   * lua5.1-filesystem: has lua 5.1 module

   * lua5.2-filesystem: had lua 5.2 module

   * lua-filesystem: depends on lua5.1-filesystem and

   * lua-penlight-common: has the .lua files but does not depend on
                          lua-filesystem. in it self not useful. (maybe
                          install the .lua files to /usr/share/lua/common)

   * lua5.1-penlight: depends on lua-penlight-common and
                          lua5.1-filesystem. It has symlinks to the
                          files provided by lua-penlight-common.

   * lua5.2-penlight: depends on lua-penlight-common and
                          lua5.2-filesystem. (might have symlinks too)

   * lua-penlight: depends on lua5.1-penlight and lua5.2-penlight.

   This means 7(!) packages for 2 Lua modules.

2) We embrace the bloat and always ship both lua 5.1 and 5.2 in same
   package (like Debian does):

   * lua-filesystem: ships both 5.1 and 5.2 modules.

   * lua-penlight: ships both 5.1 and 5.2 modues and depends only

   This is way simpler, but will mean that you will always get the
   moduels for both lua versions, regardless if you use both or not (I
   assume you normally only will want run one version of Lua). This
   means bloat.

What do you think? We keep it 'simple' and accept the bloat, or we make
it 'complicated' to avoid the bloat?

Some things to keep in mind: we have many more C modules (arch
specific) modules than noarch (pure Lua) modules.


Received on Tue Dec 31 2013 - 12:07:58 UTC