Index: MOVED
===================================================================
--- MOVED
+++ MOVED
@@ -14519,6 +14519,18 @@
 databases/py-pypuppetdb03|databases/py-pypuppetdb|2020-04-01|Has expired: Use databases/py-pypuppetdb instead
 www/py-puppetboard02|www/py-puppetboard|2020-04-01|Has expired: Use www/py-puppetboard instead
 www/py-puppetboard03|www/py-puppetboard|2020-04-01|Has expired: Use www/py-puppetboard instead
+archivers/lua51-zlib|archivers/lua-zlib@lua51|2020-04-01|Switched to use flavors
+audio/lua51-mpd|audio/lua-mpd@lua51|2020-04-01|Switched to use flavors
+converters/lua51-iconv|converters/lua-iconv@lua51|2020-04-01|Switched to use flavors
+devel/lua51-bitop|devel/lua-bitop@lua51|2020-04-01|Switched to use flavors
+devel/lua51-cjson|devel/lua-cjson@lua51|2020-04-01|Switched to use flavors
+devel/lua51-libevent|devel/lua-libevent@lua51|2020-04-01|Switched to use flavors
+devel/luafilesystem-51|devel/luafilesystem@lua51|2020-04-01|Switched to use flavors
+net/lualdap-51|net/lualdap@lua51|2020-04-01|Switched to use flavors
+net/luasocket-51|net/luasocket@lua51|2020-04-01|Switched to use flavors
+net/luasocket-53|net/luasocket@lua53|2020-04-01|Switched to use flavors
+security/luasec-51|security/luasec@lua51|2020-04-01|Switched to use flavors
+textproc/luaexpat-51|textproc/luaexpat@lua51|2020-04-01|Switched to use flavors
 net/librsync2|net/librsync|2020-04-02|Remove PKGNAMESUFFIX 3 years after librsync removal
 lang/beignet|lang/intel-compute-runtime|2020-04-02|Has expired: Deprecated upstream, use lang/intel-compute-runtime
 devel/rubygem-cucumber-tag_expressions|devel/rubygem-cucumber-tag-expressions|2020-04-04|Renamed by upstream
Index: Mk/Uses/lua.mk
===================================================================
--- Mk/Uses/lua.mk
+++ Mk/Uses/lua.mk
@@ -5,16 +5,101 @@
 # MAINTAINER: ports@FreeBSD.org
 # Usage:
 #
-# USES+=	lua[:version]
+# USES+=	lua[:options,...]
+#
+# Options:
+#
+#   NN    (e.g. 52)  - specify an allowed Lua version (can use multiple times)
+#   NN+   (e.g. 52+) - specify a minimum Lua version (discouraged)
+#   -NN   (e.g. -53) - specify a maximum allowed version
+#   NN-NN (e.g. 51-53) - specify a range of allowed versions
+#
+#   flavors	define FLAVOR / FLAVORS as luaNN from the allowed versions
+#
+#   noflavors	don't use flavors
+#
+#   module	(implies flavors) specifies that the port is a Lua module
+#		(i.e. that it installes files in MODLIBDIR etc.)
+#
+#   build	add dependency to BUILD_DEPENDS instead of LIB_DEPENDS
+#   run		add dependency to RUN_DEPENDS instead of LIB_DEPENDS
+#
+#   env		define only the LUA_* vars and add them to PLIST_SUB and
+#		MAKE_ENV, do not add dependencies or other global state
+#
+#   core	for building Lua itself
+#
+# If more than one version is allowed, then the LUA_DEFAULT version
+# (as set in DEFAULT_VERSIONS) is chosen if it is allowed, otherwise
+# the highest allowed version is chosen. But if "flavors" was requested,
+# and FLAVOR is set, we use that version.
+#
+# LUA_FLAVOR is defined to the desired flavor whether or not "flavors" was
+# selected; ports should use this to specify the flavor of dependencies
+# which are Lua modules or otherwise Lua-flavored.
+#
+# It's not generally expected that applications that embed Lua, or apps
+# written in Lua, would use USES=lua:flavors. Given that Lua is lightweight
+# and does not carry around a whole lot of module ecosystem with it, it is
+# best that application ports simply specify the Lua version or range of
+# versions that they support, and let the default one or the latest one be
+# used. However, they should still use LUA_FLAVOR as needed when specifying
+# dependencies.
 #
 .if !defined(_INCLUDE_USES_LUA_MK)
 _INCLUDE_USES_LUA_MK=	yes
 
 # When adding a version, please keep the comment in
 # Mk/bsd.default-versions.mk in sync.
