summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAisha Tammy <gentoo@aisha.cc>2021-01-24 17:16:48 +0000
committerJoonas Niilola <juippis@gentoo.org>2021-02-14 10:25:03 +0200
commit222915a6d3edbdbf4ba8c48276f1fecfca1f3742 (patch)
tree73a6466393bc675f84eddf26cc0ff9e3bd5865c0 /sys-cluster
parentdev-util/hermes: move to commit version for >lua5.1 compat (diff)
downloadgentoo-222915a6d3edbdbf4ba8c48276f1fecfca1f3742.tar.gz
gentoo-222915a6d3edbdbf4ba8c48276f1fecfca1f3742.tar.bz2
gentoo-222915a6d3edbdbf4ba8c48276f1fecfca1f3742.zip
sys-cluster/lmod: lua based environment modules system
used in HPC clusters, scientific computing labs, research labs and a lot of other production environments Package-Manager: Portage-3.0.13, Repoman-3.0.2 Signed-off-by: Aisha Tammy <gentoo@aisha.cc> Closes: https://github.com/gentoo/gentoo/pull/19193 Signed-off-by: Joonas Niilola <juippis@gentoo.org>
Diffstat (limited to 'sys-cluster')
-rw-r--r--sys-cluster/lmod/Manifest1
-rw-r--r--sys-cluster/lmod/files/99lmod1
-rw-r--r--sys-cluster/lmod/files/lmod-8.4.19-no-libsandbox.patch13
-rw-r--r--sys-cluster/lmod/files/module.1-8.4.20539
-rw-r--r--sys-cluster/lmod/lmod-8.4.20.ebuild133
-rw-r--r--sys-cluster/lmod/lmod-9999.ebuild133
-rw-r--r--sys-cluster/lmod/metadata.xml28
7 files changed, 848 insertions, 0 deletions
diff --git a/sys-cluster/lmod/Manifest b/sys-cluster/lmod/Manifest
new file mode 100644
index 000000000000..0eb72d5282ff
--- /dev/null
+++ b/sys-cluster/lmod/Manifest
@@ -0,0 +1 @@
+DIST lmod-8.4.20.tar.gz 19889342 BLAKE2B aef498ec8dd2b87aca02d66f394418aba4a81d1fec4684750e59d48d06bad16db7a24290920e40290ecba8a4bc65c7dbe5c23be28654db79433f41164fa4aaf6 SHA512 9749e34e7ad75531c87770b73fd20dab16c89c24e1a2d01e58f09f8510ffc8f896dfa7eab9dab26fe4d6d14ba04d331f98e08e92e0943aede9fe5131af038970
diff --git a/sys-cluster/lmod/files/99lmod b/sys-cluster/lmod/files/99lmod
new file mode 100644
index 000000000000..506b824d5a01
--- /dev/null
+++ b/sys-cluster/lmod/files/99lmod
@@ -0,0 +1 @@
+LMOD_CACHED_LOADS=yes
diff --git a/sys-cluster/lmod/files/lmod-8.4.19-no-libsandbox.patch b/sys-cluster/lmod/files/lmod-8.4.19-no-libsandbox.patch
new file mode 100644
index 000000000000..02248bc45484
--- /dev/null
+++ b/sys-cluster/lmod/files/lmod-8.4.19-no-libsandbox.patch
@@ -0,0 +1,13 @@
+diff --git a/configure.ac b/configure.ac
+index ca75e34c..e9cc49e0 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -616,7 +616,7 @@ AC_SUBST(SYS_LD_LIB_PATH)
+ SYS_LD_LIB_PATH=$LD_LIBRARY_PATH
+
+ AC_SUBST(SYS_LD_PRELOAD)
+-SYS_LD_PRELOAD=$LD_PRELOAD
++SYS_LD_PRELOAD=$(printf %s\\n $LD_PRELOAD | sed -e "s/libsandbox.so//g")
+
+ AC_SUBST(PATH_TO_SRC)
+ SRCDIR=$( cd $srcdir; pwd)
diff --git a/sys-cluster/lmod/files/module.1-8.4.20 b/sys-cluster/lmod/files/module.1-8.4.20
new file mode 100644
index 000000000000..2ec20e04ac85
--- /dev/null
+++ b/sys-cluster/lmod/files/module.1-8.4.20
@@ -0,0 +1,539 @@
+.Dd $Mdocdate: December 6 2020 $
+.Dt MODULE 1
+.Os
+.Sh NAME
+.Nm module
+.Nd lmod environment modules manager
+.Sh SYNOPSIS
+.Nm module
+.Op Ar options
+.Cm sub-command
+.Op Ar args ...
+.Sh DESCRIPTION
+.Nm
+from
+.Sy Lmod
+is a
+.Xr lua 1
+based module system to manage the users' environment under
+Unix systems, specifically designed to easily handle
+the
+.Ev MODULEPATH
+Hierarchical problem.
+Environment Modules provide a convenient way to
+dynamically change the users' environment through modulefiles.
+This includes easily adding or removing directories from the
+.Ev PATH , LD_LIBRARY_PATH , CPATH
+and other environment variables.
+All popular shells are supported, including bash, csh, fish,
+ksh, sh, tcsh, zsh, as well as some scripting languages such
+as tcl, perl and python.
+.Sh OPTIONS
+The following
+.Ar options
+are available:
+.Pp
+.Bl -tag -width Ds -compact
+.It Fl h , \&? , H , -help
+Show the help message.
+.Pp
+.It Fl -check_syntax , -checkSyntax
+Only check the
+.Nm
+command syntax, do not load any modules.
+.Pp
+.It Fl -config
+Report
+.Sy Lmod
+configuration.
+.Pp
+.It Fl -config_json
+Report
+.Sy Lmod
+configuration in json format.
+.Pp
+.It Fl D
+Write program tracing data to stderr.
+.Pp
+.It Fl d , -default
+List default modules only when used with
+.Cm avail .
+.Pp
+.It Fl -debug Ar dbglvl
+.Sy VALUES :
+1, 2, 3.
+.Pp
+Only write trace output with proper debug levels.
+.Pp
+.It Fl -dumpversion
+Dump version in a machine readable way and quit.
+.Pp
+.It Fl -expert
+Work in expert mode.
+.Pp
+.It Fl -force
+Force removal of a sticky module or save an empty collection.
+.Pp
+.It Fl -gitversion
+Dump git version in a machine readable way and quit.
+.Pp
+.It Fl -ignore_cache
+Treat the cache file(s) as out-of-date.
+.Pp
+.It Fl -initial_load
+Loading Lmod for first time in a user shell.
+.Pp
+.It Fl -latest
+Load latest (ignore default).
+.Pp
+.It Fl -mt
+Report Module Table State.
+.Pp
+.It Fl -no_redirect
+Force output of
+.Cm list ,
+.Cm avail
+and
+.Cm spider
+to stderr.
+.Pp
+.It Fl -novice
+Turn off
+.Fl -expert
+and
+.Fl -quiet
+flags.
+.Pp
+.It Fl -nx , -no_extensions
+.Pp
+.It Fl -pin_versions Ar pinVersions
+When doing a restore use the specified version, do not follow defaults.
+.Pp
+.It Fl q , -quiet
+Do not print out warnings.
+.Pp
+.It Fl r , -regexp
+Use regular expression match.
+.Pp
+.It Fl -raw
+Print modulefile in raw output when used with show.
+.Pp
+.It Fl -redirect
+Send the output of
+.Cm list ,
+.Cm avail
+and
+.Cm spider
+to stdout (not stderr).
+.Pp
+.It Fl -regression_testing
+Lmod regression testing.
+.Pp
+.It Fl -show_hidden
+.Cm avail
+and
+.Cm spider
+will report hidden modules.
+.Pp
+.It Fl -spider_timeout Ar timeout
+A timeout for
+.Cm spider .
+.Pp
+.It Fl s , -style Ar availStyle
+.Sy DEFAULT :
+system
+Site controlled avail style.
+.Pp
+.It Fl T , -trace
+.Pp
+.It Fl t , -terse
+Write out in machine readable format for
+.Cm list ,
+.Cm avail ,
+.Cm spider
+and
+.Cm savelist .
+.Pp
+.It Fl -timer
+Report run times.
+.Pp
+.It Fl v , -version
+Print version info and quit.
+.Pp
+.It Fl -w , -width Ar twidth
+Use
+.Ar twidth
+as max term width.
+.El
+.Sh SUB-COMMANDS
+.Ss HELP
+.TS
+tab(@);
+r l l.
+T{
+.Cm help
+T}@@T{
+Print the help message.
+T}
+T{
+.Cm help
+T}@T{
+.Ar module Op Ar moduleX moduleY ...
+T}@T{
+Print help messages from the given modules.
+T}
+.TE
+.Ss LOAD
+.TS
+tab(@);
+r l l.
+T{
+.Cm load , add
+T}@T{
+.Ar module Op Ar moduleX moduleY ...
+T}@T{
+Load the given modules.
+T}
+T{
+.Cm try-load , try-add
+T}@T{
+.Ar module Op Ar moduleX moduleY ...
+T}@T{
+Load the given modules, do not complain if not found.
+T}
+T{
+.Cm del , unload
+T}@T{
+.Ar module Op Ar moduleX moduleY ...
+T}@T{
+Unload the module(s), does not complain if not found.
+T}
+T{
+.Cm swap , sw , switch
+T}@T{
+.Ar moduleX moduleY
+T}@T{
+.Cm unload Ar moduleX
+and
+.Cm load Ar moduleY
+T}
+T{
+.Cm purge
+T}@@T{
+.Cm unload
+all modules
+T}
+T{
+.Cm refresh
+T}@@T{
+Reload aliases from the current list of modules.
+T}
+T{
+.Cm update
+T}@@T{
+Reload all currently loaded modules.
+T}
+.TE
+.Ss SEARCH
+.TS
+tab(@);
+r l l.
+T{
+.Cm list
+T}@@T{
+List all currently loaded modules.
+T}
+T{
+.Cm list
+T}@T{
+.Ar patX Op Ar patY ...
+T}@T{
+List all loaded modules that match any of the given patterns.
+T}
+T{
+.Cm avail , av
+T}@T{
+.Op Ar string
+T}@T{
+List all available modules.
+Restricts to modules containing
+.Ar string
+if it is provided.
+T}
+T{
+.Cm spider
+T}@@T{
+List all possible modules.
+T}
+T{
+.Cm spider
+T}@T{
+.Ar module
+T}@T{
+List all possible versions of that
+.Ar module
+file.
+T}
+T{
+.It Cm spider
+T}@T{
+.Ar string
+T}@T{
+List all modules that contain
+.Ar string .
+T}
+T{
+.Cm spider
+T}@T{
+.Ar name/version
+T}@T{
+Detailed information about that version of the module.
+T}
+T{
+.It Cm whatis
+T}@T{
+.Ar module
+T}@T{
+Print whatis information about the module.
+T}
+T{
+.Cm keyword , key
+T}@T{
+.Ar string
+T}@T{
+Search all name and
+.Cm whatis
+that contain
+.Ar string .
+T}
+.TE
+.Pp
+All searching commands (
+.Cm spider ,
+.Cm list ,
+.Cm avail ,
+.Cm keyword
+) support regular expressions with the
+.Fl r
+flag.
+.Pp
+For example, to find all modules that start with
+.Sq p
+or
+.Sq P :
+.D1 module -r spider '^p'
+.Pp
+Find all modules that have
+.Dq mpi
+in their name:
+.D1 module -r spider mpi
+.Pp
+Find all modules that end with
+.Dq mpi
+in their name:
+.D1 module -r spider 'mpi$'
+.Ss COLLECTIONS
+.TS
+tab(@);
+r l l.
+T{
+.Cm save , s
+T}@@T{
+Save the current list of modules to a user defined
+.Dq default
+collection.
+T}
+T{
+.Cm save , s
+T}@T{
+.Ar name
+T}@T{
+Save the current list of modules to the
+.Ar name
+collection.
+T}
+T{
+.Cm reset
+T}@@T{
+The same as
+.Cm restore
+.Ar system .
+T}
+T{
+.Cm restore , r
+T}@@T{
+Restore modules from the user's
+.Dq default
+(if defined) or the system default.
+T}
+T{
+.Cm restore , r
+T}@T{
+.Ar name
+T}@T{
+Restore modules from
+.Ar name
+collection.
+T}
+T{
+.Cm restore
+T}@T{
+.Ar system
+T}@T{
+Restore module state to system defaults.
+T}
+T{
+.Cm savelist
+T}@@T{
+List of saved collections.
+T}
+T{
+.Cm describe , mcc
+T}@T{
+.Ar name
+T}@T{
+Describe the contents of the
+.Ar name
+module collection.
+T}
+T{
+.Cm disable
+T}@T{
+.Ar name
+T}@T{
+Disable (i.e. remove) the
+.Ar name
+collection.
+T}
+.TE
+.Ss MISC
+.TS
+tab(@);
+r l l.
+T{
+.Cm is-loaded
+T}@T{
+.Ar modulefile
+T}@T{
+Return a true status if
+.Ar module
+is loaded.
+T}
+T{
+.Cm is-avail
+T}@T{
+.Ar modulefile
+T}@T{
+Return a true status if
+.Ar module
+can be loaded.
+T}
+T{
+.Cm show
+T}@T{
+.Ar modulefile
+T}@T{
+Show the commands in the
+.Ar module
+file.
+T}
+T{
+.Cm use [-a]
+T}@T{
+.Ar path
+T}@T{
+Prepend or append
+.Ar path
+to
+.Ev MODULEPATH .
+T}
+T{
+.Cm unuse
+T}@T{
+.Ar path
+T}@T{
+Remove
+.Ar path
+from
+.Ev MODULEPATH .
+T}
+T{
+.Cm tablelist
+T}@@T{
+Output list of active modules as a lua table.
+T}
+.TE
+.Ss DEPRECATED
+.TS
+tab(@);
+r l l.
+T{
+.Cm getdefault
+T}@T{
+.Op Ar name
+T}@T{
+Load the
+.Ar name
+collection of modules or the users
+.Dq default
+if no
+.Ar name
+given. Use
+.Cm restore
+Instead.
+T}
+T{
+.Cm setdefault
+T}@T{
+.Op Ar name
+T}@T{
+Save current list of modules to
+.Ar name
+if given, otherwise save as the
+.Dq default
+list for the user. Use
+.Cm save
+instead.
+T}
+.TE
+.Sh ENVIRONMENT
+To print properties and warnings in color, set the
+.Ev LMOD_COLORIZE
+environment variable to
+.Sy YES .
+.Sh SEE ALSO
+.Bd -filled -offset indent
+.TS
+tab(@);
+rb l.
+T{
+Documentation
+T}@T{
+.Lk http://lmod.readthedocs.org
+T}
+T{
+Github
+T}@T{
+.Lk https://github.com/TACC/Lmod
+T}
+T{
+Sourceforge
+T}@T{
+.Lk https://lmod.sf.net
+T}
+T{
+TACC Homepage
+T}@T{
+.Lk https://www.tacc.utexas.edu/research-development/tacc-projects/lmod
+T}
+.TE
+.Ed
+.Pp
+To report a bug please read
+.Lk http://lmod.readthedocs.io/en/latest/075_bug_reporting.html
+.Sh AUTHORS
+Modules based on Lua, written by
+.An Robert McLay Aq Mt mclay@tacc.utexas.edu .
+.Pp
+The man page for Gentoo linux is maintained by the
+.An Gentoo Science Project Aq Mt sci@gentoo.org .
diff --git a/sys-cluster/lmod/lmod-8.4.20.ebuild b/sys-cluster/lmod/lmod-8.4.20.ebuild
new file mode 100644
index 000000000000..a6f6713feebb
--- /dev/null
+++ b/sys-cluster/lmod/lmod-8.4.20.ebuild
@@ -0,0 +1,133 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+LUA_COMPAT=( lua5-{1..3} )
+inherit autotools lua-single
+
+DESCRIPTION="Environment Module System based on Lua"
+HOMEPAGE="https://lmod.readthedocs.io/en/latest"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/TACC/Lmod"
+else
+ SRC_URI="https://github.com/TACC/Lmod/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}"/Lmod-${PV}
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="+auto-swap +cache duplicate-paths test"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+RDEPEND="${LUA_DEPS}
+ dev-lang/tcl
+ dev-lang/tk
+ $(lua_gen_cond_dep '
+ >=dev-lua/luafilesystem-1.8.0[${LUA_USEDEP}]
+ dev-lua/luajson[${LUA_USEDEP}]
+ dev-lua/luaposix[${LUA_USEDEP}]
+ dev-lua/lua-term[${LUA_USEDEP}]
+ ')
+ virtual/pkgconfig
+"
+DEPEND="${RDEPEND}"
+BDEPEND="${RDEPEND}
+ test? (
+ $(lua_gen_cond_dep '
+ dev-util/hermes[${LUA_SINGLE_USEDEP}]
+ ')
+ app-shells/tcsh
+ )
+"
+
+PATCHES=( "${FILESDIR}"/${PN}-8.4.19-no-libsandbox.patch )
+
+pkg_pretend() {
+ elog "You can control the siteName and syshost settings by"
+ elog "using the variables LMOD_SITENAME and LMOD_SYSHOST, during"
+ elog "build time, which are both set to 'Gentoo' by default."
+ elog "There are a lot of options for this package, especially"
+ elog "for run time behaviour. Remember to use the EXTRA_ECONF variable."
+ elog "To see full list of options visit:"
+ elog "\t https://lmod.readthedocs.io/en/latest/090_configuring_lmod.html"
+}
+
+src_prepare() {
+ default
+ rm -r pkgs/{luafilesystem,term} || die
+ rm -r rt/{ck_mtree_syntax,colorize,end2end,help,ifur,settarg} || die
+ eautoreconf
+}
+
+src_configure() {
+ local LMOD_SITENAME="${LMOD_SITENAME:-Gentoo}"
+ local LMOD_SYSHOST="${LMOD_SYSHOST:-Gentoo}"
+
+ local LUAC="${LUA%/*}/luac${LUA#*lua}"
+
+ local myconf=(
+ --with-tcl
+ --with-fastTCLInterp
+ --with-colorize
+ --with-supportKsh
+ --without-useBuiltinPkgs
+ --with-siteControlPrefix
+ --with-siteName="${LMOD_SITENAME}"
+ --with-syshost="${LMOD_SYSHOST}"
+ --with-lua_include="$(lua_get_include_dir)"
+ --with-lua="${LUA}"
+ --with-luac="${LUAC}"
+ --with-module-root-path="${EPREFIX}/etc/modulefiles"
+ --with-spiderCacheDir="${EPREFIX}/etc/lmod_cache/spider_cache"
+ --with-updateSystemFn="${EPREFIX}/etc/lmod_cache/system.txt"
+ --prefix="${EPREFIX}/usr/share/Lmod"
+ --with-caseIndependentSorting
+ --without-hiddenItalic
+ --with-exportedModuleCmd
+ --with-useDotFiles
+ --without-redirect
+ --with-extendedDefault
+ $(use_with cache cachedLoads)
+ $(use_with duplicate-paths duplicatePaths)
+ $(use_with auto-swap autoSwap)
+ )
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ default
+}
+
+src_test() {
+ local -x PATH="${EPREFIX}/opt/hermes/bin:${PATH}"
+ tm -vvv || die
+ testcleanup || die
+}
+
+src_install() {
+ default
+ newman "${FILESDIR}"/module.1-8.4.20 module.1
+ # not a real man page
+ rm -r "${ED}"/usr/share/Lmod/share/man || die
+ doenvd "${FILESDIR}"/99lmod
+ insinto /etc/profile.d
+ newins "${ED}"/usr/share/Lmod/init/profile lmod.sh
+ newins "${ED}"/usr/share/Lmod/init/profile.fish lmod.fish
+ keepdir /etc/modulefiles
+ keepdir /etc/lmod_cache
+}
+
+pkg_postinst() {
+ if use cache ; then
+ elog "Lmod spider cache has been enabled."
+ elog "Remember to update the spider cache with"
+ elog "/usr/share/Lmod/libexec/update_lmod_system_cache_files \ "
+ elog "\t \$MODULEPATH"
+ fi
+}
diff --git a/sys-cluster/lmod/lmod-9999.ebuild b/sys-cluster/lmod/lmod-9999.ebuild
new file mode 100644
index 000000000000..a6f6713feebb
--- /dev/null
+++ b/sys-cluster/lmod/lmod-9999.ebuild
@@ -0,0 +1,133 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+LUA_COMPAT=( lua5-{1..3} )
+inherit autotools lua-single
+
+DESCRIPTION="Environment Module System based on Lua"
+HOMEPAGE="https://lmod.readthedocs.io/en/latest"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/TACC/Lmod"
+else
+ SRC_URI="https://github.com/TACC/Lmod/archive/${PV}.tar.gz -> ${P}.tar.gz"
+ S="${WORKDIR}"/Lmod-${PV}
+ KEYWORDS="~amd64 ~x86"
+fi
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="+auto-swap +cache duplicate-paths test"
+REQUIRED_USE="${LUA_REQUIRED_USE}"
+RESTRICT="!test? ( test )"
+
+RDEPEND="${LUA_DEPS}
+ dev-lang/tcl
+ dev-lang/tk
+ $(lua_gen_cond_dep '
+ >=dev-lua/luafilesystem-1.8.0[${LUA_USEDEP}]
+ dev-lua/luajson[${LUA_USEDEP}]
+ dev-lua/luaposix[${LUA_USEDEP}]
+ dev-lua/lua-term[${LUA_USEDEP}]
+ ')
+ virtual/pkgconfig
+"
+DEPEND="${RDEPEND}"
+BDEPEND="${RDEPEND}
+ test? (
+ $(lua_gen_cond_dep '
+ dev-util/hermes[${LUA_SINGLE_USEDEP}]
+ ')
+ app-shells/tcsh
+ )
+"
+
+PATCHES=( "${FILESDIR}"/${PN}-8.4.19-no-libsandbox.patch )
+
+pkg_pretend() {
+ elog "You can control the siteName and syshost settings by"
+ elog "using the variables LMOD_SITENAME and LMOD_SYSHOST, during"
+ elog "build time, which are both set to 'Gentoo' by default."
+ elog "There are a lot of options for this package, especially"
+ elog "for run time behaviour. Remember to use the EXTRA_ECONF variable."
+ elog "To see full list of options visit:"
+ elog "\t https://lmod.readthedocs.io/en/latest/090_configuring_lmod.html"
+}
+
+src_prepare() {
+ default
+ rm -r pkgs/{luafilesystem,term} || die
+ rm -r rt/{ck_mtree_syntax,colorize,end2end,help,ifur,settarg} || die
+ eautoreconf
+}
+
+src_configure() {
+ local LMOD_SITENAME="${LMOD_SITENAME:-Gentoo}"
+ local LMOD_SYSHOST="${LMOD_SYSHOST:-Gentoo}"
+
+ local LUAC="${LUA%/*}/luac${LUA#*lua}"
+
+ local myconf=(
+ --with-tcl
+ --with-fastTCLInterp
+ --with-colorize
+ --with-supportKsh
+ --without-useBuiltinPkgs
+ --with-siteControlPrefix
+ --with-siteName="${LMOD_SITENAME}"
+ --with-syshost="${LMOD_SYSHOST}"
+ --with-lua_include="$(lua_get_include_dir)"
+ --with-lua="${LUA}"
+ --with-luac="${LUAC}"
+ --with-module-root-path="${EPREFIX}/etc/modulefiles"
+ --with-spiderCacheDir="${EPREFIX}/etc/lmod_cache/spider_cache"
+ --with-updateSystemFn="${EPREFIX}/etc/lmod_cache/system.txt"
+ --prefix="${EPREFIX}/usr/share/Lmod"
+ --with-caseIndependentSorting
+ --without-hiddenItalic
+ --with-exportedModuleCmd
+ --with-useDotFiles
+ --without-redirect
+ --with-extendedDefault
+ $(use_with cache cachedLoads)
+ $(use_with duplicate-paths duplicatePaths)
+ $(use_with auto-swap autoSwap)
+ )
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+ default
+}
+
+src_test() {
+ local -x PATH="${EPREFIX}/opt/hermes/bin:${PATH}"
+ tm -vvv || die
+ testcleanup || die
+}
+
+src_install() {
+ default
+ newman "${FILESDIR}"/module.1-8.4.20 module.1
+ # not a real man page
+ rm -r "${ED}"/usr/share/Lmod/share/man || die
+ doenvd "${FILESDIR}"/99lmod
+ insinto /etc/profile.d
+ newins "${ED}"/usr/share/Lmod/init/profile lmod.sh
+ newins "${ED}"/usr/share/Lmod/init/profile.fish lmod.fish
+ keepdir /etc/modulefiles
+ keepdir /etc/lmod_cache
+}
+
+pkg_postinst() {
+ if use cache ; then
+ elog "Lmod spider cache has been enabled."
+ elog "Remember to update the spider cache with"
+ elog "/usr/share/Lmod/libexec/update_lmod_system_cache_files \ "
+ elog "\t \$MODULEPATH"
+ fi
+}
diff --git a/sys-cluster/lmod/metadata.xml b/sys-cluster/lmod/metadata.xml
new file mode 100644
index 000000000000..cee363a19e2e
--- /dev/null
+++ b/sys-cluster/lmod/metadata.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>gentoo@aisha.cc</email>
+ <name>Aisha Tammy</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>sci@gentoo.org</email>
+ <name>Gentoo Science Project</name>
+ </maintainer>
+ <longdescription>
+ Lmod is a lua based program to manage the user environment
+ under Unix systems, specifically designed to easily handle the MODULEPATH
+ Hierarchical problem. Environment Modules provide a convenient way to
+ dynamically change the users' environment through modulefiles. This
+ includes easily adding or removing directories to the PATH,
+ LD_LIBRARY_PATH and other environment variables.
+ </longdescription>
+ <use>
+ <flag name="auto-swap">enable auto swapping of compiler</flag>
+ <flag name="cache">enable caching of modules</flag>
+ <flag name="duplicate-paths">allow duplicate entries in path</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">TACC/Lmod</remote-id>
+ </upstream>
+</pkgmetadata>