# # File hierarchy: # # /etc/Pmodules # /etc/profile.d # /usr/bin/ # /usr/share/Pmodules/bin # /usr/share/Pmodules/libexec # /usr/share/Pmodules/lib # /usr/share/Pmodules/init # /usr/share/doc/Pmodules # /usr/share/licenses/Pmodules Name: Pmodules Version: 2.0.1 Release: 1%{?dist} Summary: PSI module system Group: System Environment/Daemons License: GPL URL: https://pmodules.gitpages.psi.ch Packager: Achim Gsell Vendor: Paul Scherrer Institut %define modules_version 3.2.10.2 Requires: lua Requires: luarocks Requires: lua-posix Requires: tcl Requires: tcllib Requires: Lmod Requires: p7zip Requires: patchelf Requires: Pmodules_bash Requires: Pmodules_modules = 3.2.10.2 Provides: Pmodules conflicts: environment_modules Source0: https://github.com/Pmodules/Pmodules/archive/refs/tags/%{version}.tar.gz %description Pmodules #------------------------------------------------------------------------ # d e f i n i t i o n s # %define debug_package %nil %define _prefix /usr %define prefix %{buildroot}/%{_prefix} %define builddir %{_builddir}/%{name}-%{version} #------------------------------------------------------------------------ # p r e p %prep %setup -b 0 -q -n Pmodules-%{version} #------------------------------------------------------------------------ # b u i l d %build sed_cmd='' sed_cmd+="s:@PMODULES_VERSION@:%{version}:g;" sed_cmd+="s:@MODULES_VERSION@:%{modules_version}:g;" sed_cmd+="s:@TCL_VERSION@:8.6:g;" sed_cmd+="s:@PMODULES_TMPDIR@:/var/tmp/${USER}:g;" sed_cmd+="s:@PMODULES_DISTFILESDIR@:/var/cache/Pmodules/distfiles:g;" sed_cmd+="s:@INSTALL_ROOT@:/opt/psi:g;" libexec_dir='/usr/share/Pmodules/libexec' sed_cmd+="s:@BASH@:${libexec_dir}/bash:g;" sed_cmd+="s:@MODULECMD@:${libexec_dir}/modulecmd.bash:g;" sed "${sed_cmd}" "%{builddir}/Pmodules/modulecmd.in" > "%{builddir}/Pmodules/modulecmd" sed "${sed_cmd}" "%{builddir}/Pmodules/modulecmd.bash.in" > "%{builddir}/Pmodules/modulecmd.bash" sed "${sed_cmd}" "%{builddir}/Pmodules/libpmodules.bash.in" > "%{builddir}/Pmodules/libpmodules.bash" sed "${sed_cmd}" "%{builddir}/Pmodules/modbuild.in" > "%{builddir}/Pmodules/modbuild" sed "${sed_cmd}" "%{builddir}/config/Pmodules.yaml.in" > "%{builddir}/config/Pmodules.yaml" #------------------------------------------------------------------------ # i n s t a l l %install mkdir -p %{prefix}/share/Pmodules/bin mkdir -p %{prefix}/share/Pmodules/config mkdir -p %{prefix}/share/Pmodules/libexec mkdir -p %{prefix}/share/Pmodules/lib/Pmodules mkdir -p %{prefix}/share/Pmodules/init mkdir -p %{prefix}/share/doc/Pmodules mkdir -p %{prefix}/share/licenses/Pmodules install -m 0644 %{builddir}/LICENSE %{prefix}/share/licenses/Pmodules install -m 0644 %{builddir}/CHANGELOG.md %{prefix}/share/doc/Pmodules install -m 0644 %{builddir}/config/Pmodules.yaml %{prefix}/share/Pmodules/config install -m 0755 %{builddir}/Pmodules/modulecmd %{prefix}/share/Pmodules/bin install -m 0755 %{builddir}/Pmodules/modbuild %{prefix}/share/Pmodules/bin install -m 0644 %{builddir}/Pmodules/libpmodules.bash %{prefix}/share/Pmodules/lib install -m 0644 %{builddir}/Pmodules/libpbuild.bash %{prefix}/share/Pmodules/lib install -m 0644 %{builddir}/Pmodules/libstd.bash %{prefix}/share/Pmodules/lib install -m 0644 %{builddir}/Pmodules/libmodules.tcl %{prefix}/share/Pmodules/lib/Pmodules install -m 0644 %{builddir}/tclIndex %{prefix}/share/Pmodules/lib/Pmodules install -m 0755 %{builddir}/Pmodules/modulecmd.bash %{prefix}/share/Pmodules/libexec install -m 0755 %{builddir}/Pmodules/yq.x86_64_Linux %{prefix}/share/Pmodules/libexec/yq install -m 0644 %{builddir}/Pmodules/bash %{prefix}/share/Pmodules/init install -m 0644 %{builddir}/Pmodules/bash_completion %{prefix}/share/Pmodules/init install -m 0644 %{builddir}/Pmodules/csh %{prefix}/share/Pmodules/init install -m 0644 %{builddir}/Pmodules/zsh %{prefix}/share/Pmodules/init ln -sf /usr/bin/7za %{prefix}/share/Pmodules/libexec/sevenz echo -e "#!/bin/sh\n\n" > %{prefix}/share/Pmodules/init/profile echo -e "source %{_prefix}/share/Pmodules/init/bash\n" > %{prefix}/share/Pmodules/init/profile #------------------------------------------------------------------------ # f i l e s %files %defattr(-,root,root) %dir %_prefix/share/Pmodules %dir %_prefix/share/Pmodules/config %config(noreplace) %_prefix/share/Pmodules/config/Pmodules.yaml %_prefix/share/Pmodules/bin %_prefix/share/Pmodules/lib %_prefix/share/Pmodules/libexec %_prefix/share/Pmodules/init %doc CHANGELOG.md %{_prefix}/share/licenses/Pmodules #------------------------------------------------------------------------ # c l e a n u p %clean %__rm -rf %buildroot #------------------------------------------------------------------------ # p o s t - i n s t a l l %post # Cleanup from pre-alternatives [ ! -L /etc/profile.d/modules.sh ] && rm -f /etc/profile.d/modules.sh /usr/sbin/update-alternatives --install /etc/profile.d/modules.sh modules.sh \ /usr/share/Pmodules/init/profile 30 #------------------------------------------------------------------------ # t r i g g e r i n #------------------------------------------------------------------------ # p o s t - u n i n s t a l l %postun if [ $1 -eq 0 ] ; then /usr/sbin/update-alternatives --remove modules.sh /usr/share/Pmodules/init/profile fi #------------------------------------------------------------------------ # p r e - u n i n s t a l l #------------------------------------------------------------------------ # c h a n g e l o g %changelog * Wed Aug 6 2025 Achim Gsell