Egbert Eich
fc63d30e35
Hard code year when building documentation. OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=114
97 lines
3.2 KiB
Bash
97 lines
3.2 KiB
Bash
#!/bin/bash
|
|
|
|
scope=system
|
|
what=$1
|
|
|
|
addpath() {
|
|
path=$1
|
|
shift
|
|
while [ -n "$1" ]; do
|
|
eval "${path}"=${1}:${!path}
|
|
shift
|
|
done
|
|
}
|
|
|
|
find_packages() {
|
|
if [ $scope = user ]; then
|
|
# In case a packages.yaml is left in the system scope
|
|
# from an old installation get it out of the way.
|
|
if [ ! -e /usr/etc/spack/packages.yaml ]; then
|
|
test -e /etc/spack/packages.yaml -a ! -e /etc/packages.yaml.rpmsave && \
|
|
mv /etc/spack/packages.yaml /etc/spack/packages.yaml.rpmsave
|
|
rm -f /etc/spack/packages.yaml
|
|
fi
|
|
test -e /usr/etc/spack/packages.yaml -a ! -e /usr/etc/packages.yaml.rpmsave && \
|
|
mv /usr/etc/spack/packages.yaml /usr/etc/spack/packages.yaml.rpmsave
|
|
# drop all root rights, when calling external find
|
|
sudo -u nobody PATH=${mypath}:${PATH} spack external find --scope user --all #--exclude 'installdbgsymbols'
|
|
if [ -e /var/lib/nobody/.spack/packages.yaml ] ; then
|
|
chown root:root /var/lib/nobody/.spack/packages.yaml
|
|
mv -v /var/lib/nobody/.spack/packages.yaml /usr/etc/spack/packages.yaml
|
|
rm -rf /var/lib/nobody/.spack
|
|
fi
|
|
else
|
|
# May run in a container...
|
|
PATH=${mypath}:${PATH} spack external find --scope system --all #--exclude 'installdbgsymbols'
|
|
fi
|
|
test -e /usr/etc/spack/packages.yaml.rpmsave && \
|
|
{ diff -q /usr/etc/spack/packages.yaml.rpmsave /usr/etc/spack/packages.yaml &> /dev/null && \
|
|
rm /usr/etc/spack/packages.yaml.rpmsave; } || true
|
|
}
|
|
|
|
find_compilers() {
|
|
if [ $scope = user ]; then
|
|
test -e /etc/spack/compilers.yaml \
|
|
-a ! -e /etc/spack/compilers.yaml.rpmsave && \
|
|
mv /etc/spack/compilers.yaml /etc/spack/compilers.yaml.rpmsave
|
|
rm -f /etc/spack/compilers.yaml
|
|
fi
|
|
diff -q /etc/spack/compilers.yaml.rpmsave /etc/spack/compilers.yaml &> /dev/null \
|
|
&& rm /etc/spack/compilers.yaml.rpmsave
|
|
test -e /etc/spack/compilers.yaml.rpmsave && \
|
|
echo -e "/etc/spack/compilers.yaml.rpmsave exists,\n"\
|
|
" compilers are handled in /etc/spack/packages.yaml, now.\n"\
|
|
" Please check files for compilers you may have added manually" || true
|
|
}
|
|
|
|
if [ -e /etc/spack/no_rpm_trigger ] ; then
|
|
exit 0
|
|
fi
|
|
if [ "x$(id -u)" != "x0" ] ; then
|
|
echo "Must run as root, in order to copy back the configuration files and use sudo"
|
|
exit 0
|
|
fi
|
|
|
|
echo "Create /etc/spack/no_rpm_trigger to stop spack to search for new packages after a rpm install"
|
|
# save old packages.yml, it has to be removed as when not
|
|
# the new and old packages.yaml files would have to be
|
|
# combined
|
|
|
|
|
|
# prepare the path
|
|
shopt -s nullglob
|
|
addpath mypath /usr/lib64/mpi/gcc/openmpi4/bin
|
|
addpath mypath /usr/lib64/mpi/gcc/openmpi3/bin
|
|
addpath mypath /usr/lib64/mpi/gcc/openmpi2/bin
|
|
addpath mypath /usr/lib64/mpi/gcc/openmpi1/bin
|
|
addpath mypath /usr/lib64/mpi/gcc/mvapich2/bin
|
|
addpath mypath /usr/lib64/mpi/gcc/mpich/bin
|
|
addpath mypath /usr/lib/hpc/gnu*/mpi/openmpi/[2-9].*/bin
|
|
addpath mypath /usr/lib/hpc/gnu*/mpi/mpich/[3-9].*/bin
|
|
addpath mypath /usr/lib/hpc/gnu*/mpi/mvapich2/[2-9].*/bin
|
|
addpath cpath /usr/lib/hpc/compiler/gnu/*/bin
|
|
|
|
# test if we can run as nobody
|
|
getent passwd nobody &> /dev/null
|
|
if [ "x$?" == "x0" ] ; then
|
|
scope=user
|
|
fi
|
|
|
|
case $what in
|
|
packages) find_packages $scope ;;
|
|
compilers) find_compilers $scope ;;
|
|
'') find_packages $scope
|
|
find_compilers $scope ;;
|
|
*) exit 1 ;;
|
|
esac
|