Accepting request 849456 from network:cluster:staging

move from staging to devel repo

OBS-URL: https://build.opensuse.org/request/show/849456
OBS-URL: https://build.opensuse.org/package/show/network:cluster/spack?expand=0&rev=1
This commit is contained in:
Christian Goll 2020-11-19 14:49:24 +00:00 committed by Git OBS Bridge
commit 0ecd3ddaef
9 changed files with 459 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,69 @@
From: Egbert Eich <eich@suse.com>
Date: Tue Sep 22 09:42:40 2020 +0200
Subject: Make spack paths compliant to distro installation
Patch-mainline: Not yet
Git-commit: 0e7934fd94b6f5ec2059b73d7b17b7e048d61b2d
References:
Signed-off-by: Egbert Eich <eich@suse.com>
---
etc/spack/defaults/config.yaml | 8 ++++----
etc/spack/defaults/repos.yaml | 2 +-
lib/spack/spack/paths.py | 2 +-
3 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/etc/spack/defaults/config.yaml b/etc/spack/defaults/config.yaml
index a572787..cbad1b7 100644
--- a/etc/spack/defaults/config.yaml
+++ b/etc/spack/defaults/config.yaml
@@ -21,7 +21,7 @@ config:
# Locations where templates should be found
template_dirs:
- - $spack/share/spack/templates
+ - /usr/share/spack/templates
# Default directory layout
@@ -30,8 +30,8 @@ config:
# Locations where different types of modules should be installed.
module_roots:
- tcl: $spack/share/spack/modules
- lmod: $spack/share/spack/lmod
+ tcl: /usr/share/spack/modules
+ lmod: /usr/share/spack/lmod
# Temporary locations Spack can try to use for builds.
@@ -67,7 +67,7 @@ config:
# Cache directory for already downloaded source tarballs and archived
# repositories. This can be purged with `spack clean --downloads`.
- source_cache: $spack/var/spack/cache
+ source_cache: /var/spack/cache
# Cache directory for miscellaneous files, like the package index.
diff --git a/etc/spack/defaults/repos.yaml b/etc/spack/defaults/repos.yaml
index f3e0065..2469194 100644
--- a/etc/spack/defaults/repos.yaml
+++ b/etc/spack/defaults/repos.yaml
@@ -11,4 +11,4 @@
# ~/.spack/repos.yaml
# -------------------------------------------------------------------------
repos:
- - $spack/var/spack/repos/builtin
+ - /var/lib/spack/repos/builtin
diff --git a/lib/spack/spack/paths.py b/lib/spack/spack/paths.py
index e5541ef..bc8e49d 100644
--- a/lib/spack/spack/paths.py
+++ b/lib/spack/spack/paths.py
@@ -37,7 +37,7 @@
operating_system_path = os.path.join(module_path, 'operating_systems')
test_path = os.path.join(module_path, "test")
hooks_path = os.path.join(module_path, "hooks")
-var_path = os.path.join(prefix, "var", "spack")
+var_path = os.path.join("/", "var", "lib", "spack")
repos_path = os.path.join(var_path, "repos")
share_path = os.path.join(prefix, "share", "spack")

21
README.SUSE Normal file
View File

@ -0,0 +1,21 @@
openSUSE/SUSE specific Settings =============================================
The packages build by a regular user are stored in the home directory and so
only available for this user. When the packages should be available for all
users on a system, the user who builds the packages, must be able to write to
the global spack user directories under /usr/lib/spack/ Packages stored under
this path are available for all user via lmod.
To add a user to the group spack so that he can write to the global spack
directory, execute (as root):
# usermod -a -G spack <user_login>
and change the setting for 'install_tree:' to the global spack directory in the
configuration '~/.spack/config.yaml' for this user.
NOTE:
As the recipes are contributed by the spack community and rely also on external
packages, a signification part of the recipes may fail to create packages.

View File

@ -0,0 +1,28 @@
From dce8997ce770ec420b2946936caf92760638d439 Mon Sep 17 00:00:00 2001
From: Christian Goll <cgoll@suse.de>
Date: Wed, 11 Nov 2020 20:29:55 +0100
Subject: [PATCH] fix tumbleweed naming
---
lib/spack/spack/operating_systems/linux_distro.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/lib/spack/spack/operating_systems/linux_distro.py b/lib/spack/spack/operating_systems/linux_distro.py
index a6608e6d3..dfa09b16e 100644
--- a/lib/spack/spack/operating_systems/linux_distro.py
+++ b/lib/spack/spack/operating_systems/linux_distro.py
@@ -33,6 +33,11 @@ def __init__(self):
if 'ubuntu' in distname:
version = '.'.join(version[0:2])
+ # openSUSE Tumbleweed is a rolling release which can change
+ # more than once in a week, so set version to tumbleweed
+ elif 'opensuse-tumbleweed' in distname:
+ distname = 'opensuse'
+ version = 'tumbleweed'
else:
version = version[0]
--
2.26.2

