diff --git a/Lmod-8.1.17.tar.gz b/Lmod-8.1.17.tar.gz new file mode 100644 index 0000000..4f9897d Binary files /dev/null and b/Lmod-8.1.17.tar.gz differ diff --git a/Lmod.spec b/Lmod.spec new file mode 100644 index 0000000..2299ae9 --- /dev/null +++ b/Lmod.spec @@ -0,0 +1,109 @@ +%global macrosdir %(d=%{_rpmconfigdir}/macros.d; [ -d $d ] || d=%{_sysconfdir}/rpm; echo $d) +# We'd like to be noarch, but Lmod encodes the system lua path +%global debug_package %{nil} + +Name: Lmod +Version: 8.1.17 +Release: 1 +Summary: Environmental Modules System in Lua + +License: MIT and LGPLv2 +URL: https://github.com/TACC/Lmod +Source0: https://github.com/TACC/Lmod/archive/%{version}.tar.gz#/Lmod-%{version}.tar.gz +Source1: macros.%{name} + +# redirect echo stmts to stderr in init/bash.in +# Having them go to stdout breaks openQA tests when Lmod is installed +# Backported version of +# https://github.com/TACC/Lmod/commit/fa2e3a1a84951b38a56c76391e6b0c340c0199a7 +Patch0: lmod-8.1.17-echo_stderr.patch + +BuildRequires: gcc +BuildRequires: lua-devel +BuildRequires: lua-filesystem +BuildRequires: lua-json +BuildRequires: lua-posix +BuildRequires: lua-term +BuildRequires: tcl-devel +BuildRequires: zsh +Requires: lua-filesystem +Requires: lua-json +Requires: lua-posix +Requires: lua-term +Requires: /usr/bin/ps +Provides: environment(modules) + +%description +Lmod is a Lua based module system that easily handles 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 environment variable. +Modulefiles for library packages provide environment variables that specify +where the library and header files can be found. + + +%prep +%setup -q +%patch0 -p1 +sed -i -e 's,/usr/bin/env ,/usr/bin/,' src/*.tcl +# Remove bundled lua-filesystem and lua-term +rm -r pkgs/{luafilesystem,term} tools/json.lua +#sed -i -e 's, pkgs , ,' Makefile.in +# Remove unneeded shbangs +sed -i -e '/^#!/d' init/*.in + + +%build +%if 0%{?rhel} && 0%{?rhel} <= 6 +%configure --prefix=%{_datadir} PS=/bin/ps +%else +%configure --prefix=%{_datadir} PS=/usr/bin/ps +%endif +%make_build + + +%install +%make_install +# init scripts are sourced +find %{buildroot}%{_datadir}/lmod/%{version}/init -type f -exec chmod -x {} + +mkdir -p %{buildroot}%{_sysconfdir}/modulefiles +mkdir -p %{buildroot}%{_datadir}/modulefiles +mkdir -p %{buildroot}%{_sysconfdir}/profile.d + +cat <<'EOF' > %{buildroot}%{_sysconfdir}/profile.d/00-modulepath.sh +[ -z "$MODULEPATH" ] && + [ "$(readlink /etc/alternatives/modules.sh)" = "/usr/share/lmod/lmod/init/profile" -o -f /etc/profile.d/z00_lmod.sh ] && + export MODULEPATH=%{_sysconfdir}/modulefiles:%{_datadir}/modulefiles || : +EOF + +cat << 'EOF' > %{buildroot}%{_sysconfdir}/profile.d/00-modulepath.csh +if (! $?MODULEPATH && ( `readlink /etc/alternatives/modules.csh` == /usr/share/lmod/lmod/init/cshrc || -f /etc/profile.d/z00_lmod.csh ) ) then + setenv MODULEPATH %{_sysconfdir}/modulefiles:%{_datadir}/modulefiles +endif +EOF + +# Add a snippet to make sure that the 00-modulepath.* is included, when +# the user calls /etc/profile.d/modules.sh directly, just below +# the shbang line. +sed -i '2i\. /etc/profile.d/00-modulepath.sh\n' \ + %{buildroot}%{_datadir}/lmod/lmod/init/profile + +# Install the rpm config file +install -Dpm 644 %{SOURCE1} %{buildroot}/%{macrosdir}/macros.%{name} + +%files +%license License +%doc INSTALL README.md README_lua_modulefiles.txt +%{_sysconfdir}/modulefiles +%config(noreplace) %{_sysconfdir}/profile.d/00-modulepath.csh +%config(noreplace) %{_sysconfdir}/profile.d/00-modulepath.sh +%ghost %{_sysconfdir}/profile.d/modules.csh +%ghost %{_sysconfdir}/profile.d/modules.sh +%{_datadir}/lmod +%{_datadir}/modulefiles +%{macrosdir}/macros.%{name} + + +%changelog +* Fri Oct 10 2020 wangxiao - 8.1.17-1 +- package init. diff --git a/Lmod.yaml b/Lmod.yaml new file mode 100644 index 0000000..26b2b11 --- /dev/null +++ b/Lmod.yaml @@ -0,0 +1,4 @@ +version_control: github +src_repo: TACC/Lmod +tag_prefix: "" +seperator: . diff --git a/lmod-8.1.17-echo_stderr.patch b/lmod-8.1.17-echo_stderr.patch new file mode 100644 index 0000000..fcc0bc0 --- /dev/null +++ b/lmod-8.1.17-echo_stderr.patch @@ -0,0 +1,20 @@ +--- Lmod-8.1.17/init/bash.in 2019-12-11 11:20:35.213144077 -0800 ++++ Lmod-8.1.17/init/bash.in.new 2019-12-11 11:17:24.024473520 -0800 +@@ -18,7 +18,7 @@ + export LMOD_PKG=@PKGV@ + + if [ -n "${__lmod_vx:-}" ]; then +- echo "Shell debugging temporarily silenced: export LMOD_SH_DBG_ON=1 for this output ($LMOD_PKG/init/bash)" ++ echo "Shell debugging temporarily silenced: export LMOD_SH_DBG_ON=1 for this output ($LMOD_PKG/init/bash)" 1>&2 + fi + + export LMOD_DIR=$LMOD_PKG/libexec +@@ -163,7 +163,7 @@ + + # Restoring XTRACE and VERBOSE states. + if [ -n "${__lmod_vx:-}" ]; then +- echo "Shell debugging restarted" ++ echo "Shell debugging restarted" 1>&2 + set -$__lmod_vx; + unset __lmod_vx; + fi; diff --git a/macros.Lmod b/macros.Lmod new file mode 100644 index 0000000..e3592a8 --- /dev/null +++ b/macros.Lmod @@ -0,0 +1,3 @@ +# RPM macros for environment modules + +%_modulesdir %{_datadir}/modulefiles