SHA256
1
0
forked from pool/spack
spack/run-find-external.sh.in
Christian Goll 9a9d0f0da8 Accepting request 1186519 from home:eeich:branches:network:cluster
- Update to 0.22.1.
  * Bug Fixes:
    - Fix reuse of externals on Linux.
    - Ensure parent gcc-runtime version >= child.
    - Ensure the latest gcc-runtime is rpath'ed when multiple exist
      among link deps.
    - Improve version detection of glibc.
    - Improve heuristics for solver.
    - Make strong preferences override reuse.
    - Reduce verbosity when C compiler is missing.
    - Make missing ccache executable an error when required.
    - Make every environment view containing `python` a `venv`.
    - Fix external detection for compilers with os but no target.
    - Fix version optimization for roots.
    - Handle common implementations of pagination of tags in OCI
      build caches.
    - Apply fetched patches to develop specs.
    - Avoid Windows wrappers for filesystem utilities on non-Windows.
    - Fix formatting issue in `spack audit`.
  * Package updates:
    - Require libiconv for iconv.
      Notice that glibc/musl also provide iconv, but are not
      guaranteed to be complete. Set `packages:iconv:require:[glibc]`
      to restore the old behavior.
    - protobuf: fix 3.4:3.21 patch checksum.
    - protobuf: update hash for patch needed when="@3.4:3.21".
    - git: bump v2.39 to 2.45; deprecate unsafe versions.
    - gcc: use `-rpath {rpath_dir}` not `-rpath={rpath dir}`.
    - Remove mesa18 and libosmesa.
    - Enforce consistency of `gl` providers.

OBS-URL: https://build.opensuse.org/request/show/1186519
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=107
2024-07-10 08:22:09 +00:00

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