3
spack-0.15.4.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:ce195bc79956675d813cc7837840517135064dcbe211e797b7d171cd8810d31d
size 4805201

10
spack-recipes-rpmlintrc Normal file
View File

@ -0,0 +1,10 @@
# These files are patches and not to be run directly
addFilter("script-without-shebang")
# These files are installed as part of the spack recipes
# and shouldn't be in a devel package
addFilter("devel-file-in-non-devel-package*")
# No group any more
addFilter("non-standard-group Unspecified")
# Spurious self-applying patches from an upstream source.
# These are part of recipes and not intended to run as scripts.
addFilter("non-executable-script /var/lib/spack/repos.*")

22
spack.changes Normal file
View File

@ -0,0 +1,22 @@
-------------------------------------------------------------------
Mon Nov 16 14:42:32 UTC 2020 - Christian Goll <cgoll@suse.com>
- added profile file for csh
- enabled projections
- updated README.SUSE
-------------------------------------------------------------------
Wed Nov 11 19:56:11 UTC 2020 - Christian Goll <cgoll@suse.com>
- added patches to be more on the traditional file system hierarchy
and avoid explicit version in tumbleweed.
* added file Make-spack-paths-compliant-to-distro-installation.patch
* added file fix-tumbleweed-naming.patch
-------------------------------------------------------------------
Fri Sep 11 07:50:30 UTC 2020 - Ana Guerrero Lopez <aguerrero@suse.com>
- Initial release. Version 0.15.4
* Make-spack-paths-compliant-to-distro-installation.patch
Make spack paths compliant to distro installation.

282
spack.spec Normal file
View File