-_LUA_VALID_VERSIONS=	53 52 51
+_LUA_VALID_VERSIONS:=	53 52 51
+.if defined(_LUA_EXTRA_VER)
+_LUA_VALID_VERSIONS+= ${_LUA_EXTRA_VER}
+.endif
+
+_LUA_DEFAULT_VERSION:=	${LUA_DEFAULT:S/.//}
+
+# args
+_LUA_ARG_FLAVORS:=
+_LUA_ARG_MODULE:=
+_LUA_ARG_ENV:=
+_LUA_ARG_CORE:=
+.if ${lua_ARGS:Mmodule}
+_LUA_ARG_FLAVORS:=yes
+_LUA_ARG_MODULE:=yes
+.endif
+.if ${lua_ARGS:Mflavors}
+_LUA_ARG_FLAVORS:=yes
+.endif
+.if ${lua_ARGS:Mnoflavors}
+_LUA_ARG_FLAVORS:=
+.endif
+.if ${lua_ARGS:Menv}
+_LUA_ARG_ENV:=yes
+.endif
+.if ${lua_ARGS:Mcore}
+_LUA_ARG_CORE:=yes
+_LUA_ARG_ENV:=yes
+_LUA_ARG_FLAVORS:=
+_LUA_ARG_MODULE:=
+.endif
+
+# core is for building Lua itself, so it overrides all version checks
+.if ${_LUA_ARG_CORE}
+
+_LUA_WANTED_VERSION:=${lua_ARGS:M[1-9][0-9]:[1]}
+
+.  if ${lua_ARGS:M[1-9][0-9]:[#]} != 1
+IGNORE= USES=lua:core must also specify exactly one version number
+# set to avoid spurious errors below
+_LUA_WANTED_VERSION:=${_LUA_DEFAULT_VERSION}
+.  endif
+
+_LUA_VALID_VERSIONS:=${_LUA_WANTED_VERSION}
+_LUA_WANTED_VERSIONS:=${_LUA_WANTED_VERSION}
+_LUA_DEFAULT_VERSION:=${_LUA_WANTED_VERSION}
+
+.endif # _LUA_ARG_CORE
 
-_LUA_DEFAULT_VERSION=	${LUA_DEFAULT:S/.//}
 .if ! ${_LUA_VALID_VERSIONS:M${_LUA_DEFAULT_VERSION}}
 IGNORE=	Invalid lua version ${LUA_DEFAULT}
 .endif
@@ -22,89 +107,164 @@
 #
 # Parse a ver+ argument
 #
-.if ${lua_ARGS:M*+}
-_LUA_MIN_VERSION:=	${lua_ARGS:M*+:S/+//}
+.if ${lua_ARGS:M??+}
+_LUA_MIN_VERSION:=	${lua_ARGS:M??+:S/+//}
+_LUA_MAX_VERSION:=	99
+.endif
+
 #
-# Resolve minimum versions (ver+). Append anything greater or equal than the
-# specified minimum version to the list of wanted versions.
+# Parse a -ver argument
 #
-.  for _v in ${_LUA_VALID_VERSIONS}
-.    if ${_LUA_MIN_VERSION} <= ${_v}
+.if ${lua_ARGS:M-??}
+_LUA_MAX_VERSION:=	${lua_ARGS:M-??:S/-//}
+_LUA_MIN_VERSION:=	0
+.endif
+
+#
+# Parse a ver-ver argument
+#
+.if ${lua_ARGS:M??-??}
+_LUA_MIN_VERSION:=	${lua_ARGS:M??-??:C/-.*//}
+_LUA_MAX_VERSION:=	${lua_ARGS:M??-??:C/.*-//}
+.endif
+
+#
+# Parse one or more ver arguments
+#
+.if ${lua_ARGS:M[1-9][0-9]}
+.  for _v in ${lua_ARGS:M[1-9][0-9]}
+.    if ${_LUA_VALID_VERSIONS:M${_v}}
 _LUA_WANTED_VERSIONS+=${_v}
 .    endif
 .  endfor
+.  if empty(_LUA_WANTED_VERSIONS)
+IGNORE= USES=lua:nn did not find any valid version number
+.  endif
 .endif
 
 #
-# Parse one or more ver arguments
+# Resolve version ranges. Append anything within the range to the list of
+# wanted versions.
 #
-.if ${lua_ARGS:M5[1-3]}
-_LUA_WANTED_VERSIONS:=	${lua_ARGS:M5[1-3]}
+.if defined(_LUA_MIN_VERSION) && defined(_LUA_MAX_VERSION)
+.  for _v in ${_LUA_VALID_VERSIONS}
+.    if ${_LUA_MIN_VERSION} <= ${_v} && ${_LUA_MAX_VERSION} >= ${_v}
+_LUA_WANTED_VERSIONS+=${_v}
+.    endif
+.  endfor
+.  if empty(_LUA_WANTED_VERSIONS)
+IGNORE= USES=lua:xx-yy did not find any valid version
+.  endif
 .endif
 
 #
-# If no version was specified with any of the ver or ver+ arguments, set the
-# default version.
+# If no version was specified with any of the ver or ver+ arguments, allow
+# all versions.
 #
-.if !defined(_LUA_WANTED_VERSIONS)
-_LUA_WANTED_VERSIONS=	${_LUA_DEFAULT_VERSION}
+.if empty(_LUA_WANTED_VERSIONS)
+_LUA_WANTED_VERSIONS:=	${_LUA_VALID_VERSIONS}
 .endif
 
 #
-# Right now we have built a list of potential versions that we may depend on.
-# Let's sort them and remove any duplicates. We then locate the highest one
-# already installed, if any.
+# By now, _LUA_WANTED_VERSIONS is the list of valid version numbers that the
+# caller has allowed through. We want to put the default version, if it's in
+# the list, first, followed by all other versions in desc order; then the
+# first element is the one we want (or the default flavor in the flavor case)
 #
-.for _v in ${_LUA_WANTED_VERSIONS:O:u}
-_LUA_HIGHEST_VERSION:=${_v}
-.  if exists(${LOCALBASE}/bin/lua${_v})
-_LUA_HIGHEST_INSTALLED_VERSION:=	${_v}
+_LUA_WANTED_VERSIONS:= \
+	${_LUA_WANTED_VERSIONS:M${_LUA_DEFAULT_VERSION}} \
+	${_LUA_WANTED_VERSIONS:N${_LUA_DEFAULT_VERSION}:O:u:[-1..1]}
+
+.if ${_LUA_ARG_FLAVORS}
+.  if empty(FLAVORS)
+FLAVORS= ${_LUA_WANTED_VERSIONS:S/^/lua/}
 .  endif
-.endfor
+.  if empty(FLAVOR)
+FLAVOR= ${FLAVORS:[1]}
+.  endif
+_LUA_WANTED_VERSION:= ${FLAVOR:S/^lua//}
+.else
+_LUA_WANTED_VERSION:= ${_LUA_WANTED_VERSIONS:[1]}
+.endif
 
+# If we're building Lua itself, everything should be in $PREFIX. If
+# we're building a module or app, then the stuff we're installing goes
+# in $PREFIX but references to Lua itself are in $LOCALBASE.
 #
-# Depend on the default version if it fits, or the highest installed version,
-# or the highest version.
-#
-.if ${_LUA_WANTED_VERSIONS:M${_LUA_DEFAULT_VERSION}}
-_LUA_WANTED_VERSION:=	${_LUA_DEFAULT_VERSION}
-.elif defined(_LUA_HIGHEST_INSTALLED_VERSION)
-_LUA_WANTED_VERSION:=	${_LUA_HIGHEST_INSTALLED_VERSION}
+# The assumption is the LUA_MOD* directories are where we're going to
+# install (this is common for both modules and apps), and so we also
+# define LUA_REFMOD* relative to LOCALBASE for use when specifying
+# dependencies and so on.
+
+.if ${_LUA_ARG_CORE}
+LUA_BASE=${PREFIX}
 .else
-_LUA_WANTED_VERSION:=	${_LUA_HIGHEST_VERSION}
+LUA_BASE=${LOCALBASE}
 .endif
 
+LUA_PREFIX=${PREFIX}
+
 #
 # Exported variables
 #
 LUA_VER_STR=		${_LUA_WANTED_VERSION}
-LUA_VER=		${_LUA_WANTED_VERSION:S/5/5./}
-LUA_CMD=		lua${_LUA_WANTED_VERSION}
-LUAC_CMD=		luac${_LUA_WANTED_VERSION}
-LUA_INCDIR=		${LOCALBASE}/include/lua${_LUA_WANTED_VERSION}
-LUA_MODLIBDIR=		${LOCALBASE}/lib/lua/${LUA_VER}
-LUA_MODSHAREDIR=	${LOCALBASE}/share/lua/${LUA_VER}
-LUA_LIBDIR=		${LOCALBASE}/lib
+LUA_VER=		${_LUA_WANTED_VERSION:S/^5/5./}
+LUA_FLAVOR=		${_LUA_WANTED_VERSION:S/^/lua/}
+
+LUA_CMD=		lua${LUA_VER_STR}
+LUAC_CMD=		luac${LUA_VER_STR}
 LUA_PKGNAMEPREFIX=	lua${LUA_VER_STR}-
 
-PLIST_SUB+=	LUA_MODLIBDIR=${LUA_MODLIBDIR:S,^${LOCALBASE}/,,} \
-		LUA_MODSHAREDIR=${LUA_MODSHAREDIR:S,^${LOCALBASE}/,,} \
+LUA_LIBDIR=		${LUA_BASE}/lib
+LUA_INCDIR=		${LUA_BASE}/include/lua${LUA_VER_STR}
+
+LUA_MODLIBDIR=		${LUA_PREFIX}/lib/lua/${LUA_VER}
+LUA_MODSHAREDIR=	${LUA_PREFIX}/share/lua/${LUA_VER}
+LUA_MODDOCSDIR=		${LUA_PREFIX}/share/doc/lua${LUA_VER_STR}
+LUA_MODEXAMPLESDIR=	${LUA_PREFIX}/share/examples/lua${LUA_VER_STR}
+
+LUA_REFMODLIBDIR=	${LUA_BASE}/lib/lua/${LUA_VER}
+LUA_REFMODSHAREDIR=	${LUA_BASE}/share/lua/${LUA_VER}
+
+PLIST_SUB+=	LUA_MODLIBDIR=${LUA_MODLIBDIR:S,^${LUA_PREFIX}/,,} \
+		LUA_MODSHAREDIR=${LUA_MODSHAREDIR:S,^${LUA_PREFIX}/,,} \
+		LUA_MODDOCSDIR=${LUA_MODDOCSDIR:S,^${LUA_PREFIX}/,,} \
+		LUA_INCDIR=${LUA_INCDIR:S,^${LUA_BASE}/,,} \
+		LUA_LIBDIR=${LUA_LIBDIR:S,^${LUA_BASE}/,,} \
 		LUA_VER=${LUA_VER} \
-		LUA_INCDIR=${LUA_INCDIR:S,^${LOCALBASE}/,,} \
-		LUA_LIBDIR=${LUA_LIBDIR:S,^${LOCALBASE}/,,} \
 		LUA_VER_STR=${LUA_VER_STR}
 MAKE_ENV+=	LUA_MODLIBDIR=${LUA_MODLIBDIR} \
 		LUA_MODSHAREDIR=${LUA_MODSHAREDIR} \
-		LUA_VER=${LUA_VER} \
+		LUA_MODDOCSDIR=${LUA_MODDOCSDIR} \
 		LUA_INCDIR=${LUA_INCDIR} \
-		LUA_LIBDIR=${LUA_LIBDIR}
+		LUA_LIBDIR=${LUA_LIBDIR} \
+		LUA_VER=${LUA_VER} \
+		LUA_VER_STR=${LUA_VER_STR}
+
+# if building a module or Lua itself, or if the port defined LUA_DOCSUBDIR,
+# then define LUA_DOCSDIR and LUA_EXAMPLESDIR too
+.if ${_LUA_ARG_CORE} || ${_LUA_ARG_MODULE}
+LUA_DOCSUBDIR?=${PORTNAME}
+.endif
+.if !empty(LUA_DOCSUBDIR)
+LUA_DOCSDIR=	${LUA_MODDOCSDIR}/${LUA_DOCSUBDIR}
+LUA_EXAMPLESDIR=${LUA_MODEXAMPLESDIR}/${LUA_DOCSUBDIR}
+PLIST_SUB+=	LUA_DOCSDIR=${LUA_DOCSDIR:S,^${LUA_PREFIX}/,,}
+PLIST_SUB+=	LUA_EXAMPLESDIR=${LUA_EXAMPLESDIR:S,^${LUA_PREFIX}/,,}
+MAKE_ENV+=	LUA_DOCSDIR=${LUA_DOCSDIR}
+MAKE_ENV+=	LUA_EXAMPLESDIR=${LUA_EXAMPLESDIR}
+.endif
 
-.if ${lua_ARGS:Mbuild}
+.if empty(_LUA_ARG_ENV)
+.  if ${lua_ARGS:Mbuild}
 BUILD_DEPENDS+=	${LUA_CMD}:lang/lua${LUA_VER_STR}
-.elif ${lua_ARGS:Mrun}
+.  endif
+.  if ${lua_ARGS:Mrun}
 RUN_DEPENDS+=	${LUA_CMD}:lang/lua${LUA_VER_STR}
-.else
+.  endif
+.  if !${lua_ARGS:Mbuild} && !${lua_ARGS:Mrun}
 LIB_DEPENDS+=	liblua-${LUA_VER}.so:lang/lua${LUA_VER_STR}
+.  endif
 .endif
 
 .endif
Index: archivers/Makefile
===================================================================
--- archivers/Makefile
+++ archivers/Makefile
@@ -71,7 +71,7 @@
     SUBDIR += lizard
     SUBDIR += lrzip
     SUBDIR += lua-lzlib
-    SUBDIR += lua51-zlib
+    SUBDIR += lua-zlib
     SUBDIR += lzfse
     SUBDIR += lzip
     SUBDIR += lziprecover
Index: archivers/lua-lzlib/Makefile
===================================================================
--- archivers/lua-lzlib/Makefile
+++ archivers/lua-lzlib/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	lzlib
 PORTVERSION=	0.4.3
+PORTREVISION=	1
 CATEGORIES=	archivers
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -10,7 +11,7 @@
 
 LICENSE=	MIT
 
-USES=		cmake lua
+USES=		cmake lua:51-52,module
 USE_GITHUB=	yes
 GH_ACCOUNT=	LuaDist
 CMAKE_ARGS=	-DINSTALL_LMOD="${LUA_MODSHAREDIR}" \
Index: archivers/lua-zlib/Makefile
===================================================================
--- archivers/lua-zlib/Makefile
+++ archivers/lua-zlib/Makefile
@@ -3,9 +3,10 @@
 
 PORTNAME=	zlib
 PORTVERSION=	1.2
+PORTREVISION=	1
 DISTVERSIONPREFIX=v
 CATEGORIES=	archivers
-PKGNAMEPREFIX=	lua51-
+PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
 MAINTAINER=	sirl33tname@gmail.com
 COMMENT=	Simple streaming interface to zlib for the Lua Programming Language
@@ -16,7 +17,7 @@
 GH_ACCOUNT=	brimworks
 GH_PROJECT=	lua-zlib
 
-USES=		lua:51
+USES=		lua:51,module
 
 ALL_TARGET=	bsd
 MAKE_ENV+=	LUAPATH="${LOCALBASE}"
Index: astro/celestia/Makefile
===================================================================
--- astro/celestia/Makefile
+++ astro/celestia/Makefile
@@ -15,7 +15,7 @@
 
 LIB_DEPENDS=	libpng.so:graphics/png
 
-USES=		compiler:c++11-lang gettext gl gmake jpeg libtool lua pkgconfig
+USES=		compiler:c++11-lang gettext gl gmake jpeg libtool lua:52 pkgconfig
 USE_GL=		gl
 GNU_CONFIGURE=	yes
 EXTRA_PATCHES=	${FILESDIR}/celestia-1.6.1-lua-5.2.patch:-p1 \
Index: audio/Makefile
===================================================================
--- audio/Makefile
+++ audio/Makefile
@@ -461,7 +461,7 @@
     SUBDIR += lollypop
     SUBDIR += lpac
     SUBDIR += lsp-plugins-lv2
-    SUBDIR += lua51-mpd
+    SUBDIR += lua-mpd
     SUBDIR += luppp
     SUBDIR += lv2
     SUBDIR += lv2file
Index: audio/aqualung/Makefile
===================================================================
--- audio/aqualung/Makefile
+++ audio/aqualung/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	aqualung
 PORTVERSION=	1.0
-PORTREVISION=	13
+PORTREVISION=	14
 CATEGORIES=	audio
 MASTER_SITES=	SF
 
@@ -30,7 +30,7 @@
 		libcdio_paranoia.so:sysutils/libcdio-paranoia \
 		liblrdf.so:textproc/liblrdf
 
-USES=		compiler:c++11-lang gettext gnome localbase lua pkgconfig
+USES=		compiler:c++11-lang gettext gnome localbase lua:52 pkgconfig
 USE_GNOME=	gtk20 libxml2 libxslt
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--with-ifp=no
Index: audio/lua-mpd/Makefile
===================================================================
--- audio/lua-mpd/Makefile
+++ audio/lua-mpd/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	mpd
 PORTVERSION=	0.1
+PORTREVISION=	1
 DISTVERSIONPREFIX=	v
 CATEGORIES=	audio
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -9,15 +10,15 @@
 MAINTAINER=	demelier.david@gmail.com
 COMMENT=	Lua library for musicpd
 
-RUN_DEPENDS=	${LUA_MODLIBDIR}/socket/core.so:net/luasocket-51
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/socket/core.so:net/luasocket@${LUA_FLAVOR}
 
 OPTIONS_DEFINE=	DOCS
-DOCSDIR=	${PREFIX}/share/doc/${PKGBASE}
+DOCSDIR=	${LUA_DOCSDIR}
 
 GH_ACCOUNT=	silentbicycle
 GH_PROJECT=	lua-mpd
 
-USES=		lua:51
+USES=		lua:51,module
 USE_GITHUB=	yes
 NO_BUILD=	yes
 
Index: converters/Makefile
===================================================================
--- converters/Makefile
+++ converters/Makefile
@@ -49,7 +49,6 @@
     SUBDIR += linux-c7-fribidi
     SUBDIR += lua-iconv
     SUBDIR += lua-json
-    SUBDIR += lua51-iconv
     SUBDIR += mimelib
     SUBDIR += mmencode
     SUBDIR += mpack
Index: converters/lua-iconv/Makefile
===================================================================
--- converters/lua-iconv/Makefile
+++ converters/lua-iconv/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	iconv
 PORTVERSION=	7
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	converters
 MASTER_SITES=	GHC
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -13,13 +13,11 @@
 COMMENT=	Iconv binding for Lua 5
 
 BROKEN=		unfetchable
-DEPRECATED=	Broken for more than 6 months
-EXPIRATION_DATE=	2020-05-05
 
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-USES=		pkgconfig iconv lua
+USES=		pkgconfig iconv lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	ittner
Index: converters/lua-json/Makefile
===================================================================
--- converters/lua-json/Makefile
+++ converters/lua-json/Makefile
@@ -3,17 +3,18 @@
 
 PORTNAME=	json
 PORTVERSION=	1.3.4
+PORTREVISION=	1
 CATEGORIES=	converters
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
 MAINTAINER=	sunpoet@FreeBSD.org
 COMMENT=	JSON parser/creator for Lua
 
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}lpeg>=0.8.1:devel/lua-lpeg
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}lpeg>=0.8.1:devel/lua-lpeg@${LUA_FLAVOR}
 
 MAKE_ARGS=	INSTALL_CMOD=${LUA_MODLIBDIR} INSTALL_LMOD=${LUA_MODSHAREDIR}
 NO_ARCH=	yes
-USES=		lua:run
+USES=		lua:run,module
 
 GH_ACCOUNT=	harningt
 GH_PROJECT=	lua${PORTNAME}
Index: converters/lua51-iconv/distinfo
===================================================================
--- converters/lua51-iconv/distinfo
+++ /dev/null
@@ -1,2 +0,0 @@
-SHA256 (lua-iconv-7.tar.gz) = c1db1915c754b5cfe7e45af61467bc6dfa4f0037d281ccbce6b53c974e2faf09
-SIZE (lua-iconv-7.tar.gz) = 7693
Index: converters/lua51-iconv/pkg-descr
===================================================================
--- converters/lua51-iconv/pkg-descr
+++ /dev/null
@@ -1,3 +0,0 @@
-LuaIconv is a Lua binding to iconv library.
-
-WWW: http://luaforge.net/projects/lua-iconv/
Index: databases/lua-lsqlite3/Makefile
===================================================================
--- databases/lua-lsqlite3/Makefile
+++ databases/lua-lsqlite3/Makefile
@@ -3,6 +3,7 @@
 
 PORTNAME=	lsqlite3
 PORTVERSION=	0.9.5
+PORTREVISION=	1
 CATEGORIES=	databases
 MASTER_SITES=	http://Lua.SQLite.org/index.cgi/zip/
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -15,30 +16,20 @@
 
 BUILD_DEPENDS=	${NONEXISTENT}:databases/sqlite3:patch
 
-USES=		localbase:ldflags sqlite:3 zip
+USES=		localbase:ldflags sqlite:3 zip lua:module
 
 OPTIONS_DEFINE=	DOCS EXAMPLES
-OPTIONS_SINGLE=	LUA_VERSION
-OPTIONS_SINGLE_LUA_VERSION=	LUA51 LUA52 LUA53
-OPTIONS_DEFAULT=LUA${LUA_DEFAULT:S/.//}
-
-LUA51_DESC=	Build for Lua 5.1 and LuaJIT
-LUA51_USES=	lua:51
-LUA52_DESC=	Build for Lua 5.2
-LUA52_USES=	lua:52
-LUA53_DESC=	Build for Lua 5.3
-LUA53_USES=	lua:53
 
 CFLAGS+=	-pedantic -Wall -Qunused-arguments -fPIC -DPIC\
 		-std=c99 -fno-strict-aliasing -I${LUA_INCDIR}\
 		-DLSQLITE_VERSION=\"${PORTVERSION}\"
 LDFLAGS+=	-shared -pthread -lm -L${LOCALBASE}/lib
 
-DOCSDIR=	${PREFIX}/share/doc/lua${LUA_VER_STR}/${PORTNAME}
-EXAMPLESDIR=	${PREFIX}/share/examples/lua${LUA_VER_STR}/${PORTNAME}
+DOCSDIR=	${LUA_DOCSDIR}
+EXAMPLESDIR=	${LUA_EXAMPLESDIR}
 
 pre-configure:
-	@${CP} -p `${MAKE} -V WRKSRC -C ${PORTSDIR}/databases/sqlite3`/sqlite3.[ch] ${WRKSRC}
+	@${CP} -p `${SETENV} -u FLAVOR ${MAKE} -V WRKSRC -C ${PORTSDIR}/databases/sqlite3`/sqlite3.[ch] ${WRKSRC}
 
 do-build:
 	cd ${WRKSRC} &&\
Index: databases/lua-xapian/Makefile
===================================================================
--- databases/lua-xapian/Makefile
+++ databases/lua-xapian/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	xapian
 PORTVERSION=	1.4.15
 DISTVERSIONPREFIX=	bindings-
+PORTREVISION=	1
 CATEGORIES=	databases
 MASTER_SITES=	https://oligarchy.co.uk/xapian/${PORTVERSION}/ \
 		LOCAL/sunpoet
@@ -24,7 +25,9 @@
 
 PORTSCOUT=	limitw:1,even
 
-USES=		compiler:c++11-lang libtool lua tar:xz
+USES=		compiler:c++11-lang libtool lua:module tar:xz
+
+DOCSDIR=	${LUA_DOCSDIR}
 
 CONFIGURE_ARGS=	--datarootdir=${DATADIR} \
 		--docdir=${DOCSDIR} \
Index: databases/luadbi/Makefile
===================================================================
--- databases/luadbi/Makefile
+++ databases/luadbi/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	luadbi
 PORTVERSION=	0.6
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	databases
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -12,7 +13,7 @@
 
 LICENSE=	MIT
 
-USES=		gmake shebangfix
+USES=		gmake shebangfix lua:module
 SHEBANG_FILES=	DBI.lua
 
 USE_GITHUB=	yes
@@ -30,18 +31,12 @@
 
 MAKE_JOBS_UNSAFE=yes
 
-OPTIONS_SINGLE=	LUA_VERSION
-OPTIONS_SINGLE_LUA_VERSION=	LUA51 LUA52 LUA53
 OPTIONS_MULTI=	DATABASE
 OPTIONS_MULTI_DATABASE=	MYSQL SQLITE3 PGSQL
-OPTIONS_DEFAULT=	MYSQL LUA52
+OPTIONS_DEFAULT=	MYSQL
 
 PLIST_FILES=	%%LUA_MODSHAREDIR%%/DBI.lua
 
-LUA51_USES=	lua:51
-LUA52_USES=	lua:52
-LUA53_USES=	lua:53
-
 MYSQL_USES=		mysql
 MYSQL_ALL_TARGET=	mysql
 MYSQL_PLIST_FILES=	%%LUA_MODLIBDIR%%/dbd/mysql.so
Index: databases/luasql-mysql/Makefile
===================================================================
--- databases/luasql-mysql/Makefile
+++ databases/luasql-mysql/Makefile
@@ -3,8 +3,10 @@
 
 PORTNAME=	luasql
 PORTVERSION=	2.5.0
+PORTREVISION=	1
 CATEGORIES=	databases
 PKGNAMESUFFIX=	-${LUASQL_DRIVER}
+PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
 MAINTAINER=	mbeis@xs4all.nl
 COMMENT=	LuaSQL driver
@@ -14,7 +16,7 @@
 USE_GITHUB=	yes
 GH_ACCOUNT=	keplerproject
 
-USES=		lua gmake dos2unix
+USES=		lua:module gmake dos2unix
 DOS2UNIX_FILES=	src/*.c
 ALL_TARGET=	${LUASQL_DRIVER}
 
@@ -30,8 +32,7 @@
 
 CFLAGS+=	-Wno-return-type
 
-PLIST_SUB=	LUA_MIDLIBDIR=${LUA_MODLIBDIR} \
-		LUASQL_DRIVER=${LUASQL_DRIVER}
+PLIST_SUB=	LUASQL_DRIVER=${LUASQL_DRIVER}
 
 .if ${LUASQL_DRIVER} == "mysql"
 COMMENT=	Lua interface to MySQL
Index: databases/redis-devel/Makefile
===================================================================
--- databases/redis-devel/Makefile
+++ databases/redis-devel/Makefile
@@ -31,7 +31,7 @@
 
 JEMALLOC_MAKE_ENV=	USE_JEMALLOC=yes
 
-LUA_USE=		lua=51
+LUA_USES=		lua:51
 LUA_EXTRA_PATCHES=	${PATCHDIR}/extra-patch-src-Makefile.lua
 LUA_VARS=		_addflags=true
 
Index: databases/xapian-bindings/Makefile
===================================================================
--- databases/xapian-bindings/Makefile
+++ databases/xapian-bindings/Makefile
@@ -17,7 +17,7 @@
 
 USES=		metaport
 
-LUA_RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}xapian>=${PORTVERSION}:databases/lua-xapian
+LUA_RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}xapian>=${PORTVERSION}:databases/lua-xapian@${LUA_FLAVOR}
 LUA_USES=		lua:run
 PERL_RUN_DEPENDS=	p5-Xapian>=${PORTVERSION}:databases/p5-Xapian
 PHP_RUN_DEPENDS=	php-xapian>=${PORTVERSION}:databases/php-xapian
Index: devel/Makefile
===================================================================
--- devel/Makefile
+++ devel/Makefile
@@ -1457,6 +1457,7 @@
     SUBDIR += lua-cjson
     SUBDIR += lua-gettext
     SUBDIR += lua-lgi
+    SUBDIR += lua-libevent
     SUBDIR += lua-lpeg
     SUBDIR += lua-luacheck
     SUBDIR += lua-luarocks
@@ -1469,12 +1470,8 @@
     SUBDIR += lua-stdlib-debug
     SUBDIR += lua-stdlib-normalize
     SUBDIR += lua-sysctl
-    SUBDIR += lua51-bitop
-    SUBDIR += lua51-cjson
-    SUBDIR += lua51-libevent
     SUBDIR += luabind
     SUBDIR += luafilesystem
-    SUBDIR += luafilesystem-51
     SUBDIR += luajava
     SUBDIR += lutok
     SUBDIR += luv
Index: devel/lua-MessagePack/Makefile
===================================================================
--- devel/lua-MessagePack/Makefile
+++ devel/lua-MessagePack/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	MessagePack
 PORTVERSION=	0.3.5
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -15,7 +16,7 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYRIGHT
 
-USES=		lua
+USES=		lua:module
 NO_BUILD=	yes
 NO_ARCH=	yes
 
Index: devel/lua-bitlib/Makefile
===================================================================
--- devel/lua-bitlib/Makefile
+++ devel/lua-bitlib/Makefile
@@ -3,6 +3,7 @@
 
 PORTNAME=	bitlib
 PORTVERSION=	24
+PORTREVISION=	1
 CATEGORIES=	devel
 MASTER_SITES=	http://luaforge.net/frs/download.php/2715/
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -10,7 +11,7 @@
 MAINTAINER=	ports@FreeBSD.org
 COMMENT=	Tiny library for bitwise operations
 
-USES=		lua
+USES=		lua:module
 
 PLIST_FILES=	%%LUA_MODLIBDIR%%/bit.so
 
Index: devel/lua-bitop/Makefile
===================================================================
--- devel/lua-bitop/Makefile
+++ devel/lua-bitop/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	bitop
 PORTVERSION=	1.0.2
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	devel
 MASTER_SITES=	http://bitop.luajit.org/download/ \
 		LOCAL/sunpoet
@@ -18,7 +18,7 @@
 CFLAGS+=	-I${LUA_INCDIR}
 MAKE_ARGS=	CC=${CC} LUA=${LUA_CMD}
 TEST_TARGET=	test
-USES?=		gmake lua
+USES=		gmake lua:module
 
 PLIST_FILES=	${LUA_MODLIBDIR}/bit.so
 
Index: devel/lua-cjson/Makefile
===================================================================
--- devel/lua-cjson/Makefile
+++ devel/lua-cjson/Makefile
@@ -3,18 +3,19 @@
 
 PORTNAME=	cjson
 PORTVERSION=	2.1.0
+PORTREVISION=	1
 CATEGORIES=	devel
 MASTER_SITES=	http://www.kyne.com.au/~mark/software/download/
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 DISTNAME=	lua-cjson-${PORTVERSION}
 
 MAINTAINER=	osa@FreeBSD.org
-COMMENT?=	Fast JSON parsing and encoding support for Lua
+COMMENT=	Fast JSON parsing and encoding support for Lua
 
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-USES?=		lua
+USES=		lua:module
 
 MAKE_ARGS=	LUA_VERSION=${LUA_VER}
 
Index: devel/lua-gettext/Makefile
===================================================================
--- devel/lua-gettext/Makefile
+++ devel/lua-gettext/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	gettext
 PORTVERSION=	1.5
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	devel
 MASTER_SITES=	https://raw.githubusercontent.com/nuclewall/bsdinstaller/${COMMIT}/src/lib/lua/gettext/ \
 		https://BSDforge.com/projects/source/devel/lua-gettext/
@@ -14,7 +14,7 @@
 MAINTAINER=	portmaster@BSDforge.com
 COMMENT=	Gettext binding for Lua 5
 
-USES=		gettext lua:51
+USES=		gettext lua:51,module
 
 CVER=		1.15
 LVER=		${PORTVERSION}
Index: devel/lua-lgi/Makefile
===================================================================
--- devel/lua-lgi/Makefile
+++ devel/lua-lgi/Makefile
@@ -2,10 +2,11 @@
 
 PORTNAME=	lgi
 PORTVERSION=	0.9.2
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	andrew@tao11.riddles.org.uk
 COMMENT=	Lua bindings to libraries using GObject-Introspection
 
 LICENSE=	MIT
@@ -14,7 +15,7 @@
 USE_GITHUB=	yes
 GH_ACCOUNT=	pavouk
 
-USES=		gmake gnome lua pkgconfig
+USES=		gmake gnome lua:module pkgconfig
 USE_GNOME=	introspection:build,run
 MAKE_ENV=	LUA_CFLAGS="-I${LUA_INCDIR}"
 MAKE_ARGS=	PREFIX="${PREFIX}" LUA_LIBDIR="${LUA_MODLIBDIR}" \
Index: devel/lua-libevent/Makefile
===================================================================
--- devel/lua-libevent/Makefile
+++ devel/lua-libevent/Makefile
@@ -1,12 +1,12 @@
 # Created by: Sir l33tname <sirl33tname@gmail.com>
 # $FreeBSD$
 
-PORTNAME=	lua51
+PORTNAME=	libevent
 PORTVERSION=	0.4.6
 DISTVERSIONPREFIX=v
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	devel
-PKGNAMESUFFIX=	-libevent
+PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
 MAINTAINER=	sirl33tname@gmail.com
 COMMENT=	Lua libevent binding
@@ -14,9 +14,9 @@
 LICENSE=	MIT
 
 LIB_DEPENDS=	libevent.so:devel/libevent
-RUN_DEPENDS=	${LUA_MODLIBDIR}/socket/core.so:net/luasocket-51
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/socket/core.so:net/luasocket@${LUA_FLAVOR}
 
-USES=		gmake pkgconfig lua:51
+USES=		gmake pkgconfig lua:51,module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	harningt
Index: devel/lua-lpeg/Makefile
===================================================================
--- devel/lua-lpeg/Makefile
+++ devel/lua-lpeg/Makefile
@@ -2,6 +2,7 @@
 
 PORTNAME=	lpeg
 PORTVERSION=	1.0.2
+PORTREVISION=	1
 CATEGORIES=	devel
 MASTER_SITES=	http://www.inf.puc-rio.br/~roberto/lpeg/ \
 		LOCAL/sunpoet
@@ -12,7 +13,7 @@
 
 LICENSE=	MIT
 
-USES=		lua
+USES=		lua:module
 
 ALL_TARGET=	linux
 MAKE_ARGS=	CC=${CC} LUADIR=${LUA_INCDIR}
Index: devel/lua-luacheck/Makefile
===================================================================
--- devel/lua-luacheck/Makefile
+++ devel/lua-luacheck/Makefile
@@ -11,7 +11,7 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-RUN_DEPENDS=	${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/lfs.so:devel/luafilesystem@${LUA_FLAVOR}
 
 USES=	lua
 NO_ARCH=	yes
Index: devel/lua-posix/Makefile
===================================================================
--- devel/lua-posix/Makefile
+++ devel/lua-posix/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	posix
 PORTVERSION=	34.1.1
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -13,9 +14,9 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-normalize>=0:devel/lua-stdlib-normalize
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-normalize>=0:devel/lua-stdlib-normalize@${LUA_FLAVOR}
 
-USES=		lua shebangfix
+USES=		lua:module shebangfix
 SHEBANG_FILES=	build-aux/luke
 
 USE_GITHUB=	yes
Index: devel/lua-pty/Makefile
===================================================================
--- devel/lua-pty/Makefile
+++ devel/lua-pty/Makefile
@@ -3,6 +3,7 @@
 
 PORTNAME=	pty
 PORTVERSION=	1.25
+PORTREVISION=	1
 CATEGORIES=	devel
 MASTER_SITES=	https://raw.githubusercontent.com/nuclewall/bsdinstaller/${COMMIT}/src/lib/lua/pty/ \
 		https://BSDforge.com/projects/source/devel/lua-pty/
@@ -13,7 +14,7 @@
 MAINTAINER=	portmaster@BSDforge.com
 COMMENT=	Pty (pseudo-terminal) bindings for Lua 5
 
-USES=		lua:51
+USES=		lua:51,module
 
 COMMIT=		8323bb9
 MAKEFILE=	${FILESDIR}/Makefile
Index: devel/lua-stdlib-debug/Makefile
===================================================================
--- devel/lua-stdlib-debug/Makefile
+++ devel/lua-stdlib-debug/Makefile
@@ -3,6 +3,7 @@
 PORTNAME=	stdlib-debug
 PORTVERSION=	1.0.1
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -13,7 +14,7 @@
 LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
 NO_ARCH=	yes
-USES=		lua
+USES=		lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	lua-stdlib
@@ -21,7 +22,7 @@
 
 OPTIONS_DEFINE=	DOCS
 
-DOCSDIR=	${PREFIX}/share/doc/lua${LUA_VER_STR}/${PORTNAME}
+DOCSDIR=	${LUA_DOCSDIR}
 
 do-install:
 	@${MKDIR} ${STAGEDIR}${LUA_MODSHAREDIR}/std/_debug
Index: devel/lua-stdlib-normalize/Makefile
===================================================================
--- devel/lua-stdlib-normalize/Makefile
+++ devel/lua-stdlib-normalize/Makefile
@@ -3,6 +3,7 @@
 PORTNAME=	stdlib-normalize
 PORTVERSION=	2.0.2
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -12,10 +13,10 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/LICENSE.md
 
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-debug>=0:devel/lua-stdlib-debug
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-debug>=0:devel/lua-stdlib-debug@${LUA_FLAVOR}
 
 NO_ARCH=	yes
-USES=		lua
+USES=		lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	lua-stdlib
@@ -23,7 +24,7 @@
 
 OPTIONS_DEFINE=	DOCS
 
-DOCSDIR=	${PREFIX}/share/doc/lua${LUA_VER_STR}/${PORTNAME}
+DOCSDIR=	${LUA_DOCSDIR}
 
 do-install:
 	@${MKDIR} ${STAGEDIR}${LUA_MODSHAREDIR}/std/normalize
Index: devel/lua-stdlib/Makefile
===================================================================
--- devel/lua-stdlib/Makefile
+++ devel/lua-stdlib/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	stdlib
 PORTVERSION=	41.2.2
 DISTVERSIONPREFIX=	release-v
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -13,14 +14,14 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-debug>=0:devel/lua-stdlib-debug \
-		${LUA_PKGNAMEPREFIX}stdlib-normalize>=2.0:devel/lua-stdlib-normalize
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}stdlib-debug>=0:devel/lua-stdlib-debug@${LUA_FLAVOR} \
+		${LUA_PKGNAMEPREFIX}stdlib-normalize>=2.0:devel/lua-stdlib-normalize@${LUA_FLAVOR}
 
 OPTIONS_DEFINE=	DOCS
 
-USES=		lua
+USES=		lua:module
 
-CONFIGURE_ARGS=	LUA=${LUA_CMD}
+CONFIGURE_ARGS=	--docdir=${DOCSDIR} LUA=${LUA_CMD}
 GNU_CONFIGURE=	yes
 NO_ARCH=	yes
 
@@ -28,4 +29,6 @@
 GH_PROJECT=	lua-stdlib
 USE_GITHUB=	yes
 
+DOCSDIR=	${LUA_DOCSDIR}
+
 .include <bsd.port.mk>
Index: devel/lua-sysctl/Makefile
===================================================================
--- devel/lua-sysctl/Makefile
+++ devel/lua-sysctl/Makefile
@@ -3,6 +3,7 @@
 PORTNAME=	sysctl
 PORTVERSION=	2.0
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -11,18 +12,18 @@
 
 LICENSE=	BSD2CLAUSE
 
-USES=		lua pkgconfig
+USES=		lua:52+,module pkgconfig
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	kAworu
 GH_PROJECT=	lua-${PORTNAME}
 
 OPTIONS_DEFINE=	DOCS EXAMPLES
-DOCSDIR=	${PREFIX}/share/doc/lua${LUA_VER_STR}/${PORTNAME}
-EXAMPLESDIR=	${PREFIX}/share/examples/lua${LUA_VER_STR}/${PORTNAME}
+DOCSDIR=	${LUA_DOCSDIR}
+EXAMPLESDIR=	${LUA_EXAMPLESDIR}
 
 post-patch:
-	@${REINPLACE_CMD} -e "s/5.1/${LUA_VER}/g" ${WRKSRC}/Makefile
+	@${REINPLACE_CMD} -e "s/5.2/${LUA_VER}/g" ${WRKSRC}/Makefile
 
 do-install:
 	@${MKDIR} ${STAGEDIR}${LUA_MODLIBDIR}
Index: devel/lua51-bitop/Makefile
===================================================================
--- devel/lua51-bitop/Makefile
+++ /dev/null
@@ -1,12 +0,0 @@
-# Created by: lx
-# $FreeBSD$
-
-COMMENT=	lua-bitop for Lua 5.1
-
-USES=		gmake lua:51
-
-MASTERDIR=	${.CURDIR}/../lua-bitop
-
-PLIST=		${MASTERDIR}/pkg-plist
-
-.include "${MASTERDIR}/Makefile"
Index: devel/lua51-cjson/Makefile
===================================================================
--- devel/lua51-cjson/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-# Created by: osa
-# $FreeBSD$
-
-COMMENT=	Fast JSON parsing and encoding support for Lua 5.1
-
-MASTERDIR=	${.CURDIR}/../lua-cjson
-
-USES=		lua:51
-
-.include "${MASTERDIR}/Makefile"
Index: devel/luafilesystem-51/Makefile
===================================================================
--- devel/luafilesystem-51/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Created by: Nikolai Lifanov
-# $FreeBSD$
-
-COMMENT=        LuaFileSystem for Lua 5.1
-
-SLAVE_PORT=     luafilesystem
-
-USES=	lua:51
-
-MASTERDIR=      ${.CURDIR}/../luafilesystem
-PLIST=          ${MASTERDIR}/pkg-plist
-
-.include "${MASTERDIR}/Makefile"
Index: devel/luafilesystem/Makefile
===================================================================
--- devel/luafilesystem/Makefile
+++ devel/luafilesystem/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	luafilesystem
 DISTVERSIONPREFIX=	v
 DISTVERSION=	1_7_0
+PORTREVISION=	1
 CATEGORIES=	devel
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -12,7 +13,7 @@
 
 LICENSE=	MIT
 
-USES?=		lua
+USES=		lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	keplerproject
@@ -26,6 +27,8 @@
 
 OPTIONS_DEFINE=	DOCS
 
+DOCSDIR=	${LUA_DOCSDIR}
+
 post-patch:
 	${REINPLACE_CMD} -e \
 		"s|%%PREFIX%%|${PREFIX}| ; \
Index: devel/swig30/Makefile
===================================================================
--- devel/swig30/Makefile
+++ devel/swig30/Makefile
@@ -3,6 +3,7 @@
 
 PORTNAME=	swig
 PORTVERSION=	3.0.12
+PORTREVISION=	1
 CATEGORIES=	devel
 MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}
 PKGNAMESUFFIX=	30
@@ -25,7 +26,7 @@
 		--with-lualib=${LUA_LIBDIR}
 GNU_CONFIGURE=	yes
 TEST_TARGET=	check
-USES=		gmake lua
+USES=		gmake lua:build
 
 PLIST_SUB=	PORTVERSION=${PORTVERSION}
 
Index: dns/knot-resolver/Makefile
===================================================================
--- dns/knot-resolver/Makefile
+++ dns/knot-resolver/Makefile
@@ -96,8 +96,8 @@
 
 TRUSTANCHOR_DESC=		Trust anchor bootstrapping and stats
 TRUSTANCHOR_USES=		lua
-TRUSTANCHOR_BUILD_DEPENDS=	${LUA_PKGNAMEPREFIX}luasocket>=0:net/luasocket \
-				${LUA_PKGNAMEPREFIX}luasec>=0:security/luasec
+TRUSTANCHOR_BUILD_DEPENDS=	${LUA_PKGNAMEPREFIX}luasocket>=0:net/luasocket@${LUA_FLAVOR} \
+				${LUA_PKGNAMEPREFIX}luasec>=0:security/luasec@${LUA_FLAVOR}
 
 .include <bsd.port.options.mk>
 
Index: editors/fxite/Makefile
===================================================================
--- editors/fxite/Makefile
+++ editors/fxite/Makefile
@@ -16,7 +16,7 @@
 USE_GITHUB=	yes
 GH_ACCOUNT=	yetanothergeek
 
-USES=		autoreconf desktop-file-utils gettext gmake lua pkgconfig
+USES=		autoreconf desktop-file-utils gettext gmake lua:52 pkgconfig
 GNU_CONFIGURE=	yes
 CONFIGURE_ARGS=	--with-system-lua \
 		--with-lua-pkg=lua-${LUA_VER}
Index: editors/mle/Makefile
===================================================================
--- editors/mle/Makefile
+++ editors/mle/Makefile
@@ -13,15 +13,14 @@
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	${LOCALBASE}/include/uthash.h:devel/uthash
-LIB_DEPENDS=	liblua-5.3.so:lang/lua53 \
-		libpcre.so:devel/pcre \
+LIB_DEPENDS=	libpcre.so:devel/pcre \
 		libtermbox.so:devel/termbox
 TEST_DEPENDS=	${LOCALBASE}/bin/gpaste:sysutils/coreutils \
 		${LOCALBASE}/bin/grep:textproc/gnugrep \
 		bash:shells/bash \
 		gfind:misc/findutils
 
-USES=		compiler:c11 gmake localbase:ldflags shebangfix
+USES=		compiler:c11 gmake localbase:ldflags shebangfix lua:53
 SHEBANG_FILES=	tests/func/*.sh tests/run.sh
 USE_GITHUB=	yes
 GH_ACCOUNT=	adsr
Index: editors/neovim/Makefile
===================================================================
--- editors/neovim/Makefile
+++ editors/neovim/Makefile
@@ -12,8 +12,8 @@
 LICENSE=	APACHE20
 
 BUILD_DEPENDS=	gperf:devel/gperf \
-		${LUA_MODLIBDIR}/bit.so:devel/lua-bitop \
-		${LUA_MODLIBDIR}/lpeg.so:devel/lua-lpeg
+		${LUA_MODLIBDIR}/bit.so:devel/lua-bitop@${LUA_FLAVOR} \
+		${LUA_MODLIBDIR}/lpeg.so:devel/lua-lpeg@${LUA_FLAVOR}
 LIB_DEPENDS=	libluv.so:devel/luv \
 		libmsgpackc.so:devel/msgpack \
 		libtermkey.so:devel/libtermkey \
Index: editors/wordgrinder/Makefile
===================================================================
--- editors/wordgrinder/Makefile
+++ editors/wordgrinder/Makefile
@@ -8,7 +8,7 @@
 MAINTAINER=	vmagerya@gmail.com
 COMMENT=	Simple Unicode-aware console and X11-based word processor
 
-RUN_DEPENDS=	${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/lfs.so:devel/luafilesystem@${LUA_FLAVOR}
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	davidgiven
Index: finance/moneymanagerex/Makefile
===================================================================
--- finance/moneymanagerex/Makefile
+++ finance/moneymanagerex/Makefile
@@ -29,7 +29,7 @@
 		moneymanagerex:ctpp:20158e0:ctpp/3rd/ctpp \
 		moneymanagerex:mongoose:97583a6:mongoose/3rd/mongoose
 
-USES=		autoreconf compiler:c++11-lib gettext gmake gnome lua pkgconfig
+USES=		autoreconf compiler:c++11-lib gettext gmake gnome lua:52 pkgconfig
 GNU_CONFIGURE=	yes
 USE_WX=		3.0
 WX_CONF_ARGS=	absolute
Index: games/corsix-th/Makefile
===================================================================
--- games/corsix-th/Makefile
+++ games/corsix-th/Makefile
@@ -13,8 +13,8 @@
 LICENSE=	MIT
 
 LIB_DEPENDS=	libfreetype.so:print/freetype2
-RUN_DEPENDS=	${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem \
-		${LUA_MODLIBDIR}/lpeg.so:devel/lua-lpeg
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/lfs.so:devel/luafilesystem@${LUA_FLAVOR} \
+		${LUA_REFMODLIBDIR}/lpeg.so:devel/lua-lpeg@${LUA_FLAVOR}
 
 USES=		cmake:insource compiler:c++11-lib desktop-file-utils dos2unix \
 		iconv lua pkgconfig sdl
Index: graphics/lua-gd/Makefile
===================================================================
--- graphics/lua-gd/Makefile
+++ graphics/lua-gd/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	lua-gd
 PORTVERSION=	2.0.33r2
-PORTREVISION=	3
+PORTREVISION=	4
 CATEGORIES=	graphics
 MASTER_SITES=	http://files.luaforge.net/releases/${PORTNAME}/${PORTNAME}/${PORTNAME}-${PORTVERSION}forLua5.1/
 
@@ -16,11 +16,14 @@
 
 OPTIONS_DEFINE=	DOCS EXAMPLES
 
-USES=		lua:51
+USES=		lua:51,module
 CFLAGS+=	-I${LUA_INCDIR} -I${LOCALBASE}/include
 LDFLAGS+=	-shared -L${LOCALBASE}/lib -lgd -L${LUA_LIBDIR} -llua-${LUA_VER} -lm
 GDFEATURES=	`gdlib-config --features |sed -e "s/GD_/-DGD_/g"`
 
+DOCSDIR=	${LUA_DOCSDIR}
+EXAMPLESDIR=	${LUA_EXAMPLESDIR}
+
 .include <bsd.port.options.mk>
 
 CFLAGS_aarch64+=-fPIC
@@ -30,8 +33,6 @@
 do-build:
 	${CC} -o ${WRKSRC}/gd.so ${CPPFLAGS} ${CFLAGS} ${LDFLAGS} ${GDFEATURES} ${WRKSRC}/luagd.c
 
-LUA_MODLIBDIR=	${PREFIX}/lib/lua/${LUA_VER}
-
 do-install:
 	${MKDIR} ${STAGEDIR}${LUA_MODLIBDIR}
 	${INSTALL_PROGRAM} ${WRKSRC}/gd.so ${STAGEDIR}${LUA_MODLIBDIR}
Index: lang/lua-ada/Makefile
===================================================================
--- lang/lua-ada/Makefile
+++ lang/lua-ada/Makefile
@@ -15,7 +15,7 @@
 
 BUILD_DEPENDS=	gprbuild:devel/gprbuild
 
-USES=		ada lua
+USES=		ada lua:52
 USE_GITHUB=	yes
 GH_ACCOUNT=	AdaCore
 GH_PROJECT=	ada-lua
Index: lang/lua51/Makefile
===================================================================
--- lang/lua51/Makefile
+++ lang/lua51/Makefile
@@ -13,8 +13,7 @@
 
 LICENSE=	MIT
 
-USES=		libedit
-LUA_VER=	5.1
+USES=		libedit lua:core,51
 USE_LDCONFIG=	yes
 
 # Overriding __MAKE_CONF makes sure that we don't re-parse
@@ -24,6 +23,7 @@
 # have its settings when we get here.
 # See http://wiki.freebsd.org/MatthiasAndree/LuaLessonsLearnt
 MAKE_ARGS=	__MAKE_CONF=${NONEXISTENT}
+
 # liblua.so requires libm, so make sure it has an explicit dependency
 # so that applications need not second-guess lua's dependencies.
 CPPFLAGS+=	-I${LOCALBASE}/include
@@ -44,14 +44,6 @@
 		INSTALL_INC=${STAGEDIR}${PREFIX}/include/lua51 \
 		INSTALL_EXEC="${INSTALL_PROGRAM}"
 
-# Cope with the lack of support for Lua 5.2 in bsd.lua.mk.  These
-# overrides, which are required below, should be removed once bsd.lua.mk
-# understands this lua version.
-LUA_PREFIX?=	${PREFIX}
-LUA_SUBDIR?=	lua${PKGNAMESUFFIX}
-LUA_INCDIR?=	${LUA_PREFIX}/include/${LUA_SUBDIR}
-LUA_LIBDIR?=	${LUA_PREFIX}/lib
-
 CFLAGS+=	-fPIC
 
 post-patch:
Index: lang/lua52/Makefile
===================================================================
--- lang/lua52/Makefile
+++ lang/lua52/Makefile
@@ -12,8 +12,7 @@
 
 LICENSE=	MIT
 
-USES=		libedit
-LUA_VER=	5.2
+USES=		libedit lua:core,52
 USE_LDCONFIG=	yes
 
 # Overriding __MAKE_CONF makes sure that we don't re-parse
@@ -23,6 +22,7 @@
 # have its settings when we get here.
 # See http://wiki.freebsd.org/MatthiasAndree/LuaLessonsLearnt
 MAKE_ARGS=	__MAKE_CONF=${NONEXISTENT}
+
 # liblua.so requires libm, so make sure it has an explicit dependency
 # so that applications need not second-guess lua's dependencies.
 CPPFLAGS+=	-I${LOCALBASE}/include
@@ -43,14 +43,6 @@
 		INSTALL_INC=${STAGEDIR}${PREFIX}/include/lua52 \
 		INSTALL_EXEC="${INSTALL_PROGRAM}"
 
-# Cope with the lack of support for Lua 5.2 in bsd.lua.mk.  These
-# overrides, which are required below, should be removed once bsd.lua.mk
-# understands this lua version.
-LUA_PREFIX?=	${PREFIX}
-LUA_SUBDIR?=	lua${PKGNAMESUFFIX}
-LUA_INCDIR?=	${LUA_PREFIX}/include/${LUA_SUBDIR}
-LUA_LIBDIR?=	${LUA_PREFIX}/lib
-
 SUB_FILES=	lua-${LUA_VER}.pc
 SUB_LIST=	version=${PORTVERSION} \
 		includedir=${LUA_INCDIR} \
Index: lang/lua53/Makefile
===================================================================
--- lang/lua53/Makefile
+++ lang/lua53/Makefile
@@ -13,7 +13,7 @@
 
 LICENSE=	MIT
 
-LUA_VER=	5.3
+USES=		lua:core,53
 USE_LDCONFIG=	yes
 
 # Overriding __MAKE_CONF makes sure that we don't re-parse
@@ -32,18 +32,10 @@
 # We put the docs for Lua proper in a lua/ subdir of the version subdir
 # so that ports for Lua modules can use the version subdir too without
 # making a mess.
-DOCSDIR=	${PREFIX}/share/doc/lua${PKGNAMESUFFIX}/lua
+DOCSDIR=	${LUA_DOCSDIR}
 PORTDOCS=	*
 BUILD_WRKDOC=	${WRKSRC}/doc
 
-LUA_PREFIX=	${PREFIX}
-
-# 2018-03-17: AG - These should match lua.mk, but we can't include that here
-LUA_CMD=	lua${PKGNAMESUFFIX}
-LUAC_CMD=	luac${PKGNAMESUFFIX}
-LUA_INCDIR=	${LUA_PREFIX}/include/lua${PKGNAMESUFFIX}
-LUA_LIBDIR=	${LUA_PREFIX}/lib
-
 LUA_LIB_STATIC=	liblua-${LUA_VER}.a
 LUA_LIB_SHARED=	liblua-${LUA_VER}.so
 LUA_PC_FILE=	lua-${LUA_VER}.pc
Index: math/plplot/Makefile
===================================================================
--- math/plplot/Makefile
+++ math/plplot/Makefile
@@ -3,6 +3,7 @@
 
 PORTNAME=	plplot
 DISTVERSION=	5.15.0
+PORTREVISION=	1
 CATEGORIES=	math science
 MASTER_SITES=	SF/${PORTNAME}/${PORTNAME}/${PORTVERSION}%20Source
 
@@ -73,6 +74,7 @@
 GD_CMAKE_BOOL=		PLD_png
 
 LUA_USES=		lua
+LUA_BUILD_DEPENDS=	swig3.0:devel/swig30
 LUA_CMAKE_BOOL=		ENABLE_lua
 LUA_CMAKE_ON=		-DLUA_EXECUTABLE:FILEPATH="${LUA_CMD}"
 
Index: multimedia/libquvi-scripts09/Makefile
===================================================================
--- multimedia/libquvi-scripts09/Makefile
+++ multimedia/libquvi-scripts09/Makefile
@@ -15,10 +15,10 @@
 LICENSE=	AGPLv3
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}bitop>=1.0.1:devel/lua-bitop \
-		${LUA_PKGNAMEPREFIX}luaexpat>=1.2.0:textproc/luaexpat \
-		${LUA_PKGNAMEPREFIX}json>=1.1.1:converters/lua-json \
-		${LUA_PKGNAMEPREFIX}luasocket>=2.0.2:net/luasocket
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}bitop>=1.0.1:devel/lua-bitop@${LUA_FLAVOR} \
+		${LUA_PKGNAMEPREFIX}luaexpat>=1.2.0:textproc/luaexpat@${LUA_FLAVOR} \
+		${LUA_PKGNAMEPREFIX}json>=1.1.1:converters/lua-json@${LUA_FLAVOR} \
+		${LUA_PKGNAMEPREFIX}luasocket>=2.0.2:net/luasocket@${LUA_FLAVOR}
 
 OPTIONS_DEFINE=	NSFW
 OPTIONS_SUB=	yes
Index: net-im/prosody/Makefile
===================================================================
--- net-im/prosody/Makefile
+++ net-im/prosody/Makefile
@@ -14,11 +14,11 @@
 LICENSE=	MIT
 LICENSE_FILE=	${WRKSRC}/COPYING
 
-RUN_DEPENDS=	${LUA_MODLIBDIR}/socket/core.so:net/luasocket \
-		${LUA_MODLIBDIR}/ssl.so:security/luasec \
-		${LUA_MODLIBDIR}/lxp.so:textproc/luaexpat \
-		${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem \
-		${LUA_MODLIBDIR}/bit.so:devel/lua-bitop
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/socket/core.so:net/luasocket@${LUA_FLAVOR} \
+		${LUA_REFMODLIBDIR}/ssl.so:security/luasec@${LUA_FLAVOR} \
+		${LUA_REFMODLIBDIR}/lxp.so:textproc/luaexpat@${LUA_FLAVOR} \
+		${LUA_REFMODLIBDIR}/lfs.so:devel/luafilesystem@${LUA_FLAVOR} \
+		${LUA_REFMODLIBDIR}/bit.so:devel/lua-bitop@${LUA_FLAVOR}
 LIB_DEPENDS=	libidn.so:dns/libidn
 
 USES=		compiler:c11 cpe gmake lua:52 ssl
Index: net/Makefile
===================================================================
--- net/Makefile
+++ net/Makefile
@@ -426,10 +426,7 @@
     SUBDIR += lla
     SUBDIR += ltm
     SUBDIR += lualdap
-    SUBDIR += lualdap-51
     SUBDIR += luasocket
-    SUBDIR += luasocket-51
-    SUBDIR += luasocket-53
     SUBDIR += lvwimax
     SUBDIR += mDNSResponder
     SUBDIR += macchanger
Index: net/freeswitch/Makefile
===================================================================
--- net/freeswitch/Makefile
+++ net/freeswitch/Makefile
@@ -29,7 +29,7 @@
 		libjbig.so:graphics/jbigkit \
 		libtiff.so:graphics/tiff
 
-USES=		gmake iconv jpeg libedit libtool lua perl5 pkgconfig shebangfix ssl tar:xz
+USES=		gmake iconv jpeg libedit libtool lua:51-52 perl5 pkgconfig shebangfix ssl tar:xz
 USE_LDCONFIG=	yes
 USE_RC_SUBR=	freeswitch
 
Index: net/lualdap-51/Makefile
===================================================================
--- net/lualdap-51/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-USES=		gmake lua:51
-
-MASTERDIR=	${.CURDIR}/../lualdap
-
-.include "${MASTERDIR}/Makefile"
-
-COMMENT+=	(version 5.1)
Index: net/lualdap/Makefile
===================================================================
--- net/lualdap/Makefile
+++ net/lualdap/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	lualdap
 PORTVERSION=	1.1.0
-PORTREVISION=	2
+PORTREVISION=	3
 CATEGORIES=	net
 MASTER_SITES=	http://files.luaforge.net/releases/${PORTNAME}/${PORTNAME}/LuaLDAP${PORTVERSION}/
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -11,7 +11,7 @@
 MAINTAINER=	pf@itwf.pl
 COMMENT=	LDAP support for the Lua language
 
-USES?=		gmake lua
+USES=		gmake lua:-52,module
 USE_OPENLDAP=	yes
 
 # the CPPFLAGS fixes builds where PREFIX != LOCALBASE
@@ -26,6 +26,8 @@
 
 OPTIONS_DEFINE=	DOCS
 
+DOCSDIR=	${LUA_DOCSDIR}
+
 do-install:
 	@${MKDIR} ${STAGEDIR}${LUA_MODLIBDIR}
 	${INSTALL_PROGRAM} ${WRKSRC}/src/lualdap.so.${PORTVERSION} ${STAGEDIR}${LUA_MODLIBDIR}/${PORTNAME}.so
Index: net/luasocket-51/Makefile
===================================================================
--- net/luasocket-51/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Created by: Jan Hornyak <pav@oook.cz>
-# $FreeBSD$
-
-SLAVE_PORT=	luasocket
-
-USES=	gmake lua:51 pkgconfig
-
-MASTERDIR=	${.CURDIR}/../luasocket
-PLIST=	${MASTERDIR}/pkg-plist
-
-.include "${MASTERDIR}/Makefile"
-
-COMMENT+=	(version 5.1)
Index: net/luasocket-53/Makefile
===================================================================
--- net/luasocket-53/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Created by: Jan Hornyak <pav@oook.cz>
-# $FreeBSD$
-
-SLAVE_PORT=	luasocket
-
-USES=	gmake lua:53 pkgconfig
-
-MASTERDIR=	${.CURDIR}/../luasocket
-PLIST=	${MASTERDIR}/pkg-plist
-
-.include "${MASTERDIR}/Makefile"
-
-COMMENT+=	(version 5.3)
Index: net/luasocket/Makefile
===================================================================
--- net/luasocket/Makefile
+++ net/luasocket/Makefile
@@ -4,7 +4,7 @@
 PORTNAME=	luasocket
 DISTVERSIONPREFIX=	v
 DISTVERSION=	3.0-rc1
-PORTREVISION=	4
+PORTREVISION=	5
 PORTEPOCH=	1
 CATEGORIES=	net
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
@@ -19,7 +19,7 @@
 GH_ACCOUNT=	diegonehab
 
 MAKE_ARGS=	LUAV=${LUA_VER}
-USES?=		gmake lua pkgconfig
+USES=		gmake lua:module pkgconfig
 INSTALL_TARGET=	install-unix
 
 CFLAGS+=	`pkgconf --cflags lua-${LUA_VER}` \
@@ -28,6 +28,8 @@
 
 OPTIONS_DEFINE=	DOCS
 
+DOCSDIR=	${LUA_DOCSDIR}
+
 post-extract:
 	@${MV} ${WRKSRC}/makefile ${WRKSRC}/Makefile
 	@${MV} ${WRKSRC}/src/makefile ${WRKSRC}/src/Makefile
Index: net/wireshark/Makefile
===================================================================
--- net/wireshark/Makefile
+++ net/wireshark/Makefile
@@ -84,7 +84,7 @@
 GUI_USES=		qt:5
 GUI_USE=	qt=core,gui,multimedia,widgets,printsupport,svg,buildtools_build,linguisttools_build,qmake_build
 
-LUA_USES=		lua:5[1-2]
+LUA_USES=		lua:51-52
 GSSAPI_BASE_USES=		gssapi
 GSSAPI_HEIMDAL_USES=	gssapi:heimdal
 GSSAPI_MIT_USES=		gssapi:mit
Index: security/Makefile
===================================================================
--- security/Makefile
+++ security/Makefile
@@ -334,7 +334,6 @@
     SUBDIR += logcheck
     SUBDIR += lua-bcrypt
     SUBDIR += luasec
-    SUBDIR += luasec-51
     SUBDIR += lxqt-openssh-askpass
     SUBDIR += lxqt-sudo
     SUBDIR += lynis
Index: security/cardpeek/Makefile
===================================================================
--- security/cardpeek/Makefile
+++ security/cardpeek/Makefile
@@ -15,7 +15,7 @@
 		libcurl.so:ftp/curl
 RUN_DEPENDS=	pcscd:devel/pcsc-lite
 
-USES=		gnome iconv localbase lua pkgconfig
+USES=		gnome iconv localbase lua:52 pkgconfig
 USE_GNOME=	gtk30
 GNU_CONFIGURE=	yes
 INSTALLS_ICONS=	yes
Index: security/lua-bcrypt/Makefile
===================================================================
--- security/lua-bcrypt/Makefile
+++ security/lua-bcrypt/Makefile
@@ -3,7 +3,7 @@
 PORTNAME=	bcrypt
 DISTVERSIONPREFIX=	v
 DISTVERSION=	2.1-4
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	security
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -12,7 +12,7 @@
 
 LICENSE=	ISCL
 
-USES=		compiler:c11 gmake lua
+USES=		compiler:c11 gmake lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	mikejsavage
Index: security/luasec-51/Makefile
===================================================================
--- security/luasec-51/Makefile
+++ /dev/null
@@ -1,13 +0,0 @@
-# Created by: Andrew Lewis <freeghb@gmail.com>
-# $FreeBSD$
-
-COMMENT=	LuaSec for Lua 5.1
-
-SLAVE_PORT=	luasec
-
-USES=	lua:51 ssl
-
-MASTERDIR=	${.CURDIR}/../luasec
-PLIST=	${MASTERDIR}/pkg-plist
-
-.include "${MASTERDIR}/Makefile"
Index: security/luasec/Makefile
===================================================================
--- security/luasec/Makefile
+++ security/luasec/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	luasec
 PORTVERSION=	0.9
 DISTVERSIONPREFIX=	v
+PORTREVISION=	1
 CATEGORIES=	security
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -13,7 +14,7 @@
 LICENSE=	MIT
 
 .if !defined(SLAVE_PORT)
-USES=		lua ssl
+USES=		lua:module ssl
 .endif
 
 USE_GITHUB=	yes
Index: textproc/Makefile
===================================================================
--- textproc/Makefile
+++ textproc/Makefile
@@ -415,7 +415,6 @@
     SUBDIR += ltxml
     SUBDIR += lua-lyaml
     SUBDIR += luaexpat
-    SUBDIR += luaexpat-51
     SUBDIR += lucene
     SUBDIR += lucene4
     SUBDIR += lucene5
Index: textproc/lua-lyaml/Makefile
===================================================================
--- textproc/lua-lyaml/Makefile
+++ textproc/lua-lyaml/Makefile
@@ -4,6 +4,7 @@
 PORTNAME=	lyaml
 PORTVERSION=	6.2.4
 DISTVERSIONPREFIX=v
+PORTREVISION=	1
 CATEGORIES=	textproc
 PKGNAMEPREFIX=	${LUA_PKGNAMEPREFIX}
 
@@ -15,7 +16,7 @@
 
 LIB_DEPENDS=	libyaml.so:textproc/libyaml
 
-USES=		lua
+USES=		lua:module
 
 USE_GITHUB=	yes
 GH_ACCOUNT=	gvvaughan
Index: textproc/luaexpat-51/Makefile
===================================================================
--- textproc/luaexpat-51/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $FreeBSD$
-
-MASTERDIR=	${.CURDIR}/../luaexpat
-USES=	lua:51
-
-.include "${MASTERDIR}/Makefile"
Index: textproc/luaexpat/Makefile
===================================================================
--- textproc/luaexpat/Makefile
+++ textproc/luaexpat/Makefile
@@ -3,7 +3,7 @@
 
 PORTNAME=	luaexpat
 PORTVERSION=	1.3.0
-PORTREVISION=	4
+PORTREVISION=	5
 CATEGORIES=	textproc
 MASTER_SITES=	http://matthewwild.co.uk/projects/luaexpat/ \
 				http://redundancy.redundancy.org/mirror/
@@ -16,7 +16,7 @@
 
 LIB_DEPENDS=	libexpat.so:textproc/expat2
 
-USES?=		lua
+USES=		lua:module
 USES+=		gmake
 ALL_TARGET=	lib
 
Index: www/luakit/Makefile
===================================================================
--- www/luakit/Makefile
+++ www/luakit/Makefile
@@ -16,13 +16,13 @@
 NOT_FOR_ARCHS_REASON_sparc64=	Does not install on sparc64
 
 BUILD_DEPENDS=	help2man:misc/help2man \
-		${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem-51
+		${LUA_MODLIBDIR}/lfs.so:devel/luafilesystem@${LUA_FLAVOR}
 LIB_DEPENDS=	libdbus-glib-1.so:devel/dbus-glib \
 		libsoup-2.4.so:devel/libsoup \
 		libfreetype.so:print/freetype2 \
 		libwebkit2gtk-4.0.so:www/webkit2-gtk3 \
 		libfontconfig.so:x11-fonts/fontconfig
-RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}luafilesystem>=0:devel/luafilesystem-51
+RUN_DEPENDS=	${LUA_PKGNAMEPREFIX}luafilesystem>=0:devel/luafilesystem@${LUA_FLAVOR}
 
 USES=		compiler:c++11-lang desktop-file-utils gettext-runtime gmake \
 		gnome lua:51 pkgconfig sqlite
Index: www/volta/Makefile
===================================================================
--- www/volta/Makefile
+++ www/volta/Makefile
@@ -15,7 +15,7 @@
 
 LIB_DEPENDS=	libcdb.so:databases/tinycdb
 
-USES=		gmake pkgconfig lua tar:tgz
+USES=		gmake pkgconfig lua:52 tar:tgz
 ALL_TARGET=	${PORTNAME}
 
 CFLAGS+=	-I${PREFIX}/include
Index: x11-wm/awesome/Makefile
===================================================================
--- x11-wm/awesome/Makefile
+++ x11-wm/awesome/Makefile
@@ -15,8 +15,8 @@
 LICENSE_FILE=	${WRKSRC}/LICENSE
 
 BUILD_DEPENDS=	convert:graphics/ImageMagick6 \
-		${LUA_MODLIBDIR}/lgi/corelgilua${LUA_VER_STR}.so:devel/lua-lgi
-RUN_DEPENDS=	${LUA_MODLIBDIR}/lgi/corelgilua${LUA_VER_STR}.so:devel/lua-lgi \
+		${LUA_REFMODLIBDIR}/lgi/corelgilua${LUA_VER_STR}.so:devel/lua-lgi@${LUA_FLAVOR}
+RUN_DEPENDS=	${LUA_REFMODLIBDIR}/lgi/corelgilua${LUA_VER_STR}.so:devel/lua-lgi@${LUA_FLAVOR} \
 		bash:shells/bash
 LIB_DEPENDS=	libcairo.so:graphics/cairo \
 		libstartup-notification-1.so:x11/startup-notification \