Install this version:
emerge -a =dev-lang/lua-5.5.1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =dev-lang/lua-5.5.1
Or alternatively:
emerge --autounmask-write -a =dev-lang/lua-5.5.1
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 5.5.1 | 8 | ~amd64 | 5.5 |
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit flag-o-matic optfeature toolchain-funcs
DESCRIPTION="A powerful light-weight programming language designed for extending applications"
HOMEPAGE="https://www.lua.org/"
SRC_URI="https://www.lua.org/ftp/${P}.tar.gz"
LICENSE="MIT"
SLOT="5.5"
KEYWORDS="~amd64"
IUSE="+deprecated readline"
DEPEND="readline? ( sys-libs/readline:= )"
RDEPEND="
${DEPEND}
>=app-eselect/eselect-lua-3
!dev-lang/lua:0
"
src_prepare() {
default
# Use Gentoo's prefix and multilib-aware module directory.
sed -e 's|#define LUA_ROOT.*|#define LUA_ROOT\t"/usr/"|' \
-e "s|#define LUA_CDIR.*|#define LUA_CDIR\t\"/usr/$(get_libdir)/lua/\" LUA_VDIR \"/\"|" \
-i src/luaconf.h || die
}
src_configure() {
append-cppflags -DLUA_USE_POSIX -DLUA_USE_DLOPEN
use deprecated && append-cppflags -DLUA_COMPAT_MATHLIB
use readline && append-cppflags -DLUA_USE_READLINE
}
src_compile() {
local -a system_libs=( -Wl,-E -ldl )
use readline && system_libs+=( -lreadline )
emake -C src all \
CC="$(tc-getCC)" \
AR="$(tc-getAR) rcu" \
RANLIB="$(tc-getRANLIB)" \
MYCFLAGS="${CFLAGS} ${CPPFLAGS} -fPIC" \
MYLDFLAGS="${LDFLAGS}" \
CPPFLAGS= \
SYSCFLAGS= \
SYSLDFLAGS= \
SYSLIBS="${system_libs[*]}"
local libname="liblua${SLOT}.so"
$(tc-getCC) ${LDFLAGS} -shared \
-Wl,-soname,"${libname}.0" \
-o "src/${libname}.0.0.0" \
-Wl,--whole-archive src/liblua.a -Wl,--no-whole-archive \
-lm -ldl || die "failed to link the shared library"
ln -s "${libname}.0.0.0" "src/${libname}" || die
ln -s "${libname}.0.0.0" "src/${libname}.0" || die
$(tc-getCC) ${CFLAGS} ${LDFLAGS} -o "src/lua${SLOT}" \
src/lua.o -Lsrc -Wl,-rpath-link,"${S}/src" -l"lua${SLOT}" \
"${system_libs[@]}" -lm || die "failed to link lua"
# luac uses private VM symbols that Lua deliberately hides from its ABI.
# Keep upstream's statically linked compiler instead of exporting them.
mv src/luac "src/luac${SLOT}" || die
}
src_test() {
LD_LIBRARY_PATH="${S}/src" "src/lua${SLOT}" -e \
'assert(_VERSION == "Lua 5.5")' || die "interpreter test failed"
printf 'return 42\n' | "src/luac${SLOT}" -p - || \
die "compiler test failed"
}
src_install() {
dobin "src/lua${SLOT}" "src/luac${SLOT}"
local libname="liblua${SLOT}.so"
dolib.so "src/${libname}.0.0.0"
dosym "${libname}.0.0.0" "/usr/$(get_libdir)/${libname}.0"
dosym "${libname}.0.0.0" "/usr/$(get_libdir)/${libname}"
insinto "/usr/include/lua${SLOT}"
doins src/{lua.h,luaconf.h,lualib.h,lauxlib.h,lua.hpp}
newman doc/lua.1 "lua${SLOT}.1"
newman doc/luac.1 "luac${SLOT}.1"
dodoc README
docinto html
dodoc doc/*.{css,html,png}
local pc_file="${T}/lua${SLOT}.pc"
cat > "${pc_file}" <<-EOF || die
prefix=/usr
exec_prefix=\${prefix}
libdir=\${exec_prefix}/$(get_libdir)
includedir=\${prefix}/include/lua${SLOT}
datarootdir=\${prefix}/share
datadir=\${datarootdir}
Name: Lua
Description: An Extensible Extension Language
Version: ${PV}
Libs: -L\${libdir} -llua${SLOT}
Libs.private: -lm -ldl
Cflags: -I\${includedir}
# information required by lua-utils.eclass::_lua_export
INSTALL_LMOD=\${datadir}/lua/${SLOT}
INSTALL_CMOD=\${libdir}/lua/${SLOT}
EOF
insinto "/usr/$(get_libdir)/pkgconfig"
doins "${pc_file}"
}
pkg_postinst() {
eselect lua set --if-unset "${PN}${SLOT}"
optfeature "Lua support for Emacs" app-emacs/lua-mode
}
Manage flags for this package:
euse -i <flag> -p dev-lang/lua |
euse -E <flag> -p dev-lang/lua |
euse -D <flag> -p dev-lang/lua
readline? ( sys-libs/readline:= )
readline? ( sys-libs/readline:= ) >=app-eselect/eselect-lua-3 !dev-lang/lua:0
| Type | File | Size | Source URLs |
|---|---|---|---|
| DIST | lua-5.5.1.tar.gz | 398643 bytes | https://www.lua.org/ftp/lua-5.5.1.tar.gz |