@ -0,0 +1,282 @@
#
# spec file for package spack
#
# Copyright (c) 2020 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%define spack_dir %_prefix/lib/spack/
%define spack_group spack
Name: spack
Version: 0.15.4
Release: 0
Summary: Package manager for HPC systems
License: Apache-2.0 AND MIT AND Python-2.0 AND BSD-3-Clause
URL: https://spack.io
Source0: https://github.com/spack/spack/archive/v%{version}.tar.gz#/spack-%{version}.tar.gz
Patch0: Make-spack-paths-compliant-to-distro-installation.patch
Patch1: fix-tumbleweed-naming.patch
BuildRequires: polkit
BuildRequires: fdupes
BuildRequires: python-base
BuildRequires: lua-lmod
Requires: %{name}-recipes = %{version}
Requires: curl
Requires: lua-lmod
Requires: pattern() = devel_basis
Requires: polkit
Requires: gcc-fortran
Requires: gpg2
Requires: xz
Requires: bzip2
Requires: spack-recipes
Recommends: spack-recipes = %version
BuildArch: noarch
%if 0%{?sle_version} <= 120500 && !0%{?is_opensuse}
%define __python3 python3
%endif
%description
Spack is a configurable Python-based HPC package manager, automating
the installation and fine-tuning of simulations and libraries.
It operates on a wide variety of HPC platforms and enables users
to build many code configurations. Software installed by Spack
runs correctly regardless of environment, and file management
is streamlined. Spack can install many variants of the same build
using different compilers, options, and MPI implementations.
This package provides a module file that must be loaded to use spack.
%package recipes
Summary: Spack built-in package recipes
Requires: %{name} >= %version
%description recipes
Spack is a configurable Python-based HPC package manager, automating
the installation and fine-tuning of simulations and libraries.
It operates on a wide variety of HPC platforms and enables users
to build many code configurations. Software installed by Spack
runs correctly regardless of environment, and file management
is streamlined. Spack can install many variants of the same build
using different compilers, options, and MPI implementations.
This package contains the built-in package recipes.
%prep
%setup -q
%autopatch -p1
%build
# Nothing to build
%install
# Fix some rpmlint warnings
## Remove files not required to run spack
rm -rf lib/spack/spack/test
rm -rf share/spack/qa
rm -rf var/spack/repos/builtin.mock var/spack/gpg.mock var/spack/mock_configs
rm -rf lib/spack/external/ruamel/yaml/.ruamel
find . -type f -name .gitignore -delete
find . -type f -name .nojekyll -delete
rm -f lib/spack/docs/_spack_root
ln -sf ../.. lib/spack/docs/_spack_root
## No need for the standalone scripts
rm -f lib/spack/external/macholib/macho_*.py
## Fix shebangs
sed -i 's@#!/bin/env sh@#!/bin/bash@' var/spack/repos/builtin/packages/beast-tracer/tracer
sed -i 's@#!/usr/bin/env bash@#!/bin/bash@' share/spack/docker/package-index/split.sh
sed -i 's@#! /usr/bin/env bash@ #!/bin/bash@' share/spack/docker/entrypoint.bash
mkdir -p %{buildroot}%{spack_dir}
mkdir -p %{buildroot}%{spack_dir}/opt
mkdir -p %{buildroot}%{spack_dir}/bin
mkdir -p %{buildroot}%{_datarootdir}/spack
mkdir -p %{buildroot}%{_datarootdir}/spack/modules
mkdir -p %{buildroot}%{_localstatedir}/lib/spack
mkdir -p %{buildroot}%{_localstatedir}/lib/spack/junit-report
mkdir -p %{buildroot}%{_localstatedir}/cache/spack
mkdir -p %{buildroot}%{_sysconfdir}/skel/.spack/
mkdir -p %{buildroot}/%{_bindir}
ln -sf %{buildroot}/%{_localstatedir}/cache/spack %{buildroot}%{_localstatedir}/lib/spack/cache
# Copy files to corresponding paths
cp -r etc lib %{buildroot}%{spack_dir}
cp -r share/spack/* %{buildroot}%{_datarootdir}/spack
cp -r var/spack/* %{buildroot}%{_localstatedir}/lib/spack
cp -r bin/sbang %{buildroot}/%{_bindir}
cp -r bin/spack* %{buildroot}%{spack_dir}/bin
cp etc/spack/defaults/config.yaml %{buildroot}%{_sysconfdir}/skel/.spack/
sed -i 's@\(\sinstall_tree:\).*@\1 ~/spack/packages@' %{buildroot}%{_sysconfdir}/skel/.spack/config.yaml
sed -i 's@\(\ssource_cache:\).*@\1 /var/tmp/$user/spack-cache@' %{buildroot}%{_sysconfdir}/skel/.spack/config.yaml
sed -i 's@\(\stcl:\).*@\1 ~/spack/modules@' %{buildroot}%{_sysconfdir}/skel/.spack/config.yaml
sed -i 's@\(\slmod:\).*@\1 ~/spack/lmod@' %{buildroot}%{_sysconfdir}/skel/.spack/config.yaml
# create spack scripts
echo -e '#!/bin/bash\n\nexec %{spack_dir}bin/$(basename $0) "${1+$@}"' > \
%{buildroot}%{_bindir}/spack
chmod 0755 %{buildroot}%{_bindir}/spack
ln -s spack %{buildroot}%{_bindir}/spack-python
ln -s %{_bindir}/sbang %{buildroot}%{spack_dir}/bin/sbang
# compile python files for python3
%py_compile .
# make shell scripts executeable
find %{buildroot}%{_localstatedir}/lib/spack/ -type f -name \*.sh -exec chmod 755 {} \;
# Create /etc/spack/compilers.yaml
mkdir -p %{buildroot}%{spack_dir}/etc/spack/
cat > %{buildroot}%{spack_dir}/etc/spack/compilers.yaml <<EOF
compilers:
- compiler:
spec: gcc@GCC_FULL_VERSION
paths:
cc: /usr/bin/gcc-GCC_VERSION
cxx: /usr/bin/g++-GCC_VERSION
f77: /usr/bin/gfortran-GCC_VERSION
fc: /usr/bin/gfortran-GCC_VERSION
flags: {}
operating_system: SUSE_VERSION
target: HOSTTYPE
modules: []
environment:
unset: []
extra_rpaths: []
EOF
# Create /etc/profile.d/spack.sh
# This file properly sets MODULEPATH so lua-lmod can find the modules created by spack
mkdir -p %{buildroot}/%{_sysconfdir}/profile.d
cat > %{buildroot}/%{_sysconfdir}/profile.d/spack.sh <<EOF
source /etc/os-release
if [ "\${ID}" == "opensuse-tumbleweed" ] ; then
SPACK_NAME="\${ID/-/}"
else
SPACK_NAME="\${ID/-/_}\${VERSION_ID/.*/}"
fi
export SPACK_ROOT=%{spack_dir}
export MODULEPATH=~/spack/lmod/linux-\${SPACK_NAME}-\${CPU}:%{_prefix}/share/spack/lmod/linux-\${SPACK_NAME}-\${CPU}:\${MODULEPATH}
# copy local configuration, if its not there
if [ ! -e ~/.spack/config.yaml ] ; then
# test if user is in spack group by touching database
if ! touch %{spack_dir}/.spack-db &> /dev/null ; then
test -e ~/.spack || mkdir -p ~/.spack
[ -e ~/.spack/config.yaml ] || \
cp -r %{_sysconfdir}/skel/.spack/config.yaml ~/.spack/
fi
fi
EOF
# Same for csh
cat > %{buildroot}/%{_sysconfdir}/profile.d/spack.csh <<EOF
# get ID
eval \`awk '/^ID=/ {sub("-","_"); printf("set %%s",\$0);}' /etc/os-release\`
# get VERSION_ID
eval \`awk '/^VERSION_ID=/ {sub("\\\\.[0-9]",""); printf("set %%s",\$0);}' /etc/os-release\`
if ( \$ID == "opensuse_tumbleweed" ) then
eval \`awk '/^ID=/ {sub("-",""); printf("set %%s",\$0);}' /etc/os-release\`
set SPACK_NAME=\$ID
else
set SPACK_NAME="\${ID}\${VERSION_ID}"
endif
set SPACK_ROOT="%{spack_dir}"
set MODULEPATH="~/spack/lmod/linux-\${SPACK_NAME}-\${CPU}:%{_prefix}/share/spack/lmod/linux-\${SPACK_NAME}-\${CPU}:\${MODULEPATH}"
if ( ! -e ~/.spack/config.yaml ) then
# test if user is in spack group by touching database
touch %{spack_dir}/.spack-db >& /dev/null
if ( \$? == 1 ) then
test -e ~/.spack || mkdir -p ~/.spack
test -e ~/.spack/config.yaml || \
cp -r %{_sysconfdir}/skel/.spack/config.yaml ~/.spack/
endif
endif
EOF
# Create modules.yaml file, so that hierarchy module files are created
cat > %{buildroot}%{spack_dir}/etc/spack/modules.yaml <<EOF
modules:
enable:
- lmod
lmod:
core_compilers:
- 'gcc@GCC_FULL_VERSION'
projections:
all: '{compiler.name}-{compiler.version}/{name}/{version}'
^mpi: '{compiler.name}-{compiler.version}/{^mpi.name}-{^mpi.version}/{name}/{version}'
EOF
# Fix link to not point into buildroot
rm -f %{buildroot}%{_localstatedir}/lib/spack/cache
ln -sf %{_localstatedir}/cache/spack %{buildroot}%{_localstatedir}/lib/spack/cache
%fdupes %{buildroot}%{spack_dir}
%fdupes %{buildroot}%{_datarootdir}/spack
%fdupes %{buildroot}%{_localstatedir}/lib/spack
%pre
getent group %spack_group >/dev/null || groupadd -r %spack_group
%post
# Replace /etc/spack/compilers.yaml
export GCC_VERSION=`gcc -dumpversion`
export GCC_FULL_VERSION=`gcc -dumpfullversion`
sed -i "s@GCC_FULL_VERSION@$GCC_FULL_VERSION@" %{spack_dir}/etc/spack/compilers.yaml
sed -i "s@GCC_FULL_VERSION@$GCC_FULL_VERSION@" %{spack_dir}/etc/spack/modules.yaml
sed -i "s@GCC_VERSION@$GCC_VERSION@" %{spack_dir}/etc/spack/compilers.yaml
if [ -e /etc/os-release ] ; then
source /etc/os-release
if [ "${ID}" == "opensuse-tumbleweed" ] ; then
export SPACK_NAME="${ID/-/}"
else
export SPACK_NAME="${ID/-/_}${VERSION_ID/.*/}"
fi
sed -i "s@SUSE_VERSION@$SPACK_NAME@" %{spack_dir}/etc/spack/compilers.yaml
sed -i "s@SUSE_VERSION@$SPACK_NAME@g" /etc/profile.d/spack.sh
fi
sed -i "s@HOSTTYPE@$HOSTTYPE@" %{spack_dir}/etc/spack/compilers.yaml
%files
%license COPYRIGHT LICENSE-APACHE LICENSE-MIT
%doc CHANGELOG.md NOTICE README.md
%{_bindir}/*
%attr(0775, root, spack) %{_localstatedir}/lib/spack/junit-report
%attr(0775, root, spack) %{spack_dir}/opt
%attr(0775, root, spack) %{_localstatedir}/cache/spack
%attr(0775, root, spack) %{_datarootdir}/spack/modules
%{_prefix}/lib/spack
%{_localstatedir}/cache/spack
%{_localstatedir}/lib/spack
%{_datarootdir}/spack
%config %{_sysconfdir}/profile.d/spack.sh
%config %{_sysconfdir}/profile.d/spack.csh
%dir %{_sysconfdir}/skel/.spack
%config %{_sysconfdir}/skel/.spack/config.yaml
# repos directory is installed in -recipes
%exclude %{_localstatedir}/lib/spack/repos
%files recipes
%license COPYRIGHT LICENSE-APACHE LICENSE-MIT
%doc CHANGELOG.md NOTICE README.md
%{_localstatedir}/lib/spack/repos
%changelog