When upgrading to slotted versions of dev-lang/lua, common files like (not exhaustive): /usr/bin/lua /usr/lib/pkgconfig/lua.pc /usr/lib/liblua.so /usr/include/lua.h are no longer installed, and will not be available until the user manually runs `eselect lua`. There is no message to inform the user of this. The slotted lua ebuilds should call `eselect lua` to set a valid lua in pkg_postinst(). Preferably this should be done in a way that preserves any previsously eselected lua, perhaps by adding an --if-unset option to `eselect lua update`. occam ~ # emerge -pvq lua:5.1 lua:5.2 eselect-lua [ebuild R ] app-admin/eselect-lua-1 [ebuild R ] dev-lang/lua-5.1.5-r100 USE="deprecated readline -emacs -static" ABI_X86="32 (64) (-x32)" [ebuild R ] dev-lang/lua-5.2.3-r1 USE="deprecated readline -emacs -static" ABI_X86="32 (64) (-x32)"
There is a big issue with the eselect of lua: It does not work ;) I currently have the following problem with awesome: * I have set lua to 5.2 via eselect * awesome fails in cmake as /usr/include/lua/lua.h is version 5.2 * I then specified -DLUA_INCLUDE_DIR (and -DLUA_LIBRARIES) in cmake args which went fine until linkage... * linkage broke because actually there still was a <lua/lua.h> header around in /usr/include (which is in the default header search path) which points to lua5.2! Many undefined references occur to lua_tonumberx, lua_rawlen, ... which are new in lua5.2, declared in lu5.2/lua.h (now /usr/include/lua.h!!!) but can't be found in liblua5.1.so. IMHO the only sane approach is to create a new lua.eclass which halps handling different lua versions, just like python eclasses do. I would help, though I never created an eclass myself...
This is fixed. All slotted lua ebuilds run `eselect set --if-unset ${PN}${SLOT}` in pkg_postinst.