Files
RPM/Pmodules.spec
2026-02-05 14:26:48 +01:00

171 lines
6.4 KiB
RPMSpec

#
# 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.4
Release: 1%{?dist}
Summary: PSI module system
Group: System Environment/Daemons
License: GPL
URL: https://pmodules.gitpages.psi.ch
Packager: Achim Gsell <achim.gsell@psi.ch>
Vendor: Paul Scherrer Institut
%define modules_version 3.2.10.2
Requires: make
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@:${HOME}/.cache/Pmodules/distfiles:g;"
sed_cmd+="s:@INSTALL_ROOT@:/opt/psi:g;"
sed_cmd+="s:@PREFIX@:%{_prefix}: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"
sed "${sed_cmd}" "%{builddir}/config/pmodules.sh.in" > "%{builddir}/config/pmodules.sh"
#------------------------------------------------------------------------
# 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/Pmodules.yaml.sample
install -m 0644 %{builddir}/config/pmodules.sh %{prefix}/share/Pmodules/init/pmodules.sh
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
ln -sf /etc/Pmodules.yaml %{prefix}/share/Pmodules/config/Pmodules.yaml
#------------------------------------------------------------------------
# f i l e s
%files
%defattr(-,root,root)
%dir %_prefix/share/Pmodules
%dir %_prefix/share/Pmodules/config
%_prefix/share/Pmodules/bin
%_prefix/share/Pmodules/config
%_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/pmodules.sh 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/pmodules.sh
fi
#------------------------------------------------------------------------
# p r e - u n i n s t a l l
#------------------------------------------------------------------------
# c h a n g e l o g
%changelog
* Fri Nov 28 2025 Achim Gsell <achim.gsell@psi.ch>
- Pmodules version 2.0.3
- untabify spec file
- default directory for downloaded files (PMODULES_DISTFILESDIR) is now
${HOME}/.cache/Pmodules/distfiles
- shell profile: don't initialize Pmodules if UID is less then 1000
* Mon Nov 3 2025 Achim Gsell <achim.gsell@psi.ch>
- Pmodules 2.0.2
- %_prefix/share/Pmodules/config/Pmodules.yaml is now a sym-link to /etc/Pmodules.yaml
- install sample config file as %_prefix/share/Pmodules/config/Pmodules.yaml.sample
* Wed Aug 6 2025 Achim Gsell <achim.gsell@psi.ch>
initial version
# vim: ts=8 ft=spec